Category Archives: Uncategorized

Classic “Aggravation” board game

The Memoir

When I was a kid, my family of 4 played a game called Aggravation.  According to the history recounted on Wikipedia, this was the original version and is no longer made.  I recall it was a piece of thick material similar to what I’d buy today as high-density fiberboard, with holes in it.  This was placed on top of the bottom of the box which was printed with colored patches that would show through the holes.  The box had short sides so the marbles could be placed within and the lid put on, for storage.  (Here is the same board from 1962, but the marbles were different and I think the lid was slightly different too.)  I think it was obtained in 1964 by my parents.

Photos from Julie of the LeolasAttic store on Etsy.

Vintage 1962 Aggravation board courtesy of LeolasAttic

Later, I got a 6-player version for a birthday present.  This had a folding board like many board games used, but was this single board only—there was no backing, so the holes went through and you could see the table through the holes.  Instead, colors were drawn around the holes to indicate different zones, and this gave it a completely different character.

Now I see the 6-player set for sale as “Rare! Original vintage deluxe party edition antique” circa 1972 for $130.  I believe I’m missing one of the colors of marbles and have substituted ordinary cats-eyes for that color.  Even so, I hope it turns up in my parents’ garage in the same good condition!

I must say, it lived up to its name.  Even rolling the die (by a child barely old enough to play) might fly across the table and knock into marbles in play, fall off the table, or (most irritating to some) be dropped in place so gently that it was not sufficiently randomized.

I don’t remember personally, but I’m told that my maternal grandfather called the center the “knockout hole” and also enjoyed the game with family, when it was first released.

This is another family game that I’d like to revive, particularly with my mother-in-law visiting.

It would be easy enough to make a copy of the classic version, with a couple pieces of hardboard.  But not easy enough, right this moment.  It would be even simpler to just print out the board on paper.  After all, the historical predecessor that this is a variation of was normally made out of cloth, and many other modern versions are flat boards that don’t need holes.  It’s just a matter of using more typical game tokens rather than marbles.  These can be borrowed from another game, or, to preserve more of the original flavor, I can use glass stones from a Pente set.  (I see my “Vintage Pente Game (1977)” being sold for $125 now!)

The Project

My idea is to make it modular.  Not only does this make each module fit easily one a standard-sized sheet of printer paper, but it can then be customized for the specific situation.  Any number of players can be used by using 3, 4, 5, 6 (or more?) modules, and there will be no dead zones or asymmetry from using a board that accommodates more players than are in play.  It can also arrange the different colors in any order, to suit seating preference.

So, each module is the section of track that us a “W” shape, with the center row being one player’s home.  The modules will overlap at the first/last spots which form the inside corners.  A spot for the knockout hole needs to be positioned in the center, separately.

The track module is 6 spots tall and 5 wide.  So, it should be easy to lay out on a grid using Adobe Illustrator.

New Variations

Now, Aggravation is a specific variation owned by Hasbro.  The larger family of Pachisi (पचीसी) games is ancient, though, and there are many westernized commercial versions of the idea.  So, if I come up with my own unique variation, I can publish it as my own game that needs a suitable name.

I think the modular nature is key to making a new variation.  Adding and removing modules can be a dynamic effect of game play, not just a configuration made before starting the game.  I found a similar game called “marbles (or pegs) and Jokers” that has a modular track.  But it doesn’t have the knock-out hole or the shortcut track of the 6-player board.  And that’s the best part!  So my variation will feature more self-intersecting tracks and shortcuts.

I have a general idea of adding/removing sections that provides for a loop at each corner, and then a flying bridge shortcut between these loops.  A player can spend chips (use poker chips) to perform the actions of adding, removing, or moving track modules.

Now here comes the clever part: whenever starting a new token out of the base, the player gets a chip.  This means that attacking a player — knocking out his tokens repeatedly so he has to start over — also makes him stronger in terms of these board-changing powers.

Another variation would be to use different types of dice, with 4, 8, 12, or 20 sides, as used in role-playing games.  Simply using a different die, perhaps scaling the board to match the range of motion from one throw, isn’t much of a change.  It would be interesting to use difference dice throughout the game, giving a speed boost for example by rolling a d12, or making it easier to snuggle up the tokens in the “home” by using a d4.  I don’t have any good ideas as-yet as to decide when to allow these choices.

…work in progress…

 Files

I’ll post PDF and Illustrator files when ready.

 

Yahtzee in Chinese — scorecard adaptor

My mother-in-law is visiting from China, and one of the games my family has always played while I was growing up is Yahtzee.  Although now I have official published score cards, I recall as a small child that we originally had home-made sheets produced by my Great Aunt Harriett.  They probably date from about the time the game was first introduced and popularized: I read in Wikipedia that innovations made by Yahtzee® over the traditional forms include the upper-section bonus.  The sheets I remember did have an upper-section bonus, but had the Big/Little straight idea as shown for Yacht, and I recall it had a Pair.  So, it had to have been influenced by the E.S.Lowe product some time after 1956, and I know my parents were playing it in the 1960’s.

I’ve played Yahtzee since I was old enough to understand it, sometimes in large family gatherings with parents and grandparents.  It was always a favorite of my Mom’s.

So naturally I thought it would be great to play during the holiday season with my mother-in-law’s visit.  The catch is that she doesn’t speak English.

Yahtzee-adaptor

I had an idea to make, not a translated score sheet to use in place of our English sheets, but an adaptor.  Originally, I thought to make a stiff card, printed on letter-size paper, that the sheet would attach to using paperclips.  So, it would contain translations for the score information (the first two columns of the printed sheet) that exactly line up with the rows of the score sheet, to the left of the sheet; and general notes and instructions that could point exactly to the rows it referred to.

So, the main design work involved exactly duplicating the grid spacing and position on the sheet.  That did not seem as simple as it should be in Illustrator, so I posted a question on StackExchange.  I quickly got comments that Illustrator doesn’t do that easily but InDesign has a table tool.

While playing (initially using translations on a separate sheet), I noticed that it was proving difficult to use columns beyond the first two games.  So I modified the design to take care of this also:  I reversed the attachment idea, and now have the card attached on top of the score sheet.  The new legend appears on the right, and can be shifted over for each new game.  This turned out to be a good design in general as now the explanation can continue to the right of the name, as wide as desired.

The question then became how to attach the papers when using the rightmost columns on the score sheet?  There is no paper beyond that to clip under the card.  I solved this by having the card both in front and behind the score sheet at the same time: a careful cutout and fold, and the letter-size page can provide a “tail” that supports the entire width of the score sheet in any position, from behind.

As planned, the adaptor is lined up such that the papers can be aligned on their vertical edges, and then two paperclips will hold them perfectly.  I do suggest using smaller clips that I have in the photos: less than one inch long and they’ll naturally cover only the title area above the part you write on.  The photo above shows the adaptor card positioned to the right of the Game 5 column (nearly at the right border), and the score sheet is clipped to the folded-back strip along the entire top edge and holds securely.  I printed on 32# HP Premium printer paper.

A final improvement concerned the scoring.  I noticed some confusion in remembering that some rows used “total of all dice” and others used just the matching dice.  So I color-coded the different scoring schemes in the “score description” column, as well as color matching the row where the upper total is copied down below.  And as long as I was shading things, I shaded the “name” column to indicate which rows represented turns to be scored, as opposed to totals and bonuses.

Here is the  PDF File of the Simplified Chinese Yahtzee Scorecard Adaptor.  Be sure to print as “actual size” and simply allow the margins to be cut off as needed.  This is free to use with attribution, under the CC-BY 4.0 license, so here is the InDesign file.  If you make one for a different language (just change the text in my layout) or other variations, let me know and I’ll link to it or include it here.

The “Blood Moon” is a dull ember only just visible in a hazy sky

My photos of the lunar eclipse did not turn out well when the moon was reaching totality: basically, underexposed because the moon was (nearly) gone! I recall from earlier shots that 1/125 second was about as slow as would work, due to motion blur from atmospheric effects and the moon’s motion. So I left it at 1/125 with maximum aperture (f/5.6), and increased the ISO as the moon disappeared.

However, I integrated 12 exposures taken as a burst, giving essentially 12/125 or about 0.1 second. Even though the exposures were made within the space of 2 seconds, each one showed the image in a different position, which illustrates why a longer exposure is blurry. By chopping it into separate short exposures I was able to manually align the separate images.

Lunar Eclipse “Lantern”

This simply adds the pixel sample values together. Dedicated software, such as used with astronomical instruments, would do better at removing the random noise as part of the process. I did noise reduction on the combined exposure.

Yes, the sky really is purple.  There was a visible haze here, and later clouds were visible over the moon.  I calibrated the white balance on an exposure of the normal full moon taken just after the eclipse ended, setting that to neutral grey.  The same profile was applied here, so the red tone is visible and accurate.

The last bit of direct light was just touching the limb, and that is pure white and overexposed in this image.  By eye, the area between the white tip and the red blush did appear more turquoise (blue/green), but that’s a perceptual illusion due to the fact that it’s simply less red than the neighboring region.  These colors did not show up in the true-color photo.  I suspect that the dark colors next to a full-sunlight bright spot affects the eye differently than the camera sensor.

Also notice how the upper-right blends into the same shade as the surrounding sky.  That’s how dark it appears: only just an ember separating itself from the empty haze.

The picture loses something in the JPEG compression, and the sRGB color space is disappointing after viewing it in Photoshop in the full gamut available to my monitor.  But you get the general idea.

Fixing a Windows 7 Laptop

A friend of the family had a laptop that would crash during the boot process.  It appears that a file loaded and run during booting must be corrupted.

The laptop came with Windows pre-installed.  He did not have a physical disc or a readable recovery disc.  The built-in Repair feature announces without elaboration that it can’t help.

This uses a SSD, which may have been “fixed” simply by scanning it, as bad sectors are mapped out automatically.  My own recovery discs refused to perform the repair.

So, with his permission, I re-install Windows after deleting the entire partition and resetting the partition table.  I have all the files copied off in case there is anything needed.

This ought to be simple, but being Windows, there is a synthetic problem: licensing.

First, I need his “Number”.  It’s not on a sticker on the bottom of the machine.  It’s from Dell, so I don’t know why it wasn’t noted there.  I peruse the old disk data to find the information, and most of what I find on obtaining this obfuscated information is reposted from the same original article that refers to a range of bytes in a registry key, but in my case those bytes are all zeros!

What I finally found that did work is this page.  I suppose the details have changed with SP1, or is different for a volume-installed original like Dell used.  In any case, I got a number that looks like the right kind of thing.

Second, I no longer keep a “Universal” MSDN subscription, and my own Windows is the Ultimate edition.  His was Professional.  All versions are on the DVD, if only you can select it!  Deleting one little text file turns it back into a Universal installer, prompting me which version to install.  But it’s on a DVD, and a boot DVD at that.  (Making a boot flash drive would be the same issue, with additional chance of incompatibility, plus I wanted to give him a copy to keep anyway.)

I found an excellent tutorial on re-burning the Windows install DVD so that it still boots and works correctly.  It used free software for Windows, which was OK.  I did the saving and poking around on the bad disk under Linux in case it was caused by viruses, but I switched to Windows for burning the DVD.  I was able to make a DVD with his personal info on the label, to keep for future use.

Now, the installer did not work!

After copying files and rebooting the first time, it complains that it can’t configure “this hardware”.  I look up the error text in Google and find some documentation about Intel drivers, or newer Advanced Format disks.  It’s addressed in SP1, but this installer is plain. Slipstreaming service packs onto a new install disc is something I have not done in a while…

Following up on some things, I discover the BIOS is set for “RAID mode”.  I was looking for a compatibility mode setting for Advanced Format drives or somesuch, and saw that it was simply set to a useless setting.  The laptop only has one disk, so what’s the purpose of RAID mode, in a pre-built product?  I suppose it may have features beyond the baseline ASPI mode other than doing RAID things?  Anyway, this might explain why the Repair feature would not work either.  It probably is like the (pre-SP1) installer, and doesn’t know about the drive with the controller set in this mode.

Eventually, it installs and proceeds.  However, it doesn’t like the product ID code I gave it.  I’m hoping it’s just not expecting that Dell manufactured version to be installed in the normal way (or not with the regular product disc), but with the number in hand he can “activate” Windows after explaining that he had to replace the hard drive.  If other credentials are needed, I have the old registry hives.  It continued just fine without an ID, and I expect it will work for some period of time like 30 days.

Next, the Dell laptop drivers!  What a pain.  Without even a network driver, I try to get stuff from another computer via their web site.  The first thing I downloaded was a big CAB file that (1) didn’t seem to extract sensibly, having multiple files of the same name and (2) no instructions.  I found the right network card driver as a EXE installer and copied it over on a flash drive.

So the rest should be automatic right?  Wrong.  Windows Update doesn’t know about the Dell drivers.  The Dell site complains that the web browser is both IE and old, and suggests Firefox, Chrome, or a newer version of IE.  Well, I want drivers first, so that’s too bad.  It does have a hardware detect, but the automatic download and install everything is broken.  For something like downloading essential drivers, they ought to have an austere web page that works without the latest browser technology to display pretty pop-up menus or try to sell additional products or entertain you with videos while you are busy being annoyed.

Now another big complaint:  they are pushing an “app” that keeps drivers up to date, but only after downloading and installing do you find out it’s a commercial program that costs money to make work.  To do what Windows Update is supposed to be doing.

The list of possibly useful files on Dell’s page, once given the model number, is awkward and brittle but does allow downloading things one by one.  I got the video driver installed before returning the laptop.

 

Most Boring Product Photos

Not to long ago I was photographing some product shots for family, to put on Amazon, so I had to shoot a nice shiny object with a pure white background.  Good product shots are not always easy, and some attention to detail is nice.

As it happens, the other day I came across the most boring product shots imaginable.  Ironically, both had to do with photography.  The first was linked from this post on using colored gels on the flash to match the existing lighting. This 20×24″ sheet of Full CTO can be cut up into pieces to fit over the flash head.  Click to open expanded view just struck me as funny.  Compare with this store, which uses the technical data sheet as a product image as well.

Then I came across this one, following link from the BFT by the same poster.  Now that’s hard to beat on pure useless minimalism while still being perfectly correct.  But let me know in the comments if you know otherwise.

 

A trip to the symphony

Dressed up to go out

Since Itzhak Perlman was going to be in town around the time of Tao’s birthday, I bought tickets for that show — six months ago when I saw the schedule.

Jaap van Zweden conducts
Itzhak Perlman, violin

RAVEL Daphnis et Chloé Suite No. 2
BRUCH Violin Concerto No. 1
Itzhak Perlman, violin
TCHAIKOVSKY Capriccio italien

It turns out this was the hottest ticket in town, being a special 25th anniversary gala at the Meyerson.  As well as starting a little late, people kept making speeches and I wondered how much music there would be given the times stated!  Among the “honorary organizers” were the mayor of Dallas and Ross Perot.

There was a special award for the architect I. M. Pei which was accepted by one of his sons.  Since it consisted of a “piece of original limestone” and a chunk of crystal, it looked rather heavy to the people who did handle it.  The 97 year old architect has won every award remotely connected to his field, so it makes sense that he would just send someone to pick it up [pun intended] for him.

Another speaker was Sarah, Duchess of York which surprised me.  I didn’t think that people outside of the area were involved, but apparently the building of the Meyerson was world-wide news and interested people in the Arts from all over.

As for the music, I needn’t have worried.  They simply played until they were done, never mind the printed times for the after party.  In fact, there were two encores: Perlman played the theme from Schindler’s List, and the orchestra continued with a waltz which name I did not catch.

As usual, the live performance at the Meyerson was richer and more powerful than any recording.  That’s the exact opposite of the situation with “pop” music in venues with acoustics so bad that it’s not about the sound at all but the experience of gathering.  I think I will find a good recording of Bruch, though, which is missing from my collection.

First attempt at Haskell

Haskell is what’s called a functional programming language.  Compared to BASIC, Pascal, batch-file, C, C++, Java, JavaScript, C♯, Ada, FORTRAN, assembly language, and any any other procedural (whether structured or OO) language, Haskell is very different.

And that’s really the point:  I don’t need to pick up on a slightly different syntax and somewhat different environment for representing the same kinds of constructs I’m used to.  There might be a small number of new and interesting concepts to inspire you, but for the most part they are “me too” on the current engineering paradigms and if anything leaning back to simplicity and leaving out features that could separate the top coders from the mundane (since the latter will need to maintain the code later).

But brushing up on techniques and ways of thinking that are truly different helps improve your engineering skills in general.

For example, a number of years ago I re-implemented a piece of code for laying out images on a page.  The old code had been extended, fixed, patched up, and “maintained” to the point where it was impossible to understand what was going on.  Cleaning it off would be a temporary measure if new requirements and changes continued as they always have.  So, I approached it using concepts from functional programming, even though written in (an early version) of C♯.  Defining the constraints and properties of the desired layout, rather than a spaghetti flowchart of patched procedures that manipulate all the state variables, means at the very least that it could be extended without breaking it.  The logic was unfathomable because of state dependance—what happened before affects what some block of code will do to it next.  So I had no state variables at all.  The layout rectangle of an item was expressed as a pure function, and the various bottom level functions could easily be reviewed for correctness.

Functional programming has been making inroads into mainstream programming, with otherwise procedural and OO languages acquiring features friendly to techniques gained from FP.

In particular, template metaprogramming in C++ (which I’ve seen described as “a slow descent into madness”) exists because the template system is a Turing-complete, albeit crudely primitive, functional programming language.

Meanwhile, I’ve read that monads have a strange property: anyone who comes to understand it loses any ability to explain it to others.  That reminds me of the science fiction novel Babel-17.  In fact as in the story, language influences thought and perception, which is what I was getting at earlier in this essay.  Being a writer on programming topics, I thought I’d take that as a challenge.  Maybe I’ll write a truly good explanation of monads; or maybe it will end up joining the hundreds of others that are are either indecipherable or lack proper deep meaning.  (See also monad tutorial fallacy)

chart

A lot of what I see of beginners’ Haskell examples remind me of Prolog.

Anyway, I just tried crafting my first Haskell snippet, other than things like 2+2 or copying lines from the book.  Project Euler, problem 1,

If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.

Find the sum of all the multiples of 3 or 5 below 1000.

Here is the session from the interactive environment:

Prelude> [x | x <- [1..10], x `mod` 3 == 0]
[3,6,9]
Prelude> [x | x <- [1..10], x `mod` 3 == 0 || x `mod` 5 == 0]
[3,5,6,9,10]
Prelude> sum [x | x <- [1..10], x `mod` 3 == 0 || x `mod` 5 == 0]
33
Prelude> sum [x | x <- [1..9], x `mod` 3 == 0 || x `mod` 5 == 0]
23
Prelude> sum [x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0]
233168
Prelude>  [x | x <- [1..999], x `mod` 3 == 0 || x `mod` 5 == 0]
[3,5,6,9,10,12,15,18,20,21,24,25,27,30,33,35,36,39,40,42,45,48,50,51,54,55,57,60,63,65,66,69,70,72,75,78,80,81,84,85,87,90,93,95,96,99,100,102,105,108,110,111,114,115,117,120,123,125,126,129,130,132,135,138,140,141,144,145,147,150,153,155,156,159,160,162,165,168,170,171,174,175,177,180,183,185,186,189,190,192,195,198,200,201,204,205,207,210,213,215,216,219,220,222,225,228,230,231,234,235,237,240,243,245,246,249,250,252,255,258,260,261,264,265,267,270,273,275,276,279,280,282,285,288,290,291,294,295,297,300,303,305,306,309,310,312,315,318,320,321,324,325,327,330,333,335,336,339,340,342,345,348,350,351,354,355,357,360,363,365,366,369,370,372,375,378,380,381,384,385,387,390,393,395,396,399,400,402,405,408,410,411,414,415,417,420,423,425,426,429,430,432,435,438,440,441,444,445,447,450,453,455,456,459,460,462,465,468,470,471,474,475,477,480,483,485,486,489,490,492,495,498,500,501,504,505,507,510,513,515,516,519,520,522,525,528,530,531,534,535,537,540,543,545,546,549,550,552,555,558,560,561,564,565,567,570,573,575,576,579,580,582,585,588,590,591,594,595,597,600,603,605,606,609,610,612,615,618,620,621,624,625,627,630,633,635,636,639,640,642,645,648,650,651,654,655,657,660,663,665,666,669,670,672,675,678,680,681,684,685,687,690,693,695,696,699,700,702,705,708,710,711,714,715,717,720,723,725,726,729,730,732,735,738,740,741,744,745,747,750,753,755,756,759,760,762,765,768,770,771,774,775,777,780,783,785,786,789,790,792,795,798,800,801,804,805,807,810,813,815,816,819,820,822,825,828,830,831,834,835,837,840,843,845,846,849,850,852,855,858,860,861,864,865,867,870,873,875,876,879,880,882,885,888,890,891,894,895,897,900,903,905,906,909,910,912,915,918,920,921,924,925,927,930,933,935,936,939,940,942,945,948,950,951,954,955,957,960,963,965,966,969,970,972,975,978,980,981,984,985,987,990,993,995,996,999]
Prelude>

After expressing the shorter example, first to get the list of terms to see if that part is right thus far, and then summing them, I changed the bound to the larger value and got an answer of 233168. Just to see what it was, I then backed off the final sum to get the list of terms.

So far, so good.