Marlins Gottahack 1998 Nov 30 PREV HOME NEXT



Spent the last week in Miami just before Thanksgiving visiting the Warner Brothers music printing office/warehouse. It was pretty neat. You never seen such huge piles of music books. They use a Heidelberg press for their four color covers and some big huge sucker that slams out and folds up about 16 pages at a pop. They got gluing machines and trimmers an all kind o fancy stuff down at the thing there.

Looking at the huge warehouse of finished cases of books and the folk running around doing order fulfillment got me to thinking about the automated Epsom printer factory that I saw in Japan many years ago. The Epsom factory was full of industrial robots that assembled the printers and had about 2 people on the line that did the two jobs that were too hard for the machines. As I recall one of the too hard jobs involved wrapping an internal cable once around a supporting post and plugging it into a socket. Anyway, I talked with the manager about robotizing the factory and was told that he had looked into it. The problem was that it would cost about a million to convert, would do nothing to increase revenue, and would take years to pay off.

Seems to me that the internet is going to encourage more and more mail order business and this in turn should encourage someone to work on a more generic warehousing solution. I imagine that there would be some economies of scale for someone to build the BIG robot controlled warehouse that takes raw goods in bins in one door, and stuffs miscellaneous collections of them into boxes for shipping to customers out the back door. This outfit would in turn simply provide generic mail order support for anyone that makes non-perishable packaged goods. Perhaps that is the direction that Amazon is heading.

In any case, the trip was informative and helps us understand what Warner us up to and why they are working with us and what we can be doing to get the most out of the Sunhawk/Warner relationship. Of course, afterwards we came home and chowed down a lot o turkey. I assume that most of you all did the same.

Puzzle #3


This is my all time favorite out of years of collecting these things.

Bob thinks up two numbers that each have at least 2 digits (that means that the numbers are both >= 10). Bob tells Peter the Product of the two numbers but does not tell him the two numbers. (note that Peter, and Product both start with the letter "P". This is the sort of detail that separates the really great puzzles from the mundane) Similarly, Bob tells Sally the Sum of the two numbers, but not the two numbers. The following conversation ensues:

Sally: Bob told me the sum but I dont know what the two numbers are.

Peter: He told me the product but I also dont know what the two numbers are.

Sally: Oh, really, you dont know the two numbers? In that case I now know the two numbers.

Peter: Oh, if that is true, then I also know what the two numbers are.

What are the two numbers?

The thing that I find entertaining about this puzzle is that you, the reader, are given almost no information. You are not told the sum, the product, or the two numbers, yet there is still sufficient info to solve the problem.



Have you ever walked up to a glass door and found the word "lluq" printed on it? How long do you stare at that word pulling or pushing on the door trying to get in or out before you realize that it is mirrored because it was written on the other side of the glass and is really the word "pull". You then pull the door and even before the muscles in your arm have begun the contraction your brain racing ahead tells you, "No, you are supposed to pull from the other side so that means you have to push from this side." to late, you are already pulling the door.

This is a frustration and a total waste of time. Hey, I know that this is not a major crisis, ozone hole, holy war, collapsing economy, social fabric being ripped apart kind of thing. Sometimes it is easier to fix the simple things before you get around to the bigger ones. Its just a reflex. You see a bug in the code, you rip it out, even if you were going in after a bigger one.

The solution is as obvious as the problem once that you recognize that it is a problem. Our alphabet contains many bilaterally symmetric letters and also mirror pairs that can be read right through the glass. If the word for push was something like, "boup" and the word for pull was "quod" the word would work from either direction. Now Im not saying that those are the best words that we could be using, I just use that as an example.

Finally we come to the audience participation part where you help decide the future of the English language. Its our language after all. Has a very efficient if somewhat anarchic voting system with no electoral college scata in the way. You just use any damn word you want any way you want and if its cool, if it is copacetic with other folks - I mean, if it grabs their fancy, rings their chimes or is in some way a rad gnarly sorta thang that people start using - then it is voted into the language. Its that simple. You dont have to write your congressman. You dont need to get permission from your mom. You dont have to set your clock an hour ahead. You just start quoding the doors instead of pulling them.

You dont even have to go out with your spraycans and start screwing around with other peoples glass houses, just quod your wagon to the store, quod items off the shelves, boup your money across the counter and go home. JUST DO IT!

Dont get me wrong, I dont mean to say that we will face no opposition. Anytime you try to start using new words the thought police are hanging around nearby trying to eliminate perfectly fucking good words that dont match with the way they want to use them. They will explain to you that what the word you are using actually connotes is ... and go off into some paranoid fancy that if you refer to certain bodily parts or functions or use gendered pronouns you must be some kind of stupid shit for brains. Just smile, thank them for their kind word, and boup past them.

Symmetry Groups Points, Strips, & Wallpaper


A few years back I hacked out a "doodle" program that lets you choose a symmetry group and then when you scribble the machine would keep your drawing in that group. I only implemented the point groups and the strip groups and did not get around to the wallpaper groups. As is usually the case, I started with the simple ones and by the time I got to doing the wallpaper group realized that I had done the whole thing backwards and should start over. I have discovered over the years that while it is sometimes difficult to rip up and throw away code that you have just written it is trivial to just wait a few years and lose it to the ravages of office moves and upgrades to the compiler. Thus now that that code is lost I am starting in on this problem again.

I figured that I can use this toy problem to introduce myself to writing JAVA. If I am still capable of learning, I will eventually post this doodle program where you all can play with it, but I thought Id preview some of it here in outline for those of you that prefer to hack these things up for yourselves.

The doodle program is surprisingly addictive. You put in random scribbles and it flips and rotates the mess to give you something VERY symmetric (I mean, duh, thats why they call them symmetry groups) You can draw like M. C. Escher with out doing any work. (humm sounds like unsupportable marketing hype to me) If I could figure out how to capture screen images I could show you hundreds of examples.

I started out writing this up by just leaping right into the code. Then I got to thinking that not all of you are mathematicians and might need an introduction to the symmetry groups before I pound into the code. As usual, what started out as a quickie intro to symmetry groups turned into a long unintelligible math ramble. So it goes. Ive decided to go with the math lecture first and save the code for a future date.

The symmetry groups are built up out of a handful of elementary symmetries, Translation, Rotation, Mirror, and Glide. A picture has one or more of these symmetries if you can apply the transformation to the picture and end up with exactly the same picture. Thus a picture has a mirror symmetry if there is an axis where you can flip the picture over along that axis and the resultant picture is an exact duplicate of the original. The letter "M" for example has a vertical mirror axis right down the middle. "S" has a "2 fold" or 180 degree rotational symmetry about the central point. "+" has a 4-fold rotational symmetry.

Translation is simple but leads us immediately into infinite pictures. Why, because if the picture had a boundary, when you pick it up and slide it over you would be moving the boundary but by definition you must get the same picture from applying the transformation. So there is no boundary. Basically the point symmetries are finite. They have no translations and consist only of rotations and possibly mirrors. If you have a single Translation you are in the strip group, where you MUST be infinite in the direction of the translation but you COULD be finite perpendicular to the translation. If you have 2 Translations, you are in a wallpaper group where you fill the plane. (If you have 3 translations, then you are out in space in one of the crystallography groups which we are not going to get into here)

The only elementary transformation that might not be immediately familiar is the Glide. The Glide is simply a combination of a mirror and a translation in the direction of the mirror. The easiest way to show it is by example:



This figure (which should be infinite because it has a translation) has a horizontal glide plane between the lines. You first perform a mirror about that line which turns the Ms into Ws but the simple mirror does not get them lined up correctly. Then you translate the mirror image horizontally to line everything up. That single operation, Mirror combined with translation along the axis of the mirror is a Glide.

The symmetry groups are made up of combinations of those 4 simple operations. There are not very many symmetry groups. There are only two infinite families of point symmetries, 7 strip symmetries and 17 wallpaper symmetries. (A mere 2 countable infinities plus 24. Heck, were not even close to the Mahlo compact cardinalities!)

I am not going to list them all here (well, actually I am, but I did not know that when I started) but I will describe a few to give you the idea of what they look like.

You got exactly 2 infinite families of point symmetries. They are the simple n-fold rotations R(n) about a single point. The other is the dihedral family D(n) which looks just like R(n) except that it has n mirror planes that all run through the center of the rotation. (The n mirror planes are of course equally spaced looking like the spokes of a bicycle wheel)

The seven strip guys look something like this: they all have a single translation vector, which I will think of as being horizontal. My example with the Ms and Ws above is a strip with a horizontal glide down the middle of the strip. (Note the difference between the glide, which mirrors an M into a W and slides it into place, and the translation, which takes an M and translates it horizontally into then next M.) If the Ws had been exactly under the Ms you would have a group with a single Horizontal mirror instead of a single Horizontal glide. (If you wanted to get really techy you would eliminate all references to mirrors and treat them as merely a special case of a glide that just happens to have a translation component of 0 but fuck that. Mirrors are easier to think about and easier to talk about. They stay!)

The fact is, the Ms and Ws exhibit other symmetries You can drop in a Vertical Mirror plane down the middle of every single M or every single W. That mirror reflects the entire strip into a copy of itself. Thus you can also have an infinite sequence of vertical mirrors. The other symmetry is a point of 2 fold rotation at the center of the imaginary line that joins the leg of the W to the nearest tip on an M. If you rotate the entire strip 180 degrees about that point, the M rotates into the W and vice versa. All the strip groups are combinations of these features.

The complete list of the strips along with their ancient names is:

P111 the strip group with only a single translation

P1A1 the strip group with a single horizontal glide

P1M1 the strip group with a single horizontal mirror

PM11 the strip group with a sequence of Vertical mirrors.

P112 the strip group with a sequence of 2 fold rotations

PMA2 the strip group with a horizontal glide and an alternating sequence of vertical mirrors and 2folds

PMM2 the strip group with a horizontal mirror, a sequence of vertical mirrors, and 2folds located at the mirror intersections.

Just for the record, the Ms and Ws from above is actually an example of the PMA2 group.

Ah what the heck, now that Ive come this far I might as well tell you the names of the wallpaper groups as well. They all have the two translations, I will not list all of the symmetries for each group, only the distinguishing ones and I will sort them into little clusters based on their most complicated rotational symmetry.

--Groups with no rotations--

P1 two translations

PG - a sequence of vertical glides

PM - a sequence of vertical mirrors

CM an alternating sequence of vertical mirrors and vertical glides

--Groups with 2 fold rotations--

P2 a lattice of 2 fold rotations

PGG a lattice of Horizontal and Vertical Glides (the 2folds are forced at the centers of the lattice rects)

PMM a lattice of Horizontal and Vertical Mirrors (2folds forced at mirror intersections)

PMG Horizontal Mirrors with Vertical Glides

CMM alternating Mirrors and Glides in both the Vertical and the Horizontal directions.

--Groups with 3 folds--

P3 lattice of 3 folds

P3M1 Mirrors laid out in grid of equilateral triangles (3 folds forced at 3way mirror intersections)

P31M Same as P3M1 but has extra 3 folds not forced by the mirrors located in the centers of the equilateral triangles bounded by the mirrors.

Note both P3M1 and P31M also force a grid of glide planes but Im not saying where they are, so there.

--Groups with 4 folds--

P4 square lattice of 4 folds (forces 2 folds in centers of squares)

P4G Just like PGG except the intersections of the Glides are 4 fold rotations. Well not just like, because as soon as you add the 4 folds it forces a bunch of other glide planes running at 45 degree angles, which forces more 2 folds. Im sure you get the picture.

P4M PMM with 4 folds located at the mirror intersections, which forces.

--Groups with 6 folds--

P6 Triangular lattice of 6 folds which forces a bunch of 3folds and 2 folds

P6M same as P6 except you run mirror planes through all the 6folds which forces you know, stuff.

TADA! Thats all.

If any of you are still awake after all of that, I applaud you. It helps me to write this all out before I start hacking on the code.

As I said, code next week. It may sound complicated, but that is just the math talking. The code is really very simple, like 20 lines (with several hundreds of lines of initialization code, and thousands of lines of library routines, and millions of lines of operating system code of course)