Tesla owners locked out of their cars after app stopped working - <AUTHOR> https://www.businessinsider.com/tesla-owners-left-stranded-app-down-for-maintenance-2019-9 <comment><USER2> Why are people relying on the phone key as the only key for their car? What happens if you break your phone? Now you can't drive home?

Stupid. Always carry the real key with you.

<comment><USER3> I thought Model 3s didn't have keys.

<comment><USER2> They come with NFC credit cards

<comment><USER4> True, but there is still no physical way to turn the car on. Teslas rely on wireless communication to turn on. That seems like a poor design to me.

<comment><USER5> So what you're saying is that keyless start mechanisms (also wireless btw) in modern cars today are also poor design?

Even if the keyfobs on the S/X run out of battery, they can still be used to unlock and start the car. Just like the keycard on the Model 3 (NFC based no battery needed): [https://youtu.be/0J1VbeDfQmg?t=24](https://youtu.be/0J1VbeDfQmg?t=24)

<comment><USER6> Most keyless start systems have a backup physical key[1] hidden inside the remote fob and will use very short range RFID [2] similar to older physical turn keys and their immobiliser chips to authenticate with the car ECU and allow the engine to start.

[1] [https://static.cargurus.com/images/site/2016/03/21/20/42/pic...](https://static.cargurus.com/images/site/2016/03/21/20/42/pic-3533884746378553322-1600x1200.png)

[2] [https://www.mazda3revolution.com/threads/if-the-battery- in-t...](https://www.mazda3revolution.com/threads/if-the-battery-in-the- remote-dies-start-the-car-by-touching-the-push-button-with-it.195610/)

<comment><USER5> I'm aware of this as I have owned cars with this feature. Modern cars do not use the physical key to "start". It's mostly only to open the driver side door.

See: [https://www.youtube.com/watch?v=BttKQ6K-Y74](https://www.youtube.com/watch?v=BttKQ6K-Y74)

RFID/NFC is used to actually start the car like you pointed out.

On all current Tesla cars, they fobs and keycards can both unlock and start the car, making a physical key pointless.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Once I left my house key at home. "No big deal," I thought, "I can get in through the garage." I got home and the power was out. I was locked out. If I'm understanding the logic, that means PG&E left me stranded.

</comment><comment><USER5> I've have seen two articles like these within the last hour. They are straight up clickbait. You do NOT need the app to unlock or operate these cars. The Model S/X have regular keyfobs and the 3 has a keycard.

</comment><comment><USER8> Just to be clear app didnt stop working only the backend service had a downtime close to 2 hrs. During this time i was able to still use phone as a key. Only things that rely on backend service wouldnt work, like remotely unlocking you car from different country for whatever reason.

</comment><comment><USER9> This is why you should buy a car made by a car company, not by a tech company.

Eg: my car has two separate keyless methods (BT & nfc) implemented in the same keyfob, and if need be, it can also be physically inserted into a special hole (we call them keyholes) to physically unlock the car even if both car and key have no power!

People could actually die of exposure if locked out of their cars in some climates. This is not a joke!

<comment><USER10> Tesla's do come with a key, it's a card that you're supposed to carry with you and it always works.

The phone app is a convenience feature. Although it works flawlessly 99% of the time, you should not rely solely on it

<comment><USER9> IIRC the card is still electronics which means that it will not work if there is no power or a failure in the electronics

<comment><USER11> If your electric car doesn't have any power then you have bigger problems than not being able to get inside it.

<comment><USER9> Such as? Car is enclosed so I shall not die of exposure in there by the time help arrives. I shall die outside when it is minus 30 Celsius and windy</comment></comment></comment></comment></comment>


We've long blamed carbs for making us fat. What if that's wrong? - <AUTHOR> https://www.vox.com/2016/7/6/12105660/do-low-carb-diets-work <comment><USER2> So, does this writer at vox have an agenda?</comment>


Ask HN: AdMob vs. iAd - <AUTHOR>

I am new to game dev. I am developing a game for ios. And I want to know what is better for making money adMob or iAd for both banner and interstitial. I am planing to release app world wide. I would also like to know if there is some way of improving adMob over iAd or vise versa. <comment><USER2> Remember that iAD doesn't work worldwide, it's only enabled in selected countries (Australia, Canada, France, Germany, Hong Kong, Ireland, Italy, Japan, Mexico, New Zealand, Spain, Taiwan, the United Kingdom, and the United States; see FAQ -> iAd in iTunesConnect).</comment>


HTTP Client Performance – IO - <AUTHOR> http://blogs.atlassian.com/2013/07/http-client-performance-io/

<comment><USER2> NIO has significant impact on HTTP Servers not on stand alone single instance clients.

The only time you'd use a NIO client, is on a server - for example, when building a caching proxy server.

The expected benefits are higher throughput of the proxy (lower CPU/RAM consumption allows multiple clients to operate in parallel).

Individual downloads being faster was never expected to be a benefit

<comment><USER3> > NIO has significant impact on HTTP Servers not on stand alone single > instance clients.

This is true for the asynchronous network IO parts of NIO, but definitely not all of it. It also enables memory mapping and DMA, two things that can have significant impact on stand alone software.

</comment></comment><comment><USER4> Interesting article, but do many people use curl for binary downloads? I thought most sysadmins used it for viewing headers and/or parsing raw text. For binary downloads wget seems to be favoured. So with that in mind, I'd be curious to see how wget compared with the other solutions in those benchmarks.

DISCLAIMER: I'm not trying to imply that my way is "better" nor the only way HTTP GETs should be called. I'm only commenting on how I generally work and the trend I've anecdotally observed. Though I'd be interested to see if many others on here do prefer curl over wget for pulling binary files.

<comment><USER5>
      [13:17:18] i13:klausa:~% uname -a
      Darwin i13.local 12.4.0 Darwin Kernel Version 12.4.0: Wed May  1 17:57:12 PDT 2013; root:xnu-2050.24.15~1/RELEASE_X86_64 x86_64
      [13:17:19] i13:klausa:~% curl
      curl: try 'curl --help' or 'curl --manual' for more information
      [13:17:22] i13:klausa:~% wget
      wget: Command not found.

<comment><USER6> and this is...?

<comment><USER4> A demonstration about how OS X ships curl but not wget. Essentially he's just running

        which {curl,wget}

to demonstrate that curl is in $PATH where as the shell cannot find wget (since we're talking about base installs it's safe to assume that the aforementioned utilities should be in $PATH by default - if included at all).

<comment><USER6> Thanks, that makes sense now.

</comment></comment></comment></comment></comment><comment><USER7> For those (like me) who didn't know what NIO was, and got lost in the second paragraph, from Wikipedia:

"The APIs of NIO were designed to provide access to the low-level I/O operations of modern operating systems. Although the APIs are themselves relatively high-level, the intent is to facilitate an implementation that can directly use the most efficient operations of the underlying platform."

[http://en.wikipedia.org/wiki/New_I/O](http://en.wikipedia.org/wiki/New_I/O)

</comment><comment><USER8> It's an interesting subject, I just wish his benchmarks were much more indepth. I would like to how the amount of sequential iterations of the code, the HTTP Server, JVM, OS, kernel, latency, jitter all affect the performance.

<comment><USER9> Yes. JVMs are slow for short-lived program executions compared to native code. By default, Hotspot does not compile a method until it is executed 10K times. Most libraries in the Java ecosystem are written to optimize performance over a long execution lifespan at the possible expense of startup time. The Apache HTTP libraries allow pooling of threads, HTTP keep-alive as an implementation detail, buffer re-use, etc. So, evaluating these libraries by starting up a new JVM for each run inherently tests them under a circumstance for which they were not designed/optimized. Gradle (a build tool) sort of solves the problem of short-run invocations by forwarding command line requests to a long-running Java background daemon.

</comment></comment><comment><USER10> Thanks for doing this! A very useful set of results!

I'd be curious to see how these each behave when needing to manage concurrent HTTP connections, fetching files from an ultra-fast server such as Netty, nginx, or Undertow.

Say 64, 128, 256, maybe even more simultaneously.</comment>


China And Open Source - <AUTHOR> http://teddy.fr/2013/02/27/china-and-open-source/

<comment><USER2> Good assessment. Shanghai is certainly rocking along.

I'm in Chengdu these days at perhaps China's fastest growing software community...not the biggest yet, but its the up-and-coming place to do software. Its next to impossible to get Chinese devs to share and collaborate in ways we're used to in the U.S. Frustrating to see so much held back. The culture of not willing to informally present/collaborate in front of others, even small groups of three to five co-workers, is a huge barrier.

There are exceptions. I hosted a start-up weekend last year in Chengdu and was pleasantly surprised at how well around 60 people collaborated and presented.

Perhaps some enterprising Chinese could come up with a form of "rejection therapy" that some software devs in the West like to use to get into selling their wares. I'm not sure what this would look like. Anything that would get people to practice informal/ad-hoc openness to learn that you won't lose face, not in a friendly environ, of which there are quite a few these days.

For those not familiar with what most Chinese experienced from the moment they set foot in grade school and prepped for from birth: You're praised for getting the answer "right and fast". Not only does nothing else count but is possibly counted against you. Your classmates laugh at you for being wrong. Your teacher scolds you for not quickly regurgitating the reams of facts and quick calculations you are meant to memorize. You're measured by test scores only. This "institutional" problem is compounded after college where they find themselves in rigid work environs. Again, measured for getting correct exactly what you are told to do and only that.

In my recent struggles, I've had to "join the system". My Chengdu employees are only used to being dictated terms and measured. So I'm trying to hack the system. I put in this quarter's performance measurement worksheets that they get negative marks for not participating. Don't speak up and volunteer some idea when I ask a question, lose points, which equates to losing money. You don't lose points for being wrong, but for not speaking up at all. Just having quarterly performance worksheets is foreign to me. But its not to them. So I'm turning it on its head and measuring behavior I need them to exhibit.

What to do when you're a progressive software shop in China that wants your bright and good-hearted Chinese developers to accept "Your free, fly as high as like. Experiment. There is no punishment for getting the answer wrong! Collaborate! Iterate!"

Its changing. Mostly for the better. From 2000-2002, with my first dev shop in Shanghai, it took me two years to get my developers to come out of their shells. 10 years from now, this assessment will hopefully seem foreign to a 20-something Chinese programmer. But until then, it ain't easy.

</comment><comment><USER3> I work at Douban, in Beijing, and I have the impression this post is only superficially spot on. Many Chinese developers are very much into open source, and have all the skills and dedication to participate fully in this movement.

Obviously they are coming later than most developed countries, and many geeks cannot afford to spend a couple of years on personal projects that are not guaranteed to yield enough game or revenue, but it is growing and promising, especially in mobile and hardware.

<comment><AUTHOR> It wasn't my intent to doubt the potential of local developers. China has a lot to offer and I actually strongly believe, as the end of my post implies, that we'll see a rising participation of Chinese developers in the OSS community. Heck, most of my teammates are Chinese and they kick asses.

That being said, on the ground it still feel very fragmented and insular. Some of the fundamentals of a healthy and self sustaining local culture are still missing.

<comment><USER4> The community in Shanghai has grown more vibrant these years. Though, few people tend to join the community (those recurring faces don't really count) actively but it's growing, slowly.

</comment></comment></comment><comment><USER5> Many big Internet companies in China only care about profit and believe OSS is only a waste of time. Furthermore, large majority of Chinese developers are suffering from low pay, mandatory overtime, etc. The life sucks, how can I have a motivation to make contributions? IMHO, the industry even the whole society need to enhance understanding to local developers, accept their hidden individualities, make better environment in technology(f __k off GFW). I believe the OSS or hacker community will be stronger as time goes on.

I'm obviously a Chinese and sorry for my English(language matters, you see? :)

<comment><AUTHOR> Not much different from the situation in the Western world a decade or more ago. This will change in the next decade:

\- The latest generation of Chinese tech companies is already very different from their established counterpart (Tencent, Baidu...) in almost every aspect, especially towards their employees.

\- The GFW won't survive another decade in its current form. There is simply too much internal pressure.

I'm actually convinced that there is an incredible human potential in China, provided you give them the proper opportunities.

If your job sucks so much, consider joining us : we're recruiting folks to build stuff with node.js, NoSQL, Elastic Search and a gazillion other Open Source technologies.

<comment><USER6> In what ways are the latest generation of Chinese tech companies different from established counterparts?

<comment><AUTHOR> I'm not sure I have an accurate answer to this but let me try.

I feel like the younger companies have developed more aggressive engineering cultures. Tudou, Dianping, Douban seem to embrace more their technical side, when Baidu for example has more of a business and sales spin to it.

In particular, I've noticed this difference through;

\- The involvement of these newer companies in OSS, tech event s...

\- The reaction of local geeks towards these companies: you'll find a lot of young Chinese programmers who think Taobao is a pretty awesome company when it comes to tech, Baidu not so much (I think most of them refer to it as a sales company...).

</comment></comment></comment></comment><comment><USER7> Here is (one of) the organizer of BarcampHK ( as mentioned by @wyeunho ).

7+ years ago J.Aaron Farr (ASF) talks about open source in China. I put his slide online and there are still views/mentions everyday... guess what? People have the same question, and there are not much good answers.

I do agree a lot with the blogger. Without Taobao and perhaps Douban, business propelled open source movement in China by Chinese is quite a shame to be mentioned.

Just try to put my own self as an example, in 2003-2007, I do quite a lot of breeding edge OSS project digging and delivered hundreds of patches ( mainly among asterisk, qmail, horde, IMEs, bbs-related stuff... ). Jumping into the business field, I'm damned to be a pure consumer... shameful. Most of the time clients stop me from releasing the code. But from my own perspective, its more like they believe in hasten broken code with cheap labour and obscurity is the only safe. It was hourlyWTF for me.

But I still do barcamps, still stressing open source is not a biz talk but hands-on the hack. The damn thing is I, as a foreigner/guest in cities out of China (Bangkok,Tokyo,SG etc), can freely challenge super facial "open source" demonstrations, but hardly do the same in HK/GZ, where I am the organizer. Just can't be the black face too often.

In open source we need open minds. The whole Asia thing is not quite open so far. People easily feel ashamed/transgressed for technical challenges. It wastes a lot of time to just be nice and "suggesting" the damn alternatives. It is not about China, but the whole Chinese culture circle including JP/KR/SG.

Taobao is good that their engineer are both courageous to show what they can do ( such as strong urge for node.js security patch. They show how to be better and keep pushing the U.S. to acknowledge. ), and humble enough to shame what have done wrong among the community.

But these are rare kind of people. I just hope to foster more open minded ones, and the spirit of hand-on hacks.

Again, it is not about how much open source projects you know or how is your level of skill. It is more about how openness jam into the corporate culture and the civic society at large.

</comment><comment><USER8> Great post, we still have a lot of things to do in China to improve the opensource environment

</comment><comment><USER9> > I've been more than once sitting in events in Shanghai and Beijing expecting > some "geek porn" (understand "very technical talks")

A great article, but that sentence really made me cringe.

<comment><AUTHOR> Point taken. Fixed.

</comment></comment><comment><USER10> This is very interesting. I wonder if other non-English speaking countries have a hard time with OSS?

</comment><comment><USER11> The guy that runs VeryCD is in Shanghai. You should get him to come in.

<comment><AUTHOR> I have a couple friends working at VeryCD, but I'm not entirely sure what you suggest: inviting him to the Shanghai Open Source meetups?

<comment><USER11> Yes. Wow, I didn't know it was a proper company now. Back in 2004 when I was in touch with him it seemed a one-man operation.</comment></comment></comment>


NMA strange, hilarious propaganda video on Wikileaks - <AUTHOR> http://www.youtube.com/watch?v=iw7j_c2nTHM

<comment><USER2> Hilarious, but flagged for being off-topic here.</comment>


Are there any business books for Hackers? - <AUTHOR>

Are there any business books written for/by hackers that give data structure/algorithm analogies for understanding social/business processes ? <comment><USER2> I recently started to collect some links off HN that had to do with business books that were somewhat more programmer friendly. Sadly, nothing that matches what you speak of (though that would be very cool!)

some books

[http://www.amazon.com/The-Art-Start-Time-Tested-Battle- Harde...](http://www.amazon.com/The-Art-Start-Time-Tested-Battle- Hardened/dp/1591840562)

[http://www.amazon.com/The-Bootstrappers-Bible-Business- Almos...](http://www.amazon.com/The-Bootstrappers-Bible-Business- Almost/dp/157410103X)

[http://www.amazon.com/Financial-Intelligence-Managers- Knowin...](http://www.amazon.com/Financial-Intelligence-Managers-Knowing- Numbers/dp/1591397642)

[http://www.amazon.com/Founders-Work-Stories-Startups- Early/d...](http://www.amazon.com/Founders-Work-Stories-Startups- Early/dp/1590597141)

<http://www.netmba.com/> <http://sivers.org/book>

Heres a big thread that had many suggestions: <http://news.ycombinator.com/item?id=947581>

</comment><comment><USER3> ... if only business followed the logic of programming languages ...

<comment><USER4> I imagine that business follows a kind of social logic. You basically just need someone who knows both types of logic to make the comparisons for you. Presumably there are people who know both or YC would have a different name.

</comment></comment><comment><USER4> That would be awesome. I have two ASD sons and have spent endless amounts of time explaining social stuff to them. My oldest thinks in pictures, so I long ago learned to use very visual metaphors. They eventually began using video game examples to illustrate points when we talked.

Anyway, if it does not already exist, I hope someone is inspired to try to write it.</comment>


Law Students Collect Personal Info on Justice Scalia - <AUTHOR> https://abcnews.go.com/TheLaw/story?id=7473750&page=1 <comment><USER2> (2009)</comment>


Google introduces new meta tag to properly cite writers - <AUTHOR> http://googlenewsblog.blogspot.com/2010/11/credit-where-credit-is-due.html

<comment><USER2> Why aren't these LINK tags with appropriate REL extensions?

</comment><comment><USER3> What is to stop me using an original tag when it is syndicate or the syndicate tag when it is original!

<comment><USER4> There's nothing to stop you. I imagine Google's algorithm(s) will determine the probable original source as the one with the most citations (along with timestamps and other secret google-fu) and penalize sites that fake citations by giving their citations less weight in the future.

</comment></comment><comment><USER5> Interesting. I wonder if Google is trying to push this because no one uses the semantic blockquote, cite and q tags properly?

Edit: Seems to me if the above tags were used properly Google should be able to determine original source just by sorting chronologically.

</comment><comment><USER6> Is this an attempt to cut down on blogspam? They'll need quite a few people to indicate the original author, but _maybe_ they can catch the non-compliant sites that way?

Still, they'd need to do _something_ to get people on board with this...

<comment><USER7> I guess it must be used for building a reputation system. Google pretty much knows who published what first (or has at least a reasonable idea of that). If the re-publishers lie with their metatags, or at least lie consistently, they get punished with a deranking.

Edit: oops adbge was there first, sorry.</comment></comment>


Payfone raises $100M for its phone-based digital verification and ID platform - <AUTHOR> https://techcrunch.com/2020/06/18/payfone-raises-100m-for-its-mobile-phone-based-digital-verification-and-id-platform/ <comment><USER2> It reads like an ad written by themselfes... How can it be privacy focused, when the whole premise is that they check your data against databases of other companies.</comment>


I once tried to cheat sleep, and for a year I succeeded - <AUTHOR> http://qz.com/430415/i-once-tried-to-cheat-sleep-and-for-a-year-i-succeeded/

<comment><USER2> I feel the need to mention insights into sleep from the SuperMemo site: [http://www.supermemo.com/articles/sleep.htm](http://www.supermemo.com/articles/sleep.htm)</comment>


How terrorists use encryption - <AUTHOR> https://www.ctc.usma.edu/posts/how-terrorists-use-encryption <comment><USER2> I really dislike this headline - though it's true. It implies that terrorists & encryption are somehow related. It _is_ true that terrorists use encryption, but it's a little like "how terrorists acquire weapons" \- yes, terrorists acquire weapons, but there are plenty of legal reasons for non-terrorists to acquire weapons.

That said, I am curious about the subject, so I suppose the headline was effective for me.

</comment><comment><USER3> TL:DR - somewhat naively and poorly.</comment>


Development hosts and targets in Qt 6.0 - <AUTHOR> https://www.qt.io/blog/qt6-development-hosts-and-targets <comment><USER2> What does WebAssembly as a target mean?

You can run Qt in a browser?</comment>


Why Fewer Companies Are Successfully Raising Series A Rounds - <AUTHOR> http://blog.eladgil.com/2011/11/why-fewer-companies-are-successfully.html

<comment><USER2> _So what do all these startups do that can not raise a series A? A subset sell as a team buy, a few go out of business, but an increasing number are going out for a bridge round. Basically, instead of raising $5 million, I am seeing post-seed startups raise anywhere from $500K to $1.5 millon, at a valuation somewhere between a series A and a seed valuation, with the hope that the additional capital will give them time to gain more traction or scale their business._

A good option for bootstrapped companies that have exhausted their friends and family but aren't ready for gasoline on the fire.

</comment><comment><USER3> I'm wondering about series B... was it hard to raise Series B? Is Series A the new Series B?

<comment><USER4> Series B are even tougher than an A round unless you get a tier 1 who will support you... very key to that A round decision

</comment></comment><comment><USER4> Investors get a free look at the execution savvy of the founders and their idea in the new seed marketplace ...so it's more efficient for the VCs thx to the ycombo and other incubators...people can slam all they want on incubators but its a nice working model...gets more ideas exposed and funded...

cheers John F @siliconangle

</comment><comment><USER5> another reason for startups to be ramen profitable!

<comment><AUTHOR> True point!</comment></comment>


What Are Kindle Sample Conversion Rates? - <AUTHOR> http://mikecanex.wordpress.com/2011/04/17/what-are-kindle-sample-conversion-rates/

<comment><USER2> This could be an Ask HN. I, for one, would fin the answers interesting.</comment>


Chinese man caught by facial recognition at pop concert - <AUTHOR> https://www.bbc.co.uk/news/amp/world-asia-china-43751276 <comment><USER2> Dupe: [https://news.ycombinator.com/item?id=16828973](https://news.ycombinator.com/item?id=16828973)

</comment><comment><USER3> Why wait? Enjoy your dystopian future today!</comment>


Budapest, 75 years ago and now - <AUTHOR> https://www.rferl.org/a/broken-city-budapest-after-world-war-two/30599400.html <comment><USER2> Wow... Budapest is a such a visually appealing city (great all round really) that you'd have never thought it was this bad during WW2.</comment>


10th ICFP contest has begun - <AUTHOR> http://smlnj.org/icfp08-contest/task.html main page here: http://www.icfpcontest.org/ <comment><USER2> "You submit your entry using the web form at <http://icfpcontest.org/submit.php>"

It's a little ironic they use PHP for a contest that is supposed to demonstrate the viability of functional programming languages.

<comment><USER3> Use the right tool for the job. "Functional" can have more than one meaning.

</comment></comment><comment><USER4> maybe my sense of humor is bad, but am I correct in assuming the mars rover reference is joke?

<comment><USER5> yes. 75 ms communication between earth and mars is physically impossible according to general relativity. Seeing as how nobody (including NASA) has found a way around this limitation, messages back and forth between earth and mars will always take on the order of minutes.</comment></comment>


The Marketing Behind MongoDB - <AUTHOR> https://www.nemil.com/mongo/3.html <comment><USER2> 100% of my friends who have used Mongo/similar NoSQL have given up and had a nasty rewrite back to pgSQL.

This seems to be the journey:

1\. Lack of migrations is awesome! We can iterate so quickly for MVP

2\. Get users

3\. Add features, still enjoying the speed of iteration

4\. Get more users

5\. Start building reporting features for enterprise/customer support/product metrics (ie: when the real potential success starts)

6\. Realise you desperately need joins, transactions and other SQL features

7\. Pause product dev for 1-3+ months to migrate back to SQL, or do some weird parallel development process to move it piecemeal back.

I think the most interesting question though is would they be able to get MVP and initial customers that set off this if they were moving (slightly) slower due to SQL and slight overhead that comes with?

My thought is definitely yes.

<comment><USER3> > _I think the most interesting question though is would they be able to get > MVP and initial customers that set off this if they were moving (slightly) > slower due to SQL and slight overhead that comes with?_

I've used Postgres and Mongo pretty extensively, and for any reasonably seasoned developer, the startup overhead of an SQL system is a myth. There may upfront cost to learning how an RDMS and SQL work in the first place, but once you're familiar with them, they'll be faster than Mongo on any new project.

The schemaless concept of a document database seems to be the major selling factor in velocity of movement, but once you've got a good handle on a migration framework in the vein of ActiveRecord or other popular software, that's negated completely. It also really doesn't take long before schemaless starts to cause big problems for you in terms of data consistency -- it's not just the big players that get bitten by this.

The simplified query language is another one. SQL is a little bit obtuse, but it's not that bad once you have a handle on it, and a lot of people are familiar with it. Once you add in an ORM layer, the lazy-style access of a framework like Sequel or SQLAlchemy makes the developer experience quite a bit better than any Mongo APIs that I've seen. Also, after you get beyond trivial usage, SQL's flexibility so wildly outstrips Mongo's query documents that it's not even worth talking about.

Postgres on the other hand ships with a great management CLI, a very powerful REPL (psql), and features like data types/constraints/transactions that guarantee you correctness with zero effort on your part. I can only speak for myself, but I'd take Postgres to the hackathon any day of the week.

<comment><USER4> > the startup overhead of an SQL system is a myth.

It's also a myth that devs choose NoSQL over SQL because "SQL is too hard."

<comment><USER5> _It 's also a myth that devs choose NoSQL over SQL because "SQL is too hard."_

What I see more of is situations where the developers "know" SQL but still just don't want to sit down and figure out their data models.

It's like, the temptation to reach for the nearest short-cut -- whether that means over-reliance on ORMs (or hodgepodge 'data access layers'); or continually munging stuff at the application layer for nearly every operation; or... Mongo -- is always just too great.

<comment><USER6> figuring out the data model as you build can be beneficial, you realize what you need as you work with the thing and can add it on the fly, at a certain point of course you need to do a cleanup. Getting people to accept the cleanup requirement is the difficult part.

</comment></comment></comment></comment></comment><comment><AUTHOR> (Author here) You can read parts 1 and 2 of the three part series:

\- Part 1, Why Did So Many Startups Choose MongoDB: [https://www.nemil.com/mongo/1.html](https://www.nemil.com/mongo/1.html)

\- Part 2, Startup Engineers and Our Mistakes with MongoDB: [https://www.nemil.com/mongo/2.html](https://www.nemil.com/mongo/2.html)

You can see most of the notes from my interview with MongoDB's CTO, Eliot here:

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

And the interview notes related to MongoDB's marketing are somewhere in this HN post:

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

<comment><USER7> I really enjoy your writing style and how you wrote about the "story of humans" rather than writing YAMTT (Yet Another MongoDB Trash Talk).

I'm actually a lot more comfortable now using MongoDB in production after understanding its level of maturity and what the right application is. For the last couple years I was scared off by all the negative HN comments on MongoDB articles.

<comment><USER8> so what is the right application for mongodb? only when you don't need ACID? Can you give some example?

Genuinely curious

<comment><USER9> We used Couchbase (a NoSQL like MongoDB) for email batch sending (think invitations to a party) and it worked very well. We could store each email sent as a separate, denormalized document so the sender could see EXACTLY how their contact data was replaced in each individual instance, the "View as a Web Page" functionality was trivial (instead of recalculating everything from the normalized forms- which can be blown up by contact data changes, just load the document that you sent out), and it's lovely TTL feature meant we could handle the configurable retention policies trivially as well.

It wasn't so good at doing reports (how many customers viewed the email yet, responded, etc.). One thing we talked about doing was just storing a sqlite or h2 database as a document for reporting purposes (if we had been more single threaded that could have worked nicely). We ended up using a separate Sql DB for that.

There are cases where denormalized data is the "right" way to view stuff, and cases where the data really is easier if its normalized, and that is a good reason to push your DB selection one way or another.

<comment><USER10> Interesting. Seems like that would just be one part of a larger application, though. And for that, my mind just jumps to something like Postgres with `jsonb` fields to store it all denormalized, then using columns to store relations, like the contact it was sent to. Along with other tables for other parts of the application, of course.

This way your aren't complicating your stack by adding more services sooner.

<comment><USER9> We were replacing a fully SQL email engine (that was starting to fall over due to load) with this more hybrid approach; we had customers, we knew that the business case closed, but the load was starting to overpower the main database, so we spun off separate databases, and bought ourselves a little more overhead by splitting out the normalized and denormalized data. Could well have been a mistake, but we weren't thrilled with postgres ability to scale horizontally, so went to CB so we could scale a bit more. (As I recall, we were doing 7m emails a day, our goal was to support up to 70m with that structure.)

</comment></comment></comment></comment></comment></comment><comment><USER11> I used MongoDB in production. About 6 years ago, I have bad experience with it and abandon it.

In a new job recently, I picked up it again and to my surprise, it performs super well and have lots of new concepts.

1\. TTL index: the data automatically remove after a certain time

2\. Hidden Replica: we can do whatever on this node without slow down producion

3\. Very easy to use oplog: It's super easy to get access to oplog, just as you work with a normal collection

4\. Aggregation Framework is awesome: It's tedious to write at first, however, it become very clear with the pipeline design

5\. JOIN: I'm suprising when I discover this. But it does have a similar concept to join now with `$lookup`

6\. Very low storage: If you used MongoDB as a log/timeseries database/event you will appreciate WiredTiger

7\. Metric exposing is awesome: Lots of userful metrics

8\. The cluster is much easier to manage nowsaday and very stable: adding a new node is just a matter of booting up server and evrything handle automatically. Think of MySQL, where you have to export data, get the position of bin log and file name to config the slave.

One thing remains same is we still have to deal with migration and back fill data.

Careful planning and design the database are still requirement, not just dump whatever you want to it.

</comment><comment><USER12> "but need to spend time debating how to protect ourselves from marketing "attacks"."

I don't have a complete solution to this, but I know I've got two for you:

1\. Beware any solution where the same thing is demo'ed every time. It's a sign that either nobody is actually using it, or it's over-tied to the specific thing being demo'ed.

2\. Any time you see a solution that massively outperforms some existing and well-developed solution, you must always ask what was dropped from the existing solution to get that speed, on the assumption that the well-developed solution is probably already pretty optimized to be whatever it is. It isn't necessarily bad to drop things, heck 90% of "cloud" technology basically consists of "dropping the things that don't work well in a distributed environment", but you need to _know_ what those things are.

#2 in particular would have saved a lot of people in the context of MongoDB. It doesn't mean Mongo is a bad choice for everything, or at least, not anymore, but you need to _know_ what you're giving up to get there. (And in particular I'd suggest "We can use this technology without having to have discipline!" is... double-edged at the very least. You may not want a bondage- and-discipline tech at a startup, but tools that offer some gentle-but-solid defaults and guidance may help you focus your cognitive energies less on establishing all the rules from scratch and more on whatever your actual problem is.)

</comment><comment><USER13> There is a common perception in the developer community that "if you build it they will come", which is usually not the case. Theres a surprising amount of marketing behind every successful company.

<comment><USER14> Absolutely. RethinkDB was technically a far superior product but lacked the marketing and fanboyism that MongoDB orchestrated so effectively.

Today, Docker is following MongoDB's playbook.

HN Hiring Trends of MongoDB vs. Docker: [http://i.imgur.com/tYKzmaG.png](http://i.imgur.com/tYKzmaG.png)

<comment><USER15> tbh, I don't disagree with you here. RethinkDB invested in our open source community more than marketing.. it's arguably part of why we didn't succeed as a business.

</comment></comment></comment><comment><USER16> Great write up! That was informative and well-written.

As someone who writes content aimed at developers, I'm concerned about the generalized sentiment this creates towards technical content marketing. I stopped coding years ago and started trying to lead teams and figure out how to make businesses grow; quality marketing is a way to do that. In the HackerNews bubble, that's viewed as a step 'down the ladder'.

I think it's important to make a distinction; is the issue that they marketed well or that their product didn't match their marketing? It's the latter -- any company that hopes to succeed in the uber-competitive, fast-moving technical world needs marketing.

If we're making a fancy tool and I write a quality guide demonstrating how you can do "us" 'the ol' fashioned way' in an effort to demonstrate our value, is that wrong? How else am I to do it? You simply won't come if I don't tantalize you.

Digital Ocean had a brilliant content strategy; incentivize users to write tutorials that would bring people to try those tutorials out on their droplets. I hope we don't dismiss technical marketing as evil. Technical marketing can be valuable and be written with care and integrity.

</comment><comment><USER17> Reminder: they shipped with the defaults which basically would throw the data over the wall and never acknowledge it back to the user (because speed and such). Interestingly enough it still called itself a database, and that right there is the power of marketing.

<comment><AUTHOR> My own research doesn't back up that this "unsafe write" was done by 10gen for benchmarking reasons, but rather due to an early expected use case (from a footnote in part 1 of my series):

Waiting for writes was off by default:

> This "unchecked" type of write is just supposed to be for stuff like > analytics or sensor data, when you're getting a zillion a second and don't > really care [if] some get lost [or] if the server crashes.

This was rarely the typical use case in most startups - even though the defaults were based on it for a long time.

It's unclear to me how long this was the top Google result, and it was earlier in Mongo's life (2009). This may be one of the benchmarks that led to anger at competing NoSQL vendors - and seems to me like a mistake rather than a malevolent effort.

[https://www.nemil.com/mongo/1.html#fn2](https://www.nemil.com/mongo/1.html#fn2)

_____________________

MongoDB's CTO has also mentioned that if he could go back and change anything it would be this early default, as his earliest customers valued it - but he quickly realized that it caused issues for others.

(Throughout this series, my goal has been to be tough, but fair to both sides)

<comment><USER18> The real question is how many years they left the unsafe default after people pointed out that it was a problem.

<comment><AUTHOR> It took a little while (say 1.5ish year from when they realized it was causing issues). According to MongoDB's CTO, this was because they couldn't quickly move their early users from the behavior they were used to.

</comment></comment></comment></comment><comment><USER19> Just to counterbalance the amount of negative sentiment here, we've used MongoDB for Artsy.net, following a recommendation from Foursquare's CTO (and others) since 2010. Elliott has also been very generous with his time, too. MongoDB enabled us to iterate fast and continues to serve well.

<comment><USER20> I would love to know what mongodb offered you above MySQL/Postgres?

I always hear you can iterate fast but for most usecases I cannot see how mongodb is quicker to iterate than a relational database. Would love to learn though.

<comment><USER21> I can't speak for the parent, but there was a time around 2011 when I was pretty excited that MongoDB would let me just start coding without needing to 1) configure postgres's listening port and pg_hba.conf to allow easy local access, and 2) churn through a dozen or so revisions to the schema without having to set up a system for running migration scripts.

I really think a lot of Mongo's success came from that "It just works" experience the first time people tried it.

I later came to see it as a bad tradeoff. Open, unauthenticated access by default created more costs in security than it saved in early prototyping. Automating the creation of my dev environment made it not such a big deal to make Postgres configured right when it booted. And once I'd gotten a SQL migration system that I liked, I just kept re-using it. These things took some time for me to develop and learn, though.

<comment><USER22> _onfigure postgres 's listening port and pg_hba.conf to allow easy local access_

That is literally 30 seconds work!

<comment><USER21> Only with the benefit of hindsight, which isn't helpful to the newcomer.

To someone new who is just trying to work through some web framework tutorial or hack out a half-formed proof of concept, it can be several minutes (or much longer) of trying, failing, copying error messages into Google, and following some guide written for Debian but failing to get it working because you're running Red Hat (or vice versa). When you stack up enough similar problems getting the rest of the stack to work (e.g. configuring Apache or nginx), it stops a lot of new people in their tracks. When they're given something that just works, it's a godsend.

<comment><USER23> How is someone like that qualified to work as a software engineer? These were things I did when I was 13 on our old family Pentium, _not_ something I would want a production engineer to do.

<comment><USER22> _How is someone like that qualified to work as a software engineer?_

If software engineering was like civil engineering then using MongoDB would be like building a bridge out of noodles.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> Heavy user of Postgres and Mongo. I use both in production for years. I don't think that there are good or bad databases. Every database has a different focus and thus respective trade-offs.

You know this feeling when you have an idea and want to create a quick prototype to test the idea? By quick I mean you want to have this thing running in a few minutes without any effort. This is possible both with Mongo and Postgres.

But with Mongo you even don't need to create databases or collections (tables) before. You just write to the DB and everything will be created if not there yet. This small thing let the code stay super simple and no migrations are required. With Docker and the official Mongo image you can setup a webserver with Mongo with authentication in seconds. Accessing the DB without an ORM is still super comfortable since everything is JSON (in case you work with Node and the Mongo native driver).

So, one of the biggest reasons for me is that I _start_ after all and not find an excuse not to start this prototype. Because I am lazy and most time for creating a prototype is always spent on setting up the development environment. This is also why people like JSFiddle and Codepen so much: Just start coding.

It's great for prototyping and most of my prototypes stay prototypes. The few which got successful got migrated to a more mature architecture. Sometimes they are employing Postgres, sometimes Cassandra, but often enough they stay with Mongo but including validators, etc. All successful projects I started, began quick and dirty and slowly evolved into a mature architecture. The best projects were those where I had a prototype running in less than two hours.

It's really the use case. I think disliking a technology just limits your options.

<comment><USER25> Limiting my options is a good reason for becoming more experienced. The more of my options I limit, and the faster I limit them, the faster I can make things, as opposed to exploring options.

It's why beginners' guides are opinionated: The beginner has no opinions of their own, so they must be given the opinions of someone who has them so they can make progress instead of being overwhelmed by choice. Making progress involves replacing your teachers' opinions with your own, so you can limit your options to a manageable set instead of them being limited for you, but at no point are you truly open to looking at every single thing equally. It would take too much time for very little reward.

</comment></comment><comment><USER26> I've seen the best success in the NoSQL world when you treat data like a history book rather than a moment in time.

What I mean by this is creating entities, mutating them, and trying to maintain a state is the natural pattern to assume, but it is often wrong. It leads to a many issues reported here and elsewhere and people declaring "such and such DB sucks". This is a SQL approach to using data and NoSQL fails badly at this generally speaking and should not be used to store "state" since state often requires ACID and relationships.

Treating data as a history book, or log of events over time is a safer way to use NoSQL as an authoritative source. It plays well with their ability to scale simply and naturally and event data has no relations. Everything in the single event is immutable as it is a fact of occurrence. Invalidating a past event is as simple as generating a later event that says that event is now invalid from this point in time.

From this you can generate "entities" which describe a relationship between your events. From your log data you can generate a session, for instance. These are not authoritative sources and if found to be invalid you recalculate the entity, or state, from the collection of events.

I could create an entire social network profile for a person by aggregating and querying the history of events that make up their current state. And the real power is I can generate their state at precisely any point in time in the past and possibly predict what their state will be in the future based on their past stream of events and derivative states. If a past event was found to be invalid, a new event declares this and with a greater timestamp authorizes that fact and I can recalculate the entity that describes their "current state".

This takes work and thought though and one of the promises you've seen from some NoSQL vendors is they save you work. The work is always there but you need to get comfortable thinking of data in a different way and not all data needs this approach. But, in many cases, NoSQL is not trash.

<comment><USER27> I love event sourcing as a pattern. ES has its own overhead, but it is an intriguing pattern that works well for many use cases.

<comment><USER26> It really does and can be extrapolated to many, many use cases.

To me, this is the real power of document data stores. It's not for everything such as configuration or business rule data. But for a lot of generated data in the form of events it's a useful way to organize data.

</comment></comment></comment><comment><USER28> Happy resident of a MongoDB environment here! In one of my projects, we are collecting IOT "clickstream" with slightly varying contents, around 20 million inserts per day. These are then transformed into "sessions" that are inserted in another collection. Everything works as it should.

Reporting is based on PowerBI and aggregations are scheduled through cron jobs to refresh the data sources that PowerBI uses. Realtime metrics are not needed, but could easily be implemented through the "session" generator by calling PowerBI Streaming API in parallel when writing a document.

<comment><USER26> I think what you're describing here is something that is often overlooked. You are treating the same data in 2 ways - events and entities and there's an important distinction.

The events come in and you store them. They are immutable descriptions with a timestamp which provides sequence. There is no relation between any 2 events.

Then you keep another collection of entities which you call "sessions". These comb through the event data and combine them into sessions which can answer different questions.

The event data is the authoritative source and because there are timestamps they are sequenced. This way you can generate session from them and if anything were to happen to make the session collection invalid you can "rollback" to a certain point in time and recalculate the sessions from there.

In the NoSQL world you often want to begin with "events". And then form "entities" from the sequence of events that are useful to you. Because you've stored every action you can always go back and recalculate and create new entities you hadn't yet discovered.

<comment><USER28> Yes, this is exactly our use case. Every now and then a need for new attributes or metrics appear that are to be calculated or otherwise logically determined for the "sessions" generated. Sometimes a new device model / software version starts providing new attributes with the transmitted event and we can just add metrics and aggregations based on those attributes into the session generator if those attributes are present on an event.

</comment></comment></comment><comment><USER29> I have a Node server that restarts once a day. On start it reads the state of the app (which is just one big JSON) from MongoDB into a JavaScript variable. When something changes it updates the variable in the Node process and fires an event to update the field in MongoDB. In other word it only ever reads from MongoDB on server start. This has worked very good so far but with all the negative comments I'm thinking there must be some kind of drawback or reason I should switch to Postgre JSON instead.

One problem I see is that I need to overwrite the whole thing when saving with Postgre when you can easily just set one field in MongoDB. If I need to overwrite I may as well just save the whole state to a file instead.

Forgot to add that it does the same for users. Users are one collection which reads the document on login and saves the same way as the global state does on every update. How would that work with Postgre?

<comment><USER12> While I have no particular stake in whether you rewrite, presumably in the Postgres rewrite, you'd break the monolithic JSON file up to be one row per key you write.

But that on its own would hardly be a reason to change.

"Forgot to add that it does the same for users. Users are one collection which reads the document on login and saves the same way as the global state does on every update. How would that work with Postgre?"

Well, that boils down to "how do relational databases work?", which is not really a suitable HN comment topic. Relational databases are designed fundamentally differently.

It doesn't matter as much as long as you stay under a scaling limit where reading and writing the entire state all the time isn't a problem for you, and there's no need to do any sort of query like "Tell me the last login time for all users in a fraction of a second, please". What is probably the best thing for you to do is A: budget some time to read about and maybe even do some playing with relational databases so that B: when you encounter a problem for which they are the best solution, you realize that you've done so, and can take appropriate action. "Appropriate action" doesn't always mean "rewrite the entire website in Postgres"; sometimes it can be "denormalize the data into a Postgres db, run the queries I need, and throw the database away", which can, in some circumstances, still be faster than trying to convince a NoSQL to do queries it really doesn't want to do. Especially on a production database that's busy trying to do the real work.

The idea here is to make sure you don't get sucked into the tarpit of accidentally trying to replicate relational database features at your application level, which starts so beguilingly small and grows to consume your entire development budget if you start down that road accidentally and don't turn away soon enough, rather than to do things the "right" way for the abstract sake of doing it right.

Oh, and here's a tip that can save your job and/or career: If you _ever_ find yourself in a position where you're trying to implement "transactions" in your application code, _immediately stop_ and go get an appropriate database on the backend. The horrifying thing about this case isn't that you'll fail... it's that you will _totally_ produce a solution that works perfectly in QA, and fails miserably with data destruction and angry (if not actively litigious) customers in production, and the road of "temporary fixes that seem to fix the problem but actually make it worse" is basically never ending. Learn what this looks like so you know it when you see it!

<comment><USER29> Thank you for your very detailed and good response. I actually have a lot of experience with relational databases, much more than with NoSQL.

The thing with the users collection is that I need to be able to add any arbitrary attribute to the user document so I can't really use a table with a schema. I guess I could use a related key value table for those but the attributes can be anything, nested objects and arrays. Maybe serializing the value would work but it still seem that Mongo is a better fit in that case.

I also like seeing the user document as a big JSON without joins when doing DB admin stuff.

<comment><USER30> > I need to be able to add any arbitrary attribute to the user document so I > can't really use a table with a schema.

I'd love to see a sample of this data

<comment><USER29> It's not your usual CRUD app. It's a realtime sandbox game in early access.

Some arbitrary stuff I keep adding for various reasons:

        gunsLeftToCompensateDueToChangeInVersionX: 123,
        winnerOfEventX: true,
        didSomethingFunky: Date.now(),
        noOfEnemiesKilledBeforeVersionY: 123,
        inventory: [{id: GENERIC_ITEM_ID, quantity: 123}, {id: uuid, name: "Ultimate Weapon", damage: 10000, someUniqueProp: {doThis: true, uses: 123}}],
        flaggedForCheatingInThisOrThatArena: true

Etc etc. Biggest reason though is just convenience of adding some state to the player when developing new features. Itt would be a complete pain having to add schemas for every single situation, even if it's standardised for all players. Now I just add it to the player object and it's saved automatically to the player document.

Not saying what I do is best practice or anything but it enables me to move fast without having to do much DB admin stuff.

</comment></comment></comment></comment></comment><comment><USER31> Is MongoDB the leader in NoSQL? I stopped using them years ago because of scaling issues. With things like Elastic Search and Dynamo DB, I see no reason to use MongoDB anymore.

<comment><USER32> Based on the job posts on SO it is. But it's decreasing in popularity quite strongly comparing to Cassandra for example. [http://www.reallyhyped.com/?keywords=cassandra%2Credis%2Cmon...](http://www.reallyhyped.com/?keywords=cassandra%2Credis%2Cmongodb)

<comment><USER33> I tried to add SQLite to the graph and it is at the bottom. We could question the relevance of this tool!

<comment><USER34> Well, it does say "reallyhyped.com" not "reallyused.com".

Joking aside, SQLite is on a ton of devices, yes. But that's primarily because it ships with OS's and is in lots of embedded devices. For web development and other server-side things, I get the feeling that SQLite is not as heavily used as client-server databases.

</comment></comment></comment></comment><comment><USER35> Whenever I have talked to people choosing Mongodb, it always came down to two things:

1\. Not knowing a about Postgres JSONB column type (which behaves pretty much like Mongodb)

2\. Not knowing about Amazon RDS as a single click hosting option for Postgres.

Most people run their own Mongodb servers...Which is what gives the impression of "easy to get started".

And here's the other truth as well - People painfully move back to Postgres after losing data. Not because of "oh we can now afford to do SQL" or "oh our data model now needs Postgres". But plain and simple - they lost data that they can't admit to in public.

<comment><USER36> 1\. Hardly fair, considering that Postgres JSONB is only 2.5 years old, and the marketing fanfare around Mongo had largely petered out at that point. I've been involved in three companies which use mongo, and all of them selected it before JSONB was in Postgres.

<comment><USER35> I'm not quite sure what has time got to do with it. I don't believe I mentioned that this was more than 2.5 years ago.

I'm talking contemporary companies - Mongodb still holds far higher startup mind share than Postgres. MEAN/MERN stack is still a thing.

</comment></comment></comment><comment><USER37> Whenever I see a young gullible engineer, all twinkly-eyed and bedazzled by the MongoDB hype (or any other NoSQL hype), I'll send him a link [1] on a rather interesting talk by a very thoughtful Turing award winning engineer named Michael Stonebraker. It takes a couple of days for the charm of NoSQL to wane off, but eventually they'll always see how they have been fooled into believing without a sane level of critique.

[1] [https://youtu.be/KRcecxdGxvQ?t=2072](https://youtu.be/KRcecxdGxvQ?t=2072)

<comment><USER38> Bah. Stonebraker invented this marketing strategy in the first place. I heard his companies make all sorts of insane claims - from Postgres, to Vertica to VOltDB. After the first one, I didn't bite on the second and third, only to have some random manager overrule me, and then spend millions migrating off of these proprietary databases later (Vertica and VoltDB)

</comment></comment><comment><AUTHOR> (Author here) As part of this three part series, MongoDB's CTO, Eliot Horowitz, was gracious enough to spend two hours chatting with me.

In our discussion, we touched on 10gen's early marketing strategy, which I've combined with notes from my research:

\- __10gen's Marketing Focus __: Eliot noted that much of 10gen's marketing message was meant for large enterprise CTOs and engineers who made database decisions. If you're trying to build a database company, this is where most of the money is. But many startup engineers I knew didn't realize this, and seemed to think the message applied to them. 10gen's explicit focus on sponsoring hackathons and and targeting startups also encouraged these issues.

\- __Anger on HN __: Eliot and I disagreed where some of the MongoDB anger on HN comes from. In his view, a fair bit of it stems from competitors and their supporters. In my view, much of the anger came from 10gen's fanciful marketing message that outstripped the product in the early days. I believe that if the marketing message had been more thoughtful and the product more mature when the marketing ramped up, the community anger would have been much less (but it likely would have significantly hurt MongoDB 's adoption, which is a challenging problem).

\- __10gen's Marketing "Strategy" __: Eliot argued that 10gen didn't have much of an early marketing strategy. In my view, their marketing team made some smart decisions that really set them apart from competitors. First, MongoDB's Javascript DSL, JSON data store, and onboarding experience were critical differentiators - and their product was early to market. Their marketing team then used this as they built the MongoDB user groups /conference network, pitched NoSQL and the MEAN stack as the future, and brought industry allies to their side.

\- __Engineers and Marketers __: We debated how much role CTOs should play in dev tool marketing. At 10gen, Eliot noted that he was rarely involved, instead focusing on engineering and product. My own view is that engineers should be involved in the marketing message in highly technical products - and have some input into marketing. I also believe that marketing a database is very different from other tools in the engineering stack such as a frontend framework.

Much of this debate stems from the differential objectives of engineers (making the right decisions for their teams) and marketers/founders (convincing customers to use your product, sometimes at any cost).

I let Eliot know that I would support him in sharing any follow-up thoughts, with the hope of spurring a thoughtful debate in our community.

Finally, I won't argue that 10gen's marketing and product was enough on its own to explain the growth amongst startups - the usability of MongoDB was a key reason for it's success in startups. Less discussed also was the marketing undertaken by training programs, bootcamps, and conferences (see the marketing around MEAN that inundated Hacker News and Reddit in the early-mid 2010s, as NodeJS was growing).

<comment><USER22> _In his view, a fair bit of it stems from competitors and their supporters_

LOL no. 99% of it comes from actual, working DBAs and others with production responsibilities.

<comment><USER39> "Default settings" and "DBA with production responsibilities" should never coexist in the same post. Since >50% of the complaints are about "default settings", you know the rest.

</comment></comment></comment><comment><USER40> >"The Marketing Behind MongoDB"

>"Countless NoSQL databases competed to be the database of choice. MongoDB's marketing strategy helped it become the winner."

Of course, of course!

Because if it the strategy was based on MongoDB's scalability and security...

</comment><comment><USER41> I have always wondered how much of what I see on Hacker News is "sponsored content." Not that there is anything wrong with it.

<comment><USER42> There is a lot wrong with not declaring sponsored content as such, so much so that it's illegal in many countries.

</comment></comment><comment><USER43> A similar success story, albeit a bit earlier in the hype cycle, is Realm.

They started with an lightweight db engine for embedded systems named TightDB. Getting traction in that space is hard, so they pivoted to become a "mobile database", taking a page out of the MongoDB playbook

\- they built a slick wrapper for iOS and Android to make it extremely simple to get started

\- they wrote a fantastic set of tutorials to get started quickly

\- they started doing lots of events to grow their community

And they've succeeded to get quite a lot of companies to use their product — by making something that is fun to use for developers (at least in the beginning)

</comment><comment><USER44> I feel like a lot of issues people have with NoSQL or MongoDB is that there trying to fit the Relational Model and SQL way of doing things into MongoDB. MongoDB is a document database. So the things you did in a RDBMS won't work in a document database. Time to think different.

Some of the things I'v seen people complain about.

JOINS - should be done in the application

SQL - one of the big issues I have with RDBMS is that application logic lives in the database and application, causing all kinds of brittle spaghetti code. If you need that code to live outside of the application then its time to build a web-service around it or just have a shared library all the apps use.

Reports - should be done in the application, could also create a view in Mongodb and pull report data from that.

Schemes - RDBMS schemes are a huge pain, the restrictiveness of it causes all kinds of pain when you want a dynamic data-store. The best thing about Mongodb's collections is that every document in a collection can have a totally different schema. If you want to do that in a RDBMS you end up hacking it by shoving json or xml data into fields. Your basically creating a document database but doing a horrible implementation of it.

ORMS - if your using an orm then your already going down the path of using a NoSQL database. ORMs are hacks for RDBMS because mapping your data model to SQL is a pain. With Mongodb this is all built into the driver and database. Thats why Mongodb Inc creates drivers for all major languages. Plus most drivers have attributes you can decorate your modals with that make it flexible when the structure changes. So nothing blows up.

<comment><USER40> _> JOINS - should be done in the application_

Ok... Also tell me, transactions should be done in the application as well?

Great! Next time, i'll do transactions and joins in the application, and discard the 35+ years of experience and performance improvements that any modern RDBMS has for joins and transactions.

 _> The best thing about Mongodb's collections is that every document in a collection can have a totally different schema._

In which sense is this a good thing?

 _> ORMS - if your using an orm then your already going down the path of using a NoSQL database. ORMs are hacks for RDBMS because mapping your data model to SQL is a pain._

The ORM simply allows easier interaction with the RDBMS when using an object- oriented programming language, mainly for moving data from tables to objects. The ORM is explicitely for RDBMS; the "R" in "ORM" stands for Relational.

</comment></comment><comment><USER45> I start with MongoDB on every single one of my side projects because it's so easy to get started.

No setting up permission or schema.

Just works.

</comment><comment><USER46> From reading the comments on HN every time these MongoDB threads come up, I'm beginning to think -- and I really hope I'm wrong about this -- that a lot of people started using MongoDB who had basically no prior experience in using relational DBs. If true, that is just insane. I guess I take it for granted that programmers have at least some computer science background and are familiar with the relational algebra, ACID, etc. It kind of saddens me.

</comment><comment><USER47> As we all know these marketing strategies works well only for the initial bubble. For the long term, its just going to be whoever providing the perfect content.

</comment><comment><USER48> Refreshingly honest.

</comment><comment><USER49> Winner of what? [https://www.linkedin.com/pulse/mongodb-world-2017-lonely- sto...](https://www.linkedin.com/pulse/mongodb-world-2017-lonely-story-versus- john-de-goes)

<comment><AUTHOR> Survival? A planned IPO?

</comment></comment><comment><USER50> OK for everyone describing issues with RDBMS take Postgres create table with id and "data" jsonb column and you will have a NOSQL solution with Nx the performance and Yx the features.

</comment><comment><USER51> Can somebody point me toward the 'also a marketing strategy for mongodb' comment?

I came here to like it

<comment><USER52> I think the only strategy would be: give for free to the developers, charge big bucks from the enterprise.

</comment></comment><comment><USER53> A lot of their growth is due to a lack of mature ORMs. If you're using Django it's super easy to use Postgres. If you're using Node you're out of luck. So for certain ecosystems MongoDB can be easier to work with due to the available libraries.

I personally much prefer Postgres though.

<comment><USER54> Django's ORM, especially with built-in migrations, is great.

Just don't think it doesn't have any gotchas. It also can't do JOINs (with more than one element)

</comment></comment><comment><USER55> Summary: learn the relational model of data management, as set up by Edgar F 'Ted' Codd almost half a century ago, and enjoy innoculation against hype for all your life.

<comment><USER56> Except all the hype around CockroachDB

<comment><USER57> Even their logo reminds me of Mongo's. I wonder if it's intentional (a spoof to be precise).

</comment></comment></comment><comment><USER58> if only elixir phoenix supported it :(

<comment><USER59> I can't tell if this is a serious comment or not, but there is no reason why you can't use Mongo with Phoenix.

For example- [https://tomjoro.github.io/2017-02-09-ecto3-mongodb- phoenix/](https://tomjoro.github.io/2017-02-09-ecto3-mongodb-phoenix/)</comment></comment>


Check Out This Berkeley Freshman's 'Ridiculously Automated' Dorm Room - <AUTHOR> http://techcrunch.com/2012/04/30/berkeley-ridiculously-automated-dorm-room/ <comment><USER2> Home automation seems to be all-or-nothing today. I can buy a relay switch with keyfob activation for $20 at Home Depot, or I can call my local Control4 rep to come automate my mansion. The in-between seems non-existent. My finished basement has recessed lighting controlled by four or five different switches, all of which are in the basement. When it's time to go to bed, one of us has to trudge down to the basement and start flipping switches. It would make me happy to just have a nighttime kill switch -- I don't need the house to sense my presence and start turning on my favorite music. Might be nice, but I'm not willing to spend $10K on home automation to make it happen.

I started reading about Zigbee and thought, "Hey, I'll just install Zigbee- controlled switches in the same boxes where my analog ones are today. Then, I'll use some automation appliance (like OpenRemote) to implement "turn off all basement lights" via a phone app" I got confused when trying to figure out what I would need to buy, which stuff could actually talk to other stuff, etc. and gave up.

I'd love to see a start-up sell semi-DIY kits for people like me. I'm fine with replacing switches, plugging in network devices, etc., but I really don't have the time to pick out appropriate hardware and make it all work together.

<comment><USER3> There is a LOT of in-between.

All the main switches at my house are Insteon based.

I use Indigo as an automation platform (it runs on OSX) on an old Mac Mini.

Lights, HVAC, multi-room audio, and several other things are controlled/managed through this system. I can access it remotely with a native iOS app and/or with custom control pages. With some applescript it can be extended to all sorts of other devices and purposes.

Check out <http://www.machomestore.com/catalog/> for Insteon/Indigo products.

<comment><USER2> Aha, someone selling something resembling a kit! Thanks for the link.

</comment></comment></comment><comment><USER4> Edit: I'm not sure if this is the same person, I accidentally typed in dereklow.com and this person's website is dereklow.net. However note that on both websites, the person mentions "O-Levels examination" or "O Level certificate".

Original message: >I think that the dorm room is impressive, however I wish that the article didn't try to sensationalize it by saying he was/is a Freshman. According to his website, he is 27 years old and has a degrees in Animation and Interactive Media. Not to be cynical, but this room is really impressive for an 18 year old (original impression I got) to have put together, but less impressive for a much older person.

<comment><USER5> Not the same person. The Derek Low from dereklow.com never went to Berkeley, and that video is definitely a Berkeley dorm room.

</comment></comment><comment><USER6> Yeah, yeah, so the automation is not stunning, but how about the fact that the video is great promotion for his dorm room as a cool place to hang out? Personally, I'm hoping that some cool chick at Berkeley hears that 'Levels' remix and decides that Derek might be her kind of guy. Having cool stuff like that in your dorm is a perfect excuse for bringing girls back to check out your room, and it gives interested girls an excuse to swing by unannounced. Let's not forget what college is all about...

<comment><USER7> Haha right on, just hit the party button, and watch the panties drop.

</comment></comment><comment><USER8> "MIDAS" from MIT is 7+ years older, and significantly more impressive -- <http://web.mit.edu/zacka/www/midas.html> . CRTs give this kind of set-up much more credibility.

<comment><USER9> Agreed, and it was significantly more difficult to put together 7 years ago. This one is very, very similar.

</comment></comment><comment><USER10> I've been reading up on home automation for a few weeks now, and, interestingly enough, in one article by Microsoft (<http://research.microsoft.com/en-us/projects/homeos/>) they go into detail about how users were a bit adversed to automated a large portion of their life (Slide 13 here: [http://research.microsoft.com/en- us/projects/homeos/brushccw...](http://research.microsoft.com/en- us/projects/homeos/brushccw2011_homenetworkingpanel.pdf)).

No doubt what Derek Low did was super awesome, but he only hit the tip of the iceberg on what users 'want' (Slide 11). Sadly, while they loved creating scenes (modes), they weren't compelled to drop additional funds for it.

If he wants to continue pursuing this for his degree, I'm sure someone like Nest will try to scoop him up in a heartbeat.

As a side note, that automated blinds system was uncomfortably loud.

</comment><comment><USER11> From the highlights in the article this appears to be very similar to an MIT student's project from a few years back...

<http://web.mit.edu/zacka/www/midas.html>

<comment><USER12> And he hit the red button like one should.

</comment></comment><comment><USER13> He used a bunch of X11 components to turn things on and off. That's not impressive. I did that in high school. I'm sure my non-technical mom could setup X11 too.

His homemade curtain opener is neat though. Clever use of a caster for a pully.

What's going to be really funny is the followup video of someone on his floor figuring out the channel he used and having some fun at 4AM with party mode.

</comment><comment><USER14> Not sure if blacklight in a dorm is a good idea....

<comment><USER15> why?

<comment><USER16> Pretty sure they were making a joke about the appearance of bodily fluid stains under a black light.

</comment></comment></comment><comment><USER17> Not that impressive.

Several people here have already linked to midas.

Personally, I've done part of this to my dorm, and it's cool, but still not impressive considering all that and more was done some 7 years ago with midas.

</comment><comment><USER18> This is fantastic. As a college student I can absolutely attest that this is one of the coolest dorms I've ever seen and completely wish my dorm was as cool as this. Might be a project for next year.

</comment><comment><USER19> I have a feeling that his "Romantic Mode" was underused.

</comment><comment><USER20> When you bring your date back to your dorm room, say "romantic mode" into the voice recognition system and the lights dim - she will know without a doubt that it's business time!

</comment><comment><USER21> Not impressive at all. Its ridiculously simple automation at Berkeley! I am sure some 14 year old kid in india can do this. \- No machine learning, \- No face recognition \- No Gesture sensing \- Only lights and curtains..please

This shouldn't be here.</comment>


2,400 MOOCs Starting in April - <AUTHOR> http://www.openculture.com/free_certificate_courses <comment><USER2> It pains me to see pages like this. Someone has spent ages making this long list by hand, then it's put up as a long blog post. No way to filter by anything .... can we have it as machine workable Open Data please!

Also, think about ways to allow other people to contribute to the list so that the work of keeping it up to date is shared out and not on just a few people.

<comment><USER3> Actually, it wasn't generated by hand. I/Class Central generated it for OpenCulture. Here is a more comprehensive list, with filtering: [https://www.classcentral.com/starting-this- month](https://www.classcentral.com/starting-this-month)

<comment><USER2> That is a cool site! Good work.

Out of curiosity, where does the data come from and how do you make sure it's kept up to date? And is your data Open Data?

<comment><USER3> Thanks! We have scrapers running daily for all the major providers. The rest we collect manually on a schedule. We have been around for a while, so in many cases the providers or instructors reach out to us directly. Sorry, but it is not open data.

</comment></comment></comment></comment><comment><USER4> I've always wondered: what is the incentive for colleges to put courses up for free? I remember more than 10 years ago when MIT OpenCourseWare (OCW) started and at that time, I thought this is probably because MIT is well funded and they can afford to put content up for free. Now we are here, 10 years later and there is an abundance of free college courses - what are the incentives for colleges to do this?

<comment><USER5> Building name recognition and improving their brand. I think in the last ten years, colleges have seen that MOOCS don't reduce the demand for the traditional college experience, and have realized that creating their own MOOCS is actually an effective to create a new pipeline of potential students.

</comment></comment><comment><USER6> Such a list is almost worthless without some kind of quality assessment. I skimmed through a few courses and they vary extremely in quality. Some are made by often rather young lecturers who could have prepared better so that they don't have to read their own name from a card. Others are presented by well established researchers who also are excellent teachers. Some courses cover only the basics with the result that in some fields there are a lot courses with about the same content. Other courses go surprisingly deep. A simple list doesn't help you to distinguish between good and bad courses.

<comment><USER3> You can find reviews for these courses here: [https://www.classcentral.com/starting-this- month](https://www.classcentral.com/starting-this-month)

It's the same list, but more comprehensive.

</comment></comment><comment><USER7> Based on my experience, apart from a handful (really a handful) of open courses by elite universities (e.g. Harvard's Stats 110), the vast majority of online courses are garbage - low quality of content, insufficient coverage of the material, inappropriate format, bad teaching. I'm talking about almost anything on Coursera/Udacity/Udemy. Even if the courses were good, you still need to spend a good amount of time with a textbook and practice the subject. And considering that most courses are useless, you're usually better off skipping them altogether and getting straight to the book + practice approach to learning.

<comment><USER8> _> Even if the courses were good, you still need to spend a good amount of time with a textbook and practice the subject._

I don't understand why anyone would expect otherwise? This is as close to the university experience as it can get.

<comment><USER7> People fall into the trap of expecting otherwise, because otherwise is easier. MOOC are often used as a shortcut rather than a legitimate way to learn about a subject.

</comment></comment></comment><comment><USER9> I've ended 3-4 MOOC courses and then switch to LinkedIn/Lynda & Udemy 'cause quality is much higher. Can recommend MOOC courses only when you see a well- known lecturer.

<comment><USER10> Can you recommend some of these uploaded on linkedin/lynda/udemy?

<comment><USER9> * [https://www.udemy.com/react-the-complete-guide-incl-redux/](https://www.udemy.com/react-the-complete-guide-incl-redux/)

* [https://www.udemy.com/coding-interview-bootcamp-algorithms-a...](https://www.udemy.com/coding-interview-bootcamp-algorithms-and-data-structure/)

* [https://www.lynda.com/learning-paths/Business/become-a-small...](https://www.lynda.com/learning-paths/Business/become-a-small-business-owner)

</comment></comment></comment><comment><USER11> It's updated! My university (Politecnico di Milano) has an increasing number of MOOCs but still quite small, and all the new ones on FPGA design are on the platform.

Also, classcentral.com has an amazing list of reviews that are really useful in seeing the difficulty of MOOCs.

</comment><comment><USER12> If I had MOOCs when I was a student... one of the best ideas of this decade.

</comment><comment><USER13> This is awesome! My hope is that MOOCs will eventually lead to much-needed reform in higher education.

</comment><comment><USER14> did a fair bit of MOOCs when they popped up (coursera etc) it was really really nice, I wonder what changed since ..</comment>


Interviewing the "Passé" Way, For a Reason - <AUTHOR> https://no-kill-switch.ghost.io/interviewing-the-passe-way-for-a-reason/ <comment><USER2> Every time one of these interviewing posts bubbles up I skim it to see if the author mentions things like: company size, team composition, the nature of the work the team is doing, the nature of the industry the company exists in, the way hiring decisions are made, the desired properties of their hiring process, their offer rate, acceptance rate, turnover rate, the amount of time positions tend to stay open for, or really just anything that would offer some context on what, specifically, their interview process is optimized for or achieving.

Nine times out of ten that stuff is absent and the post is just a bunch of opinion and conjecture.

By the way, when you're doing something nebulous in an interview like seeing "how the candidate thinks" what you're often doing (all too frequently without realizing) is looking for justification for a decision you've already made based on whether or not you like the candidate. The fact that you have them writing code on a whiteboard doesn't instantly make the whole thing an objective process.

EDIT: You can test the above by making a "prediction" about the candidate's performance after the intro and comparing your prediction to your final decision after the interview.

<comment><USER3> > decision you've already made

Abso-fucking-lutely, pardon my French.

To be a little more precise: unless you're going into an interview totally unprepared, there is a résumé that you've read, hopefully read carefully. I make a decision, based on said résumé, whether I would like to hire that candidate. Maybe "decision" is too strong a word. Hypothesis. Yes, hypothesis is better.

That means I have some sort of mental model of what the candidate might be like, what they can do and whether and how they fit.

If the person is invited for the interview, the hypothesis is "yes, I would like to hire this person".

The purpose of the interview is to try to _disprove_ the hypothesis. If you fail to disprove the hypothesis, hire the person.

<comment><USER2> A lot of companies instruct their interviewers to "default to no" when making hiring recommendations. Effectively the opposite of what you're suggesting.

I knew a lot of interviewers at those types of companies who wouldn't bother to read resumes, either. They'd cite "bias" or something.

<comment><USER4> The issue with defaulting to yes is that then you're going to be a hiring a lot of mediocre people who say just enough to appear "okay".

<comment><USER5> I think the oft-repeated adage "A players hire A players, B players hire C players" kind of falls into this.

"A" players want to hire people better then themselves who elevate both themselves and the team.

Not getting into how most "B" players see themselves as "A" players (dunning- kruger?), unconscious biases, or people who are just bad at playing interviewer (esp. people who have done it a certain way for their entire careers and are unwilling to even think that a different process might yield betterresults).

</comment></comment></comment></comment></comment><comment><USER6> "mainly to check the chemistry between a potential new-joiner and the team members"

"Chemistry" is just an excuse to allow unconcious bias to run rampant IMHO. New hires shouldn't need to enforce the existing culture of the team you have by matching it.

They should be adding to it, not neccessarily emulating it.

<comment><USER7> Ya. What he wants is conformity.

Which is a good filter, for better or worse.

Think sororities and fraternities recruiting pledges. For better or worse.

I've long accepted that I simply don't fit into most orgs.

"Oh yea, JIRA Agile SOA dynamic typing FTW, woohoo!"

I can say the words. But most people sense on some level that I'm lying.

<comment><USER6> Homogeneous teams move fast, sure. It gives the illusion of growth and progress.

However, they don't often move efficiently, or even in the right direction.

</comment></comment></comment><comment><USER8> This guy isn't going against the trend. Not the "what people actually do" trend, that is!

The trend of what people like to blog or comment is a different thing!

</comment><comment><USER9> I tend to follow the same pattern when I do the interviews. I agree that the technical part can be easily taught if the candidate has proper engineering foundation. But I still ask technical questions. But only on the technologies the candidate did put on his resume. I want to check if the candidate understood the technologies he used. After that I ask a more logical question. Not especially a real-life work problem. Like Sebastian Gebski says, it is more to see how the candidate reacts towards a problem and how he tries to solve it. I always start this exercise by saying to the candidate that there is no good or bad answers and that I want him to talk to me like if we were two colleagues trying to solve the same problem. And of course I help the candidate when he's stuck. The goal is also to assess his communication skills, which is a very understimated skills amongst developers.

<comment> maybe-idiot I like the idea of asking tech questions based on the tech listed on candidates resumes. And, sorry to call you out, but I feel a duty to point out your use of gender pronouns.

<comment><USER9> Sorry, English is not my main language. I'm still learning.

<comment><USER10> I recommend using 'they/them/their' in place of (s)he or 'he/she' as it flows better for the reader. For example... _see how the candidate reacts towards a problem and how they try to solve it._

<comment><USER9> Thanks for the tip and the explanation!

<comment><USER11> The reason that people now prefer "they" instead of "he" is that it causes a bias towards a gender when discussing things. If you're talking about something that has typically been male-dominated, it's kind of unfair to use "he" when talking about unknown people. So people prefer the use of "they" now, even though it's supposed to be plural. English just doesn't have a neutral pronoun otherwise.

</comment></comment></comment></comment></comment></comment><comment><USER12> right. So when you're done throwing the algorithm on the board, the candidate either implements it from memory because he's a new grad from college, or has to deal with the overhead of communicating fending off your questions and "helpful" suggestions. It's annoying and random and and gets you less interesting of candidates on net.

I swear, I was just dealing with this a week ago. "Excuse me, Mr. Interviewer. I can either answer your questions about what's going on here or attempt to fix the last let of this code. Which is more valuable to you?" Proceeded to use silence to fix code. Puzzle solving uses the uninterrupted brain.

And just the other day, I had the SQL schema question to design a schema … for a calendar! Worst interview question I ever experienced, honestly. Nearly no one designs calendars and they've got lots of ways to trip you up because recurring events are exciting. (Also, when I did design something decent with two tables and was asked to query both with a single SQL statement my interviewer didn't understand UNION but that's another matter.)

I like take home projects augmented with short exercises to verify that I'm not a plagiarist who's incompetent at code. If you want to assess my puzzle solving capabilities let me play a Zachtronics game like SpaceChem or the like.

<comment><USER13> I gotta ask... are companies you're interviewing with expecting you to have memorized particular algorithms? Or to be perfect with syntax?

In my most recent round of interviews, I found almost no one expecting me to recall a particular algorithm and implement it for a solution to a problem, but I did find plenty of questions that involved dealing with data structures, and writing my own code and algorithms to solve those problems.

Maybe I've been fortunate with not having been asked questions like "implement the quick sort algorithm"?

<comment><USER12> In this case it's a "distance between two employees in an org chart", which is basically a trivially modified closest-common-ancestor algorithm. The complication was that there was no ability to index into the tree at an employee and climb upwards, and they didn't want to incur the overhead of building that at the start.

That's fine in and of itself, but when I'm having a bit of a time pruning the common-ancestor paths, I want to use all 7 brain-registers for the problem instead of devoting 2-3 for communication, or, worse, having to flush everything from cache to analyze and respond to your "hint".

</comment></comment></comment><comment><USER14> > That's why my interviews are aimed to check how does the individual think > (instead of verifying her/his memorization skills). How does (s)he approach > problems, split them, classify them, explore possible solutions? When does > (s)he abandon the path that doesn't look promising anymore? Is (s)he able to > effectively share her/his thoughts (verbally, graphically, in code)? What > about focus - does (s)he navigate in terms of a given goal or roam > chaotically around?

This sounds a lot like system design or leetcode-esque interview questions, which is the trend among tech companies in the US.

> The problems candidates are facing at my interviews usually have NOTHING in > common with the company's domain, BUT they have a super-low entry level > (e.g. they are about common problems everyone encounters every day): > building up the context takes seconds (literally), so the candidate can > focus on tackling the problem, not understanding its basics.

Are they system-design questions? This post could use some examples of interview questions the author has asked.

</comment><comment><USER15> At my company, we interview a lot of intern / newgrad candidates who are also considering careers in finance. The less these people know about what "real work" in the tech industry actually consists of, the better our chance of closing them. The main goal of the interview is to present a fun puzzle that will make them like us.

<comment><USER16> How do you keep them then? A fun puzzle once a week - or just lots of money?

</comment></comment><comment><USER17> Teams need a portfolio of brains optimised for different and often complimentary workloads. Try to figure out what mental workload the candidates brain is optimised for and if it's a fit for your team.

If you're going to war and recruiting infantry. Some people can lift 200 pounds easy but can't run half a marathon. You likely want both types on your team.

<comment><USER18> I wouldn't want to go to war with squads where half of them can't carry the standard load and the other half can't keep up with a day's march. That seems a recipe for getting team performance down to the lowest common denominator.

Not sure how that relates back to software.

<comment><USER17> Certainly you need to have a baseline for capabilities. All teams have specialist roles be it infantry, sports or software.

A better analogy: the guy who wins the Nobel prize is not necessarily one who churns out the most papers. You could consider each type a speciality and you want both.

</comment></comment></comment><comment><USER19> The article assumes that only an "easy" real-life scenario will fit in an interview's timeframe. That is only true if you select scenarios unaltered.

A truly challenging real-life scenario can fit just fine after some alterations.

<comment><USER20> This is how I do it too - normally I'll take a thorny real life issue we've just had and decouple it from extraneous things I don't want to test and use that.

I'm intensely suspicious of people who believe that this isn't possible.

<comment><USER21> Do you mean a day or an hour?

One company asked me to find a bug in a library in a language of my choice out of a small list of languages in a bit under an hour. So I pick a language from a list of languages none of which I use regularly, and until the interview I was not sure which of dozens of combinations of tooling will be used by the project. It seemed like a reasonably sized bug that someone who was not worried about time pressure and had worked on a project tthar used the same tooling could reasonably do in the time given. So I failed, and I passed comparably difficult sections at other companies that I did not want to work at as much.

<comment><USER22> > So I pick a language from a list of languages none of which I use regularly, > and until the interview I was not sure which of dozens of combinations of > tooling will be used by the project.

Seems like this is where they went wrong...

<comment><USER16> It seems an ok technique, if you understand that the person does not use those languages, because maybe what you are testing is how well they approach something they do not know anything about.

I had this happen to me in one interview [https://news.ycombinator.com/item?id=13295212](https://news.ycombinator.com/item?id=13295212) using Python which I didn't know very well. Despite it not working out I thought it was one of the better interviews I've had.

</comment></comment></comment></comment></comment><comment><USER23> I don't know, my main question these days when interviewing someone is "how effectively can you turn money into work?". I don't care if you're having fun, I don't care if you're motivated by the company's vision, I don't care if your work is your hobby[0], I care about what kind of impact you'll have on the business.

Telling me "I will come in for 8 hours make things you want made, the way you want them, for money, and then go home" is fine by me.

[0] Some of these are bonuses or predictors of general suitability sometimes, but none is a deal-breaker.

</comment><comment><USER24> "is (s)he actually having fun (when solving challenging problems)"

I don't know about anyone else, but for me personally, it's a bit difficult to have fun when I'm unemployed and need a paycheck.

You might even say that interviews are testing for how financially secure you are. You can only truly relax during a job interview if you don't actually need the job.

<comment><USER16> Too relaxed might make you not care if you get the job, and not willing to put up with the typical hiring interview's little irritations - which was what happened to me last week .</comment></comment>


Levitating glass bead proves Einstein wrong - <AUTHOR> http://www.newscientist.com/article/dn18944-levitating-glass-bead-proves-einstein-wrong.html <comment><AUTHOR> The title is a bit link-baity (but it is the original title), Einstein was wrong about our capabilities to measure, not about some fundamental theory.

<comment><USER2> Indeed. The title should probably be "better measurements prove Einstein is still right", but that's not link-bait.

<comment><USER3> Also note how the Ars article (<http://news.ycombinator.com/item?id=1373580>) actually tells you a lot of useful stuff about the paper vs. this one that's in a magazine that's nominally for Real Scientists(TM).

<comment><AUTHOR> Scientific American hasn't been for "real scientists" since the mid 60's. They found that 'popular science' had a much larger audience and dumbed down accordingly. The old articles are a lot more solid on content, no fancy graphics and would actually require a bit of background knowledge to be understood. The last few years it is more at the level of 'infotainment' though they do serve as a useful system to pick out interesting developments from a large number of fields.

I think of it as an easy preview, if something is really interesting (and not over my head) then I'll try to locate the original paper. The problem with that is that most of the times those are ridiculously expensive if you are not affiliated with a university.

<comment><USER3> I stopped reading _Unscientific Americans_ in the '80s, when e.g. they published a series of anti-BMD articles where the list of "beyond the foreseeable state of the art" required developments kept dropping as they were accomplished (in one notable example, you and I could have built an "impossible" battery system out of car batteries in a few hours...).

However, this was published in _New Scientist_ , although after some investigation I note that it isn't officially a magazine for practitioners, contrary to the impression I've gotten from individual on-line articles I've looked at.

</comment></comment></comment></comment></comment><comment><USER4> Headline writers of popular press love to prove Einstein wrong. Einstein sells.

[http://www.google.com/search?q=einstein+wrong&hl=en&...](http://www.google.com/search?q=einstein+wrong&hl=en&prmd=nv&source=lnt&tbs=tl:1&ei=-uf5S5urOIS0lQfeh9S_Cg&sa=X&oi=tool&resnum=3&ct=tlink&ved=0CAwQpwU)</comment>