I’m a bit worried that I think too much in terms of dichotomies, dilemmas, quandaries and paradoxes (especially because I could only spell one of those words without the help of the spell checker).  But this one hit me over the head from a couple of different directions in yoga class this morning, so what the heck.

First the rant version:  I got to class this morning and put my mat in the back of the room and headed to the locker room to change.  When I got back, a young lady had put her mat directly in front of mine.  Very nicely lined up, she probably spent some real time making sure she directly centered it.  Now this was in a fairly small class, so it wasn’t that big a deal to shift left a bit.  But this particular studio has markings on the floor so that in a full class you know how to set up your mats to get three rows nicely staggered so that everyone can see themselves in the mirror.  So was she just so focused on getting to a relatively early morning class that when she got there she didn’t think to be polite about where she landed?  I’d like to give her the benefit of the doubt, but I’m not sure.  Then there were the three people that walked into a totally silent room and snapped their mats open when clear and crisp  “bang” sounds.  One of these days that’s going to startle me enough that I’m going to pee my pants.   Then they’ll be sorry.  You betcha!  Or the guy that stuck his towel on the only open shower stall as I walked into the room and then proceeded to spend several minutes gathering his accoutrements to actually take a shower.  Are these people all just oblivious, so focused on what they are doing that they don’t realize that they’re being incredibly rude?  Or are they totally aware and don’t care?  The flip side of this is that I like to feel that I’m a reasonably polite person, but I know I can focus to the sacrifice of all else even when I’m not trying, so I wonder how many blog posts are out there ranting about the incredibly rude things I’ve done?  Possibly even just the incredibly rude things I’ve done this morning?

Anyway, now that that is off my chest.  Call it the rudeness corollary to the Focus/Awareness Quandary.  Let’s get to the meat of the issue, which is what got kicked off in my yoga background process by the first couple of incidents.

This class was a Hatha class that the studio is calling their “Fire” series.  It’s small variation on Bikram using a few additional poses from the Gosh 84 posture series and mixes up some ordering.  The point is that it is very close to a series that I’ve been doing for years, but was only the second time I had done this sequence and a few of the postures therein.   So I had to listen to the instructor more carefully than I usually do and keep an eye on those around me for queues and examples for where things were different.  The net result was the least focused class I’ve had in a long time.  But at the same time, I caught a couple of queues for poses that I have done for years that I had somehow missed.  Which tells me that even in one of the more focused activities in my life, broadening my awareness sometimes is probably a good thing.

The real question though is how to know how to mix that up most effectively.  It is certainly useful in Yoga (as in programming) to be able to focus so tightly that the rest of the universe disappears.  But how long should you do that for?   My back is telling me (in the programming case) that perhaps that time is shorter now than when I was a teenager.  Maybe I need to invent a programming egg where I can just close myself in and spew code.  Anyone know where I can get one of those?  I’d prefer the model where I can just think the code too, no typing required …

One of my favorite yoga teachers opened class the other day with an exercise that I had never seen done before although I think it’s more common in ‘softer’ yoga practices.  She asked everyone to turn to a neighbor and share a way that they use their yoga practice outside of class.  Well, since I’m an off the charts introvert (I am going to get around to writing that post one of these days), I managed to pause just long enough that as I turned to each of the people around me, they had already engaged with someone on their other side.  So no big deal, I sat and enjoyed a few minutes of meditation.

But near the end of the sharing time the teacher looked up from her conversation and commented on how relaxed I looked sitting by myself in the middle of the chatty room.  And of course she then put me on the spot to share with the entire class.  An introvert’s nightmare.  But I sucked it up and took the opportunity to very briefly share that I was volunteering to teach High School students Computer Science and since Yoga was one of the skills that was newest to me, I frequently took things I learned in Yoga to help me teach in that entirely different environment.

And this is why I find Yoga so much fun.  The response wasn’t a blank stare or a nervous laugh (either of which would be completely reasonable and somewhat expected when I allow myself to geek out in public), it was “Oh yeah, I use a programming example to help teach yoga sometimes.”  And went on to describe how she talks about how computer code reduces down to a series of zeroes and ones, each of which has meaning.  Which means that if one of those bits gets flipped for whatever reason your program may do something entirely different than what you expected.   And doing yoga is kind of like this kind of program – every instruction you send to your body is important at the most exacting level – crossing wires or flipping one bit can make your program crash or do something different than you wanted.  I particularly take this to heart in things like Chataranga (Yoga Pushups) where a very healthy exercise can quickly degrade into a shoulder injuring anti-exercise.

In any case, you should all be proud of me.  I  did not respond by breaking down the argument on the spot and trying to open a discussion about how this analogy may or may not be applicable and where it might break down.  I answered with something that I hope came out as a slightly more engaged version of “Thank You” and we went on with the class.

But since you’re here, let’s break this down a little bit.  Especially because I just reviewed binary numbers with my class and we’re going to do a check on error detection soon.  With my old Apple II which had no parity bit for its memory and had a dense enough instruction set that flipping a bit in an instruction almost certainly did something valid but different than intended I think the analogy is pretty accurate.  Especially because it wasn’t uncommon to have an occasion to program directly in machine code.  In the current world almost no-one including the deepest level system programmers write machine code directly (and yes, I know quite a few such creatures, was one myself not too long ago).  Further, with a modern computer almost all memory is error checked in some way or another so a single ‘bad bit’ will either be automatically corrected or something will error out rather than continuing to execute the error.

And now I am thinking about exceptions like Black Hat Hackers that probably do write machine code directly and certainly look for places where changing a single bit will make a program behave differently than intended.  But of course I could get myself stuck in an infinite loop here so I will stop and allow you to get back to something more important.  Like going to a good yoga class of participating in your favorite form of healthy exercise.

Or take a moment to add your thoughts on why programming and yoga (or your favorite form of exercise) are related. I bet my yoga teacher and I don’t have a corner on that market…

I’ve been attempting to acquire a number of new skills and been around people learning new skills for various reasons in the last year or so and it has lead me to formulate what I think of as “The Beginner’s Dilemma.”  The general idea is that as one starts to develop some facility in a new skill, one over assesses one’s competence, sometimes by a significant amount.  At some level this is probably a good thing – if you accurately assessed your ability at the very beginning you’d probably give up.  Or at least I would.  On the other hand, if you over assess too much at something like driving a motorcycle or flying a plane, you might earn yourself a Darwin Award post haste.

As usual, the most important variation on this is in my continued attempt to teach high school students to program, but let me share a couple of short anecdotes from other parts of life first.

My most long-standing version of The Beginner’s Dilemma is ballroom dancing.  When I first started to learn to dance I thought I was god’s own gift to dancing almost immediately.  Nearly twenty years later  (with lots of hours of lessons, practice and competitions) I’m just happy that I can get out on a dance floor without stepping on my partner’s toes while leading something that is recognizably the dance that I am attempting.  Now part of that is because I’m not a natural dancer, but the part about overestimating my ability early on is completely true and not because I got worse from practice!  When taking beginning group lessons today, I see the younger version of me all over the place accompanied by various levels of chutzpah, so I’m not the only one that goes through this phase.

Another blatant variation on this is the effect of new yoga students in Bikram Yoga classes where all levels take the same class.  The last two times I’ve taken classes I ended up near a young man who obviously thought he had the whole thing figured out (different dude each time).  Each of them took a place front and center in the class, which is a good indication that they are ready to show the world what they can do.  On the first day, the young man made it through the whole class, but never held a pose for more than a moment – I actually really enjoy this variation because it helps me work on my focus, especially in balancing poses, there is nothing like someone continually falling over in front of you to practice focus while balancing.  On the second day the dude held all of the standing poses, but completely overextended everything – then he lay down and literally slept through the floor series!  Anyway, I wish them both the best and hope that they make it past The Beginner’s Dilemma hump without hurting themselves.

But this brings me back to the core point which is teaching youngsters to program.  I had a real advantage in the early eighties in that no-one around me new how to program.  So I could ride the overestimation wave long enough to actually get good before anyone came along to assess my work.  And fortunately it’s pretty difficult to hurt either one’s self or one’s Apple II by programming.  Especially when one is young enough to sneer at things like lower back issues and lack of exercise.

But the kids in my class are expected to “know how to program” by the end of the year.  So when one of them spends days tweaking simple functions to draw a  Batman figure rather than spending the time on getting Batman to move and scale (which was the point of the assignment), I’m obligated to grade him down for that.  Right?  And burst a bit of his beginner’s overestimation bubble.  Or possibly a bit more than a bit.  I’ve got to say, that is one of the hardest parts of this volunteer gig.  Of course the kid next to him did something similar with being obsessed with the graphics design aspect of the assignment, but took my advice and spent time at home getting the actual programming stuff.  So I’m not going to beat myself up too much.

So how do you keep a student riding the wave of beginner’s overestimation in his own ability while still getting him to learn the things you want to teach him?

And how do I acquire a new skill myself now that I’ve overanalyzed this issue to the point where I doubt I’ll ever be able to ride a beginner’s overestimation wave myself?  At least I’m not in danger of trying to learn to drive a motorcycle. So there’s that.

First off.  Yes, I admit it.  There has been some Big Bang Theory in my life recently, leading to an overly cute blog title.  But who really needs an excuse to go a bit geeky on a blog post title.  Certainly not myself.

Anyway, stripped down to the basics, this is a concept that I’ve been playing with since living with my first off campus roommate in college (which was much longer ago that I want to think about).  Neither of us were complete neat freaks.  Actually by my current standards we were probably both somewhat slovenly.  But our relative neatness (or messiness) was pretty close to the same.  Hence a reasonably decent roommate relationship.  However, I had just a bit more tolerance for the height of the stack of dirty dishes in the sink than he did.  So he almost always ended up doing the dishes and it drove him a bit batty. I swear if he could have just brought himself to leave the dishes just a little a bit longer I would have been bothered enough that I would have done the dishes.

Since that time I’ve been on the other side of that equation many times and it drives me batty, too.  Okay, only a couple of times have I been on the other side of the equation with respect to dirty dishes.  But the general hypothesis applies to many other things in life.

For instance, I’m a planner.  So when working with others it’s almost always the case that I want to have a schedule set before anyone else.  Which means that I end up driving the schedule and often doing extra work to keep everyone on track.  Which isn’t always appreciated, can you imagine? And you can see the people on the other side of that saying “Mellow out dude, if you just hold your horses for a (few minutes, few hours, few days) we’ll get to it our own selves!”

How early does a lesson have to be planned for it to feel comfortable?  How much buffer do you need in a schedule to ship a piece of software on time?  How many minutes past a scheduled meeting time do you have to be to ‘be late?’  How far or how long do you have to stray off the topic of a meeting for it to be counterproductive? 

Or back closer to the core hypothesis –  How many shoes scattered in the mudroom make it messy? If its one less that the anyone who shares the mudroom you may never end up pickup up shoes.

What’s your favorite corollary to the DDCM hypothesis?

I was sweating away in yoga the other day doing a pretty good job of turning my brain off when a thought popped into my head so forcefully that I fell over – I was in Dandayamana-Dhanurasana (standing bow pose) at the time.

I continue to try to achieve the full standing meditation effect because I feel like it helps to keep me sane to do that.  But thoughts keep interfering.  Most of the time they are fairly orderly somewhat conscious lines, like composing a blog post.  While I’m not sure I am thrilled with the compromise (sanity is reputed to be pretty important, after all), it’s certainly productive time when I do that.

So on this particular day, the thought that just popped into my head was a solution to a problem that I had given up on solving.   One of the things we’re using to teach computer science is a book/website called CSUnplugged which is a great set of lessons aimed at late elementary school and up to teach basic computer science concepts without using a computer.  This is how we took our class through things like binary numbers, image representation, and text compression.

But we’ve got a somewhat unruly class of ninth and tenth graders (okay, that was redundant, wasn’t it).  So we have been building slide decks and adding some interactive material both of which are aimed a little closer to our target demographic.   But it takes a long time to do this kind of auxiliary material even when the core lesson is already built.  So I had given up on additional exercises since I couldn’t come up with anything good.

Then came along standing bow pose in a 105 degree room.  And into my head pops the idea to expand on the idea of removing vowels from sentences to a full on interactive experience.  Part of the original lesson had a sentence “Cn y rd ths?”   But since I had just been listening to some lectures that covered the history of  abjads (writing systems without vowels) and had a lot of fun composing some sample sentences without vowels for one of my slides, it occurred to me as I was standing on one leg that the kids would probably have some fun doing something related to that.  And like any revelatory experience I didn’t think this all through – the idea and a full picture of the mini-game of translating/compressing and retranslating decompressing two different phrases – one common one and one from lewis carroll just popped into my head and (almost) knocked me over.

Which leaves me with two questions.  First, for the yogis out there –  is this kind of experience part of what I should look for in meditation rather than the purely relaxing/restorative aspects?    And second for the teacher out there, is it worth falling over in the middle of yoga class to come up with a good classroom exercise?

P.S. My favorite “fine line” expression remains – “There is a fine line between genius and insanity.” May I always stay on the right side of that line (or was that the left side)?

Let me open with a quick slightly off topic note.  I received a back channel compliment about my last post from my favorite teacher that was a bit unexpected.  She took it as a success story.  Which I guess it is, but that wasn’t really the way I had intended it.  While trying the “teaching thing” as a volunteer has a lot of drawbacks that I won’t enumerate here, it has the major advantage of ample resources and domain knowledge.  We had three volunteers working the classroom all of whom had planned, implement and shipped software recently.  So we could use something of a brute force solution to get the kids through an overly ambitious final project.  I can’t even begin to imagine how a classroom teacher with six or seven classes would recover from a similar goof.

But on the subject of success, here is one that I am particularly proud of in a slightly twisted  way.

I have what can most charitably called a dry wit.  Bone dry, like the middle of the desert in the heat of summer.  So much so that most of the time people that don’t know me very well tend to just stare at me blankly when I try to be funny.  Well, that’s when I don’t stoop to pre-teen level potty humor (but that’s another story).

I really try to curb my humor in the classroom.  I’m sure neither the blank stares nor any level appreciation if the kids actually get what I mean will help them learn to program.  Besides, I need to be able to register the blank stares as not understanding a technical point rather than conflating that reaction with incomprehension of humor.

So when we had our feature design exercise,  I walked by our most difficult team of students and overheard them talking about what they got for Christmas.  This was a pair where one of the kids had answered “I don’t care” for all three game ideas before the holidays and the other one seems almost incapable of keeping his eyes on the screen for more than about thirty seconds at a time.

Anyway, I stopped and asked them if their game was about presents.  Voice dripping sarcasm.  I felt really bad as the words were coming out of my mouth, it was definitely not a kind statement.  But then one of them said “yes.”  And I said “cool, let’s talk about how that works.”  And they really got into designing a questions answer game were the reward (score) was counted in presents.  It’s probably the most enthusiastic I’d seem them all semester.  And they did it.  It wasn’t’ the most complicated game in the class, but with some help from us they got a complete trivia game up and running with a presents theme woven in.

So either the student thought he had me fooled with his response to my original question or didn’t get the sarcasm at all (which I find very hard to believe – I’m pretty sure most of the students in my class think they invented sarcasm).  But in any case, there was another stumble that turned into success.  And I’m willing to accept credit or that one 🙂

Now time to learn python…

I had this crazy idea that we should have the kids write a game of their own choosing as their final project for the semester.  I was particularly interested in doing this because even though many of the kids were still struggling with some pretty basic concepts, I felt like we were not tapping into their full potential in situations where we carefully designed each game for them, setting up a smooth path to success.

This was particularly twisted as even when we set up exercises leading up to each unit project, making sure that we had given them all the tools they needed and having helped them solve the hard problems, they still required extensive leading to get to working games.  When they got there at all.  So what made me think that giving them a relatively free hand to write a game of their own choosing would be a good idea?  Am I insane?

Well, possibly.  But I think back to when I was their age and what motivated me to spend hours on end learning the ins and outs of how computers work.  And it really was the idea of being able to create something out of thin air (and bits, bytes, and nibbles) that kept me up nights pounding away on my Apple II keyboard.  So why not take a chance and give them their heads?  So to speak.

Of course if we’re going to let them build their own games we need to introduce them to some software engineering and project management, right?  Oooops!!!  I carefully set up a schedule including time for design and design review.  Built templates for feature and technical specifications.  Sat down with each team to get them to talk about expectations and force them to draw lines either higher or lower on their feature lists depending on whether they were overly ambitious or entirely apathetic (one of the students put “I don’t care” for all three game ideas).  And setting things up so that they had a deadline to get a working “minimally marketable” game by the halfway point.

So despite a crazy month of January labs every team made it through.  But here is the craziest thing:  The students were almost completely flipped between their ambition level and the completeness of their final games.  Now don’t get me wrong, the kids that were totally into it had cool graphics, neat ideas, and all sorts of bells and whistles.  But their games hardly worked.  The kids that were most resistant to doing anything original (including the “I don’t care” team)  walked away with complete and relatively polished games.

In any case, the fact that we got 13 and 14 year olds to actually meet deadlines (at least mostly) was something of a miracle.  So may you don’t need to lock me up and throw away the key for this one.  But the jury is still out if I ever try something like that again.  After all, it’s hard enough to get highly trained (and paid) professionals to code to a deadline…

We had a snow day on Friday (actually a two hour delay, but since I volunteer for first period, it was a snow day for me).snowy-seattle

That leaves me with two (and a half) conflicting thoughts.  One is “Yippee, Snow Day!  No need to crawl out of bed at 6 in the morning to make it to class.”  And the second is, “Oh crap, my classroom management screw-up from the Thursday is going to have even more impact than I expected at the time.”

And then the other half of the first thought was –  “Dang, even the good part isn’t that good because I traded days with one of the other volunteers so even though I was originally scheduled for Friday, I didn’t need to be there anyway.  So good for him but bummer for me.  Not really a snow day at all, after all.”

Which brings me back to Thursday.  Since last week was the final week before the holidays, I had talked through the schedule with my partners and our in service (real) teacher and we decided to finish up the current unit on Thursday.  This would give us the month of January to attack a final project without distractions.  And we were hopeful that if we could keep the kids on task they would mostly be done with the current unit by Thursday and could hand in their work.  Why Thursday?  Well, because Friday is the day before the holidays and anything can happen the day before a holiday.  We worked this out ahead of time in more detail that usual in part because the in service teacher who generally does a great job of backing up us volunteers was taking Thursday and Friday off.

So Thursday morning I am as clear as I can possibly be to the class that they need to turn in their assignments at the end of class, whether or not they feel like they’re finished.  Then we spent the class on lab time (definitely my favorite part).  And a few minutes before class ends I stop the kids and remind them to turn in their assignment before they leave.  There is a question as to whether they should turn it in if they’re not done.  To which I reply – please turn it in no matter what.  You can resubmit later if you want but I want something in the submission folder before you leave.

Then I made the massive, unforgivable mistake.  I left it at that.

After the kids left, I went to the submissions folder and found that a full 25% of the class had failed to submit anything.  What the heck?  And on further reflection I realized that when the in service teacher made the same request, she would project the submission folder on the screen and verify that each student in the room had put something there before she let them leave.  Why didn’t I think about this before the kids left?  I think I have a fundamental resistance to believing that high school age students, even at a somewhat alternative school, would just refuse to do something that simple when asked directly.  They had time.  There weren’t any questions, like “I can’t find submission folder.”  They had done this kind of submission many times previously in the semester.  Had we trained them to be so dependent on us to project the results that they couldn’t do it without help?  Or are kids that age fundamentally just that ornery?

In any case, I was happy to recognize that we had built in a buffer and with any luck the kids that hadn’t submitted anything on Thursday could do so on Friday.  But of course we had a snow day on Friday.   Is it part of being an adult that something as clearly fun as a snow day has to be complicated?  Can I please not be an adult the next time we have a snow day?  How do I do that?  Please?

One of the things that I’ve been struggling the most with in my attempt to teach programming to high school students is to get them to experiment.  This is particularly hard for me because when I learned to program I had no formal instruction for the first four years, so experimenting was by far the most used tool in my toolbox.

Because of this I’ve been emphasizing that there are many different ways to do things and showing (or getting the students to demonstrate) different solutions wherever I can.  And then I try to get them to compare the solutions again emphasizing that they both solve the problem and where each solution has advantages and dis-advantages.  But in so many cases, they seem to get into a mindset of doing something the ‘right’ way and then they get stuck.

As I was settling into yoga practice this morning, the teacher said something that really connected with me.  We were doing Child’s Pose, which for this style of yoga is one of the most basic and oft-repeated poses.  As such, you kind of feel like you know it after the first class.  But even though there weren’t any new students in class, she spent a couple of minutes encouraging us to experiment with the pose, settling differently in the hips, holding the hands wider or narrower, same with the feet, etc.  Because even in the most simple things, you can train yourself to do them more effectively.

That, of course, led me down the path of other physical training I’ve done including Kung Fu and dancing and marking patterns in how things are taught and how I learn them.  I’m not going to attempt to dump all of the details, but whenever I’ve found a teacher that takes the approach of “your body and your background is different than mine, so let’s try this a bunch of different ways until we land on something that works” I learn much more than the “this is the way it’s done and I’m very successful doing it this way, so let’s get you doing it exactly this way and you’ll be successful too” type of teacher.

So how does this relate to programming?  I’m pretty sure it’s almost the same concept.  For instance, almost any language has a bunch of looping constructs and you use them differently for different tasks and there are plenty of ways that you change up how each of those constructs are used depending on any given task.  And of course as anyone who’s worked with programmers for any period of time knows, there will be endless debates about what the ‘best’ way to solve a particular problem is, with the line often blurring between style and function.  Which is almost a direct parallel to conversations I’ve had with martial artists and ballroom dancers, now that I think about it.

And while I don’t think many of my 15 year old students spend a lot of time practicing yoga (or ballroom dancing, or Kung Fu), I suspect some of them have trained in high school sports like basketball and soccer.  And it seems like the same concept would apply.  Does anyone out there have a good example I can use in a more familiar (to a 15 year old) sport?  Or thoughts on how to draw such a story out of the aforementioned 15 year olds?