Etsy IPO Form S-1 - <AUTHOR> http://www.sec.gov/Archives/edgar/data/1370637/000119312515077045/d806992ds1.htm <comment><USER2> "We eat on compostable plates, and employees sign up to deliver our compost by bike to a local farm in Red Hook, Brooklyn" \- Page 93

Etsy's hipster cred is off the charts right now

<comment><USER3> I'm not really familiar with compostable plates, but unless they eat from large plant leaves, the plates are probably made somehow. And to make them, someone probably uses resources, like energy and raw material. And they have to be shipped to Etsy.

Compare this with porcelain plates which can be re-used and last a long time, but have to be washed, which uses water and some energy.

Taking all of this into account, I cannot say which is more environment friendly.

<comment><USER4> From the environmental point of view, each ceramic plate must be used at least 50 times to have less impact than a single use biodegradable plate...

[http://sustainability.tufts.edu/wp- content/uploads/LifeCycle...](http://sustainability.tufts.edu/wp- content/uploads/LifeCycleAnalysisPlasticPlatevsCeramic.pdf)

<comment><USER5> That's very few actually, given that people eat on average 365 times a day, and said plates last for decades. They only get replaced when someone drops them or when their owners decide they're too worn and ugly.

<comment><USER6> Eat...365 times...per day

<comment><USER7> Yeah that sounds like a bit much. Honestly for me, I max out at 4 a day, I really can't do much more than that even if they're small meals.

I don't get how people do it 365 times a day, but then again I was never much of an eater.

<comment><USER8> _It 's all in the hips._

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> The numbers at a glance:

Revenue 2012 $74.6M+ 2013: $125M+ 2014: $195.5M+

Profit: Net loss 2012: (2.3M+) 2013: (0.7M+) 2014: (15.2M+)

$88M cash on hand - so they can afford to run at a loss for a few years while they grow the company. I guess it makes sense to go public and raise more cash while the market is hot.

<comment><USER10> My financial analysis skills must be weak but how does a company take a loss every year yet also have $88M in the bank?

<comment><USER11> They've taken $97.3M before: [https://www.crunchbase.com/organization/etsy](https://www.crunchbase.com/organization/etsy)

Presumably they had some profitable years prior to 2012 or have maintained limited losses.

Either way, it looks like they're gearing up for some big growth in the next few years. They dipped into the coffers in 2014 and will raise a lot of money from this IPO, so they'll have plenty of cash to burn on fast growth. It should be interesting to watch!

<comment><USER10> Hrm, that's a bit of a red flag to me. Why bother raising so much money if you're not going to utilize it? Surely growing your business will outpace average annual investment returns. I'm sure the investors have to be annoyed they basically just transferred their assets to Etsy to sit on and not utilize.

And now they're trying to raise an additional $100M via an IPO? It's not like Apple who are literally in the position of "We have so much money we don't know what to do with it."

<comment><USER12> > I'm sure the investors have to be annoyed they basically just transferred > their assets to Etsy to sit on and not utilize.

Considering they all stand to make a bundle through the IPO I'm sure the investors are collectively not-annoyed that Etsy hasn't wasted their money.

<comment><USER13> The only challenge will be timing when the Etsy fad bubble bursts.

<comment><USER14> I think people said the same thing about Ebay.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Interesting nugget in that they're reserving 5% of the IPO price shares for their users:

> At our request, the underwriters have reserved up to 5% of the shares of > common stock offered by this prospectus for sale, at the initial public > offering price, to individual investors. We call this our IPO Participation > Program, or IPP. The purpose of the IPP is to allow our U.S.-based Etsy > community and other individual investors to participate in our IPO.

<comment><USER15> I wonder how they plan to allocate them.

<comment><USER16> [https://etsyipo.morganstanley.com/etsy/index.html#/sps/dspFo...](https://etsyipo.morganstanley.com/etsy/index.html#/sps/dspForm)

<comment><USER15> Interesting. They're capping individual participation for that 5% pool at $2,500. If Bloomberg is right that they're looking to raise around $300M, that 5% pool is $15M. That comes out to 6,000 shareholders in the pool if all the members fully allocate.

I wonder how many individuals participate directly in a typical IPO process. I'd assume that this will be strictly additive, and that banks (including MS) will still do their opaque preferred-client treatment on top of the 5% pool.

[1] [http://www.bloomberg.com/news/articles/2015-01-14/etsy-s- ipo...](http://www.bloomberg.com/news/articles/2015-01-14/etsy-s-ipo- valuation-may-hit-2-billion-feeding-off-of-grubhub)

</comment></comment></comment></comment><comment><USER17> Looking at the cap table (to the extent it's visible in the S-1) it appears that the big winners are the investors: Breyer, USV, Accel, Tiger Global, and Index add up to 92.3% ownership of the company. [Edit, 65%]

Or am I totally reading that wrong? (Note, I really might be, this isn't my area of expertise. I just scrolled down to "Beneficial Owner".)

Edit: It was pointed out below that I double-counted Accel, making the total closer to 65%. Thanks!

<comment><USER2> You are double counting Breyer and Accel's shares -- footnotes give the key details.

Breyer personally owns 3%, and is deemed to control Accel's 27%. So collectively, Breyer is considered to control 30% of voting shares.

Read correctly (not adjusting for any preferred or convertible notes that could be in the structure somewhere), the amount held by Breyer, USV, Accel, Tiger Global, and Index should add up to ~65%

<comment><USER17> Thanks! That sounds a lot more reasonable. I'll amend the original comment.

</comment></comment></comment><comment><USER18> I recently set up a shop on Etsy to sell my art. There are two types of shops for selling prints: shops that print/ship for you (like nuvango), or shops that just provide a storefront (like etsy). Of the latter, Etsy isn't the cheapest (Square Market was). But Etsy has discoverability and ratings, and that's why I chose Etsy. I think it gives them an advantage over their competition.

On the other hand, you are not going to make a lot of money selling prints anywhere. This website tracks the top shops on Etsy: [http://www.craftcount.com](http://www.craftcount.com)

The top shops sell beads, clothes, jewelry. It makes sense: even as a person who makes posters, I have bought more shirts than I have bought posters in my lifetime.

<comment><USER19> Hey, I've been building the type that prints and ships it for you. We don't provide discoverability, but in exchange we have extremely low prices ($22 for a 12x12" stretched canvas, no commissions or monthly fees). You can see the link in my profile (amanufactory).

<comment><USER20> Thanks for pointing it out, I'll try to keep it on my radar (if you have a not-much-bother newsletter I'd be happy to give you my email so I get some remainder as you move it on). How outrageous would shipping prices go for the rest of the world?

<comment><USER19> For a gallery wrapped 12"x12":

Shipping to most countries outside of the US is about $14 for economy (ground).

Shipping to Canada is about $21.

And within the contiguous US states, $10.

This is on top of the $22 base price, which brings the total cost to $32 (a few bucks cheaper than Costco).

Feel free to email me at email@example.com, or request an invite on amanufactory.com, and I'll keep you updated!

</comment></comment></comment></comment><comment><USER21> Some of the key numbers aren't there. It's not clear how much stock the insiders retain after the IPO. At least there's only one class of stock, though. Google and Facebook have two classes of stock; the insiders hold the class with a majority of the voting rights. (That's rare; the only other big US company set up that way is Ford.)

<comment><USER22> Isn't the NY Times also set up that way?

<comment><USER21> They are. But they're not in the Fortune 500, and they're about to fall out of the Fortune 1000.

</comment></comment></comment><comment><USER23> Not a single mention of any of the four founders. Sad.

<comment><USER24> What happened to the founders? Is there a back story here?

<comment><USER25> Haim Schoppik and Chris Maguire: Left Etsy at the same time ([https://blog.etsy.com/en/2008/a-fond- farewell/](https://blog.etsy.com/en/2008/a-fond-farewell/)) to create Postling ([http://mashable.com/2009/08/11/postling/](http://mashable.com/2009/08/11/postling/))

Kalin is still there as CCO. Tarbell also looks like he's still there too?

</comment></comment></comment><comment><USER26> Pretty sad the founders got fired:

[http://www.forbes.com/pictures/feki45gjlk/rob-kalin-usv- on-f...](http://www.forbes.com/pictures/feki45gjlk/rob-kalin-usv-on-flickr- jpg/)

<comment><USER27> Why sad? Everything I remember reading pointed to him not being a good CEO.

<comment><USER26> Oh I didn't know that.

</comment></comment></comment><comment><USER28> Pretty interesting, not a single mention of any of the founders appear on the S-1 form.

<comment><USER26> [http://www.forbes.com/pictures/feki45gjlk/rob-kalin-usv- on-f...](http://www.forbes.com/pictures/feki45gjlk/rob-kalin-usv-on-flickr- jpg/)</comment></comment>


The Problem with the FizzBuzz Problem - <AUTHOR> http://www.gayle.com/blog/2015/5/31/the-problem-with-the-fizzbuzz-problem <comment><USER2> _> But the smart developer might just identify (intelligently) the potential for a "cool, elegant" solution and never find it. ... They think you want an elegant solution because the simple one is too obvious and it feels like there is an elegant solution. _

I think this is the gist of the essay and it's very easily addressed by stating at the beginning, _" just code something that works, don't try to come up with the most elegant thing known to mankind."_

I don't see this as an issue in real life if some commmon-sense parameters are spelled out upfront. It's a 5-minute sanity check to get past false resumes. That's it.

I guess it's theoretically possible for an algorithms-obsessed programmer to sit there paralyzed for 2 hours on fizzbuzz. You the interviewer then ask him, " _is there something about modulus 3 and 5 that 's tripping you up?_"

He says _" Oh, not at all. I was just debating whether I should start with first principles of lambda calculus and have the program replicate itself in millions of successive genetic iterations until the final program writes itself. But then I got on a thought tangent and was thinking if I could just manually write list of the first 100 correct answers and then feed that to a machine learning algorithm that I write. It would classify the intervals and work backward via artificial intelligence to generate the right program. Btw, how much time do I get to work on this?"_

I suppose scenarios like that _could_ happen, but I don't worry about it.

<comment><USER3> I agree. For any interview problem, my approach is to just write something that works. If you can't, talking it out loud helps whoever's interviewing know whether you're genuinely stuck or just fumbling with the keyboard

<comment><USER4> > If you can't, talking it out loud helps whoever's interviewing know whether > you're genuinely stuck or just fumbling with the keyboard

Absolutely! I'm also explicit about why I'm solving problems the way I am, like "this is going to be my brute force solution, and probably won't be pretty or efficient". This is effective against the occasional interview who does like to trip you up with followups like "wow, I was hoping for a more sophisticated answer" (yeah, you know who you are). I can respond with "as I said, this is a rough draft."

</comment></comment></comment><comment><USER5> Here's a similarly simple question that I used on hundreds of people who were trying to get a job at a hedge fund:

You have a dice (1-6). Some guy offers to pay you whatever you roll. What are you willing to pay to play this game?

Somehow, most of the applicants, who all had quantitative degrees, never made it very far. It's actually a warmup (what would you pay for the same, but with a chance to re-roll once?).

I just don't believe that people can't figure out the expectation of a dice roll. It makes no sense to me. Over the years I've concluded it must be because the way it's asked. People think there's something deeper in it than the most straightforward explanation. Or maybe they think they missed some critical detail and are afraid to ask.

Now there are actually some clarifications that would make it more interesting, but I never got anyone to ask those (Is it an eternal game? Do I have a limited pot?).

What was really dispiriting was when someone understood it, and were shocked we'd asked it.

<comment><USER6> I'm willing to pay $0!

No, really, statistics are unintuitive and most people, smart people, don't have a feel for them. Just look at the HN thrash whenever the Monty Hall problem comes up.

Btw its a 'die'. 'Dice' is plural.

<comment><USER7> Yeah but he specifically said these are folks with quantitative degrees... I would expect want to be quants applying at a hedge fund to have an understanding of statistics.

<comment><USER8> Yes, but there is a difference between expected payout and a person's willingness to play a game of chance. The expected payout of a lottery ticket is the same for every ticket before the drawing, but everyone has a different willingness to purchase tickets. The person is being asked about their willingness to take on risk and not their objective analysis of the payout.

</comment></comment></comment></comment><comment><USER9> The TLDR summary of the article is its really easy to get stuck down a mineshaft of "I'm sure they're looking for a more elegant way to do this". (edited to add, because scalability... demand fizzbuzz run 1...1e99 or under some weird time constraints and all bets are off, but no, its 1...100)

The comment on the article of a similar example of print an ASCII art diamond claiming cleanly using symmetry is unusable sticks in my brain a bit. There's gotta be a way! I mean, there has to be, right? But my first bright ideas all involve limitations that would be very non-clean and limitation inducing, although they would be cool applications of symmetry.

<comment><USER10> I think I found the symmetry: [http://ideone.com/KnaAMm](http://ideone.com/KnaAMm)

Edit: Now with more symmetry: [http://ideone.com/edNgre](http://ideone.com/edNgre)

<comment><USER10> Less repetition: [http://ideone.com/yPQzy6](http://ideone.com/yPQzy6)

</comment></comment></comment><comment><USER11> I did an experiment while interviewing interns once. For half the group, I posed this problem:

> Given a log file, with each line prefixed with either WARN, INFO, ERROR or > DEBUG, explain briefly how you would determine the number of errors logged > assuming that each line corresponds to a single event and vice versa.

For the other half, I posed the same question, but I said the log file was 50MB big. Most people didn't know how to solve the second problem even though given the scales involved the solution is essentially the same.

(By the way, the question wasn't used as part of the criteria for the job)

<comment><USER12> Those two are not equivalent. Actually, I'm surprised that people didn't find the _first_ one harder: I've had log files that were larger than RAM before (mainly due to overzealous logging).

<comment><USER4> Exactly! I've been asked the followup question: "now assume that you have 8 petabytes of log files to search", which leads into distributed computing, realtime vs on-demand collection, eventually consistent counters, the pros and cons of sampling vs exact counts, and so on.

The unbounded form of that question can be astonishingly hard, and for the kinds of jobs I'd be interviewing for I'd expect the challenging next questions.

I'd still answer along the lines of "for a quick solution I'd grep for the error level and count the number of lines, but that's not scalable".

<comment><USER12> Ditto. (Also, no need to pipe + count: `grep -c` works.)

Also, problem with sampling: you oversample long lines. I'm not actually sure if there is any way to count probabilistically that doesn't.

I suppose if you had some prior of how long the types were you may be able to do better, but in general, good luck.

</comment></comment></comment></comment><comment><USER4> If I interview you, you're getting FizzBuzz. I also lay down some ground rules:

\- Write it in the language of your choice. It's OK if I don't know that language but be prepared to explain unfamiliar stuff to me.

\- I am not a compiler and I don't care about semicolons, misspellings, etc. as long as I can understand the point of the code.

\- There aren't any tricks. This is the whole problem.

I _do not_ say anything like "keep it simple" because that can kick candidates into "OH GOD THERE MUST BE A ONE-LINER AND I CAN'T SEE IT" mode. My goal is to make the candidate as comfortable as possible in a potentially stressful situation. I want to give them every chance to succeed.

I've seen people with 10 years as a lead engineer fail horribly. I've seen people blanch at the concept of loops. Loops! The most common failure mode I've seen is for candidates to start throwing in lots of state variables like "is_divisible_by_3" and "has_printed_the_word_fizz", even after I prompt them toward using "else if" or nested if statements.

One guy laughed and said, "I've done this 100 times. Do I really have to?" I laughed, too, and replied "OK, just tell me what you'd do." He spat out some pseudocode that would've worked, I apologized and explained _why_ I make everyone do this, and we swapped funny stories. My company made an offer that day, he accepted, and is still successful in that role.

I've also had people complain that this is beneath them. Too bad. You're asking us to pay 6 figures for your programming skills? Then be prepared to spend 5 minutes demonstrating them. Your GitHub repo may be a clone of other peoples' work for all I know. I can and have ended interviews with candidates who dig in their heels and won't cooperate.

<comment><USER13> I've started including a small variation of FizzBuzz as part of our developer screening test - varied so you can't copy and paste from google. Very loose guidelines, pick your language, access to the internet, etc. We even give a general outline of what will be tested 24 hours out, and no hard time limit.

3 out of 4 people so far were unable to do the test. One guy boasted 20+ years of development experience and I used to work with him, he didn't even attempt it?!? Frankly, I expect candidates of any worth to feel insulted we are asking them to write this. The guy that did complete it wrote it in Bash, and wasn't strong in that to begin with. Bonus points for learning a language on the fly, that's what I'm looking for.

<comment><USER4> That matches my experiences. The first time I heard of FizzBuzz, I laughed it off as ridiculously easy and not worthwhile for screening. I've since changed my mind.

If a candidate laughs and writes down a canned answer off the top of their head, I count it as "passed" and we move on to other questions. I've been horrified at how often it's been a show-stopper, though.

> The guy that did complete it wrote it in Bash, and wasn't strong in that to > begin with. Bonus points for learning a language on the fly, that's what I'm > looking for.

I'd give that a double thumbs-up for resourcefulness.

</comment></comment></comment><comment><USER14> 1) If you're doing FizzBuzz at an on-site interview, you've failed in your process. FizzBuzz is something you use as early as possible to weed out clearly incompetent developers.

2) I can see how a clever developer might get stuck in analysis paralysis, but even then you should be able to coax them out of it, and at least get them to write down a little bit of code that does a loop and an if statement, because that's what we're really checking: Can this individual write working code from scratch?

(And if you can't coax them out of it for this, how the hell are you going to be able to do the same for real problems?)

<comment><USER15> But how do you administer something FizzBuzz outside of an on-site interview? How do you know they actually completed the task without being with them when they did?

I'm guessing Skype interview or something similar?

<comment><USER14> I'm using a simple shared editor such as collabedit or similar. You send the link to the shared space along with the phone number for the interview, and you let the candidate know that there will be some simple shared exercises so they need to be at a computer.

And then you ask your questions, and do FizzBuzz or similar, and watch them code.

</comment></comment></comment><comment><USER16> > However, I have yet to see one that would actually be better in the real > world than the simple, obvious solution.

Use counters, avoid modulo, and see a significant performance increase.

Computers suck at division, and FizzBuzz doesn't need division.

The solution is perhaps simpler than the obvious one as even a child could explain how it works.

[https://gist.github.com/buro9/5345664#file-fizzbuzz- html](https://gist.github.com/buro9/5345664#file-fizzbuzz-html)

On my laptop, in Firefox:

Fast: 203ms

Slow: 844ms

<comment><USER17> That depends on how you're defining better. The slow one is somewhat more readable, and since your test runs a million times farther than the 100 that FizzBuzz usually asks for, you're looking at a gain of .6 μs. That's an interesting set of priorities, unless you know something about how often this code runs.

<comment><USER16> I'm not sure anyone imagines running FizzBuzz in production. It is an interview tool only, first to determine whether the candidate can program, but which can also be used as a basis for some interview questions.

The counter example helps to answer whether the candidate understands how numbers are represented by computers and how addition and division function.

It also helps to answer whether a candidate knows what, in such trivial code, _could_ (not must) be optimised were the value of n to increase insignificantly.

As you say, probing questions about how often the code runs, what the value of n is, or various other questions will all vary the answer. But to suggest that the priorities are wrong is a little silly, most interview questions are wrong to some definition.

</comment></comment></comment><comment><USER18> > The dumb (or lazy or new) developer will not notice or care about the > appearance of a potential cool solution. They'll just bang out whatever > works.

The _pragmatic_ programmer (aka the person I want to hire) would also not care about the appearance of a potential cool solution, because experience teaches us that clever solutions tend to increase complexity and cognitive load, increasing not only the bug count, but also maintenance costs.

Yes, by all means be clever where it's warranted (strange constraints, bottlenecks, etc), but please not in regular code!

<comment><USER19> I really couldn't follow his logic at all. Being able to come up with a working (perfectly correct) solution somehow implies a developer is probably "dumb" or "lazy"? As if a truly "smart" or gifted programmer would be unable to come up with a solution because they're just _oh so intelligent and clever_. You either know how loops work or you don't.

<comment><USER6> Most smart programmers I know would prefer to product a good, or even the best, solution instead of any of the prosaic solutions. Unable to come up with a solution? Probably not. All the given examples are pedestrian. A really clever solution would recurse or search the web for a matching solution page or hash the solution space into a minimal table or something like that.

But agreed a proper programmer would never fail to produce a correct solution.

<comment><USER18> That's sort of what I'm getting at. There are two kinds of smart programmers: Those who look for every opportunity to be clever, and those who are satisfied to build pedestrian solutions until clever code is called for.

If you're going to build a clever solution (which almost by definition increases cognitive load on anyone reading or maintaining the code), you'd better be able to defend your actions. Performance is never a problem until it's demonstrated to be a problem.

<comment><USER20> Yeah, I'd say only go for a non-obvious solution if the result is at least as readable and maintainable as the obvious solution.

</comment></comment></comment></comment></comment><comment><USER21> This also points to a situation that I sometimes find myself, where I try to be "clever" in solving a problem and, even if the solution works, is ultimately more confusing than the straightforward method. As I've maintained more code in my life, I've learned to shy away from being "clever", but it's always there in the back of my mind.

I think this is one of the challenges of functional programming as well. It allows you to be _really_ clever, to the point of unintelligibility.

</comment><comment><USER22> I've seen people fail questions for this reason. We even tell them not to go down a certain path, or not to worry about optimizing the solution. But they keep on trying to go down the clever path.

<comment><USER23> The problem is ego. People don't act like the JSON that computers think like. An array in JSON can represent an unordered set, but people order it according to how they can become superior to others. People should be more like JSON.

<comment><USER24> > People should be more like JSON.

So needlessly verbose and unable to handle comments?

Oh, and unable to intrinsically distinguish dates from text, or real numbers from integers?

<comment><USER23> 5.0 is real. 5 is integer.

</comment></comment></comment></comment><comment><USER25> I think every programmer goes through the "smart" stage, where you start to get confident and write "clever" solutions for simple problems. Where you will hopefully transcend to writing simple solutions for hard problems.

Personally I hate stupid tests like these, just give me a real life problem that you are currently working on ...

Here's my fizzbuzz solution: [https://github.com/Z3TA/fizzbuzz/blob/master/fizzbuzz.js](https://github.com/Z3TA/fizzbuzz/blob/master/fizzbuzz.js)

And here's my favorite one, on how it would look like if implemented like most "enterprise code" looks like: [https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpris...](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition)

</comment><comment><USER7> This 'problem' with FizzBuzz is really a 'benefit'. I have seen it time and time again, incredible complex code by intelligent people attempting to chase an 'elegant' design.

Literally its my number one problem with senior developers where I work, refusal to leave working simple readable solutions alone.

<comment><USER26> But as she points out, FizzBuzz doesn't do a good job in telling you if you've found one of these developers because the context of interviewing is different than the context of banging out code on the job.

</comment></comment><comment><USER27> Internationalization suggests that "Fizz" and "Buzz" be parameterized...and maybe we shouldn't hard code "3" and since magic numbers aren't good practice either...and the possibility of a different search function for the "FizzBuzz" suggests parameterizing that value, too.

Which is to say that one of the problems with FizzBuzz is that the interviewer doesn't take it seriously enough to care about engineering practice at the level that matters. If they did, FizzBuzz would come with a test suite.

<comment><USER28> So if you're asked to do fizzbuzz in an interview, feel free to bring these things up. Just don't make it seem like you're looking for excuses not to write code.

If you approach fizzbuzz by saying 'okay, so you want me to write a program that generates this sequence on demand - otherwise we could just precalculate all 100 values - so I'm going to assume that you want something parameterizable. How about we make it take a dictionary of factors that map to certain keywords, and we take { 3: "Fizz", 5: "Buzz" } as an initial testcase?' I'm going to go along with that, so long as the code you write actually works. I might walk you back from internationalizing the output, but points for mentioning it.

<comment><USER27> FizzBuzz suffers from the StackOverflow fastest fingers on the internet problem, it favors cursory poorly engineered solutions. By which I mean what is FizzBuzz supposed to do if IO blocks because stdout got redirected to a resource that's not available?

When the code the interviewer wants to see has IO operations spaghettied throughout the business logic rather than separated as a concern, is the exercise selecting for people who are perfectly willing to do only what is asked rather than what is needed?

How many lines of code would FizzBuzz really be if we were serious about it as Engineers?

<comment><USER28> So.... you really are trying to avoid writing any code, then?

<comment><USER27> I wrote and published a FizzBuzz about a year and a half ago when applying to Hacker School. It's pass by reference available on Google. The technical thrust of my first comment largely reflects what I learned from the exercise. The IO and crosscutting concerns in my second comment are a reflection of more recent additions to my understanding of software systems and the exercise of rethinking FizzBuzz brought them to the surface.

The simplicity of FizzBuzz's business logic should not be seen as indicative that our computer systems are suddenly likewise simplified. Odds are you're not hiring people to write strings to the console.

</comment></comment></comment></comment></comment><comment><USER29> In my experience after reading her book and some of her articles I think Gayle (and many other interviewers) underestimates the effect nerves have on certain people. She may be a little too quick to classify certain people as "dumb" when, in fact, some people's brains just totally freeze up during traditional coding interviews. I suspect more outgoing, extroverted people have a hard time fathoming what that's like or even that it is possible.

</comment><comment><USER30> I can't wait for someone to ask me a fizz buzz question. I am going to write this out:

switch n case 1: case 2: print n case 3: print "fizz"

it's going to be so much fun.

</comment><comment><USER31> Yea I don't know how I feel about this article. I know my team lead asks FizzBuzz to all new hires, and he's looking for elegance and robustness even in simple designs because when we work on our complex systems, it matters a lot for having a good code base.

Just the fact they think in terms larger than just the basic code is what I think he looks for.

</comment><comment><USER32> 'The problem with using light grey text on a white background' would also make an excellent article topic.

</comment><comment><USER33> Out of curiousity, what is an elegant solution for her problem of finding out what year had the most people alive? I can think of a couple brute force methods, but I've not been able to phrase the question properly to find an ideal solution on Google.

<comment><USER34> Here's a solution that takes O(P + R) time, where P is the number of people and R is the total range of birth years.

First, notice that you don't really care _who_ died when. All that matters is someone died. People's birth and death years are fungible, in a sense. Each birth increases the population by one and each death increases the population by one.

Basically, you'll create an array where the value at each index represents how much the population _changed_ in that year (steps 1 to 3). Then you can use that array to find the highest population (step 4).

1\. Get the min birth year and the max birth year.

2\. Create an array where the size is the above range. Set to all zeros. Each index will map to / represent a year in the range.

3\. Loop through all the people. For each person, increment the index of their birth year and decrement their death year (or the following year, depending on whether or not they're counted as alive the entire year of their death)

4\. Just loop through the array, tracking the running sum at each index. The biggest running sum will indicate the highest population.

There are some other good solutions depending on what assumptions you make about P and R's relative size.

<comment><USER12> Hmm...

If you sort everyone's births and deaths you can just walk through the array keeping track of the number of people alive at each point and the maximum number of people alive at any point (and the year(s) thereof).

O(P log P) (from the sort), no explicit dependance on R. Are there any other good solutions? I cannot imagine that there would be anything that's sublinear in P, so about the only other thing I could imagine would be something that is linear in P and sublinear in R.

<comment><USER34> Yes, that's another good solution.

You can't really compare O(P + R) and O(P log P).

Of course, you could argue that P could grow a lot faster than R, so O(P + R) would be better. That's probably true in a "real world" sense, but not in a mathematical sense.

</comment></comment></comment></comment><comment><USER6> My sister's question was, how many Ping-Pong balls fit in a semi trailer? She would add no details. The idea was, could they function with limited info, make assumptions, come up with any answer at all. Most couldn't.

<comment><USER22> My follow up question if I was in that interview would be, "Is this how you operate, do you not provide critical information or am I a researcher?"

<comment><USER35> My follow up to that follow up would be, it's 2015, internet access is ubiquitous, and if you can't find the dimensions of a standard ping pong ball and a standard semi trailer without having your hand held, then we don't need your services.

<comment><USER36> In that case, would the interviewer be fine with me pulling out my phone or laptop and looking things up during the interview? If not, then I'd strongly question the interviewer's (and, by extension, employer's) sanity.

<comment><USER35> I'd sure hope so. I'd question any interviewer's sanity if they forbade standard working tools in an interview that's supposed to gauge one's ability to work.</comment></comment></comment></comment></comment>


Experts say automated accounts sharing fake news ahead of French election - <AUTHOR> http://www.reuters.com/article/us-france-election-socialmedia-idUSKBN17M31G <comment><USER2> Someone wants that ad money again huh?</comment>


Production-ready Docker images – Docker packaging guide for Python - <AUTHOR> https://pythonspeed.com/docker/ <comment><AUTHOR> After reading this I found and fixed a bunch of silly mistakes in my own Dockerfiles.

<comment><USER2> It's stuff like this that makes you realise just how much embedded institutional knowledge there is in experienced container admins.</comment></comment>


ObamaCTO, fixthisbarack, whitehouse2 -- what to do with this meme? - <AUTHOR>

Full disclosure, I started fixthisbarack.com. The site got probably over 7000 hits the first day after the environment redditors decided to put it on the front page.
Thursday: 6148 (started tracking after reddit decided to put it on the front page, and the server became unresponsive at times) Friday: 685 Saturday: 195 Sunday: 286 Monday: 261 Tuesday: 622
What is the natural history of these things? Do we know? Are there well understood branch points that have already been studied? A simple logical conclusion might be that something like this belongs on change.gov, but what would it accomplish? Does it carry the weight of the people? How could that be measured? <comment><USER2> What is the value, or barrier to entry of a competitive site? Save for the mildly amusing domain name, I don't think you have anything of _value_ , until you manage to build up an audience and following with some significant measurable stats.

No offense, but the "social news with voting" thing is pretty much a templated rollout these days (as your slinkset site would indicate). You're standing on the shoulders of a midget who is standing on the shoulders of a moderately large man.

The history of these things, IMO/IME, is that with a fair amount of work, promotion and luck you can turn it into something of moderate value (maybe mid 6 figures if you're lucky). A couple of mentions on reddit for a meme-site does not equal much in the short term.

Just my thoughts/opinions, etc. Somebody else might have a different perspective.</comment>


Amazon Offers Fire Smartphone for 99 Cents with AT&T Contract - <AUTHOR> http://www.bloomberg.com/news/2014-09-08/amazon-offers-fire-smartphone-for-99-cents-with-at-t-contract.html

<comment><USER2> This phone is a joke. It has a custom version of Android (that won't let you go to the google play store) that has Amazon plastered all over it for you to purchase more from their site.

With all of the data they are mining from you, they should be paying you to use the phone.

</comment><comment><USER3> is it a little too late? I hope not! It's good to see pricing being disrupted, not just technology.</comment>


NSA "can – and does – listen to everyone from senators to lovers" (1995) - <AUTHOR> http://articles.baltimoresun.com/1995-12-12/news/1995346001_1_nsa-eavesdropping-listening-national-security-agency

<comment><USER2> The most interesting aspect of this is that immediately after the NSA seems to agree that it lets trainees listen to random phone calls it claims it "absolutely does not" spy on citizens. What is spying, then, according to the NSA definition?

<comment><USER3> Whatever definition won't get them into trouble for it.

<comment><USER4> Don't forget that they need to paint their enemies into a corner by defining what 'spying' means.

Permanent offense is the best defense.

</comment></comment></comment><comment><USER5> At some point you & your partner will argue over who said they'd wash the dishes. Don't fret. Just call your NSA rep and have him read the transcript.

<comment><USER6> There was an old running joke among mathematicians in university math departments

"Q: How does one apply for a job with the NSA?"

"A: Pick up the phone, call your mother, and ask for the applications forms"

</comment></comment><comment><USER7> " _Shamrock covered decades-old secret agreements with the nation 's large telegraph companies under which NSA and its predecessor agencies automatically received copies of international telegrams._

" _At the peak of the operation, in the early 1970s, NSA analysts were reviewing 150,000 telegrams a month selected by computers scanning for keywords of interest to U.S. intelligence. Only in 1975, as Senator Church 's committee began its inquiry, was Shamrock stopped._"

</comment><comment><USER8> Holy shit, NSA is in the business of signals intelligence? Who knew?

</comment><comment><USER9> Alright guys, can we put an end to this NSA and Snowden stuff? Why are we pretending this is some forum to discuss politics and ethics? This is a forum for software and entrepreneurs. Can HN go back to it's roots?

Now, I am sure someone will immediately downvote and point out that this stuff is 'interesting' and related to hackers because this is data theft. If you are concerned, do something about NSA/Snowden. And then show HN what you have done. You will have my highest regards. But just reading and commenting on 100's of articles rehashing the same thing is a pointless waste of time. This is all getting very tiring. We have reddit for just this.

<comment><USER10> Though the tone and relevance of your post may not have been spot on, I have to agree. I spend an inordinate amount of my free time reading news and in- depth political commentary, but I've found myself returning to HN less and less as sophomoric legal analysis and cyber-anarchist hero worship is regurgitated to the front page ad nauseam.

This is not to say I agree with "Prism" or dragnet surveillance, but I've found HN to be the last place I've found actual insight on the issue as of late.

<comment><USER11> Dissing "cyber-anarchist hero worship" is awesomely ironic. ;)</comment></comment></comment>


Ask HN: Anybody want to build a WinRT app? - <AUTHOR>

I pre-ordered a Surface RT and have been reading up on the WinRT APIs and have a fair amount of .NET/C# background. Just wanted to see if people want to see a specific app on the Windows Store? <comment><USER2> Maybe change your title to "Any particular app you want built for WinRT?" or something similar. Right now the title looks much more like you're trying to ask for others to join you rather than you soliciting ideas for apps to build.

<comment><AUTHOR> I re-read it and you are right. I don't see a way to edit the title however.

</comment></comment><comment><USER3> Funny you mention this, I was just talking to a couple of people about putting something together. If you'd like to talk shoot me an email (in profile).

</comment><comment><USER4> I hope you can port a Lua or AWK interpreter to WinRT. If those are too big, try Scheme.

<comment><AUTHOR> I don't know anything about Scheme. But, porting AWK might be cool. Thanks.</comment></comment>


Apple Has 1,000 Engineers Working On Chips For The Post-PC Era - <AUTHOR> http://techcrunch.com/2011/10/09/apple-1000-engineers-chips/ <comment><USER2> What I find interesting about Apple designing their own chips is the notion that the whole is greater than the sum of the parts. Apple's value proposition with Macintosh is that by owning the entire experience--hardware, OS, even distribution to the store--Apple can deliver an optimized product that is superior to products where company H makes the hardware, M makes the OS, and CC distributes the resulting PCs.

Designing chips is the logical extension to this model. The chips are designed with the end product in mind, and everything works together to deliver the product's value proposition.

Other manufacturers end up hostage to whatever chips Intel and AMD feel like selling to everyone. They are hostage to whatever OS features Google feels like adding to Android, whether I integrates with the chips or not.

It's not a given that Apple will _necessarily_ succeed with this strategy, it requires an ability to juggle multiple balls at once, a very rare trait. There's a reason most businesses try to do just one thing well and commoditize everything else.

But it is certainly beautiful to watch them try to sail the opposite tack.

<comment><USER3> Many car manufacturers build and design the entire car themselves, internal and external parts included and sell them at one car brand dealerships and service them at dealerships. They might contract things like tires, audio speakers and stereo systems out, and occasional a part here and there, but by default they build everything else themselves.

<comment><USER4> _Most_ car manufacturers do not. For instance, how many of them do their own ECUs? And large swaths of the American car industry have long been defined by outsourcing relationships. Remember Delphi?

<comment><USER5> True. Being around Detroit you can see the entire industry that supports the "Big Three". There are companies that either supply or assist in the build of nearly every component of a car.

</comment></comment></comment></comment><comment><USER6> Sometimes I think the hype around Apple's A4/A5 chips is a bit much. Does anyone know if these chips are significantly different from e.g. Samsung's Exynos chips or for that matter any other chip on this list: <http://en.wikipedia.org/wiki/ARM_Cortex-A9_MPCore> ?

<comment><USER7> I don't know why this was voted down. The A4 is very similar to the contemporary Samsung SoC and I wouldn't be surprised if the A5 is very similar to Exynos. So far, Apple doesn't appear to be getting any dramatic advantages from having their own chips, especially considering the risk of not being able to switch chip vendors.

<comment><USER8> I think the one big advantage of having their own chips is the marketing angle. It's much cooler to say an Apple iPhone comes with an Apple A5 chip than with a Samsung Exynos chip.

<comment><USER6> Let me rephrase: What is the main difference (feature wise) between the Exynos 4210 and A5? What technical backing does their marketing have (9x better this and 100% faster that).

Samsung is pretty explicit about what their SoC contains: [http://www.samsung.com/global/business/semiconductor/product...](http://www.samsung.com/global/business/semiconductor/productInfo.do?fmly_id=844&partnum=Exynos%204210) \- well they have to, opposed to Apple they're selling the chip seperately.

<comment><USER9> The Exynos uses an ARM Mali 400 GPU; the A5 uses an Imagination Tech SGX543MP2. The latter is far faster; at least twice as fast in most benchmarks. Also, the A5 is known to have a lot of extra DSP hardware on chip, but the purpose of that is somewhat unclear for now (it has been claimed that it's to do with facial recognition, fast camera operation and/or Siri, but really no-one knows for now).

</comment></comment></comment></comment></comment><comment><USER10> the text of the article doesn't seem to explain how the assertion is made. Until last year (when I left apple), the PA Semi team (which is the A4/A5 team) was about 20 people (and they were hiring 3-4 more), so this is somewhat difficult to believe, but I might have outdated information. The designs are mostly modified arm designs.

<comment><USER11> 1,000 is probably wrong, counting every possible person who is vaguely related to hardware.

But the PA Semi team is way larger than 20 engineers, that's for sure. Even before the acquisition by Apple, they had way more engineers than 20. I'm the guy who filmed their product launch at the Power Conference.

<comment><USER12> Wikipedia says 150 people for PA Semi before they got acquired.

1,000 has to be wrong for two reasons. 1) That's an explosion in staff which your organization can't handle 2) 1,000 people on one chip is ridiculous and only something Intel gets away with.

A good estimate for a SoC would top out at around 200 people for the design, implementation and a 100% NIH syndrome.

<comment><USER7> It's chips, not one chip. I would guess that A7, A8, and A9 are being designed in parallel.

<comment><USER13> Of course they are. How long does it take to get from design to production? Apple takes the long view here.

</comment></comment></comment></comment></comment><comment><USER14> If this is true, I have to start wondering whether Apple plans to port OS X to ARM. Granted, they'd probably have to evolve ARM into a 64-bit architecture, but the power savings would be incredible. A MacBook Air with the battery life of an iPad 2.

(We already know Apple is more than capable of executing CPU transitions on the Mac. I suppose the only other question is how much people value Parallels and Boot Camp.)

<comment><USER15> They already did all the ground work when they forked OSX into iOS, and they're notoriously paranoid about keep their options open. I bet you they already have those prototypes lying around – but the economics won't make sense for another five years.

<comment><USER16> No way it'll take 5 years to move to ARM. I bet we'll see ARM Macbook Airs by the end of next year.

Here's what I think will happen - the Macbook Pro line will be slimmed down to Air specs, the Air that exists today gets discontinued to make way for an all- ARM version.

The Air brand will be the ARM laptop line, the Macbook Pro's will be x86 for a few years before they too switch.

<comment><USER17> >the Macbook Pro line will be slimmed down to Air specs

Wow, I hope not. Right now I use MBP as a desktop replacement. I've been able to get away with that so far because the iMac isn't normally dramatically far ahead of the 17".

</comment></comment></comment></comment><comment><USER18> How can you even have 1000 people designing a chip? A micro-processor is not _THAT_ complicated. Perhaps you can have people doing research on particular aspects, but research teams are typically small (maybe 5-15 people). It seems to me difficult to believe that it's even possible to have that number of people designing a single and insular hardware product, of which the manufacturing is being outsourced (so they don't have to build the making- machines).

<comment><USER19> They probably don't all work on the same chip even if the final results are worked down into a SOC. They probably have teams working on the graphics side as well as the audio processor.

<comment><USER20> That's what I thought. Also, memory chips, LCD display and power controllers, Thunderbolt... those can make a lot of difference in an Apple product.

</comment></comment></comment><comment><USER21> Fluff piece.

<comment><USER22> Agreed. This article is ridiculous. But hey, people love to read stories about Apple, no matter how fabricated and unrealistic they may be. Every article posted from TechCrunch should get a warning label placed on it.

</comment></comment><comment><USER23> I would never count Apple out based on their track record over the last decade, but I think it remains to be proven that they can execute on new devices without Jobs.

None of their big successes, from the iPod to the iPhone to the iPad, were anything brand new. They were better execution on an existing concept. We had portable music players, we had mobile phones, we had tablet computers... Jobs and Apple just out-executed everyone else in the market at identifying and delivering a better implementation.

Here they are apparently talking about really new stuff. Stuff we've never had before. Stuff that's "mind blowing." Last time I remember something like that from Apple it was called Newton.

</comment><comment><USER24> I'm curious if anyone knows of any developers who now regularly use something like an iPhone/iPad (more likely the latter) to program. I know Paul Graham has written about this stage in the evolution of mobile devices, but is anyone doing it yet? For myself I've played with a Lisp interpreter written for the iPod Touch, but of course it was something of a ridiculous activity. If we can start doing that then I'll feel a bit more "post-PC".

</comment><comment><USER25> Is the subtext of the article wearable computers?

<comment><USER26> What do you mean?

Smartphones are obviously wearable computers and they already exist.

<comment><USER25> <http://en.wikipedia.org/wiki/Wearable_computer>

<comment><USER26> Huh? Seems pretty clear from that that smartphones are obviously wearable computers.

<comment><USER27> They're the only type of "wearable" computers that make sense: i.e. computers you can easily carry in your pocket.

Occasional fantasies of computers built into actual _clothes_ are the domain of people who don't understand clothes very well.

<comment><USER26> Exactly. There is nothing that would stop us from making smartphones water resistant and shock resistant and sowing them into clothes. It's not that we don't do it because it's impossible, we don't do it because it's a stupid idea.

<comment><USER28> Ah, but think of the sponsor & advertising angle. Rent out the space on your t-shirt.

Eventually every surface will turn in to an ad. And animated ads after that. The animated t-shirt can't be all that far into our future.

</comment></comment></comment></comment></comment></comment></comment><comment><USER29> It's coming! <http://news.ycombinator.com/item?id=2258693>

</comment><comment><USER30> Will Intel finally have some real competition?

</comment><comment><USER31> With steve gone, I wonder if there's a future of Apple selling any excess chips for lower quality market competitors.

</comment><comment><USER32> Will they sell their chips to other vendors or will Apple treat the chips like their OS and not allow access beyond their sphere of control? Will they put in hardware-level controls to prevent jailbreaking?

</comment><comment><USER33> "the post PC era" is what the rest of us mortals have been calling "mobile" for about 10 years. but more power to ya, guys!

<comment><USER34> The devices people referred to as "mobile" for all those years weren't ever really intended as PC replacements... except perhaps in the developing world, where there weren't many PCs to replace.

"The post PC era" is meant to refer to a world where (except in some specific professional contexts) people largely stop buying PCs because of a new class of mobile devices that takes over their workload entirely.

If I say "the mobile era" to people, that means something very different than "the post PC era". This is what language is for. We create new words so we can talk about new things, even when they're small changes.

Larry Ellison whines about the word "cloud" and insists it's just "servers". But "cloud" is about instantaneous provisioning and other infrastructure that lets you target an undifferentiated set of servers, rather than having to administer each server one by one. And unlike a "cluster" you don't generally own the whole thing. What word should we use, if not "cloud"?

Yes, it's still servers. Yes, the iPad is a mobile device. Yes servers and mobile devices are old. But whats your problem with using new words for the parts of these phenomena which are new?

<comment><USER35> _"The post PC era" is meant to refer to a world where (except in some specific professional contexts) people largely stop buying PCs because of a new class of mobile devices that takes over their workload entirely._

Then I think we're a long way from seeing this era, simply because anything that requires more than a couple lines of text isn't just better on a keyboard than other input devices—it's vastly, insanely better (at the moment), a problem I don't see being solved in the nearish future. Rather, I suspect many if not most people will have one PC-esque device for keyboard heavy things and one or more "mobile" devices, using your definition.

This also assumes you're not counting laptops under your "mobile" rubric, which I don't think you are.

Anyway. I don't even see desktops going away all that soon because of one thing that gets lost on HN discussion: they're cheap: [http://jseliger.com/2008/12/26/computer-post-desktop-or- lapt...](http://jseliger.com/2008/12/26/computer-post-desktop-or- laptopnotebook/) .

<comment><USER20> "Then I think we're a long way from seeing this era"

Agreed, but we're just starting, maybe in a few years, who knows...

IMO, the term post-PC is a nice way to differentiate Android/iOS/WebOS/etc tablets from previous generation tablets that ran Windows or some Desktop version of Linux.

<comment><USER27> I think the laptop, rather than tablet, form factor is going to dominate in the medium-term future, because the portability vs usability tradeoff just doesn't encourage giving up your keyboard.

That doesn't necessarily mean that the laptops of the future will have a full- featured OS rather than a locked-down iOS-style OS. I mean, I'm sure yours will, and mine will, but will your mother's?

<comment><USER20> Oh, agreed. And the newer ultrabooks make the portability vs usability tradeoff much much smaller.

And maybe open/closed OSs will eventually converge. Look at Lion and Windows 8... I just hope they remain open!!!</comment></comment></comment></comment></comment></comment>


Simulated data: the great equalizer in the AI race? - <AUTHOR> https://medium.com/@charlesbrun/is-simulated-data-the-great-equalizer-in-the-ai-race-9ed30f9076db <comment><USER3> The author miss-understands how simulated data is created by GANS, VAEs, and other non-physics based simulations. Let's say you have a dataset and would like to create synthetic data using it and a GAN. Then you wish to estimate the distribution D of the data with a GAN. To do so the GAN learns the joint distribution P(X1, X2, ..., Xn) (where in the image case each X is usually a pixel) such that one may sample from D and obtain a new, synthetic image. Indeed, one will generate novel data but the distribution D that was estimated is merely a description of the original data at best and in practice a little bit (or a lot) off.

Now turn to the machine learning problem we sought to solve with the new synthetic data: what is the P(y|X1, X2, ..., Xn) where y is usually a class like "bird". In other words given an image predict its label. Since the data was generated knowing only the statistics of the original data, it can add no value beyond plausible examples developed using the original data itself.

Will this improve the accuracy of a model by providing additional edge case examples and filling in gaps? Somewhat. Will it understand data not represented by the original data and substitute for more thorough, diverse datasets? Absolutely not.

In terms of model improvement, yes synthetic data can help. In terms of the arms race? No. True examples provide knowledge that is unique. If one used a physics engine (GTA is popular for self-drivings cars) one can gather truly novel data; this is not the case for GANS.

It's concerning how willing people are to write articles on this subject without understanding the mathematics underlying the technology.

Do your homework and RTFM.

<comment><USER4> You are ignoring the fact that generative AI is not closed-loop algorithm. You can synthesize expected features in a data set and feed them to the detector - out of bounds of the generative neural network that rather serves the purpose of mapping into (a subset of) the proper input space.

The power of synthesis is not within the GAN or VAE, it is in the outside mechanism that guides the creation of content with specific domain knowledge about the feature space.

This might not replace the value of real data, but it will allow to accelerate bootstrap, improve coverage (at cost of accuracy), or provide free environments for auxiliary processes like CI/CD in many deep learning applications.

There is a lot of published material on synthetic data augmentation if you actually look for it.

<comment><USER5> Everything you said doesn't dispute the above comment and agrees with its core premise:

"In terms of model improvement, yes synthetic data can help. In terms of the arms race? No. True examples provide knowledge that is unique. "

<comment><USER4> I was rather commenting on the first part implying that training a neural network with the statistical distribution that comes out of a GAN or VAE does not add value beyond that generative model capabilities.

I do not agree on that because as I explained, with domain knowledge it is very much possible to shape the data generated for augmented learning - <USER2> the plain statistical variations of GAN and similar, which are obviously of very limited value in training.

</comment></comment></comment></comment><comment><USER6> Information theoretically speaking, how do you generate a "synthetic" dataset (as the article calls it) with the same fidelity as an original dataset without having access to a critical basis set of the original? What would you do to obtain that fidelity? Extrapolate from sufficiently many independent conclusions drawn from the original?

And as a followup, if you can generate a synthetic dataset by extrapolating from sufficiently many independent conclusions drawn from the original (as opposed to having access to the original itself), would you still need to use such a dataset for training?

Things like Monte Carlo simulation can be used to _approximate_ real world conditions, but they can't typically capture the full information density of organic data. For example, generating a ton of artificial web traffic for fraud analysis or incident response only captures a few dimensions of what real world user traffic captures.

The author talks about simulating data to focus on edge cases or avoid statistical bias, but I don't see how simulated data actually achieves that.

<comment><USER7> Cool points -

"...original dataset without having access to a critical basis set of the original?"

I think that they're not trying to copy existing datasets but are trying to generate new datasets that solve various computer vision use-cases. Looks lke they're using 3D photorealistic models and environments to then generate 2D data. It is a cool idea, if they had the ability to synthesize a large amount of 3D people and objects and insert them into 3D environment in ways that made sense and then run motion simulation, they could hypothetically create an incredible amount of high-quality data. Sounds pretty hard to do honestly...

I think Monte Carlo is used for something very different than computer vision / machine learning. Monte Carlo is usually used to estimate an average result given many dependent variables and a simplified model of the problem. So if I want to estimate how far my paper airplane will fly and I have a simulator, I would vary the paper thickness, folds and wind. Each time I would run the simulator, get a result and then I can estimate the average distance the paper airplane would go! (actually sounds like a fun project lol). Anyway this is just different.

Simulation is good for edge cases because you can simulate them disproportionally to their prevalence in the real world. So let's say that we're in a smart store and we want to recognize when an elderly person falls on the floor to send human help to the correct location. This happens maybe one in 5 year in a given store. If we were to gather data we may get 10 examples. If they can simulate this, they could simulate 100k elderly people falling and then train models to recognize it! Kind of crazy really.

<comment><USER8> But then how do you simulate, or imagine all the possible ways of falling and all the possible places this could happen? You have one sample, that's all. Ultimately, you have to use domain knowledge, but domain knowledge comes from observed data. High fidelity comes from having a lot of data. This takes you back to ground one.

</comment></comment></comment><comment><USER9> This one time we wanted to partner with a medical research team in the university. They had data on a particular disease, and wanted to present it to users visually.

Now this was for the public good and we were going to fund the technology to display the data, and they would provide the data. This way people could assess how much various drugs could help them and what the outcomes were.

It was also thought that other researchers could find patterns in the data.

Suddenly the not-for-profit institute got cold feet because they would be "giving away" the data they had spent millions to acquire. Meanwhile we, a for-profit institute, were happy to fund our share as a public good.

They decided that, instead of giving away their data, they would give away simulated data. This, it was felt, would benefit the patients and _researchers_ who might draw conclusions from the data.

Now these are phds at the top of their field. But, you know, its sort of obvious that all they would do is reproduce their biases and make it so that no one else could challenge those biases. I mean, for you data science types, this is 101.

Ever since that experience, I have a distrust of simulated data.

<comment><AUTHOR> Sounds like a pretty bad experience indeed - surprised that was their recommendation vs completely anonymizing the data. You didn't share if you went ahead with it and saw any results? If so, it sounds like they were not good. Either way, I don't think you can let one bad experience cast doubt on a whole field. There are plenty of example of medical research institutes using synthetic data in combination with real patient data to improve their neural nets. I'm no medical expert, but data augmentation or full simulation works when it's used in the right context. Having said that creating biased algorithms that generate biased data is certainly a reality as well.

<comment><USER9> we didn't go ahead with it because we kept having calls with the different people in the university, and they kept putting off the decision. This was years ago and as far as I know, maybe their process is still going on.

</comment></comment></comment><comment><USER10> There are a couple points not generally made in discussions of data and the great AI race.

Most data is crap. So the mountains of data that are supposedly an advantage, in China or in the vaults of the large corporations, are not fit for purpose without a tremendous amount of data pre-processing, and even then... And that means the real chokepoint is data science talent, not data quantity. In other words, in many cases, the premises of this statement should be questioned.

Secondly, a lot of research is focused on few-shot, one-shot or no-shot learning. That is, the AI industry will make this constraint increasingly obsolete.

Thirdly, with synthetic data, it is only as good as the assumptions you made while creating it. But how did you reach those assumptions? By what argument should they be treated as a source of truth? If you are making those assumptions based on your wide experience with real-world data, well then, we run into the same scarcity, mediated by the mind of the person creating the synthetic data.

<comment><USER11> Exactly this. Amazing, a picture of a white-mans arm holding a box of orange juice. But what if the person is a woman, or dark skinned, or has prosthetics, or is a child, or it's a bag/bottle instead of a box, or the lighting is different, or the camera is low resolution, or there is someone standing in the way...

Anyone in this space is well aware that the benefit of big data isn't just the _amount_ of data, but that's it's a real representative sample of the type of data you are actually going to need to work with. Big data solves the problem of people being bad at creating simulations. To suggest simulations as a solution to big data is kinda getting the relationship backwards.

<comment><AUTHOR> Respectfully disagree. Again, I'm not suggesting SD will solve all problems. Big data is critical and will remain so. However, using a combination of SD and real data will make AI algorithms more robust than using big data alone. I do agree that the world is messy and it's hard to recreate the chaos and weirdness of the world. However, to think that at some point we won't be able to completely mimic the real world and all the variations out there is strange. Re: your example, its actually pretty easy to span millions of humans based on ethnicity, age, body mass, etc. It's just a matter of time until this problem gets solved.

<comment><USER12> > However, to think that at some point we won't be able to completely mimic > the real world and all the variations out there is strange.

Why? I think it's strange to believe the opposite: that something as simple as a computer program designed by something as simple as the human mind definitely should be able to adequately simulate the complexity of the real world.

<comment><AUTHOR> Really? I think if we were to bring back our close ancestors (4-5 generations away) they'd look at our world like we see Harry Potter's: pure magic. I mean flying metal birds, fire that instantly turns on and off, machine that move around like ghosts, small boxes that can talk back, musicians on demand in a box? I think you get my point, you're selling humanity short. There's no limit to human ingenuity and there's a reason Elon Musk still doubts we're living in a simulation.

<comment><USER12> There's a massive difference between 'develop technologies which are indistinguishable from magic to people who don't know how they work' and 'completely simulate the informational complexity of the world using the human minds and computers with comparatively limited information processing capabilities.'

I'm not sure the second is even a logical possibility, never mind a practical one.

<comment><USER13> Dude, if you're referencing information theory you clearly don't understand how to create tech. Obviously they're not trying to simulate the universe accurately lol. Simulating the real world for specific use-cases to solve computer vision for practical applications is super interesting. If they have customers, makes sense.

</comment></comment></comment></comment></comment></comment></comment><comment><USER14> The answer is no, since when you generate data, you either

* Have a set of data as a "basis"

      1. This diminishes the "equalization" factor since you
      need a lot of data to get a good approximation of the
      distribution anyways.

      2. You need to create a model based off of the set,
      which mathematically should be close to the same problem
      as just building the target model.

* No or small training set to use

      1. You need to create a model that probably uses some
      stat distribution to generate. Your target model will just
      learn that distribution.

      2. Your initial assumptions create a distribution, and
      that is not going to be the same distro of real-world
      data. Maybe painfully off-base. I've worked on this
      problem for months and it's fairly difficult to get
      perfect in an easy (modeled by simple stat distributions)
      scenario.

There are problems where generating data can work, but they're specific problems or can only be used for rare edge-cases that don't show up enough in a dataset. For the most difficult problems it is probably just as difficult to generate "correct" data as it is to generate a model without real-world data.

<comment><USER7> Yeah but you're assuming that you know how their creating this data. Just throwing an option out there - what if they created a latent space of 3D people and iteratively expanded it with GANs and 2D real image datasets. That would generalize.

Just a thought, not sure what's really going on there, I just know that they probably have something interesting they're cooking up!

This is a really crazy vision

<comment><USER14> Training a GAN to generate people without a significantly large dataset (if that's even possible) is probably just as difficult of a problem as just building the model you want in the end without sufficient data.

Assuming those image sets are small they will create a model with a large bias. If you're talking about fine-tuning an existing model with small datasets, this is done already and works fairly well if not overused.

It all comes down to: to create the first "data-generating" model you need a lot of data and compute. Expanding it is a different story, but that isn't where the problem lies. We come full-circle back to the same problem as what we started with: big players can afford to build these models and small players can't.

</comment></comment></comment><comment><USER15> I read this because it's an interesting question but the article is just an advertisment for the poster's company. I didn't really learn anything and half-way through felt like a sucker.

</comment><comment><USER11> Should you write an article that can be summed up by "no"?

>For a lot of tasks the performance works well, but for extreme precision it will not fly — yet.

But we all knew that going in, didn't we?

<comment><AUTHOR> Disagree, otherwise I obviously wouldn't have written this piece. ;) Synthetic data (SD) is not a silver bullet that will solve all problems, but it opens up a lot of opportunities. I'm seeing cool startups using SD to accelerate their R&D efforts and launch products in production in ways I didn't see 2 years ago. Imho, the quality of SD is reaching a tipping point and the sim2real gap is starting to disappear.

<comment><USER16> This not a personal attack but I would just like to my point out the insane number of weasel words/marketing speak phrases (ie intentionally imprecise but rhetorically powerful terms) in your response

>is not a silver bullet

>opens up a lot of opportunities

>accelerate their R&D efforts

>Imho

>reaching a tipping point

>gap

>starting to disappear.

This is what it reads like:

"we're getting to being able to approach the cusp of potentially honing in on the vicinity of the realization of this technology in the future"

So your entire response doesn't commit to any strong claim at all but it sure sounds like it does!

Incidentally I wonder if you're aware you're doing this or if it comes, subconsciously, from reading lots of writing that's like this.

</comment></comment></comment><comment><USER17> If you use computer generated images to teach your networks, you have a nice network for computer generated images. It might be good to pre-train a net (instead of random weights), but you still need labeling of real world images. E.g., a guy once trained a self driving car model in GTA 5. I'm sure this algorithm won't do great in the real world. But I already see an industry forming, promising to get rid of all labeled data. And there will be idiots believing it. That's how all the Silicon Valley startups work. Unicorns on Powerpoint slides and an empty basket in reality. (src: living and working in the valley)

<comment><AUTHOR> I read about the guy who used GTA to train a neural net. I think he was trying to make the point that although obviously imperfect, using simulated data could actually work. I'm not saying using simulated data (SD) should the be- all end-all for training neural nets, but we're seeing algorithms performing better when they're trained using a combination of real labelled data and SD rather than real data alone. I hear your point though about hype cycles and the tunnel vision SV can often fall into.

</comment></comment><comment><USER18> Just had a thought: is this part of the reason we sleep? Simulation of data to train our neural networks.

<comment><USER4> Highly interesting thought! Based on Psychology's understanding of dreams I would guess that sleep is actually rather a replay of real experience to stabilize our neural network, but most probably augmented with synthetic variations of the experience data.

</comment></comment><comment><USER19> Simulated data is provably more vulnerable to adversarial attacks. It only gives the illusion of more data (quite literally), and should not be used for mission-critical debiasing. A NN trained on mostly simulated minority faces and mostly real non-minority faces is a nightmare, the worst of both worlds: a plausible deniability that the algorithm is unbiased, and extreme susceptibility to adversarial attacks that take advantage of this illusory unbiasedness.

</comment><comment><USER20> I think some people here are confused because they imagine financial/customer synthetic data where the pattern to simulate is unclear, instead of computer vision, where the pattern to replicate is obvious as we see it before our eyes. This company seems to be focused on specific use cases of computer vision synthetic data so makes sense imo.

</comment><comment><USER7> I would definitely saw that this is extremely hard to accomplish on one hand and on the other if it works it would be a game changer!

A good simulation is the holy grail of AI. It solves the data bottleneck once the data can generalize to the real-world. Let's see them prove that!

</comment><comment><USER21> Domain randomization works well for robotics tasks.

<comment><USER8> references?

<comment><USER22> [https://lilianweng.github.io/lil-log/2019/05/05/domain- rando...](https://lilianweng.github.io/lil-log/2019/05/05/domain- randomization.html)

<comment><USER8> Good and convincing example. thanks for this robotic perspective.

</comment></comment></comment></comment><comment><USER23> This sounds very wrong.

If you train a model using simulated data, the result you can obtain will be a slightly worse simulation.

</comment><comment><USER24> Really interesting read, thanks!

</comment><comment><USER25> Sure if you have a generative model and you can add in noise then why not.</comment>