I have never been particularly popular. Growing up, I was very self-conscious, and lacked a lot of the social skills necessary to make friends. It didn't help that I wore ten-year-old hand-me-downs, didn't bathe frequently enough, and had wild, unmanageable hair that I seldom brushed, either.
In Junior High, I literally had no friends in my class. I was on good terms with some of the guys, but the girls hated me, all of them. I'm not quite sure what I did to deserve that kind of animosity, but I suspect that it was a combination of many factors.
Things improved considerably when I went on to a different high school than the rest of my classmates. I made a lot of female friends from my fellow classmates at the math-science-technology magnet school. But I still had this nagging feeling that there was a problem with me, something my friends were kind enough to overlook.
In college I met Jeff, which did wonders for my self-esteem, but I still had some problems at the hands of a clique-ish group. When I finally figured out that there were plenty of other, much more interesting people to be friends with, I was fine. But it took me a while to get to that stage.
The first time I ever felt halfway popular was when I was an adult. When I was in graduate school, I discovered that I was a bit of a trend-setter amongst the people I knew, and it really tickled me. After we cut down the ugly bushes in our front yard and replaced them with roses, our next-door neighbors did the same thing. I had a particular configuration in our kitchen, and another friend saw it and decided to copy it. I was sincerely flattered by all of this.
One day, when I was eating lunch with a friend in graduate school, she told me that she thought I was a really nice person and a good friend. I had a hard time not crying. This was at about the same time that my parents were getting divorced, which had just turned my world upside-down. So to hear someone whom I admired say that I was not only not a waste of oxygen, but a really good friend, was just overwhelming!
After a lot of counseling, I was able to realize that a big part of my self-esteem problems were simply a product of the baggage that I inherited from my dysfunctional family (our motto: "putting the fun in dysfunctional"). It has been difficult to shed that negative self-image and I am still working on it. But one key is to derive my self-worth from internal cues, rather than external cues. In other words, under ideal circumstances, I shouldn't worry about others' opinions of me, as long as I feel like I'm doing the right thing. Or, as Henry Clay said, "I'd rather be right than president."
All this is a long introduction to the actual topic I was wanting to discuss, which is blog popularity. To a certain extent, the blogosphere is junior high all over again, with the cool kids who get lots of blog traffic, and then the geeks like me who don't get very much traffic. I could feel upset that I get very little traffic (well, actually, I get close to 50 hits a day, so I wouldn't say that's "no traffic", but compared to the major players, it's tiny). But honestly, I don't mind at all.
The reason I started this blog was to let my family and friends know what I was up to. My early entries are fairly pedestrian, just talking about what I was doing, how much weight I'd lost, my typical work day, etc. And I still talk a lot about those sorts of things, now with the addition of Vinny to that mix. I've added some interesting content about math and computer science, which has attracted other readers, but I'm still nowhere near "popular" by standard metrics.
But, as far as I'm concerned, I'm extremely popular. Heck, I'm flattered that so many family members and friends actually read my nonsense! I figured my sisters would, because they're just nice that way, but I know my sister-in-law, my dad, and a couple of cousins are regular readers. And a couple of friends from high school and college are readers, too.
And I'm flattered to have so many regular readers beyond my original target audience of family and friends. I find it nearly incomprehensible that anyone other than those related to me or those who know me in real life would find my writings interesting. But I'm not going to complain or argue or anything.
Thanks for reading!
Friday, March 30, 2007
Amazing Developments
Last night, Vinny had an amazing breakthrough. I put him on his back on a blanket down on the floor, and he began rolling around spontaneously!
Every other time he's rolled, it's been pretty much coerced. We'd put him on his tummy, he'd hate it, and roll over to his back after a lot of complaining and hurt feelings. But last night, he was a rolling champ! He rolled himself from his back to his tummy, hung out there for a while, and then rolled back to his back, without complaining, without getting upset or feeling hurt. He did it several times, too. It was amazing! He stayed in that classic baby pose (on the tummy, head up) for several minutes, smiling and giggling. And when he'd had enough, he rolled back over.
Every other time he's rolled, it's been pretty much coerced. We'd put him on his tummy, he'd hate it, and roll over to his back after a lot of complaining and hurt feelings. But last night, he was a rolling champ! He rolled himself from his back to his tummy, hung out there for a while, and then rolled back to his back, without complaining, without getting upset or feeling hurt. He did it several times, too. It was amazing! He stayed in that classic baby pose (on the tummy, head up) for several minutes, smiling and giggling. And when he'd had enough, he rolled back over.
Happy Friday!
Happy Friday, everyone!
One great thing about my job is that there's no set timeframe for when you have to be at work. If I were a medical doctor, I'd have to keep my appointments with my patients. If I were a professor, I'd have to teach classes at a certain time. I have even fewer scheduled commitments than a professor; there are some meetings I have to attend occasionally, but otherwise, I can work whenever I want to.
So I've begun to work a new schedule: the 9/80 schedule, where, over the course of two weeks, you work a total of 80 hours over nine days. I have every other Friday off, and this is my day off!
It requires me to work 9 hours every Monday-Thursday, and 8 hours every other Friday. The way I've been doing the nine hours is by getting up an hour earlier and then leaving work at about the same time. So far it seems to be a good system, and motivates me to work more because I get this special day off. We'll see how I feel about it after a couple of months of this.
One great thing about my job is that there's no set timeframe for when you have to be at work. If I were a medical doctor, I'd have to keep my appointments with my patients. If I were a professor, I'd have to teach classes at a certain time. I have even fewer scheduled commitments than a professor; there are some meetings I have to attend occasionally, but otherwise, I can work whenever I want to.
So I've begun to work a new schedule: the 9/80 schedule, where, over the course of two weeks, you work a total of 80 hours over nine days. I have every other Friday off, and this is my day off!
It requires me to work 9 hours every Monday-Thursday, and 8 hours every other Friday. The way I've been doing the nine hours is by getting up an hour earlier and then leaving work at about the same time. So far it seems to be a good system, and motivates me to work more because I get this special day off. We'll see how I feel about it after a couple of months of this.
Sunday, March 25, 2007
With Apologies to Stephen Foster
Beautiful screamer, why waken me,
Cooing and screeching at hours early?
Sounds that should wait for daylight at best,
Can't wait to waken me from my sweet rest.
Beautiful screamer, prince of my song,
Grinning so broadly, cute as can be,
Can't let your parents sleep for too long!
Beautiful screamer, why waken me?
Beautiful screamer, why waken me?
Cooing and screeching at hours early?
Sounds that should wait for daylight at best,
Can't wait to waken me from my sweet rest.
Beautiful screamer, prince of my song,
Grinning so broadly, cute as can be,
Can't let your parents sleep for too long!
Beautiful screamer, why waken me?
Beautiful screamer, why waken me?
Saturday, March 24, 2007
Computational Complexity, Part III
I was being a bit hyperbolic when I said that if P and NP were equivalent, then all our problems are solved. There are a lot of very important problems in NP that would no longer be effectively unsolvable, but some problems are even harder than NP-complete, and those would not be made any easier by this development.
I touched upon the fact that larger problems require more memory in addition to more time than smaller versions. There are some problems for which we know that the amount of memory required to solve the problem is O(Nk). It may take a very long time to solve the problem, but the amount of memory required is manageable. Problems in this class are said to be in PSPACE.
A good example of a problem in PSPACE is the problem of playing perfect chess on an N by N board. At each turn, there are only a finite number of moves that you can make, based on the pieces you have on the board, the pieces your opponent has on the board, and the limitations of each type of gamepiece. The game could continue for an extremely long time, but at each turn, you need only enough memory to store all your possible moves. The Go endgame is also in PSPACE.
And then there are the problems that are undecidable. For these problems we have no way of figuring out the answer. For example, will my computer program halt? This is an undecidable problem.
Suppose I had a perfect computer that never lost power, never overflowed or underflowed, never ran out of memory, never broke down, etc. If I write a program for this perfect computer, it is not possible to know in advance whether my program will reach the end. (On a real computer, you can guarantee that a program will halt, if for no other reason than extenuating circumstances having nothing to do with the computation! Of course, this doesn't help with evaluating the logic of an algorithm.) Here is an example:
x = 3
do until quitting:
for a = 1, 2, …, x
for b = 1, 2, …, x
for c = 1, 2, …, x
for i = 3, …, (prime numbers up to) x
if (ai + bi == ci)
quit
end for
end for
end for
end for
x = x+1
end do
This program tests Fermat's last theorem: Are there any integers a, b, c > 0, and prime i > 2, such that ai + bi = ci? The answer is no. Fermat's last theorem has been proved (the proof has stood for about 13 years and no unfixable flaw has yet been found!), but there are other problems similar to this one for which we have no proof. We could reduce one of these problems to a computer program that terminates if the answer is "yes," and does not terminate if the answer is "no." If we had a method that could always figure out whether a program would terminate, then we could use it to solve these problems, just like how we can solve all NP-complete problems if we have a way to solve one.
Unfortunately, it is impossible to determine whether a program will terminate. Here's a proof by contradiction: Suppose we had a program, terminates(p, x), that would figure out whether a program p terminates, given input x. Then, let's say we had another program, evil_program(p), with the following algorithm:
evil_program(p):
while (true)
if (terminates(p, p) == false) quit;
end while
This program causes a contradiction if you call evil_program on itself. Would evil_program(evil_program) terminate or would it keep going? Neither outcome is possible, because evil_program(evil_program) terminates only if evil_program does not terminate. We have created a logical paradox, so we must conclude that our initial premise (the existence of terminates(p, x)) is flawed.
I hope that you have found this discussion of computational complexity as interesting as I have. I recommend a couple of very good websites as supplemental reading. (I drew from many of them as inspiration, particularly for this last installment, because I am not very familiar with PSPACE and undecidable problems.)
For a technical description of NP-completeness, the Wikipedia entry is very informative. They also have a long list of NP-complete problems. For a more informal discussion of these concepts, David Eppstein's page is invaluable. Finally, this chapter from a book on algorithms by Dasgupta, Papadimitriou, and Vazirani is both understandable and fun to read, and gave me the proof for the non-existence of the terminates program.
I touched upon the fact that larger problems require more memory in addition to more time than smaller versions. There are some problems for which we know that the amount of memory required to solve the problem is O(Nk). It may take a very long time to solve the problem, but the amount of memory required is manageable. Problems in this class are said to be in PSPACE.
A good example of a problem in PSPACE is the problem of playing perfect chess on an N by N board. At each turn, there are only a finite number of moves that you can make, based on the pieces you have on the board, the pieces your opponent has on the board, and the limitations of each type of gamepiece. The game could continue for an extremely long time, but at each turn, you need only enough memory to store all your possible moves. The Go endgame is also in PSPACE.
And then there are the problems that are undecidable. For these problems we have no way of figuring out the answer. For example, will my computer program halt? This is an undecidable problem.
Suppose I had a perfect computer that never lost power, never overflowed or underflowed, never ran out of memory, never broke down, etc. If I write a program for this perfect computer, it is not possible to know in advance whether my program will reach the end. (On a real computer, you can guarantee that a program will halt, if for no other reason than extenuating circumstances having nothing to do with the computation! Of course, this doesn't help with evaluating the logic of an algorithm.) Here is an example:
x = 3
do until quitting:
for a = 1, 2, …, x
for b = 1, 2, …, x
for c = 1, 2, …, x
for i = 3, …, (prime numbers up to) x
if (ai + bi == ci)
quit
end for
end for
end for
end for
x = x+1
end do
This program tests Fermat's last theorem: Are there any integers a, b, c > 0, and prime i > 2, such that ai + bi = ci? The answer is no. Fermat's last theorem has been proved (the proof has stood for about 13 years and no unfixable flaw has yet been found!), but there are other problems similar to this one for which we have no proof. We could reduce one of these problems to a computer program that terminates if the answer is "yes," and does not terminate if the answer is "no." If we had a method that could always figure out whether a program would terminate, then we could use it to solve these problems, just like how we can solve all NP-complete problems if we have a way to solve one.
Unfortunately, it is impossible to determine whether a program will terminate. Here's a proof by contradiction: Suppose we had a program, terminates(p, x), that would figure out whether a program p terminates, given input x. Then, let's say we had another program, evil_program(p), with the following algorithm:
evil_program(p):
while (true)
if (terminates(p, p) == false) quit;
end while
This program causes a contradiction if you call evil_program on itself. Would evil_program(evil_program) terminate or would it keep going? Neither outcome is possible, because evil_program(evil_program) terminates only if evil_program does not terminate. We have created a logical paradox, so we must conclude that our initial premise (the existence of terminates(p, x)) is flawed.
I hope that you have found this discussion of computational complexity as interesting as I have. I recommend a couple of very good websites as supplemental reading. (I drew from many of them as inspiration, particularly for this last installment, because I am not very familiar with PSPACE and undecidable problems.)
For a technical description of NP-completeness, the Wikipedia entry is very informative. They also have a long list of NP-complete problems. For a more informal discussion of these concepts, David Eppstein's page is invaluable. Finally, this chapter from a book on algorithms by Dasgupta, Papadimitriou, and Vazirani is both understandable and fun to read, and gave me the proof for the non-existence of the terminates program.
Computational Complexity, Part II
Complexity theorists classify problems based on the amount of time and memory it takes to solve a problem. Let's say that we can define the size of a problem with a simple non-negative integer N, representing something countable such as the number of nodes in a tree or the size of a matrix. It makes sense that the larger N is, the longer it takes and/or the more memory is required to solve a problem. The question is, how do the time and memory requirements grow with N?
The time to solve many problems grows proportionally to a polynomial in N. For example, factoring an N by N matrix takes an amount of time proportional to N3. We denote this relationship by saying that factorization is "of order N-cubed," written O(N3). If we can find a polynomial-order algorithm, then the problem is in the complexity class known as P.
For some problems, such as the load balancing problem above, nobody has figured out a polynomial-order algorithm that always finds the correct answer. The only algorithms that we know will always work are prohibitively expensive, O(2N) or even worse, O(N!). Basically, the only algorithms that we know of to solve these sorts of problems require you to examine every possible combination and permutation. Problems for which there is no polynomial-order algorithm are often in the complexity class known as NP, which is an acronym for nondeterministic polynomial. "Nondeterministic" has to do with making a guess; essentially, the problems in this class are hard to solve but their solutions are easy to verify. If Stephen Hawking came to you with a solution to one of these problems, you could verify the solution in polynomial (O(Nk)) time.
There is a set of the hardest problems in NP that are equivalent to one another, so if you could solve one you could solve all the others. These problems are in a class known as NP-complete. The load balancing problem falls into this class, as do many other problems, such as tetris, N by N sudoku, and minesweeper.
The seminal NP-complete problem is called the Traveling Salesman Problem. Suppose that you are a traveling salesman, and you need to visit N cities and then return home. What is the shortest route that you can take? (This is a very important problem. If it's not a salesman traveling from city to city, it could be a message on a network, a truck belonging to a moving service, or an airplane in an airline's fleet.)
The corresponding decision problem (problem with a yes/no answer) is "Is there a route with length less than k?" If we can solve the decision problem, then we can solve the optimization problem (shortest route) by solving the decision problem for different values of k.
Another NP-complete problem is the Hamiltonian Cycle Problem. Given a graph containing vertices and edges (think airports and flights, respectively), is there a path beginning and ending at one point that visits all the vertices exactly once?
These problems sound similar in some way, but they have their differences. But we can show that they are equivalent by developing an algorithm for one that uses the other as a subroutine.
Suppose we had a good algorithm for the Traveling Salesman Problem. Then we could solve the Hamiltonian Cycle Problem with the following algorithm:
Complexity theorists have found ways to reduce the other problems I described above to be equivalent to the Traveling Salesman Problem. So if we could find a polynomial-time algorithm for one, we could solve all of them in polynomial time.
An open question in the complexity theory field is whether the complexity classes P and NP are one and the same. It's clear that P is contained within NP: if we can solve a problem in polynomial time, then we can verify a solution that someone provides to us in polynomial time, simply by solving the problem. But it's not clear that NP is contained within P; nobody's yet found a polynomial-time algorithm to solve any of the NP-complete problems. Most complexity theorists believe that P and NP are not the same, but nobody has any proof of that. If they did, then they could win a million dollars from the Clay Mathematics Institute.
Some people, such as traveling salesmen, folks in the shipping and transportation industries, and those in the load balancing or scheduling business, hope that P and NP are equivalent. Because if they are, then all our problems are solved.
Others, such as bankers, software engineers, privacy advocates, and those in the computer security business, hope that P and NP are not the same. Because if they are, then it has dire consequences for the security of our banking industry, web-based commerce, private correspondence and cell phone conversations, and password protection.
In my next entry, I will talk about problems that are even harder than NP.
The time to solve many problems grows proportionally to a polynomial in N. For example, factoring an N by N matrix takes an amount of time proportional to N3. We denote this relationship by saying that factorization is "of order N-cubed," written O(N3). If we can find a polynomial-order algorithm, then the problem is in the complexity class known as P.
For some problems, such as the load balancing problem above, nobody has figured out a polynomial-order algorithm that always finds the correct answer. The only algorithms that we know will always work are prohibitively expensive, O(2N) or even worse, O(N!). Basically, the only algorithms that we know of to solve these sorts of problems require you to examine every possible combination and permutation. Problems for which there is no polynomial-order algorithm are often in the complexity class known as NP, which is an acronym for nondeterministic polynomial. "Nondeterministic" has to do with making a guess; essentially, the problems in this class are hard to solve but their solutions are easy to verify. If Stephen Hawking came to you with a solution to one of these problems, you could verify the solution in polynomial (O(Nk)) time.
There is a set of the hardest problems in NP that are equivalent to one another, so if you could solve one you could solve all the others. These problems are in a class known as NP-complete. The load balancing problem falls into this class, as do many other problems, such as tetris, N by N sudoku, and minesweeper.
The seminal NP-complete problem is called the Traveling Salesman Problem. Suppose that you are a traveling salesman, and you need to visit N cities and then return home. What is the shortest route that you can take? (This is a very important problem. If it's not a salesman traveling from city to city, it could be a message on a network, a truck belonging to a moving service, or an airplane in an airline's fleet.)
The corresponding decision problem (problem with a yes/no answer) is "Is there a route with length less than k?" If we can solve the decision problem, then we can solve the optimization problem (shortest route) by solving the decision problem for different values of k.
Another NP-complete problem is the Hamiltonian Cycle Problem. Given a graph containing vertices and edges (think airports and flights, respectively), is there a path beginning and ending at one point that visits all the vertices exactly once?
These problems sound similar in some way, but they have their differences. But we can show that they are equivalent by developing an algorithm for one that uses the other as a subroutine.
Suppose we had a good algorithm for the Traveling Salesman Problem. Then we could solve the Hamiltonian Cycle Problem with the following algorithm:
- Convert the airport/flight graph to a complete graph (a graph with an edge between every airport) with the following method:
- If a flight exists between airport A and airport B, then give that edge a weight of 0. If there is no flight between A and B, then give that edge a weight of 1.
- Find the solution to the traveling salesman decision problem "Is there a route with length less than 1?"
- If yes, then there is a Hamiltonian cycle. If no, then there is not.
Complexity theorists have found ways to reduce the other problems I described above to be equivalent to the Traveling Salesman Problem. So if we could find a polynomial-time algorithm for one, we could solve all of them in polynomial time.
An open question in the complexity theory field is whether the complexity classes P and NP are one and the same. It's clear that P is contained within NP: if we can solve a problem in polynomial time, then we can verify a solution that someone provides to us in polynomial time, simply by solving the problem. But it's not clear that NP is contained within P; nobody's yet found a polynomial-time algorithm to solve any of the NP-complete problems. Most complexity theorists believe that P and NP are not the same, but nobody has any proof of that. If they did, then they could win a million dollars from the Clay Mathematics Institute.
Some people, such as traveling salesmen, folks in the shipping and transportation industries, and those in the load balancing or scheduling business, hope that P and NP are equivalent. Because if they are, then all our problems are solved.
Others, such as bankers, software engineers, privacy advocates, and those in the computer security business, hope that P and NP are not the same. Because if they are, then it has dire consequences for the security of our banking industry, web-based commerce, private correspondence and cell phone conversations, and password protection.
In my next entry, I will talk about problems that are even harder than NP.
Thursday, March 22, 2007
Computational Complexity, Part I
An important part of my job is coming up with algorithms that can be used to solve difficult problems on a supercomputer. Leadership-class petascale supercomputers like the flagship machine here at the lab have state-of-the-art hardware, so the crunching of individual numbers goes quickly. But still, we have a limited allocation of time on the big machine, so we have to get the most bang for our buck (so to speak) by using the most efficient algorithms we can.
The application of the math is something in quantum chemistry. I'm not completely up on the application side, but it has to do with the electrons in atoms and small molecules. In order to solve these problems, we take a box in space containing the molecule, and compute something having to do with the change in kinetic or potential energy contained therein.
There are more interesting parts of the box in space, such as the part that contains the nucleus. And then there are boring parts, such as the part that is completely empty. We adaptively subdivide the space into smaller boxes, refining it more in the interesting parts and less in the boring parts. We end up with a tree structure that represents this adaptively refined box in space. This tree can have millions or even billions of nodes, depending on how much we refine the box, and how much interesting stuff is contained therein. Each node in the tree has a bunch of data associated with it, representing the wave functions of the electrons and the like. In order to figure out the energy change associated with the molecule, we have to perform a whole bunch of computations on the nodes in the tree. Since we have millions of nodes, this would take a very long time to do on even the fastest normal computer. In fact, it may not even be possible to do on a normal computer, because of all the memory requirements. Thus we use a supercomputer, farming out the work to a bunch of processors.
Since we have only a limited amount of time (both on the supercomputer and in life in general!), it would behoove us to distribute the work as evenly as possible over the processors in the supercomputer. It would also be a good idea to make sure that this distribution doesn't result in an excessive number of broken links in the tree, because broken links translate to communication between processors, and communication is expensive, orders of magnitude more expensive than computation. (When I say expensive, what I mean is that it takes a lot of time, time that we could be using for other things.)
Unfortunately, this load balancing problem is really, really hard. For all intents and purposes, it is impossible to solve for a tree of the size we're talking about. Nobody knows exactly how much time it would take to solve this problem for a tree with N nodes, but it is probably proportional to an exponential function of N. If it took a picosecond (10-12 seconds) to solve this problem for a tree where N=10, then for a tree with a million nodes (N=106), solving this problem would take about 1030,000 years. Just for reference, scientists calculate the age of the universe to be on the order of 1010 years.
So instead of solving it exactly, we use heuristics (strategies) to come up with nearly-optimal solutions. Yeah, it would be nice if we could compute using the best possible load configuration, but by the time we figured out just what that was, we could have computed the solution to the computational chemistry problem, zillions of times over.
I have developed a new heuristic for load balancing, which I can't share with you here because we're writing a paper on it. But suffice it to say, I can find a nearly-optimal load balance in an amount of time proportional to kN, where k is the depth of the tree.
In my next blog entry, I will explain why it is so hard to solve the load balancing problem.
The application of the math is something in quantum chemistry. I'm not completely up on the application side, but it has to do with the electrons in atoms and small molecules. In order to solve these problems, we take a box in space containing the molecule, and compute something having to do with the change in kinetic or potential energy contained therein.
There are more interesting parts of the box in space, such as the part that contains the nucleus. And then there are boring parts, such as the part that is completely empty. We adaptively subdivide the space into smaller boxes, refining it more in the interesting parts and less in the boring parts. We end up with a tree structure that represents this adaptively refined box in space. This tree can have millions or even billions of nodes, depending on how much we refine the box, and how much interesting stuff is contained therein. Each node in the tree has a bunch of data associated with it, representing the wave functions of the electrons and the like. In order to figure out the energy change associated with the molecule, we have to perform a whole bunch of computations on the nodes in the tree. Since we have millions of nodes, this would take a very long time to do on even the fastest normal computer. In fact, it may not even be possible to do on a normal computer, because of all the memory requirements. Thus we use a supercomputer, farming out the work to a bunch of processors.
Since we have only a limited amount of time (both on the supercomputer and in life in general!), it would behoove us to distribute the work as evenly as possible over the processors in the supercomputer. It would also be a good idea to make sure that this distribution doesn't result in an excessive number of broken links in the tree, because broken links translate to communication between processors, and communication is expensive, orders of magnitude more expensive than computation. (When I say expensive, what I mean is that it takes a lot of time, time that we could be using for other things.)
Unfortunately, this load balancing problem is really, really hard. For all intents and purposes, it is impossible to solve for a tree of the size we're talking about. Nobody knows exactly how much time it would take to solve this problem for a tree with N nodes, but it is probably proportional to an exponential function of N. If it took a picosecond (10-12 seconds) to solve this problem for a tree where N=10, then for a tree with a million nodes (N=106), solving this problem would take about 1030,000 years. Just for reference, scientists calculate the age of the universe to be on the order of 1010 years.
So instead of solving it exactly, we use heuristics (strategies) to come up with nearly-optimal solutions. Yeah, it would be nice if we could compute using the best possible load configuration, but by the time we figured out just what that was, we could have computed the solution to the computational chemistry problem, zillions of times over.
I have developed a new heuristic for load balancing, which I can't share with you here because we're writing a paper on it. But suffice it to say, I can find a nearly-optimal load balance in an amount of time proportional to kN, where k is the depth of the tree.
In my next blog entry, I will explain why it is so hard to solve the load balancing problem.
Sorry for the Drought
Sorry for the drought in posting... I've been rather busy. First I had to catch up on all the sleep I missed; then work got to be really busy what with catching up from being gone, doing a poster session, and planning a baby shower for one of my colleagues.
Plus I had a really great series of posts planned for you, my vast audience! They are fun and interesting, but require a lot of work to write. I will post the first one tonight. They have to do with... what else? MATH!!!! (and computation too)
Enjoy!
Plus I had a really great series of posts planned for you, my vast audience! They are fun and interesting, but require a lot of work to write. I will post the first one tonight. They have to do with... what else? MATH!!!! (and computation too)
Enjoy!
Sunday, March 18, 2007
Adventures in Airports
I had a direct flight to Washington, D.C., but I was not so lucky on the way home. My flight home connected through Charlotte, N.C.
As I said before, I was worried that my flight out of Washington might be canceled. But it was not. Instead it was just very late. We were supposed to leave at 5:15 p.m., but we ended up leaving about four hours late. Unfortunately, that meant that I missed my connecting flight, and the last flight home that night.
But I was not the only person stranded at the airport overnight. Everyone on my plane was stranded, including a family of five trying to get home to Houston, and a mother and son trying to get back to Indianapolis. I talked to the gate agent and she could guarantee me a seat on the first flight home on Monday morning. If I wanted to get home any earlier, I would have to fly stand-by.
I spent the night in the airport. I could have looked for a hotel room, but it would be at my own expense. I think that there were probably a couple hundred other people there.
At first I wasn't sure where I was going to stay in the airport. I found a fairly comfortable rocking chair, but airport security told me I had to move to terminal D if I was going to stay in the airport overnight. When I got there, I saw that they had a stack of foldable cots for us to take and spread out in the terminal. I took one and looked for the darkest place I could find. There was really no dark place, so I took off my shoes, stretched out on my cot, took off my glasses and put on my sunglasses to block out the light. I also put in my earphones and played soothing choral music on my iPod. The music blocked out the noise of my fellow travelers talking, tossing and turning, and snoring.
It wasn't the most comfortable place to sleep, but I got maybe two or three hours of sleep before I woke up for good at 5:30 a.m. I might have slept more but it was kind of chilly in the terminal. I was cold even though I was wearing jeans and a sweatshirt. I wrapped my torso in my fuzzy jacket, and I emptied my cloth carry-on bag and used it to keep my feet warm. But by 5:30, I had given up and I went in search of some breakfast.
I ate my overpriced yogurt parfait at the gate of the first flight home of the morning. Then I talked to the woman at the gate and found out that I was number two on the standby list. Some college boys sat across from me and I heard them talking about rowing. I asked them where they were going, and they said Knoxville, and then I asked if their final destination was Oak Ridge. Sure enough, they were going to rowing spring training in Oak Ridge. I asked them how they were getting to Oak Ridge, and they said they would take a cab. I offered to give them a ride, if we ended up on the same flight.
The ticketed passengers boarded first. When I heard them call my name for a seat, I felt as if I'd won the lottery. I told those boys that it was too bad that it appeared that they wouldn't make it on the flight. But after I got on, there were still a number of empty seats, and they ended up making the flight too.
Once we took off, I realized that it would be difficult to fit everyone's luggage in my car. Fortunately (?) that problem was solved by the fact that none of our checked baggage made it on the flight with us. So we spent about an hour reporting our lost baggage before we could leave.
The woman said that chances were good that our bags would arrive on the next flight from Charlotte. I gave her my address and phone number so that they could deliver my suitcase to me here. The college students accompanied me to my car, and I drove them to their hotel in Oak Ridge. It was no big deal because it was right on the way home. Also, the company kept me entertained and awake. They thanked me profusely for giving them a ride, and I wished them the best of luck in their spring training.
I got a call maybe an hour ago from the delivery guy, asking for directions, so I know that my bag is on its way. Now I'm just waiting for Jeff and Vinny to return from their trip to Kentucky. I've missed them a lot!
As I said before, I was worried that my flight out of Washington might be canceled. But it was not. Instead it was just very late. We were supposed to leave at 5:15 p.m., but we ended up leaving about four hours late. Unfortunately, that meant that I missed my connecting flight, and the last flight home that night.
But I was not the only person stranded at the airport overnight. Everyone on my plane was stranded, including a family of five trying to get home to Houston, and a mother and son trying to get back to Indianapolis. I talked to the gate agent and she could guarantee me a seat on the first flight home on Monday morning. If I wanted to get home any earlier, I would have to fly stand-by.
I spent the night in the airport. I could have looked for a hotel room, but it would be at my own expense. I think that there were probably a couple hundred other people there.
At first I wasn't sure where I was going to stay in the airport. I found a fairly comfortable rocking chair, but airport security told me I had to move to terminal D if I was going to stay in the airport overnight. When I got there, I saw that they had a stack of foldable cots for us to take and spread out in the terminal. I took one and looked for the darkest place I could find. There was really no dark place, so I took off my shoes, stretched out on my cot, took off my glasses and put on my sunglasses to block out the light. I also put in my earphones and played soothing choral music on my iPod. The music blocked out the noise of my fellow travelers talking, tossing and turning, and snoring.
It wasn't the most comfortable place to sleep, but I got maybe two or three hours of sleep before I woke up for good at 5:30 a.m. I might have slept more but it was kind of chilly in the terminal. I was cold even though I was wearing jeans and a sweatshirt. I wrapped my torso in my fuzzy jacket, and I emptied my cloth carry-on bag and used it to keep my feet warm. But by 5:30, I had given up and I went in search of some breakfast.
I ate my overpriced yogurt parfait at the gate of the first flight home of the morning. Then I talked to the woman at the gate and found out that I was number two on the standby list. Some college boys sat across from me and I heard them talking about rowing. I asked them where they were going, and they said Knoxville, and then I asked if their final destination was Oak Ridge. Sure enough, they were going to rowing spring training in Oak Ridge. I asked them how they were getting to Oak Ridge, and they said they would take a cab. I offered to give them a ride, if we ended up on the same flight.
The ticketed passengers boarded first. When I heard them call my name for a seat, I felt as if I'd won the lottery. I told those boys that it was too bad that it appeared that they wouldn't make it on the flight. But after I got on, there were still a number of empty seats, and they ended up making the flight too.
Once we took off, I realized that it would be difficult to fit everyone's luggage in my car. Fortunately (?) that problem was solved by the fact that none of our checked baggage made it on the flight with us. So we spent about an hour reporting our lost baggage before we could leave.
The woman said that chances were good that our bags would arrive on the next flight from Charlotte. I gave her my address and phone number so that they could deliver my suitcase to me here. The college students accompanied me to my car, and I drove them to their hotel in Oak Ridge. It was no big deal because it was right on the way home. Also, the company kept me entertained and awake. They thanked me profusely for giving them a ride, and I wished them the best of luck in their spring training.
I got a call maybe an hour ago from the delivery guy, asking for directions, so I know that my bag is on its way. Now I'm just waiting for Jeff and Vinny to return from their trip to Kentucky. I've missed them a lot!
Adventures in Government Work
On Thursday morning, I left for the nation's capital. As I indicated before, the NSF requested my presence and expertise to help them decide how to evaluate one of their programs. It was a beautiful day, in the 70's both here and there. But, I had read the weather report, so I packed some warmer clothes for Friday and Saturday, because it was supposed to get down below freezing.
On Thursday evening there was a dinner, at which we were all introduced and the next day's schedule was discussed. I was seated next to an NSF division director, and I had fun talking with her. She was really nice and I felt very encouraged to see a woman in this position of power. I asked her about her career path, and she explained how she had gotten where she is now. I liked her because she was so friendly, but also she was really interested to hear about my precious son, a surefire way into any mother's heart.
On Friday, we had a long day of meetings. I had discovered on Thursday that I was recommended to participate in this process by someone I knew as a graduate student, who now works for the NSF on this program. I was a participant in this program as a graduate student, which is how he got to know me. Other panel members were professional evaluators, educators, and professors. So I had a unique perspective that I believe helped to inform the program evaluation.
Friday night, I went out to dinner with my cousin Carrie, a resident of D.C. By that time, it was really cold and snow was falling. But I was really thrilled, because I have not gotten a chance to experience that kind of bone-chilling cold and snow since my last winter in Illinois. So while Carrie, like any sensible person, was decked out in a hat, scarf, and gloves, I was wearing a warm sweater and a fleece jacket but no hat, scarf, or gloves, and enjoying it greatly. Carrie had made us a reservation at a very nice Italian restaurant. I had pork with red cabbage and gnocchi. I don't know what they did to that red cabbage but it was really tasty. We rounded out the meal with some incredible bread pudding that melted in your mouth.
The next morning, I met Carrie at the Metro station near her apartment, and she showed me the city. She kindly allowed me to leave my bags at her place, and also to use the internet to try to check on my flight, which I thought might be canceled because of the weather. The D.C. area was not hard hit, but oftentimes flights originate further northeast and land there before continuing south. But I could find no information about my flight being canceled or anything, so we just went on as if it were still as originally scheduled.
We went to the Smithsonian American Art Museum and saw the Contemporary Folk Art exhibit, which was just fascinating. One exhibit, in particular, was absolutely incredible: James Hampton's The Throne of the Third Heaven of the Nations Millennium General Assembly was constructed over the course of fifteen years, made out of found objects and scrap, and he did it on evenings and weekends after work. It is amazing when viewed in person.
Then we had lunch at a restaurant that serves tapas. For those of you who are Philistines like me, tapas is a Spanish concept, where you eat many small dishes, kind of like appetizers but not quite. Anyhow, we ordered five of them between the two of us, and they were really good. There was spinach with raisins and bits of apple, kind of stir-fried, and that was tasty. There was a bread with special tomato sauce and special cheese, and that was good too. Then we also had rice and mushrooms in a wine sauce with cheese on top, and that was delicious. And we had some sort of stuffed red sweet peppers, which was surprisingly good. But the one I liked best was cubes of potatoes kind of fried crispy like hash browns, with a spicy tomato sauce on top. We finished out the meal with a chocolate-hazelnut torte.
After that it was time for me to go to the airport, so I got my stuff from Carrie's place and headed to the airport.
My trip home deserves an entry of its own.
On Thursday evening there was a dinner, at which we were all introduced and the next day's schedule was discussed. I was seated next to an NSF division director, and I had fun talking with her. She was really nice and I felt very encouraged to see a woman in this position of power. I asked her about her career path, and she explained how she had gotten where she is now. I liked her because she was so friendly, but also she was really interested to hear about my precious son, a surefire way into any mother's heart.
On Friday, we had a long day of meetings. I had discovered on Thursday that I was recommended to participate in this process by someone I knew as a graduate student, who now works for the NSF on this program. I was a participant in this program as a graduate student, which is how he got to know me. Other panel members were professional evaluators, educators, and professors. So I had a unique perspective that I believe helped to inform the program evaluation.
Friday night, I went out to dinner with my cousin Carrie, a resident of D.C. By that time, it was really cold and snow was falling. But I was really thrilled, because I have not gotten a chance to experience that kind of bone-chilling cold and snow since my last winter in Illinois. So while Carrie, like any sensible person, was decked out in a hat, scarf, and gloves, I was wearing a warm sweater and a fleece jacket but no hat, scarf, or gloves, and enjoying it greatly. Carrie had made us a reservation at a very nice Italian restaurant. I had pork with red cabbage and gnocchi. I don't know what they did to that red cabbage but it was really tasty. We rounded out the meal with some incredible bread pudding that melted in your mouth.
The next morning, I met Carrie at the Metro station near her apartment, and she showed me the city. She kindly allowed me to leave my bags at her place, and also to use the internet to try to check on my flight, which I thought might be canceled because of the weather. The D.C. area was not hard hit, but oftentimes flights originate further northeast and land there before continuing south. But I could find no information about my flight being canceled or anything, so we just went on as if it were still as originally scheduled.
We went to the Smithsonian American Art Museum and saw the Contemporary Folk Art exhibit, which was just fascinating. One exhibit, in particular, was absolutely incredible: James Hampton's The Throne of the Third Heaven of the Nations Millennium General Assembly was constructed over the course of fifteen years, made out of found objects and scrap, and he did it on evenings and weekends after work. It is amazing when viewed in person.
Then we had lunch at a restaurant that serves tapas. For those of you who are Philistines like me, tapas is a Spanish concept, where you eat many small dishes, kind of like appetizers but not quite. Anyhow, we ordered five of them between the two of us, and they were really good. There was spinach with raisins and bits of apple, kind of stir-fried, and that was tasty. There was a bread with special tomato sauce and special cheese, and that was good too. Then we also had rice and mushrooms in a wine sauce with cheese on top, and that was delicious. And we had some sort of stuffed red sweet peppers, which was surprisingly good. But the one I liked best was cubes of potatoes kind of fried crispy like hash browns, with a spicy tomato sauce on top. We finished out the meal with a chocolate-hazelnut torte.
After that it was time for me to go to the airport, so I got my stuff from Carrie's place and headed to the airport.
My trip home deserves an entry of its own.
Wednesday, March 14, 2007
I'm Off
(...my rocker. But you already knew that!)
A mathematician is always in demand. The NSF wishes to partake of my wisdom, so it's off to Arlington, Virginia with me. I'm leaving tomorrow morning, and I'll be back late Saturday night.
Thursday evening and all day Friday I'm spending in meetings; Friday night and Saturday morning I get to spend with my fearless cousin Carrie, whom, if I'm not mistaken, I have not seen since 2001. I'm definitely looking forward to seeing her, and I don't think the meetings should be so bad either.
I realize that Saturdays are quite productive blogging days for me, but I'm afraid that you, my brave fan base, will just have to do without me for a while. In the meantime, go read one of my sisters (Milkbreath and Me and Lines of Latitude), my fearless sister-in-law (Much Ado about Nothing), or any of the other blogs listed in the sidebar. They all receive the Rebecca Stamp of Approval.
I'll tell you all about my trip when I get back.
A mathematician is always in demand. The NSF wishes to partake of my wisdom, so it's off to Arlington, Virginia with me. I'm leaving tomorrow morning, and I'll be back late Saturday night.
Thursday evening and all day Friday I'm spending in meetings; Friday night and Saturday morning I get to spend with my fearless cousin Carrie, whom, if I'm not mistaken, I have not seen since 2001. I'm definitely looking forward to seeing her, and I don't think the meetings should be so bad either.
I realize that Saturdays are quite productive blogging days for me, but I'm afraid that you, my brave fan base, will just have to do without me for a while. In the meantime, go read one of my sisters (Milkbreath and Me and Lines of Latitude), my fearless sister-in-law (Much Ado about Nothing), or any of the other blogs listed in the sidebar. They all receive the Rebecca Stamp of Approval.
I'll tell you all about my trip when I get back.
Happy Pi Day!
Today is Pi day (3/14). Happy Pi Day, everyone!
Tuesday, March 13, 2007
Confidential to My Brother-in-Law Scott
It's crazy!
It's March Madness!!!!
It's March Madness!!!!
Sunday, March 11, 2007
Bad Intonation
I have perfect pitch, meaning that I can identify the pitch of any note I hear, and I can also sing any pitch that you ask me for. This comes in very handy if you're trying to tune a violin and you have no access to a reliable source of pitch, such as a tuning fork. But it's also a liability when I hear noise pollution music that's out of tune.
The biggest target of my ire is electronic toys for babies. We have this really cute gym for Vinny: it's visually stimulating, with a zoo theme and brightly colored zoo animals hanging down. But if you put pressure on a certain place on the floor of it, the dang-blasted thing also plays "music" -- a sound so vile, so out-of-tune, that it makes me want to dig my ears out of my head with a spoon. I always keep the switch at the "off" position, but the thing is haunted or something, because it still makes that horrible cacophony despite the fact that it's supposedly "off."
We have another gym for him, which is unfortunately not as visually interesting, but it doesn't play such loathsome music. Instead, it has a recording of some poor woman singing baby songs and giggling. It's revolting in a creepy way, and unlike this other gym, does not incite me to violence.
It's not just baby toys that are guilty of violating the rules of intonation, however. Even so-called recording artists have trouble keeping themselves on pitch. One of the biggest offenders: the Mamas and the Papas. Both of their otherwise very beautiful hit songs, Monday, Monday and California Dreamin', suffer badly from poor intonation. In both songs, the primary culprits are the backup singers, who are roughly a quarter tone flat. The jazzy flute is off in California Dreamin' too. These would be beautiful songs if they could all agree to the same key!
Another offender is Boy George. In Karma Chameleon, he is noticeably flat with respect to the backup band. You might say that the band is sharp, but I'm going with the band on this one because a) they are on standard pitch, and b) they are many and George is one.
Then, there's Bob Dylan. Bob Dylan is proof positive of the American Dream: if he could make it as a singer, then it goes to show you that anyone can. He doesn't even try to sing on pitch. Perhaps that's why I don't hate him as much as I hate Boy George and the Mamas and the Papas.
The thing that drives me crazy is that I have pretty good audio memory, and when one of these songs gets caught in my head, I get to experience the agony of hearing their contemptible strains over and over again.
Now you know why I have imposed a ban on children's toys that play music. It's for the sake of my sanity. I hate that off-key, electronic noise that spews forth. It's the ultimate form of torture for those of us with perfect pitch.
The biggest target of my ire is electronic toys for babies. We have this really cute gym for Vinny: it's visually stimulating, with a zoo theme and brightly colored zoo animals hanging down. But if you put pressure on a certain place on the floor of it, the dang-blasted thing also plays "music" -- a sound so vile, so out-of-tune, that it makes me want to dig my ears out of my head with a spoon. I always keep the switch at the "off" position, but the thing is haunted or something, because it still makes that horrible cacophony despite the fact that it's supposedly "off."
We have another gym for him, which is unfortunately not as visually interesting, but it doesn't play such loathsome music. Instead, it has a recording of some poor woman singing baby songs and giggling. It's revolting in a creepy way, and unlike this other gym, does not incite me to violence.
It's not just baby toys that are guilty of violating the rules of intonation, however. Even so-called recording artists have trouble keeping themselves on pitch. One of the biggest offenders: the Mamas and the Papas. Both of their otherwise very beautiful hit songs, Monday, Monday and California Dreamin', suffer badly from poor intonation. In both songs, the primary culprits are the backup singers, who are roughly a quarter tone flat. The jazzy flute is off in California Dreamin' too. These would be beautiful songs if they could all agree to the same key!
Another offender is Boy George. In Karma Chameleon, he is noticeably flat with respect to the backup band. You might say that the band is sharp, but I'm going with the band on this one because a) they are on standard pitch, and b) they are many and George is one.
Then, there's Bob Dylan. Bob Dylan is proof positive of the American Dream: if he could make it as a singer, then it goes to show you that anyone can. He doesn't even try to sing on pitch. Perhaps that's why I don't hate him as much as I hate Boy George and the Mamas and the Papas.
The thing that drives me crazy is that I have pretty good audio memory, and when one of these songs gets caught in my head, I get to experience the agony of hearing their contemptible strains over and over again.
Now you know why I have imposed a ban on children's toys that play music. It's for the sake of my sanity. I hate that off-key, electronic noise that spews forth. It's the ultimate form of torture for those of us with perfect pitch.
Friday, March 09, 2007
Ask an Applied Mathematician
Hello, and welcome to the first installment of "Ask an Applied Mathematician," your source for all things mathematical and at least somewhat applied.
Today's question was posed by the mathematician herself, seeing as she hadn't actually solicited (or therefore received) any questions from her excellent readership. The question is: You claim to be a mathematician, yet I see in your sidebar that you have a "shiny new Ph.D. in Computer Science." So which is it? Are you a computer scientist or a mathematician?
Well, me, what an excellent question! The short answer is "both."
Yes, my degree is in Computer Science, and I took a lot of computer science courses in graduate school – courses in stuff like operating systems, programming languages and compilers, and parallel computing. But I also took quite a few classes that were mathematical in nature – linear algebra, optimization, partial differential equations. And, I took some courses that were a little of both – computer science theory (discrete math, as applied to algorithms), numerical analysis (linear algebra, optimization, partial differential equations, and much more, focusing on how they are solved on a computer), parallel numerical algorithms (computer algorithms to solve math problems in a multiprocessor environment). Then I also took some courses in which numerical methods were applied to problems in engineering – finite elements (a mathematical method used by mechanical engineers to design the space station, for example), and groundwater modeling.
I consider myself a computational scientist. I am a generalist spanning three main fields: computer science, mathematics, and physics. I don't know any of these fields in great depth. My eyes glaze over when people begin to discuss the subtle nuances of the C++ language, or the latest hardware developments. I am totally lost when it comes to real analysis or number theory. And I don't even pretend to understand general relativity or string theory. But, if you're wanting to design a more efficient algorithm, or parallelize your existing algorithm, or optimize a function, then I am your woman. If you need to solve a physics problem (where by physics I mean a problem that can be boiled down to a physical process that can be modeled mathematically), talk to me about it.
I work every day with people who have degrees in mathematics, aerospace engineering, physics, and chemistry. We are all in the math department (with the exception of the chemist). So I guess we all count as mathematicians, even if at first glance it seems like we're not.
Got a question for the Applied Mathematician? Leave it in the comments or send it over e-mail!
Today's question was posed by the mathematician herself, seeing as she hadn't actually solicited (or therefore received) any questions from her excellent readership. The question is: You claim to be a mathematician, yet I see in your sidebar that you have a "shiny new Ph.D. in Computer Science." So which is it? Are you a computer scientist or a mathematician?
Well, me, what an excellent question! The short answer is "both."
Yes, my degree is in Computer Science, and I took a lot of computer science courses in graduate school – courses in stuff like operating systems, programming languages and compilers, and parallel computing. But I also took quite a few classes that were mathematical in nature – linear algebra, optimization, partial differential equations. And, I took some courses that were a little of both – computer science theory (discrete math, as applied to algorithms), numerical analysis (linear algebra, optimization, partial differential equations, and much more, focusing on how they are solved on a computer), parallel numerical algorithms (computer algorithms to solve math problems in a multiprocessor environment). Then I also took some courses in which numerical methods were applied to problems in engineering – finite elements (a mathematical method used by mechanical engineers to design the space station, for example), and groundwater modeling.
I consider myself a computational scientist. I am a generalist spanning three main fields: computer science, mathematics, and physics. I don't know any of these fields in great depth. My eyes glaze over when people begin to discuss the subtle nuances of the C++ language, or the latest hardware developments. I am totally lost when it comes to real analysis or number theory. And I don't even pretend to understand general relativity or string theory. But, if you're wanting to design a more efficient algorithm, or parallelize your existing algorithm, or optimize a function, then I am your woman. If you need to solve a physics problem (where by physics I mean a problem that can be boiled down to a physical process that can be modeled mathematically), talk to me about it.
I work every day with people who have degrees in mathematics, aerospace engineering, physics, and chemistry. We are all in the math department (with the exception of the chemist). So I guess we all count as mathematicians, even if at first glance it seems like we're not.
Got a question for the Applied Mathematician? Leave it in the comments or send it over e-mail!
Tuesday, March 06, 2007
Tales of Drool
I drool more than anyone that any of my dentists have worked on. My dentist in Illinois told me that my copious saliva production is probably why I have no cavities.
Lately, Vinny has been drooling like a champ. It's because he's teething again. His two front bottom teeth broke through just before he turned four months. Supposedly he's getting the matching pair of teeth on the top, but I don't see any evidence of those teeth. Instead, I think I can see evidence of the bottom teeth on either side of the ones he already has.
In addition to all the drool, he's also chewing on anything that gets near his mouth. That includes my hand, my arm, and even my elbow. It's weird when he chews on your arm because you can feel the drool flowing down your arm. And the chewing on the elbow feels just plain creepy. But it's okay. He just has to get those teeth to break through.
We give him Orajel when the pain gets really bad, and it usually seems to help. A friend of mine also recommended some teething tablets, which we've tried once.
Anyhow, drool is a wonderful thing. It's going to wash away those gums in his mouth and it washes away the bad germs in my mouth. I hope that Vinny will inherit my drooling capabilities.
Lately, Vinny has been drooling like a champ. It's because he's teething again. His two front bottom teeth broke through just before he turned four months. Supposedly he's getting the matching pair of teeth on the top, but I don't see any evidence of those teeth. Instead, I think I can see evidence of the bottom teeth on either side of the ones he already has.
In addition to all the drool, he's also chewing on anything that gets near his mouth. That includes my hand, my arm, and even my elbow. It's weird when he chews on your arm because you can feel the drool flowing down your arm. And the chewing on the elbow feels just plain creepy. But it's okay. He just has to get those teeth to break through.
We give him Orajel when the pain gets really bad, and it usually seems to help. A friend of mine also recommended some teething tablets, which we've tried once.
Anyhow, drool is a wonderful thing. It's going to wash away those gums in his mouth and it washes away the bad germs in my mouth. I hope that Vinny will inherit my drooling capabilities.
Saturday, March 03, 2007
Breaking News
This morning, Vinny rolled over, from his belly to his back, twice in a row!
It began when I sat him down and he fell forward onto his belly. He straightened out and rolled himself from his tummy to his side, and then from his side to his back. I was so excited for him that I praised him and congratulated him a lot.
But I thought it might be a fluke, so I placed him on his belly once again. He was content to be on his belly at first, but then he started getting cranky. So he tried to roll to the side, but he didn't quite push off hard enough, so he ended up back on his belly. Now he was really frustrated, but he tried again, and managed to get to his side and from there to his back. I was really excited for him again, and my enthusiasm was enough to improve his mood for a minute or two, but it was clear that the exertion had worn him out. So I picked him up and rocked him to sleep.
It began when I sat him down and he fell forward onto his belly. He straightened out and rolled himself from his tummy to his side, and then from his side to his back. I was so excited for him that I praised him and congratulated him a lot.
But I thought it might be a fluke, so I placed him on his belly once again. He was content to be on his belly at first, but then he started getting cranky. So he tried to roll to the side, but he didn't quite push off hard enough, so he ended up back on his belly. Now he was really frustrated, but he tried again, and managed to get to his side and from there to his back. I was really excited for him again, and my enthusiasm was enough to improve his mood for a minute or two, but it was clear that the exertion had worn him out. So I picked him up and rocked him to sleep.
Friday, March 02, 2007
Kinda Funny, Kinda Not
So today somebody found my blog by posing the following question to Google:
am i peeing or did my water break?
Hope ya figured that one out, hon.
am i peeing or did my water break?
Hope ya figured that one out, hon.
Thursday, March 01, 2007
Women in Science Carnival
My blogfriend Skookumchick had the idea of starting a Women in Science carnival. The first edition is up over at her place, Rants of a Feminist Engineer. There are a lot of interesting posts in the carnival (including one by yours truly!) and I encourage you all to go over there and check it out!
Subscribe to:
Posts (Atom)