S

Sarah Mei

sarahmei.com · Personal blog · on HN since 2009

Sarah Mei, a software developer and Ruby community figure, writes about databases, programming culture, Rails, and diversity in tech.

What HN saysHN links her post "Why You Should Never Use MongoDB", which one commenter says started much of the criticism of Mongo, and her essay on programming not being math.
48HN people shared it
32linked it in comments
17stories submitted
1.2Kstory points
2 years agolast shared
2009people per year2026

Most-shared posts

  1. 1
    Why You Should Never Use MongoDB
    26 people · 908 points · first shared 2013 · 337 comments on HN
  2. 2
    Programming is not math
    6 people · 95 points · first shared 2014 · 113 comments on HN
  3. 3
    Why "Gender" is a Text Field on Diaspora
    4 people · 26 points · first shared 2010 · 12 comments on HN
  4. 4
    Speak Ruby in Japanese
    3 people · 9 points · first shared 2010 · discussion on HN
  5. 5
    Why rails is still a ghetto
    3 people · first shared 2009
  6. 6
    Why I Don’t Work At Google
    1 people · 114 points · first shared 2010 · 72 comments on HN
  7. 7
    What Your Conference Proposal Is Missing
    1 people · 1 points · first shared 2014 · discussion on HN
  8. 8
    The fosdem conundrum
    1 people · first shared 2021
  9. 9
    Blog
    1 people · first shared 2017
  10. 10
    Scale 8x slides posted
    1 people · first shared 2011
  11. 11
    Comment page 1
    1 people · first shared 2021
  12. 12
    Outside in bdd
    1 people · first shared 2010

What HN people wrote when they linked it

rglover · 2022-08-02
AFAIK, most of the FUD around Mongo came from this article (and the subsequent "telephone" game that followed it): http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… In practice, Mongo is a solid-enough database with its most valuable asset being its query language. I've worked on projects where it handles millions of records without any issue. Reaching this size of footprint is difficult unless you have a massive user base or you're working with transactional data. FWIW, the project in mind has a disk size of ~5GB which isn't much at all. Imagine most projects won't even get close to testing the limits of MongoDB and base their opinions of it on hearsay. Disclaimer: I'm a developer not a full-blown DB admin so I'm sure there's a specialist who has more details about specific performance issues.
geophile · 2021-10-03
They work for a very specific use case. And if you need to expand that use case, or address others, good luck. Relational database systems are complicated for good reasons. Schemas, which do cause problems, are there for good reasons, and the alternative problems obtained by going without schemas are just not worth it, nearly all the time. I think a lot of the attraction of NoSQL databases is that they are seductive for people who don't know about the problems inherent in working with shared, persistent, long-lived data, (i.e. years). A NoSQL system lets such people get started easily. They start down the path, and then they run into dragons, and muggers, and hostile aliens. This is a really good description of what I mean: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
jodrellblank · 2019-06-10
Not until I went to university, to study computer science, of all things. I was good at language, so I treated programming as a language problem. Just today I was reading this blog post from someone who loved math, went into programming, and claims that programming isn't math, it's language, and that the image comes from early programmers being mathematicians and the industry hasn't moved on from that image yet: http://www.sarahmei.com/blog/2014/07/15/programming-is-not-math/ People with a math background did fine, of course, but people with a heavy language background often did better. I saw this curious effect again when I started working with high schoolers, with a similar curriculum. Bilingual kids often took to programming more easily than monolingual kids. (Has that been discussed or investigated?)
abiox · 2016-04-19
well, in mongo's case, there has been some rather strong criticism leveled at it over time.[1][2][3] some aspects have probably improved, but (as i don't follow mongo) i can't say how proactive and public mongo's owner has been in addressing criticisms. [1] http://cryto.net/~joepie91/blog/2015/07/19/why-you-should-never-ever-e… [2] http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… [3] https://aphyr.com/posts/322-call-me-maybe-mongodb-stale-reads
chris_wot · 2015-01-10
My point is that it's so limited that for most people (and that includes single-page apps) you're better off using a relational database. I've been watching hierarchical data models for some time now - I honestly can think of only a few, limited applications for something like MongoDB. I'm not the only one who thinks so - see http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… Edit: Look, I know I'm being negative on MongoDB. But I really wanted it to be awesome, but it's inherent limitations are just so start that I feel that most people who use it are doing so because they are misinformed or misled. If you have found success with it, that's great. I just have very strong reservations about the entire data model for most people. As someone has posted above: if you have data that is relational, then it's relational - you should use a RDBMS.
mjdwitt · 2011-12-02
I don't know if you saw Sarah Mei's talk[1] about getting the female population of SF Ruby from 2% to 18% in a year, but she presented a lot of interesting (and effective sounding, based on her experiences) methods of how to attract more women to conferences. [1] http://www.sarahmei.com/blog/2010/02/20/scale-8x-slides-posted/ The audio is a bit long, but it's worth listening to over the slides.
lkrubner · 2019-04-24
At some point I'll write up my notes about how I've been using MongoDB. I've basically given up on SQL databases. Every architecture, for every scale, from small to Enterprise, is really better handled by MongoDB, sometimes in conjunction with Kafka (since any sufficiently large operation is automatically heterogeneous and polyglot, with different database technologies). When you're a small startup and you're just starting up, you can create a single MongoDB instance (ignore everything about you've heard about Web Scale) and stuff data into it as needed, without thinking much about the structure. You can add in contracts on your database functions, which slowly specify the contract, as you learn more about what your project is really about. To get a sense of that style of development, please see what I wrote in "How ignorant am I, and how do I formally specify that in my code?" http://www.smashcompany.com/technology/how-ignorant-am-i-and-how-do-i-… MongoDB is great for ETL. You can pull JSON from 3rd party APIs and store it in its original form, then later transform it into the different forms you need. In large Enterprises, you will inevitably be trying to get multiple services and databases to work together. The old style for dealing with this was the ESB (Enterprise Service Bus) or SOA (Service Oriented Architecture) but in recent years most of the big companies I've worked with have moved toward something like a unified log, as Jay Kreps wrote about in…
neuronic · 2021-07-10
Can you? For every article hating SQL there is one for hating NoSQL: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
filleduchaos · 2021-05-01
This is the context: http://www.sarahmei.com/blog/2009/04/25/why-rails-is-still-a-ghetto/co… Basically a bit over a decade ago, DHH was aware of and explicitly condoned a NSFW image in a Ruby conference talk's slides.
rjzzleep · 2021-03-25
Keep in mind that Sarah Mei also looks through everything in terms of diversity through the american lense of literal black and white skin color[1], completely disregarding the fact that some of these people in Europe - myself included - have had their fair share of racism across Europe even though we are considered "white" in the US. Ask turks how they are treated in Germany or people from the Maghreb region in southern france or Romas even though they're "white caucasian dudes" in these peoples eyes. Besides myself getting pepper sprayed from old Germans myself on the top of my head there is a study in Germany that gives you a 50% less chance of getting hired if you have a non central European name. The self righteousness and ignorance of these people knows no bounds. [1] http://www.sarahmei.com/blog/2015/02/01/the-fosdem-conundrum/
rubyist5eva · 2021-02-01
Never use MongoDB. Ever. It's a rule of thumb that hasn't led me astray yet. http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
pier25 · 2017-10-19
This article is still relevant: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… The main point is: most of your data is most likely relational and not document based. Use the DB that fits your data model, and not the data model that fits your DB.
limedaring · 2017-01-30
Some amazing non-male developers: — Jen Simmons: http://labs.jensimmons.com/ — Julia Evans: https://jvns.ca/ — Lea Verou: http://lea.verou.me/ — Mina Markham: http://mina.codes/ — Sara Soueidan: https://sarasoueidan.com/articles/ — Sarah Mei: http://www.sarahmei.com/blog/ — Ana Tudor: https://thebabydino.github.io/ — Anna Debenham: http://www.maban.co.uk/
clentaminator · 2016-06-08
An interesting read into the development of a project that started using MongoDB and switched to PostgreSQL after eight months in production: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
st3v3r · 2016-03-23
Ok, but that's not everything. What about talks with sexist content? Remember the "Perform like a porn star" talk (http://www.sarahmei.com/blog/2009/04/25/why-rails-is-still-a-ghetto/)? The person giving the talk might not be actively harassing someone, but they're clearly making the conference a place where women do not feel welcome.
TheDong · 2015-01-14
> Facebook clone Diaspora is a social network that made the mistake of choosing mongodb for their first iteration. Here's a blog post where one of the involved developers explains why it's not good for that, even: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
wmf · 2014-11-12
If your data is fundamentally relational you're better off putting it into a relational DB. http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
cllns · 2014-02-13
This is awesome! Diaspora did this a few years ago too (more or less) http://www.sarahmei.com/blog/2010/11/26/disalienation/
poseid · 2013-12-06
Indeed, an the AQL looks interesting for the use case where Mongo fails, e.g. http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
rufibarbatus · 2011-07-08
Relavant: Diaspora does (or did) exactly that. http://www.sarahmei.com/blog/2010/11/26/disalienation/ HN thread: http://news.ycombinator.com/item?id=1944628 Slightly less relevant: gender done right by, of all things, a social networking game. Here's a review: http://borderhouseblog.com/?p=3053
taylorbuley · 2011-02-17
Reminds me of the Diaspora gender option conversation. http://www.sarahmei.com/blog/2010/11/26/disalienation/
steveklabnik · 2010-08-30
Sure. Now that I'm not on my phone, it's much easier to grab some links. Here's the original work on the subject, by Dan North: http://blog.dannorth.net/introducing-bdd/ A little Rails specific, but this post by Sarah Mei is pretty awesome: http://www.sarahmei.com/blog/2010/05/29/outside-in-bdd/ These two Railscasts on Cucumber are good: http://railscasts.com/episodes/155-beginning-with-cucumber http://railscasts.com/episodes/159-more-on-cucumber But really, conceptually, BDD isn't that complicated. The hardest bit is figuring out the tooling for whatever language you're using, getting comfortable with it, and practicing. I know the Ruby side of this well, but if you're using another language, I'm not sure I can be of much help.
paulddraper · 2016-09-20
Reminds me of http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… > Remember that TV show application? It was the perfect use case for MongoDB. Each show was one document, perfectly self-contained. No references to anything, no duplication, and no way for the data to become inconsistent. > One Monday, at the weekly planning meeting, the client told us about a new feature that one of their investors wanted: when they were looking at the actors in an episode of a show, they wanted to be able to click on an actor’s name and see that person’s entire television career. > The client expected this feature to be trivial. If the data had been in a relational store, it would have been. > I learned something from that experience: MongoDB’s ideal use case is even narrower than our television data. The only thing it’s good at is storing arbitrary pieces of JSON. “Arbitrary,” in this context, means that you don’t care at all what’s inside that JSON. You don’t even look. > When you’re picking a data store, the most important thing to understand is where in your data — and where in its connections — the business value lies. If you don’t know yet, which is perfectly reasonable, then choose something that won’t paint you into a corner. Pushing arbitrary JSON into your database sounds flexible, but true flexibility is easily adding the features your business needs.
nathan_long · 2016-06-09
My concern would be whether Mongo will cause me to lose data.... "To recap: MongoDB is neither AP nor CP. The defaults can cause significant loss of acknowledged writes. The strongest consistency offered has bugs which cause false acknowledgements, and even if they're fixed, doesn't prevent false failures." https://aphyr.com/posts/284-call-me-maybe-mongodb ...or get my data corrupted: "When MongoDB is all you have, it’s a cache with no backing store behind it. It will become inconsistent. Not eventually consistent — just plain, flat-out inconsistent, for all time. At that point, you have no options. Not even a nuclear one. You have no way to regenerate the data in a consistent state." http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… When you refactor or rewrite your code, you have the old code in version control, can write tests to confirm that it still works as expected, and there's no inherent time pressure. If you pick an unreliable database and your data has been or is being lost and/or corrupted, it's more like a "try to stop the bleeding before the patient dies" situation. That's not the time I want to be considering changing databases.
joepie91_ · 2016-02-18
> JavaScript Object Notation which looks exactly the same as JavaScript. Whether it looks the same is irrelevant. It doesn't even have the same syntax rules. For example, this is valid JavaScript: { one: "two", three: undefined } ... but would be completely invalid in JSON, in more than one way. No, they are not the same. > don't see how it's the same as converting for example PHP to MySQL where I'm bound by a schema which looks nothing like my data structure in PHP And in 99% of cases, this is a feature, because you can't represent most data as a flat list of nested objects. See also this article: http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… Aside from that, if you want a native nested representation of data in your database, so including relations, you use an ORM. For example, in PHP with MySQL, you might use Eloquent. How data is represented in your application and how it's represented in the database, are two entirely different things. There's no advantage to be gained from trying to make them the same thing - that's the concern of the database abstraction that you choose to use.
smoyer · 2015-08-21
"Learn X in Y minutes" is an awesome concept! Let me know if you ever decide to run with it. I guess I don't fit the CoffeeScript is a hipster language profile very well but I still enjoy writing code in it ;) I basically agree with everything you've said (in both posts) ... you can be successful while wasting cycles. And if you're working on a low-volume and/or internal only application, you'll probably never face the limits of a modern server. If you need to operate "at web scale" [1], or run into an uncommon (or common) bug, you'll need to know more about the frameworks and systems you're code relies on (e.g. MongoDB configuration for systems over 2GB [2]). Blog posts like the one referenced are completely unfair to those that developed MongoDB - read the manual and understand how MongoDB works OR use it at your own risk. So I'll switch arguments and help you make your point. We have an application written in Oracle's Application Express - while we have extensive expertise in Oracle's database software, we have this one system which was completed for expediency's sake. It's kind of horrific but (mostly) works at the scale required. It would be financially foolish to dig into more deeply into ApEx for this one dead-end application. Everyone is happy. [1] https://www.youtube.com/watch?v=b2F-DItXtZs (audio NSFW) [2] http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo…
yukichan · 2014-03-22
Aphyr has thoroughly explained what is wrong with MongoDB[1]. I'm quite sure that things aren't probably as swell with your tech stack you might imagine. A commenter here has in the past demonstrated how to cause someone using MongoDB data problems by sending too much information too quickly for MongoDB to handle in a targeted way although I can't find the link to it now. I have been wanting to try it myself to see if I could do it too. Firebase uses MongoDB[2]: "Firebase stores all its data in MongoDB which offers the built-in capability for apps to scale automatically and gives each piece of data its own unique URL stored in JSON documents." I was going to see if I can get achieve data consistency problems there for my own firebase app. Also posts that malign MongoDB frequently make it to the home page [3][4]. [1] http://aphyr.com/posts/284-call-me-maybe-mongodb [2] http://www.mongodb.org/about/production-deployments/ [3] http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongo… [4] http://www.aaronstannard.com/post/2013/12/19/The-Taxonomy-of-Terrible-…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close