Scientific Models

July 25, 2016 3:10 pm

Something I think gets lost in scientific education is what a "model" truly is.  We blur the line between model and reality until we forget that a model is exactly that--a model.

This conflation of terms is understandable when we talk about things we experience in our day-to-day lives.  We say things like, "when I toss a ball it moves in an arc," and not, "we can model the motion of the ball using an arc."  We don't worry about whether the ball actually moves in an arc or not--that distinction isn't particularly meaningful.

But when we start learning about more complex phenomena the distinction between the model and reality can become very important. A model is simply a representation of some process or phenomenon that we observe.  An acceptable model will match the observed behavior in a consistent, coherent manner.  And a good model will allow us to make accurate predictions about future events.

The "accepted" model for an observed behavior tends towards the model that allows us to make the most accurate predictions.  Utility is the lifeblood of models.

But a model, even one that allows us to make very accurate predictions, may not tell us anything about what's really happening.

I stumbled upon an interesting example of this dichotomy between models and reality while reading Blind Watchers of the Sky.  Through the 16th century it was "known" that celestial bodies moved in circles.  This was an accepted fact because celestial bodies were created by God and uncorrupted by man, God is perfect, and circles are the perfect shape.  The celestial bodies clearly moved, so they must move in circles.  This was the dogmatically accepted model of the time.

With crude measurements the concept of the planets moving in perfect circles seemed to fit well enough.  But, eventually measurements got better and it became clear that they couldn't be moving in just simple circles.  Since the perfect aspect couldn't be challenged, the discrepancies were accounted for using epicycles (smaller circles moving along the larger circle) and other such complexity.

The model became more accurate, but was that truly how the heavens functioned?

Eventually Kepler proposed a radically different model.  But rather than what his new model was, the pertinent part is how he presented it.  He essentially said something like, "Hey everyone, look, we all know circles are perfect, and the heavens are perfect because God created them and God is perfect; I'm not saying anything otherwise.  However, I found out that if we model the motion of the planets using ellipses the calculation is easier and the results are more accurate!"

The argument wasn't whether the planets truly moved in circles or ellipses, that was a foregone conclusion at the time.   Instead it was the presentation of a model that allowed for more accurate predictions.  How the planets really moved didn't particularly matter.

--

An example I like to use to help separate the concepts of models from reality is this:

There is a thing on my desk.  I believe I can accurately predict how it will behave if I apply the model "spoon" to it.  I pick this object up and use it to eat soup.  My "spoon" model was accurate.  Jess now comes in the room and asks to use the item and proceeds to use this object in a way that no "spoon" I know of can be used.  She uses this thing to stab food and put it in her mouth.  The way she uses it would be better modeled by what I call a "fork."  So is it a spoon or is it a fork?

I could claim that sometimes it's a fork and sometimes it's a spoon.  That seems rather bizarre, yet it matches my observations.  Sometimes it acts like the things we call "spoons" and sometimes it acts like the things we call "forks."  But that doesn't mean it is both or that it transforms from one to the other.  It is what it is.  It only means that these models can both be useful in describing this thing depending on the circumstances.  However, a more accurate model is to realize it's something else entirely.  We need a new model we'll call "spork."

--

As one attempts to comprehend modern physics one is forced to separate "model" from "reality" if for no other reason than sanity.  When sub-sub-atomic particles were detected and their properties mapped scientists really just needed words to assign to these things they were observing that could only be indirectly observed.  So we ended up with terms like "spin" where nothing is really spinning, and "color" when nothing emits a visible-light wavelength, and other properties.  Then a fundamental set of 6 particles with various values for those properties was identified and needed names and we ended up with "Up", "Down", "Charm", "Strange", "Top", and "Bottom" quarks.

I don't know what reality really is, but we keep building models with greater and greater accuracy that enable us to better predict future events.  At some level the distinction becomes irrelevant, but that's only true right up until reality does something our model says is impossible.  And then, it's time for a new model.

Flow

July 15, 2016 10:06 am

Most people would understand what is meant by saying one is "in the zone."  The psychological concept goes by "flow."  Quoting from Wikipedia,

Flow is the mental state of operation in which a person performing an activity is fully immersed in a feeling of energized focus, full involvement, and enjoyment in the process of the activity. In essence, flow is characterized by complete absorption in what one does.

Mihály Csíkszentmihályi (yah, I have no idea how to pronounce that) wrote a book about flow and describes 6 required factors to achieve flow (borrowed from Wikipedia):

  1. Intense and focused concentration on the present moment
  2. Merging of action and awareness
  3. A loss of reflective self-consciousness
  4. A sense of personal control or agency over the situation or activity
  5. A distortion of temporal experience
  6. Experience of the activity as intrinsically rewarding

I think programming is uniquely suited to the creation of a state of flow.  When working on a programming problem I inherently become more intensely focused as more and more context is pulled in to my working memory.  All the bits and pieces have to be tracked and accounted for.  The more complex the problem the less room there is for extraneous thoughts.

This all-encompassing aspect of working memory feeds into point 2.  I'm not so much typing at a keyboard as I'm modifying the interconnected pieces of the software as they're held in my working memory.  The typing is more a way to capture the changes as I produce them in my head.  But I'm not thinking about the keyboard in any way, it may as well not exist.

As the construction of the software takes over my mental processes I'm forced into letting go a sense of self-consciousness.  There isn't any room in memory or processing power left to worry about it.  It is during these times that others might interrupt me to inform me that I'm whistling or tapping on my desk or some other thing that's bothering them.  I become completely unaware that I'm doing it.  Having a private office at work really helps in this regard.  When I must maintain self-conscious awareness to be courteous to those around me it inhibits the ability to enter a state of flow.

Programming is entirely about personal control over the situation.  It is the programmer's mind being melded with the limitations of the machine and language.  Once the keyboard and the monitor melt away as mere extensions of one's own thoughts and senses it is simply a matter of solving the problems and verifying the solutions.

The time distortion is one of the most fascinating aspects of flow.  While in flow I can work for hours on something and it will feel like just minutes.  Hunger disappears, emails are ignored, music is unheard.  What I've recently been able to observe is the "awakening" process that occurs at the end of flow.

A few weeks ago I was working on a new feature in one of our applications at work.  I had my browser up to test changes as I went, energetic music was playing, my text editor was opened up with all the needed files loaded.  I loaded all the relevant information into my head and began implementing the solution.

As my commits to version control piled up and the task was completed I was aware of the state of flow ending.  It's very much a let down.  Flow is a heightened state of awareness and efficacy.  Coming out of it feels something like rapidly becoming dumber.

As I came out I became aware of the music playing to the point that it became distracting and turned it off.  I glanced at my email inbox and wondered how that many emails had come in without me noticing.  I noticed the time and realized that it was both after time to head home and that I was really hungry.  And, ultimately, I re-entered reality with almost an awed feeling of having lived in a land where thoughts and actions blurred.  Where my abilities were a cut above the normal day-to-day levels.

Achieving flow is not something that happens daily for me.  It can be weeks between sessions.  But when I can achieve flow it reminds me how enjoyable problem solving can be.  Writing software is the medium, but not the goal.  I believe it's the satisfaction of finding and implementing solutions that drives flow for me.