Human Resource Machine: Part 1

created on updated on ๐Ÿ•ฐ๏ธ 3 minutes

A game about computation, problem solving, and free thinking.

There is a game called: Human Resource Machine. Here is a description of the game from the Steam product title page.

“Program little office workers to solve puzzles. Be a good employee! The machines are coming… for your job. From the creators of World of Goo and Little Inferno.” Check out their website: https://tomorrowcorporation.com/humanresourcemachine for more information.

see wikipedia page: https://en.wikipedia.org/wiki/Human_Resource_Machine

see wikipedia page: https://en.wikipedia.org/wiki/Human_Resource_Machine

This game is a gem. If you have not tried it, I highly recommend that you do. You will absolutely love the game if you are someone who wondered about programming, inner workings of computers, computation, data structures, algorithms, and logic. Best of all it is so accessible and friendly.

The game reminds me of Richard Feynman talking about computers. You can find it here: https://www.youtube.com/watch?v=EKWGGDXe5MA. As in the video, the game uses the office filing system and office worker as a model of computation, which is a very old and a powerful idea. I remember learning of this during my own university days. This idea holds up well today as HRM demonstrates.

On a related note, there is a similar model of computation called Little Man Computer:

โ€œThe LMC model is based on the concept of a little man shut in a closed mail room (analogous to a computer in this scenario). At one end of the room, there are 100 mailboxes (memory), numbered 0 to 99, that can each contain a 3 digit instruction or data (ranging from 000 to 999). Furthermore, there are two mailboxes at the other end labeled INBOX and OUTBOX which are used for receiving and outputting data. In the center of the room, there is a work area containing a simple two function (addition and subtraction) calculator known as the Accumulator and a resettable counter known as the Program Counter. The Program Counter holds the address of the next instruction the Little Man will carry out. This Program Counter is normally incremented by 1 after each instruction is executed, allowing the Little Man to work through a program sequentially.โ€

See Wikipedia entry: https://en.wikipedia.org/wiki/Little_man_computer

HRM is an educational game done right. Learning is natural, fun, and sometimes even a good bit of frustrating. What is learning without some frustration to get over the hurdle and the ultimate price of reward of solving the problem?

HRM trains the same kind of problem solving muscles that are needed for real world programming. There is literally no difference from the abstract problem solving perspective. There is an opportunity to think about the process of computation itself, how we think about information, and the processing of that said information. Best of all, so many complex things can be done with such simple tools. This realization alone to new comers will come as revolutionary. I certainly remember the feeling I had of awe when I learned of Universal Turing Machines. There is so much opportunity to explore how computers work which removes the mystery behind these magic boxes.

Naturally, after finishing the game, there was only one thing left to doโ€”that is write my own virtual machine to run HRM programs! HRM allows you to copy and paste code from and to anywhere. Your Imagination is the limit. I was compelled to make use of this feature, or at the very least try.

Check out the project at https://gitlab.com/deepnet42/cara. Cara is not an acronym. I imagined Cara as one of the characters in the game, and therefore she can solve any of the levels in the game and more. The project is written in C++.

Instead of repeating myself you can also read my thoughts on the whole process on the wiki page of the project.

Lastly, when I was playing HRM I could not help but to be reminded of the following books:

If you liked HRM you will absolutely love these books.

Read Part 2. Part 2 takes a more detailed look at why HRM has a high educational value for first time programmers.