The Last Hope for Scala's Infinity War [video] - <AUTHOR> https://www.youtube.com/watch?v=v8IQ-X2HkGE <comment><USER2> I thought this was a potentially strong argument delivered weakly.

First, he poisons the well by talking about "integrity" and "intellectual honesty". This is a bad move at the beginning of a speech because it is far too easy to take it such that people with different conclusions are lacking in those qualities. Given his delivery, I suspect that he might actually believe that. It would be better if he just owned that this was his opinion and delivered it respectfully.

Second, the section on academic priorities was weak. He spent a large portion of the talk highlighting the mission statements of various languages, which is marketing language. But if Scala made no other changes other than its marketing language, it would not solve the problems he was highlighting. I thought too much time was spent on that part of the talk. There's another moment later in his rushed conclusion where he made stronger points that could have been fleshed out - how the academic influence leads to theoretical features that later get abandoned when the academic project is completed. (And I quite liked his revised marketing statement for Scala.)

I also didn't like that he brought up Cats vs scalaz as a flaw with the community, given that it became clear later in the talk that he had a clear bias on which was preferable. That seemed needlessly provocative.

I think the final conclusion of abandoning the OO path was interesting and fun to think about! I don't know if there's already an opinionated compiler plugin that discourages the more OO techniques while encouraging FP techniques, but I can see how that would be a lot of fun to play with, and educational in the same way that static analysis tools are. (I don't understand why "partial functions" was crossed out as something to abandon, though.)

<comment><USER3> Discouraging OO would be the worst thing Scala could do. Its one really unique capability is the fusion of OO and functional: it's a language that can go toe-to-toe with Haskell, yet also one that lets you switch from Java in a weekend. Take away the OO support and you'd have just another functional also- ran.

Sadly while the language itself has excellent OO support and Java interop, the community support just isn't there (by which I mainly mean: too many people like DeGoes will shout you down rather than trying to help you).

<comment><USER4> "(by which I mainly mean: too many people like DeGoes will shout you down rather than trying to help you)."

Proposition for discussion (i.e., I don't necessarily believe this, but I don't necessarily not either): The biggest challenge facing languages and their communities that focus on correctness is that the very personality types that are willing to focus on them are also statistically much more likely to be, ah, potentially less suited to the sorts of compromises and engineering discussions that are necessary to make a personal language than other more pragmatic communities. The sort of relatively uncompromising spirit necessary to swim upstream against the current general consensus of very pragmatic programming nearly entirely unconcerned with academic-type correctness is, well... uncompromising.

<comment><USER5> This is exactly what drove me out of the lisp community. There are just too many people that insist on seeing engineering decisions between different sets of trade offs as stark choices between good and evil. Go read some of Eric Naggum's rants for a really extreme example of this syndrome.

<comment><USER6> "The Lisp community" is purely an imaginary construct that only exists because you want it to.

"Community" is largely a toxic concept anyway.

Oh, we have to have a community. Community this, community that. Nice project, but where is your community? I can't write a line of code without a community!

Tired of "community".

<comment><USER5> Nice to see that nothing has changed.

<comment><USER6> You're still seething with hostility with regard to the conditions of a Usenet newsgroup fifteen years ago that is only very lightly active now. Reddit has r/Lisp which is more active and very different from old c.l.l. (Not that it's reasonable to equate r/Lisp with "Lisp community", either.)

<comment><USER5> No seething or hostility here. I learned a lot from Lisp.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> His basic argument hinges on incorrect division of devs into Java/OOP crowd and Haskell/FP crowd. There are plenty of Scala users who don't fit these stereotypes though. I personally very much appreciate the unique mix of OOP and FP that Scala allows for.

For me Scala is a very general and a remarkably unopinionated language. It efficiently encodes and integrates multiple programming paradigms in one language, letting you pick and choose what makes sense to you.

Scala is useful to a wider range of programmer preferences and skill sets than any Haskell-on-the-JVM could ever be. It's a feature, not a bug, both for individuals and enterprises. Pure FP is just some people's preference that requires a significant buy-in, not the one true way of doing things.

In general, this talk just seems like a case for one man's preferences rather than a fair summary of Scala's current market situation.

</comment><comment><USER8> The criticisms I found strongest from the talk:

\- Tooling needs improvements. He mentioned how the Scala plugin for IntelliJ IDEA will flag working code as incorrect. It will _also fail to flag_ code that won't compile as written. He didn't mention sbt as a pain point, perhaps because it goes without saying.

\- Scala 3 (Dotty) has the potential to split the community and libraries for years, much like the Python 2/3 transition. That said, I'm still kind of excited about Dotty because I only have 10s of thousands of lines of code that potentially need porting work, not 10s of millions, and that seems worth it in exchange for stable macros, faster compilation, etc.

\- The Scala community is losing people who just want "better Java" to Kotlin, and losing people who want pure FP to Haskell. I came to Scala because of Spark and I keep using it because I have grown to really like it, despite the pain points. I'm not eager to jump ship toward Kotlin, plain old Java, or Haskell. But if the community keeps shrinking, and the ecosystem shrinks with it, I will eventually be forced to jump toward _something_ else.

<comment><USER9> 1\. Tooling has seen huge improvements lately. I use many libraries that are macros and implicits heavy, and IDEA does a near perfect job. LSP support is coming too.

SBT keeps getting better, and you have a handful of viable alternatives these days.

2\. All major Scala releases bring breaking changes, this is incomparable to Python.

3\. By any real-life metric (jobs, conferences, meetups, libraries, ...) I don't see evidence that the community is shrinking, quite the opposite.

<comment><USER8> I encountered IDEA pain with implicits and type checking just yesterday, relating to a library that uses Cats and Shapeless. It happens enough to remark upon. It doesn't happen often enough to make me wish I were still using Python for data processing.

The Dotty transition looks like it will be significantly more breaking than the changes in the 2.x releases over the past 5 years. I'll be pleasantly surprised if the transition goes smoother than I expect, though.

I am excited by some recent alternatives to sbt, particularly Li Haoyi's Mill.

<comment><USER10> I hope that 3.x / Dotty will be released with a helpful upgrade tool. Something like 2to3 from Python, but with better success rate (thanks to type checking).

Also, I hope that this hypothetical tool will get the necessary testing on the community build system, so it'll be actually usable and useful.

</comment></comment></comment></comment><comment><USER11> I'm one of the leads on a large Scala project that I feel has been very successful. While I have great respect for jdg there are a number of important things missing from his talk:

Typelevel ecosystem is thriving and has great fp projects including Cats, Monix, Doobie, Circe and Fs2.

Having Oop is a great gateway so we can convince our pointy haired bosses and mainstream colleagues that Scala can be gradually adopted into a project

Reactive and actor based patterns, Lightbend and so on don't get a mention and yet are used throughout industry and are very valuable tools

ZIO maybe 100x faster than Future in certain benchmarks but can I get a 100x speed up on my real world oop code, my actor code, even my future based code, by switching to ZIO

</comment><comment><USER12> I was thinking about Python3/Perl6 as he was talking and glad when he brought it up.

It's important to note, the world has transitioned to Python3. Django removed the py2 comparability imports a while ago and the Python3 Wall of Superpowers stopped updating a while back when it was over 90% green.

For most devs, all new Python code that's green field is Py3. There is still a lot of py2, yes .. a lot in commercial/closed apps that have embed python in there, along with scientific applications. But I think that will change eventually too.

Perl6 is the opposite end of the spectrum. Massive Perl codebases will always be Perl5. I don't see any enterprise people going to Perl6. If you're like Booking.com and still using Perl for everything, you code is probably so decrepit, old and lacking meaningful testing you should just burn your entire company to the ground so your devs are no longer in miserable agony.

He has a point with Python3: it is a large community. Even with that large community, and even with how small many of the syntax changes were, it took a long time to get to py3! Scala is nowhere near as big.

Scala needs to move carefully with Scala3, so that Scala3 is more like Python3 and doesn't end up like Perl6.

<comment><USER13> > If you're like Booking.com and still using Perl for everything, you code is > probably so decrepit, old and lacking meaningful testing you should just > burn your entire company to the ground so your devs are no longer in > miserable agony.

That's a lot of assumptions:

* Booking.com still using Perl for everything

* Code being decrepit

* Code lacking meaningful testing

* Developers in agony

Do you have some inside information to know that all of these are true?

You also don't seem to understand that companies are in it for the money, not to provide nice new development projects to make developers happy. If you are programming for a living, you should know that programs are written to make money.

By the way, torturing the developers to make a better product, is a well known meme among Perl 6 core developers.

> doesn't end up like Perl6.

Perl 6 is ending up quite nicely, thank you.

</comment></comment><comment><USER14> I think this summarizes really well why I never became a Scala developer and am now a Kotlin programmer. I like Kotlin. It solves problems I had as a Java programmer in a way that is easy to understand. It's easy to move from one to the other. Tools are great. Documentation is great. Etc.

Based on this talk, it's not likely I'll ever become a Scala developer.

For reference, I learned FP in the nineties while in university; was exposed to monads, and a few haskell dialects (Gopher mainly). Been doing Java for about 20+ years at this point as well. However, despite this background I have trouble wrapping my head around Scala. The documentation seems to require a phd, which I have, just not in esoteric type system kungfoo. I find most Scala code completely unreadable. I admit, it's me. I'm probably too stupid or something. But if I'm too stupid, then most people I work with are definitely not smart enough either. So, that in a nutshell is why I ended up doing Kotlin instead.

<comment><USER10> > The documentation seems to require a phd, which I have, just not in esoteric > type system kungfoo.

Completely agreed. Though the funny thing is, Scala has/had a Documentation Tzar and she is trying to get things to a better place. To supposedly take care of this. I'm very much a learn by example type, so I'd appreciate a lot more examples (e.g. for methods: [https://www.scala- lang.org/api/2.12.6/scala/collection/$colo...](https://www.scala- lang.org/api/2.12.6/scala/collection/$colon$plus$.html) ). On the other hand, the documentation is open source in the best way: [https://github.com/scala/docs.scala- lang/commits/master](https://github.com/scala/docs.scala-lang/commits/master) anyone can shoot a PR if they feel they can/want-to contribute. And there's plenty of overview articles ( [https://github.com/scala/docs.scala- lang/tree/master/_overvi...](https://github.com/scala/docs.scala- lang/tree/master/_overviews) ) covering a wide range of topics.

Sometimes the fault is with the libraries and their documentation. Especially anything that's HC FP (scalaz : Let the types speak for themselves via the Scalaz Scaladocs! and then you're completely at the deep end - for example: [https://static.javadoc.io/org.scalaz/scalaz_2.12/7.2.24/scal...](https://static.javadoc.io/org.scalaz/scalaz_2.12/7.2.24/scalaz/Zip.html#zip\[A,B\]\(a:=%3EF\[A\],b:=%3EF\[B\])):F[(A,B)] ).

What makes Scala code unreadable is - IMHO - that people rely too much on the IDE to help them understand and navigate code, or their own familiarity with that code (or in some cases the code is simply write only, making it more like obfuscated Perl and KDB+/Q than a modern object-functional hybrid language).

And since Scala has so many faculties, features, facilities to mange code, to abstract problems and their solutions, and people write almost none of their design choices down into READMEs or comments, we're left with the code. For some people it speaks for itself. (For some people types like a -> a tell everything, for me that's just a function with unknown "functionality", because it depends on what the fuck the function actually does. Sure, the type signature constrains the expected return value, and it's useful, but that's not the architecture, not the rationale of/for design choices, it's just the safety striping around the sharp edges.)

Somehow Scala is "the PHP" at the other end of the spectrum. Instead of being too little it usually ends up being too much ( _insert the relevant Paul Philips rants here_ ), while both are perfectly capable of expressing nicely designed programs/systems.

Furthermore, Scala is actually a bit weak when it comes to expressing really high level concepts. So yes, you can do a lot of magic in it, but most of it ends up being of the Black variety, because "for performance" (minimize GC pressure) or because that part is still "experimental" (macros/reflection) or because that part is just ugly and badly designed (collections).

<comment><USER15> I agree with many of your points, but on that specific example code you pointed to which I have never used or looked at before, I find it plenty readable if you know how to read it. That doesn't mean I find it "obvious" if you have never been trained on how to read those signatures or come from another language that does not support these concepts.

Here is how I read this in case it helps anyone

      Def zip[A, B](a: ⇒ F[A], b: ⇒ F[B]): F[(A, B)]

F[Something] is a "container type" or a type constructor, a type that is parameterized by another type, for example F[Int] could be List[Int] or Future[Int].

The method zip has two parameters, one a by name reference to something of type F[A] and the other a by name reference to something of type F[B] and returns an F of the pair of input types (A, B)

Looks like this deals with three total types, a container type F that must be the same for input param a, input param b, and the result.

I know nothing about F other than the fact that it contains another type. I know nothing about A and nothing about B which means I can't be looking them up somewhere or using defaults, so the only way I could possibly return an F[(A, B)] is if I combined the two inputs.

Also, code written in this style is meant to follow the substitution principle, so I'll think through a couple of substitutions to see how this method could be useful to me.

For: F = List, A = Int, B = String

      Def zip[Int, String](a: => List[Int], b: => List[String]): List[(Int, String)]

Since I can't invent new members of list and the two members of the list may be different lengths, this must return a list whose length is the minimum of a.length and b.length containing and int -> string mapping. Handy.

F = Future, A = User, B = LastLoginDate

      Def zip[User, LastLoginDate](a: => Future[User], b: => Future[LastLoginDate]): Future[(User, LastLoginDate)]

This can only return me a User if they have logged in at least once. The fact that it is two Futures makes me think I am probably querying two remote servers for this information and that I can't resolve the new Future until both of the input Futures have resolved. By the time this Future is ready I will have a User with their last login date or the Future will fail.

F = Option, A = IpAddress, B = Port

      Def zip[IpAddress, Port](a: => Option[IpAddress], b: => Option[Port]): Option[(IpAddress, Port)]

I may have an IpAddress, I may have a Port, either return to me both the IpAddress and the Port, or neither. This one is really easy to map out as their are only 4 possible code paths

      Some(IpAddress), Some(Port) => Some(IpAddress, Port)
      Some(IpAddress), None => None
      None, Some(Port) => None
      None, None => None

I agree some documentation explaining this would be nice, but there is considerable information I can pull from this signature.

<comment><USER10> Thanks for the detailed response and concrete examples!

Reading signatures is one thing (and zip is "easy"), but without examples it doesn't really help in most of the cases. Because even if I know the concept, I don't know when it comes handy. (For example I just looked at Forall ( [https://static.javadoc.io/org.scalaz/scalaz_2.12/7.2.24/scal...](https://static.javadoc.io/org.scalaz/scalaz_2.12/7.2.24/scalaz/Forall.html) ... Forall is an endofunctor in an endofunctor category ... ah yes!), and then there are tools that come with labels (DList's doc page: nice for append heavy workloads, eg. logging; yes, great, what's Forall good for? What's Strong? Why Alpha exists? What's =>: ? That's not even documented :( It cannot be searched for [https://github.com/scalaz/scalaz/search?utf8=%E2%9C%93&q=%3D...](https://github.com/scalaz/scalaz/search?utf8=%E2%9C%93&q=%3D%3E%3A&type=) ... It's not on the cheatsheet [http://eed3si9n.com/scalaz-cheat- sheet](http://eed3si9n.com/scalaz-cheat-sheet) .. .I mean it's on it, but it is only used, not defined. etc.)

That's not a type reading thing. That's the bad documentation, and the learner-unfriendly naming convention.

</comment></comment></comment></comment><comment> web-cowboy Wise words for any project or product that starts in academia but stays there for too long (building for papers and PhDs rather than real customers). Brave to deliver such a cutting critique to this audience too.

As a potential newcomer to Scala, many of these points ring true. Hopefully the community takes a good hard look at itself to see what it can improve.

With some time off this past week I started hunting for things I should be learning. After doing some research on Scala's popularity and trending I came to may of the same conclusions John does.

<comment><USER16> > building for papers and PhDs rather than real customers

> the community takes a good hard look at itself to see what it can improve

This has already been happening for a while. FYI, the Scala center is entirely dedicated to improving Scala usage and its tooling, which JDG somehow forgets to mention (along with many other positive things happening in the community).

In fact, it turned out in discussions on reddit that JDG is kind of living in his own bubble, not really aware of a lot of things happening outside of it, and thinks he is the only one to see some problems that have in fact been worked on for years. For example, tooling with the Scala center, and the Scala2/Scala3 transition which has been a _central_ consideration in the design and implementation of Dotty since the inception of the project!

</comment></comment><comment><USER17> Around 12 minutes in, he mentions Eta, Haskell on the JVM. Says it's too new but it sounds interesting:

[https://eta-lang.org](https://eta-lang.org)

<comment><USER18> There's also Frege: [https://github.com/Frege/frege](https://github.com/Frege/frege)

It's also Haskell for the JVM. Made me wonder why there are two efforts. Found an explanation: [https://github.com/typelead/eta/issues/3](https://github.com/typelead/eta/issues/3)

<comment><USER19> There's was also OpenQuark CAL, but it looks dead now.

[https://github.com/levans/Open-Quark](https://github.com/levans/Open-Quark)

</comment></comment></comment><comment><USER20> When you invite John De Goes to speak, you are already dead.

<comment><USER10> Could you elaborate on that for the ignorant bystanders?

<comment><USER21> Presumably it's a reference to the fact that DeGoes refused to roll over when activists tried to torpedo his conference for inviting the wrong kind of speaker after a double blind process. And continued to be pestered the next year because of another keynote speaker's unrelated tweets.

Having been to Lambdaconf, I can attest to it being an amazing event where people can nerd out shamelessly about functional programming without any bullshit or hostility. I highly recommend it. Easy to forget this is what all of open source used to be like, before the sociopaths moved in.

The supreme irony is the comment above seems to come from a guy kicked out of the Drupal community by the same kind of moralizing busybodies, for being too neuro-atypical and abrasive...

<comment><USER20> Thank you for diagnosing me as neuo-atypical, some might take offense at that but I don't, I never denied though I never was diagnosed I surely have some sort of mild ASD.

As for being kicked out, that's for the better. Yeah, it took me long enough to get over it but really, those days are gone. I should've left on Jan 8, 2013 when it was made clear how much we've grown apart. I didn't, both the community and I suffered for it. Ending it was good, even if took me close to two years of grieving to get past it.

I fundamentally disagree with calling the CWG "moralizing busybodies", see my take on them [https://medium.com/@chx/women-of-drupal-ive-failed-you- and-i...](https://medium.com/@chx/women-of-drupal-ive-failed-you-and-i-am- sorry-fa22f37801b5) here. What I described there goes for any tech conference organizer: when you are given a chance to amplify a voice, make sure it belongs to someone who deserves their voice amplified. It never was an empty consideration but past #metoo it matters more than ever.

Once you have your eyes open... really, I was watching a pair ice skating on the TV while in the dentist chair (otherwise I wouldn't watch such) and it was appalling how much more skin the clothing of the woman showed than the male. Everywhere we sexualize women. Let me remind you of that time when the South Park creators went to the Oscars in female clothing [http://www.trbimg.com/img-535ac5e8/turbine/lat- oscarmoment-l...](http://www.trbimg.com/img-535ac5e8/turbine/lat-oscarmoment- la0004759694-20140201/) this?

</comment></comment></comment></comment><comment><USER22> Where can I find a good description of the typeclasses and "effects" features in Scala 3 that he discusses (and criticizes)?

<comment><USER23> At least some of the content is appearing as Github issues:

[https://github.com/lampepfl/dotty/pull/4153](https://github.com/lampepfl/dotty/pull/4153)

</comment></comment><comment><USER24> SBT, implicits, CoC controversy and censorship, scalaz/cats debacle... There are more reasons not to get involved with scala ecosystem than to get involved.

I think people get snippet fever when they see a few lines of really pretty code and they forget how tangled up the scala scene actually is.

I can't believe, after seeing more Rails disasters that I know what to do with, that I'm looking at a software project and thinking "this shit is almost as bad as Rails."

Scala 3 could've been the opportunity to murder sbt to death, abandon implicits entirely, make the breaking changes they need and compose the foundation for 10+ more years of scala hackery. But from what's visible out of dotty currently, it's almost entirely invested in the old sins, with a stronger soundness story nonetheless (congrats DOT team). There's just no way to slow the train now, too much of it is dangling off the bridge and Spiderman won't be able to pull it back.

Good riddance. Thank goodness F# is starting to come together.

<comment><USER25>
       abandon implicits entirely,

What's wrong with (carefully used) implicits? What would you replace them with? Haskell has type-classes, a very similar concept, and it's difficult to imagine contemporary Haskell programming without them.

<comment><USER26> they're an afterthought which serve truly no purpose other than to be fancy via obfuscation?

<comment><USER25> Implicits are not an afterthought, but a core feature that enables efficient context-dependent parameterisation. Implicits let you avoid a lot of boiler- plate. They are especially useful for well-structured ad-hoc polymorphism, quite like Haskell's type-classes, the predecessor and close relative of implicits.

If you don't like implicits, simply don't use them. You can add a style checker to your build automation that finds and rejects the keyword "implicit" in your code. As to use of implicits in libraries, you are perfectly free to pass explicit arguments instead.

Odersky has a couple of recent youtube videos where he explains implicits in detail.

</comment></comment></comment></comment><comment><USER27> I dumped jvm languages for Rust.

Scala _really_ needs to die.

<comment><USER11> There's not really much argument behind your point here. Moving to Rust I'd be concerned about library support for one.

<comment><USER10> The Java libraries are plentiful, but not bountiful.

They are ugly, unergonomic, old, unmaintained (or worse, pumped full of decades of features, but never really refactored), and some are just simply broken.

Some libraries are of course the exception to these and all due respect toward them.

</comment></comment></comment><comment><USER28> Watched the entire video; still failed to understand why I would pick a JVM interpreted, impure functional programming language over ANSI common LISP which I can compile into machine code?

Which feature(s) is(are) there in Scala which trump running straight machine code for maximum speed and efficiency? I write software which runs on the command line and is designed to take command line options and work well with pipes like all the other UNIX® tools and the software has to be efficient on resources and lightning fast. Sell me on Scala.

<comment><USER10> Some people just don't like parentheses. And they hate the Paamayim Nekudotayim (PHP PTSD?) And really like that the compiler helps them (types), so they are left with Scala.

[https://markkarpov.com/post/lisp-and- haskell.html](https://markkarpov.com/post/lisp-and-haskell.html)</comment></comment>


You Don't Need A Prototype To Raise A Seed Round - <AUTHOR> http://techcrunch.com/2012/09/30/you-dont-need-a-prototype-to-raise-a-seed-round/ <comment><USER2> "More precisely, what risk is going to be removed from the deal?"

You've got to be joking. One of the highest risks in every startup is the team falling apart. A team that was able to build a prototype is likely to be more consolidated than a group of people with an idea. You are weeding out the teams that disbanded while trying to build something simple, and I've seen plenty of those.

I don't have the hard statistical data to prove it, but I would bet on that hypothesis.

</comment><comment><USER3> The point of the article seem to be: don't need a prototype if you have a fantastic, seasoned team - because we invest in the team and not the product. Great, but that doesn't apply to most people. Thus, the prototype and some signs of traction are generally required for the average team to get investment.

</comment><comment><USER4> Seems like another in the line of "for some definition of startup (which we don't elucidate) this factoid (which depends on our definition) is true."

Comments like this : _"But today, it is the very rare Internet software deal that has meaningful technology risk — other than scalability,"_

Seem to sweep the whole patent/copyright risk under the table for example.

I get the whole 'invest in the team not the idea' mantra, but that depends on the team having a track record.

<comment><USER5> Third paragraph:

"Assume... ...your team has product, development, and design chops."

I am going to assume that this means your team has a track record, one definition of "chops"

<comment><USER4> Yes, but if there is a way to determine 'chops' without an exemplar or two that would be useful to know.

</comment></comment></comment><comment><USER6> You don't need a prototype. Absolutely not. But is there an advantage to raising money before you have a prototype?

I'd say no, although it may vary case by case. Instead of focussing and building your product, now you have to build your product AND make sure your investors are pleased.

Also think about the valuation. Imagine going to investors saying "we built our product, we even have some customers who've given us some positive feedback and constructive criticism. We found that X meets our customers needs but we need to work on Y and Z."

I'd imagine the valuation would be higher and less speculative. I'd also imagine this situation to be more advantageous, simply by giving you more confidence when raising money.

</comment><comment><USER7> You're totally right but you probably want to if you can. For a few reasons:

\- The later you raise money the more data and knowledge you have to validate what you're doing.

\- There's less risk involved. You know you can work well with your team. I personally want to pay back my investors 10x or more so raising money with an idea and either failing or selling to Facebook for $2M isn't appealing. You can be far more flexible.

\- You can get better investors interested. The best investors look for people that don't need their money and have something to show. Traction, revenue or validation.

\- You can raise money at a better valuation. Admittedly some companies need the money to build your company but the longer you hold out, the longer you're worth. If not you're probably doing something wrong. This means you also have more leverage and control of your company through bad times.

If you aren't succeeding and need to raise money at a low valuation the chances are things won't get better quickly and as you won't have control of your company. Your (Bad) investors will likely kick you out. These stories come up all the time.

Color had a founder with past wins but if he'd followed his equation, he would've been agile enough to scrap everything or try something completely different.

There's nothing wrong with raising an incubator/YC style boost when you start. As in raising 10 - 50k right at the start to help you survive if you need to. Whether it be from friends and family or an investor you know that you trust. Raising $2m with just an idea seems like a bad idea.

</comment><comment><USER8> "But today, it is the very rare Internet software deal that has meaningful technology risk"

This statement embodies what I think is wrong with the SV climate today. You seem to have money actively shunning technological risk which usually is directly coupled to technological progress. While Id certainly agree that their is some money to be made on the current infrastructure Im pretty pessimistic that the next _actual_ big thing (atleast in the internet space) will come out of the current VC ecosystem. Ok Ill get out of my armchair now.

</comment><comment><USER9> Interesting post. I guess I "agree" with the headline that you can raise without a prototype. Should you? Unclear.

I can only speak to this from my own experiences with fundraising (2x) - I've seen entrepreneurs raise bigger rounds with zero code and I've seen entrepreneurs struggle to raise with product in the market, customers, traction, the whole nine.

At the end of the day, all definitive conclusions are suspect. If you're a single founder first time out of the gate (I was), you increase your chances a great deal with a working product in the market IMO. If you're like my former bosses (angel investors in FB, 1 big exit to AMZN back in the day, several smaller exits as investors to GOOG), yes, you can raise without a prototype.

Or a PowerPoint, for that matter.

Or an idea, for that matter.

Maybe even if you lose your voice in the pitch meeting and just kind of sit around for an hour and then ask for a check.

The point is, every situation is different. On balance, I'd rather go into any pitch meeting with a prototype.

</comment><comment><USER10> I feel like this excludes all those teams that have a lot of experience but not specifically in startups. There are many moving parts to business and a prototype is just one of them.

I'd say modelling the entire business at low fidelity and getting started on all the activities: Marketing, Technology, Sales, Metrics, etc is a good way to show that you're a sound investment.

</comment><comment><USER11> Also to prove you do have those basic technical skills, and to prove that the team is productive

</comment><comment><USER12> No surprise this is coming from a VC.

I think you should build a prototype and engage with potential customers, to (1) increase your valuation and (2) decrease the likelihood that you need a seed round in the first place.

</comment><comment><USER13> you don't need anything to raise a seed round (or do anything for that matter), but it sure helps your chances.

Other stuff you don't need, but helps: \- signed orders \- distribution channels \- Wireframes \- ...</comment>


Ask HN: How often startups get acquired and you get nothing? - <AUTHOR>

Today the startup I worked for got bought out. I am one of the first few Developers with employee stock options. I have given 3 years of my life to this startup. I believed in what we were doing.
During this time I have seen one complete product rewrite, Whole top management being replaced (CEO, CTO, etc), numerous product direction changes.
I worked on some of the most critical pieces of the software. I lead the last rewrite as the Principal Architect (with very high control on what to be build). This last rewrite lead the startup being bought out by a very large enterprise company.
In the end I got nothing. They tell me my stock options are worth nothing. This has happen to me second time. How often this happen? Is this normal?
I am frustrated. The only solace is that they are keeping my team so at least i know my team has a good home. I have decide not to be part of this acquisition. I am Frustrated and not sure what to do next.
PS: It was a Venture Capital backed startup <comment><USER2> The dirty little truth is that the only parties who profit off of startups, besides service providers who cater to them, are the investors and the founders.

If you would believe the hyperbole from the founders of start-ups, working at a start-up isn't about money. It's about changing the world. heh. Seriously, working at a startup is about making 20-30% less than market (when you factor in the value of big-company benefits) with the expectation of 50-70 hour work- weeks for the gamble of your company having an exit so huge there's no way they can dilute your stock enough to give you the shaft. Youtube was the last time that happened. If the exit isn't in the 10 figures, as a peon you probably won't even see enough cash for the downpayment on a studio condo in the bay area.

</comment><comment><USER3> This is what happens when you are just an employee. This is also why I don't work for startups. You work long hours, many times are under-paid, and after putting your life unto a project, get little to no money if it gets bought out or they go big (you also might just get fired instead).

This is why you need to start your own company.

</comment><comment><USER4> This happens more often than not. So many things could have influenced why you got next to nothing in your stock options. Depending on how much money was taken by the company, your stock options that you received on day one were likely diluted over and over and over again. (Whereas, investors likely kept their percentage of the company by maintaining their stake). It's the unfortunate part of the investment game. Employees (and employee stock option pools) often are the last ones to benefit from the dilution.

</comment><comment><USER5> It has to do with dilution and something called liquidity preference. If an investor puts in $5 million and has a 2x liquidity preference they get out $10 million before anyone else. That happens to every investor on down, whatever is left is then split among the common stock/options holders. There was likely nothing left or what was left was less than your option strike price.

<comment><USER6> exactly.

</comment></comment><comment><USER7> Out of curiosity how did they devalue your stock options?

</comment><comment><USER8> There is a real value in working for a start-up as an early employee, for sure, but you should only really be doing it to watch & learn from others mistakes.

If you've got the chops, take 3 months, make an MVP and see what offers you can get. Sounds like you've managed to survive the environment twice around, so why not take the plunge?

</comment><comment><USER9> Always assume "equity" has zero value. Any payout will go to the investors first and the founders second, with employees benefiting significantly once in a blue moon. If a blue moon shines, hurray! But don't plan your retirement on it.

</comment><comment><USER10> I'm sorry to hear about your situation. Being in that position sucks. I'm always an advocate that you reward people accordingly for what they have done; particularly the early employees who were there from the beginning.

If it's possible, could you elaborate more? I.e. was your shares were diluted to nearly nothing, preferred/common stock, VCs screwed the whole company, etc.

I'm sure the HN community will be interested to learn from this and take measures so that it doesn't happen to us in the future.

</comment><comment><USER11> I'm not sure I would lay down so easy. I think at the very least you should have a your own lawyer look at your options and see what conclusion he/she comes up with.

I do agree with some of the others that this type of stuff happens more often then you think. Personally I'd be interested in know who the investors were and who the executives were. This could perhaps save some other developers from making the same mistake.

Sorry to hear about this, good luck.

<comment><USER12> I did some digging to find out who the company is, and the investors are fairly minor ones in the startup league. One is a cleantech vc and the other is a Seattle based PE firm that invests in later stage startups.

</comment></comment><comment><USER13> VCs look at people not ideas for a reason. I think joining a startup as an employee should be the same exact process. Do you believe in the executive team to put your needs at the same level as theirs? If not, then you may want to reconsider. At the end of the day it's an question of ethics.

</comment><comment><USER14> > _"Whole top management being replaced (CEO, CTO, etc),"_

That's probably relevant evidence regarding the value those people placed on their stock options and/or the attitude of the controlling shareholders regarding the value placed on early hires and founders.

</comment><comment><USER15> Stock options usually vest at 25% per year. If they don't, then they're only worth anything if the company goes public, which is unlikely in today's environment.</comment>


Motivator – Quotes that motivate You sent daily - <AUTHOR> https://itunes.apple.com/us/app/motivator-quotes-that-motivate/id942291951?l=lv&ls=1&mt=8 <comment><USER2> _" If a pretty poster and a cute saying are all it takes to motivate you, you probably have a very easy job. The kind robots will be doing soon."_[1]

 _" You can do anything you set your mind to when you have vision, determination, and an endless supply of expendable labor."_

 _" Because nothing says "you're a loser" more than owning a motivational poster about being a winner."_

[1] [http://despair.com/collections/demotivators](http://despair.com/collections/demotivators)

</comment><comment><AUTHOR> Motivator is a notification based application with notifications that you will be looking forward to everyday. Carefully picked quotes that would motivate you. Words are so powerful that reading a notification could give you that extra strength you needed.</comment>


Seeing the Toll, Schools Revise Zero Tolerance - <AUTHOR> http://www.nytimes.com/2013/12/03/education/seeing-the-toll-schools-revisit-zero-tolerance.html

<comment><USER3> As a lawyer who has represented school children in Broward and Miami-Dade disciplinary and IEP proceedings, I have been involved in some outrageous cases. For example in one IEP matter the school refused to purchase a deaf student a ~$50 reading program violating her Constitutional right to free and appropriate education, only after retaining a lawyer did the school comply.

Maybe of more interest to the HN crowd, I represented an exceptional (in the ESE definition) student, who had already been expelled for uploading a script to the school's computer network that shutdown the server on 10 minute intervals. Under the county code his conduct was labeled as hacking and subject to the same punishment as student's charged with hate crimes. The student actually volunteered his free time to work with the school's IT department, he brought the vulnerability to the attention of the IT department, and only did what he did after bringing it to the attention of the IT department and they failed to take action. After 6 months, the student was finally reinstated, only through a technicality that he too was being denied a free and appropriate education. In his case he was 17 in his Sr year, in an IB program where he normally split his time between high school and college classes and was on track to graduate high school with 2 years of college credit, but as a result of his expulsion he was placed in an alternative school where he could no longer take IB classes or his college classes so it was determined he was not receiving an appropriate education.

Personally I was detained in school by the secret service for counterfeiting when I was 14, I received no school related disciplinary action, and as a direct result I am a lawyer who gives back to children in similar circumstances - how many have lost a similar opportunity to learn from their mistakes and allow their mistakes to have a positive impact of their future?

<comment><USER4> You might be a lawyer but there is no "Constitutional right to free and appropriate education."

Public schools in states accepting federal monies are obligated to provide services to disabled students because of laws like EAHCA and IDEA, not the US Constitution.

<comment><USER3> I am giving you the benefit of the doubt, though between creating a throwaway for the purposes this comment, the aptly selected name and failure to cite anything of value I am likely wasting time.

Children and Parents have a 14th Amendment (Constitutional) right to Due Process and Equal Protection vis-a-vis Free and Appropriate Education.

Case Law:

"Children of this nation are entitled to a free, appropriate education." Forest Grove School District v. T. A. ([http://www.law.cornell.edu/supct/cert/08-305](http://www.law.cornell.edu/supct/cert/08-305))

Legal Article:

"The due process and equal protection clauses of the Fourteenth Amendment protect the educational rights of children with disabilities. State law cannot override this constitutional protection." -The Legislative and Litigation History of Special Education ([http://wwfinductionmodules- resources.wiki.educ.msu.edu/file/...](http://wwfinductionmodules- resources.wiki.educ.msu.edu/file/view/History+of+Special+Education.pdf))

It should be noted that special education is not limited to children with disabilities but includes exception students as well. It should also be noted that not a single State does not take Federal money for children with disabilities.

<comment><USER5> I am still at loss on how Due Process means people should get educational services for free. I understand why one may _want_ to give these services for free, but I fail to see how it follows from Due Process. I guess that's why I am not a lawyer.

<comment><USER6> The due process and equal protection clauses don't mean that "people should get educational services for free". It does mean, however, that if the State _generally_ provides these services for free (and, _a fortiori_ , if it, as many states do, adopts a right to such services as a State Constitutional guarantee), it cannot arbitrarily _discriminate_ in who gets such services.

(There are also federal _statutory_ requirements that come into play if, as I believe every state does, states accept federal education funding.)

</comment></comment></comment></comment></comment><comment><USER7> "Zero tolerance", by normal princicples of interpretation of English, implies "no exceptions to the rules". But that was never what it has meant in practice. The practical meaning, which has caused all the problems, is "stupidly over-broad rules, ignoring obvious relevant distinctions that should have been incorporated into the rules".

If the rule for example is "no drugs", and the "zero tolerance" mantra promotes fearfully over-broad interpretation, then you have students being suspended or expelled or arrested or whatever for having an acetaminophen from a parent or nurse, for a headache. If that's not the intent, the rule needs some intelligent thought at the writing stage - then you could still have "zero tolerance" meaning "no exceptions", yet avoid the outcomes which defy common sense and fairness.

The fact that all this has taken years to penetrate the minds of school officials makes me wonder whether we still have a lot of lead poisoning, or some flaw in the way people are selected or trained for these positions, or something else is badly wrong with the education system.

<comment><USER8> The problem with the education system is similar to that of a corporation, or politics. Nobody who sees the need for changes has the authority to make those changes, and those in authority do the bare minimum needed to keep their jobs.

I was expelled or "asked to leave" from several high schools (in Broward County) when I was growing up about 12 years ago. Ironically, it was never for drugs or misbehavior, but instead for being too smart for my own good. The offenses were always minor: a "dangerous" amount of "knowledge of school computer systems". Pushing a chair across the room "in a violent manner" (fast enough to make it clang into the wall). Strange electronics diagrams that they could not decipher (an FM transmitter project kit from RadioShack). Having a website with links to VisualBasic AOL proggies and punters that "could be slowing down the Mac network".

What it took me years to figure out was that nobody wanted to deal with a special case. Nobody wanted to take the time to help you or understand you. They have thousands of kids to deal with. They're happy as long as everyone is towing the line and they'd much rather get rid of you (or pass you) than educate you. And I can sum up the motivation in one sentence:

There is zero incentive for educators to help troubled kids.

<comment><USER9> > Nobody wanted to take the time to help you or understand you

On behalf of several ex-teacher friends, a minor correction -- there are teachers who care, and go out of their way to help the special cases; but the system treats them just as badly as it treats the special kids themselves, so they tend not to stay in that career for very long.

<comment><USER10> Nice recent interview on NPR with their sports reporter Mike Pesca and a former teacher of his:

"Remembering when a teacher had his back"

[http://www.npr.org/2013/11/24/246984890/remembering-when- a-t...](http://www.npr.org/2013/11/24/246984890/remembering-when-a-teacher- had-his-back)

 _" I always thought — I never questioned it — I always thought you had my back," Pesca tells Sheehan._

 _" Back then, I would say that school was enjoyment for you, and maybe not necessarily the classes," Sheehan recalls, laughing. "For a lot of teachers you were problematic, so part of my job was really to keep you from being thrown out of that school. That passion is kind of what drove you in school."_

 _It was the same passion that drove Pesca to push the boundaries, he says. Sheehan remembers a problem-solving program in nearby Katonah, in which gifted students were given a problem to solve and then present in a skit. Pesca 's skit: "The Top 10 Things We Hate About Katonah" — a sort of David Letterman- esque spoof._

 _" The guy running that program practically wanted to have you arrested," Sheehan says. "That night, I did have your back."_

</comment></comment></comment></comment><comment><USER11> Good.

When I was in highschool, I consistently found security holes in our network. I even got naughty and abused some of them for pranks, and for installing Quake on every computer on the network (lunchtimes became far more interesting, had at least 40-50 people in the LAN!).

I was caught multiple times (and turned myself in a few, with bug reports). My IT coordinator wanted me hung, drawn and quartered, but my vice principle made him give me admin access to our secondary servers running Suse Linux. If he'd followed the rules to the letter, I would've been expelled, "zero-tolerance" could have seen something even worse. I learned my lesson(s), and it started a lifelong fascination with Linux, and the schools network was more secure for it. A better outcome, I think.

<comment><USER12> _it started a lifelong fascination with Linux_

indeed, a far worse punishment... ;)

<comment><USER13> I hereby sentence you to virginity!

<comment><USER12> It's funny, you know, because the most attentive lovers I know of are all programmers.

Probably the practice at being patient while debugging cranky and seemingly whimsical systems.

<comment><USER11> I treat my lover the way I treat my mission critical config files: carefully and with patience?

<comment><USER14> When in doubt, use brute force? Oh, no, that's only with UNIX.

<comment><USER12> fsck, finger, mount, grep.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> I have a theory about zero tolerance or other types of blanket policies such as mandatory minimum sentencing. They are a way for the management class to divest liability or responsibility for decisions. If there is no room for discretion, there is no real decision to make, and no way to be wrong.

You see this sort of thing in large organizations of all types but government is the one everyone has experience with.

<comment><USER16> I don't really know that that's a "theory". That's just how you scale, isn't it? "Common sense" works for a company of 25 people when the founder is directly involved with hiring and training of every person. It fails though when you employ 50,000 and the CEO turns over four times in a decade. Putting in "policies" and requiring adherence to these policies is a way to keep the train moving even when the CEO is fired/arrested/etc. "Just follow the SOP and you'll be fine."

</comment></comment><comment><USER17> The goals of Zero-Tolerance policies have nothing to do with student outcomes and everything to do with legal outcomes. If you expel Johnny, but only suspend Jane for the same infraction; Johnny's parents are going to sue. Conversely if if you don't expel Johnny for drawing that picture of a gun, you'll be sued if he ever becomes violent.

The most insidious thing about Zero-Tolerance is how it sharply outlines the differences for 'connected' students. A direct contradiction of it's goals. Before policies like these, a school board member's kid might get a preferential slap on the wrist in lieu of expulsion. Now that lower punishment isn't an option, anything they do wrong is invisible entirely.

</comment><comment><USER18> One under-discussed problem with "zero tolerance" is the application of the (misguided) principle to that which doesn't even constitute a relevant offense. Suspending a kid for pointing a finger and saying "bang!" under "zero tolerance weapons policies", or for having mundane analgesic for menstrual pain under "zero tolerance drug policies", or for wearing a religious-themed T-shirt under "zero tolerance hate speech policies", etc. is not equal reprimand for violations, it's arbitrary abuse born of sociopolitical bigotry doled out by people suffering a tenuous grasp on reality - <USER2> exactly why they should not be empowered as _in loco parentis_. Alas, most parents defer to "the severity of the charges" and alleged authority, rather than retorting "you're NUTS" and press child abuse charges.

</comment><comment><USER19> Thank God. I suffered 7 out-of-school suspensions and numerous other punishments in 6th-8th grades in the US under these policies. In nearly every case, I was the victim in a clearly one-sided assault. I am not going to subject my daughter to the same environment.

</comment><comment><USER20> I'd love for there to be less "by the book" and more communication in general, not just in schools. It's insane how much corporate america relies on "it's in the company handbook" rather than just communicating with people.

I worked at a place where a male employee was caught spending literally hours a day on the Victoria's Secret website. Instead of talking to him about it they waited until the next year's handbook was issued with a new directive about computer use so his manager could say "it's not personal, it's in the handbook".

</comment><comment><USER21> Special case treatment invites lawsuits by those who do not get special treatment. Lawsuits are bad (expensive) for public school districts already struggling to fund teaching programs. No special treatment, no lawsuits.

<comment><USER22> Zero tolerance doesn't eliminate special treatment, it actually increases it. If someone breaks a rule, and you know that if you notice it, they will be expelled, you turn a blind eye more often than if you know that more appropriate action will be taken.

</comment></comment><comment> at-fates-hands While I whole heartedly agree with schools taking the approach of helping kids instead of simply handing them over to the cops to deal with, the problems are much deeper. We have allowed socio-economic and cultural factors go untreated for too long, thus placing more of burden on the school system with having to deal with these kids and their issues - most of which should not have anything to do with schools.

I firmly believe if these issues were treated at the root source, instead of burdening school districts, I bet the kids would have less issues in school and would be more successful academically. We just have to let teachers focus on what they do best - educate our children.

<comment><USER23> Sure, we have deep-rooted social problems, but right now we are _reinforcing_ those problems via our school system. We will never solve those social problems if we are starting kids off in life with criminal records.

</comment></comment><comment><USER24> Even if zero-tolerance _were_ good in principle, we really need to consider the burden it places not only on the accused, but on the system. We barely have time and resources to prosecute and incarcerate law-breaking adults. And this sounds really banal, but the paperwork and bureaucracy for all those involved is a real pain in the ass. I was recently involved in a drawn out legal process as a _victim_...and even though the only thing I had to do was show up and testify, it was such a pain in the ass to coordinate my schedule with the court's, who also had to schedule it around the other parties' schedule...which, when you're an adult, basically means missing work, appointments, etc., to wait for hours in the court halls. I imagine it's just as much a burden on the accused, even if they aren't incarcerated...and if the accused in this situation is already having a tenuous time attending classes and staying focused, well, going through the judicial system process -- and even being exonerated -- is not going to help things at all.

The legal system is slow...and that's a _good_ thing. However, it means we need to be cognizant of that reality before readily throwing people (and children) into that grinder.

</comment><comment><USER4> What about the students who aren't smoking weed and spraying graffiti? Why should they be grouped with students who need more than an education and fed a curriculum geared towards the lowest common denominators (students who aren't even prepared to function in a school environment)?

Arbitrary tolerance will fail for the same reason zero tolerance fails. Schools are being asked not just to educate but to parent. In many places they are falling short with the former so why do people believe they can do the latter?

School administrators need to be honest with themselves and with the people they answer to. If parents raise children who lack the basic skills required to function in civil society the burden can't and shouldn't fall on schools.

<comment><USER6> > If parents raise children who lack the basic skills required to function in > civil society the burden can't and shouldn't fall on schools.

It manifestly _can_ and _does_ , whether or not it _should_.

And if we build a society which demands, in practice, that even in two-parent families, both parents work outside of the home full-time to provide the necessities of life, we probably shouldn't be surprised that suboptimal parenting often occurs.</comment></comment>


Profiting From a Child's Illiteracy - <AUTHOR> http://www.nytimes.com/2012/12/09/opinion/sunday/kristof-profiting-from-a-childs-illiteracy.html

<comment><USER2> This has been an issue to me for the last 20 years that I have tried to figure out a solution to, but can't find a way to make it work in the US. Our social order is a complete mess where we congratulate the stupid and ignorant and hide the game changers and world builders. "Socialism" is a curse worse. Greed is a god.

I keep looking at production numbers and see that we would be able to feed and educate every single citizen of the USA with the resources we have. We just need to change our mindset about what Socialism is. When I looked at our Federal budget, I saw a huge wasteful pile of Socialism hidden under the line called "Military/Defense". Don't think that our military is Socialism? Then think about what it does for whom. Well, ok, it currently goes and kills some people overseas to further the interests of large corporations to make footholds into new markets... but I mean what it is really supposed to be for.

Why aren't our Republicans crying tears of blood over this mass of Socialism? What makes it a different "evil" form of socialism than providing healthcare, education, and nutrition to our citizens?

The military protects us from those that want us to not be alive, our freedoms to do as we like, and provide a safety blanket of comfort.

Nutrition, education, and healthcare protects us from biological forces that want us to not be alive, teaches us about our freedoms to do as we like, and provide a safety blanket of comfort.

When that idea takes seed, week can try to improve the lives of our fellow citizens in a much larger and organized way.

However, as a sideways, I keep trying to think up a system that would work to provide nutrition to everyone in the US and could work with our existing infrastructure. The downside is that I can't think of a way to 'make it profitable' to get some sort of private backing which the Republicans tell me should happen instead of government handouts.

I keep thinking of a school program that most of America has on a city or state level of "free or reduced cost lunches" that needs to be broadened. This program is usually supplemented with an additional program where backpacks of food are sent home over the weekend and for pickup during the summer and are meant to provide nutrition to the child. It seems like we need a larger format. Yeah, states have foodstamp style programs, but those lead to a lot of fraud because they are a easily portable, transferable item. We have foodbanks that distribute food, but those are few and far between.

Now, what if we took the foodbank idea, pitched in the foodstamp idea and had "foodboxes" which contain the proper nutrition of items for a specific age/size/allergy requirement and had them available through a trackable system or location, say like at Walmart, the same place that currently store government supplies for emergencies. We even have a convertible infrastructure to track those items, Lottery Machines. (Ok, those are state specific items, but they perform the exact job of processing transactions on a large scale.)

But wait, how can we get companies on board to fill those foodboxes properly? Ask Haliburton. Those guys seem to be able to pull it off for our military so well that they don't even need to bid anymore to get the contract. With our soldiers on our home shores, they will need a new market to suckle from the US government teat contracts. Whoop, there it is.

I apologize for the long post, but this kind of thing is dear to me and nags me that we haven't been able to solve it. I want the USA to have the brightest, best chance at a future, but it seems that someone else bought our system for more personal interests.

<comment><USER3> I have also long thought about this problem. The problem with your idea is the same problem lamented by the article: That throwing money at the problem of poverty tends to promote dependence and leave people less able to take care of themselves, thus it tends to make poverty more intractable. If money alone could solve such a problem, you would not have such a high banktuptcy rate among lottery winners (last I hear, 2/3s of lottery winners are bakrupt within five years).

The most effective solutions come from developing a culture and set of policies which consider human needs at a baseline which largely ignores current income yet manages to promote effective behaviors. Rewarding poor people with money _because_ they poor is part of what we do now. It has a proven track record of promoting lifelong dependence and helping to create entrenched poverty.

Please keep thinking on this problem. It is one we pretty desperately need to make headway against. But lease think on something other than throwing money at the problem.

Thank you for posting.

</comment></comment><comment><USER4> >Antipoverty programs also discourage marriage: In a means-tested program like S.S.I., a woman raising a child may receive a bigger check if she refrains from marrying that hard-working guy she likes. Yet marriage is one of the best forces to blunt poverty. In married couple households only one child in 10 grows up in poverty, while almost half do in single-mother households.

Ugh. That seems like a bit of a stretch to claim that getting married is what causes someone to be lifted out of poverty.

<comment><AUTHOR> Ha yes I thought the same thing - definitely more correlation than causation on that one.

</comment></comment><comment><USER5> We can't have people forced to choose between teaching their child to read, and feeding them. That's why we need a minimum income, so people don't have to make these choices and children all have the chance to excel independent of the circumstances of their birth.

Or we could just leave them in grinding poverty AND take away their childcare stipend. That works too.</comment>


Life on Mars? Funds for NASA to Find the Answer Fade:  - <AUTHOR> http://www.nytimes.com/2012/03/13/science/space/life-on-mars-funds-for-nasa-to-find-the-answer-fade.html

<comment><AUTHOR> Canceling these two Mars research projects strikes me as short sighted and stupid. $300 million is the cost "savings", including screwing over our European partners!

That is equivalent to the cost of a small highway overpass project, like for instance, the Orange County (California) $277 million I-405/22/605 West County Connector project, which will provide zippier and dedicated carpool lanes between highways.

Which is the priority: carpool lane improvement or Life on another planet research?</comment>


Ask HN: What is a good salary in X city? - <AUTHOR>

Hi there!
Recently, I talked to a bunch of developers in different parts of the US and around the world.
Some developers are happy with $100k salaries, and others need a minimum of $200k because of the city they choose to live in.
Could you please answer the question by naming your city and the ideal salary you require.
For Example:
Berlin, $80k
This will give me an idea of what salary is a good salary for a certain city, because $100k in Boulder is not the same as $100k in NY. At least, that is what I've learned so far.
Thank you very much in advance :) <comment><USER2> I've started a spreadsheet with some data I've gathered from previous HN threads. Feel free to edit it with reliable data.

[https://docs.google.com/spreadsheets/d/1acN26Wb862Wjcfk3vF2U...](https://docs.google.com/spreadsheets/d/1acN26Wb862Wjcfk3vF2U5R9ovLduxoLF9tiUlZH5CYk/edit?usp=sharing)

</comment><comment><USER3> WolframAlpha will do some of the relocation calculations for you including groceries, health care, etc.

[http://www.wolframalpha.com/input/?i=relocating+from+chicago...](http://www.wolframalpha.com/input/?i=relocating+from+chicago+to+denver+%2450K)

</comment><comment><USER4> For the US, UK and Australia, Gooroo has city level salary stats (based on job ads).

[https://gooroo.io/analytics](https://gooroo.io/analytics)

</comment><comment><USER5> Of course there will be some variance based on the person reporting in terms of the lifestyle they are used to and whether they have dependents to support.

</comment><comment><USER6> Very accurate for relocation calculations:

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

<comment><USER7> It says that Houston, TX is more expensive than Los Angeles, CA. I can attest that's not the case</comment></comment>


Toxic Spills Highlight Trump's Deregulation of Coal Plant Waste - <AUTHOR> https://www.bloomberg.com/news/articles/2018-09-21/toxic-spills-highlight-trump-s-deregulation-of-coal-plant-waste <comment><USER2> "The Obama-era regulation, put in place after several spills including one in North Carolina, _wouldn't_ prevent coal ash from pouring into the river." Title is bogus clickbait.</comment>


Rate my Webapp: Wordness - A Dictionary with Color Tags - <AUTHOR> http://wordness.42symbols.com

<comment><USER2> I didn't really understand the features, but just for looking up definitions it goes a lot faster and less frustrating than the major websites i've used.

<comment><AUTHOR> Thanks. I will work on the feature description. The most notable features are easy saving and selection lookups.

To store a word, you just have to activate one or more of the colored circular buttons. And when you want to lookup a word within another word's definition you can select it and click lookup.</comment></comment>


French Justice Minister Says Snowden and Assange Could Be Offered Asylum - <AUTHOR> https://firstlook.org/theintercept/2015/06/25/french-justice-minister-says-snowden-assange-offered-assylum/

<comment><USER2> Perhaps a trap to give him to the US government later after they reach a "compromise"?

France is far from an anti-spying nation here.

[https://firstlook.org/theintercept/2015/06/24/france- protest...](https://firstlook.org/theintercept/2015/06/24/france-protests-nsa- spying-passes-new-surveillance-law/)

EDIT: Oh, and I almost forgot that it was France that one that stopped the Bolivian president's airplane breaking international law, just because US intelligence told them Snowden might be on board.....so yeah, I have a hard time believing this.

[http://www.bbc.com/news/world-latin- america-23174874](http://www.bbc.com/news/world-latin-america-23174874)

<comment><USER3> Right, and the US Ambassy is no more than 500 meters from the Ministère des Affaires Étrangères...

<comment><USER4> > the US Ambassy is no more than 500 meters from the Ministère des Affaires > Étrangères...

You make it sounds as if this would undermine the credibility of the statement in the article. I don't see how the physical proximity of an embassy to a ministère would even remotely be relevant. But maybe you can explain?</comment></comment></comment>


Notes on Programming in C (1989) - <AUTHOR> http://doc.cat-v.org/bell_labs/pikestyle <comment><USER3> > The reason is that the complexity of the job at hand, if it is due to a > combination of independent details, can be encoded.

This is my favorite sentence. He's hinting at functional programming!

> I tend to err on the side of eliminating comments. [...] A misleading > comment can be very confusing.

I can't even keep track of how many times I've tried to read code and comments I wrote from more than 6 months ago, and thought to myself "this doesn't make sense" or "how can this possibly work?" Or "this is impenetrable, I wish the idiot who wrote this would have used a little self-constraint and tried to simplify rather than show off and make everything complicated."

I'm getting more and more aware every year of how insanely hard it is to write or say things that are both clear and unambiguous. Every time I think I'm being clear and unambiguous, I find out later I was neither by a mile.

> Fancy algorithms are slow when n is small, and n is usually small.

I learned this fairly well working in games, where it's frequently faster to do a linear search or to use a linked list. The really basic stuff I was taught to avoid in school. But even now I have a hard time not using a hash table or tree or something at first, even when I know the data set will probably be small.

<comment><USER4> _> I learned this fairly well working in games, where it's frequently faster to do a linear search or to use a linked list._

To be a bit of a quibbler, a dynamic array is almost always going to be faster than a linked list, especially when N is small, and unless you're writing C (or, for somewhat different reasons, a FP lang) the code will be simpler too.

But of course, with small Ns, outside of the tightest of inner loops or the most resource-constrained embedded targets, most any halfway-reasonable data structure is going to be (and has been for 20+ years) easily fast enough. So it is a bit of a tomato tomahto thing.

<comment><USER3> > To be a bit of a quibbler, a dynamic array is almost always going to be > faster than a linked list

Nope, you're assuming that you're allocating in order to create the list. That's not always the case! :) It's very common in games and embedded systems to have the nodes in memory, pre-allocated, pre-loaded, baked into executable or game data, etc. If space for list pointers is baked in advance, you can use linked lists without the separate allocation costs of a dynamic array or other container class.

Also, a dynamic array can be slower than a linked list because you realloc larger chunks than 1 node. You pay larger costs for larger allocations, and it can also cause more fragmentation in a custom size-pooled allocator.

It's also common to forget that a dynamic array of pointers is two allocations per node (one of them potentially amortized... except for small N). It's a single allocation if you're storing the node struct directly in the array. But that's less common than people creating a dynamic array of pointers.

</comment></comment></comment><comment><USER5> >> Procedure names should reflect what they do; function names should reflect what they return. Functions are used in expressions, often in things like if's, so they need to read appropriately.

This never occured to me, but makes perfect sense, I usually know what I want a function to return, no need to make the name more generic than it needs to be.

</comment><comment><USER6> >> if your code needs a comment to be understood, it would be better to rewrite it so it's easier to understand.

I both agree and disagree with this... C is a small language, and it shouldn't take a huge amount of time to parse the source code to find out what's going on if variables / function names are self-documenting etc.

However, if you're dealing with a large code base and trying to track down where a variable is declared (and subsequently defined) for the purposes of maintenance or updating legacy code, comments hinting the what the structure underneath that label represents are incredibly useful (and more importantly, time and energy saving)

<comment><USER7> I've been burned by bad comments enough times that I implicitly don't trust them. I wish this weren't the case but I think it's just human psychology. I'd rather unravel a mystery myself than deal with an unreliable narrator.

</comment></comment><comment><USER8> Function pointers are interesting in C only because they solve certain problems that you wouldn't have to care about if you used another language. They make the language more expressive, but with great power comes great danger. These days, unless we really have to (supporting legacy systems etc.) we shouldn't use C but rather one of these (still to few IMO) modern languages that give you even more power while being close in efficiency to C.

<comment> apk-d I occasionally see someone older than me refer to C as a high-level language and get really confused for a second. (I'm employed as a JS developer (although most of my expertise is centered around C#).)

<comment><USER9> Back in the 80s, C _was_ a high level language on your typical home computer. I recall in the 90s it was common to argue about the trade offs between writing an application in C vs. Assembly. Today, it's Java (Rust or Go) vs C.

I'm just scared at what's coming down the pike that makes Javascript a "low level language."

<comment><USER10> Espruino

</comment></comment></comment></comment><comment><USER11> Past discussions created a lot of interesting comments, [https://hn.algolia.com/?query=pikestyle&sort=byDate&dateRang...](https://hn.algolia.com/?query=pikestyle&sort=byDate&dateRange=all&type=story&storyText=false&prefix&page=0)

</comment><comment><USER12> > I argue that clear use of function pointers is the heart of object-oriented > programming. Given a set of operations you want to perform on data, and a > set of data types you want to respond to those operations, the easiest way > to put the program together is with a group of function pointers for each > type. This, in a nutshell, defines class and method. The O-O languages give > you more of course - prettier syntax, derived types and so on - <USER2> > conceptually they provide little extra.

I think that this might be an early hint at Go's interface system and its lack of of "complete" OOP support.

<comment><USER13> Well, it's more like the "C with Classes" approach that was the precursor to C++; "group of function pointers for each type" is basically a vtable.

</comment></comment><comment><USER14> this guide/book from inria is pretty good: [http://icube- icps.unistra.fr/img_auth.php/d/db/ModernC.pdf](http://icube- icps.unistra.fr/img_auth.php/d/db/ModernC.pdf)

edit-001: this was previously discussed here as well. ref: [https://news.ycombinator.com/item?id=9018247](https://news.ycombinator.com/item?id=9018247)

<comment><USER15> I just skimmed through this. Page 3 says _Rule 0.1.2.1 C is a compiled programming language._

I never understood the phrase _compiled language_ in the context of C and also in general. C interpreters exist. I happen to have an official copy of the ISO/IEC 9899:1999 standard. The word "compiler" appears only once in a footnote. Other languages have both compilers and interpreters (e.g. Common Lisp, OCaml).

<comment><USER16> I always read that as the default behaviour for the language. C is usually compiled but there are exceptions. Perl (<=5) is almost always interpreted but there are tools to turn Perl code into an executable. I agree it's a somewhat arbitrary distinction given the above but when I first learned any programming at all having it explained this way helped my understanding of how languages can differ from each other.

<comment><USER4> _> Perl (<=5) is almost always interpreted but there are tools to turn Perl code into an executable._

IIRC those tools (of which similar ones exist for Java, Python, Ruby, Node.js, Lua and so on) just package together the sources (precompiled to bytecode) and an instance of the Perl[5] interpreter.

<comment><USER16> I also remember tools that simply converted Perl code to C. The argument against being that the advantages of an executable would be outweighed by the disadvantages of transpiled C being very inefficient.

<comment><USER15> "Transpile" is not a real and meaningful word. Can we stop using it please? Btw, if you have relevant citations stating otherwise (Wikipedia isn't it), I am happy to be proven wrong. Thanks!

</comment></comment></comment></comment></comment></comment><comment><USER17> Good to see cat-v getting some coverage again. The archive they keep is fantastic.</comment>


How and why I made a zine - <AUTHOR> http://jvns.ca/blog/2016/08/29/how-i-made-a-zine/ <comment><USER2> Zines by techies have a long history! Tom Jennings [1], who founded FidoNet [2] and The Little Garden ISP, published one of the first Queercore anarcho- punk zines called Homocore [3]. He's written a retrospective and published an archive of his Homocore memory [4] of San Francisco during 1988-1991.

[1] [https://en.wikipedia.org/wiki/Tom_Jennings](https://en.wikipedia.org/wiki/Tom_Jennings)

[2] [https://en.wikipedia.org/wiki/FidoNet](https://en.wikipedia.org/wiki/FidoNet)

[3] [https://en.wikipedia.org/wiki/Homocore_(zine)](https://en.wikipedia.org/wiki/Homocore_\(zine\))

[4] [http://worldpowersystems.com/HOMOCORE/](http://worldpowersystems.com/HOMOCORE/)

<comment><USER3> Phrack is my favorite example of a tech zine! It's a classic.

[http://www.phrack.org/](http://www.phrack.org/)

</comment></comment><comment><USER4> I imagine a lot of technical people are or could be into zines: they mix DIY and maker zeal with principles of distributed information sharing. They're the OG artisanal local blogs ;-p

You can make little zine booklets -- which I find especially satisfying -- from a single sheet of computer paper using the following instructions: [http://staycalmcomic.com/how-to-zine](http://staycalmcomic.com/how-to-zine)

<comment><USER5> I like the way you phrased, "They're the OG artisanal local blogs," and I think of them the same way.

When I was in junior high and high school one of my best friends and I started producing a 'zine in Cleveland around the punk and hardcore music scenes. We interviewed bands, made crazy art work, she wrote some poetry, and it was a very fun, very satisfying collaboration. We used a mac at the time to do all of our layout and then went to Kinkos to assemble it.

Because of the relationships we developed we started producing concerts for the bands we liked. Basically, we were able to corral enough people to pay for a show we wanted to see by bands that weren't otherwise coming to Cleveland.

</comment></comment><comment><USER6> Julia Evans' zines are the most entertaining way to learn about linux/unix internals I've encountered yet :)

<comment><USER7> She brings back the child-like wonder and joy of early "tuts" of hackerdom. The old "asciiz" were tutorials written by people who both _enjoyed_ programming, and found it mischievous.

</comment></comment><comment><USER8> the zine [http://jvns.ca/strace-zine-unfolded.pdf](http://jvns.ca/strace-zine- unfolded.pdf)

</comment><comment><USER9> _" Girls to the Front: The True Story of the Riot Grrrl Revolution Paperback about riot grrl and people making feminist zines and starting punk bands,"_

Kathleen Hanna had a big hand in this movement [0] and if you want to see/listen then watch _" The Punk Singer"_ ~ [http://www.youtube.com/watch?v=zMbLzaVkn2s](http://www.youtube.com/watch?v=zMbLzaVkn2s)

[0] [https://en.wikipedia.org/wiki/Kathleen_Hanna](https://en.wikipedia.org/wiki/Kathleen_Hanna)

</comment><comment><USER10> I was once at a tech-presentation where the presenter drew/wrote everything freehand like this on a tablet, almost similar to how one would use a blackboard. I really liked the way she presented compared to a static slide- deck, as she could adjust/add examples based on questions and feedback from the crowd.

</comment><comment><USER11> From time to time I want to make a zine, but the distribution it is a problem. Startup idea time: I upload my PDF, the lists of address, and you print them and distributed them.

<comment><USER12> Many print shops can do this sort of thing for you.

</comment></comment><comment><USER13> Reminds me of my wonder pouring through Factsheet Five, a zine catalog ([https://en.wikipedia.org/wiki/Factsheet_Five](https://en.wikipedia.org/wiki/Factsheet_Five) and [http://zinewiki.com/Factsheet_Five](http://zinewiki.com/Factsheet_Five))

</comment><comment><USER14>
      # imagemagick is the best thing in the world

Unfortunately, the number of vulnerabilities in ImageMagick has earned it another name, ImageTragick.

[https://imagetragick.com/](https://imagetragick.com/)

[https://github.com/ImageTragick/PoCs](https://github.com/ImageTragick/PoCs)

<comment> semi-extrinsic TBH, I can't really blame ImageMagick devs too much for this. They're not making an image editing suite for web-facing services with access to sensitive user data. They're making an image editing suite for the Linux command line, which web devs happen to use on user-submitted images with absolutely no sanitization. The latter part of the sentence is the problem.

Adding to that, ImageMagick had it's first release in 1990! That's half a decade before the first release of Apache. It's no surprise some of the code in ImageMagick make it unfit for unfiltered use in web apps, when it was written before graphics-capable webservers, even graphics-capable browsers, were a thing.

What we really need is for someone to write a security-focused universal wrapper, that plugs straight into existing frameworks, so everyone can get the benefit of best-practices, and can report vulns and get them secured quickly.

So really, blaming ImageMagick is not that far from blaming Python for having vulnerabilities if you run a Django app taking unsanitized form input and doing _subprocess.Popen()_ with it.

(That's not to say the "imagetragick" folks are wrong for alerting the community, using that moniker to increase awareness.)

<comment><USER15> > TBH, I can't really blame ImageMagick devs too much for this. They're not > making an image editing suite for web-facing services with access to > sensitive user data. They're making an image editing suite for the Linux > command line

On the other hand, CLI image display and edition doesn't mean it'll only face trusted content, it's not rare to download a file and display it or further manipulate it.</comment></comment></comment>


UML diagram anyone? - <AUTHOR>

I was thinking something like sequence diagram can help developers understand async flows with ease. However, in open-sourced projects (esp on github) I almost never saw any UML diagrams, any thoughts? <comment><USER2> The effort to make a uml diagram is so much greater than psueodocode, I've never once used on in real life. State diagrams, sure!</comment>


Oct 31,2019: the last day Blade Runner can be referred to as movie set in future - <AUTHOR> https://www.vox.com/culture/2017/10/2/16375126/blade-runner-future-city-ridley-scott<p>How does that make you feel? <comment><USER2> No flying cars, ... Robotics is still relatively primitive.

Amazon Alexa, Google Assistant, and Siri are our most intelligent interfaces. I'm not sure how the singularity can be 25 years away. The original Blade Runner is probably at least 100 years off.

<comment><AUTHOR> I couldn't help but smile at the number of times I saw ATARI on the Blade Runner streets..

</comment></comment><comment><AUTHOR> [https://youtu.be/d9aPde_MZQc](https://youtu.be/d9aPde_MZQc) : World Building by Ridley Scott in Blader Runner .. 'Los Angeles. November 2019'.

Are we there yet?

[https://youtu.be/ZPluJUQGHrg](https://youtu.be/ZPluJUQGHrg) : production/the set/designing the future

</comment><comment><USER3> Clickable link: [https://www.vox.com/culture/2017/10/2/16375126/blade- runner-...](https://www.vox.com/culture/2017/10/2/16375126/blade-runner- future-city-ridley-scott)

</comment><comment><USER4> That it's not a great reading of sci-fi to say it's 'set in the future'

Do android's dream of electric sheep is a novel set in its time, exploring social issues of its time, using a fictitious universe to help explore without so much irl baggage.

<comment><AUTHOR> [http://screenprism.com/insights/article/what-are-the- differe...](http://screenprism.com/insights/article/what-are-the-differences- between-blade-runner-and-do-androids-dream-of-elec)

[..] the movie takes place in a crowded Los Angeles whereas the novel is set in a nearly abandoned San Francisco.

So why is The City by the Bay deserted? Well, Do Androids Dream of Electric Sheep? is set after World War Terminus (WWT), a deadly conflict that's destroyed the Earth with its radioactive fallout. Most of the planet's animals have gone extinct, and a large amount of the human population is suffering from physical and mental defects. These unfortunates are nicknamed "chicken heads," and the novel introduces us to one of these handicapped humans, an ambulance driver named J.R. Isidore. Fans of the film can probably guess that Isidore is the inspiration for J.R. Sebastian. Of course, while Isidore is mentally challenged, Sebastian is an inventor-genius suffering from Methuselah Syndrome.

Thanks to the radiation, most of the healthy humans have immigrated to off- world colonies where they're paired with robotic servants (andies). Of course, there are a few "normal" people who've elected to stay on Earth, such as Deckard. The remaining humans are obsessed with animals, and since most creatures were wiped out thanks to WWT, live pets have become a major status symbol. [...]

It's a good write up. It goes on to compare PKD's andies and Ridley Scott's replicants.

</comment></comment><comment><USER5> You should try posting this as a link directly</comment>


Ask HN: What do you look for in freelancers? - <AUTHOR>

I'm building a side-project website that will be a database of freelancers people can consult when they're looking to hire freelancers or outsource part of a project. Kind of like LinkedIn but without all the bloating. I'd like to know what you, entrepreneurs and/or freelancers, what you look for in the people you outsource to or hire temporarily.
Obviously, you'll ask the freelancer to know the language your platform or application has to be programmed in. Are related skills (HTML for PHP developers for example) a necessity? What about availability? Hourly rate? Past realizations? Experience?
Let me know, and thank you for your time. <comment><USER2> Quantifiable experience related to what I am hiring them for. Merely knowing the language of the platform or application is not enough. They need to have a fundamental understanding of what I am trying to accomplish and/or have the aptitude to take it further than I anticipated.

I typically put a ton of thought and and research into projects that I want to have done and usually go to great lengths in writing it out. I expect the same in return.</comment>


British strategy in a certain eventuality (1940) [pdf] - <AUTHOR> http://filestore.nationalarchives.gov.uk/pdfs/small/cab-66-7-wp-40-168-48.pdf <comment><USER2> Never mind the fascinating subject matter and insight into early war thinking in government, this is a great example of how to write a broad report. It's brilliantly structured and written with real clarity.

</comment><comment><AUTHOR> Great language: "MOST SECRET" and "TO BE KEPT UNDER LOCK AND KEY" and "It is requested that special care may be taken to ensure the secrecy of this document."

</comment><comment><USER3> Overall the British outlook in the early days of the war was quite pessimistic. They relied heavily on USA for success.

<comment><USER4> Upon learning of Pearl Harbor, even before FDR's address to Congress, Churchill realized that:

"So, we had won after all! …We had won the war. England would live; Britain would live; the Commonwealth of Nations and the Empire would live. How long the war would last or in what fashion it would end no man could tell, nor did I at this moment care. . . . We should not be wiped out. Our history would not come to an end. We might not even have to die as individuals. Hitler's fate was sealed. Mussolini's fate was sealed. As for the Japanese, they would be ground to powder. All the rest was merely the proper application of overwhelming force."

<comment><USER5> "the Commonwealth of Nations and the Empire would live"

...that belies the overall sense of prescience you might get from the quote.</comment></comment></comment>


Mejorando.la - <AUTHOR> https://mejorando.la/

<comment><USER2> [¡Hola desde Argentina!]

This is an English speaking forum, so your submission will probably be killed or ignored. There were some successful submission in other languages (including Spanish) but they had unique information that has no equivalent or similar in English.

I think that you should try to submit some information about your experience in an English post.

Another possibility is a press coverage. I read the Techcrunch article, but I think it cover a lot of Colombian strtups. Is there an article only about yours?</comment>