Wednesday, August 28, 2013

Recursion is fascinating.

I remember the first time I brushed up against the concept of recursion in a summer camp programming class in Visual Basic 6.0. (Yep, those were the good old days.)

Most programmers speak of recursion with awe in their voice. The words "elegant," "beautiful," and "artistic in its simplicity" often come up. My initial exposure was seeing a recursive program to draw a Sierpinski triangle.

The Sierpinski triangle.

After some puzzling over the code, I eventually understood how it worked, but never fully grokked the elegance. It wasn't until now, properly learning recursion through CS106B, that it hit me while learning about the Tower of Brahma (Tower of Hanoi) puzzle.

Fun side note: it's cool to read about the legend behind the Tower of Brahma puzzle. From Wikipedia:

The puzzle was first publicized in the West by the French mathematician Édouard Lucas in 1883. There is a history about an Indian temple in Kashi Vishwanath which contains a large room with three time-worn posts in it surrounded by 64 golden disks. Brahmin priests, acting out the command of an ancient prophecy, have been moving these disks, in accordance with the immutable rules of the Brahma, since that time. The puzzle is therefore also known as the Tower of Brahma puzzle. According to the legend, when the last move of the puzzle will be completed, the world will end.[2] It is not clear whether Lucas invented this legend or was inspired by it.

If the legend were true, and if the priests were able to move disks at a rate of one per second, using the smallest number of moves, it would take them 264−1 seconds or roughly 585 billion years[3] or 18,446,744,073,709,551,615 turns to finish, or about 127 times the current age of the sun.

After the lecturer set up the problem, I thought for a moment how to solve it recursively. I didn't have any insight (not giving myself proper time to really work it through on my own), but I ventured to guess that the solution would be rather tricky and possibly complicated.

Then she revealed the code.

All that work, accomplished through three simple lines.

My reaction:

The lecturer, Julie, clearly takes pedagogy seriously, for she took the time to create illuminating animations to see the process of recursion. Here it is, solving the Queens puzzle (how to fit 4 queens on a 4x4 chess board, or NxN board) using recursive backtracking. (She walks through it piecewise for a 4x4 board, then shows it automated for an 8x8 board at 42:30.

Fascinating. Now I am beginning to see the stunning power of recursion, where it can solve problems that are simply unsolvable any other way. 

Admittedly, I am a little nervous about actually being able to solve recursive problems. We'll see. I did have the intuition to come up with the recursive solution to the midpoint-finding Karel problem from CS106A. The other examples shown thus far I am able to figure out once the code is presented, but I'm not sure how quickly I would have reached that point on my own.

Monday, August 12, 2013

Reflections on competitions and my journey in dance.

The past several weeks have been packed with events. July Massive, Sweet Molasses Blues, Nocturne Blues… One right after the other. I have hardly had time to sit down and reflect upon my thoughts in an organized fashion.

I could expound upon the many virtues of each event. They offered unique experiences and provided a space to form many fond memories. Each event prompted growth in new areas. Each one made me so happy to attend for a host of different reasons.

However, my mind has been buzzing ever since the competitions at Sweet Mo and Nocturne Blues. My experiences in them affected me deeply. I competed in all the contests possible: the Jack & Jill at Sweet Mo, and the Jack & Jill, Strictly, and Solo at Nocturne. Each yielded learning opportunities.

Nocturne: Strictly

I partnered with the lovely Tess Myers for the strictly competition. End result: making it to finals! We were thrilled about these results. Looking around at our peers in the finals, the vast majority were professional dance teachers. To be placed in the same category was a huge compliment.

We had a wonderful time dancing. The second spotlight was definitely our highlight; we caught the wonky horn call-and-response of "Jungle Blues" by Wynton Marsalis (around 2:50). We just went nuts. Surrendered to the song and gave it what we felt, not necessarily what we "should" do in a competition. It was such a fantastic time dancing together!

Sweet Mo & Nocturne: Jack & Jill

The results of this competition knocked me on my ass: I didn't make it into finals. While I never assume that I will get in, I couldn't help but be disappointed by the results -- disappointed in me. I can do better than that, I thought. 

I had long conversations about the outcome. People spoke of the mayhem and inaccuracy of tapout prelims, the lack of a causal relationship between competition performance and quality of dance or quality of teaching, the complexity and uncertainty about judging criteria for J&Js, the jumble of variables simply outside of your control as a competitor. I understand all of these intuitively. 

As a judge of many contests myself, I know the potential for a huge range in preferences among judges. Dance cannot be quantified for evaluation, no matter how much we talk of percentages and scoring categories. At the end of the day, it usually boils down to a gut reaction. That gut reaction is influenced by factors both concious and unconscious. Maybe the judge didn't happen to watch you carefully or catch you at good moments. Maybe what you were wearing struck a chord with them. Maybe they were inspired by your movement for inexplicable reasons.

I was reminded of all these points by the many kind friends that came to my aid, seeking to lift up a deflated ego. For some reason, their words were not resonating with me.

My first objection to their encouragement used for argument a theoretical dance competition involving Baryshnikov. Hands down one of the greatest dancers of all time. Not only is he a beautiful technical dancer, he also evokes a powerful emotional response. He creates Art effortlessly. While there would still be many variables outside his control (perhaps the judge is just tired of seeing the guy), he would do still well in this make-believe competition because he's just that damn good. (This is not to say that I compare myself to Baryshnikov; such would be an exercise in continual disappointment. However, it does say to me that while there are external variables, the ones you do control (namely, your self) can make a world of difference.)

Borrowing from statistics, let's pretend your scores are normally distributed. (It's a stretch given low N sample size, but bear with me.) Your mean score is something you have a good amount of control over. Much like Baryshnikov, you have influence over the outcome to a certain degree. This makes intuitive sense; if you are totally new to dance, your average score would be quite low, but would trend upwards with training. The external variables contribute to the deviation from the average. That deviation may mean you don't make the cut. However, what bothered me is not that I didn't make finals; I was upset because I felt my average was not as high as it should/could be.

While listening in on a lively discussion of competition among friends at Nocturne Blues, an insightful point was raised by Evan. As dancers, we all experience moments of brilliance, of Flow; those times when everything comes together: technique, creativity, and emotion. But they happen maybe 10-20% of the time for most of us. What separates an Amateur from a Pro (he was speaking from the perspective of a former Ballroom competitor, where they use those terms regularly) is that the Pros hit that flow 95% of the time. They find it through countless hours of practice, training, and competing. They gain control over what we attribute to the mysterious machinations of the universe. This argument made absolute sense to me. While there are all these variables "outside your control," you can manifest them to work for you through will, through achieving Flow, and that is something that you can control -- sort of. With a lot of practice.

It never was about the competition results, even though it took some digging to realize. Even if I had placed, I would have eventually come upon this point at the heart of my disappointment: I have not been training as much as I want or expect of myself. I have been teaching a tremendous amount, which has been wonderful practice, but my dance practice has slipped continually. 

It began once I left Stanford, once I left an environment where I was taking at least one dance class per quarter. While not Blues-focused, these classes would provide valuable cross-training experiences and grow my dance is other ways. After leaving, my training went on hiatus. I think I practiced an underwhelming total of three times while in New York. Six months of being a "full-time" dance teacher and I could count on one hand my number of training sessions. There were mitigating circumstances, a litany I recite to be gentle with myself. No longer a source of regret, I regard this time as a valuable learning experience, realizing the importance of using my time in rewarding endeavors. Since leaving New York, I have spent the past few months recuperating from life transitions and embarking on a journey of personal growth and improvement. Training in dance, unfortunately, did not make it onto the list of "Projects of Self."

So here I am: an international dance teacher with nine years of experience, unable to place into the Jack & Jill finals at two competitions in a row. What adds sting to that statement is the underlying knowledge that I have not been practicing, and I see that as manifesting in my competition performance. If I had been working my ass off and not placed, I would not be as disappointed; I know this to be true, for I have gone through that scenario before and came out the other end feeling good about myself. 

Fortunately, the universe is on my side and has already conspired to offer training times to me. This week, I travel to Austin, where I will spend 2.5 weeks with the inimitable Campbell in intensive training, teaching, and practicing. It will be a grand time. It's as if the universe set up these opportunities, then took a moment to show me why they are important. Thanks, Universe.

Nocturne: Solo Blues

Certainly the highlight of the Nocturne contests. The prelims were a hoot -- complete with an epic showdown between John Joven and me on the second song. But the finals. Oh man, the finals. 

There were two competition levels: masters and intermediate. The finalists from each category were divided into two mixed-level teams. We were given 50 minutes of preparation with the following instructions: come up with a team name, have at least 2 all-team choreography movements, and feature each individual at least once.

What came forth was a spectacular showing of solo dance and riffing. Both teams really brought the energy (with the great help of Gordon Webster and his band). People were fun loving and full-on. There were no stupid props, no aggressive-offs, no escalations of "I'm sexier than you." Instead, it was two teams playing off each other's ideas, interacting with each other, and making a damn good show of it. The crowd went nuts.

Three highlights for me: 1) pimp walking out with David straight at the judges, all of them wide-eyed and speechless, then throwing down a rather complex routine; 2) soloing while my teammates circled me, which morphed into both teams dancing around in a circle, people sometimes breaking out to solo; and 3) the joy of our lovely team dynamic, being the team captain, focusing on providing a space and guidance so we could all thrive and have a wonderful time. Being part of a team reduced the burden of responsibility on me to achieve the nomal goal of competitions -- to win (this is a social phenomenon known as social loafing -- which always conjurs images of baguettes hanging out together). It freed me to not worry about the results; I could focus on having fun, playing with others, and creating an entertaining and inspiring experience for the audience. 

I think it was the most fun I've ever had in a competition. Perhaps that is what the ideal mindset for a competition is, right? Something to ponder.

Competitions play an important role in elevating the quality of dance in our community. They are at times frustrating, painful, and confusing. But on the whole, I believe they yield great benefits. I keep on competing -- even when they crush my spirit and make me feel like a shitty dancer -- because I know at the other end of the phase will be valuable revelations and insights. The key is to keep reflecting upon and learning from it. If you go in and the only feedback taken is your placement (or not) in the contest, you have missed the point and wasted a huge opportunity for growth.

Saturday, August 10, 2013

An answer to my email prayers.

Oh, Boomerang...

How have I not discovered you before? I am so passionate about productivity hacks, yet you have eluded me for over a year!

Boomerang offers many neat features:
  • Schedule emails to be sent later (no more emails to a prospective employer revealing that I was doing emails at 3am!)
  • Mark a message to return to your inbox later
  • Write reminders to yourself to appear at a particular time
  • Request read receipts
And my personal favorite...
  • Remind you to follow up if they don't respond
This last feature is huge for me. Sending reminders is nothing special if you have a decent task management system, but the followup tracker is perfect and simple.

 I have long used OmniFocus to track emails to followup. You just never know when that message will fall through the cracks for someone else; when you're on top of the ball (even when that ball is in their court), it looks good and often saves you from firefighting later on. If you ever do management, this tool is a godsend. If you ever need something done and don't want to waste mental energy remembering to check on whether it's done, this tool will free your mind.

The flow to track emails in OmniFocus was never very good. While I could tie the OF reminder to my email, I could not tie my email to the OF reminder. So if the person was on top of their game and did respond in a timely fashion, I might forget to delete the OF reminder. How often I would receive a followup reminder a couple days after they had already replied, and I would waste time figuring out if a followup was actually necessary. Further, while the flow was streamlined, it did require an extra 30 seconds of setup, so I was not consistent about creating reminders.

I had been thinking about writing a browser extension to fix this problem. It would have waited a year or so while I continued to learn the fundamentals of programming and API. Then a simple blog post on Toggl clued me into Boomerang.

Now it all lives in my Gmail inbox. AMAZING. You can get a followup reminder if there's no reply, if it's not clicked, if it's not opened, or regardless. A simple checkbox and you're done.

Get it. Do it now. You will be so much happier that you did.