Oak leaves, river rocks and green grass

What does a body mean to you?

Last night, I sat on the toilet to take care of business, reached for the toilet paper and was attacked by the sping-loaded mechanism of a toilet paper holder. Like the proverbial spring-coiled snake in a can.

Needless to say, the toilet paper proceeded to roll across the bathroom floor, conveniently stopping on the pool of coffee I had previously spilled and promised myself to clean up after my job in the loo was finished.

Is there a medical study that show the longterm effects, positive or detrimental, of the short-term exposure of caffeinated toilet paper wiped where the sun doesn’t shine?

Speaking of which, did you know a nut institute (as opposed to an institute for nuts) sponsored study was released to the public showing the positive healthy effects of eating nuts?

Or the poll sponsored and administered by a polling company that shows polls are good for polling the public?

Lastly, whilst cheering for my favourite football team, wishing against hype and recent trends that they’d score more points than their instate (as opposed to testate) rivals, I realised that the men out there on the field had been heroes to me in my youth and inspirations to me in my middle years.

Secondly, if not first to next to lastly, I understood the unique situation in which I find myself entrusting my words and body with one woman without involving a sexual relationship is new and most unusual to me, opening up avenues of fictional territory to explore.

More as it develops…

– – – – – – – –

Thanks to Knoxville Police; El Coyote restaurant; Zach and more at Applebee’s; Sevier County wrestling team running the Petro’s concession stand; the Variety Shop; Gail and more at UBC; University of Tennessee; Hampton Inn…

Easy to do business with, the endless saga

Yesterday evening, I sat down in the Chan Auditorium on the campus of UAH (the University of Alabama in Huntsville) to listen to Frederiek Toney, Corporate Vice President and President, Global Ford Customer Service Division, alumnus of both UAH and Lee High School in Huntsville, Alabama.

Fred’s talk was interesting and underscored several topics of personal interest to me, which I’ll get to later on.

However, one point stood out more than the others: his emphasis on “you can’t manage a secret,” which he repeated more than once.

I agree wholeheartedly.

Ford, originally started in the United States of America, is a global competitor.

Should I be concerned about Ford’s electronics offering backdoor access to governmental agencies?  Will car owners have to sign EULAs (end user licence agreements) that state something like the following:

READ THESE NOTICES CAREFULLY. IF YOU DO NOT AGREE TO ACCEPT THESE CONDITIONS, RETURN THE VEHICLE IN ORIGINAL PACKAGING WITH ALL OTHER ITEMS INCLUDED WITH THE VEHICLE TO THE PLACE OF PURCHASE AND YOUR MONEY WILL BE REFUNDED IN ACCORDANCE WITH THE APPLICABLE RETURN POLICY OF THE PLACE OF PURCHASE.

  • IMPORTANT NOTICE: As part of Ford’s quality assurance analysis, this vehicle automatically sends anonymous, non-personally identifiable system information to Ford (and/or other entities as volunteered for or required by law) upon first approach, when the vehicle attempts to connect to an electronic network such as the Internet, and periodically thereafter.  It also automatically searches for updates for your vehicle.  Personal information may be gathered, retrieved and sent in accordance with applicable laws in your jurisdiction at any place and any time.  See details in the Ford End User Licence Agreement included with your vehicle.

The software products preinstalled in your vehicle are copyrighted products.  Please carefully read all of the licence agreements furnished with each product because it may send anonymous/personal data not only to the product manufacturer but also to Ford and/or other entities as volunteered for or required by law.

Ford and its affiliates are not responsible for the accuracy and/or use of data stored or collected about your vehicle.  Any and all disputes will be resolved through the mandatory and binding arbitration policy which went into effect the moment you expressed interest in this vehicle.

 

Pieces falling off your ‘bot lately?

Cardboard, sentics, M.A.R.V.I.N., Pickle, drums, dancers, you name it, the robot has been named it and can do it.

What is “it”?  It is life itself.  The god in the machine.

And that, folks, is what we’re doing here today at the Maker Session: Robot Hacks finale — showcasing a few of the dozens of great projects that were worked on the past 18 days.

Screenshots to wet your whistle while you work on your anthropomorphic dreams!:

RobotHacksFinale-001 RobotHacksFinale-002 RobotHacksFinale-003 RobotHacksFinale-004 RobotHacksFinale-005 RobotHacksFinale-006 RobotHacksFinale-007 RobotHacksFinale-008 RobotHacksFinale-009 RobotHacksFinale-010 RobotHacksFinale-011 RobotHacksFinale-012 RobotHacksFinale-013 RobotHacksFinale-014 RobotHacksFinale-015 RobotHacksFinale-016 RobotHacksFinale-017

Thanks again to the folks at MAKE and GE.

Two observations — one, we need to get young people more involved, and two, let’s hope those who started keep the excitement going onto even more ambitious projects!

The final version of the “storybook” for today’s presentation

Here’s the final version of the “storybook” (i.e., an open source computer program) that was downloaded into an Arduino microcontroller for presentation as a desktop art sculpture (a/k/a dancebot):

/* Desktop art sculpture by Team Tree Trunk, November 2013
(Rick Hill, Janeil Hill and Jennifer Nye (with influence by Abi Leggette))

Created in conjunction with the Robot Hacks event sponsored by
MAKE magazine and GE, 3-20 November 2013.

This project was inspired by the work of Erin Kennedy, aka RobotGrrl.

Once upon a time, there were five photosensitive cells that wanted
to play together.

They were gathered inside a dark rectangular box when they felt
a commotion.

It was a two-eyed entity that called itself an ultrasonic sensor,
telling the five photosensitive cells that ultrasonic sensors are
like the bat or other creature that uses echolocation to describe
its  environment.

The six of them looked up and saw the big shadow and shape of
a giant that had lifted the lid of their box, exposing them to light,
showing them a world they had never seen before, full of odd
shapes and more entities just like themselves.

The giant removed them from the box and attached their legs into
holes that connected to rows of entities already in place, with
names like resistor, wire, LED and a complicated entity called
the Arduino.

The giant then played with them and gave them power.

They were more alive than ever before!

Excitedly, they joined with the wires, resistors, LEDs and Arduino
to move one-armed objects called servos.

Eventually, they left the rows of holes and were glued together
with metal to form a new network of connections inside a
cylindrical box.

The giant told them they were going to become a desktop art sculpture,
a Cubist version of a robot, dissected into its separate parts and put
on display like a Damien Hirst cadaver.

He walked them through a strange language, based on the idea of logic,
that made them more than the sum of their parts...

Five LDRs/photocells and one ultrasonic sensor are pointed outward
in the circular side wall of a hat box.

Each photocell controls the movement of a small analog servo
attached to the lid of the hat box.

The ultrasonic sensor controls the movement of large analog servo
attached to the lid of the hat box, which in turn is connected to
a set of pulleys.

If the distance from an object to the ultrasonic sensor is less than 5,
then all of the servos are returned to their original "zero" position;
otherwise they rotate based on readings from the photocells and ultrasonic sensor.

*/

int photocellPin0 = 0;     // the first photocell is connected to Arduino pin a0
int photocellPin1 = 1;     // the second photocell is connected to Arduino pin a1
int photocellPin2 = 2;     // the third photocell is connected to Arduino pin a2
int photocellPin3 = 3;     // the fourth photocell is connected to Arduino pin a3
int photocellPin4 = 4;     // the fifth photocell is connected to Arduino pin a4
int photocellReading;      // this is what we call the analog reading from the sensor
int yourDistance;          // this is what we call the analog reading from the ultrasonic sensor
int servoPosition;         // this is what we call the servo position between 0 and 180 degrees on a compass

#include <Servo.h> // add a virtual library book called Servo.h for reference
                   // by the logical sentences in this storybook

Servo myservo0;  // create servo object to control a servo on Arduino pin D3
Servo myservo1;  // create servo object to control a servo on Arduino pin D5
Servo myservo2;  // create servo object to control a servo on Arduino pin D6
Servo myservo3;  // create servo object to control a servo on Arduino pin D9
Servo myservo4;  // create servo object to control a servo on Arduino pin D10
Servo myservo5;  // create servo object to control a servo on Arduino pin D11

const int pingPin = 2; // tells the logical sentences that the ultrasonic sensor
                       // is connected to Arduino pin D2

// NOTE: anything that starts with a "/*" and ends with a "*/" is to be ignored
/*
const int closeD = 10; // cm; maximum closest distance - 0 to 10 cm range
const int midD = 20; // cm; maximum hand distance - 10 to 20 cm range
const int farD = 30; // cm; maximum farthest distance - 20 to 30 cm range
*/

int pos = 0;    // variable to store the servo position */

void setup(void) {
 myservo0.attach(3);  // attaches the servo 0 on pin 3 to the servo object
 myservo1.attach(5);  // attaches the servo 1 on pin 5 to the servo object
 myservo2.attach(6);  // attaches the servo 2 on pin 6 to the servo object
 myservo3.attach(9);  // attaches the servo 3 on pin 9 to the servo object
 myservo4.attach(10);  // attaches the servo 4 on pin 10 to the servo object
 myservo5.attach(11);  // attaches the servo 5 on pin 11 to the servo object

  // We'll send debugging information via the Serial monitor
  Serial.begin(9600);

}

// This is the part of the logic that keeps the sensors and servo alive 
void loop(void) {

  // get the ultrasonic sensor raw distance in centimetres
  yourDistance = getDistance(pingPin); 

  // limit the reading from 0 to 50, ignoring smaller or larger numbers
  yourDistance = constrain(yourDistance, 0, 50); 

  // adjust the servo position (0 to 180 degrees) to match the ultrasonic readings (0 to 50)
  servoPosition = map(yourDistance, 0, 50, 0, 180);

  // tell the servo to move to the reading that was just called servoPosition 
  myservo5.write(servoPosition);

  // here's where all the servos are moved to their zero -0- position if
  // the distance from an object to the ultrasonic sensor is less than five -5-
  if (yourDistance < 5)
  {
     myservo0.write(0);
     myservo1.write(0);
     myservo2.write(0);
     myservo3.write(0);
     myservo4.write(0);
  }  

  // if the distance from an object to the ultrasonic sensor is five -5- or more
  // then we do something else;
  // in this case, as shown below, we record what the photocells are reading
  else
  {
  // we repeat this set of logical sentences five times

  //Repetition Number One
  // get the photocell sensor raw reading
  photocellReading = analogRead(photocellPin0);
  Serial.print("Analog reading 0 = ");  // send the phrase in quotes to the serial port
  Serial.println(photocellReading);     // send the raw analog reading to the serial port

  // limit the reading from 0 to 300, ignoring smaller or larger numbers
  photocellReading = constrain(photocellReading, 0, 300);

  // adjust the servo position (0 to 180 degrees) to match the ultrasonic readings (0 to 300)
  servoPosition = map(photocellReading, 0, 300, 0, 180);
  myservo0.write(servoPosition);

  //Repetition Number Two
  photocellReading = analogRead(photocellPin1);  
  Serial.print("Analog reading 1 = ");
  Serial.println(photocellReading);     // the raw analog reading
  photocellReading = constrain(photocellReading, 0, 300);
  servoPosition = map(photocellReading, 0, 300, 0, 180);
  myservo1.write(servoPosition);

  //Repetition Number Three
  photocellReading = analogRead(photocellPin2);  
  Serial.print("Analog reading 2 = ");
  Serial.println(photocellReading);     // the raw analog reading
  photocellReading = constrain(photocellReading, 0, 300);
  servoPosition = map(photocellReading, 0, 300, 0, 180);
  myservo2.write(servoPosition);

  //Repetition Number Four
  photocellReading = analogRead(photocellPin3);  
  Serial.print("Analog reading 3 = ");
  Serial.println(photocellReading);     // the raw analog reading
  photocellReading = constrain(photocellReading, 0, 300);
  servoPosition = map(photocellReading, 0, 300, 0, 180);
  myservo3.write(servoPosition);

  //Repetition Number Five
  photocellReading = analogRead(photocellPin4);  
  Serial.print("Analog reading 4 = ");
  Serial.println(photocellReading);     // the raw analog reading
  photocellReading = constrain(photocellReading, 0, 300);
  servoPosition = map(photocellReading, 0, 300, 0, 180);
  myservo4.write(servoPosition);
  }

  delay(300);  // wait about three tenths of a second to repeat everything in the loop
}

// NOTE: anything that starts with a "/*" and ends with a "*/" is to be ignored

/* boolean ping(int pingPin)
//boolean ping(int pingPin, int ledPin1, int ledPin2, int ledPin3)
{
  int d = getDistance(pingPin); // cm
  boolean pinActivated1 = false;
  boolean pinActivated2 = false;
  boolean pinActivated3 = false; 
  if (d < closeD) { 
    digitalWrite(ledPin1, HIGH);
    digitalWrite(ledPin2, LOW);
    digitalWrite(ledPin3, LOW); 
    myservo5.write(180);
    pinActivated1 = true;
    pinActivated2 = false;
    pinActivated3 = false; 
  } else {
    if (d < midD) {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
      digitalWrite(ledPin3, LOW);
      myservo5.write(90);
    pinActivated1 = false;
    pinActivated2 = true;
    pinActivated3 = false; 
    }
    else {
      digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
      digitalWrite(ledPin3, HIGH); 
      myservo5.write(0);
    pinActivated1 = false;
    pinActivated2 = false;
    pinActivated3 = true; 
  }
  }
//  return pinActivated1, pinActivated2, pinActivated3;
  return pingPin;
} */

// This part of the logical sentences tells the ultrasonic sensor what to say.

int getDistance(int pingPin)
{
  long duration, inches, cm;

  pinMode(pingPin, OUTPUT);
  digitalWrite(pingPin, LOW);
  delayMicroseconds(2);
  digitalWrite(pingPin, HIGH);
  delayMicroseconds(5);
  digitalWrite(pingPin, LOW);

  pinMode(pingPin, INPUT);
  duration = pulseIn(pingPin, HIGH);

  inches = microsecondsToInches(duration);
  cm = microsecondsToCentimeters(duration);
  Serial.print(inches);
  Serial.print("in, ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();  
  return(cm); // You could also return inches
}

long microsecondsToInches(long microseconds)
{
  return microseconds / 74 / 2;
}

long microsecondsToCentimeters(long microseconds)
{
  return microseconds / 29 / 2;
}
/*******************************************************************************/
//  This is free software; you can redistribute it and/or
//  modify it under the terms of the GNU Lesser General Public
//  License as published by the Free Software Foundation; either
//  version 2.1 of the License, or (at your option) any later version.
//
//  This is distributed in the hope that it will be useful,
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
//  Lesser General Public License for more details.
//
//  You could have received a copy of the GNU Lesser General Public
//  License along with this code; if not, write to the Free Software
//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
//
/*******************************************************************************/

You only have to be 10% smarter than your tools

The Entrepreneurs Club announced a new contest today, specifically designed for youths aged 6-16.  Five winners will be awarded an all-expense paid trip to the annual Entrepreneurs Club, where the winners will be encouraged to pitch their dream projects for potential VC funding; alternatively, they will be given a small budget to develop a marketing plan to pitch their dream projects via crowdfunding.

The contest participants will attempt to accomplish the following goals:

  1. Design an autonomous rover*. (One winner will be announced for the best autonomous rover design.)
  2. Launch the rover into the upper atmosphere with a weather balloon**. (One winner will be announced for the best rover launch design.)
  3. Land the rover***. (One winner will be announced for the best rover landing design.)
  4. Retrieve the rover from its predetermined rendezvous point****. (One winner will be announced for the best rover rendezvous point design).

An overall winner will be announced that has shown the best combination of the most innovative and/or accurate achievement of the goals listed above.  In addition to the all-expense paid trip, the overall winner will be allowed to recruit new team members from any of the other contest winners or contest participants to pitch dream projects (primary team size may not exceed seven members).

*The rover must have onboard the following capabilities:

  1. Self-powered — may be any combination of fuel cell, ultracapacitor, nonrechargeable/rechargeable [alkaline, NiMH, NiCad, LiPo, nuclear, etc.] battery, wind, solar cell, or other means clearly documented and demonstrated to the contest judges.
  2. Guidance control system — may be a combination of GPS, 3D visual mapping, solar, magnetic, or other means clearly documented and demonstrated to the contest judges.
  3. Data logging system — must have a means to record location data and broadcast location data periodically, no less than once a minute (location data may include GPS coordinates, geotagged/timestamped photos or other means (see number 4 below) to record and show the rover’s current location), keeping onboard its total journey information or other means of remote storage of data logging information clearly documented and demonstrated to the contest judges.
  4. Environmental measurement and collection tools — may be a combination of air/land/water temperature, humidity, water salinity/pH, atmosphere/soil/water contents, biological sampling, or other means clearly documented and demonstrated to the contest judges.
  5. Additional features will be allowed as long as they are clearly documented and demonstrated to the contest judges.
  6. NOTE: Keep in mind that the rover may arrive at the rendezvous point by air, land and/or water.  The most/efficient use of all three will increase the chance of winning for the contest participant(s).

** A list of preapproved weather balloon suppliers will be provided.

*** The rover landing may include the following:

  1. Balloon remnants still attached.
  2. Balloon remnants detached.
  3. Parachute deployment.
  4. Self-guided UAV (powered or unpowered).
  5. Descent deceleration thrusters.
  6. Aquatic vehicle capabilities (surface/submarine).
  7. Additional landing features will be allowed as long as they are clearly documented and demonstrated to the contest judges.

****The rendezvous point must be preapproved by the contest judges before the rover is launched.  The time from launch of the rover to retrieval of the rover at the rendezvous point must take no longer than 48 hours.  The contest participants and their preapproved equipment must be in full view of the contest judges and/or their official representatives during the 48-hour period.

When it rains on Friday…

Outside the window, raindrops drip from the wet branches of the redbud tree.  A twig heavily laden with lichen balances precariously on a redbud limb.  Brown and yellow leaves still cling to their connections, pulled loose by falling water occasionally.  The green leaves of a wild privet bush stand out from the rust-coloured background of autumn.

For the past few weeks, I have changed from a person devoted to the art of dance to a person devoted to the art/science of the home tinkerer.

In this tinkerer’s mini-adventure, I have encountered new characters in my life, who my mother has noted are temporary online acquaintances which may or may not have my best interests at heart.  Sometimes, even I am amazed of the faith I readily give to people that this interactive TV screen connects me to.

I, the tinkerer, am working on a desktop prototype of a yard art sculpture that can be a work of art by itself.

I had formed a small group — Team Tree Trunk — to work on this prototype, enlisting the artistic input of my wife and the mechanical engineering input from a friend who, unfortunately, is dealing with a dying father and I haven’t bothered for her input on this project.

Thus, I have been left to write the computer code and create this desktop prototype primarily on my own, hoping my wife can help finish the decorating of the piece from her creative/logical/computer engineering thought set.

Over the past week or so, I’ve attended virtual hangouts/meetings/panels with other tinkerers, commonly called Makers these days but just as easily called inventors, scientists, and other members of the creative class of citizens.  You could call them knowledge workers or data analysts, too.

Is it a special skill or talent that turns one into a Maker?

What level of curiosity belongs to the Maker classification?  Is a person who is curious about a favourite actor’s life a Maker?  Is a sports fan a Maker?  Is a member of the political chattering class a Maker?

Should the word Maker even be capitalised?  It certainly takes capital to be a Maker rather than just a Thinker/Dreamer.

As I finish up this Robot Hacks project, I wonder what in this whole Maker Movement will make my dream come true — a permanent colony on Mars (or the Moon) in the next 13,321 days.

Cool as they are already, it’s great that people want to use 3D printers to make game pieces, Valentine’s Day flowers, holiday ornaments, keychains, tablet PC cases and book lights.

We-the-geeks-010

After all, we like to surround ourselves with evidence of our individuality.

My goals are not your goals.  My goals are not my goals.  My goals belong to the universe, coaxing our sets of states of energy, fractal spinoffs from the local star, to branch out into the solar system with more than our electromechanical observation platforms.

We want a whole generation on this planet to subconsciously devote their attention to extraplanetary settlement.  It doesn’t happen by force or coercion.  It happens through encouraging people to use their imaginations, with subtle hints that exploring the cosmos is a great use of their imaginations.

Kind of like mass marketing direct mail campaigns — we don’t expect 100% replies — if 1-3% respond, and buy the product or buy into the product’s lifestyle, we’ve accomplished our goals.

One to three percent of the global population devoting one to three percent of global resources toward space exploration?  That would be awesome!

Now, on to getting people excited about putting their imaginations into action, regardless of age or socioeconomic status.  I don’t expect myself to like everything they create but I’m willing to give them the impetus to do so.

Welcome to the American Renaissance

In the global economy, when what one person shares with the local workshop through online tools is shared with the world, how does “insourcing” help the locals compete globally?

Today, an online hangout called “We the Geeks: Don’t Be Bored, Make Something,” inspired by Joey Hudy’s business card that he gave to the U.S. President during a White House science fair, the group talked about an explosion of innovation taking place in the United States, partly through the Maker Movement.

What do you think?  Do the citizens of your country consider themselves globally competitive because they feel empowered to be creative and ultimately successful in the local/national/world/galactic economy?

Screenshots from today’s hangout on Google+:

We-the-geeks-001 We-the-geeks-002 We-the-geeks-003 We-the-geeks-004 We-the-geeks-005 We-the-geeks-006 We-the-geeks-007