Steve Losh |
3 Comments |
Dancing
August 31, 2008 at 11:54PM
Dancing
August 29, 2008 at 01:06AM When I went to college, I majored in Computer Science. I haven't really written anything about this part of my life yet, so I figured this might be a good time to start.
I decided to major in CS when I was in high school. I learned to program on my own and enjoyed the challenge of it. I also knew that programming jobs are fairly common and pay well enough that I wouldn't have to worrying about paying my rent. I wasn't artistic in high school, and CS seemed like a logical, sterile field that I felt I could do well in.
During the years I spent at RIT I changed quite a bit. I think the most important, or at least the most obvious, change has been my becoming more artistic. Between dancing, playing bass and photography I've developed a creative side that I never thought I could. Has this led me away from Computer Science at all?
No. While I became a programmer for practical reasons, I stayed one for entirely different reasons. Computer Science (and math in general) is beautiful. It took me years to slowly realize this, but now that I have I see that it's more beautiful than any dance, photograph of music I've ever encountered. This post is the first in a series of posts that I hope can communicate why I find CS beautiful, or at least point in the right direction.
I know that most (if not all) of the people that read my website don't program. I'm going to try to avoid using extremely technical, computer sciency terms in these posts, but there are at least a few basic things that I need to explain. The first is what a function is.
Think of a function as a set of instructions. A recipe is a decent example. Imagine you have a piece of paper with the following written on it:
1. Heat a frying pan. 2. Crack two eggs into a bowl. 3. Mix the eggs. 4. Pour the mixture into the hot frying pan. 5. Stir the mixture until it is solid. 6. Take the mixture out of the pan.
That's the simplest example of a function: a list of instructions that you follow in the order you get them. The next idea is a "parameter." That recipe only told us how to make food for one person, wouldn't it be nice to know how to make enough for two or more? Imagine the paper now says this:
1. Heat a frying pan. 2. Crack NUMBER_OF_PEOPLE * 2 eggs into a bowl. 3. Mix the eggs. 4. Pour the mixture into the hot frying pan. 5. Stir the mixture until it is solid. 6. Take the mixture out of the pan.
Now we still have a single piece of paper, but by just substituting in the number of people we're cooking for we have instructions for making any amount of food. If we have three people, NUMBER_OF_PEOPLE * 2 eggs becomes 3 * 2 eggs, or 6 eggs.The last important concept is "calling." Once you have one function, you can use it in other functions, like so:
1. Put a plate on the table. 2. Refer to the other piece of paper and do what it says, for 1 person. 3. Put the result of that on the plate. 4. Eat it.
See how we did a few things, then referred to the other piece of paper instead of repeating ourselves? This lets you make small tasks and put them together to form bigger ones. That's enough of a primer for now; if something's not clear please comment and let me know.
Recursion is a term that means, basically, a function calls (or refers to) itself. This concept can be hard to grasp, but once you do it slowly turns into something breathtakingly beautiful.
Here's a simple example: imagine you're 10 meters away from a doorway and you want to walk out of it. A function that could help you do this might be: "Walk 11 meters." That's pretty simple.
What if we want to be able to walk out of a doorway that's any number of meters ahead of us? We could say: "Walk DISTANCE + 1 meters." This works, but requires that you know how many meters away the door is before you even start walking. What if we don't?
How about we just do a little at a time and see how it goes? "Walk 2 meters. If you're out of the doorway, stop. Otherwise, repeat this function." If the doorway is 3 meters in front of us, we'll walk 2, check if we're out (we're not), and repeat. We'll walk 2, check if we're out (we are), and stop. This function is recursive; it refers back to itself.
The beauty of recursion, for me, is that you can build infinitely large or complex tasks or structures using one or two tiny, simple parts. I'll give an example of this because I think it's the easiest way for me to show it.
Imagine that you only know three things: how to add 1 to a number, how to subtract 1 from a number, and what 0 means. Now imagine that you want to be able to add any two (positive) numbers (integers) together. How could you do this? Here's a function:
function add(x, y):
if y = 0:
return x
otherwise:
return add( x+1, y-1 )Don't let the new notation scare you; it's the same kind of function as always. In English, it says "This function is named 'add' and needs two parameters (x and y). Step one is to see if y is 0. If it is, the result is x. If it's not, then the result is whatever you get from performing this function with the following parameters: x+1, y-1."
It might not be immediately obvious that this will actually perform the addition we're used to, so let's try it. First, let's try adding 1 + 0. In that case, we check if y is 0. It is, so the result is x, or 1. So far, so good.
Let's try 2 + 1. Is y equal to 0? No, so we need to call add with some new parameters. 2+1 is 3, 1-0 is 0, so the result is now whatever we get from add(3, 0). We start following the instructions of add. Does y equal 0? Yes, so the result is 3, which is what we expect.
One more for good measure: 9 + 2. First we check if y is 0. It's not, so the result is then add(9+1, 2-1), or add(10,1). Start over. Is y zero? Nope, so the result is now add(11, 0). Start over. Is y zero? Yes, so the result is x, or 11.
This will work for any x and any y (as long as they're both positive, negative numbers make it just a tiny bit more complicated). This might not seem impressive, but think about what we've done. We've created something that can add any two numbers together. There are an infinite amount of numbers. This tiny function that we've made from the simplest of parts can generate more results than there are people on this planet. Or atoms in the universe. To me, this is amazing. Not "magic trick" amazing or "miracle" amazing but "I can understand and create something that can describe more knowledge than the whole of humanity couldn't hope to describe in a thousand lifetimes" amazing.
Computer Science (and math in general) is full of this kind of beauty. I've tried to find parallels in my other interests; the closest I've found is the photograph Pale Blue Dot. It's a photo taken by the Voyager 1 space probe showing an immense amount of space with the tiniest blue speck in the middle, which is Earth.
When you view the photograph, it's a mostly black field with a little fleck of blue pigment. Not terribly complicated or interesting, until you realize that that blue fleck is a representation of the planet that billions of people have lived and died on. A smidgen of blue ink, in the right context, represents every place a human has ever called "home."
Our addition function might not seems nearly as nifty as this, but it actually represents more than even this photo ever can. There are a finite number of people on Earth, but the addition function can add more numbers that that. Even if you count every second in the life of every person that has ever lived on our planet, the addition function can create more numbers than that.
This awes me more than any myth, photograph, story, song, legend or dance ever has. It's the reason I stayed a Computer Scientist.
August 13, 2008 at 07:44PM I just bought Lightroom 2 a few days ago, and it's great. It runs a bit slow on my laptop, but hopefully I'll be able to buy a new computer in the near future and editing photos will be snappy again. Anyway, to celebrate my purchase I decided to show an example of a photo that I processed entirely with Lightroom.
This is Corinne, at Flat Iron Cafe. Flat Iron is a great place to dance but has absolutely awful lighting for taking photographs. The best I could do was sit her in a char next to the soda cooler which has one fluorescent bulb running vertically up the middle of it. It's not pretty or flattering at all; her great skin is turned magenta and purple by the other lights in the room. This is the original photo that I had to work with, and since the lighting is so tough I decided to do more drastic processing than usual.
First, I applied a custom preset I made; I called it "Hot Tone" because it's based off of the "Cold Tone" preset that ships with Lightroom. Basically it messes with the camera calibration settings to blow the picture almost entirely out of the water, then uses the white balance, vibrance/saturation and HSL controls to pull it back. It's fun to play around with and presets in Lightroom are so easy to preview (just roll the mouse over it) that they can really help you work a lot faster, or try out effects you might not otherwise spend time trying. The settings that the preset affects are:
Next I adjusted the contrast to give it some depth. I don't usually use the Contrast control in the basic section unless I'm just rushing through editing some snapshots. That control does give you contrast but it's pretty hard to work with. I use the Tone Curve for any real contrast editing which is what I did here. I brought the shadows and darks down quite a bit (-56 and -40 respectively), took down the lights a little too (-15) and brightened the highlights to help shape the face even more (+23). Now it's starting to look like a decent picture.
I knew I wanted to emphasize her face, so I added a pretty strong post-crop vignette to tone down her shirt and the background. Vignettes can be cheesy but I think when they're used appropriately they can add a lot. Lightroom 2 finally lets you add vignettes after you've cropped an image; in Lightroom 1 you could only add it to the original picture. If you cropped it after that you'd wind up with a pretty uneven edge, so I'm glad Adobe added this.
I shot the picture at an aperture of f/1.8 so it's pretty soft all around. I wanted to emphasize that even more so I used a local adjustment brush to smooth out the skin a bit with some negative clarity. Local adjustments are another new Lightroom 2 feature; you can now dodge/burn/etc pieces of a photo individually. I get the feeling I'll almost never be using Photoshop any more. I'm pretty happy about that.
I wasn't satisfied with her eyes, so my next step was enhancing them. I dodged the irises, added some clarity around the inner and outer edges, and brightened the whites just a tiny bit. I think it really makes the eyes pop a lot more than before; they're not just solid black circles any more. I used another brush to paint in some clarity on her lips to define them a little more too. By the way, the new Auto Mask feature is amazing and will save you tons of time.
To finish everything off I added just a bit more contrast and a subtle, red split tone to just the shadows to put back a little more color that the preset had taken away. I find myself doing this a lot; I'll make the biggest changes to a photo right away and then tweak it as I go. By doing that I build up lots of smaller changes that get me closer and closer to my goal.
Anyway, I hope this was useful to someone. If you have any questions about it or feel like telling me what you think, the comment link is right below!
August 1, 2008 at 09:23PM For those of you that don't know, one of the things I do with my free time is dancing. I've been swing dancing (Lindy Hop) for about five years, blues dancing for a year or so, and recently started learning tango. All of these dances are improvised partner dances and so rely heavily on leading and following. People do make routines but at least 95% of it is unrehearsed social dancing with partners you might have never met.
As a male I'm usually in the role of leader, though I do try to follow when I get the chance. I've learned a lot over the years so I'm going to write a few posts about leading, and this is the first. I'm going to use the traditional pronouns to make things easier to read, but everything applies to both genders in both roles.
When a guy is first taught how to swing dance (or blues, or tango; everything I'm saying applies to all three) he's usually taught that his main job is to lead. This sounds obvious, but it's a lot for a beginner to take in. He has to learn the footwork and ingrain it into his memory so it becomes automatic, which takes some time. The next step is learning individual moves: not only how to do them himself but also how to lead a follower to do them at the same time. It takes coordination and most of all practice.
Leading at this point involves clearly showing the follower where she should go and what she should do. "Placing the follower's weight" is a concept that's a bit tricky but very useful. If a leader isn't clear in his leading the follower won't be able to follow him unless she "cheats" and just does what she knows he wants her to do (because she's danced with him before and so knows what he's trying to do). This falls apart when the leader dances with a new partner. Without leading and following swing dancing just doesn't work, so leading clearly is the main role of a beginner guy.
Let me take a second to explain something I see happen very often with leaders that take classes and progress nicely in their skill. Once the leader gets the basics down pat and starts learning more moves, there seems to be a tendency to learn things that let him show off. The followers get to really shine in Lindy Hop quite a bit, so it's only natural for the guys to want to measure up and look cool themselves. Unfortunately I think this gets in the way of my next idea.
I think once a leader reaches a point where he's comfortable with the structure of the dance and has a repertoire of moves and vocabulary of movements, his role changes. His job is no longer "lead." His role becomes "lead the follower you are dancing with right now."
Every follower is different. Every single one has a different level of experience, a different style, and a different personality (as it relates to dancing). If the leader simply leads every dance the same way, those dances are not as good as they could be. An "advanced" leader leading a beginner follower in a lot of complicated movements she's not capable of following yet turns into a complete mess. He goes away from the dance feeling bored or frustrated (or worse, arrogant) and she goes away feeling confused, discouraged or angry. This is not a good thing.
Paying attention to the follow's level is critical. I'm not saying "only do moves that the follower has learned and can easily follow." Pushing the follower slightly beyond her comfortable, "automatic" level is wonderful and helps her immensely; but going totally over her head and confusing the hell out of her just so he can show off (to her or others) is obnoxious. This also works in reverse: followers, please challenge your leaders but be mindful of their skill.
Experience isn't the only difference between followers. Each follower has her own style that won't always fit perfectly with the leader's personal style. Adjusting his style to mesh better with hers makes the connection between partners so much better, which makes the dance that much more fun. This also works both ways. Followers are generally better at "listening" to their partner because it's their main job; if a lead makes an effort to really listen to the follow and change his leading to incorporate her ideas, personality, style and level it makes an enormous difference.
The point I'm trying to make is that "leading" a follower is not just leading. It's paying attention to the follower and leading her.
July 23, 2008 at 04:34PM It's been just about a year since I got my first SLR camera and started studying photography with any degree of seriousness. I've come quite a way since then, and it hasn't been exactly what I expected.
RIT has three main areas of photographic study: fine art, advertising and photojournalism. If you had asked me on the day I got my camera which of those three I thought I'd be most interested in (even though I wasn't majoring in photography) I would have said "photojournalism." When I first started shooting I hated using flash and was mostly only interested in capturing musicians and dancers.
Since then I've learned a lot. I'm pretty comfortable with hot shoe flash and studio lighting. I know how to develop and print black and white film in a darkroom myself. I've discovered how wonderful a certain degree of abstraction can be and I'm slowly but surely getting more artistic as time goes by. I think my answer to the previous question has changed; right now I see myself becoming more and more of a fine art photographer. I certainly don't consider myself good at that yet but it's the path I've started down and plan on continuing. There's something really special about planning, visualizing and not just taking but creating a photograph that I've fallen in love with.
I'm going to be updating my site to reflect this shift. Obviously the layout has changed a bit, but I've also removed the galleries of random photos that I had posted previously. From now on I'll only be displaying photographs with a cohesive idea behind them. I'll still post tons of random haphazard photos to my flickr site, but the galleries on this site will be for showing off what I most enjoy and am really proud of.