Naomi is … Clara!

We are thrilled that Naomi has been selected as Clara in this year’s performance of “The Nutcracker” by Gate City Ballet.

A black, female ballerina holds an accurately-sized Mouse King in her hand.
(Our friend Ashish Joshi created this doodle about 4 years ago.)

Three performances will be held:

  • Saturday, December 16, 1:00 pm
  • Saturday, December 16, 5:00 pm
  • Sunday, December 17, 1:00 pm

Tickets are available from the Stockbridge Theatre online.

Nutcracker Poster 2017

Nutcracker 2017
Naomi Wilcox is Clara in Gate City Ballet's 2017 production of The Nutcracker. December 16 and 17 at Stockbridge Theatre in Derry, N.H. Tickets are available at https://stockbridgetheatre.com/.
« 2 of 58 »

Mom’s Official (Boring) Obituary

(Read the better one, here: “90 Years in 900-ish Words“)

Rachel "Addie" Wilcox, September 5, 1926 to July 26, 2017
Rachel “Addie” Wilcox, September 5, 1926 to July 26, 2017
Wilcox, Rachel A. 90 of Beverly Hills, Fl. entered into rest on July 26, 2017. Rachel was born on September 5, 1926 in New Bedford, Ma the daughter of Joseph Sampson and Rachel Chace Sampson.

She married Paul John Wilcox on April 1, 1945. In addition to raising their own children, she fostered numerous infants. They moved to Beverly Hills, Fl. in 1986. They spent the first years of their retirement helping build Heritage Baptist Church. Paul Wilcox died in December 2003. In
June of 2007, she married George Fortini, her next door neighbor and they had four and a half wonderful years together.

Rachel leaves behind her loving family 4 daughters Frances and her husband Chet Matheson of Waxhaw, NC, Cynthia Roberts of Huntington, MA, Joyce Thorne of Bridgewater, MA and Martha and her husband Richard Gracia of Raynham, MA, 3 sons Douglas Wilcox and his wife Sarah of Nashua, NH, Paul Wilcox of Homosassa and Aaron Wilcox of Inverness, 13 grandchildren and 9 great grandchildren. She was a light of Christian faith shining in a dark world.

Friends are asked to visit at the Wilder Funeral Home 4890 South Suncoast Blvd, Homosassa, Fl. 34446 on Saturday July 29, 2017 from 12:00 to 1:00 PM. A celebration of life service will be held at 1:00 PM at the funeral home. Interment will be at Fountains Memorial Gardens, Homosassa.
In lieu of flowers memorial donations may be made to Hospice of Citrus and the Nature Coast P.O. Box 641270 Beverly Hills, Fl. 34464 or Cornerstone Baptist Church, Hills Campus 2 Civic Circle, Beverly Hills, Fl. 34465 or Precious Paws Rescue, Inc. 7358 S. Florida Ave, Floral City, Fl. 34436.

Arrangements are under the direction of Wilder Funeral Home, Homosassa, Fl.

Published in Citrus County Chronicle on July 28, 2017.

90 Years in 900-ish Words

This is the summary of my mother’s life that I presented at her funeral.

(Okay, 1,027 words …)

I want to tell you a little bit about our mother.

Our mom, Rachel Adeline Sampson Wilcox Fortini (not her real name, which was Rachel Adeline Wilcox pretty much forever) was born a long time ago. She saw more than a few things in her life: The Great Hurricane of 1938, World War II, the invention and use of the atom bomb, jet travel, the Civil Rights movement, the moon landings (indeed, the entire space program), and the Internet. It won’t be easy to summarize her life in a few words, but there are some themes that stand out.

Mom grew up on a small farm in Freetown, Massachusetts, purchased by her father after a whaling voyage out of New Bedford on the bark Sunbeam. She moved to a tiny house on the same property after she got married, a house that would rapidly become far too small.

Mom's High School Graduation Photo
Mom’s High School Graduation Photo

There are those who merely repeat the errors of their parents. Mom was the opposite. She had a strict policy of laissez faire for her adult children. If we wanted advice, almost always, we would need to ask for it. Cutting the umbilical was never a problem. In fact, my parents moved to Florida the same week I left for college, and they never gave me their new address. (I’m sure it was accidental.)

Mom seemed eternally young. She survived two husbands: My father, Paul Wilcox, and George Fortini, whom Mom married when she merely 80 years old. (This never fails to evoke a huge smile when I tell people.) My children, until a few weeks ago when it stopped being funny, insisted that Grandma would outlive us all. And, she will, having preceded us to Eternal Life.

I often think of Mom’s incredible practicality. In a time when women didn’t have bank accounts, it was my mother who always managed our finances, because she was a trained bookkeeper, and Dad wasn’t very good at it. She shoveled snow, painted the house, fixed things.

She was willing to defy social conventions in other ways: I am, like Paul John and Aaron, an adoptee. I never remember learning I was adopted; I do remember discussing it with Mom when I was young, but clearly learned about my own adoption at a very young age. She even made it clear that she would support me or help me in any way, if I wanted to contact my biological parents.

Mom and Dad, long ago.
Mom and Dad, long ago.

In the early days of the Cold War, my sisters remember Mom’s reaction to heading down into the basement in Easton, Massachusetts, evaluating it as a fallout shelter. Mom declared, “This isn’t going to protect us at all.” Scary, perhaps, but correct.

More importantly, we never learned prejudice in any form. Even in New England, this was unusual.

Although Fran often gets the credit, Cindy was the one to first encounter saving faith in Jesus Christ. Fran did follow soon thereafter, but it was Cindy who was first praying for her family. (Cindy suggests that following Christ was an act of rebellion.)

Mom embraced Christ fully. Cindy remembers an immediate reduction in worry and even a slight reduction in the fanaticism of cleaning. (Mom used to lock the girls outside so she could clean.) That faith was evident her entire life. I got chewed out only a few weeks ago for taking too long to return one evening, because she wanted someone to pray with her, although she did nearly all the praying.

Indeed, she was, “a light of Christian faith, shining in a dark world.”

But our mother was, most of all, a Mom. All caps. One hundred percent. She elevated what is a noble duty and profession to a veritable ministry.

Mom had more than few children. Four inferior biological ones, all girls. Fran, Cindy, Joyce, Martha. (Or, as Mom spoke, Mah-thuh.) When those started to become less fun and move away, she began the 15-year process of adopting three boys. Myself, Paul John, the brother I prayed for for years, and finally, Aaron.

Mom was an excellent parent. Strict but never, ever unfair. (Except when I, at a young age, called her a liar because she, for the first time ever, accused me of something I hadn’t done.) My perspective may be a little skewed, because, as my sisters point out, I had older parents, who had been well broken in by the time I came around. Judging from some stories I’ve heard this week, this is almost certainly an accurate interpretation.

When, at 2 or 3, I needed to be instructed in the art of, “Don’t get too close to the street,” Mom painted a line on a rock at the edge of the driveway, and said, “Don’t go past that line.” When I broke a treasured piggy bank at age 4, she explained that she would fix it this time, but if I left it on the edge of the bed again, and it broke, it would be destined for the rubbish bin. I did, and it did. I was sad, but she was true to her word, and eminently just.

Mom and Dad, before They Improved the Family with Adoption
Mom and Dad, before They Improved the Family with Adoption

She would often explain how things worked. I remember seeing the Apollo 15 or 16 launch on TV, and having her explain that the Saturn V was bringing people to the moon.

And, Mom loved babies. She did foster care for, we think, 57 of them. She retired from foster care, later in her life, at least four times. My friend Tim called them “trade-ins.” One time, while returning a trade-in back to Boston, she was in tears. A young Paul John patted her on the arm and said, “Don’t worry, we’ll get you another one.”

Mom was very humble about this, indeed about everything. “I didn’t want it to seem like I was trying to do some big thing … I didn’t want the Lord to think that I was bragging.” Even days before her death, she was fretful that she hadn’t done a good enough job. I suppose all mothers suffer this unending guilt, and she had so many children who called her Mother.

We were so very blessed to be entrusted to her.

(September 5, 1926 to July 26, 2017)

Living to Die

It is the 5th of July. Despite only a 3-hour flight, I’ve devoted most of the day to travel. Finally, after almost 12 hours of driving/waiting/flying/waiting/driving, I make it to Hospice House. Surprisingly, this is my first time visiting a hospice location. Although hospice was very helpful with my father’s last weeks, that situation was very different.

He will wipe away every tear from their eyes, and death shall be no more, neither shall there be mourning, nor crying, nor pain anymore, for the former things have passed away. (Revelation 21:4, ESV)

Main sign for Hospice House

The lobby is beautiful. With fireplaces and chairs, it reminds me more of a relaxed hotel than a hospital setting. There is a tiny chapel off to one side, and a beautiful stone list of donors, decorated splendidly with a carving of a great blue heron in flight. But, I barely notice it.

Hospice of Citrus County Donors Mural

I make my way, of course, to the wrong end of the hall. It is relatively late, although not at all dark, yet, and very quiet. When I get to the other end, I quietly inquire for my mother’s room number, describing the various ways she might be named. Addie Wilcox? Rachel Wilcox? Wilcox-Fortini? Mom’s legal name is Rachel Adeline Wilcox, but she never liked her first name, so she was Addie to nearly everyone.

Room 12. Give us a few minutes, we’re getting her cleaned up. So, I wait a few minutes for the nurses to finish. Finally, I get to see Mom.

“Oh!” she greets strongly, “My ugly son!”

“Ugly?” I exclaim in disbelief, “Compared to Paul or Aaron? I don’t think so!”

I last saw Mom in October, when Sarah and I had a long-weekend visit because, as Sarah insisted, “Your mother is not going to be alive forever. We should see her while she is well.”

A motley crew at Charlie's Fish House, October 2016
A motley crew at Charlie’s Fish House, October 2016. Yes, that is how my mother smiles, a genetic gift from her own father.

Now, not much later, Mom is markedly older. She looks tired. She is painfully thin, massing definitely under 45 kg. Her speech is slow, but clear. I also discover she can’t hear me unless I speak very loudly. She’s good at covering this, but her responses to questions she pretends to hear are often non sequiturs. (Later in my stay I will tackle this problem and diagnose a bad hearing aid, and come up with a good-enough-for-this-lifetime solution.) However, she is “all there.” Her mind and memory are, for the most part, intact. This is something of a disappointment to me, as I was hoping to be able to re-frame a few minor incidents from my childhood. This won’t be the case.

Mom watching a video of her favorite grandchild
Mom watching a video of her favorite grandchild

I know, given the hour, that Mom will be tired, soon, so this visit will be short. There is one complaint Mom mentions at least once a day, and today is no exception: “I don’t know why the Lord still has me here, but He must have some purpose. I just wish I knew what it was.”

I understand her impatience to meet the Savior. She knows the time is soon. She is nearly 91. In less than a year, she has gone from driving interstate, living alone in her own home, and being in near perfect health, to having trouble walking, needing in-home care, and frequently visiting the hospital. The past two months have been particularly difficult.

My children often claim that Grandma will outlive them. This joke, which we have enjoyed for years, doesn’t seem as funny this week. I can’t keep a few lines from a song in The Muppets Take Manhattan, out of my head: “Saying goodbye, why is it sad? / Makes us remember the good times we’ve had.” The brain does strange things at times, as I will discover tomorrow.

I don’t know, of course, if this will be my last visit with this woman of many children: Four biological, three adopted, 87 (we think) fostered. I wonder if, sometime between my leaving this night and returning in the morning, my mother will go from seeing the object of her faith “in a mirror, dimly,” to “face to face.”

All too soon, Mom slips into a quiet sleep, and I drive the rest of the way to her house, navigating through tears, to where my sister Cindy is “holding down the fort,” as Mom would say.

Yes, we are of good courage, and we would rather be away from the body and at home with the Lord. (2 Corinthians 5:8, ESV) 

To be continued …

A Teacher Worthy of Notice

(A reflection from November 9, 2016)

While my wife—Sarah Latimer—and I were walking our dog, Juno, we chanced upon an outside window of this history classroom at Nashua’s Fairgrounds Middle School, where our daughter, Naomi, attends.

I was moved to tears at the display, particularly given the anniversary of Kristallnacht. This was a meaningful reminder that, despite what we have seen all too often on social media and propaganda outlets, there are, indeed, those like this English teacher who are quietly and efficiently going about making the world a better place for all our children.

The Signs of Science

One of the best parts of the March for Science Sarah and I attended on April 22, 2017, in Washington, D.C., was the nearly endless creativity the marchers put into their signs. Not too many were repeated, and few would have been considered offensive. The preview image here is my sign, cribbed from “Stand back! I’m going to try science!” of XKCD origin.

All the signs we photographed:

Signs of Science
I Am a Force for Science
I Am a Force for Science
I Am a Force for Science
« 1 of 107 »

 

TramBot (Originally published in 1998 or 1999)

The TramBot—When my nephew Dave Matheson (a veterinary grad student at Prince Edward Island) stopped in for a day-long visit, we constructed a TramBot that ran on a string stretched across an upstairs room with a light-activated set of “grabs”—perfect for bombing runs. This was inspired by the “Bomber Fly” seen in assorted Lego media.

Yes, I Always Over-Design

If you’ve seen the Bomber Fly in the Lego publications, then you will immediately notice that my creation is much bigger, and probably heavier. I developed a fear of minimalism after my very first RIS creation quite literally shook itself to pieces in under 10 seconds.

Features and Innovation Details

  • The forward-reverse pulleys are driven by a belt drive, although a geared drive would have been fine in this case.
  • There are bumpers connected to touch sensors on each end that reverse the drive pulley motor when triggered. Because the string is at about a 45º angle to the wall, we added the tires to keep the bumper rods from slipping. (Before this was done, the bumpers would sometimes just glance off the wall without triggering the touch sensors, as the robot tried to keep moving.)
  • We solved the problem of timing on the “grabs” (the name alludes to Gerry Anderson’s Supermarionation Thunderbirds program—see http://www.gis.net/~fm/) by using a belt drive, and setting the motor run time to one second longer than the absolute maximum necessary. This allowed the grabs to automatically re-synchronize, be movable by hand, and grip objects of various sizes.
  • The grabs are light-triggered. We used the Lego light sensor, and programmed it so that a flashlight beamed on it would trigger the grabs’ open or close sequence. This allowed for precise payload delivery.

 


My sons Isaac and John, my Nephew Dave, and I perform some final adjustments and testing.

To Boldly Go …

3-Year-Old Builds Lego MindStorms Robot

Isaac’s First Robot—The “Punching Robot”

(Original date, approximately 1998.)

Hey, He Was Only 3

At three years old, my son Isaac might have been the youngest person ever to construct a Lego MindStorms project. Although he calls it a robot, it is more of a contraption than a real robot … but I cannot help but be impressed.

Isaac built this entirely without help—he even connected the RCX to the motor properly on his own. The design is entirely his; I never built anything similar.

Isaac grins as he contemplates his world conquest.

This contraption, which he calls a “punching robot,” uses an assortment of Lego axles that rest within a 40t gear, that is directly mounted on the motor. Attached to several of the outer axles are the shock absorber pieces. These shock absorber pieces extend outward from the central gear when the motor is activated, and will repeatedly punch whatever the robot is placed near.

A close-up of the punching mechanism.

What Is Wrong with These People?

On the eve of the nomination of Donald Trump as President of the United States:

My biggest complaint* of the past year has been this: White “Evangelicals” ignored virtually all of Scripture to support a man who represents a near perfect antithesis of Christianity.

I have watched those on the fringes and outside of Christianity shake their heads, and wonder what is possibly going on in the minds of these Christians, and determine that they never, ever want to embrace a religion with such obvious hypocrisy. The Evangelical swell of blind support for a preacher of hate, lust, greed, lies, and ignorance has done more to harm the cause of Christ than anything else I have seen in my lifetime.

But I remind myself of this: Paul explained we should pray for our leaders—and I shall. Paul did this under perhaps the most corrupt government ever seen on earth, where his brothers were routinely murdered for sport.

So I will pray for (as of tomorrow) President Trump. I will also pray that we are spared from the horrors he has promised. I will also pray that the binding of extremism and near-insanity of the Republican Party to White Christianity is revealed for the disaster it is and forever abandoned. I will also pray for the healing of a nation terribly divided—while I, as promised and commanded, pray for the one who most wanted to divide it for his own gain.

1First of all, then, I urge that supplications, prayers, intercessions, and thanksgivings be made for all people, 2for kings and all who are in high positions, that we may lead a peaceful and quiet life, godly and dignified in every way. 3This is good, and it is pleasing in the sight of God our Savior, 4who desires all people to be saved and to come to the knowledge of the truth. 5For there is one God, and there is one mediator between God and men, the man[a] Christ Jesus, 6who gave himself as a ransom for all, which is the testimony given at the proper time. 7For this I was appointed a preacher and an apostle (I am telling the truth, I am not lying), a teacher of the Gentiles in faith and truth. (1 Timothy 2:1–7, ESV)

*This complaint is probably tied for first place with the practice of those same people chain-posting completely fraudulent and easily refutable propaganda. (No, that’s the Black Speech from Lord of the Rings, not a school distributing donuts with verses from the Qu’ran.)

Weasley Clock Code

Back at Veracode’s last Hackathon, I published the video below. People have started discovering this and asking questions about it, so here is the code for it:

/*
  Weasley Clock
  -------------

  Created by Doug "LegoDoug" Wilcox for Veracode Hackathon IX.

  Video of the completed project is at https://www.youtube.com/embed/oRUViFnxKsg.

  "Share and enjoy."

 */

// Arduino SPI (Serial Peripheral Interface) library - https://www.arduino.cc/en/Reference/SPI
#include <SPI.h>             
// Arduino Ethernet library - https://www.arduino.cc/en/Reference/Ethernet
#include <Ethernet.h>        
// Arduino Stepper library - https://www.arduino.cc/en/Reference/Stepper
#include <Stepper.h>         
// Adafruit REST IO library - https://learn.adafruit.com/adafruit-io/arduino
// See also https://www.arduino.cc/en/Tutorial/WebClientRepeating
#include "Adafruit_IO_Client.h"    
                                   

// assign a MAC address for the ethernet controller.
byte mac[] = {
  0x8C, 0xDC, 0xD4, 0x4A, 0xC9, 0xC2
};

// initialize the library instance:
EthernetClient client;

// last time the Arduino connected to the server, in milliseconds
unsigned long lastConnectionTime = 0;        
// delay between retrieving updates, in milliseconds
const unsigned long requestInterval = 5000L; 

// Configure Adafruit IO access. You will need to create your own 
// Adafruit IO account (free), and set up a feed, and provide your
// feed and AIO key in the code below.
#define AIO_FEED   "weasleyclockstatus"
#define AIO_KEY    "XXXXXXXXXXXXXXXXXXXXXXXXXXX"

// Create an Adafruit IO Client instance.  Notice that this needs to take a
// WiFiClient object as the first parameter, and as the second parameter a
// default Adafruit IO key to use when accessing feeds (however each feed can
// override this default key value if required, see further below).
Adafruit_IO_Client aio = Adafruit_IO_Client(client, AIO_KEY);

// Alternatively to access a feed with a specific key:
Adafruit_IO_Feed clockFeed = aio.getFeed(AIO_FEED, AIO_KEY);

// States - These are the codes that correspond to specific clock positions.
const String LD_HOME         = "ld_na";
const String LD_TRAVELING    = "ld_tr";
const String LD_VERACODE     = "ld_of";
const String LD_CHURCH       = "ld_ch";
const String LD_MORTAL_PERIL = "ld_mp";
const String LD_GLOUCESTER   = "ld_gl";

// Steps - How many steps the motor needs to move to point to a specific position 
// on the clock.
const int STEPS_HOME         = 0;
const int STEPS_TRAVELING    = 750;
const int STEPS_VERACODE     = 1600;
const int STEPS_CHURCH       = 2450;
const int STEPS_MORTAL_PERIL = 3350;
const int STEPS_GLOUCESTER   = 4350;

// Someday, I will determine what this actually does. (I don't think, functionally, 
// it has any affect.)
const int stepsPerRevolution = 200;  

long motorPosition = 0L;         // Number of steps the motor has taken.
String fValue = "";              // Feed value.

Stepper clockStepper(stepsPerRevolution, 7, 6, 5, 4, 8);

void setup() {
  // start serial port:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native 
      // USB port only, on certain Arduino models.
  }

  // give the ethernet module time to boot up:
  delay(1000);
  // start the Ethernet connection using a fixed IP address and DNS server:
  //Ethernet.begin(mac, ip, myDns);
  // Or, just start it with dynamic DNS by giving it a MAC address.
  Ethernet.begin(mac);
  // print the Ethernet board/shield's IP address:
  Serial.print("My IP address: ");
  Serial.println(Ethernet.localIP());

  clockStepper.setSpeed(20);
}

void loop() {

  // Wait for a bit and read the current feed value.
  Serial.println(F("Waiting ..."));
  delay(requestInterval);
  
  // To read the latest feed value call the receive function on the feed.
  // The returned object will be a FeedData instance and you can check if it's
  // valid (i.e. was successfully read) by calling isValid(), and then get the
  // value either as a text value, or converted to an int, float, etc.
  FeedData latest = clockFeed.receive();
  if (latest.isValid()) {
    Serial.print(F("Received value from feed: ")); Serial.println(latest);
    // By default the received feed data item has a string value, however you
    // can use the following functions to attempt to convert it to a numeric
    // value like an int or float.  Each function returns a boolean that indicates
    // if the conversion succeeded, and takes as a parameter by reference the
    // output value.

    // Want some fun? Learning about "conversion from 'FeedData' to non-scalar 
    // type 'String' requested" the hard way.
    //
    // If I remember correctly, it was a casting error caused by trying to use 
    // the 'latest' variable as a String, directly.
    // The following line casts 'latest' to a string and lets us use it as 'fValue'.
    fValue = latest;
    
    if(fValue == LD_HOME) {
      Serial.println("Nashua");
      stepBySteps(STEPS_HOME);
    }
    
    if(fValue == LD_TRAVELING) {
      Serial.println("Traveling");
      stepBySteps(STEPS_TRAVELING);
    }

    if(fValue == LD_VERACODE) {
      Serial.println("Veracode");
      stepBySteps(STEPS_VERACODE);
    }
    if(fValue == LD_CHURCH) {
      Serial.println("Church");
      stepBySteps(STEPS_CHURCH);
    }
    if(fValue == LD_MORTAL_PERIL) {
      Serial.println("Mortal Peril!");
      stepBySteps(STEPS_MORTAL_PERIL);
    }
    if(fValue == LD_GLOUCESTER) {
      Serial.println("Glostah");
      stepBySteps(STEPS_GLOUCESTER);
    }
    
  } else {
    Serial.print(F("Failed to receive the latest feed value!"));
  }

}

void stepBySteps(int newPosition) {
  if(motorPosition == newPosition) {
    Serial.println("No movement required.");
    return;
  }

  long steps = newPosition - motorPosition;
  
  clockStepper.step(steps);
  motorPosition = newPosition;
  Serial.print("position should now be:" );
  Serial.println(motorPosition);
}