Word of advice.
Get a part time job where you can keep your skills up-to-date because from personal experience personal projects on GitHub will not be enough to land a job in two years. Make sure for every penny you spend you are earning equal.
The two years are going to fly by.
EDIT: I'm not joking about taking this serious. You want to be working when people start losing their jobs to AI. Most likely this is going to end with society rethinking distribution but you are going to need to be able to survive the changes and 2 - 3 years is not enough wealth.
My solution was getting a part-time job (non tech) but also had to significantly change my spending habits which was not easy.
I have a very niche set of skills so I could up until 6 months ago pick up contract work anytime I needed. Despite being one of the best in the world at what I did, I can't compete anyone with $400 in tokens using Codex or Claude Code. I'm pivoting quickly but the sentiment is "Oh, shit, this is coming fast and heavy!"
Sure it's not 'the smart thing to do' but if it makes you happy and you're still not far worse of than most people...
I live in a first-world European country where the average salary is about €25,000 per year. My mortgage estimate is less than €300/mo. I'm not that afraid of having to supplement my income if I need to. The world will still need cheap and experienced software engineers for a while.
I don't want to step on your design process, but if you want to explore some microkernels to run beam, I can link you to mine and another one that I ran into recently. Asking before linking, because sometimes you'd rather not look.
2. I'm not exactly looking to recreate the BEAM. I'm building a message-passing microkernel built on my interpretation of capabilities: they replace PIDs in a way that they basically become akin to object pointers, with all the extensibility and security. It's a pretty wild prototype, with a ring-0 kernel that's less than 2k lines which only deals with paging and interrupts, and the userspace is one-scheduler-per-core and a stackless design on a linear address space. A design goal is MAXIMUM performance and simplicity: in most cases a sending a message to another capability is no heavier than a function call, unless the destination is currently busy.
Processes just export a
void handle(void *cap_private_state, msg_t message)
entrypoint instead of a main function. I just want to see where I can take this idea.I ended up coming back as a contractor, but have repeated the cycle 3-4 times since then. It's a strange one.
All this to say, a person trained to work for someone else 40 hours a week for all their adult life is not able to self-direct and find meaning without a lot of introspection and readjusting.