Why we should love null - <AUTHOR> http://www.codeproject.com/Articles/787668/Why-We-Should-Love-null

<comment><USER2> This post seems somewhat strawman-ish to try and sell the author's language.

No one has ever argued that the reason for nulls being a problem is because the idea of 'nothing' isn't valid; the argument has always been that they are completely invisible to the client function; that is, if you tell me functionA returns a string, I don't know if it -always- returns a string, or if it might also return a null. And you as the writer of functionA might not even know, if you're dependent on still other functions whose contracts are also ambiguous.

To that end, to fix it, a type system to make the implicit null explicit, has always been the necessary answer. It -is- in fact what Option/Maybe/etc are intended to do, and provided they're used in a language that has a sufficiently robust type system, and that the language checks for non- exhaustive patterns in case matches (or similar), are still 100% effective.

All of this author's issues with an Option type are explicitly with Java's implementation of it, a fact he himself notes.

When he's able to show why his language provides better null protection than Haskell or Ocaml or something, I'll be interested. But as it stands, it sounds like he's just making an Option type that is a keyword in the language ("nullable a" rather than simply "a"), rather than a natural extension of the type system (Maybe a = Nothing | Just a).

EDIT: This is especially galling as he's clearly aware of at least Haskell (he mentions that Haskell has the Maybe type), but then dismisses Option/Maybe at large for the reasons he dismisses Java, despite none of the arguments used against Java applying.

Were the author to rewrite this, detailing the basic problem of null being that of no contractual check for it (rather than a strawman of there being no reason to have an 'empty' value), were to rewrite the Option/Maybe bit to show he understands it works fine so long as the language literally does not allow null, except as the Nothing part of the Optional/Maybe type, and instead sell PPL as being an imperative (so no need to drink the functional koolaid), simply typed (no ADTs, no covariant/contravariant OOness) language that has the same no NPE guarantees as Haskell or similar (using effectively the same mechanism; that nulls can only exist when the function contract explicitly declares them as a possibility, and that any consumer of the function must have a code branch to check for it and handle it in some way), it would actually be somewhat interesting; I could see a language like that making headway on the JVM, as it basically would come across "As simple as Java, without the NPEs", which would be a pretty easy sell.

<comment><USER3> Indeed. The author does not seem to appreciate (or comprehend) the difference between types 'a' and 'a option'. This is not surprising: I have seen architects that never did anything else than java|python struggle with the basic types in OCaml| Haskell because they could not translate the concept of a value into Java. They always ask "yeah, but what if it's None?" and the answer "It can't be None as that is of a different type" does not seem to compute.

<comment><USER4> As a Pythoneer with a vague knowledge of Haskell, that's odd.

None is not an int. Or a float. Or a string. It's None. Python is nothing like C, where a string is a pointer that _might_ point to null ... it just can't happen.

Variables are untyped (so you can, in theory, return an open file when the function usually returns a float), but generally that's not how things work.

I'd think Python programmers would get more upset about when stuff gets computed. "So ... it computes that next?". "Um, that's up to the compiler". "The what?"

<comment><USER2> I think the misunderstanding goes like this -

"Okay...so you return either Maybe (value), or Nothing. But what if they return Maybe (Nothing/null)?" "Can't happen." "What do you mean it can't happen?" "It literally can not happen. The compiler's type checking enforces that when a function returns Maybe A, it really is of type A, which can not be null or nothing.".

And that's where both sides sometimes break down; Pythonistas can, yes, have a hard time understanding that the compiler can enforce that, and Java people can have a hard time getting past the idea of null being a possibility everywhere.

I find it easier to explain coming from the other direction.

"When does a value get assigned null?" "Umm..." "Either you have a variable that has never been given a value, if the language lets you, so is defaulted to null, or you assign the variable to null." "Ok." "Now, you can only assign the variable to null if either you do that explicitly (a = null), or, you are calling out to another function that returns null (a = func()). But then, that function can only return null in the same cases; either the author explicitly assigns null, or he calls another function that returns null." "Right..." "So eventually, to have a null bubble up, someone had to assign or return a null. So your two cases, really, are either you left something uninitialized, or someone assigned/returned a value of null" "Gotcha." "So what if our language prevents you from leaving variables uninitialized, -and- there is no null value?" "You can't have an NPE. But what if there is no valid value? Do you just throw an exception or something?" "You -could-, but that's not ideal. What we do instead, is we change the function signature. That's where the Maybe comes in. Rather than just returning (type), we return Maybe (Type), where the actual values when run are either Just (value), or Nothing. Nothing, in this case, is the equivalent of null, but the caller of the function knows to check for it, and the compiler can be told to MAKE them check for it. And because we have no uninitialized values anywhere, we can't unexpectedly come across a null, and because there are no nulls to assign, anywhere that might be a null is itself a Maybe, and it's handled as such everywhere."

</comment></comment></comment></comment><comment><USER5> As I understand it, this article misrepresents the purpose and nature of the Null Object Pattern ("NOP").

The author cites a comment that describes (very) vaguely a "hotel booking" example, expressing the idea that "None" is the null object. But "None" is not an instance of the NOP. None has no interface. You can't tell None to do something.

In contrast, an acutal implementation of the NOP might be in a travel reservation service which allows you to reserve both a hotel and a rental car at the same time. Somewhere in the guts of that service there might be a Trip object.

      class Trip
      {
        Car car;
        Hotel hotel;

        public void Reserve()
        {
          this.car.Reserve();
          this.hotel.Reserve();
        }
      . . .
      }

A Trip can be constructed with a NullCar when the user doesn't want to reserve a car on this trip. When NullCar::Reserve is invoked, it doesn't do anything, but Trip doesn't care, and the implementor of Trip doesn't need to remember to check its car to see if it's null before invoking it.

I've encountered this misconception frequently, and it typically stems from the common understanding of object oriented programming as programming in terms of entities which represent physical objects in the real world. I deduce that the author uses this definition from the sentence "It is also interesting to note that appearances of null objects are virtually non-existent in real life."

Objects aren't necessarily representations of physical entities. Objects are simply things other objects (or procedural code) can use to accomplish something without having to know how to accomplish that thing.

I've found the distinction that Alan Kay has (repeatedly) made useful in helping people understand this idea: Property accessors aren't for objects, they're for Data Structures.

So, when the author says that, "the basic idea of the null object pattern is exactly the same as for practices like 'use zero instead of null'", my reply is, "No, it's not called the 'Null Data Structure Pattern'." Use zero instead of null is (flawed) advice about how to write data structures, not how objects should be constructed. The NOP is not used to build objects that represent data, it is used to build objects that represent action. The author's repeated use of the GetCustomer example is inappropriate for the NOP. It's much more likely that a database record is represented using a data structure than an object.

Pragmatically, if you feel the desire to ask an object if it is the NullObject, you are not writing object-oriented code, you are writing procedural code. Instead of asking if the object is the NullObject, move the branch that would be invoked if the object were the null object into a method present in the interface that the NullObject implements. Perhaps you find that you don't actually have a NullObject, after all.

</comment><comment><USER6> Yes, by all means force people to check for nulls _when null is a semantically valid value!_ But much more importantly, in statically typed languages, allow people to distinguish between nullable and non-nullable types to prevent the most common null safety issue: accidentally passing a null value into a routine whose precondition forbids null, or storing null in a variable whose invariant forbids null.

<comment><USER7> Essentially this. Some pointers are null, some are not, and the type system should let you express this.

</comment></comment><comment><USER8> "There are more methods in Java's Optional class, but they are irrelevant for the discussion in this article."

This statement represents a bad misunderstanding of the point of Optional. The fact that is has map, flatMap, and ifPresent methods is _very_ relevant to the discussion in this article.

</comment><comment><USER9> Type systems that incorporate "nullables" allow programmers to have the concept of "nothing was returned" but force them to check it whenever they test for data. Otherwise their programs don't compile (see the Maybe monad in Haskell). In a serious post about null, how could such a serious point be missed?

For example, in Haskell:

      case objectMaybe of
        Just object -> do
          (your code that deals with `object` here)
        Nothing -> do
          (your code that deals with no object)

Without the Nothing clause in the matching statement, this code will not compile.

<comment><USER10> Not quite.

        sh-4.3$ cat test.hs
        main = let x = Nothing
               in case x of
                  Just x -> putStrLn "something"
        sh-4.3$ ghc test.hs
        sh-4.3$ ./test
        test: test.hs:(2,11)-(3,40): Non-exhaustive patterns in case

<comment><USER11> Alternatively,

        sh-4.3~$ ghc -Wall -Werror test.hs
        [1 of 1] Compiling Main             ( test.hs, test.o )

        test.hs:1:1: Warning:
            Top-level binding with no type signature: main :: IO ()

        test.hs:3:16: Warning:
            This binding for `x' shadows the existing binding
              bound at test.hs:1:12

        test.hs:3:16: Warning: Defined but not used: `x'

        <no location info>:
        Failing due to -Werror.

<comment><USER10> This is where it gets weird on my system

        sh-4.3$ ghc --version
        The Glorious Glasgow Haskell Compilation System, version 7.8.3
        sh-4.3$ ghc -Wall -Werror test.hs
        sh-4.3$

Arch Linux 64bit. It works as expected with _runhaskell_ though

Edit: see answer below, thanks dilthomas!

<comment><USER11> Try touching test.hs (or add -fforce-recomp). By default, ghc won't rebuild if the object is newer than the source.

</comment></comment></comment></comment></comment><comment><USER12> How can they mention Ceylon, Eiffel, Kotlin, and PPL (the latter two I've never heard of, and I've heard of a lot of programming languages) and not mention Haskell, ML, OCaml, etc? It's been mentioned in other comments, but essentially all of the supposed downsides of the Optional solution are implementation weaknesses in either the type system (allowing null anywhere, regardless of type) or runtime (there being overhead of Options) - which seems like a pretty weak argument for loving null.

</comment><comment><USER13> The author noted it, but still, all listed Optional/Maybe "disadvantages" apply to Java specifically and don't really apply to the languages where it was available from the beginning and has some kind of syntax support.

<comment><USER11> It doesn't even need syntax support, if you are comfortable with higher order functions. Java's approach of forcing the same "check, use" pattern on you makes their Optional only a modest gain. Compare with Haskell's maybe function:

        maybe :: b -> (a -> b) -> Maybe a -> b

You provide a default _result_ , a function from the value (if it's there) to that result type, and the optional value. There is no way to use this wrong - you can't forget to check because there is no check.

Edited to add: Apparently Java _does_ hand you the tools to do it right, if a little ugly, using ifPresent and a purpose-built Consumer. My Java is rusty, but I'll try and put an example together in a bit.

<comment><USER11> So, you can do the following:

        interface OverOptional<S,T> extends Consumer<T> {
            public S getResult();
        };

Which allows you to create an anonymous class that embodies the first two arguments of maybe:

        Optional<Integer> maybe_int = Optional.of(7);

        OverOptional<Boolean, Integer> is_seven_or_empty
                = new OverOptional<Boolean, Integer>() {
            private Boolean result = true; // default

            public void accept(Integer i) {
                result = i == 7;
            }

            public Boolean getResult() { return result; }
        };

        maybe_int.ifPresent(is_seven_or_empty);

        return is_seven_or_empty.getResult();

</comment></comment></comment><comment><USER14> Isn't the difference between compiler-enforced null checking and Option/Maybe type (+no null) mostly superficial? Eg compare and contrast the PPL example from the article:

        const nullable string email = system.console?.ask_string ( "Please enter Alice's email address: " )

        if email is not null then
           system.out.write_line ( """Alice's email address is {{email}}""" )
        else
           system.out.write_line ( "Alice doesn't have an email address." )
        end

to hypothetical option type:

        const option<string> email = system.console?.ask_string ( "Please enter Alice's email address: " )

        if email.is_present() then
           system.out.write_line ( """Alice's email address is {{email.get()}}""" )
        else
           system.out.write_line ( "Alice doesn't have an email address." )
        end

<comment><USER15> Not with a good type system, i.e. a type system which supports algebraic types (or equivalent) and which explicitly disallows null. With such a type system you wouldn't be able to write the second example as is since string interpolation/concatenation wouldn't be defined for option<string>, only string. You would write something like:

      const option<string> maybeEmail = ....

      case maybeEmail of
          Some email -> system.out.write_line("....{{email}}")
          None -> system.out.write_line("Alice doesn't have an email address.")

The thing to notice here is that we're accessing "email" and not "maybeEmail" in the Some case. This guarantees that we cannot get a null value (since the possibility has been eliminated by the case match).

This simple example doesn't do it justice, however. The real benefit comes when you have functions taking option<X> vs. X arguments and/or returning option<X> vs. X. If you get a plain X (either as a return value or parameter) you _know_ that it cannot be null. No such luck in a language which permits "null" as a value for all (reference) values.

Of course algebraic data types go much further than just this. I'd encourage you to look into them in e.g. Haskell or some variant of ML.

</comment></comment><comment><USER16> _Among the 20 most popular programming languages listed at the Tiobe index (Basic, C, C++, C#, Java, JavaScript, Lisp, Objective-C, Perl, PHP, Python, Ruby and more) none of them has null-safety built-in._

Juste some nuances for Objective-C: in Objective-C, it's perfectly valid to send any message to nil. For instance:

      id someObject = nil;
      [someObject setVisible:YES];

Is a valid code. I really appreciate this language feature, and avoid you a lot of boilerplate test. The problem is that nil as a parameter of a function (selector in Objective-C world) can trigger exception:

      id someObject = nil;
      [myArray addObject:someObject];

will trigger an exception.

<comment><USER17> My gripe with that is that fail-silent scenarios can lead to some very nasty hard-to-find bugs. I've been bitten by it on several occasions.

Fail fast and with lots of explosions, is the way to go for me.

</comment></comment><comment><USER18> Nice article. I thought it was going to be superficial and rehashing common ideas but the author covers a lot of ground and languages in this overview.

Of all the languages I've encountered with null/Option/Optional/Maybe in, the one I think is the most interesting is Ceylon.

Ceylon supports sum types, so you can say that a type is "Account" (non nullable) or "Account|Null" (which can be abbreviated to "Account?").

The compiler will not let you dereference a nullable type, you will have to switch/type cast it first:

        Account? account = ...
        if (exists account) {
          // account has type Account, safe to dereference
        } else {
          // account has type Null, can't dereference
        }

[http://ceylon-lang.org/](http://ceylon-lang.org/)

<comment><USER19> This is essentially how it is in Haskell, Scala, Swift, etc.

<comment><USER18> Not really. Haskell and Scala use Maybe/Option, which are monads enabling the composition of operations, even in the absence of values. This leads to a more powerful abstraction (composition) at the expense of heavier syntax and the necessity of libraries that are monad aware.

Ceylon's approach is more of a middle ground with limited composability but straightforward syntax and a much simpler type system.

<comment><USER20> No, in Haskell and Scala Maybe and Option are sum types. There also happen to be monad operations defined on those types, but you don't have to use them.

</comment></comment></comment></comment><comment><USER10> > null is what allows us to state things like:

> Alice's birth date has not yet been entered in the database > (alice.birth_date = null)

Better solved with Maybe (see other references in threads)

> No orders have yet been placed by this customer (customer.order_list = null)

Should be an empty list

> The operation succeeded without any errors (error = null)

The Either data type is a good solution here, because you can prevent accidentally operating on an invalid result if there was an error

> There is no more beer in the fridge (fridge.beer = null)

Should be 0 or an empty list

</comment><comment><USER21> > This is a trivial example of a null handling situation. Nevertheless, the > only way to know what will happen is to try it out because it really depends > on the programming language and the compiler we use. Ask any experienced > Java programmer and you will see that most of them (me included) will > struggle to predict the actual behaviour without hesitation.

Yes, because what I want to do is waste my time figuring out what happens when I apply functions to null values.

</comment><comment><USER22> I think PPL's nullable semantics are the best solution to the null problems. It makes it clear when you actually need to check for null.

</comment><comment><USER23> These bugs are notbcauswd by null they are caused by M is understanding type systems and null itself.

</comment><comment><USER24> The problem with NullPointerException is that it usually comes with a high error-failure distance (that is, the failure happens later than the logical error that caused it). It can be extremely hard to debug, because _null_ is actually an overloaded concept. It ends up meaning:

        1. Like NaN, the result of an error (in some languages).
        2. A pre-initialization value that "should never appear" by informal contract.
        3. Missing data (especially in databases).
        4. Not-applicable.
        5. "There is none" (not quite the same as #3 or #4).
        6. A return on an unusual (and bad) condition, like a malloc that can't.
        7. (Infuriatingly common.) Errors in programming.
        8. Empty collections (from Lisp, although that's probably a design error
           and Clojure's moving away from it.)

I consider a NullPointerException for _any_ reason to be a bug in a Java program. A more useful error message should be given. I also consider null in Scala to be something that ought to be disallowed. (In Clojure, you can't be as hard-assed about it, because _nil_ is actually useful. But I'd still argue that NPE is _always_ an error.)

Zero-as-null is pretty awful, I agree. When you see that, it's usually as a performance optimization. For example, prices on exchanges are usually represented as integer numbers of pennies (or some smaller "microcurrency" unit) for regulatory reasons (accuracy standards set in _decimal_ terms, disallowing floating point) and the data is unboxed for performance reasons, requiring some "illogical" sentinel value when the number isn't applicable.

The effect of that is to externalize complexity to the client. For example, if you use "0" for "no bid" that's usually harmless because "no buyer" and "highest buyer at $0" are effectively equivalent. But 0 is also used for "no offer" and (if the client isn't aware of the 0's meaning) might make incorrect conclusions, since an ask of 0 (commodity given away for free) means the _opposite_ of "no ask". The client is forced to keep track of this extra complexity-- that 0.0 doesn't mean a numerical value but means there is none.

Null policy (over all the different causes of "null") is really about how the complexity is externalized to the client. Zero-as-null forces the client to deal with "zero is not zero" possibilities, which can be deadly. The best, if the API can support it, is to use Haskell-style optional types (Maybe). You can't get away from the intrinsic complexity, but you can at least require _in the type system_ that the programmer deal with it. (Non-exhaustive pattern- match warnings should generally be treated as errors.)

The problem with, say, Java's references, is that _every_ object type has _null_ as an additional value. Instead of a Spoon, what you actually have is an Maybe (IORef Spoon). All your (non-primitive) types end up being optional, but in a way that is usually sparsely documented.

<comment><USER11> _" I consider a NullPointerException for any reason to be a bug in a Java program."_

Is there actually anyone who disagrees on that point?

<comment><USER24> Surprisingly, you see that sort of issue (perhaps in a more subtle way) a lot, even in evolved libraries and languages.

By "I consider NullPointerException for any reason to be a bug" I mean that, even if the program is going to crash hard, it should give a better error message. Crashing hard is sometimes the right thing, but high error-failure distance is never good.

This may have changed, but for a while, OCaml raised the dreaded (and useless) Not_found error on List.head [], and it wasn't until 3.10 that you got a stacktrace on a runtime error. (Of course, most people who use OCaml or Haskell in production rename those functions to, e.g., unsafeHead and make the optionized versions the default.)

Debugging and error-handling culture has come a long way, even in the past 10 years. Clojure, for example, is a great language and I am overall a huge fan, but it was painful to debug when it first came out, and it used to be fairly common for runtime errors to manifest as NullPointerException.</comment></comment></comment>


One Casualty of the Palm Oil Industry: An Orangutan Mother, Shot 74 Times - <AUTHOR> https://www.nytimes.com/2019/06/29/world/asia/orangutan-indonesia-palm-oil.html <comment><USER2> This sad story reminds me of this excerpt from the novel Ishmael by Daniel Quinn: "You may compete to the full extent of your capabilities, but you may not hunt down your competitors or destroy their food or deny them access to food. In other words, you may compete but you may not wage war."

We are waging a war on our brothers and sisters. Our collective humanity deteriorate for each and every soul that we trample upon for the sake of economic progress.

<comment><USER3> This is so well put. Also waging war part or politics or nepotism in competing, corrupts the spirit of competition and hence the human spirit itself.

</comment></comment><comment><USER4> Tragic as it is I feel this piece illustrates the idea of bourgeois sentimentalism quite well.[0]

Some animals get a ton of support and money thrown at them while less marketable animals tend to produce no reaction when treated horrifically.

Whenever there is a tension between a group of poor locals and first world emotional interest around ecological conservation, the problem is that the locals can sense quite clearly (as the father does at the end of the piece) how little their lives are valued compared to that of animals. You can have a non-human species get a Swiss surgeon flown in, while they would never experience this level of medical care of attention themselves.

I'm certainly not condoning the horrific actions towards those animals, but underneath that tragedy there is a bigger issue at hand and a big reason why certain ecological projects fail due to zero interest in incentivizing locals. The best conservation programs tend to involve the entire community.

In the end you have frustrated first worlders wondering why the locals won't cooperate and do as they are told, even though the reason for this lack of interest is precisely the barely concealed contempt that emanates towards them. Sending trash in the guise of recycling, pollution and outsourcing negative externalities their way such as the palm oil industry while forbidding them from doing whatever might have a negative externality on first worlders.

[0] [https://www.marxists.org/archive/lafargue/1881/12/25.htm](https://www.marxists.org/archive/lafargue/1881/12/25.htm)

<comment><USER5> Environmentalism and endangered species protection is the new colonialism. Rich white people impose their values on poor brown people and try to prevent them from doing the same things that they did to develop, and rather try to keep them as the "noble savages" living in a "pristine wilderness."

<comment><USER6> The "brown" owners of these palm oil plantations, sitting in their luxury condos and villas in Jakarta and KL, are much richer than you, believe me.

</comment></comment></comment><comment><USER7> Palm oil became a thing when cheap, shelf stable fats in the form of partially hydrogenated oil were realized to be unhealthy. Instead of the world giving up the eternally fresh package of Oreos, we move to massive production of tropical oils which are also shelf stable. It's probably time to reevaluate if we can sustain our appetite for snacks using a very small amount of precious land in the tropics that can grow palm oil.

There are alternatives to Palm oil. The most straightforward is replacing it with rendered fat from pigs or cows (lard or tallow). This has its own ethics and environmental concerns. Another solution is to revisit oil hydrogenation. We can fully hydrogenate oils such as soybean into a saturated fat very similar to that found in tallow. The resulting fat is healthier than partially hydrogenated oil, and arguably healthier than unprocessed soy oil too. It is not difficult to work with and has a neutral flavors, which is desirable for the processed food industry. We just need to get over our fear of this process.

<comment><USER8> Just go back to lard and tallow. McDonalds French fries are still a shadow of their former selves.

<comment><USER7> A significant fraction of the population has a religious or moral objection to eating lard. A smaller but still substantial part of the population objects to tallow based on vegetarianism or the terrible environmental impact of cattle raising.

<comment><USER9> That would make sense for a chain that otherwise served vegetarians. But does McD's even have a single item that is vegetarian?

I googled it, some breakfast items (egg mcmuffin, panckages) and apple pie.

It's probably just a money saving feature. I'm already old (34) and I've only ever eaten the veggie oil McD's fries.

</comment></comment></comment></comment><comment><USER10> To everyone commenting how we should stop using palm oil - please be reminded that just 20 years ago the international community was banding up to urgently encourage switching from other types of vegetable oils to palm oil, as it is the most efficient type of vegetable oil to produce(per hectare of land used). Yes, the situation in those countries sucks and should be stopped - but we have a need for vegetable oils, and they all have a cost associated with them.

<comment><USER11> I don't remember a concerted push outside industry to switch, more a push by the multinationals. Mainly because it's so cheap. Historically it was usually used in soap and lubricants rather than food as it has the distinctive texture.

I do remember that environmental groups have been complaining of its impact since the 90s - maybe far longer.

</comment></comment><comment><USER12> I find it hard to impossible to avoid palmoil in food. I eat vegetarian/vegan, which makes it even more difficult. To just mention the most frustrating/difficult to avoid one: to find margarine that doesn't use palmoil seems near impossible.

And it's in everything 'ready' \- cookies, bread, chocolate, curry sauce, any ready meal, any fastfood you buy, ...

Alternative oils such as sunflower or rapeseed oils should be able to (and used to!) cover most of these use cases, but sadly our food industry seems to choose palmoil despite the ecological damage (rainforest destruction, monocultures, erosion, ...) and the widely reported slavery and social harm. Some companies (such as Ferrero) slap 'certificates' of non-harm on the package, which have little evidence behind them and, if anything, will still mean that the demand for palm oil keeps increasing.

Really disappointing. Hope companies become more conscious rather than just cost-conscious.

<comment><USER13> In Italy, there seems to be a whole campaign against palm oil. Many product wrappers, including those of margarine, claim to be free of palm oil in quite a big font. So at least in Italy there is awareness. I do not know what prompted this.

</comment></comment><comment><USER14> > When the air-gun pellets pierced Hope's eyes, blinding her, she felt her way > up the tree trunks, auburn-furred fingers searching out tropical fruit for > sustenance.

> By the end, Hope's torso was slashed with deep lacerations. Multiple bones > were broken. Seventy-four pellets were lodged in her body. Her months-old > baby had been ripped away.

</comment><comment><USER15> There's also the little matter of the sheer magnitude of the threat to the species: [https://www.theguardian.com/environment/2018/feb/15/dramatic...](https://www.theguardian.com/environment/2018/feb/15/dramatic- decline-in-borneos-orangutan-population-as-150000-lost-in-16-years)

</comment><comment><USER16> When Malaysia and Indonesia overtook West Africa in producing palm oil due to an "efficient" focus on large scale plantations, we decried it as another sign of Africa's regression, and in Nigeria's specific case, a sign of petro- dollar's damaging impact on a previously robust agro-economy.

Holistic Progress = Undefined.

</comment><comment><USER17> It's more of a desire for oils than a need. Humans don't need to eat processed oils at all. We can get all the essential fatty acids we need from regular food -- even without eating fish. Oils are not even healthy, they're just concentrated calories. It's just that they taste good.

As far as for other uses of vegetable oils, I can't really comment.

<comment><USER18> What is are examples of cuisines that use no oils?

<comment><USER17> Hmm, you know what, I've been researching this a bit more and it seems like I was wrong. Apparently many cultures did boil seeds to produce oils for cooking or other purposes. I expect that they probably didn't eat as much oil as we do, given that this would have been more labor intensive than what we can do with modern farming and factories. But it makes sense to try to get your calories any way you can.

<comment><USER19> We've been making animal fats (butter), rendered animal fats (lard, tallow) and pressed fats (coconut, olive, seed) forever.

</comment></comment></comment></comment><comment><USER20> Are we the baddies?

<comment><USER21> Probably, but please don't post unsubstantive comments here.

</comment></comment><comment><USER22> Palm oil tastes awful and its not the healthiest choice.

<comment><USER23> It is used as biofuel..

<comment><USER24> As well as many other things, have you heard of Nutella?

<comment><USER23> > have you heard of Nutella?

Always wonder who's buying Nutella. Sugar and palmoil.

<comment><USER25> You can make any food sound ridiculous by reducing it to its ingredients.

<comment><USER23> Nutella started as mix of hazelnuts and chocolate (to save on chocolate in Piedmont Italy) now more then 50% of its content is palmoil and sugar. What happend?

[https://en.m.wikipedia.org/wiki/Nutella](https://en.m.wikipedia.org/wiki/Nutella)

<comment><USER26> I mean it's not really a big mystery, I'm not sure where this discussion is going. A ton of super popular food is ridiculously unhealthy. Coca Cola is basically super-sweet water. Jams don't usually have added fats but they do have a ton of sugar. Cotton Candy is literally only sugar (and some colorant I suppose).

Clearly the incentives here are simple, you want to make a product that people like as much as possible while making it as cheaply as possible. Health is not really a factor, insofar as not too many people don't drop your product because they see it as unhealthy (ads will help with that, all Nutella ads I've seen in France focus on "giving energy to children for their activities" or some bullshit like that).

So that's how you end up with something that's mainly palm oil and sugar. The market has spoken. I'm sure that if they reverted back to their original recipe they'd lose a significant amount of clients.

<comment><USER27> You can buy spreads which are just hazelnuts and chocolate. But they cost several times as much as nutella, unsurprisingly.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER28> wow they can take 74 shots and live

It would be interesting if humans could have tougher skin layers like many mammals do

<comment><USER14> they were airgun pellets which embedded into her body as shown by the x-rays in the article

<comment><USER28> oh, whoops!

I had only read the part at the beginning that made it clear she was alive

<comment><USER29> She's alive, her baby died. :/</comment></comment></comment></comment>


I Asked a Psychopath How to Stop Caring About Rejection - <AUTHOR> https://www.vice.com/en_us/article/i-asked-a-psychopath-how-to-stop-caring-about-rejection?utm_content=inf_10_3687_2&utm_source=wildhair&utm_campaign=fijifrost&tse_id=INF_c8ae8a50f2f511e6a03c354c456e1db2 <comment><USER2> The dread of social rejection is likely a learnt response. A person should be able to learn to be unaffected by social rejection.

The article makes it more complex than it should be.</comment>


Ask HN: Help with Amazon seller account? - <AUTHOR> I sell things on amazon infrequently, and apparently some $0.12 fee was added to my account after my last sale, more than a year ago. I was never notified of the fee until Amazon suspended my account. I paid it and appealed the suspension right away. The Notifications page reports
"Our Seller Performance team will review your appeal, and you should expect a reply by Jan 7, 2016 1:08:09 PM PST"
That was over a month ago, and despite sending amazon several additional messages, I still have heard nothing back.
The kicker is that I trusted Amazon based on my past experience and went ahead and sent in a $1000+ CPU for a "Fulfillment by Amazon" sale. Now they're sitting on it (and charging me more fees.)
Is there anyone here who works at Amazon, or can maybe get me in contact with a human there to help get this straightened out? <comment><AUTHOR> Follow up: my account was unsuspended this morning with an apology for the delay. All it took was:

* 7 messages to support

* posting on twitter, hn, and the seller forums

* canceling all of my AWS services

* badgering the one rep on the seller forums who responded to me

* requesting (and paying for) my FBA merchandise to be returned to me

* waiting 35x longer then the stated response time

The forum rep initially told me to just email them again, but after a week of no response, she tried contacting them. After they ignored her for a week, she got a supervisor involved which, I suspect, is the only reason I ever received a response.

All in all, this was an incredibly frustrating experience and makes me wary of doing business with amazon.

I still haven't received any explanation for why it took so long, or why they jumped to suspension without notifying me.</comment>


Economics Doesn't Believe in Magic - <AUTHOR> https://push.cx/2015/economics-doesnt-believe-in-magic

<comment><USER2> This is some seriously Marxist shit. Vast inequality underpinned by a monopoly on violence is the inevitable product of trade in commodities? Not disagreeing, just saying... Not everyone is on this page.

<comment><USER3> Read your Chomsky.

The twenty-first century will be remembered as the time when the ideas that capital is power, and free exchange of capital inevitably leads to a power law distribution where the few control the bulk of resources, are no longer theoretical musings of "Marxist" intellectuals, but widely accepted as natural law. Laissez-faire economics will be obsoleted by the acknowledgement of these laws as surely as royalism was obsoleted by the Enlightenment.

<comment><USER4> I think the idea that capital is power is already widely accepted. The problem is that the alternatives to laissez-faire economics are corruption and cronyism.

Is there any society where the government can be trusted to regulate the economy without favoring the powerful and perpetuating inequality?

<comment><USER5> I have thought about this a fair bit, and it seems like the only real way to completely eliminate such risk would be a benevolent AI overlord, as the problem you mentioned is rooted in human nature. Realistically though, high transparency and strict regulation of money in politics to prevent tribalism is a good idea. An 'all campaign donations must be anonymous to the recipient' law would be unfeasible, so limiting contribution amounts severely is the only way. Unfortunately, even doing this would not change the fact that most politicians are in the same social group as the wealthy and powerful, so it is an imperfect solution. People inevitably show favoritism towards those they are friends with, so minimizing the effect any one person/group can have is key. This is why I agree with George Washington, political parties should not be a thing, they cause far more trouble than they are worth.

</comment></comment></comment></comment><comment><USER6> This was bad. Really bad. The word "economics" is used, but with such disdain for anyone who has ever picked up a book on the subject that was not Das Kapital.</comment>


Show HN: Faust2WebAudio, Digital Signal Processing in the Browser - <AUTHOR> https://ccrma.stanford.edu/~mborins/420b

<comment><AUTHOR> The examples will only work in a webkit based browser as it relies on WebAudio API</comment>


JQuery Waypoints - execute a function whenever you scroll to an element - <AUTHOR> http://imakewebthings.github.com/jquery-waypoints/ <comment><USER2> Cool and all, but... It's stuff like scroll analytics that keep NoScript in my list of must-have addons. That kind of stuff is just super creepy in a working-for-the-feds-in-snow-crash kind of way.

</comment><comment><USER3> Is it just me or does this feel _really_ slow?

<comment><USER4> Not too bad. On the sticky elements example, if I furiously flick my scroll wheel downward, there is a noticeable but tiny delay for the section menu to "catch up" at the top of the screen. The infinite scroll example seems fine, as does the analytics example. Is there really any way to get faster performance in the first example other than just giving the section menu div position:fixed (which doesn't exactly do the same thing)?

<comment><USER5> Plugin author here, I can help clarify that. The scrolling is throttled so that all the checks aren't run with every single scroll event, as that would choke everything. So the small delay you see there is some 0-100 millisecond value while it hasn't triggered the event yet.

You can change the throttle by setting $.waypoints.settings.scrollThrottle = 50, or whatever number you like, to try to reduce flickers in cases like these. Just be aware its a balance you'll be striking with executing more scroll checks. But all the selectors and offset values are cached so the performance should still hold up should you choose to lower this value.

<comment><USER6> Reminds me of this, I guess you read it already:

<http://ejohn.org/blog/learning-from-twitter/>

<comment><USER5> Based the throttling on that exact post.

</comment></comment></comment></comment></comment><comment><USER7> Useful idea, although the implementation makes Safari stutter on a CoreDuo MacBook. I didn't check the internals, but I have a feeling that some value checks would benefit from caching.

Either way, I wouldn't deploy this just yet. But I also wouldn't deploy a PNG background that's position: fixed, because I remember it crippling old versions of Firefox on Windows..

I guess it depends, but us users with slow computers avoid websites that point out the fact that we haven't upgraded for 4 years.. I think the web is most definitely the one place where you can't presume everyone is on par with Moore's law. You just can't increase performance requirements according to your workstation (at least not on the client-side).

Remember any leet Flash websites from 2001 (besides 2advanced, err) where the stop-motion effect would reveal your CPU's inferiority to the developers machine? Exactly, me neither (there were a lot of them though).

I hope the plugin takes off, but it won't happen until it performs. Making websites slow on old computers is much like making type too small for the visually impaired.

<comment><USER5> The elements and everything used during the scroll checks is in fact cached (which you'll be able to verify by looking at those internals you mention) and throttled per my comment below. As another commenter pointed out, the project page itself is full of drop shadows, text shadows, and css3 gradients, and opacity. Those are probably slowing you down way more than the plugin. Do you see the same performance problem from the relatively unstyled examples?

</comment></comment><comment><USER8> This didn't work on my iPhone. I wish it had.

<comment><USER9> That's because you weren't scrolling.

Mobile Safari parses websites as a big canvas and then pretends the screen is a window through which you're looking at the canvas. What you think of as scrolling, the browser thinks of as moving the canvas around (or the window depending on point of view).

Because of that, no scroll events ever get fired. Even :fixed doesn't behave as expected.

</comment></comment><comment><USER10> Nicely modular functionality. Would be even better if the events were implemented as actual jQuery events.

<comment><AUTHOR> They are:

 _Calling .waypoint with no parameters will register the elements as waypoints using the default options. The elements will fire the waypoint.reached event, but calling it in this way does not bind any handler to the event. You can bind to the event yourself, as with any other event, like so:_

        someElements.bind('waypoint.reached', function(event, direction) {
           // make it rain
        });

Calling .waypoint with a function is just a shortcut for that.

</comment></comment><comment><USER11> cool use of waypoint scrolling to mimic tab traversal on the homepage.

<comment><USER12> I especially appreciated how, when going from the top of the page down to the bottom, the middle tab would show the down-state briefly, while the browser scrolls to the bottom.</comment></comment>


Ask HN: What are fastest paths to financial success? - <AUTHOR> At Digg, one mentor gave me the savvy advice that the fastest path to financial success was working for four years at three different just-about-to-IPO companies. A surefire way to retire by forty. (This is, for the record, pretty good advice.)
https://lethain.com/forty-year-career/
What are other fastest paths to financial success? Currently am a software engineer, so looking for advice in this career choice. <comment><USER2> Real "The Millionaire Next Door." The basics are 1) get a decent job, 2) live below your means, 3) save and invest (mostly in low cost index funds or ETFs.) Do this for a couple of decades.

Finding three solid about-to-IPO companies would be like winning the lottery. You'll need more luck than you think. Take the luck out of the equation.

</comment><comment><USER3> First, you need to make a lot of money. Credit to Monty Python for this tip.

</comment><comment><USER4> For starters, always define your important goals in terms of clear and unambiguous metrics. For example: What are your criteria for 'financial success'?

</comment><comment><USER5> Shhh.. Black jack</comment>


G Suite: intelligent tools designed for teams - <AUTHOR> https://googleforwork.blogspot.com/2016/09/intelligent-tools-built-for-teams.html <comment><USER2> Can't I pay to just use a custom domain in a regular Google account? All I want is to use it for my Gmail. I don't have any use for the "G Suite" features and I know that some features are not available there, especially newer ones.

I'm probably leaving for another provider because of this. I'm more and more concerned about the @gmail.com lock-in. I don't even send any media attachments (audio, video) or store anything in my Drive since I know of several people getting banned and not even receiving a justification (anecdotal, but it's enough to make me nervous about it). I'm not saying that was the cause, but I can't know for sure, so...

<comment><USER3> Whatever you do, do not buy a Google Apps (sorry, G Suite) account for personal use. I made this mistake years ago and it bites me constantly. You get locked in to paying per month just so you get access to the things you bought through it (movies, apps, etc) and for that privilege you get locked out of many new features like Spaces, Google Now email cards, Fi, the new Trips app, Google Play Family Sharing.

<comment><USER4> I agree fully on the lame way Google rolls out (or fails to roll out) key features for Google Apps. Even when features do roll out, they are sometimes incomplete, for example, you can't set up Google Music family accounts with Google Apps accounts. Dumb. I like Google Music but Spotify is easier for me to use with my family's various google apps accounts.

However, there is one VERY important difference: data ownership and privacy. Google Apps for Work (and edu) accounts, which I use for various organizations as well as even for my own personal, single-user domain, have much better data ownership and privacy terms:

See: [https://support.google.com/work/answer/6056650?hl=en](https://support.google.com/work/answer/6056650?hl=en)

        Does Google use my organization's data in Google Apps
        services or Cloud Platform for advertising purposes?

        No. There are no ads in Google Apps Services or Google Cloud
        Platform, and we have no plans to change this in the future.
        We do not scan for advertising purposes in Gmail or other
        Google Apps services. Google does not collect or use data in
        Google Apps services for advertising purposes.

        The process is different for our free offerings and the
        consumer space. For information on our free consumer
        products, be sure to check Google's Privacy and Terms page
        for more consumer tools and information relating to consumer
        privacy.

<comment><USER3> Yeah, Apps accounts have much different privacy terms and this is likely the reason for some of their exclusions such as Google Now email cards but it cannot logically explain why other things don't work like Play Music family plans.

Still, if I had the choice I'd opt in to the standard privacy policy in an instant. I understand some people's concerns about Google information gathering but it's not a concern of mine. I just want things to work.

<comment><USER5> Google play family plans don't work because Apps is expressly designed for non-family organizations. Ideally, they would have organizational plans, but the parameters for that are different.

Features that aren't relevant to the intended target market may be useful to people making atypical uses, but it's quite likely not commercially sensible to bother with them, and building a robust separate G Suite for Personal Domains offering that takes the right mix of features of the existing consumer and organizational offerings may itself not serve enough of a market to be worth the effort.

</comment></comment></comment></comment></comment><comment><USER6> This change doesn't make "sense." They literally didn't explain at all how this would improve or change anything, but they spent the time to rename it, draw some cute gifs, and make a completely marketing fluff video about the future of work.

You know what company sounds like mostly marketing fluff? Hint: It's the one "no one ever got fired for buying [from]."

</comment><comment><USER7> G Suite .. really odd name. Then again, naming things is a hard computer science problem ;)

<comment><USER8> In my household, we are flabbergasted that Google's marketing team missed the unfortunate associations of this new name.

<comment><USER9> Can I have a clue? I don't see it.

<comment><USER8> Sweet spot.

</comment></comment></comment></comment><comment><USER10> This appears to be a rebrand of Google Apps; [https://apps.google.com](https://apps.google.com) now redirects to [https://gsuite.google.com](https://gsuite.google.com)

</comment><comment><USER11> A new name! That is exactly what google apps was missing. Now I'll be so much more productive yay. It's too bad I switched to Fastmail though.

</comment><comment><USER12> I have to take issue with the opening paragraph. It says that research shows we spend 3 out of 5 days working on stuff we weren't hired to do. But then it says attending meetings falls under that definition as does gathering information. A lot of people need to meet to gather information. Of course that's part of their jobs. While machine learning can, I am sure, help a lot the fallacy the opening paragraph starts with makes me lose faith in the whole article. They also don't cross reference this 'research'.

<comment><USER13> Improved communication and information sharing does sharply reduce the necessity of synchronous everybody-in-a-room or on-a-conference-call meetings. There are more effective ways to do this stuff if we would just embrace them.

</comment></comment><comment><USER14> "G Sweet" ? I'm going to feel like such a dick saying that with a serious look on my face.

<comment><USER15> Then there's the fact that suite is very commonly mistaken for suit by non- native English speakers like myself. Maybe that's a better name, though. G Suit.

</comment></comment><comment><USER16> So Hangout is pivoting to a business tool in G Suite? While Allo/Duo are created for consumer market?

Interesting if so, it's exactly the opposite to most other companies: create a consumer product, reuse brand and/or code for biz product.

<comment><USER17> Well my hypothesis would be that Microsoft and Box tends to work the other way around as well (biz product -> consumer)...though then again a generality like that for companies of massive size is tough statement to make.

</comment></comment><comment><USER18> "G Suite: intelligent tools designed for teams" : corporate gibberish.

<comment><USER19> The new use of the word "intelligent" to describe their tools makes me wonder if the previous tools lacked that very ingredient.

Or, as you aptly mentioned, these are wasteful words.

</comment></comment><comment><USER20> In theory, the new functionality is cool and will help people be more productive. As a reasonably happy work customer, I'm quite excited to try these out. But I am not sure why they decided to rename it...again. Does no one at Google understand branding?

</comment><comment><USER21> Formerly: Google Apps for Your Domain, Google Apps, Google Apps for Business, and Google Apps for Work...

A turd by any other name is still a turd.

This name is definitely poor; people will have trouble with "suite", short of english/french speaking countries, and even in english speaking countries, considering suite and sweet are homophones and the fairly low usage of suite.

Can anyone at google explain why the brand changes every couple years? New leadership?

<comment><USER22> Must be new leadership or maybe too many marketing people getting a voice in product.

I owned a company that was a Google reseller for a couple of years and when pitching it I would just call it gmail for your company. Brainstorm all the fancy names you want but people understand what you are talking about when you call it gmail.

Microsoft even with all its flaws has never bothered to claim that a calendar is a standalone app. Actually, considering how badly they merged Sunrise into Outlook maybe they should...

<comment><USER23> You're right - it's new leadership. Diane Greene.

</comment></comment></comment><comment><USER24> There's, uh, prior art for the name: [https://www.instagram.com/p/5dDY0YtgEP/](https://www.instagram.com/p/5dDY0YtgEP/)

<comment><USER25> That's, uh, also a Google thing. But yes, that did cause significant googler confusion this morning.

</comment></comment><comment><USER26> I can see why they might want to rebrand, given that (a) the word "app" has taken on a specific meaning in the mobile space and (b) Google as a whole is now branded with a stylised "G".

EDIT: It's hard for this product to have its own stable brand identity. All it does is add a feature to the existing Google products: the ability to use a custom domain, with some useful tools to manage that namespace.

Maybe the word Domain should be emphasised: "G Domain Suite" (or Domain Pack/Extensions/Link). Sounds better than just G Suite anyway.

</comment><comment><USER27> I really miss getting custom domains on Google Apps for free.

I've never found a good way to do email for cheapskates since then.

<comment><USER28> This "announcement" is full of buzzwords and useless marketing mumbo jumbo, but doesn't say if free accounts created years ago will remain free. Can anybody please confirm?

<comment><USER28> Thankfully: "Google Apps Free Edition (legacy) remains the same"

[https://support.google.com/a/answer/7126147](https://support.google.com/a/answer/7126147)

</comment></comment></comment><comment><USER29> Official google drive client for Linux? :*(

<comment><USER3> Probably never going to happen.

[https://abevoelker.github.io/how-long-since-google-said-a- go...](https://abevoelker.github.io/how-long-since-google-said-a-google-drive- linux-client-is-coming/)

<comment><USER29> Bummer. We'd consider moving off of Dropbox and have everything in one place if we could support all of our Linux machines. Right now we have to have our files in Dropbox and our documents in Google Drive.

<comment><USER30> Have you considered using Insync instead? I use it on an Ubuntu instance and it works like a charm with Google Drive.

</comment></comment></comment></comment><comment><USER31> Interesting use of pronouns here... "adding her to the team" but "removing him from the team". Why not be consistent?

"Drives help streamline teamwork from end-to-end, from onboarding a new team member (add her to the team and she instantly has access to all of the work in one place) to offboarding a departing team member (remove him from the team and all of his work stays right in place), and everything in-between."

<comment><USER13> I don't get the aversion to non-gendered pronouns. Them's and they's are A-OK.

<comment><USER17> I think it's not grammatically accurate to use "them" and "they" for a singular subject; if it's one person or thing, the pronoun should be he/she/it or some combination. For press releases, the safe option is to be grammatically correct than colloquially acceptable.

Nevertheless it could be one of those things that is in flux as part of the evolution of the English language.

<comment><USER32> I don't think it's a grammar thing at all it's a definition of the words thing, which guess what, it's covered already!

they

pronoun 1\. used to refer to two or more people or things previously mentioned or easily identified. "the two men could get life sentences if they are convicted" informal a group of people in authority regarded collectively. "they cut my water off"

2\. used to refer to a person of unspecified sex. "ask someone if they could help"

</comment></comment></comment></comment><comment><USER33> Why not G Spot ? :)

<comment><USER34> That's what they're renaming Google Maps to.

[https://twitter.com/HackerNewsOnion/status/78161631937652736...](https://twitter.com/HackerNewsOnion/status/781616319376527364)

</comment></comment><comment><USER35> That G-naming reminded me "G-spot".</comment>


The Free Universal Construction Kit - <AUTHOR> http://vimeo.com/adapterz/free-universal-construction-kit

<comment><USER2> Looks cool, but the hybrid structures created in the video don't look very impressive. They look like something kids made (it probably was made by kids).

I think if the video included at least one 'sexy' structure it'd attract way more customers.</comment>


Useless Use of Cat Award (2000) - <AUTHOR> http://porkmail.org/era/unix/award.html <comment><USER2> > The purpose of cat is to concatenate (or "catenate") files. If it's only one > file, concatenating it with nothing at all is a waste of time, and costs you > a process.

>

>The fact that the same thread ("but but but, I think it's cleaner / nicer / not that much of a waste / my privelege to waste processes!") springs up virtually every time the Award is posted is also Ancient Usenet Tradition.

The time it saves me while writing and debugging that one off one liner is well worth the tiny overhead.

If you think cat is useless when reading a file for piping, why do you spawn multiple processes at all? Should'nt you write a custom tool that handles the whole series of operations in one single process?

And why not write it in asm while you are at it? You should certainly never use a garbage collector, right?

<comment><USER3> > The time it saves me while writing and debugging that one off one liner is > well worth the tiny overhead.

The award, as I remember, was not for using dead cat in a one-liner, it was for _publishing_ this one-liner and _propagating_ use of this small stupidity.

Your work one-liners grow organically, so it's completely normal that they accumulate cruft like `cut|sed|awk' pipeline, and there's little point to clean them up if they are not going to leave your shell instance.

> If you think cat is useless when reading a file for piping, why do you spawn > multiple processes at all?

Strawman argument. The Useless Use of Cat Award is for using `cat' where the command fed with the file is perfectly fine with redirecting its input from the file directly (i.e., most of the commands). This is _just as easy_ as using `cat', but avoids unnecessary CPU spinning.</comment></comment>


Ask HN: How do you keep track of the architecture of a personal project? - <AUTHOR> Hi HN,
I am working on a personal project in Python. Nothing fancy just some scientific calculation. I know that academics get flak for writing shitty code but I decided to use OOP as some of my models have a similar structure. For instance (no pun intended), I would create a global model class and each model would inherit from it and implement its own methods for calculation. Then I just parralelize the call to my super class.
The problem is, it's getting complicated as I need to keep track of the different classes and interactions. Should I look into UML? I am just curious how you guys keep track and document your software architecture when there's no spec sheet coming from above.
Thanks <comment><USER2> Depending on where you are in the project I would encourage something between...

* Rule of 3 - try applying whatever you're thinking of doing to 3 cases before giving in to the temptation to architect / consolidate.

* Architect w/ UML class diagrams + sequence diagrams of core interactions.

Someone mentioned architecture decision records, which are a great way to connect the first point to the second with a narrative!

[https://en.m.wikipedia.org/wiki/Rule_of_three_(computer_prog...](https://en.m.wikipedia.org/wiki/Rule_of_three_\(computer_programming\))

</comment><comment><USER3> [1] Draw.io is a very good tool to document architecture. Keep it simple.

[2] code2flow is also great to show high level logic.

README's in the repository are great to track changes in architecture with the code.

Easily understood architecture allows for easily understood code, which allows people to help you!

[1] [https://draw.io](https://draw.io)

[2] [https://code2flow.com](https://code2flow.com)

</comment><comment><USER4> [https://adr.github.io/](https://adr.github.io/) is about recording architecture decisions.

For visualizing it, try out the c4 model: [https://c4model.com/](https://c4model.com/)

</comment><comment><USER5> OT: If you feel things are really getting complex already, do ponder over whether there is scope for you to simplify things. Simplifying architecture is IMO more valuable than representing complex architecture, even if it is done using the best available tool.

UML helps. Recording design decisions and how classes are meant to be called/used is generally good reference for a rainy day in the future.

Since you are using Python, ensure you sufficiently document classes' purpose/responsibility in docstrings. Ensure the most important pieces of info stay close to the code where they are implemented.

</comment><comment><USER6> Blog about it. It makes you think about the project from a different view.

</comment><comment><USER7> Might be worthwhile to also check out [https://plantuml.com/](https://plantuml.com/)

</comment><comment><USER8> I just keep lists that explain what each function does in my notes, for UML Lucidchart has some templates.</comment>


Fluent Java HTTP Client - <AUTHOR> http://www.yegor256.com/2014/04/11/jcabi-http-intro.html

<comment><USER2> Interesting API. Using '.uri()' and '.back()' to switch contexts from the Request to URI and back to the Request confused me at first, but it might be fine in practice.</comment>


Ask HN: Would it be illegal to make a Pirate-Bay-based application? - <AUTHOR>

I was looking into making an open source thepiratebay library for using it programmatically via python or ruby. Seeing as PirateBay isn't the most legally recognized website, would making something like this be considered illegal? <comment><USER2> It's technically not illegal to link to a site that links to copyrighted material, but there's still the potential for legal challenges to come up - especially if whatever you build is successful.

The RIAA/MPAA etc can ruin your life with an expensive, years-long lawsuit whether you are found guilty in the end or not.

If you really want to make it, make it for fun and release it anonymously.

Historical context:

Napster: [http://en.wikipedia.org/wiki/Napster#Lawsuit](http://en.wikipedia.org/wiki/Napster#Lawsuit)

Legal discussion: [http://www.lexology.com/library/detail.aspx?g=c71fa5d9-8380-...](http://www.lexology.com/library/detail.aspx?g=c71fa5d9-8380-4714-b7fb-73d8d426973b)

(I am not a lawyer! Get legal advice if you are worried!)

<comment><USER3> I personally know someone who had a website seized by the U.S. Immigration and Customs Enforcement (ICE) for linking to copyright content. It all comes down to intent. When visiting a site like ThePirateBay or TorrentButler, it's clear that they are intentionally facilitating copyright infringement-- and that's what they will charge you with, amongst other things. It's hard to deny that fact when 99% of the content has a copyright, even if you hide behind the DMCA "user uploaded content" clause.

With that being said, they made 1M+ from it and didn't get caught. Your results may vary.

</comment></comment><comment><USER4> If you're seriously concerned with the legality (side note: legality in what jurisdiction?) of implementing something like that you should spend a couple hundred bucks and chat with an attorney.

Unhelpful, I know, but it seems like you have legitimate cause for concern, especially if you're located in the US, and HN isn't a source for legal advice regardless of the quality of commenters on the site. This is doubly true since the complexity of your question is likely far greater than you might anticipate, as is often the case with legal concerns, and likely not easily addressed here.

So basically, if you're seriously concerned about legality: consult with an attorney. If you can't, or don't want to, spend the money to do so: don't write the library, or at a minimum don't publically distribute it. And if course, none if this is to be construed as legal advise, yada-yada, etc.

<comment><AUTHOR> Thanks a lot. That's what I was thinking, consult a legal professional and then write or not write it considering the advise I was given. I notice there are a lot of ThePirateBay libraries, so I wasn't too worried about it but its better to be safe than in court.</comment></comment>


I have been hired for more than 10 years, and I have this simple rule - <AUTHOR> https://twitter.com/rakyll/status/1114643660912517120 <comment><USER2> I'm very much against hidden criteria used to filter people. It's a lazy, bias-driven way to convince yourself you're selecting the best people. The author of the original tweet (who this person is replying to) is trying to select for some sort of work characteristic she thinks correlates with success. It would be much better to identify that characteristic and focus part of the interview on trying to evaluate the candidate against it.

I haven't been hiring people for more than 10 years, but I swear by the simple process of being transparent about what I'm looking for in a new hire. The hard part is the reflection on exactly what _that_ is.

I wrote about this several years ago: [https://www.huffingtonpost.com/entry/were-hiring- engineers-a...](https://www.huffingtonpost.com/entry/were-hiring-engineers- all-wrong_b_7973484). It's basically a re-presentation of interview training I've gotten.

<comment><USER3> > I'm very much against hidden criteria used to filter people.

I'm not, or at least, not everything should be spelled out; what you want to avoid is people 'cheating' at their job interview by trying to bullshit their way through the application process.

We have a technical assessment, but look at (and ask a lot of) things outside of what was asked exactly; basic expected software development skills such as unit testing, documentation, a grasp of technology used, a drive to keep up to date and learn new things, that kinda thing.

I guess you could fake those? But I think that if you've got the drive to "fake" learn a new technology you've got the drive we're looking for.

<comment><USER4> But if you don't tell the candidate what to do, how do you know if the candidate _can_ do that or not?

Most programming exercises that companies use in interviews are much simpler (trivial really) than actual software projects, and personally I don't see the need to write 1 page of documentation and unittests for code that can fit on 3 pages... Does that mean I'm against documentation and can't write unittests? No, I'm simply being pragmatic.

</comment></comment></comment><comment><USER5> I know organisations which would automatically disqualify candidates who send "thank you" or any other kind of emails. They would call it "canvassing", which is forbidden for job-seekers in these organisations.

</comment><comment><USER6> What's the context I'm missing, here?

<comment><USER7> The twit is a response to

 _Hey, I wrote something! … I've been hiring people for 10 years, and I still swear by a simple rule: If someone doesn't send a thank you email, don't hire them._

<comment><USER8> Even if they'd have to hunt down that email address themselves, according to the article she links to.

A thank you email to someone you're already in an email conversation with is not at all unreasonable, but expecting people to hunt down your email address just to send you a thank you, is downright weird.

<comment><USER9> Only hiring people who send a thank you email is totally weird. "It shows resourcefulness, too, because the candidate often has to hunt down an email address the interviewer never gave them." To be honest my time is pretty much to valuable for this kind of teenager games. I am busy solving real problems for real customers. I don't have the time to search for your Email address, I also don't need to do that, people usually hire me for point 1), I get shit done.

"To be clear, a thank-you note does not ensure someone will be a successful hire. But using the thank-you email as a barrier to entry has proved beneficial, at least at my company." the author says. Blatantly ignorant towards all the genius they've lost in their broken process. "The handful of times we've moved forward with a candidate despite not receiving a thank you, we've been ghosted, or the offer we make is ultimately rejected." The author says, because changing the strategy for a handful of cases out of thousands is definitely really scientific and stuff. "As a hiring manager, you should always expect a thank-you email, and you should never make an offer to someone who neglected to send one." as the last quote just showing the pure entitlement the author suffers...

That's exactly the kind of thing that makes me happy to be in Software, people who bring trouble usually don't get promoted into responsibility...

<comment><USER10> "The handful of times we've moved forward with a candidate despite not receiving a thank you, we've been ghosted, or the offer we make is ultimately rejected."

Perhaps this is selecting for desperate job hunters who send thank you notes.

<comment><USER11> > _Perhaps this is selecting for desperate job hunters who send thank you > notes._

That's entirely plausible. I mean, you're probably <insert arbitrary percentage here> more likely to _not_ turn an offer down, even if it's below the cost-of-living for the area in question, if you're willing to go to those lengths, yeah?

Their solution to the problem of having offers turned down seems to be not to investigate why but to just hire the people most willing to take them... I mean, they found a loop-hole but to quote the Big Lebowski: " _You 're not wrong, Walter, you're just an asshole._"

<comment><USER10> New theory... the original twitter's annual performance metric is based on number of successful new hires (turned down offers and candidate who realize they are a bad fit are negatives)

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> The real solution here is, Don't go into an industry where supply vastly outnumbers demand and employers can delete half the resumes for no reason.

</comment><comment><USER13> I've had stalkers before and it'd freak me out if I received a thank you note from someone I did not exchange contact details with.

<comment><USER14> Interviewers typically email you to schedule the interview or share their business card with you during the interview...

<comment><USER15> I've interviewed ~5 times in the last year...did not receive any business cards or email addresses. The recruiter/HR person actually denied my request for their email address when I asked for it in order to send a note on more than one occasion.

</comment></comment></comment><comment><USER16> I wonder why HR people keep on doing this shit - they get deservedly heckled by everyone who is stuck with their crap.

I'm not sure if it is a vapid bubble or they are just callous morons who don't get why people would get pissed off over being denied a job for arbitrary reasons and don't learn from experience.

</comment><comment><USER17> _actual link_ [https://www.businessinsider.com/how-to-write-thank-you- email...](https://www.businessinsider.com/how-to-write-thank-you-email-after- job-interview-2019-4)

<comment><USER18> "It shows resourcefulness, too, because the candidate often has to hunt down an email address the interviewer never gave them."

So basically the author expects the candidate to send a thank you email even though she didn't exchange her email address. Well, I think such email is natural when you make a personal contact with the interviewer, but in this scenario(when you receive emails from firstname.lastname@example.com) it feels unnecessary and intrusive to me.

</comment></comment><comment><USER19> I grew up in the age of _handwritten_ thank you notes for everything and I still wouldn't expect them for an interview. I'd also be dismayed if the company's didn't feel "thankful" to see me.

Companies need good employees. VCs need companies to invest their customers' money into. The implicit power relationship in these situations is unhealthy.

</comment><comment><USER20> There is no golden rule. You are interacting with humans, and every situation is different. A recruiter with good people skills doesn't use one golden rule to filter everyone with it.

</comment><comment><USER14> I mean... I was taught in high school to always send a thank you email to an interviewer after an interview.

Not only for the courtesy, but also to stay in the interviewer's head if they were undecided. Most people don't send these, thus, you'll be a bit unique and might tip things in your favor.

An interviewer that uses it as a hiring requirement probably wants someone thoughtful and willing to do a little extra compared to others. Seems minor compared to multi hour programming tests.

<comment><USER21> > someone thoughtful and willing to do a little extra compared to others

Seems to me that you'd be more likely be selected for people are willing to comply with arbitrary social conventions for the sake of getting ahead. Or even just those who happened grow up in an environment that passed on the folk knowledge that this is necessary. How many people who send these "thank you notes" are truly thankful for the experience?

> Seems minor compared to multi hour programming tests.

It is minor _if you know you need to do it_. The thing is, that some applicants will, and some won't (entirely independently of their capacity to do the job).

<comment><USER14> I'm sorry, but a thank you is now considered arbitrary? Come on, seriously? What environment are you not taught to respect someone that gave you time of day?

And does it matter if they are truly thankful? It's not like people share things on the internet to truly SHARE, out of their own good will. They either want fake internet points, recognition, or traffic to end up selling something down the road.

<comment><USER21> > I'm sorry, but a thank you is now considered arbitrary? > And does it matter > if they are truly thankful?

A thank you that is 1) Expected and 2) Not truly meant seems pretty arbitrary to me. I would show respect to the person who took time out of their day to interview me by not taking any more time out of their day by making them read a thank you message.

To be clear: I don't think there is anything wrong with sending a thank you. I just don't think it should be considered necessary, and it _definitely_ shouldn't be a primary signal on hiring decisions.

</comment></comment></comment></comment><comment><USER22> Wait, you're expected to write a "thank you" mail after an interview? Is this some American culture thing?

<comment><USER23> I was told to do so by career services in the past while trying to get my first job. I got my first job without doing so though.

</comment></comment><comment><USER24> Who is upvoting tweets here. Nobody cares about somebody's single sentence thought. Stop.

</comment><comment><USER25> Thanking someone for their time is free and takes only a minute. If I don't really want the job I won't be bothered, and if I do I will try everything I can to make myself stand out throughout the interview process, including sending a short email. Recruiters are not stupid, they know this. TIL this behavior is: classist, archaic, possibly sexist, possibly racist, and definitely "problematic". Who knew?

<comment><USER2> It seems like you're flipping it around. I don't see anything wrong with doing this as a candidate. What strikes me as biased is making it a secret handshake, from a hiring perspective, that rules out people who don't think to do it.

<comment><USER25> I disagree. If qualified candidates do something, hiring managers will naturally look for those things in all their candidate, so it's a two way street.

Correct me if I'm wrong, but I suspect your problem is actually with the automatic dismissal part - and I agree, there are probably many cases where it would be inappropriate (or at the very least, stupid) to not consider someone for not sending a follow up. We can argue specifics all day, but in general I don't think it's unreasonable for hiring managers to expect that kind of communication.

<comment><USER2> Yes, the automatic dismissal part is both problematic and foolish.

But beyond that, I _am_ a hiring manager, and I really can't tell you which people I've hired have sent me thank you notes. I'm pretty sure it's a small minority. I have yet to hire someone who's a "bad egg" or just doesn't care about their coworkers.

Beyond that, expecting people to adhere to a protocol they simply may not know is unfair. As I've said elsewhere, the original author should take the things she thinks a thank you note shows and just screen for them directly, rather than extrapolating from a norm that some people may have and others may not for reasons that have nothing to do with anything.

If I thought an applicant knew they should send a thank you note but that they just dropped the ball, that would be a negative sign. But I see no reason to assume that.</comment></comment></comment></comment>


Cyber crime: states use hackers to do digital dirty work - <AUTHOR> http://www.ft.com/intl/cms/s/2/78c46db4-52da-11e5-b029-b9d50a74fd14.html

<comment><USER2> Brian Krebs posted about an interesting real world example of this the other day:

[https://krebsonsecurity.com/2015/08/inside- the-100m-business...](https://krebsonsecurity.com/2015/08/inside- the-100m-business-club-crime-gang/)</comment>


How Psychedelics Saved My Life - <AUTHOR> http://reset.me/story/howpsychedelicssavedmylife/

<comment><USER2> Rhetorically, the author asks "Why would governments worldwide keep such a profound[ly beneficial] fungi out of the reach of their people?"

Good question. Because governments are evil, of course! That's what she invites us to conclude, right?

But here's a better answer: Because we don't really know whether psychedelics are profoundly beneficial, and we don't know this because there is no scientific consensus as to whether they are profoundly beneficial. And yes, we don't know this despite all the anecdotal evidence that her and Joe Rogan present us.

So why don't we reserve judgment until we know these things, and stop writing articles that imply that we do know and that the big bad Government is holding out on us?

<comment><USER3> That would be a valid cause for careful exploration. Instead, what we have is an outright ban and consistent propaganda that "drugs are bad, mmkay?"

The logical next step to "we don't know" is "let's find out", not "EVIL! DON'T TOUCH! GO TO JAIL OTHERWISE!"

I think calling the governments of the world "evil" in that respect is very over-simplistic, but it's definitely fair to call them irrational and wrong.

Also, this "governments are implied to be evil" reading may be in your own mind - Amber doesn't make that statement, and I didn't get that from the article.

</comment></comment><comment><USER4> Interesting idea, I think it will be cool to watch this evolve as a media hub. I wonder if we will see any high quality long form work on the site like what Vice releases.</comment>


Ask HN: App Idea - <AUTHOR>

an app idea
what about an app, using the cellphone microphone, getting the spoken words in a room and when a songtitle is named (un~/intentionally) it buys the song on itunes or amazon instantly.
and what about pushing it to a max ?
maybe the app gots a day-best and a week-best-highscore-list (sum o-in-app-buys). the 10 best buyers of a month would be invited to a monthly-talk-sicussion-show, where they gamble for a better price (tiered coupons, modern
top cellphone, etc...) every year there can be a top-o-the-year gamble with a car to win)
maybe in the show theres a "lie detecting" jury  who counts the intentionally named song -1 and the unintentionally with +2
creepy?
it`s your gut, consume... friendly america.
sry for my rusted english <comment><USER2> Yep, get coding!</comment>


You can load a die but you can't bias a coin (2002) - <AUTHOR> http://www.stat.berkeley.edu/~nolan/Papers/dice.pdf <comment><USER2> And the refutal from the other side of the bay: [http://statweb.stanford.edu/~susan/papers/headswithJ.pdf](http://statweb.stanford.edu/~susan/papers/headswithJ.pdf)

</comment><comment><USER3> I'd recommend not going into your local magic shop and saying that. You would be very impressed on what you can buy.</comment>


California's strict net neutrality bill is close to final passage - <AUTHOR> https://arstechnica.com/tech-policy/2018/08/californias-strict-net-neutrality-bill-is-close-to-final-passage/ <comment><USER2> I can't wait for my Internet to be government regulated. Politicians always have the best technical solutions.

<comment><USER3> This actually seems like a pretty well informed bill. They aren't adding anything really onerous. It just says ISPs can't exploit their monopolies on last mile connections to consumers in order to extort money from internet companies and their own customers.

</comment></comment><comment><USER4> We need this. For us to be able to compete against internet based startups around the world, we absolutely need this.</comment>


Ask HN: What should a university hire expect from a VC funded startup? - <AUTHOR>

What should a technical hire from a top tier university expect to get from a VC-funded startup right out of school, in terms of salary and equity compensation? <comment><USER2> What you successfully negotiate.

I don't mean to be flip, but internalizing the truth of that answer is really a life skill.

<comment><AUTHOR> This isn't helpful. You get what you successfully negotiate, but before entering the process, it helps to have expectations for what the "market" value is, within ~$20,000.

<comment><USER3> It _is_ helpful, you just don't want the help enough.

60-90, median in the 70s. Equity entirely dependent on what employee # you are, but expect well under 0.5%. That's the answer you were looking for. Do us a favor though and save Patrick's answer somewhere where you'll find it in 10 years, and see what you think of it then.</comment></comment></comment>


Ask HN: Startup built on idea-kernel developed at former employer - <AUTHOR> I worked starting 2000 January at a startup in the San Jose area and stayed with the company for 1.5 years approx (i.e., through the dot-com bust/mini-recovery/bust).  While I was there we came up with some interesting ideas (I came up with and refined a large portion of these ideas) and filed for 10 patents in 2001.  I did a large portion of the patent disclosure work.
Long-story short (I will post further about the situation in further comment below) ...

    * patents filed were never fully pursued by acquiring
      company, and all lapsed in 2007 or before
    * patent appications have huge value and adequately
      describe a beautiful monetizable system -- and due
      to lapsed patents, while one could not prevent others
      from implementing the same, others cannot successfully
      sue a new startup for developing these ideas since
      there is fully documented prior art
 More details in a further comment ... <comment><AUTHOR> So, to describe situation further ...

The dot-com bust and post-9/11 biz environment were not friendly to most startups and not friendly to big hard-to-implement ideas, and the startup company was rescued in 2002 or 2003 by a sideline project (largely not using the IP in the patents) in which a large I.T./storage company saw value. The large company acquired the startup.

The 10 patent applications, in the mean time, were not maintained or perhaps not novel enough to all merit patents -- though I doubt the "not novel enough" part -- I've seen stupid patents awarded for much less innovation, and I haven't yet seen the system the patents deal with implemented or sold. So ... I think there's huge value in the ideas behind the patent applications. The patent applications all lapsed around 2007 or before, I believe because they were peripheral to large company's business and nobody realized what they had in hand.

The ideas and system behind the patents only grow more relevant each passing year.

So what I see right now:

        * an idea-kernel that would be the excellent
          basis for a new startup
        * good documented prior-art (in the form of the
          lapsed patent applications) that probably are
          decent enough to defend against patent trolls
        * I'm at the point in my professional career
          where I want to pursue these ideas
        * >>> the fact that if I were any other person,
          with no prior association with the former
          startup or acquiring large company, coming
          across these lapsed patents, I could implement
          them unencumbered and have good protection
          (though I could not prevent others from
          implementing the same)
        * >>> since I worked on the original IP ...
          I might have some obligation to the "acquiring
          large company", though they likely would care
          only if I were to (a) be extremely successful;
          or (b) use the lapsed patent applications as
          defense in a patent lawsuit

I should probably discuss with an I.P. lawyer ...

... but my inclination is to:

        * build a prototype
        * talk to potential investors and potential customers
        * engage a patent lawyer to discuss possible
          licensing arrangements (or outright permission)
          to work on the I.P. with "large acquiring co"
        * hope for the best

Any suggestions?

<comment><USER2> I think for any IP issues, the standard answer is to consult a qualified lawyer.</comment></comment>


How Human Brains Could Be Hacked - <AUTHOR> http://news.yahoo.com/human-brains-could-hacked-162320290.html

<comment><AUTHOR> Just in case, I've set my DVR to record this. This is very interesting! You might not want to miss it!</comment>


What's a Y Combinator alternative to people who cannot afford to move to the YC area? - <AUTHOR>

<comment><USER2> 'afford' is not necessarily a monetary term. Perhaps an ailing grandmother or other responsibilities in the community make it too costly to move.

<comment><AUTHOR> This is correct. Afford can do with things other than a bank-account.

There is the argument that "is your startup not important enough to leave everything else behind" ... but thats being a little too harsh.

</comment></comment><comment><USER3> You might have to hack your own alternative -- and believe it or not there is a lot of hope for you; I've had a lot of success here in Baltimore by making things, telling everyone I know about them, and also letting everyone in my network know that I want to start a company. Since starting to do that, I've heard from three really smart, really capable people who I could potentially start something with. So my advice is to do everything you can to put yourself into the path of creative people as well as rich people in your area, and not focus so much on conforming to YC's or anyone else's idea of what you need to do to succeed.

</comment><comment><USER4> New York Angels (<http://newyorkangels.com/)> has a similar application (unlike YC, there's no deadline, and they'll accept an applicant at any time, but they charge a fee).

I haven't gone through the process myself, but I saw their pitch at a NYC tech panel a few months ago.

<comment><USER5> Their application is submitting a business plan and it costs $150. It just seems that they're unlikely to fund the people they charge $150. Instead, they'll fund organic referrals.

<comment><USER4> Well, if you attend enough tech events in NYC, you'll probably meet most of the angels individually, and can forego the fee (that's one of the reasons I haven't applied myself).

Investors are looking for deals, and it isn't too difficult to network into an initial meeting.

The one nice thing about the application (like YC) is that it forces you to define your project succinctly.

Also like YC, getting funded is no guarantee of success.

</comment></comment></comment><comment><USER6> The alternative is to convince YC that proximity isn't the most important thing. (It is _an_ important thing, I understand, but it's not the most important thing.)

It'll take a very compelling story.

<comment><USER7> You can't convince us of that. Anyone who's been funded by YC knows that what we do, we have to do in person.

We once tried funding a group that didn't move. When they flew in for demo day, they looked like the plant that hadn't gotten the Miracle-Gro. The upside of that rather expensive experiment was that it showed us how much YC helps people.

<comment><USER6> do you think that a virtual YC environment could be designed to provide the same rich experience that you get in person? or is it simply impossible? just a point of curiosity on my part.

</comment></comment></comment><comment><USER5> CRV Quickstart is great if you're a bit further along than the idea stage.

<http://www.crv.com/AboutCRV/QuickStart.html>

</comment><comment><USER8> My suggestion is to apply and then cross that bridge when you came to it. I am sure if your team is good enough YC will be willing to make some allowances.

</comment><comment><USER9> If you got accepted into the program, why would you not be able to afford it? YC pays your moving expenses up front.

<comment><USER10> Is that true? I didn't pick up on that fact. I just assumed that is was 5K + 5Kn.

<comment><USER11> Check out #5 and #8 on this page: <http://ycombinator.com/s2007.html>

I think they will cover whatever you want initially (eg, moving expenses, renting a place), but my interpretation is that that comes out of the 5+5n.

<comment><USER10> Right - that's what I had assumed. From what was said in the thread above, it sounded like moving costs were above and beyond, which I didn't think they were.

<comment><USER12> "Moving costs" for anyone inside the US is sure to be less than $1000.

<comment><USER13> How can you say that with such certainty? I moved from Washington, DC to the Bay Area last fall, and my costs were significantly higher than $1000. Even if I cut all the corners, a hypothetical move to Boston would still cost me thousands of dollars.

If I was doing YC for a summer, I wouldn't need to _move_. I could just fly there with a couple of suitcases and a laptop, but I'd need some way to cover my existing apartment rent. That's a pretty significant expense over 3 months. And I suspect YC is not looking for companies who see the experience just "doing YC for a summer."

<comment><USER12> My point was all you need to do YC is a plane ticket and your bags, maybe buy a bed and a desk when you get there.

<comment><USER13> Fair enough. I probably took your comment a bit too literally. $1000 is not enough to move cross-country, but it probably _is_ enough to relocate for three months. :)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER12> Doesn't the answer to this depend on where you can afford to move?</comment>


Becoming a CEO - <AUTHOR> http://schoolofherring.com/2019/12/29/one-day-i-will-be-a-ceo/ <comment><USER2> While I love this article for what it stands for, it's like school vs the real world.

It quantifies what we... or at least I, personally want in my CEO. Someone who cares, takes responsibility, leads, knows the product, intelligent, listens.

They exist for sure, but they far and few between.

Reality, it appears, the driving north star/metric of CEOs and aspiring ones is making money for the business. If you can consistently do that, you will move up and have the best shot. Any cost - legal edges blur-able.

Sadly, that's not what necessarily makes the best CEOs or even good for the business long term. I think we're seeing this play out with Boeing right now.

<comment><USER3> You should read that gervais principle from ribbonfarm.

</comment></comment><comment><USER4> I'm curious what other folks on HN find appealing, if anything, about becoming CEO. Personally it seems like a queen honey bee role, which sounds awesome at first but once you get a closer look you see its more like slavery to production, whithering externalities and merciless judgement.

<comment><USER5> CEOs in general get an unfair share of the money and acclaim. Also you get to be in charge kinda. I mean look at the wework guy as an extreme example - largely trashes the company and walks with $2bn or so.

<comment><USER6> Starting your argument with "in general" and following up with a self- admittedly extreme example is... not good argumentation. The fact that Softbank threw money away in a rather spectacular fashion doesn't at all speak to whether typical CEO compensation is fair.

</comment></comment></comment><comment><USER7> Public service announcement: Crummy, superficial article. Don't waste your time.

The gervais principle article is far more helpful.

<comment><USER8> Here's the link [https://www.ribbonfarm.com/2009/10/07/the-gervais- principle-...](https://www.ribbonfarm.com/2009/10/07/the-gervais-principle-or- the-office-according-to-the-office/)

</comment></comment><comment><USER9> The article forgot to mention the most important skill required for being a CEO - already knowing members of the elite class.

There is very little chance of the vast majority of people of going from IC or even middle management to CEO, let alone other "elite" titles like VP or Director. These are folks that live in the _social_ sphere of power, not just being effective enough to be promoted to the top in the mythical meritocracy.

An example: Bill Gates didn't get such a sweet deal with IBM by walking in the door and demonstrating gumption. His mother served on the United Way board with the chair of IBM. Bill Gates came from a wealthy family that already knew the right people.

The elites who could possibly give me a chance as CEO or VP don't talk to me enough to even know whether I'm qualified and/or if I exist. It's not like we run into each other at the country club or the marina.

<comment><USER10> The goal isn't to get a magical promotion from IC to VP because some "elite" "gave you a chance." It doesn't work that way. Really you have two options if your goal is to run a large organization:

1) Climb the ladder. IC -> Manager -> Senior Manager -> Director -> VP (precise steps will vary by company). You only have to impress your boss and maybe their boss at each step along the path. You should have plenty of opportunities to do so.

2) Go work for a small company that gets bigger. There are a lot fewer steps to the top at a small company. And then, if it goes well, it will grow under you. The extreme example of this is to found your own company. You'll be the boss from day one. Of course then you'll have to convince other people to come work for you. Which isn't easy.

Neither of these paths have much of anything to do with country clubs or marinas.

<comment><USER11> Usually #1 hits a glass ceiling at the Director or VP level. #2 is also risky as the investors often tend to ditch the early leadership, and those folks leave with some equity.

There's a good reason for this — there's a point when your ability to perform some functions is less important than political savvy. It's hard to be a political player without friends. The people who survive in scenario 1 and 2 have the savvy or are good at maintaining control.

The scenario that you're missing is the tour at a high end consulting firm, followed by senior level appointment and advancement from there. That world is very much shaped limited social networks and mutual self interest. The jobs don't get posted on LinkedIn.

The political world is very similar, except paying dues in the political machinery substitutes for education, as power is derived a little differently.

<comment><USER10> _#2 is also risky as the investors often tend to ditch the early leadership_

Significantly less true now than it used to be. And significantly less common in engineering than in other disciplines. A detailed knowledge of the codebase is an incredibly valuable skill for a technical leader. An outsider will take years (if ever they ever do) to build up the knowledge that someone there from the beginning already has.</comment></comment></comment></comment>