✨ Live: Black Friday Sale for The Software Essentialist - Ends in 4 days.
When I was first starting out, I kept feeling like I was missing something fundamental. Even after university… even after working professionally… there was still this gap no one was talking about.
Everyone was teaching frameworks and libraries. But almost no one was teaching how to think — how to design systems from first principles, how to architect clean software, how to test intelligently, how to build something you're actually proud of.
So I spent the next several years trying to piece it all together. Books, papers, articles, endless experiments, breaking my own code, rebuilding it, seeking mentors, coaching developers 1 on 1, and eventually discovering the mental models that actually matter.
That's why I created The Software Essentialist. I wanted to build the last programming course you'll ever need — so you can stop hunting through random tutorials and finally master the craft.
For the first time since launching it, I'm doing something I rarely do:
I'm opening the doors with a Black Friday offer that won't return for at least another year.
This is the course I spent years building — the same one hundreds of developers have used to:
- break out of "expert junior developer" purgatory
- jump from junior → senior
- build cleaner, more scalable systems
- design with clarity instead of chaos
- and even start their own SaaS companies (seriously)
Inside, you'll go through a 12-week, self-paced, hands-on curriculum broken into 5 Phases, where you'll learn how to apply the 12 Essentials of testing, design, and architecture — the deeper patterns behind TDD, BDD, DDD, and clean design that stay relevant no matter what language or framework you use.
If you want to sharpen your thinking, level up your craft, and finally step into senior-level clarity… now's the time.
✨ Get 30% off before Dec 1st
(Black Friday — once a year.)
Learn more about the course here.
To your craftship,
Khalil
How to Find and Kill a Background Node Process

I'm sure you've run into this issue before.
You try to npm run start a project up but you get an error that looks something like the following:
project git:(master) ✗ npm run start
> gatsby develop
/Users/khalilstemmler/Documents/Personal/current/solid-book-wiki/projects/wiki/node_modules/yoga-layout-prebuilt/yoga-layout/build/Release/nbind.js:53
throw ex;
^
Error: listen EADDRINUSE: address already in use 127.0.0.1:8000
at Server.setupListenHandle [as _listen2] (node:net:1372:16)
at listenInCluster (node:net:1420:12)
at GetAddrInfoReqWrap.doListen (node:net:1559:7)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:73:8)
Emitted 'error' event on Server instance at:
at emitErrorNT (node:net:1399:8)
at processTicksAndRejections (node:internal/process/task_queues:83:21) {
code: 'EADDRINUSE',
errno: -48,
syscall: 'listen',
address: '127.0.0.1',
port: 8000
}What's going on here?
You have another process running on port 8000 and whatever you're trying to spin up also needs to utilize that port.
You can tell this from the
EADDRINUSEerror constant and the fact that it says127.0.0.1:8000is alreaady in use.
What to do?
Here's a quick an easy fix to kill the process running so you can start something else up on that port.
1. Find what's running on the port
First thing is first. Use the lsof command to see what's running.
We'll use it like this: lsof -i:<port>.
wiki git:(master) ✗ lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 49516 khalilstemmler 27u IPv4 0xb0855a2b3b9a7a2b 0t0 TCP localhost:irdmi (LISTEN)Just as I thought. Some node process running.
2. Take note of the process number
Take a look at the PID column. That marks the process number.
wiki git:(master) ✗ lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 49516 khalilstemmler 27u IPv4 0xb0855a2b3b9a7a2b 0t0 TCP localhost:irdmi (LISTEN)Copy it. You'll need it for the next step.
3. Kill whatever's running on that port by using the process number
Now, let's kill the process.
You can do so with kill -9 <process-number>.
For example:
kill -9 495164. Confirm the process has been killed
Good.
Lastly, let's make sure that worked.
We can run the lsof command again to see if there's a process running.
➜ wiki git:(master) ✗ lsof -i:8000
➜ wiki git:(master) ✗ Nothing! Looks like we did it.
5. Re-run whatever you were trying to run
And finally, re-run whatever you were trying to run on that port.
Done-zo.
Now get back to it.
Summary
Here's a summary.
- Use
lsof -i:<port>to find the offending process id - Take note of the process number in table
- Use
kill -9 <process-number>to kill the process at the port - Confirm it worked with
lsof -i:<port>again. You should not see the same process.
✨ Live: Black Friday Sale for The Software Essentialist - Ends in 4 days.
When I was first starting out, I kept feeling like I was missing something fundamental. Even after university… even after working professionally… there was still this gap no one was talking about.
Everyone was teaching frameworks and libraries. But almost no one was teaching how to think — how to design systems from first principles, how to architect clean software, how to test intelligently, how to build something you're actually proud of.
So I spent the next several years trying to piece it all together. Books, papers, articles, endless experiments, breaking my own code, rebuilding it, seeking mentors, coaching developers 1 on 1, and eventually discovering the mental models that actually matter.
That's why I created The Software Essentialist. I wanted to build the last programming course you'll ever need — so you can stop hunting through random tutorials and finally master the craft.
For the first time since launching it, I'm doing something I rarely do:
I'm opening the doors with a Black Friday offer that won't return for at least another year.
This is the course I spent years building — the same one hundreds of developers have used to:
- break out of "expert junior developer" purgatory
- jump from junior → senior
- build cleaner, more scalable systems
- design with clarity instead of chaos
- and even start their own SaaS companies (seriously)
Inside, you'll go through a 12-week, self-paced, hands-on curriculum broken into 5 Phases, where you'll learn how to apply the 12 Essentials of testing, design, and architecture — the deeper patterns behind TDD, BDD, DDD, and clean design that stay relevant no matter what language or framework you use.
If you want to sharpen your thinking, level up your craft, and finally step into senior-level clarity… now's the time.
✨ Get 30% off before Dec 1st
(Black Friday — once a year.)
Learn more about the course here.
To your craftship,
Khalil
Stay in touch!
Join 20000+ value-creating Software Essentialists getting actionable advice on how to master what matters each week. 🖖
View more in Tooling