Native Implemented Functions (NIFs) are a powerful way to call native functions written in C, C++, Rust, Haskell, and more! However, special attention must be given to avoid destabilizing the Erlang VM. We'll review examples of misbehaving NIFs and how to measure their negative effects on the Erlang VM scheduler. We'll then explore patterns for well-behaved NIFs, including: timeslice reductions, dirty schedulers, I/O events, and threads. We'll also explore the new features introduced in Erlang/OTP 20 and take a look at future plans for the NIF.