Tuesday, December 23, 2008

An Early Memory

I had my first half of kindergarten in Houston, in a wonderful classroom with a kind teacher, who later gave me a copy of the complete Peter Rabbit series, which she wrote a note in, and which I still have. For my second half of kindergarten, we lived in New Orleans, and I had a terrible teacher.

I remember arriving for my first day of kindergarten in New Orleans. There was a large jungle gym in the playground, and many children (big kids) were hanging from it all over. And they were singing the Pink Floyd song "We don't need no education." All of them. I thought, wow, these are tough kids at this school.

I remember this clearly, and yet it is entirely implausible to me that it actually occurred as I've described it here. That song isn't anachronistic for 1980, but I still can't imagine that there was actually a group of elementary school kids on a jungle gym, mostly hanging upside down, belting out this song in unison. It just can't be. (The fact that the song contains a chorus of children anyway makes it extra-suspicious.)

It's an interesting memory, though. Think how tough those big kids looked to me.

Monday, December 22, 2008

Waterfall vs. Iterative Models

Most people only know one way to run a project; they use a structure that in software development is called a "waterfall model." In a waterfall model, each stage of the project is finished in order, and the results enable the next stage, until you are finished.

For instance, in writing a term paper for school, you might choose a topic, gather some references about the topic, read them while taking notes or making notecards, produce an outline for your intended paper, write a first draft, and then produce a final paper. I think this is the basic process we were all taught in school, and sometimes teachers would even make you turn in intermediate steps just to make sure you were using the process.

An "iterative" model is a different way of doing things, and I think for some types of projects it is superior. In an iterative model, rather than finishing an entire stage before moving onto the next, you divide your project into iterations. At the finish of each iteration, you will have done some of all of the appropriate kinds of work, and ideally you will have some kind of product.

If you applied an iterative model to writing a term paper, your first iteration might result in a very rudimentary draft. You would have gathered only a few sources and skimmed them, produced a very sketchy outline, and put together the bare bones of the paper. The goal should be to end up with a crappy paper at the end of this first iteration. From having done the work so far, you should now know what kind of sources you need and want, and have a good idea where the paper is going. The next cycle will incorporate more sources and be much more complete, and will result in the next draft. You can continue this process of refinement indefinitely (or until the paper is due).

I'm only sketching this out in a very basic way, but there are a few obvious advantages of using an iterative model. First, as soon as you've finished the first iteration, you are always ready to turn in something. Even that horrible first draft can probably get you some grade. In software development, this makes even more sense - even a very "sketchy" program that runs allows people to see visible progress.

Second, you learn a lot during each iteration. When your users or clients see the sketchy program, they will be filled with ideas about what it should do, or you may learn that it wasn't what they wanted after all. Even writing an extremely rough draft of a paper often gives you a very good idea of how it should proceed.

Third, an iterative model prevents the major drawback of a waterfall model - that you may never finish a stage to your satisfaction. If you have to have the whole paper planned out before you begin, you might not get there. If you can't hammer out a complete set of requirements for your software project, you could lose weeks or months or even years that you could have been making progress on other fronts.

Ed taught a computer science class last semester, and many of his students turned in a final project that didn't run. I can't help but think some of them would have been helped by using an iterative model (as well as starting earlier and all of the other usual student tricks). It's better to turn in the 2nd generation code that runs than to turn in the niftier 3rd generation code that doesn't. Using an iterative model lets you hedge your bets this way - at nearly every stage you've produced something of value.

Friday, December 19, 2008

A Feeling

Last night as I went to bed, I felt a strong feeling of not-rightness in my body. It was very similar to one component of being very sick, but it didn't have any actual symptoms - no pains, no fever, nothing physically wrong at all, except for a feeling of wrongness, of dis-ease. It made me want to moan and thrash around.

I've had this feeling before at bedtime, and I had it really strongly in the hospital the night of my surgery. I'd woken up from the surgery around noon or so, feeling actually pretty good and happy to be alive, and then I steadily deteriorated until I was an absolute wreck around bedtime, filled with crippling anxieties and such a strong feeling of something being wrong with my body that I wanted to die.

I wonder what that feeling is. It must be, at least in cases like last night, psychological. I doubt anything was actually wrong with me physically. I may have been overtired, but usually once you lie down and prepare to sleep, that doesn't feel so bad.

I don't know.

Thursday, December 18, 2008

Final Grades

I got an A in both of my classes. I am pleased. (My school does not have +/-, so a letter grade is all you get.)

I knew I would have an A in Prob/Stats given that I had an A on basically every single thing for the entire semester (except perhaps for getting a B on one homework sometime), and given that I felt I aced the final. The class was moderately easy and fairly boring.

Discrete Math I wasn't sure about. I felt that I aced the final. Other than that, there were two exams during the semester. I got a 64% on the first one and was given the opportunity to retake it for up to 80% credit, but this re-test was never graded and returned, and I did not ace it. I got 100% on the second test. There was one very small homework assignment, but I never turned it in. I did a small project and write-up on my own but did not ask for credit for it.

So that's that. Another successful semester in the bag.

Wednesday, December 17, 2008

The Gift of the Lazi

Last night, I had to go to Walmart because we were out of cat food (such that the cats got a packet of for-human-consumption salmon for dinner instead, about which they did not complain) and because we have a gift exchange at work today and I needed a gift for it, and some kind of wrapping material, etc. Ed came with me, and as we were checking out, we were talking about the fact that neither of us has obtained, or even really thought about, a Christmas gift for the other.

Saturday, we're going to the mall. We need to buy gifts for the gift exchange we're having with my family at Christmas, and we need to buy gifts for Sunday night, when we hang out with his family. And I need to get something to wear that night, to my office Christmas party. Sunday around brunchtime is his sister's wedding shower (so I'm finally getting to meet her), and then of course Sunday night we hang out with his family and do their Christmas.

I like Christmas but I'm always remiss about the shopping (as so many people are; I'm sure the mall will be a joy on Saturday). So the idea that I also need to get something for Ed is...argh. And on his side, he used up all of his ideas getting my birthday present earlier this month.

Thus, by mutual consent, what we are getting each other for Christmas, at least for now, is the convenience of not having to get each other anything. It's just what I've always wanted!

Thursday, December 11, 2008

Crying, Eureka

Last night, I took the final for my Discrete Math class. It's been a wonderful, fun, and somewhat amazing class (amazing in that I had no idea what discrete math was when I started, and only registered for the class because the one I wanted to take was cancelled and it was in a convenient time slot).

It has also been a stressful class. Although I want to study math forever, I really have a love/hate relationship with it. In short, I love math that I already understand, and sort of hate the struggle to learn new math. But once I start to understand the new math I will love it as well. (I have a very similar experience with music; I almost always hate listening to anything new, but as soon as the newness wears off - usually around the 2nd or 3rd exposure - I'm all over it.) I have a low threshold for frustration, so if I don't understand new math right away I tend to get disproportionately upset.

Occasionally, I get to learn new math that I immediately understand. This tends to be things like definitions around functions (onto, one-to-one, etc.), propositional logic, set theory, probability, and so on. These are really exciting and wonderful experiences for me - all the joy of a new way of thinking, with none of the suffering.

Anyway, returning to my Discrete class. Some of it has been the easy, delicious stuff. Other parts were really hard. The hardest part for me was recursively defined relations. These are sequences like the Fibonacci numbers, where the most natural definition is how to get the "next" number. In class, we "solved" these by coming up with the closed-form rule: the rule that tells you how to get, for instance, the 1000th Fibonacci number without having to figure out the preceding 999. We used tricks. We used generating functions.

On the final exam, we were given a series that didn't respond to any of these methods. We were to solve it "by inspection", which means "look at it and figure it out." Looking back, this one seems simple to me, but I had a very hard time with it. Here it is:

a[1] = 1
a[k+1] = k^2 * a[k]

so the terms are

a[1] = 1 (given)
a[2] = 1^2 * a[1] = 1
a[3] = 2^2 * a[2] = 4
a[4] = 3^2 * a[3] = 36
a[5] = 4^2 * a[4] = 576
and so on

I won't give the solution here in case anyone wants to figure it out for themselves, but taking the test, I stared at this. I tried to reason through it. I drew a picture. I wrote out the first six terms.

And then I cried. I knew I needed to get an A on the test in order to have a good chance of an A in the class, and this question was 1/6 of the points. And solving recursively defined series by inspection is something I can "never" do. So I actually cried. And then I dried my eyes and tried to calm down. I started writing out the terms in terms of how they were calculated, and this got me to the solution (which I at first didn't recognize, until I noticed that it really did correspond to each term). Then I had to do a (very easy) proof by induction to show that my solution was correct, and I was done.

I've noticed that I often get a difficult math thing immediately after crying. I think crying is one way of frustration "breaking", in the way that sweating is the breaking of a fever. Once the frustration breaks, you're calm again, and ready to proceed a bit diligently (if hopelessly), and insight can make its way through your brain again.

I am getting much better all the time at figuring out what to try next, in math. It used to be that I'd get frustrated and give up, and then the next day it would occur to me what else I could have tried, and then I wouldn't bother. Now I can often think of the next thing to try right away, and just do it. I'm sure my tolerance for frustration is increasing too. And I am succeeding at my explicit goal of learning that I can get better at math through effort.

It's been a good semester.

Tuesday, December 09, 2008

Christmas Specials

By John Scalzi, The 10 Least Successful Holiday Specials of All Time, including

Ayn Rand’s A Selfish Christmas (1951)

In this hour-long radio drama, Santa struggles with the increasing demands of providing gifts for millions of spoiled, ungrateful brats across the world, until a single elf, in the engineering department of his workshop, convinces Santa to go on strike. The special ends with the entropic collapse of the civilization of takers and the spectacle of children trudging across the bitterly cold, dark tundra to offer Santa cash for his services, acknowledging at last that his genius makes the gifts — and therefore Christmas — possible...

Monday, December 08, 2008

Not Just "Difficult"

I am in love with this cartoon. I think it's the books:
From lolgod.

(I want her book.)

Tuesday, December 02, 2008

Living Each Day

At lunch, I received a fortune cookie that said

LIVE EACH DAY AS THOUGH IT IS YOUR LAST

and when I thought about how I would live my last day, this seemed like absolutely terrible advice. If I knew I was dying tonight at bedtime, assuming I didn't spend the day moping or railing against the cruelty of my fate, I would surely live the day in a more or less hedonistic fashion. Between phone calls to tell people I loved them (which would surely get old if I did it every day), I would eat rich foods (no vegetables unless perhaps a creamed spinach came my way), blow off work and school, and just generally try to relax and have a good time.

So, how ought one to live each day? The sort of obvious answer is that you should live it in accordance with whatever you know about it. If it's your last day to file graduate school applications, you ought to file them. If it's your first day of law school, you should probably go to class. But the idea behind "live each day as though it is your last" is surely to cast some kind of extra perspective to help you do better than you might otherwise. So in that vein, what would the good advice be?

I think you ought to live each day as though you're going to live a long time. What will you see when you look back at this time in your life, and what do you want to see? Will you see yourself working hard to get what you want? Will you see yourself laboring futilely because you never thought about your actual priorities? Will the whole decade disappear in a blur of tv-watching and beer-drinking? Will this be the time you saw the first glimmers of the theorem that eventually won you the Fields Metal?

I remember something C.S. Lewis wrote. He said that since we are going to live eternally (a believe I don't share, obviously), we ought to mind our personality traits and trends. If you find yourself growing more irritable over time, then carried out to eternity, this would become hellish. So we ought to spend our time, at the very least, trying to improve our characters across the board. That's not a bad idea.

It depends on what you care about. Do you care how you are remembered? How do your actions today contribute to what you hope your obituary says? Or do you mostly care about having a good time, in which case, what are you doing today to either have a good time, or let you have a good time in the future? If you want to contribute to a field, are you working on your 10,000 hours?

One thing I care a lot about myself is memories. I try to choose activities that I remember later, that give my life some richness. Things that are relaxing and almost boring, like watching television, napping, or mindlessly surfing the Internet, do not have this property. Even if they are desirable in the moment, over time they blur together and add little to my life.

I find that difficulty is a good proxy for meaningfulness, for me. Learning new math, taking a long hike, reading a non-pulp (for once) book...these are things that stay with me. I look back at them and feel that something has really happened and I wasn't just taking up space or killing time. Even among similar activities, difficulty makes a difference. Eating a spicy rather than a bland food. Hiking uphill rather than flat. Strength training with low reps and heavy weights rather than light weights and high reps. Learning theoretical rather than practical math.

So for me, taking a more difficult path is somewhat key to feeling satisfied in life. Other people naturally work hard all the time, and may need to remember to relax and have a little fun. What works for you?