• I really recommend creating a compiler or an interpreter from scratch, don’t even use an IR like LLVM or MIR. Just hack and slash your way though a C compiler, it’s the simplest language most people know. Don’t care about ‘optimization’ at first, fuck optimization. Just grab Yacc/Lex or a PEG parser generator that works with the language you like most and have ot generate assembly code for simple expressions. Like, make a bc(1) native compiler! Interprets are fun too. You can use VMGEN to generate a superfast VM in C, and then bind it to another language using SWIG.
    Also never imagine usability. Noobdy is going to use your C compiler for any serious work. It’s just for education. Post it online to receive feedback.

    You cna start by writing DSLs. For example, I am implementing the ASDL language from this old paper.

    Also if you are going to do it as an example in your resume, just stop. Nobody cares, because it’s a trivial task to write a compiler, even if you write backend, forntned, and the LP yourself! Do something money-loving people loike, like making some bullshit mobile app that tracks your gym sweat volume.