Twelve Go Best Practices - <AUTHOR> http://talks.golang.org/2013/bestpractices.slide#1 <comment><USER2>
        if err == nil {
            _, err := w.Write([]byte(g.Name))
            if err == nil {
                err := binary.Write(w, binary.LittleEndian, g.Age)
                if err == nil {
                    return binary.Write(w, binary.LittleEndian, g.FurColor)
                }
                return err
            }
            return err
        }

Why does anyone have to tell people not to do this? How does it enter anyone's mind as a thing to do in the first place? I've been known to go _too far_ to minimize nesting. I get twitchy at the second level. By the third my brain is trying to crawl out my eyes and strangle me, even on code that doesn't have a potential exit point at every level.

<comment><USER3> Short circuit returns are the devil - they make it much harder to factor out part of a function into a smaller function. A function should have one entry point and one exit point; that's the _whole point_ of structured programming. If you're going to return from some random point in the middle of your function you might as well be using goto.

(Of course, good programming languages provide a better solution than pyramid- of-doom nesting)

<comment><USER2> > _Short circuit returns are the devil_

vi!

Naïve, absolutist positions in areas of long-standing debate between programmers of great experience and the highest imaginable competence just makes you look ridiculous.

<comment><USER4> Naive, absolutist positions in areas of long-standing _consensus_ between programmers of great experience and the highest imaginable competence makes one look even more ridiculous.

By and large, the best programmers eschew nesting in favor of early returns. Invariably (in my experience) those who argue against early returns are inferior programmers (and not only by virtue of lacking taste in this particular debate).

<comment><USER5> Where did you get that idea of consensus? A lot of languages do not even have a return statement, neither does lambda calculus. Furthermore, CS community has long abandoned statement based languages in favor of expressions and relations which do not feature "return" for onvious reasons in forms other than equalent to jump.

<comment><USER4> I'm talking about programmers, not computer scientists. That is, people who actually accomplish things in the real world by hacking on software, rather than pontificating about it from their monadic ivory towers :) The latter have "abandoned statement-based languages," but the former _absolutely have not_.

<comment><USER5> I don't see that distinction. The are languages designed to map directly to register machines internal operation, like C or C++ or fortran and those are statement based because that's how the machine works. There are also high level languages, designed to express computation, and those are expression based, again, beacause computation is inherently based on expessions. There are other kinds of languages as well, for other purposes (relations, queries, etc).

Do you really belive that only people working on low level register transfer level things "accomplish things"? That's souds like a very old assembler argument.:-)

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Odd choice of examples...

1\. The file I/O makes the case for including exceptions in the language. Specifically, adding one-off types to deal with exceptions is a bug, not a feature. There is a good case against exceptions but that ain't it.

2\. On slide 5, it appears to show that you have to use a switch statement on a generic to get polymorphism because the language doesn't support overloading. Again, looks more like a bug than a feature.

Also, is the "break;" implicit in Go? At first glance, it looks like a coding error.

<comment><USER7> W/r/t #2 - you're not familiar with Go but knew exactly what was going on. That's totally a feature. The language was designed around exactly that kind of reading.

"break;" is implicit in Go.

<comment><USER6> Sure, I spend a decade in C. It's not hard to read.

My only problem with using generics in this context is that you can't catch type-conversion errors at compile time.

Seems like a step backwards with only downside. I get why exceptions are a double-edge sword. I'm not clear on why undermining compile time type safety is an feature.

<comment><USER8> > I'm not clear on why undermining compile time type safety is an feature.

I think this is what people will ultimately focus on when considering Go. Many of the complaints are a product of type weaknesses in the language, voiced by people who had assumed that a modern static language wouldn't have that fault. Others tend not to mind because they lack that expectation, and regard the dynamic behaviour you can get as a feature. The argument about shared mutable state goes the same way, but for some concurrent but non-parallel code it might be convenient.

I can easily see people picking Go when moving from Python. But not when moving from a static language with a stronger, safer type system.

Also, as burntsushi points out, it does require more sophistication in the type system. I doubt they're trying to sell a naively simplistic type system (sophistication often makes it easier to use), but when Go was announced the feature they seemed to be selling the hardest was short compilation times. I think that feature is the seed of this behaviour.

</comment></comment></comment></comment><comment><USER9> Interesting that this snippet:

      func (g *Gopher) DumpBinary(w io.Writer) error {
        err := binary.Write(w, binary.LittleEndian, int32(len(g.Name)))
        if err != nil {
            return err
        }
        _, err = w.Write([]byte(g.Name))
        if err != nil {
            return err
        }
        err = binary.Write(w, binary.LittleEndian, g.Age)
        if err != nil {
            return err
        }
        return binary.Write(w, binary.LittleEndian, g.FurColor)
      }

could be written like this:

      func (g *Gopher) DumpBinary(w io.Writer) {
        binary.Write(w, binary.LittleEndian, int32(len(g.Name)))
        w.Write([]byte(g.Name))
        binary.Write(w, binary.LittleEndian, g.Age)
        binary.Write(w, binary.LittleEndian, g.FurColor)
      }

if the language supported exceptions.

<comment><USER10> If the language supported exceptions, how would you write this func?

      func (g *Gopher) DumpBinary(w io.Writer) {
        // Ignore all errors
        _ = binary.Write(w, binary.LittleEndian, int32(len(g.Name)))
        _, _ = w.Write([]byte(g.Name))
        _ = binary.Write(w, binary.LittleEndian, g.Age)
        _ = binary.Write(w, binary.LittleEndian, g.FurColor)
      }

<comment><USER11> The language supports exceptions (panics). You could do something like (this is untested code):

      func panicBinaryWrite(w io.Writer, b binary.ByteOrder, data interface{}) {
        if err := binary.Write(w, b, data); err != nil {
          panic("Error in binary.Write")
        }
        return
      }

      func panicWrite(w io.Writer, data interface{}) {
        if _,err := w.Write(binary.LittleEndian,data); err != nil {
          panic("Error in io.Writer#Write")
        }
        return
      }

      func ignoreErrors(f func()) {
        defer func() {
          _ = recover()
        }()
        f()
        return
      }

      func (g *Gopher) DumpBinary(w io.Writer) {
        // Ignore all errors
        ignoreErrors(panicBinaryWrite(w, binary.LittleEndian, int32(len(g.Name))))
        ignoreErrors(panicWrite([]byte(g.Name)))
        ignoreErrors(panicBinaryWrite(w, binary.LittleEndian, g.Age))
        ignoreErrors(binary.Write(w, binary.LittleEndian, g.FurColor))
      }

</comment></comment></comment><comment><USER12> Something that doesn't sit right with me is the use of a "channel of bool" when the receiving goroutine doesn't actually care whether true or false is sent. It muddies the API to force the sender to choose one of two values when all that's really wanted is an amorphous signal.

e.g. in [http://talks.golang.org/2013/bestpractices.slide#25](http://talks.golang.org/2013/bestpractices.slide#25) , the first case in the select will trip regardless of which value arrives, yet the sender was still made to choose one.

<comment><USER10>
      A channel may be closed with the built-in function close; the multi-valued
      assignment form of the receive operator tests whether a channel has been closed. [1]

Given that is available, why is the use of a separate bool quit channel preferred?

[1] [http://golang.org/ref/spec#Channel_types](http://golang.org/ref/spec#Channel_types)

<comment><USER12> In the link, the quit is acknowledged, so one side closing the channel straight off the bat wouldn't allow for that.

</comment></comment></comment><comment><USER13> The type cast as part of the switch is really cool, I hadn't seen that before.

        switch v := v.(type) {
        case string:
            w.Write(int32(len(v)))
            w.Write([]byte(v))
        default:
            w.err = binary.Write(w.w, binary.LittleEndian, v)
        }

Great way to alter control flow based on the type, without a ton of ugly casts cluttering things up.

<comment><USER14> Of all the code in there this part confused me. What exactly is being switched on? It looks like v is being reassigned to the type of v, then the type of v is written out (instead of the value).

<comment><USER15> "type" is a magic word in Go, and in that example. It's highly idiomatic -- it's inconsistent with the rest of the language (Using "type" instead of an actual type), but it makes sense once you memorize the idiom. Sort of perlish -- there are two different operations that look basically the same, and the correct one is chosen based on context (in this case, the context is "is there a type name, or "type" literally?)

Perhaps it would have been cleaner to use "*" or some other operator symbol instead of the reserved word "type"

<comment><USER11> > "type" is a magic word in Go, and in that example.

Specifically, type switches are a specific syntax construct that look very similar to normal switches, but switched on something that _looks like_ a type assertion with "type" in place of an actual type.

</comment></comment></comment></comment><comment><USER16> Meta comment: does anyone know what software is used to generate these slides? I've seen a few slide decks in the same format and they're impossible to use on mobile. I'd like to fix that

<comment><USER17> Hi,

I created these slides using code.google.com/p/go.talks You can actually find the source code and the slides in it.

<comment><USER16> Thanks for the link. I'll take a look and see if I can make it work better on mobile.

</comment></comment></comment><comment><USER18> "Deploy one-off utility types for simpler code" can be called a monad or Optional. I wonder if the language developers will add more formal support for that; it looks impossible to add Optional as a library due to lack of user- configurable generics.

<comment><USER15> I'm sort of hoping someone forks Go to provide at least a few single-depth generics like Optional/Maybe, to match Map and Slice.

<comment><USER19> If it had been done at the very beginning, I think it would have been wonderful...but given that legal, idiomatic nil is already out in the wild I think it's too late. Such a shame - in the example of error handling, returning an Option doesn't appreciably increase verbosity:

        _, err := potentiallyErroringOperation()

        // with idiomatic nil
        if err != nil {...}

        // with monadic Option
        if err.isDefined() {....}

EDIT: fix typo

</comment></comment></comment><comment><USER20> Didn't read, because mouse scroll wheel doesn't work.

Honestly, who thinks this stuff is a good idea?

<comment><USER11> > Didn't read, because mouse scroll wheel doesn't work.

You don't need the scroll wheel to navigate the presentation. Click on the right side of the slide to go forward, on the left side to go back.

> Honestly, who thinks this stuff is a good idea?

People who are making presentations to deliver in an in-person setting where putting them on the web for everyone is a secondary use, not the primary use? I mean, looking at that, it would be a _lot_ better as the visual component of an in-person presentation than it is on its own (though its not without value on its own.)

<comment><USER21> Also, you can use the arrow keys to go back and forth through the slides.

<comment><USER22> Yes all those options work. But why remove a common method of navigation? In addition, the format makes it impossible to search for text within the presentation.

<comment><USER23> Because it wasn't 'removed', rather it wasn't 'created'. You seem to be missing that supporting this feature is extra work and not 'built in' to the way the project is constructed. The author didn't sit there and say, well, fuck the wheel, I'll just throw in a line of code here to disable it, just to piss people off.

</comment></comment></comment></comment></comment><comment><USER24> Thirteen: don't try to sort, it's going to be painful if you do.

[http://golang.org/pkg/sort/](http://golang.org/pkg/sort/) (See example 1 -- you have to write that for every concrete slice type you want to sort; it's not enough to write it once. And god help you if you also want to sort other collection types.)

<comment><USER15> Project Lombok for Go would be relative easy, and so nice.

<comment><USER24> Wow, that's magnificent, although I don't think Go's reflection capabilities are quite sufficient to fix this particular language bug with decorators. But maybe my imagination just isn't sufficient.

</comment></comment></comment><comment><USER25> He starts dropping errors in "Type switch to handle special cases"

</comment><comment><USER26> Slide deck is good idea - but does not work with swipe on OS/X - a clue to click on the right side would be nice.

<comment><USER27> The interface is quite bad. I was able to scroll right to see a total of three slides, with no indication that there were any others. I thought that was the end!

I tried hitting space, and another slide scrolled in! But I wasn't done reading, so I hit shift-space, which is the common idiom to reverse the direction of space. But it scrolled in the same direction. Now I'm two slides behind. After some more thrashing, I found that I could use the arrow keys to navigate. Delete also goes back.

Please don't make me use trial and error to figure out your UIs, Google!

</comment></comment><comment> workhere-io UI best practice: Avoid horizontal scrolling.

</comment><comment><USER28> Holy shit that function adapters example is convoluted. I'd say fewer than 5% of my programmer coworkers would figure out what's going on.

        func init() {
            http.HandleFunc("/", errorHandler(betterHandler))
        }

        func errorHandler(f func(http.ResponseWriter, *http.Request) error) http.HandlerFunc {
            return func(w http.ResponseWriter, r *http.Request) {
                err := f(w, r)
                if err != nil {
                    http.Error(w, err.Error(), http.StatusInternalServerError)
                    log.Printf("handling %q: %v", r.RequestURI, err)
                }
            }
        }

        func betterHandler(w http.ResponseWriter, r *http.Request) error {
            if err := doThis(); err != nil {
                return fmt.Errorf("doing this: %v", err)
            }

            if err := doThat(); err != nil {
                return fmt.Errorf("doing that: %v", err)
            }
            return nil
        }

<comment><USER29> Less than 5% of your coworkers understand decorators? I don't want to sound snooty but this is a pretty trivial application of higher order functions.

<comment><USER30> I have to agree; it's basic stuff even for a Python weenie like me.

<comment><USER31> It's basic stuff _because_ you're a Python weenie; I don't see much use or discussion of decorators outside the Python world.

<comment><USER11> Decorators are a special Python syntax for this use, the more general term for what is going on is "higher-order functions".

Which are pretty important, and not specific to python.

<comment><USER31> yes, of course, but the discussion I replied to was talking about this specific idiom, this application of higher order functions, and not about the use of higher order functions generally.

</comment></comment></comment></comment></comment></comment><comment><USER32> If #6 is among best practices, I'm sad. I could take a dynamically-typed language instead.

[http://talks.golang.org/2013/bestpractices.slide#6](http://talks.golang.org/2013/bestpractices.slide#6)

<comment><USER33> They allow dynamically typed methods when you need them. Why does that make you sad?

<comment><USER32> Loss of strong typing and runtime type detection is what makes me sad.

Well, Go 1 has some of the problems of Java 1: no generics, typecasts from interface{} here and there, simplistic GC. Reasons are probably similar: this all is good enough for version 1, and can later be improved upon.

<comment><USER34> "Well, Go 1 has some of the problems of Java 1: no generics, typecasts from interface{} here and there, simplistic GC. Reasons are probably similar: this all is good enough for version 1, and can later be improved upon."

Except I doubt we're going to see generics in Go version 2, whenever that may be. The sentiment against it has been pretty strong in the golang-nuts mailing list.</comment></comment></comment></comment>


Patreon, Mozilla, Pinterest and more team up to stamp out hate online - <AUTHOR> https://reclaimthenet.org/charles-koch-and-george-soros-team-up-with-patreon-mozilla-pinterest-hate-speech/ <comment><USER2> Let me guess, more censorship?</comment>


Patient in New York City Tests Positive for Ebola - <AUTHOR> http://mobile.nytimes.com/2014/10/24/nyregion/craig-spencer-is-tested-for-ebola-virus-at-bellevue-hospital-in-new-york-city.html

<comment><USER2> [https://news.ycombinator.com/item?id=8501530](https://news.ycombinator.com/item?id=8501530)</comment>


Tips for the First-Time Business Owner - <AUTHOR> http://www.entrepreneur.com/startingabusiness/youngentrepreneurscolumnistscottgerber/article203254.html

<comment><USER2> You know what would be awesome? A list of tips for first-time business owners like, "don't spend too much on lawyers for incorporation", or "don't get ripped off on office space", or "know what kind of conversion rates to expect with different forms of outbound promo marketing".

You know what isn't very awesome? The list that contains "know what you know" and "focus!" and "stay healthy".

Why can't patio11 write one of these? It's bound to be better than this article.

<comment><USER3> +1 for "You know what isn't very awesome? The list that contains "know what you know" and "focus!" and "stay healthy"."</comment></comment>


I'm going to donate 1% of my paycheck to open source projects for the next year - <AUTHOR> https://1percent.dev <comment><AUTHOR> I would truly love more folks to do this too. I've seen many people talk of it, suggest similar ideas and never take action.

Together, we can make a difference.</comment>


The Rise of the Professional Blogger - <AUTHOR> http://www.theatlantic.com/doc/200909u/professional-bloggers <comment><USER2> Well, yes and no. Professional bloggers still get vastly more press than they do money, as I discuss in some detail here: [http://blog.seliger.com/2009/06/17/youre-not-going-to-be- a-p...](http://blog.seliger.com/2009/06/17/youre-not-going-to-be-a-pro/) in relationship to a WSJ article not dissimilar from the one in The Atlantic. Furthermore, notice that, as The Atlantic says, only 21 of 50 of the top blogs belong to corporations. In a glass-half-full way, it's fairly impressive that so many blogs _aren't_ corporate.

Anyway, the thoughts on the "rise of the professional blogger" have been around in different language since at least the late 1990s, as Scott Rosenberg's book _Say Everything_ observes; I wrote more about the book here: [http://jseliger.com/2009/09/20/say-everything-how- blogging-b...](http://jseliger.com/2009/09/20/say-everything-how-blogging- began-what-its-becoming-and-why-it-matters-%e2%80%94-scott-rosenberg) .

</comment><comment><USER3> It's still very, very possible to earn a living from blogging, but it takes more creativity than just slapping some bland, unfocused articles up on a wordpress installation.</comment>


No, really, pi is wrong: The Tau Manifesto - <AUTHOR> https://tauday.com/tau-manifesto <comment><USER2> I thought about treating 2π as τ. In principle mental typography does not need new symbols, just a switch in perspective and alter simplifying rules.

Just stop simplifying things like 2π/2 or or multiply by 2/2 if it makes more sense. But then you have slightly awkward formulas like (3×2π)/4 where you have to use multiplication sign.

<comment><USER3> The expression 3(2π)/4 isn't so bad.</comment></comment>


Ask HN: Are there any decent-paying jobs in robotics? - <AUTHOR>

Hi all!
(Using a throwaway account here) I am a software engineer, working in a factory. My job is to write software that control the assembly-line tooling robots.
The problem is that, I am horribly underpaid. I make about $15,000, which is low even by our third-world standard. I have had a lot of trouble finding jobs here as well.
My question is: are there any good, well-paid jobs in the robotics market out there, or should I consider transitioning to another field, like web development? <comment><USER2> Beating $15k is certainly possible. If it's hard in your area, there's probably work that can be done remotely paying 10x. The catch is that you'd have to build up the reputation and the network of satisfied clients needed.

I know a few very experienced engineers doing work in robotics. There's a fairly high variance in salary. Of those, the one I'm fairly certain clears >$200k does so largely through things like consulting and appearing as an expert in patent disputes. His day job is maybe half that.

You can make lots of money and do what you love, but sometimes the thing that pays the bills and the thing you enjoy aren't the same. You'll get better results if you work out an optimal solution for yourself, versus being wholly dependent on an employer to give you a single monolithic package - but it will also take much more effort, and likely many failures.

Lots of the ones doing work in industry are in areas like calibration and maintenance, vs. design and research. Part of the issue here is working out the specifics of what "decent paying" and "in robotics" mean to you.

</comment><comment><USER3> There are well paid jobs in the U.S. robotics market. However, most of them require a U.S. citizenship and security clearance (defense grants.).

</comment><comment><USER4> if(abs(exp) < 0)) {..}

edit: c++ code.</comment>


Ad targeters are pulling data from your browser's password manager - <AUTHOR> https://www.theverge.com/2017/12/30/16829804/browser-password-manager-adthink-princeton-research <comment><USER2> [https://news.ycombinator.com/item?id=16017969](https://news.ycombinator.com/item?id=16017969)</comment>


Henry Heinz used ketchup to improve food safety - <AUTHOR> https://www.nationalgeographic.com/magazine/2019/02/how-henry-heinz-used-ketchup-to-improve-food-safety/ <comment><USER2> There are a number of possible origins for the name, not just the Chinese one:

[https://en.wikipedia.org/wiki/Ketchup#Etymology](https://en.wikipedia.org/wiki/Ketchup#Etymology)

This article is a nice study in regulatory capture.

</comment><comment><USER3> [http://archive.md/51kkA](http://archive.md/51kkA)

</comment><comment><USER4> We think we invented startups and startup mentality but you can read about how someone like Heinz hustled and did things others didn't; preservative free ketchup, clear pickled goods. Sounds trivial to us today but in context these ideas were pretty revolutionary.

</comment><comment><USER5> Good example of how good regulation is good for capitalism.

<comment><USER6> "Protections" is a more concrete word indicating benefit rather than derisive "regulations," which implies costs, burdens and barriers without a clear benefit. Paraphrasing an idiom from potentially-dangerous industries: _Safety protection rules and laws are almost always written in blood._

<comment><USER7> No, that is only the case if you start from a particular viewpoint that is popular among right-wing Americans and almost no one else. From the perspective of first-world countries regulations are rules that we apply to processes where the dangers and externalities are diffuse enough that one or more parties may seek to ignore them for short-term gain; protection is the consequent of regulation, they are not simply synonyms.

</comment></comment></comment><comment><USER8> Even with the Web link, all I get is a "subscriber exclusive" splash page.

</comment><comment><USER9> Is this a "submarine piece"?

It reads less like a documentary and more like a biography

[http://www.paulgraham.com/submarine.html](http://www.paulgraham.com/submarine.html)

<comment><USER10> I don't think so. The article _openly_ says it's adapted from the book. It's just marketing. Submarines were hidden.

This was in the article:

"ESSAY DRAWN FROM THE POISON SQUAD BY DEBORAH BLUM, PUBLISHED BY PENGUIN PRESS, AN IMPRINT OF PENGUIN PUBLISHING GROUP, A DIVISION OF PENGUIN RANDOM HOUSE, LLC. COPYRIGHT © 2018 BY DEBORAH BLUM."

</comment></comment><comment><USER11> I find it disturbing how long ketchup lasts.

It's not natural.

<comment><USER12> It kind of is natural: tomatoes, vinegar, and salt all have anti-microbial properties. The rest of the ingredients are sugars and flavors. No preservatives needed, in this product at least (Heinz).

[https://edrugsearch.com/wp-content/uploads/2017/05/heinz- ket...](https://edrugsearch.com/wp-content/uploads/2017/05/heinz-ketchup- ingredient-label.png)

<comment><USER13> sugar also has anti-microbial properties

<comment><USER14> At high enough concentrations. But that's true of anything.

Having a lot of salt or sugar (or any small molecule really) in something makes it impossible for cells to retain enough water to function.

Which is why your sauce/jam doesn't go bad (except at the top, where a layer of condensed water doesn't have the high concentration of sugar or salt).</comment></comment></comment></comment>


Fat is the new Lean - <AUTHOR> http://datodaily.tumblr.com/post/41220202880/fat-is-the-new-lean

<comment><USER2> My stock comment on the subject originally posted on <http://news.ycombinator.com/item?id=3429906>

1) MVP != half assed, cheap, shitty product. It is exactly what it says: a minimum viable product, key word being viable. An MVP for a mission critical application or a cutting edge piece of research isn't going to be cheap or easy, because it needs to be viable.

2) The cycle of expectations that your product needs to be as feature rich as your competition on day one leads to what Eric Ries calls the large batch death spiral where it always seems like a good idea to add that one last feature (I've been there, it's painful, and really difficult to pull out of).

3) RE: fear of ruining your reputation if your MVP isn't shiny enough-- good news: no one knows who you are when you launch, so you have nothing to lose. Don't launch your MVP in the press, court early adopters, listen to your customers, and focus on building value until your product kicks the competition's ass. If you hide from customers out of fear you take the biggest risk of all: building something no one wants. Even if you have the best product idea in the world, the only way to know if the features you add are having a positive impact is to measure the behavior of real, live, human users.

Unfortunately I think what we're seeing is the lean startup backlash where people use the terms but don't really take the time to understand what they mean. The Lean startup movement is a powerful set of lessons that can empower entrepreneurs and save us from wasting our time and effort building the wrong things and chasing the wrong metrics, but maybe some of the lessons just have to be learned painfully through experience.

<comment><AUTHOR> Very helpful - Like that first article as well, thank you. I wasn't attempting to bash the lean movement, though I have found it more difficult to implement with my own startup than I'd thought (emotions / fears find their way into the equation, spurring the batch death spiral). I just wanted to point out that there were other factors that will drive success now that the "secret" is out. Thanks again, and hopefully I can minimize the lessons I learn painfully.

</comment></comment><comment><USER3> Brian, I can't quite seem to grasp what you're really trying to say here. It sounds (to me) as if you're trying to justify the ubiquitous position of entrepreneurs and would-be entrepreneurs that 'I need to spend a lot of time planning and building before I launch'. I get it...it's scary as hell to launch something that is half-baked and may not feel like your proudest moment.

Some constructive criticism - I, nor you, can comment on your user experience, because you and I are NOT the user. I'd love to hear more about "Sheri Foxton, who can't get enough of the app" (made-up name and story). Comments like _"Our beta product looks and acts amazing"_ and _"two of the most talented UX/Marketing guys in the city"_ make lean advocates like myself cringe. Lean is about getting close to your customer, and at no point do you ever talk about how you're actually hitting the streets. Your Appstori video is cool, and is exactly what "lean" is about - asking potential customers if this is something they want/need. However, there are two things that I just couldn't get past: (1) Your video talked about YOU (Find Your Lobster company) way more than it did ME (the person who wants to find a date). (2) I'm not sure if your UX buddies explained the psychology of user experience (the UI looks great btw!) but basically UX solves one problem - user frustration. If you have no frustration to begin with, than UX means nothing. MVP's are all about creating an app (which will inevitably include some frustration) and then adding features and interfaces which reduce that frustration.

Anyway, good luck!

<comment><AUTHOR> Thanks! Very helpful. I've kept the user experience descriptions a bit vague as all of our user feedback has been from "lean" products - basically me emailing people with match suggestions with screen shots of shared mutual friends, then asking if they'd be interested in these people. We've had favorable response to that, but until the app is in our users hands I don't want to jump the gun. It's not yet - the stuff we can play around with works "amazing," but a full experience is not yet built so our users don't have it yet. I definitely could've been more specific, though.

On the video - great point. Wish we'd thought of that a bit earlier... The hope was to prove that we were legitimate. Gaining users for a dating site is not an easy proposition, and we should've focused more on what we can do for users than why we are viable.

Thanks again.

<comment><USER3> > _Gaining users for a dating site is not an easy proposition_

But finding the market is! You've got a great market to tap into. "Off to the races" as they say...

</comment></comment></comment><comment><USER4> "My app can't afford to look like an MVP when we launch."

The V is for viable. The app he is describing is not viable.

</comment><comment><USER5> I find parallels with the irreducible complexity intelligent design argument. Lean startups are oriented toward the evolutionary approach, where as fat startups are attempts at intelligent design.

On one hand, evolution demonstrates that small changes can have beneficial effects and building on top of them can lead to whole new paradigm shifts. On the other hand, intelligent design _should_ be able to trump evolution. Humans can design a car or business from whole cloth, one that is not composed of lesser incremental changes but requires each part to make the other parts useful.

<comment><USER6> My only gripe with lean methodologies is just that, that it seems like a soul- less reactionary process at times. At its extreme anyway, I know that't not the way it always works.

</comment></comment><comment><USER7> The point TFA makes is a non-lean (fat) company may be viable whereas the lean version of the same concept might not be. If nothing else it's thought- provoking. In my head I'm trying to decide if what he's doing is still lean -- one might argue that "fun marketing" is actually part of the MVP of _his_ vision. I think an argument could be made that MVP can be different based on the team...

</comment><comment><USER8> This is one reason I like the term Minimum Desirable Product better than the Viable dito.

<comment><USER9> I don't consider an undesirable product to be viable so I think "viable" still works.

<comment> qu4z-2 I'd agree, but I have found people get confused on that point. Of course, I worry with "minimum desirable product" they'll miss the "minimal" bit.

</comment></comment></comment><comment><USER10> Well put. "Lean" is a great methodology in a lot of situations, but sometimes other approaches are necessary.

</comment><comment><USER11> WTF? Seriously, lobster suits and dating apps do not mix.

</comment><comment><USER12> Play to your strengths. Play to your strengths.</comment>


Is Silicon Valley only interested in the problems of twentysomethings? - <AUTHOR> http://www.washingtonpost.com/blogs/wonkblog/wp/2013/05/27/is-silicon-valley-only-interested-in-the-problems-of-twentysomethings/ <comment><USER3> The title is deceptive because shortly after asking that question in the article, the author comes to a resounding "no" and goes on to talk about why it is our impression that SV only works on the problems of 20-somethings. The core of the author's comment comes at the end:

"Imagine how odd it would be to read an article saying that the people who work for manufacturing firms are really just out to make money, or that they don't seem interested enough in current events. It is only because Silicon Valley has done such an extraordinary job branding itself that articles about their social conscience, or lack thereof, seem completely reasonable. But the tech sector is, on the whole, much more like other sectors of the economy than it likes to believe, or than it likes anyone else to believe."

<comment><USER4> Here is a strategy that I have heard repeated a few times: When you see a rhetorical question in the title of a news article, the answer is no. The answer is always no. The article may say maybe. But the answer is no. Just like that you've saved yourself a few minutes.

<comment><USER5> I've come to count on another thing too: someone on HN comments will always point out the answer is 'no' and then point out this generality, and then you'll often have a comment like mine point this out. :)

<comment><USER6> omg, I can create noisy posts, too.

</comment></comment></comment></comment><comment><USER7> That's not true, every time a founder becomes a parent they build shitty solutions to all those problems too :)

But seriously this whole angle frustrates me.

Who decided that Silicon Valley had to be held over hot coals for building software companies that solve problems and make money. Why does it always read like "they alone inherited the problems of the universe, and are choosing to build dickpic apps instead".

Everywhere in the world there are smart people working on dumb things. In SV there's lots more smart people, but the percentage doesn't change. Also some things look dumb but are actually genius in hindsight, so it's easy to criticise these as problems for twentysomethings today, but fast forward a decade and they're 'problems for the masses'

<comment><USER8> > Who decided that Silicon Valley had to be held over hot coals for building > software companies that solve problems and make money.

It would appear that Silicon Valley did. Every mundane piece of software is going to 'change the world.' People are just waiting for that to happen.

<comment><USER9> A recent example of that: Google's Eric Schmidt and Jared Cohen just wrote a new-agey sort of book explicitly taking that "we're here to change the world" angle.

They _could've_ written a different book, more like one Warren Buffet might write, about the business of software and online services, and running a profitable company in the industry. But they don't appear to consider that to be the bar for success.

<comment><USER10> At least some of Google's work has the possibility of changing the world: AI. Between self driving cars, natural interface methods, and data understanding, the future looks interesting.

On the other hand, yet another social network, photoshop filter app, todo list app, instant messaging app, advertising app, these are not going to change the world, though often heralded as such.

<comment><USER11> Google's social network and list of apps are an attempt to stay relevant so they can change the world.

Doing expensive R&D without a money maker generally requires government help. I don't think Google wants to go that route.

</comment></comment></comment></comment></comment><comment><USER12> It's hard to design and create software for subjects you don't know much about. It's not really a surprise that people create software for their own lives.

A lot of open source is focused on programming languages, libraries and things to help you code. It's what most open source people know, and thus what they create.

I wonder if it would have been better for CS to have been only offered as a minor or double-major to another field of study, at least at the Bachelor level. We would have fewer pure CS people, but a lot more people with training in another domain.

<comment><USER13> I second this! or something similar, at least. Having not really gone to college, myself, I was lucky enough to have had so many varied life experiences and interests before I took up tech; so when talking to my colleagues who are cs-equipped, I find their methodology is often very CS oriented, and focused more on the tech than on the problem. I think that's why "design" has become such a big fad these days - it's almost as if we just figured out that people buy products, not tech.

That being said, after speaking with quite a few tech-inclined people, I feel they would be a lot more comfortable with less technically inclined subjects if they were stripped of the general cultural pretensions that they come with. There is a very strong resistance to "acculturation" among techies, as it is usually seen - rightly, for the most part - as a mechanism of enforcing a "cool kids' club", so to speak, rather than an actual venue for intellectual exploration.

I think, that as techies, we are in a unique situation, as far as intellectual development is concerned. The vast majority of the population can't appreciate technical phenomena because it is culturally viewed as "too hard" or "robotic" or "blah blah, boring". We, OTOH, actively refuse to engage with humanistic pursuits, but not out of any perceived difficulty so much as discomfort with the pretensions that come with "cultured society". If effort can be made to induct some history and philosophy, and heck, maybe even theology into the the techie culture, we could have the best of both worlds and possibly even have some truly fresh ideas put out.

In short, it's easier to teach a physicist to write essays than it is to teach a poet Diff Eq

<comment> mc-lovin You characterize the situation very well.

It reminds me of the parody of the academic left in sci fi such as the novels of Neal Stephenson and Vernor Vinge. And the parodies of religion and philosophy are even worse.

It certainly came as a shock to me to realize that much of academia is simultaneously incoherent and pretentious, and full of deep insights.

</comment></comment></comment><comment><USER14> If so, it's probably only because young adults are more likely to use the internet and therefore have problems that can be solved by the internet.

The internet can't really fix your problems if you don't use it in the first place. Or maybe it could, but you will never know better.

<comment><USER15> Twenty years ago, this might have been true. I don't think it is today.

I'm 60 years old, and while I'm somewhat unusual in that computers and tech have been part of my life, both personally and professionally, for half my life, I would have to think pretty hard to come up with someone in my circle of friends and relatives in the 50-80 age range who doesn't use the Internet. My 80 year old aunt has a desktop, an iPad and an iPhone. My 81 year old landlady spends an average of 4 hours a day online. Just examples.

We could debate their "expertise" in using the Web or software/apps in general. On the whole, given the kinds of questions I end up fielding from them and others, it isn't particularly high. But then again, that may actually be the fault of the software itself, much of which is difficult for someone for whom tech is not an abiding interest to understand. I spent 10 years reviewing software full-time, and it was often a struggle for me to forget what _I_ knew and judge it from the standpoint of the average Joe.

At any rate, I think it's a canard to say that older adults (or even senior citizens, since I guess I am one now) don't use the Internet. They may not use it the way someone younger does, but that doesn't mean they don't use it.

<comment><USER14> You're probably right. But SV's startup culture is pretty unfriendly to 50-80 year old enployees with family and financial obligations and less risk tolerance.

I suppose SV companies are going to tend to solve young adult problems because they are composed of young adults. It's what they know.

<comment><USER15> Your description of SV startup culture isn't unique - it seems to be pretty much SOP for virtually any company these days. Lose your job after 50 and finding an equivalent position can be daunting.

>I suppose SV companies are going to tend to solve young adult problems because they are composed of young adults. It's what they know.

It's not only what they know, it's what they think is _cool_ as well. And that's okay - I think a lot of the software I look at today is cool, too. But is it useful to me? Nope.

I'm no student of business, but it does seem to me that historically an awful lot of companies have been started by young people who saw a market or niche that needed to be filled, and filled it. How hard would it be for a start-up (or existing tech company) to get a couple of panels of 50-80 year olds together and find out what _they'd_ find useful, and then produce it? You can make the argument that 20-somethings have more disposable income, but I doubt a couple dollar smartphone app or ten buck piece of desktop software is going to break any senior citizen's budget.

<comment><USER16> It sounds like there's actually a few untapped markets out there that no one is even thinking about. That's a shame.

</comment></comment></comment></comment></comment><comment><USER17> "[Packer]'s clearly onto something in the way the experience of continuously solving seemingly insoluble technical problems can lead the technocracy to dismiss the challenges of actual societies or, worse, decide they're simply above them."

This rings true for a number of issues in San Francisco. Let's underfund our public transportation and make taxis inefficient and hard to find -- we'll let the free market solve those problems! Corporate shuttles and a thousand taxi hailing apps will make up the difference.

Except they don't. I can't take a corporate shuttle to buy groceries or go out at night, and the cab situation in San Francisco is embarrassing. How do people here think they're living in the future when they can't even run basic infrastructure?

You can order food or hail a cab with your phone in any city. I only know of one city where idiots who will tell you this is revolutionary.

<comment><USER18> i just looked at your comments on a hunch and i was right: most of your comments have to do with shitting on san francisco. cool hobby

</comment></comment><comment><USER19> I think this is a by product of 20 somethings being the most sought after group by advertisers combined with them being the most likely to try new things without a lifetime of bias towards the status quo.

</comment><comment><USER20> The best part of Silicon Valley is brilliant people solving hard problems. In the beginning, there were a lot of talented, bright you people with not a lot of business sense. And it showed in their draw towards 'sexy' problems. But, as that space got incredibly crowded and, to a large degree, 'solved', people moved on.

I am a 20-something and was drawn to Silicon Valley to work on payroll specifically because I saw it as a sign that SV was 'growing up.' Not every company is working on social-local-mobile-freemium-gaming, and that is incredibly refreshing.

</comment><comment><USER21> Well, it's probably harder to meaningfully shift the way older consumers live in general. Between regulations and routine, business has an increasingly difficult time selling to us as we age. For all the dollars in pharma, grandma still won't take her pills and grandpa won't get rid of that old beater. Etc.

<comment><USER22> There's an article on HN right now about setting up a MacBook for grandma. And everyone talks about how great an iPad has been for the elderly.

I don't think they're stubborn, they're just different. I also don't think they're cheap either, because an iPad (let alone a MacBook) is still a consumer electronic luxury.

</comment></comment><comment><USER23> A similar question I wanted to ask: "Who are all this skaters, hip hop singers wannabees, surfers, brooming indie artists" and such BS that 99% of ads, videos and startup media material seems to target to?

I've been all around the US (literally: the 48 states), and those are like 1% of the youth population, if that.

</comment><comment><USER24> I think that the assumption of the New Yorker that Airbnb is only for twentysomethings is not correct (I can't speak about Uber).

I'm 33 years old and living in Europe. Between my passions there is dancing tango. This actually involves a lot of traveling to international festivals where to meet and dance different people. There are many of these events and many dancers are really dedicated, traveling around a lot, sometimes almost every weekend. In this situation it gets really helpful to travel on a budget, even if there are not many people in their 20s in the community. As a result Airbnb is getting the de facto choice for the community of the 30-40 years old international traveling dancers.

</comment><comment><USER25> What is more frustrating to me is that so much of the startup focus is in Silicon Valley and ascertaining viability for these disruptive service is wholly dependent on the SV set's adoption rate.

Some of these businesses should spend more time planning the logistical and strategic side of rolling out satellites to other markets (maybe even as a franchise model) to see if uptake rates change based on cost off living, regional preference, different geographical factors, etc.

What plays in tech saavy SV, the NW, New York, and Austin might be different than in Tampa, Pittsburgh, St. Paul, and Phoenix.

Does anyone agree?

</comment><comment><USER26> Today's 20 somethings are tomorrows 30 and 40 somethings. Get them hooked young and you can milk them for a lifetime.

It's probably easier to persuade a 20 something to try something new. I know middle aged people who choose smartphones by waiting for their kids to each buy different ones and then choosing one of these for themselves.

</comment><comment><USER27> Its useful for the non-tech press to point out that no, we're not only solving problems for young people with more disposable income than they know what to do with. It does suggest that there is a very good business to be had 10 - <USER2> years from now as these people mature and now _do_ need to do something with that income but that is a different article :-)

One wave of things I'm looking for (and it's seems to be foreshadowed with things like the maker movement) is spontaneous manufacturing. Places where you need something built and a bunch of people, using tools in their garage or workshop, contribute parts where a co-ordinator assembles into widgets.

</comment><comment><USER28> Speaking for myself, I can perceive a few problems with the tech industry: one more (but not entirely) individual, one more (but not entirely) cultural, and one more (but not entirely) legal/economic.

The cultural one is simply that Silicon Valley and the tech sector in general currently constitute one of the last remaining vestiges of the upper-middle class and the petite bourgeoisie in an otherwise recessionary and degrading Western society. Others refer to us occasionally as the "Tech Sector Master Race". Forgive the 4chan slang, but that _is_ how we come across sometimes: as a little nerdy subculture that smugly walks through a world we don't quite belong to, demanding coffee and consumer electronics and thinking about our investment accounts while other people think about making rent. And the worse the rest of society gets, the worse this effect will become. See below.

The individual one is that, frankly, I have too easy a time contenting myself with my gadgetry to see wide-open markets, and when I do see an idea, I expect the corporate behemoths to colonize it first. An undergrad here at Technion once came and talked to me about starting a groceries-delivery service here in Israel. I immediately thought of Stop&Shop's Peapod, before realizing we don't have anything like that here. Then my next thought was, "What, people can't be bothered to go to the market?" It's easy to overlook opportunities to solve others' pain points just because _you personally_ don't have a lot of pain points (which ties right back in to techies being so massively fortunate!).

The legal/economic one is that productizing technology has gotten _very hard_. I'm always glad to see more hardware start-ups and such, but people often hesitate to commit money to unknown companies. Then software is more and more functionally impossible to sell in a shrink-wrapped box as a product (due to piracy and upgrades), people hate advertisements, non-corporate users hate paying subscription fees for software because they think they bought their copy, and people are still demanding ever more quality for fixed or shrinking prices. Lastly, technology has gotten less and less "do it yourself" and more and more "black box", pushing all kinds of things underground. Overall, the path from tinkering to a product to a sale to tinkering again has gotten longer, and that's what drives the endless rounds of "social-mobile-local Big Data cat-picture analytics apps". And of course, this also goes right back to large parts of society being unable to afford innovative luxury goods produced by the tech sector. A game console that costs $400 now instead of $200 ten years ago wouldn't be that much of a problem if the cost of living had stayed the same or if wages had doubled (before inflation, even). They haven't.

So until we find some ways to fix this stuff, Silicon Valley is going to be stuck catering to the one audience who will consistently buy into Silicon Valley, that being Silicon Valley.

<comment><USER29> Minor nitpick. Video game consoles and games are equal price or cheaper than old ones when adjusted for inflation. Here are a couple articles I found to support that. [http://www.g4tv.com/thefeed/blog/post/706637/video-game- infl...](http://www.g4tv.com/thefeed/blog/post/706637/video-game-inflation- the-price-of-a-console-part-one/) [http://arstechnica.com/gaming/2010/10/an- inconvenient-truth-...](http://arstechnica.com/gaming/2010/10/an-inconvenient- truth-game-prices-have-come-down-with-time/)

<comment><USER28> Wow, thanks for letting me know. I hadn't realized that.

(Though admittedly, that makes the financial outlook of games companies _even worse_.)

<comment><USER29> Yeah it's one of those things that is really counterintuitive, probably because we tend to underestimate inflation. I thought the opposite as well until I ran across an article a little while back.

</comment></comment></comment></comment><comment><USER30> My startup was made to solve problems of older people that has children...

But maybe, like the article theorises in the start, because the person that had the idea was in that group himself (my associate, and CEO of the company, had the idea to make apps for children after not finding enough apps for his own children and hearing comments from his similarly-aged friends about the same subject).

</comment><comment><USER31> I would say yes, it is biased towards twentysomethings because 1) they have disposable income and more easily part with it, and 2) they are more likely to create a tech solution (and surrounding business) to a problem they are familiar with. Disclosure: I'm in my 30s but had similar wide-eyed dreams in my 20s of creating some big piece of tech that would net me millions.

</comment><comment><USER32> I think software tends to favor the young. In general the biggest companies in tech were founded by younger people.

Google - Founded by 20 somethings Apple - Founded by 20 something Facebook - Founder by 20 something Amazon - Founded by 20 something

So they solve problems for a younger generation.

<comment><USER8> The problem with this is they are not run by 20-somethings now. If they were working on 20-something problems because they were 20-somethings, why haven't they moved on?

Also, I wouldn't categorize Amazon as solving problems for a younger generation.

<comment><USER31> A lot of the problems these companies cover are interesting to everyone. Search is interesting to everyone, maintaining a social network is interesting to everyone, buying stuff online is interesting to everyone.

Cab-sharing is not interesting to everyone. Staying in strangers' homes instead of a hotel isn't interesting to everyone. Taking photos of your meals and sharing it with friends is not interesting to everyone.

</comment></comment></comment><comment><USER33> Apologies for the self-promotion, but at NoRedInk, we are funded, have traction, and are hiring while improving the _status quo_ of grammar education.

</comment><comment><USER34> Silicon Valley is interested in finding solution to problems that make money, just like every other industry.

<comment><USER16> Silicon Valley is more similar to Wall Street than it cares to admit.

</comment></comment><comment><USER35> twentysomethings are interested in the problems of twentysomethings.

<comment><USER36> One thing that seems to be lost between the article and the comments - it's not just twentysomethings. It's twentysomethings "with cash on hand".

That adds a degree of self-indulgence to the description. It's not just twentysomethings solving the problems of people their age, tackling the questions of their generation, but solving the problems of (at least culturally) affluent, employed tech workers with disposable income.

</comment></comment><comment><USER37> Betteridge's Law of Headlines applies.

<comment><USER38> To disprove this all somebody needs to do is write a headline:

Is Betteridge's Law of Headlines correct?

</comment></comment><comment><USER39> s/problems/money/

</comment><comment><USER40> The hypercompetitive culture makes SV a series of silos. We may be working workstation-to-workstation, but just as you drive along the interstate, it's a series of anonymous silos of farmers loosely affiliated, if that.

And any shoplifting guide worth its weight will tell you that those farmers are screwing you over in at least 3 different ways via strict affiliations with government and taxation, price gouging the market, and transportation costs, along with manipulative garned relationships with the GroceryStoreCartel(tm), all while you fancy the philosophical scenario of whether they're interested in your problems.

You as a driver should move along, or learn the road.

The only response to "Does some large group X care about me?" is Hanlon's Razor.

</comment><comment><USER41> Most new companies fail, but not all. Apple and Google were founded by twenty- somethings, and in the early days, nobody was certain what they would become. The key is to keep trying stuff, even ideas that might seem unusual.

One group that displays much 'irritating self-regard' are east-coast pundits who write on subjects they don't understand.

</comment><comment><USER42> good point. most of the startups are working on trivial problems faced by 20somethings.

<comment><USER43> Startups tend to try to solve problems they are familiar with. So 20something founders, are likely working on something 20somethings face.</comment></comment>


For Scientists, a Beer Test Shows Results as a Litmus Test - <AUTHOR> http://www.nytimes.com/2008/03/18/science/18beer.html?_r=2&oref=slogin&oref=slogin

<comment><USER2> I'm not a statistician, but if I read the paper correctly ... there is barely a negative correlation in his 2006 study (if you remove the one significant anamoly). n=18 in his 2002 study and n=16 in 2006. He controlled for age and years of active publishing which may be correlated to consumption. In fact, he conveniently removed the 1st principal component in the 2002 study and not in the 2006 and covered it by an offhand remark of "almost quantitatively identical". If they were almost quantitatively identical why did he remove it from one study and not the other. Oh! Well, earlier in the paper he mentions that the results were only consistant between the two studies when he controlled for age. The median consumption of the 6 bohemians in his 2002 study is 200 litres/per year(!!!) and the remaining 12 Moravians drink 37.5 litres/per year (which is quite the bimodal distribution). The 2006 study were the same people as in 2002 "where available". So n=16 for the entire study. They are all researchers in "avian evolutionary biology and behavioural ecology" in the country with the highest per capita beer consumption rate in the world. Hardly a meaningful dataset in my eyes. Then again, maybe I'm biased in my analysis. Beer drinkers unite!

</comment><comment><USER3> _So, it documents a correlation without explaining it, so maybe there is no correlation. You cann't take two facts and say there is a correlation, may be it simply a coincidence._

Huh? Did you read past the headline? Listen:

 _The results were not, however, a matter of a few scientists having had too many brews to be able to stumble back to the lab. Publication did not simply drop off among the heaviest drinkers. Instead, scientific performance steadily declined with increasing beer consumption across the board, from scientists who primly sip at two or three beers over a year to the sort who average knocking back more than two a day._

That's not "two facts" - it's a direct correlation between two variables. One may not __cause __the other, but it certainly doesn't appear to be a complete coincidence

</comment><comment><USER4> And that's why I got out of physics!

As far as the correlation goes - There's a clear correlation there, though it doesn't seem like they're trying to propose a causality. Though they kind of bill it as a causality at the beginning of the article, I don't think the actual study is suggesting that drinking more or less beer will directly affect how often you're published.

</comment><comment><USER5> The most interesint paragaph is at the end:

"More important, as Dr. Grim pointed out, the study documents a correlation between beer drinking and scientific performance without explaining any correlation."

So, it documents a correlation without explaining it, so maybe there is no correlation. You cann't take two facts and say there is a correlation, may be it simply a coincidence. Maybe the difference is not the beer but the time spent in bars. Maybe the scientists that get less papers publisheds are depressed and go to drink beer to forget their bad performance.

How can people publish a fallacy like that and be so happy?

<comment><USER6> >How can people publish a fallacy like that and be so happy?

Beer.

</comment></comment><comment><AUTHOR> This seems apropos in light of demo day:

<http://news.ycombinator.com/item?id=140628>

</comment><comment><USER7> I'm skeptical, but as a non-drinker, I can't say I'd be sad if avoiding drinks has some upside.

</comment><comment><USER8> Interesting that it was a quantity measurement, not a quality measurement (which would be very hard to do, I imagine) Seems obvious that if you're out drinking beer you're not writing :)</comment>


Government may require cars be able to talk to each other - <AUTHOR> https://www.washingtonpost.com/politics/govt-to-require-cars-be-able-to-talk-to-each-other/2016/12/13/d4e608d8-c14b-11e6-92e8-c07f4f671da4_story.html <comment><USER2> I'm with [https://news.ycombinator.com/item?id=6982537](https://news.ycombinator.com/item?id=6982537)</comment>


Graph Processing on FPGAs: Taxonomy, Survey, Challenges - <AUTHOR> https://arxiv.org/abs/1903.06697 <comment><USER3> This seems a weird problem to solve with FPGAs.

The big problem with graphs is that they can get very big, and once they become too big for a single machine's memory things get tricky.

 _However_ it's unclear if there are many graphs that are actually too big.

Frank McSherry showed (back in 2015) that he can process 20 iterations of PageRank on a 120B edge graph in ~12 hours on single core on a single laptop[1]. He also shows label propagation to convergence in 1700 seconds on the same single core.

Given this, exactly what advantage does a FPGA give? Who is processing ~100 billion edge graphs so many times that you are going to save on power? And is there actually any power savings over a single core anyway?

[1] [https://github.com/frankmcsherry/blog/blob/master/posts/2015...](https://github.com/frankmcsherry/blog/blob/master/posts/2015-02-04.md)

<comment><USER4> Here are a few references that solve problems on very large graphs:

[1] implements work-efficient parallel algorithms for a list of fundamental graph problems. They report times on a O(200B) edge graph on a single multicore.

[2] reports distributed running times for BFS, connectivity, PageRank, and SSSP on a large number of distributed hosts. The times are usually slower than the single-machine times, despite using two orders of magnitude more threads.

[3] Reports connectivity times on a truly large graph that is not publicly available (several trillions of edges).

My feeling is that unless you are at FAANG or a big national lab, the largest graphs that will show up in practice (today) are on the order of billions of edges, and can be solved quickly using single-machine multicores.

[1] [https://arxiv.org/abs/1805.05208](https://arxiv.org/abs/1805.05208)

[2] [https://www.cs.utexas.edu/~roshan/Gluon.pdf](https://www.cs.utexas.edu/~roshan/Gluon.pdf)

[3] [https://arxiv.org/abs/1807.10727](https://arxiv.org/abs/1807.10727)

<comment><USER3> Yes, all these are valid cases. Hence the second part of my question:

 _Given this, exactly what advantage does a FPGA give? Who is processing ~100 billion edge graphs so many times that you are going to save on power? And is there actually any power savings over a single core anyway?_

</comment></comment></comment><comment><USER4> Any insight on why this paper was posted? What graph algorithms are people in the field interested in solving on FPGAs/GPUs/other accelerators? Unfortunately I usually see the same cluster of (toy) problems solved time and again (BFS/BC/PageRank/(negative)SSSP, usually all using label-propagation style vertex-centric codes). This survey interestingly enough reports some results for maximum matching (approximate?), although it does not provide many details on the result.

<comment><USER3> I agree.

I think people vote for anything with FPGA in it, because people think FPGAs are the future of high-performance compute (and always will be IMHO).

I've worked in environments where FPGAs were used (specialized camera stabilization and tracking). These kind of environments are around, but generally you need a mix of high performance _and_ some kind of embedded requirement for a FPGA to make sense.

<comment><USER5> Correct. By definition, if volume is high enough, an FPGA will always lose to a custom chip. That's why it feels like FPGAs are always about to win, except they never do because for every real use case, someone will make a better chip.

In other words, the overhead of the re-configurable aspect of FPGA is just too high.

<comment><USER6> Back when chip costs were reasonable, custom chips would always beat FPGAs and were an easy option for many applications but I think things have changed somewhat in the last few years with the decline of Moore's law. Now there are fewer and fewer companies that can afford to develop custom chips at leading technology nodes. Some estimates are it costs $100m to get a custom chip into product at 7nm. The volumes just aren't there for many applications to justify a custom chip, it doesn't make sense unless the market is huge and the algorithms are static. FPGAs work well in these cases. Have you seen Microsoft Brainwave? [https://www.microsoft.com/en-us/research/project/project- bra...](https://www.microsoft.com/en-us/research/project/project-brainwave/)

<comment><USER3> This is true, but:

a) most applications don't need 7nm. S3 will do a custom ASIC for under $2M[1], and I've heard figures as low as $100K for a FPGA for ASIC conversion.

b) General purpose embedded CPUs with extended instruction sets are often fast enough for most purposes.

[1] [https://www.s3semi.com/wp- content/uploads/2018/06/S3semi_sil...](https://www.s3semi.com/wp- content/uploads/2018/06/S3semi_silicon_economics_WhitePaper_Jun18.pdf)

</comment></comment></comment></comment></comment><comment> TBF-RnD Very interesting read.

Some of the algorithms require the FPGA to be reconfigured whenever the node data has changed or when applied to a different data set.

Is this an expensive operation?

<comment><USER6> Not really, but I suppose it depends on the application requirements. It typically takes under a second which is much faster than taping out another chip ;-) but could be problematic for real-time systems in some cases. It depends upon the size of the FPGA/bus speed etc.

<comment> TBF-RnD thank you have been wondering about this for ages!!

</comment></comment></comment><comment><USER7> I've been (I admit) just starting to try and learn about FPGA's and where their applications might be. Outside of the painfully obvious - <USER2> networking, HFT - I can't see a case where their expense makes them a valid solution when compared to a GPU. Ideas?

<comment><USER8> Bing search uses FPGA for scoring. See FPGA for storage/nvme.

I'm hoping for a 10x-100x increase in memory-size for gpu to unlock new possibilities.

<comment><USER9> If you take apart a gpu and look at the die you can see they basically frankenstein 1 or 2 HBMs with the GPU die. Xilinx is doing this too in their latest line of VU33 - VU38P HBM chips too (4-8GB on chip, 460 GB/s).

Any density upgrades for the GPU will also reflect for FPGAs, but we're physically limited in terms of how many HBM dies you can slap on :(

<comment><USER8> What about [https://www.amd.com/en/products/professional- graphics/radeon...](https://www.amd.com/en/products/professional- graphics/radeon-pro-ssg) (strap ssd on a gpu)</comment></comment></comment></comment>


LIFX shipping its bulbs after taking Kickstarter by storm - <AUTHOR> http://www.brw.com.au/p/entrepreneurs/lifx_shipping_its_bulbs_after_taking_mR6vfA4mUZRlxJP2EsA4mK

<comment><AUTHOR> I remember when LIFX launched on KickStarter last year, there was a storm of comment on HN, basically saying that it was a scam and shouldn't be allowed anymore. It did seem to kick off changes to KickStarter's policies which were probably well overdue.

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

Anyway, I defended them at the time (disclaimer, I know two of the founders), it's great to see them do what everyone thought they couldn't and bring a product to launch within all the relevant legislation.

Congrats!</comment>


Cowboy 2.0 released - <AUTHOR> https://ninenines.eu/articles/cowboy-2.0.0/ <comment><USER2> For those wondering what this is, I grabbed this from the zip file:

= Cowboy

Cowboy is a small, fast and modern HTTP server for Erlang/OTP.

== Goals

Cowboy aims to provide a _complete_ HTTP stack in a _small_ code base. It is optimized for _low latency_ and _low memory usage_ , in part because it uses _binary strings_.

Cowboy provides _routing_ capabilities, selectively dispatching requests to handlers written in Erlang.

Because it uses Ranch for managing connections, Cowboy can easily be _embedded_ in any other application.

Cowboy is _clean_ and _well tested_ Erlang code.

== Online documentation

* [https://ninenines.eu/docs/en/cowboy/2.0/guide[User](https://ninenines.eu/docs/en/cowboy/2.0/guide\[User) guide] * [https://ninenines.eu/docs/en/cowboy/2.0/manual[Function](https://ninenines.eu/docs/en/cowboy/2.0/manual\[Function) reference]

== Offline documentation

* While still online, run `make docs` * User guide available in `doc/` in PDF and HTML formats * Function reference man pages available in `doc/man3/` and `doc/man7/` * Run `make install-docs` to install man pages on your system * Full documentation in Asciidoc available in `doc/src/` * Examples available in `examples/`

== Getting help

* Official IRC Channel: #ninenines on irc.freenode.net * [https://github.com/ninenines/cowboy/issues[Issues](https://github.com/ninenines/cowboy/issues\[Issues) tracker] * [https://ninenines.eu/services[Commercial](https://ninenines.eu/services\[Commercial) Support]

<comment><USER3> "Cowboy is a small, fast and modern HTTP server for Erlang/OTP"

It could really use this line on the linked page for people (me) that never heard of Cowboy in the first place. HTTP/2.0 gave me a clue, but plenty of client software that has HTTP/2.0 support too.

<comment><USER4> To be fair if you go to the main website it does give you that information, I feel like it would be redundant to put it on every single page.

</comment></comment></comment><comment><USER5> If anybody else is getting lost in the woods, hunting for change logs, this is the best I found: [https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from...](https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from_1.0/)

<comment><USER6> Thanks! Was looking for that.

</comment></comment><comment><USER7> Good news. So it means HTTP/2 support is incomming for [https://github.com/elixir-plug/plug](https://github.com/elixir-plug/plug) :)

<comment><USER8> Yeah had the same thought, I was thinking "Cowboy, Cowboy, why does that sound familiar..." Then the purple Elixir related light-bulb kicked on.

</comment></comment><comment><USER9> After reading about tls 1.2 sessions[s], I wanted to see how easy/hard it would be to a) run tls 1.2 without session tickets, and/or force tls 1.3+ -- the closest I came was:

[ed: moved the link up, for less confusing flow] [http://erlang.org/doc/apps/ssl/ssl_protocol.html#id61195](http://erlang.org/doc/apps/ssl/ssl_protocol.html#id61195)

which isn't all that enlightening to someone not familiar with Erlang. Does anyone know of a "best security practices" particularly for cowboy/opp/erlang and/or elixir?

I'm reminded of how for the longest time ssl was completely broken in python (it wasn't at all obvious how to force verification of certificates - especially for new developers)... And I've grudgingly come to accept that tls/http2 is complex enough that beyond getting to "it works" \- even foolproof libraries need a couple of lines of text discussing trade-offs (eg. security vs performance vs ease-of multi-server deployment of session resumption).

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

<comment><USER10> I found this link handy: [https://gist.github.com/ferd/af9abf6b3600d2d7f08dba58fdfb514...](https://gist.github.com/ferd/af9abf6b3600d2d7f08dba58fdfb514a)

There's certainly a lot of room for improved documentation in this area. I'd even buy a book on this topic.

</comment></comment><comment><USER11> I assume that this is the same cowboy server that provides the Heroku routing layer. Does this mean anything for our Heroku apps?

<comment><USER10> As far as I've seen, it used to be a heavily modified version of cowboy v1 [1]. I'm not sure what they're using now.

[1]: [https://github.com/heroku/cowboyku](https://github.com/heroku/cowboyku)

<comment><USER12> HTTP headers still say "Server: Cowboy" and "Via: 1.1 vegur", so vegur+cowboyku+custom code.

</comment></comment></comment><comment><USER13> This is great news. Congrats to the Cowboy devs!

Do a lot of people that run Phoenix apps in production expose cowboy directly to the public?

I'm always putting them either behind nginx or Amazon ALB, both of which support http/2.

</comment><comment><USER14> Time to Erlang Again!

<comment><USER15> Or Elixir

<comment><USER16> I must be a rarity because I prefer the Erlang syntax over Elixir.

<comment><USER17> I always feel I'm alone in this world. Erlang syntax is short and way easier to read compare to Elixir(due to its close to Ruby).

</comment></comment></comment></comment><comment><USER18> Are there any release notes? There does not seem to be any on the GitHub page.

</comment><comment><USER19> If you're interested in working with cowboy, we use it extensively at Finix, directly from Erlang as well as through Phoenix from Elixir. My email is cGF0cmljaytobkBmaW5peHBheW1lbnRzLmNvbQ==

<comment><USER20> Awesome Cieplak, best of luck to you and the team @ Finix!

<comment><USER19> Thanks Ali! Miss working with you dude

</comment></comment></comment><comment><USER21> This is awesome! Can't wait to use websocket compression.

</comment><comment><USER22> Can this be used to proxy requests from a downstream server, ie reverse cowboy?

</comment><comment><USER23> FYI :) since it is not obvious, this is Elixir server that is used for Phoenix among other things. So, big news. I didn't follow it much but it seems they support http/2 etc.

<comment><USER10> Small detail but it's an Erlang/OTP application which supports building HTTP, HTTP/2, and web socket services on top of Ranch (a TCP connection management library by the same author). Ranch makes it easy to manage TLS setup as well as connection pool tuning to fit your load profile, keeping latency reliable and low.

Since it's built as an OTP application, it's pretty easy to drop this into any release, including something built using Elixir (commonly via Plug), LFE, Alpaca, and/or plain Erlang.

</comment></comment><comment><USER24> whohoo! thanks for all your hard work on this!

</comment><comment><USER25> Worth mentioning that Cowboy is pretty much a one man show: Loïc Hoguin

<comment><USER26> This always fills me with awe and dread at the same time (technically speaking the "awe" should cover the "dread" part but nobody uses it that way these days).

I'm in awe at the achievement, and combination of vision, drive, knowledge, and skills that the maintainer must possess (or even more inspiring: has built up along the way).

I dread the bus factor[0], or the more common weaker form of _" maintainer is forced to move on from this project or just loses interest before someone else takes over and is worked in, and a lot of necessary tacit knowledge[1] is lost in the hand-over"_.

EDIT: Actually, I'm one to talk, working as the sole programmer at a research group... Given the required optimizations for its niche my code gets pretty hairy. I should plan a few weeks of pure cleanup and extra commenting, and general documentation.

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

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

</comment></comment><comment><USER27> The announcement, including highlights:

[https://ninenines.eu/articles/cowboy-2.0.0/](https://ninenines.eu/articles/cowboy-2.0.0/)

Full changes: [https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from...](https://ninenines.eu/docs/en/cowboy/2.0/guide/migrating_from_1.0/)

By the power of grayskull I invoke dang to update the link.</comment>


Ask HN: Best 19" rack for home use? - <AUTHOR> not the cheapest, but the best 19" rack for home use, where 'best' means easiest to maintain, access, and manage home servers.  something closed to keep the kids and pets out of it.  ideas? <comment><USER2> If you are a previous server/network guy then you will probably just want the best of the best as anything else would just waste your time and be a pain to use.

I recommend the following if you need quiet [https://www.apc.com/shop/us/en/categories/racks-and- accessor...](https://www.apc.com/shop/us/en/categories/racks-and- accessories/racks-and-enclosures/netshelter-cx/N-1ks6cn2)

If you have the space and height, might as well just put in a full rack that is also deep so you can put anything in it. [https://www.apc.com/shop/us/en/categories/racks-and- accessor...](https://www.apc.com/shop/us/en/categories/racks-and- accessories/racks-and-enclosures/netshelter-sx/N-2mkplc)

This way you are not bending over to reach things that would be much easier to reach while standing and it looks very professional, and will align with what is used in the data centers. Security wise, it locks at the front and back, if you need to you can pop the sides off the rack and put them back with little to no effort. Best of all there is room to put a full PDU or PDUs. There are also variants that you can easily move so you only have to unplug the power and fiber uplink(s).

As the smaller 19 inch racks are normally not tall/deep enough to do an advanced home setup (e.g. UPS (2U) at the bottom, routers (2U each for the good ones), KVM (1U), KVM Switch (1U to 2U), switches (1U each) at the top, storage server (2U to 4U), couple of virtualization servers (1U to 4U), firewall (1U to 2U), backup server (2U to 4U)).

My 19 inch rack did not last very long and I decided to chuck it and upgrade to a full rack and never looked back. Small investment for the connivence and flexibility to use a more realistic setup, especially if you are a professional engineer.

If you are not able to get it through regular house doors you can get a split colo rack or rack that is split in two so you can move each piece in and do not have to have it at it's full height until it needs to be finally positioned.

<comment><AUTHOR> this is exactly the kind of advise i was hoping to get. thank you!

</comment></comment><comment> up-n-atom I've got both a XRackPro 12U[1] and Hergo Mercury-Deskmate/ApxServer 12U[2].

They're nearly identical and possibly manufactured by the same company, but the build quality of the XRackPro is ever so slightly better. The front and back doors are studier with less flex and the side panel latches have better spring back.

The doors and panels are easily removed for full access.

The casters provide great moveability.

They both were fitted with noise reduction foam, which provides adequate noise levels for home use as well.

I purchased them from auctions so I can't judge them by their steep retail price.

I use the tops as extra storage to house a standard printer on one and a 3D printer on the other. I've even considered adding a little homely aesthetics with butcher block on the top.

At first I stored the vacuum near by to keep the cats away and they associated the server noise as a vacuum and haven't ventured towards any.

[1] [http://www.xrackpro.com/v/vspfiles/xrackpro2a.htm](http://www.xrackpro.com/v/vspfiles/xrackpro2a.htm) [2] [https://hergo.com/product/mercury- deskmate/](https://hergo.com/product/mercury-deskmate/) [https://hergo.com/product/apxserver-12u/](https://hergo.com/product/apxserver-12u/)

</comment><comment> k-ian the ol' ikea "Lack Rack" [https://wiki.eth0.nl/index.php/LackRack](https://wiki.eth0.nl/index.php/LackRack)

<comment><USER3> I miss the Netherlands! But I don't miss IKEA there. Their delivery drivers couldn't find their asses with both hands, a flashlight, and GPS.

<comment><USER4> Do they use their own delivery in NL? All the Ikea here refer out to third party drivers that just pick up at the actual store, and are not really related.

</comment></comment></comment><comment><USER5> The more interesting dimension is depth. Full depth racks are fairly hard to fit in a place after the fact.

"Wall mount" racks won't fit data center depth equipment.

</comment><comment><USER6> I would go and look for a good quality 14/18U rack for small office use, like the CSE-RACK14U from Supermicro.

</comment><comment><USER7> If you're not looking for a full size rack, I like the Hammond Manufacturing RCH series. They come in several heights and depths, and you can add locking doors and casters.

</comment><comment><USER8> List what you want to rack in it please

<comment><AUTHOR> data storage arrays, cpu servers, amps, that sort of thing.

<comment><USER9> Try craigslist or ebay listings with local pickup. I got two used 37U OEM racks for $150 in the DC-metro area.

<comment><AUTHOR> i'm not really looking for a bargain. i'm looking for the state of the art in racks. i used to build/run data centers 15 years ago, and racks kind of sucked back then. i'm just thinking there's a "better way" nowadays and i'm hoping to get some tips from folks that are in that world today.

</comment></comment></comment></comment><comment><USER3> Why not just a standard aluminum Chatsworth Rack?

<comment><AUTHOR> it looks like they aren't enclosed (which is something i'm looking for) and they basically look like the same kind of rack that i used in the 90s, which is fine, but i was thinking there is something better nowadays.

</comment></comment><comment><USER10> Good question! I want one, too.</comment>


A Manually-Curated Dataset of Fixes to Vulnerabilities of Open-Source Software - <AUTHOR> https://arxiv.org/abs/1902.02595 <comment><USER2> Link to actual data [https://github.com/copernico/msr2019](https://github.com/copernico/msr2019) [repository] [https://github.com/copernico/msr2019/blob/master/dataset/vul...](https://github.com/copernico/msr2019/blob/master/dataset/vulas_db_msr2019_release.csv) [csv dump]

[seriously, it should not be this hard to find that within the PDF...]

<comment><USER3> ^ the real hero; thanks.

</comment></comment><comment><USER4> Really cool! Nearly three years ago I wrote a post [0] on here asking if anyone had something like this, thinking you could use it to train an AI to recognize vulnerable portions of code. More details on that in the linked post.

Really cool someone went through this effort; would love to see more people build on it and try to make productive use of the data.

[0] [https://news.ycombinator.com/item?id=11573547](https://news.ycombinator.com/item?id=11573547)</comment>