Sunday, October 25, 2015

Reformation Day

A long time ago, my company sent me on business trips to western Minnesota to install electrical equipment. On one of those trips, I met a nice gal of good Minnesota Norwegian stock and asked her out to a music concert at the college in Fargo, North Dakota.

Being a good Minnesota Lutheran, she told me about her church in Moorhead. (There are so many Lutheran churches in Fargo and Moorhead, I'd never be able to remember now which one it was.) I had the privilege of visiting there the following Sunday, the last Sunday of October.

Reformation Sunday is not only a day to remember the events of 1517 Wittenberg, but also a time to celebrate with a grand midwestern potluck. Had I known ahead of time, well, I'd still not have been able to cook up anything in the motel room. But the little old ladies of the church welcomed me warmly and introduced me to their favorite potluck dish: lutefisk. "You'll either love it or hate it," they said. "It's like fish flavored jello," they said. How could I possibly turn this down? Fortunately, they didn't give me a lot!

After the potluck, I visited this nice gal and her family at her home, and we took turns playing the piano. It was a wonderful afternoon.

On another occasion, one of the electrical workers invited me to his home for lunch, and they served me corn freshly cut from their very own property.

After visiting Minnesota several times, I decided that the good Lutherans of Minnesota are far and away the friendliest people I've ever met. If they have any of the Lake Wobegon quirks, I never noticed.

Monday, October 19, 2015

Random Artwork

Refresh the page to see a different design (or click the button below).

This one uses HTML5 Canvas, so it works on iPad. In class, we used SVG, which doesn't render properly on iOS devices using Safari.

Tuesday, October 13, 2015

Ten Commandments of Human Relations

1. Speak to people. 
There is nothing as nice as a cheerful word of greeting.

2. Smile at people.
It takes 72 muscles to frown, only 14 to smile.

3. Call people by name.
The sweetest music to anyone's ears is the sound of his own name.

4. Be friendly and helpful.
If you want friends, you must be one.

5. Be cordial.
Speak and act as if everything you do is a joy to you.

6. Be genuinely interested in people.
You can like almost everybody if you try.

7. Be generous with praise...
and cautious with criticisms.

8. Be considerate with the feelings of others.
There are usually three sides to a controversy: Yours, the other person's, and the right side.

9. Be eager to lend a helping hand.
Often it is appreciated more than you know.

10. Add to this:
a good sense of humor, a huge dose of patience and a dash of humility. This combination will open many doors and the rewards will be enormous.

Wednesday, October 7, 2015

Connect the Dots

One of my high school students did paper-and-pencil artwork that looks like this. I wrote this program that we may code together in class. When you connect the dots, the result is a parabola curve along the bottom edge. 

The SVG version does not work with iPad because Safari iOS does not like inline SVG elements. So the following code uses HTML5 canvas. The JavaScript calculations are the same, but the drawing routines are different.

How many lines?
What color?

How to start learning computer programming

People often ask me, "How should I start learning computer programming?" Specifically, what programming language should one start with?

Many programming languages are difficult to learn. C++ is a powerful and widely-used programming language, but I would seldom suggest that someone learn C++ first. Some do, and some do it well, but there are easier languages. Java is similarly difficult. Objective-C is a nightmare; I'm glad Apple replaced it with Swift, but don't let the name fool you ... you won't learn even Swift quickly unless you already know another programming language.

Tuesday, October 6, 2015

Resistor Standard Values

Suppose we want to establish a sensible set of standard values for resistors. Of course, this was done many years ago. But sometimes it is instructive to recreate the thought process of engineers from the past. We learn something about their thought process that we might apply to our own engineering challenges today.

Supposed we want to establish a set of standard resistor values between 10 ohms and 100 ohms. Our first thought might be to space them out equally: 10 ohms, 20, 30, 40, 50, 60, 70, 80, 90, and finally 100 ohms. This way we cover all the values between 10 and 100 with equal tolerance: 10 ohms either way.

But is it really equal spacing? The difference between 10 ohms and 20 ohms is 100 percent! 20 ohms is twice as big as 10 ohms. Don't we need another resistor in between those? Like maybe 15 ohms?

Resistor Color Code Calculator

Select the three color bands that appear on your resistor:

Saturday, October 3, 2015


One of my favorite books was always Cheaper by the Dozen. (It inspired a hit 1950 movie, but the book had no relation to the recent Steve Martin comedy.) The book is about Frank and Lillian Gilbreth and their 12 children. The Gilbreth parents were efficiency experts who examined the smallest movements of even their own children, looking for ways to reduce the number of motions. This was decades before the recognition of repetitive motion injuries caused by computer use and other fine muscle movements.

One story I found particularly interesting was about how Frank had courted Lillian. Frank apparently encountered bricklayers at the home of Lillian's parents, and suggested how they might do their work more efficiently. The skeptical workmen watched as Frank quickly laid out a row of bricks and mortar in expert fashion.

Friday, October 2, 2015

SVG code template

Use this code to get started using SVG:

<svg width='600' height='400' viewBox='0 0 600 400'
    xmlns:xlink= "">

    <!-- the clipping paths and masks will go here -->


    <!-- the shapes and stuff will go here -->

    <rect x='0' y='0' width='600' height='400' fill='beige' />


Radial gradients:

Thursday, October 1, 2015

HTML code template

Here is a template for the minimal complete HTML page. If your page doesn't have all these elements, you should edit your page to include all of them. When you start a new page, you can copy and paste this code to get started.
<!DOCTYPE html>
    YOUR NAME HERE, date, project name, class, etc.
    <meta charset='utf-8' />
    <meta name="viewport" content="width=device-width"/> 
    <title>My Web Page</title>
    <style type='text/css'>
    /* styles go here */


    <h1>My Web Page</h1>
    <!-- page content will go here -->

    <script type='text/javascript'>
    // scripts will go here


Here is the code for a bullet list:
    <li>Mission College
    <li>Ohlone College
    <li>Gavilan College
    <li>Cabrillo College

Here is the code for a table:

Here is an excellent tutorial on HTML tables (thank you to the student who linked this to your page):