It seems vaguely ridiculous to spend my days working on a computer, and then come home and write assembly code for an hour or two, much less enjoy it. That's how good TIS-100 is: a deranged simulator for a broken alien computer, it's the kind of game where the solutions are half inspiration, half desperate improvisation.
Here's the idea: the game boots up a fake computer, which immediately fails POST and dumps you into the debugger. Inside, it's made up of chips arranged in a grid, each of which can be programmed with up to 15 instructions in an invented assembly language. In a series of puzzles, you're given a set of inputs and a list of expected output, and it's up to you to write the transformation in the middle.
Complicating matters is the fact that TIS-100 processors are designed to be as eccentric as possible. Nodes have no RAM, just a single addressable register and a second backup register that can be swapped out. They're also severely limited in what they can do, but very good at communicating with each other. So each solution usually involves figuring out how to split up logic and shuffle values between nodes without deadlocking the CPU or writing yourself (literally) into a corner. There's a bunch of tricks you learn very quickly, like using a side node as a spare register or sending bits back and forth to synchronize "threads."
It's not perfect. Once I beat TIS-100, I didn't feel an urge to start back up the way I do for something more "game-like" (say, XCOM or Mass Effect). But it does have the wonderful quality that you can solve most of its puzzles while you're away from the computer, and actually typing them in is a bit of an anticlimax. For all its exaggeration and contrivance, I'm not sure you could get a better simulation of programming than that.