I'm a long-term self-development geek, although not in necessarily the standard self-help book kind of way. My personal development tends more towards Zen and mindfulness practices. One of the concepts I've grown to feel affinity for is the concept of the witness: a form of meditation where you simply witness your own thoughts, like ripples across your mind, without judging or responding or interacting with them, just watching.

I also like data. So I wrote up a thought counter, whose job is to see how many times per meditation session I have thoughts popping up.

This first part of the project is just to get the basic logic of the program down, and to handle much of the user experience portion. This initial version is primarily missing the data parsing that I'll be adding as a feature later on. Here it is.

The entire program relies heavily on Ruby's built-in Time class. When the counter initializes, it educates the user on how to use the program and when to give input, then starts the clock for total session time when gets recieves input.

Then it pushes into @thoughts a new thought instance every time the user says they've had a thought. I originally had @thoughts initialize as an array, but this turned out to be a silly idea because it made it harder to both print onto the screen in a way that would be nice for the user and be available to the program to parse as data. So instead I chose to have the data and the user-view per data point be key-value pairs in my @thoughts instances.

Data parsing coming soon!