Pinterest Engineering

medium.com/@pinterest_engineering · Company blog · on HN since 2017

Pinterest's engineering team writes on Medium about scaling MySQL, Kafka streams, containers, PWAs, and build tooling.

What HN saysHN commenters praise it as one of the best engineering blogs, and link its MySQL sharding and 'love MySQL' posts.
70HN people shared it
17linked it in comments
73stories submitted
664story points
6 months agolast shared
2017people per year2026

Most-shared posts

  1. 1
    Sharding Pinterest: How we scaled our MySQL fleet (2015)
    4 people · 38 points · first shared 2017 · 9 comments on HN
  2. 2
    A one year PWA retrospective
    4 people · 6 points · first shared 2018 · discussion on HN
  3. 3
    Introducing Bonsai: an open source Webpack analyzer
    3 people · 17 points · first shared 2017 · discussion on HN
  4. 4
  5. 5
    Containerization at Pinterest
    3 people · 6 points · first shared 2017 · discussion on HN
  6. 6
    Continuous integration for iOS with Nix and Buildkite
    3 people · 5 points · first shared 2017 · discussion on HN
  7. 7
    Introducing Pinterest Labs
    3 people · 4 points · first shared 2017 · discussion on HN
  8. 8
    @Pinterest Engineering
    3 people · first shared 2017
  9. 9
    Three-day no-meeting schedule for engineers
    2 people · 267 points · first shared 2018 · 186 comments on HN
  10. 10
    Introducing Plank: Immutable model generation for iOS
    2 people · 11 points · first shared 2017 · discussion on HN
  11. 11
    Introducing Texture, a new home for AsyncDisplayKit
    2 people · 4 points · first shared 2017 · discussion on HN
  12. 12
    Kotlin for grumpy Java developers
    2 people · 4 points · first shared 2017 · discussion on HN
  13. 13
    Pinterest Engineering: Open sourcing DoctorKafka
    2 people · 3 points · first shared 2017 · discussion on HN
  14. 14
  15. 15
    Seven best practices for inclusive product design
    2 people · 3 points · first shared 2018 · discussion on HN

What HN people wrote when they linked it

zuck_vs_musk · 2026-05-13
I have contributed several posts to https://medium.com/@Pinterest_Engineering Of course, I am biased but I do believe we have one of the best engineering blogs out there.
sahin-boydas · 2019-06-21
MySQL then, MySQL now. A great read from Pinterest engineering: Learn to stop using shiny new things and love MySQL https://medium.com/@Pinterest_Engineering/learn-to-stop-using-shiny-ne…
xg15 · 2018-01-24
Not the US. If I open any link to a pin or try to browse a list, I get this: https://i.imgur.com/MQUoa2N.png Note the lack of an [X] button. This popup is both modal and non-dismissable, so you can't even click on links to other unauth areas. For non-technical users, the literal only options are signing up or closing the tab. It's not really a secret either. They wrote detailed posts on their tech blog about both the invention of the non-dismissable modal popup [1] and the descision to make the image the user was looking for less obvious compared to recommended content [2]. [1] https://medium.com/@Pinterest_Engineering/lessons-in-growth-and-increa… [2] https://medium.com/@Pinterest_Engineering/lessons-in-growth-engineerin…
firasd · 2017-09-15
Do you have FULLTEXT indexes on those rows? I find it hard to believe that searching something like e.g. a fragment of text in Youtube comments can be as fast in a SQL system (even in RAM) as in Elasticsearch. As for the other stuff I mentioned (recommendations, etc.) I'm not just basing it on my personal experience--here's a write-up from Pinterest about having to dump all their MySQL data to Hadoop to drive various types of analysis. I doubt they would do it it if just putting the SQL DBs in RAM was adequate! https://medium.com/@Pinterest_Engineering/tracker-ingesting-mysql-data…
ecesena · 2018-08-13
I built the one at Theneeds.com and, if you're interested, this is the one at Pinterest [1]. At Theneeds we were recommending news = fresh content based on user's interest and other features. Because the content is fresh, you can't easily have enough data for a proper collaborative system. Our algo was essentially the Reddit algo, where a piece of content gets a rank based on time and log of score. Score in Reddit is the upvotes - downvotes. At Theneeds we had a more complex score including social signals (likes on fb / RT on tw) so we could compute a meaningful score also without a big community of users. The other difference wrt Reddit was having different scores and different paces (multipliers) based on categories of content, so for example news in tech and politics from newspapers were updating faster than news on travel from magazines. And by normalizing the ranks, you can merge multiple categories in one -- a feature that I think Reddit also added. As for the code/stack, custom written in python. We were using Redis to cache user timelines using sorted sets (including the guest users, i.e. the default top news for each category). In Redis, you can merge sorted sets, and we used it as an efficient way to create the new timeline when a new user was signing up. [1] https://medium.com/@Pinterest_Engineering/introducing-pixie-an-advance… Edit: added more details about tech.
anthony_doan · 2019-08-15
They do? They should actually talk about it on their tech blog (https://medium.com/@Pinterest_Engineering). I couldn't find it other then third party post talking about them using it (https://prograils.com/posts/why-discord-pinterest-moz-bleacher-report-… Even their github https://github.com/pinterest, elixir isn't even in their top programming languages. It could be the secret sauce language kind of deal. Or they've moved away from it. It is a pleasure to see you outside of elixirforum.
AndrewKemendo · 2019-04-11
Pinterest has been doing this for years: https://medium.com/@Pinterest_Engineering/taste-graph-part-1-assigning… How is this different/better than what they are doing?
amanzi · 2019-03-17
Note that the URL in this post no longer works - it has changed to: https://medium.com/@Pinterest_Engineering/sharding-pinterest-how-we-sc…
zackargyle · 2018-09-10
You probably haven't used the app in the last 6 months. The mobile website was completely redone and doesn't force you to use the app anymore. See: https://medium.com/@Pinterest_Engineering/a-one-year-pwa-retrospective…
jparise · 2018-03-22
At Pinterest, we expanded the precision of our existing timestamp-based sequence column to accommodate reordering: https://medium.com/@Pinterest_Engineering/how-we-built-rearranging-pin…
austinl · 2017-10-16
I recently wrote a blog post about how we use Nix at Pinterest (just the package manager, not the OS). It helps us give all developers and CI an identical environment. On iOS, we run most build commands and other tools through the nix-shell. New engineers set up their environment by just running a script that installs nix and enters the shell. https://medium.com/@Pinterest_Engineering/continuous-integration-for-i…
aaronbrethorst · 2017-05-28
tunaoftheland · 2018-05-21
My take on this is that React Native works fine for content-dominant (media, text) apps but maybe not for UI interaction-dominant (arcade games, heavy animations, gestures) ones. You share a very similar API (React) and possibly the business logic between web and mobile. Your project could get bogged down by many little details and idiosyncrasies of React Native so a clear scope and discipline is important. One example is a Bluetooth-enabled iOS/Android app that I made (but did not publish to app stores). I was able to use a RN library for Bluetooth communication and interact with another device (a bathroom scale) in JavaScript. It was one of those "Wow, this is cool!" and "Man, this is pain!" moments. Note that I did not use create-react-native-app/Expo for this. Another app, also iOS and Android, simply renders the content of my wife's Etsy store, including the pictures (published to both Apple and Google Play stores). It was done using create-react-native-app/Expo. I didn't like the dependence on the Expo site for building app packages. It's free and there for now but I'll have to "eject" the app in the future if the something were to happen to the site. I used an open-source RN components library which does a good job selecting default typefaces and sizes. There were still fiddly bits I had to poke at to make it look decent, but it was alright for something that I whipped up as quickly as I could. The documentation for the component library was not keeping up with the…
ryanator · 2017-07-29
Hi, I wrote this article. Some context I think might not have made it to the Hacker News readers. We use Kotlin at Pinterest, we were one of the two teams talking about the value of Kotlin when google announced support at IO https://www.youtube.com/watch?v=fPzxfeDJDzY. The article is meant to show the reasons we considered not to use it. The language is very similar to Java and we've written some about how even "the grumpy java developer" can learn it https://medium.com/@Pinterest_Engineering/kotlin-for-grumpy-java-devel… We don't expect to be able to hire Android engineers that are familiar with Kotlin to the level of expertise we expect with Java. We do expect everyone to be able to work with any part of the Android code base and not be guessing at how of the concepts many android devs aren't familiar with work. If you don't consider the time for engineers to learn this, you are not considering some of the cost of adopting. If you think it's not that big of a deal, then go for it, we did.

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