Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    Facebook Engineering

    code.fb.com · Company blog · on HN since 2018

    Facebook's engineering blog, where its engineers describe open-source releases and internal infrastructure, from Linux kernel tools to AI hardware.

    Visit blogHN submissions
    Tech IndustrySystems & PerformanceOpen Source & Linux
    What HN says

    Commenters cite it as a good company blog for practical production ML and for Facebook's deployment, release, and code review practices.

    Stats for nerds
    147HN people shared it
    170linked in comments
    4.8Kstory points
    Sep 2019last shared
    2018people per year2019

    Top posts on HN

    1. 1
      Facebook open-sources a speech-recognition system and a machine learning library
      1 person · 498 points · first shared 2018 · 143 comments on HN
    2. 2
      Facebook open-sources new suite of Linux kernel components and tools
      6 people · 309 points · first shared 2018 · 111 comments on HN
    3. 3
      Zero-shot transfer across 93 languages
      1 person · 283 points · first shared 2019 · 85 comments on HN
    4. 4
      XARs: An efficient system for self-contained executables
      3 people · 246 points · first shared 2018 · 120 comments on HN
    5. 5
      Facebook launches PyTorch 1.0
      1 person · 245 points · first shared 2018 · 71 comments on HN
    6. 6
      Open-sourcing F14 for memory-efficient hash tables
      1 person · 225 points · first shared 2019 · 45 comments on HN
    7. 7
      Open sourcing oomd, a new approach to handling OOMs
      5 people · 170 points · first shared 2018 · 39 comments on HN
    8. 8
      Making floating point math highly efficient for AI hardware
      5 people · 169 points · first shared 2018 · 32 comments on HN
    9. 9
      Building Facebook's Service Encryption Infastructure
      1 person · 166 points · first shared 2019 · 45 comments on HN
    10. 10
      Improving compression at scale with Zstandard
      1 person · 139 points · first shared 2018 · 87 comments on HN

    What HN people wrote when they linked it

    • askafriendOct 2018

      First of all, the Facebook app is literally an entire operating system unto itself, among other things. Like someone pointed out, there's an entire Craigslist, an entire Snapchat, an entire Yelp, an entire YouTube, an entire web browser and so much more stuffed into a single app. On top of that, there are probably thousands of A/B tests and divergent code paths that are running simultaneously. Even if you have a feature, you probably have the code to switch between 10 different variants of that feature. There's also complex real time user instrumentation, media storage and backup features, tons of custom animation frameworks, networking frameworks, caching frameworks and on and on and on. The level of complexity and the millions of man-hours worth of code backing that app is insane.

      At this point, it shouldn't be surprising in the slightest that the app is a cool ~300megs. Could it be better? Sure, and I'm sure they're working on it. After all, look at their developing country strategy and the stuff they do with "Facebook For Every Phone" to shave off every last byte from their apps: https://code.fb.com/android/how-we-built-facebook-lite-for-every-android-phone-and-network/

      If you look at the incentives, it's NOT in their best interests to make updates hard. That's not how they make money and in developing countries it actively costs them business. It's not that they're intentionally bloating the app just to mess with you....it's just that there's really that much going on…

    • z3t4Mar 2019

      I think static typing is needed in a low, middle level programming language to help the optimizer, and make sure values doesn't go out of bounds. Fanny enough higher level languages like JavaScript (and probably python to, I don't know Python) are strictly typed eg. you can never go out of bound and get overflow errors, have dangling pointers, etc. When you already have strict typing, there's less need for static typing.

      If the statically typed language is compiled to a dynamic language, you will lose most of the performance gains too, for example Dart is almost like JavaScript-with-static-typing, but it's twice as fast because the compiler can actually make use of the static types.

      I also think static typing bolted on to a dynamic higher level languages do push you into an object oriented paradigm.
      And I think the language becomes uglier with annotations.
      And it makes people lazy so they name things x, y, z because the type annotation fills in the rest.
      But who cares about syntactic preferences, code readability and naming things :) The real reason you use static typing is to catch bugs ... But the best way to catch bugs is to understand the code, and have many people read it. When I see less good programmers the workflow goes something like this:

      -I want to do foo ... autocomplete ... fooBaz, fooBar, fooFoo ... hmm, what can I do with foo ... autocomplete ... foo.bar sounds like what I need, it takes a baz, new Baz() ... damnit how do I get rid of this null exception…

    • m0zgJan 2019

      Nope. It's all 100GbE throughout as far as I know. And people do work really hard to be able to saturate that bandwidth as it is by no means a trivial task to saturate it through the usual, naive means without the use of RDMA and Verbs. Years ago when I was there it was (IIRC) 40Gbps to each node straight up.

      It's a necessity really. All storage at Google has been remote and distributed for at least the past decade. That puts serious demands on network throughput if you want your CPUs to actually do work and not just sit there and wait for data.

      Here's some detail as of 2012: https://storage.googleapis.com/pub-tools-public-publication-data/pdf/43837.pdf. Note that host speed is 40Gbps. And here's FB talking about migrating from 40Gbps to 100Gbps in 2016: https://code.fb.com/data-center-engineering/introducing-backpack-our-second-generation-modular-open-switch/

    • fsavardOct 2018

      It's a theme I like to read about (I mean "practical issues around ML in production settings"). I find company blogs and some research publications are great resources. Examples:

      - https://eng.uber.com/
      - https://code.fb.com/

      and many more. Google also publishes papers on various engineering practices obviously, some ML-related, but I can't find a blog where they focus on that specifically.

      Also it's not "to keep up to date", but there's a great paper (from Google) that's often cited:

      Machine Learning: The High Interest Credit Card of Technical Debt
      https://ai.google/research/pubs/pub43146

      It talks about issues you face over the long run (I've experienced some of those). It
      also provides interesting pointers for further reading, e.g. about "pipeline jungles".

      If others have pointers, I'm curious to hear about them as well.

    • lifthrasiirMay 2019

      There is a Ruby port [1] publicly available. From the encoding routine [2], it seems to be an sRGB correction followed by a two-dimensional DCT. The first two bytes encode parameters---the size of the output matrix n x m and the quantization scale used for ACs; next 4 bytes encode the DC, then (nm-1) quantized ACs (2 bytes per AC) follow. The comparison to Facebook's similar solution [3] would be interesting (but I realize that Blurhash tries to hide explicit images, so technically they have different goals).

      [1] https://github.com/Gargron/blurhash/

      [2] https://github.com/Gargron/blurhash/blob/master/ext/blurhash/encode.c

      [3] https://code.fb.com/android/the-technology-behind-preview-photos/

    • nindalfDec 2018

      I agree with the spirit of what you're saying. Too often I've seen folks on HN dismiss languages because they didn't have features X or Y, usually with a condescending "maybe this language's creators should read some PL theory". I remember circa 2013 or 2014, it became impossible to read threads related to Go because the entire thread would always be "a Real Language(TM) needs Generics". Look at the success Go has seen in the last decade while doing the opposite of what HN thought was correct.

      That said, there do exist useful products written in Haskell. For example, Facebook writes a lot of spam fighting code in Haskell. https://code.fb.com/security/fighting-spam-with-haskell/

    Related

    Facebook Researchresearch.fb.com166 people

    Facebook open-sources Detectron

    Facebook Research
    Company · last shared 2022
    Engineering at Metaengineering.fb.com657 people

    Sapling: A new source control system with Git-compatible client

    Engineering at Meta
    Company · last shared 2026
    Uber Engineering Blogeng.uber.com525 people

    Why Uber Engineering Switched from Postgres to MySQL

    Uber Engineering Blog
    Company · last shared 2025
    Meta Techtech.fb.com63 people

    AI is supercharging the creation of maps around the world

    Meta Tech
    Company · last shared 2022
    Twitter Engineering Blogengineering.twitter.com121 people

    Twitter Rolls Twitter.com Back to a Server-Side Architecture

    Twitter Engineering Blog
    Company · last shared 2017
    Microsoft Blogblogs.microsoft.com669 people

    Announcing SQL Server on Linux

    Microsoft Blog
    Company · last shared 2026
    Yahoo Engineeringyahooeng.tumblr.com53 people

    Open Sourcing a Deep Learning Solution for Detecting NSFW Images

    Yahoo Engineering
    Company · last shared 2024
    Sourcegraph Blogabout.sourcegraph.com156 people

    An ex-Googler’s guide to dev tools

    Sourcegraph Blog
    Company · last shared 2024