Meta Tech Podcast

71: Translating Java to Kotlin at Scale

Meta Tech Podcast

Show Notes

How do you translate roughly ten million lines of Java code to Kotlin? Clicking in your the IDE gets pretty repetitive after a while and doesn't work if you have custom APIs and requirements for null safety. Eve and Jocelyn, two software engineers on the Mobile Infra Codebases Team have taken on this challenge and talk host Pascal through the unexpected difficulties when embarking on the journey to (close to) 100% Kotlin in our Android codebase. Got feedback? Send it to us on Threads (https://threads.net/@metatechpod), Instagram (https://instagram.com/metatechpod) and don't forget to follow our host Pascal (https://mastodon.social/@passy, https://threads.net/@passy_). Fancy working with us? Check out https://www.metacareers.com/. Links Meta Engineering Blog - Translating Java to Kotlin at Scale: https://engineering.fb.com/2024/12/18/android/translating-java-to-kotlin-at-scale/

Open-source transformations: https://github.com/fbsamples/kotlin_ast_tools

Mobile @Scale Conference recordings: https://www.youtube.com/watch?v=L7xSnbrk4CI

Timestamps Intro 0:06

Introduction Eve 1:11

Introduction Jocelyn 2:15

Team mission 2:44

The scale of Meta's codebase 3:40

Why is there so much code? 4:34

Why migrate to Kotlin? 5:45

Isn't Kotlin slow to compile? 7:51

Why not use Android Studio's converter? 8:28

Nullability differences 10:04

Meta Codemod Service 14:50

Kotlin codemod stages 17:07

Headless J2K 20:14

Open-source transformations 23:14

Java Nullsafe 24:47

Leveraging Linters 26:01

Fixing build errors 27:24

Unexpected challenges 29:33

State of the union 33:44

Outro 36:10

Outtakes 37:08

More from Meta Tech Podcast

Oct 15, 2026

How do you add end-to-end encryption to a messenger that people have already been using for years, without taking away the message history they expect to be there? Emma Connor works on the team behind Labyrinth, Messenger's encrypted storage protocol. We get into where the encryption keys actually live, which turns out to be nowhere near Meta, and why a six-digit PIN is far harder to attack than six digits ought to be. Emma also explains the hardware security modules that Meta deliberately locked itself out of, what happens when you lose a device and want it cut out of your account, how key transparency lets you verify who you are talking to without having to trust us, and why Labyrinth 1.1 moved to post-quantum cryptography. All of this and more is discussed in this episode. Got feedback? Send it to us on Threads (https://threads.net/@metatechpod), Instagram (https://instagram.com/metatechpod) and don't forget to follow our host Pascal (https://mastodon.social/@passy, https://threads.net/@passy_). Fancy working with us? Check out https://www.metacareers.com/. Links Opaque Rust Crate - https://crates.io/crates/opaque-ke

Jul 29, 2026

Pascal is going on Recharge for August so there will be no regular interview episode. However, we want to hear your questions for our mailbag episode. Send them to us on Instagram (https://www.instagram.com/metatechpod) or Threads (https://www.threads.com/@metatechpod) or via good old email to [email protected].

Jul 13, 2026

What changes for you as a developer when the device moves from your pocket to your face? The battery shrinks by an order of magnitude, the thermal budget is whatever won't make your nose uncomfortable, and your mental model of "one process, one device" goes out the window. Rey and Dmitrii talk us through their custom power monitors, how they've extended Perfetto to give a coherent trace across a multi-device system, why robotic arms make surprisingly good QA engineers, and what it takes to catch the kind of regression that quietly costs you thirty minutes of call time. All of this and more is discussed in this episode. Got feedback? Send it to us on Threads (https://threads.net/@metatechpod), Instagram (https://instagram.com/metatechpod) and don't forget to follow our host Pascal (https://mastodon.social/@passy, https://threads.net/@passy_). Fancy working with us? Check out https://www.metacareers.com/. Links Migrating Data Ingestion Systems at Meta Scale: https://engineering.fb.com/2026/05/12/data-infrastructure/migrating-data-ingestion-systems-at-meta-scale/

Jun 9, 2026

Your smart glasses run all day on a battery narrower than your pinky finger and building it required reinventing how batteries are made. In this episode, Pascal talks to Karthik and Myuran, the engineers behind Meta's steel can battery technology, to explore why traditional pouch cells couldn't cut it for the ultra-slim temple arms of AI glasses like Meta Ray-Bans and the Oakley Vanguards. Tune in to learn how Meta designed, built, and scaled the batteries powering your glasses, wristbands, and cases from first prototype to mass production. Got feedback? Send it to us on Threads (https://threads.net/@metatechpod), Instagram (https://instagram.com/metatechpod) and don't forget to follow our host Pascal (https://mastodon.social/@passy, https://threads.net/@passy_). Fancy working with us? Check out https://www.metacareers.com/. Links SilverTorch: Index as Model — A New Retrieval Paradigm for Recommendation Systems - https://engineering.fb.com/2026/05/26/ml-applications/silvertorch-index-as-model-new-retrieval-paradigm-recommendation-systems/ Timestamps Intro and News 0:06

May 8, 2026

You've probably spotted those little circles of your friends' faces popping up on Facebook Reels. They look simple enough, but building them was a proper engineering challenge. In this episode, Pascal chats to Joseph and Subasree about Friend Bubbles, a feature that surfaces which of your close friends have been watching and reacting to the same Reels as you. We get into the details of how prefetching keeps things snappy without wrecking scroll performance, why the team's ML model had to move from survey-based friend rankings to real-time interaction signals, and the surprising discovery that showing fewer bubbles actually made the whole feature click. If you've ever underestimated a "simple" feature, this one's for you. Got feedback? Send it to us on Threads (https://threads.net/@metatechpod), Instagram (https://instagram.com/metatechpod) and don't forget to follow our host Pascal (https://mastodon.social/@passy, https://threads.net/@passy_). Fancy working with us? Check out https://www.metacareers.com/. Links https://engineering.fb.com/2026/03/18/ml-applications/friend-bubbles-enhancing-social-discovery-on-facebook-reels/

See all episodes →