Retaking Our Bedroom — How the Cat Lost

In the beginning we had a cheap bed we had acquired while in college, and we slept in that bed for years until it fell apart.  Then we got a secondhand bed from my parents that they were not using (their guest room was reclaimed as an office).  That bed was smaller but we made do.

Then the baby came.

Dad and Mom slept on the floor in the nursery on an air mattress for a while, and then we moved our bed in there.  Once our daughter Lynnea was big enough to sleep in a real bed, she shared the bed with Mom and I took the air mattress.

Because one of us snored loudly and kept waking the other, I decided to sleep downstairs on the couch and have done so ever since.  My wife has back problems from trying to sleep in the little bed and for years we talked about getting a bedroom set.

Years past, our daughter started attending school, and her 7'th birthday is now just around the corner.  In the meantime, our bedroom became a storeroom that the family cat claimed for herself, in more ways than one.

Two weeks ago Pat and I mutually agreed that the time had come to get a new bedroom set and reclaim our room.  We went to a local furniture store and hemmed and hawed for a long time trying to pick out something sturdy, comfortable, but not too expensive.  Furniture is goddamned pricey, y'know?

Eventually we selected the pieces we wanted, and the combined total was (as far as I'm concerned) pretty darn hefty at $2700.  We scheduled delivery of the furniture and went home to tackle cleaning our bedroom.

It was a real battle.  Hundreds of pounds of accumulated junk went into the trash.  Much was boxed and carted up the narrow stairwell into our attic.  I spent hours up there rearranging the years of detritus that we've stowed away in the pinnacle of our home.  The cat was relocated into the hall.

Furniture that was hopelessly ruined by the cat (cat urine sucks) went out to the sidewalk to be taken away with the trash.  We posted a warning sign on the ruined furniture, but scavengers carted it away anyway.  All in all over a period of a few days they took a big upholstered chair that was matted with cat-hair and matching hassock (with matching mats of cat-hair), two broken vacuum cleaners, two old child car-seats covered with cat hair, two ripped and torn leather-upholstered chairs from our downstairs study.

The old hand-me-down dresser, vanity, and one endtable were cleaned and moved into my daughter's room to replace her baby furniture.  The other endtable?  Up into the attic.  I'm still marvelling at the amount of junk I've managed to improbably squeeze into that wedge-shaped space.

We inventoried our clothing and managed to fill five trashbags with serviceable clothing that went to goodwill.  It's funny how things just seem to accumulate.  One day you are looking at your natty t-shirts of yesteryear, and thinking “I need some new Tees.”  So out to the store you go and come back with 5 to 7 new t-shirts.  The old ones, however, don't ever seem to make it to goodwill or the trash and before you know it you have more T-shirts than you know what to do with.  But I digress.

All of this moving and shuffling was a matter of great concern for the cat, who plaintively complained whenever we were in sight and messing with “her stuff”.  Fortunately doping her up with catnip was an effective way to keep her occupied while we reclaimed our room.

The floor of the bedroom was a disaster.  It quickly became apparent that the cat had urinated in some spots and thrown up in others.  We had known that there were some spots the cat had sprayed, and we had attempted to clean the ones we could find, but prior to this point we hadn't been able to get rid of the smell, and we hadn't been able to find all the damage with the room piled high with boxes and stored items.

We opened the windows, and sprayed the foulest spots with a product called “OUT!”.  OUT! is a detergent combined with bacterial enzymes which are specifically formulated to break down cat urine, spray, vomit, and the like.  After that, we shut the door and waited.

This past Saturday afternoon, with the room finally cleared of all contents, we began the extremely unpleasant task of cleaning the floor.  It didn't smell nearly as bad, but it was still icky.  My wife Patty gave it a quick once-over with the vacuum, and then I got on my hands and knees and scrubbed each individual board of the hardwood pine floor with a stiff bristle brush and a PineSol solution.  I carefully wiped the sudsy crud off each individual board with paper towels.  The spaces between the boards were large (about 1 cm wide?) and I didn't want to mop the crud into the cracks where it would dry and possibly stink.

It took about 3 hours to thoroughly scrub and wipe the floor this way.  After it dried the smell was no longer detectable, but just in case, my wife sprayed the entire floor with OUT! and we reopened the windows and shut the door again.

The next day, the room smelled *good*.  The floor was free of stains, and even when I stuck my nose up close to one of the areas that had been the worst, I could smell nothing.  All the same, one more pass was made with the vacuum and we took the opportunity to get the dust off the baseboards and baseboard heater.  The cat was nonplussed and wanted to know when she was getting her room back.

I really have to recommend that OUT! stuff if you own a cat.  It's produced by “OUT! International, Inc.” which is based in Dallas TX.  Check their website at www.outinternational.com if you are interested.

During this process we tried to prepare our daughter for the prospect of sleeping on her own.  We'd been talking to her about that for several months now, and she was willing to try.  With her room outfitted with her new furniture and a pink Disney TV and DVD player she received for Christmas, 'Neya became excited about having her “big girl room” all to herself.  Pat and I suddenly found ourselves *alone* downstairs for stretches longer than 5 minutes!  Strange feeling.

Last nite, as Pat and Neya snuggled into bed, we reminded her that this would be the last night Mommy would be sleeping in her room.  'Neya was a little nervy about the prospect but I think she'll be fine.

Today the furniture arrived and was assembled in our room.  The deliverymen had accidentally lost the mounting brackets to attach the mirror to the vanity so we will need to run back to the store and get another set, but other than that, there were no hitches.

The deliverymen left and for the first time in almost 7 years, Pat and I made our bed.  Then we climbed onto the comfortable Sealy queen-sized mattress and relaxed for a bit, grinning goofily at each other.  It had been about 17 years since we slept on a cheap mattress on the floor of our little apartment, and this was our first new bed that was really our own.

Despite all the cost and all the work, I'm glad we did it–primarily for Patty's aching back, and my daughter's budding independence.  Besides, I'm not exactly the easiest person in the world to get along with, and my wife deserves to have a decent bed to sleep on.

In all likelihood I'll continue to sleep downstairs so that we will both be able to sleep through the night, but it is nice to have our bedroom back. 

Our cat surely thinks otherwise, for she is banished from the newly furnished room.  As she has become older and less reliable about using the litterbox, her domain has shrunk to a shadow of its former glory.  Now all she can claim is the upstairs bathroom, hall, stairway, and downstairs hall.

I have no doubt that she is plotting her revenge.


Electron Band Structure In Germanium, My Ass

You may get a chuckle out of this thesis, apparently written by a bitter Physics major.  Here's the abstract, just to give you a taste of it.

Abstract: The exponential dependence of resistivity on temperature in germanium is found to be a great big lie. My careful theoretical modeling and painstaking experimentation reveal 1) that my equipment is crap, as are all the available texts on the subject and 2) that this whole exercise was a complete waste of my time.

I think the best part is the graph showing datapoints scattered in no discernable pattern with the caption “Check this shit out”, along with the following annotation:

Banking on my hopes that whoever grades this will just look at the pictures, I drew an exponential through my noise. I believe the apparent legitimacy is enhanced by the fact that I used a complicated computer program to make the fit. I understand this is the same process by which the top quark was discovered.

Hee hee hee.


Planetary Dodge Ball — Missed me!

So perhaps you've read the news about this small asteroid that will be passing closer to the Earth than any other asteroid on record tonight at 5:08 PM EST.

Associated Press:
      100-Foot Asteroid to Make Closest Pass

NASA Near Earth Object Program:
     Recently Discovered Near-Earth Asteroid Makes Record-breaking Approach to Earth

Named “2004 FH” this rock was discovered on Monday by scientists involved with LINEAR (Lincoln Near Earth Asteroid Research).  It will pass within 26,500 miles of the Earth, only about a tenth as far from the planet as the Moon which orbits at a distance of approximately 221,000 miles.  2004 FH's trajectory will bend 15 degrees due to the influence of Earth's gravity as it passes by, and scientists will have a new object to track for a long time to come.

If you live in southern Europe, Asia, or most of the southern hemisphere you should be able to observe this flyby with a pair of binoculars.  No doubt scientists will jump at this opportunity to get a very close look at this asteroid.

At a size of 100 feet in diameter, if the thing actually hit the Earth's atmosphere there is a good chance that much of it would burn up before hitting the ground.

It's reassuring that we actually detected the object, but somewhat disconcerting that we detected it only a few days before the actual encounter.  Had the object been slightly larger and on a slightly different trajectory, this morning's news headlines might have looked a little different.  Which is not to belittle the accomplishments of LINEAR, this is a step in the right direction, and I'm sure over time the interval between detection and encounter will increase.

“Astronomers have not ruled out that the asteroid and our planet could meet again sometime in the future.”

Heh.  As one who has played with orbital simulation software, one thing that I noticed is that when objects have a near encounter, they tend to keep having near encounters.  Invariably, any solar system I designed in such simulators to have a near encounter, either the objects would ultimately collide or one would eventually crash into the star at the system's center.

So maybe we'll be hearing from 2004 FH again, or maybe not.  We've perturbed its orbit significantly… let's hope it doesn't hold a grudge.


Prime Trees — A Minor Obsession

Warning!  If you aren't into math or number theory, you may want to skip this particular article.  I'm no mathematician, but I am something of a hobbyist when it comes to math.  This article provides an overview of the approximately four months I have put into exploring a forest of prime trees.

What's a prime tree? Well, that requires a little background…

Much study has been devoted throughout history to the prime numbers, that is, those numbers evenly divisibly by only themselves and 1. These numbers begin with 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31… and extend onward to inifinity. People have examined the distribution of primes, the behaviors of primes, and have devoted massive quantities of computer time to find larger and larger primes. As of this writing the largest known prime has 6,320,430 digits.

People have researched clusters, patterns, related lists of primes. The most basic of these are arithmetic progressions of primes, i.e. for some starting prime P and some increment I: P+I is prime, P+I+I is prime, P+I+I+I is prime and so forth. Currently the longest known arithmetic progressions have a length of 22.

Another type of related prime list is called a Cunningham Chain. A Cunningham Chain is a list of primes such that the next prime is the result of some simple formula applied to the previous prime. For example 2, 5, 11, 23, 47 is such a chain of length 5, where each subsequent term is 2p+1 where p is the previous term. 5=2×2+1, 11=2×5+1, 23=2×11+1 etc. Cunningham Chains are associated specifically with the formula 2p+1 or 2p-1. For 2p-1 one of the longest starts at 69257563144280941 and has a length of 15. For 2p+1, one of the longest starts at 95405042230542329 and has a length of 14.

A prime tree is a name I came up with for a connected series of primes that are generated with a simple formula just as in a Cunningham Chain, but where the offset can be either added OR subtracted. So for example, the formula of interest might be 3p+-2 starting at 5. Note: the terminology I tend to use to describe these three values are as follows: 3 is the coefficient (c), 2 is the offset (d), and 5 is the root (r).

Letting p=5, we would apply both the 3p-2 and 3p+2 formulas, and keep track of the results. As it turns out both of the results (13 and 17) are prime, so we would add these to our tree as the “children” of 5 like so:

 [5]
   - = [13]
   + = [17]

The “- =” line shows the child when you multiply and deduct the offset, the “+ =” line shows the child when you multiply and add the offset. Then we would continue the process by letting p=13 and then 17, and adding the children of these numbers to the tree if the children are prime. 3×13-2 is 37 and 3×13+2 is 41. Both of these are prime. 3×17-2 is 49 which is not prime, but 3×17+2 is 53 which is prime:

 [5]
   - = [13]
   .   - = [37]
   .   + = [41]
   + = [17]
       + = [53]

Pushing onward we find that 37 has 2 prime children (109 and 113), 41 has none, and 53 has one (3×53-2 = 157):

 [5]
   - = [13]
   .   - = [37]
   .   .   - = [109]
   .   .   + = [113]
   .   + = [41]
   + = [17]
       + = [53]
           - = [157]

At this point the 109 and 157 branches die, no further primes are generated, but 3×113-2 yields 337 which is prime, so a new generation is added to the tree:

 [5]
   - = [13]
   .   - = [37]
   .   .   - = [109]
   .   .   + = [113]
   .   .       - = [337]
   .   + = [41]
   + = [17]
       + = [53]
           - = [157]

Continuing this process with 337 and pushing on until no more prime children are generated gives us the completed 3p+/-2 at 5 tree:

 [5]
   - = [13]
   .   - = [37]
   .   .   - = [109]
   .   .   + = [113]
   .   .       - = [337]
   .   .           - = [1009]
   .   .           + = [1013]
   .   .               - = [3037]
   .   .               .   - = [9109]
   .   .               .       + = [27329]
   .   .               + = [3041]
   .   + = [41]
   + = [17]
       + = [53]
           - = [157]

Note that at 16 primes, this tree contains more primes than the longest known Cunningham Chain. Of course this takes into account the width of the tree. The maximal depth of the tree is measured in generations, of which there are 9. The longest path through this tree is 5, 13, 37, 113, 337, 1013, 3037, 9109, 27329 which is 9 primes long. It stands to reason though that because each prime in the tree has 2 possible choices for continuing the analysis, that there must be prime trees out there that are deeper than the longest known Cunningham Chains, and perhaps even deeper than the largest arithmetic progression.

I am trying to find such trees.  My ultimate goal is to find one 23 generations deep, for such a tree would contain a connected series of primes longer than both the world-record Cunningham Chain and the world-record Arithmetic Progression.

Using a high-end computational tool called Maple I have spent perhaps the last four months on this project.  The problem space is infinite in three directions (coefficient, offset, and root prime) and therefore tracking down large trees has become increasingly difficult.

The essential problem is that as prime numbers get bigger, so do the spaces between them  There are far more prime numbers between 100 and 200, then there are between 100,000,100 and 100,000,200.  Since the growth of a tree constantly moves towards a more sparsely populated region of primes, your chances of continuing to produce primes on any particular branch drop and eventually the branch peters out.

One day while taking my typical shotgun approach to the search, I noticed something interesting that many very large trees had in common… they grew backward for awhile.   How do you make a tree grow backward?  Simple, just make the offset so large that after you multiply and subtract that offset, you get a child prime which is smaller than the root prime.  If you can get a tree to grow backward for a few generations, you are adding depth to the tree but moving toward a denser prime space!  I called trees that did this “inverted”, and it occurred to me that if I focussed specifically on these types of trees, I might find my record breakers faster.

I devised an algorithm to try, for any root prime, to build a tree with every prior prime as the first child, for a few different coefficients.  After running this algorithm for a few weeks and reaching primes up around 170,000 I had succeeded in finding a few trees 21 generations deep!  However the time required to run the computations was getting longer every day, and my little computer simply didn't have enough power to move through the problem space any faster.

So, during a weekend when I was sick with a stomach virus, I built a pair of applications designed to distribute the inverted prime tree search across multiple computers.  One application, called “the dispatcher” (left image), runs on a single machine.  The other application “the client” (right image) is installed on any machines that are going to assist in the search. The Dispatcher doles out small pieces of the problem to each client, and collates each client's results into a single datafile.  In this way, a much larger “distributed computer” can be put to work on the problem.  Collectively this pair of apps is called “ShareCal”.  Armed with ShareCal, I entreated people where I work to let me make use of their unused computer time.  I built the apps to run in the background, and share the CPU with any active applications.  These apps were slower than Maple, being written in VB, but if I could get enough clients running, them, I figured the collective computing power would process the problem space much faster than Maple.

That was about 3 weeks ago.  Right now I have 25 client computers working on the problem.  The combined processing power of all of these boxes is over 20 gHz.  That's pretty frickin' cool!

In three weeks time, we've gone from primes around 170,000 to primes around 966,000.  In the next few days, clients will begin working on primes over 1,000,000.  At that time, the distributed computer will have generated and examined approximately 13 BILLION trees.

The world record for a connected series of primes is not yet broken, but it has been tied!  At about 4 in the morning on the Sunday before last, a client running on a workstation owned by my colleague Dan Royalty discovered a prime tree with a depth of 22 generations.  Hopefully the D23 tree will be found before I get tired of working on the problem.

I have arbitrarily assigned trees into three different categories based on their depth and/or population (the number of primes in the tree).

  • Trees which have a depth less than 10 and a population less than 18 are “small” and therefore uninteresting.
  • Trees which have a depth of 10 to 15 or a population of 18 to 29 are “big”.  Big trees are fairly common.  With 25 clients, ShareCal identifies approximately 22,000 big trees in a 12-hour period.  I've found well over 300,000 big trees thus far.
  • Trees with a depth of 16 or higher, or a population of 30 or higher are called “monsters”.  To date, only 1,646 monsters have been found in over 200 trillion trees, so they are pretty rare.

Here's the current world-record prime tree for depth (22 generations):

2p+-569415 at 384187 [Depth: 22; Population: 29]:
[384187]
  - = [198959]
      + = [967333]
          - = [1365251]
          .   - = [2161087]
          .       - = [3752759]
          .           + = [8074933]
          .               + = [16719281]
          .                   - = [32869147]
          .                   + = [34007977]
          .                       - = [67446539]
          .                       .   - = [134323663]
          .                       .   .   - = [268077911]
          .                       .   .       - = [535586407]
          .                       .   .           + = [1071742229]
          .                       .   .               - = [2142915043]
          .                       .   .                   - = [4285260671]
          .                       .   .                       - = [8569951927]
          .                       .   .                           + = [17140473269]
          .                       .   .                               + = [34281515953]
          .                       .   .                                   - = [68562462491]
          .                       .   .                                       + = [137125494397]
          .                       .   .                                           + = [274251558209]
          .                       .   + = [135462493]
          .                       + = [68585369]
          .                           + = [137740153]
          + = [2504081]
              + = [5577577]
                  - = [10585739]

And here's the enormous world-record prime tree for population (71 primes):

2p+-15 at 13 [Depth: 15; Population: 71]:
[13]
  - = [11]
  .   - = [7]
  .   .   + = [29]
  .   .       - = [43]
  .   .       .   - = [71]
  .   .       .   .   - = [127]
  .   .       .   .   .   - = [239]
  .   .       .   .   .   .   - = [463]
  .   .       .   .   .   .       - = [911]
  .   .       .   .   .   .       + = [941]
  .   .       .   .   .   .           - = [1867]
  .   .       .   .   .   .               - = [3719]
  .   .       .   .   .   + = [269]
  .   .       .   .   .       - = [523]
  .   .       .   .   .           - = [1031]
  .   .       .   .   .           + = [1061]
  .   .       .   .   .               + = [2137]
  .   .       .   .   .                   - = [4259]
  .   .       .   .   .                   + = [4289]
  .   .       .   .   .                       - = [8563]
  .   .       .   .   + = [157]
  .   .       .   + = [101]
  .   .       + = [73]
  .   .           - = [131]
  .   .               + = [277]
  .   .                   + = [569]
  .   .                       - = [1123]
  .   .                       + = [1153]
  .   + = [37]
  .       - = [59]
  .       .   - = [103]
  .       .       - = [191]
  .       .           - = [367]
  .       .           .   - = [719]
  .       .           .       - = [1423]
  .       .           .       .   + = [2861]
  .       .           .       .       + = [5737]
  .       .           .       .           + = [11489]
  .       .           .       .               - = [22963]
  .       .           .       .               + = [22993]
  .       .           .       .                   - = [45971]
  .       .           .       .                       + = [91957]
  .       .           .       + = [1453]
  .       .           + = [397]
  .       .               + = [809]
  .       + = [89]
  .           - = [163]
  .           .   - = [311]
  .           .       - = [607]
  .           .           + = [1229]
  .           .               + = [2473]
  .           .                   - = [4931]
  .           + = [193]
  .               + = [401]
  .                   - = [787]
  .                       - = [1559]
  + = [41]
      - = [67]
      .   + = [149]
      .       - = [283]
      .       + = [313]
      .           + = [641]
      .               + = [1297]
      .                   - = [2579]
      .                   + = [2609]
      .                       + = [5233]
      + = [97]
          - = [179]
              + = [373]
                  + = [761]

So there you have it. How a person consumes a massive amount of computer time for a useless endeavor and convinces over 20 other people to help.  But I guess as long as it is fun to do, it isn't a waste.  It wouldn't be possible to have gotten so far so fast without the IT department at Foliage Software Systems permitting me to run this experiment on their hardware.  I'd like to offer my thanks to them and everyone else who has helped me on this problem.

Wish me luck!


EDIT: Originally, the number of trees tested was erroneously reported at 242 trillion instead of 13 billion.  For reasons that will likely not be interesting, the number of trees tested to reach the N'th prime is the (N-1)'th triangular number.  I was mistakenly triangulating twice, i.e. if the (N-1)'th triangular number is T, I was computing the T'th triangular number.