I think writing emulators is a great way to learn new languages and frameworks. Because I started my "serious development" on a Commodore 64, I've always been fascinated with the 6502 chipset. It's an 8-bit chip set with only 256 combinations of op codes to learn, with well-defined registers and indexing modes.
One of the projects I had the most fun doing was emulating the chip set using Angular and TypeScript:
github.com/JeremyLikness/6502emulator
The project features an emulator, a UI, a compiler, disassembly, a debugger, some sample programs and 6502 test programs. Check it out!
