Day 138: Working Thursday

I have a headache this evening. It just started—time to stop soon.

Working backward, I was just re-reading the Strategy and Tactics Quarterly magazine on The American Revolution. Someone might want to read it, so I was just looking at it again and reading a bit.

I made dinner tonight of couscous, green beans with butter and almonds, and chicken Cordon Blu from frozen from Schwan’s. This is one of Susie’s favorite dinners and is simple to make and to eat.

I was watching some more of Nova’s “Making North American” series I purchase to watch on my Apple computer while cooking and cleaning. I usually find something to watch while cooking and cleaning in the kitchen. Again, this show makes you want to get out a shovel and see what is under the house!

As I started cooking, Corwin’s business partner left. He played me in two games of the board game Vindication before he left, I lost both. It was nice to play this game again, even with Evan taking me both times!

Before that, I received a text from Casey, one of the other gamers I never win against, that Twilight Imperium 4 board game just had an expansion released. After some trouble, I have ordered the new parts. The GenCon gaming convention is the once a year event where expansions and new games are launched. It is an online convention this year.

Work ended mid-afternoon. I spent the day rushing from a Zoom call to the next. I was out ill yesterday, and so it was a catch-up day thick with politics and a bit of fear. Layoffs and project deadlines are hitting at the same time. Add lockdown-virus, riots, and Black-Live-matters, and you have some serious mixed-up people at Nike.

Today started with me just waking without pain. No migraine today. Susie was also good.

I had no time for the stock market again. It went down from what I saw.

More than fourteen-hundred American deaths were reported today.

I think I did this one before but is good for a repeat, Methodist Hymn #159, Lift High the Cross.

 

Day 137: Wednesday with Migraine

IMG_1306

I awoke this morning with a continuation of the migraine I had started on Tuesday night.

Susie then asked me if she was dying. I was concerned as you can imagine. Susie was dreaming that her family was all here and she thought it was because she was so ill. The dream faded, and she was OK.

That put me in a very strange place emotionally with the migraine burning in my head and vision and Susie scaring me. I decided that I would take the day off as my emotions were in the wrong place.

I also received an email that suggested that our solution for converting data had been abandoned and that leadership wanted another miracle. My emotions were no place for that.

I got up and did all the electronic paperwork to take a day of paid-time-off (PTO). It was already too bright for me. Oregon is no longer gray but burning desert bright, but I could use just a few more days of gray, please. I put the out-of-office notice on and closed the laptop. I will not open it until after 9PM for a meeting set in India.

I returned to my staple for illness. I do not watch that many programs, but Deadliest Catch is one I follow. I watched all the episodes I missed. Crab fishing is fun to watch, and they are local heroes here in the Pacific Northwest (PNW). I play board games, and role-playing games (RPG) with a former captain of the fishing boats, and his family is still involved in fishing. It is cheering for the PNW and Alaska teams!

Nobody was up today. I decided to try a new place for lunch. I don’t cook Mexican style and was missing Mexican food. Victorico’s was delivered via GrubHub, beef tamales, rice, beans, and an extra beef crunching taco. It was more food than I usually order, and it was good. So Victorico’s is added to the possible lunch deliveries.

I then got Susie going and went to read. My head still hurts, but reading did not hurt. I think it distracts me from the pain.

I have a subscription to Strategy and Tactics Quarterly (STQ) that publish a single subject by a single author such as this one’s title, “Whirlwind: Kursk to Berlin,” about the Soviet and Fascist eastern front. More than a hundred pages, with few ads, of color maps and descriptions of battle after battle. Not everyone’s cup of tea, I understand, but STQ and their books are a detail that historians and gamer love. This publication includes notes of new sources and where the author has doubts. If you want to know everything about the Soviet-Nazi-Romanian-Bulgarian-Finland-Hungry-Yugoslavia front, that is the current scholarship and at the level that most wargamers and historians need, this is it.

If you want the American Revolutionary War details, that was the last issue–you can borrow mine. Their books on WWI, American Civil War, and Custer are treasured by me.

Corwin made dinner. Grilled chicken with alfredo sauce on the gas grill. We also ordered new parts for the grill after looking at it.

My head hurts still, but I helped a little with dinner. I watched the news while eating and tried to relax a bit.

Susie started her shows, I then watched the PBS show “Making of North America: Life” on my Apple. I would say it does for geology was Cosmos did for astronomy, wow! Just want to get out there and find a rock!

Which made me miss the first 15 of a late meeting for work. I managed my apologies and I think was able to help my Nike colleague Archana based in Bangalore India.

Archana called me back and we talked about the call and then we wandered-off topic and discussed our favorite topic: food! Dosa was the topic as it is one of my favorites. She makes the batter from scratch! I would always have some in India when I visit. Always fun to talk about culture!

Due to my migraine, I ignore the stock market.

The death rate in the used states increased to more than thirteen-hundred today.

I have never sung this song and I found this homey version online, Methodist Hymnal #411, Dear Lord, Lead Me Day by Day. This is a melody from the Philippines.

Day 136: Tuesday with Vindication

Work started at 6AM with a 7AM all-employee meeting hosted by Nike’s CEO, John Donahoe. The re-organization and layoffs were covered in the meeting. It always depresses me no matter how well done.

After that, the Zoom meetings started and consumed the rest of the day. I had little time to do more than deal with a few crises of the moment. I notice that there is now a stronger sense of urgency, almost fear, to get things done on time or to cut scope to ensure timely completion. Combine that with the Covid-19, Black-lives-matter, and layoffs, and we have a serious bunch of stressed-out people now at Nike.

Susie was up a bit early today, so I made her a chicken salad sandwich for lunch. I had one just before she was up.

Corwin and his business partner, Evan, had macaroni and cheese with peppers and Italian sausage for a late lunch and then left-overs for dinner. Susie and I had roast beef sandwiches for dinner. I had a salad as a snack later. Susie had ice cream.

Before snacking, Evan and I played one of my favorite games, Vindication. It was a learning game as Evan had not played it before, and I had not played it for quite some time. Once we got going, it played well and is never that repetitive.  I was involved in a little way of designing the game and know the game designer. I supported it in Kickstarter.

Evan discovered that he had the monster slayer and started to rack-up points and nearly caught me. I won with only 13 points ahead!

That is about it today. I did walk to the end of the street and back as it was only in the eighties today. I also did some research on Python-based machine learning during lunch–closing the Nike laptop for an hour.

Sorry for a short story today, but it was mostly boring stuff today.

I also had another migraine headache today that sort of made it a bit hard to write today.

I did not watch the market much. From what little I saw, the reports are about the dollar weakening is the big story. I am planning on hard-times and hoping I am wrong.

More than one-thousand two-hundred Americans are reported to have died from the virus today.

I found this hymn that I have never heard, Methodist Hymnal #728, and by Duke Ellington: Come Sunday.

Day 135: Monday Again

Back to work again about 6ish. Monday is now mostly status meetings and checking up on tasks for me. I can get little work done as Zoom meetings are all day. I managed a few items by email, and we did get some planning done for our up-coming data conversions. The day ran until about 6PM. I did manage to take a break in the afternoon, but it is too hot, 95F+, for a walk, so I just read and relaxed.

I made a chicken salad last night. In the 15 minutes I had for lunch, I made a chicken salad sandwich and ate it while a meeting was going on. We had a lunchtime meeting on how to be an ally on race issues. These are meetings where I listen and try to grasp what I need to do.

I received an order from eBay today. I ordered binoculars, and they finally arrived from the company that makes them, Oberwerk. I had looked up the best for general use, and stargazing and these 8×42 binoculars were recommended. I tried them out, and they do very well. The weight gets heavy after a while, but it is not impossible to hold them up for long periods. I am now ready for the next sky event!

IMG_1303

As work finished, I contacted a friend, and Susie and I meet her at the Golden Valley Brewery for dinner of burgers and beer. It is a hot night, but burgers and beer make it a bit better.

While writing this, I have been slipping outside looking at the stars and the moon with my new binoculars. We have a lot of light pollution in Aloha, but still, I could see many stars. Neowise is too low for me to see it tonight.

The market went up and down with the dollar sinking, and I believe I heard quiet worried talk about inflation starting soon. Gold is flying up as doubts emerge about the future of the US dollar. There were also chats about the moral peril of supporting airlines and other industries that could face a long downside. Nobody is talking about the dreaded ‘W’ recovery, yet. 

Screen Shot 2020-07-27 at 10.26.39 PM

** Today’s chart from https://www.worldometers.info/coronavirus/country/us

Today almost six-hundred Americans are reported slain by the virus. The death rate is increasing.

I found this name by flipping through the Methodist Hymnal, and I think I have sung it once at church–the name is so odd I remember being startled when I was told to turn to “Number 150: God, Who Stretched the Spangled Heavens.”

 

Day 134: Sunday Coding

It is hot and sunny today. I now have air conditioning this year. I decided that I had other interesting things to do than to melt outside. I stayed inside most of the day. I have to admit I did not get dressed until mid-afternoon.

And what created this lack of attention to the same Sunday process for months, you ask? Back to some Python coding and writing more machine learning code. So just pounding away on my Apple laptop for hours and hours.

Breakfast was the end of the Einstein bagels (they are good for about three days) and a banana. While I worked on getting my Apple back to top class, the morning and part of the afternoon vanished. First, PyCharm, my goto editor for Python, needs to be upgraded. I then needed to use Anaconda, Python update software, to upgrade all of my Python libraries. Not surprisingly, Anaconda needed an upgrade. Then I discovered that Anaconda would not load the machine learning libraries I wanted to use, keras, to handle the machine learning. This is from the examples, and I am not really ready for keras.  Of course, tensor flow is needed as keras uses tensor flow to perform the process.

I have to load most of the changes one at a time. I do manage to have Anaconda update my science libraries. I finally get to coding.

I harvest from my last big python program from eighteen-months ago my standard header and set-up. I like to use a header with all the system values that name versions and developers set. I also like to printout the versions, and the time a program takes to run. So I harvest all of that.

I find a warning that one of my libraries is out-of-date and growl at Anaconda and fix that too.

The day before I attended a Meet-up via Zoom with Knowledge Mavens that had Darren show us a basic machine learning example of how to make a neural network predict a number from hand-written numbers. I wanted to get that working.

As usual, with Python machine learning, it all went sideways. I could not get the libraries to load that had the examples, mnist is a set of files of images of handwritten digits. I searched Stack Overflow, the source of all knowledge for writing Python on the Internet, and found a hint. Yes, my new version of keras had overwritten mnist with a special keras version. So I found a new example and mixed and matched Darren’s code from yesterday with another example using keras version of mnist. At about 3:30PM, I had a working example.

My example code can predict handwritten digits to 97%. I was happy to get back to Python and faced down all the challenges. I did play with the setting in the neural network and managed better and worse results. My program runs in about thirty seconds and runs ten epochs.

#!/usr/bin/env python
"""
    Copyright 2020 by Michael Wild (alohawild)

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

==============================================================================


"""
__author__ = 'michaelwild'
__copyright__ = "Copyright (C) 2020 Michael Wild"
__license__ = "Apache License, Version 2.0"
__version__ = "0.0.1"
__credits__ = "Michael Wild"
__maintainer__ = "Michael Wild"
__email__ = "alohawild@mac.com"
__status__ = "Initial"

from time import process_time
import sys
import numpy as np
import keras
from keras.datasets import mnist
from keras.layers import Dense
from keras.models import Sequential
from keras.preprocessing.image import array_to_img
from keras.utils.vis_utils import plot_model
from keras.utils import np_utils

# ######################## shared ##############################

def run_time(start):
    """
    Just takes in previous time and returns elapsed time
    :param start: start time
    :return: elapsed time
    """
    return process_time() - start


def view_image(img):
    img1 = np.expand_dims(img, 2)
    pil_img = array_to_img(img1)
    pil_img.show()

# ****************************************************************

# =============================================================
# Main program begins here


if __name__ == "__main__":

    begin_time = process_time()

    print("Program Numl.py")
    print("Version ", __version__, " ", __copyright__, " ", __license__)
    print("Running on ", sys.version)
    print("Version numpy     :", np.__version__)
    print("Version keras     :", keras.__version__)

    # Load images from models
    (X_train, y_train), (X_test, y_test) = mnist.load_data()

    # flatten 28*28 images to a 784 vector for each image
    num_pixels = X_train.shape[1] * X_train.shape[2]
    X_train = X_train.reshape((X_train.shape[0], num_pixels)).astype('float32')
    X_test = X_test.reshape((X_test.shape[0], num_pixels)).astype('float32')

    # Normalize the model images.
    train_images = (X_train / 255) - 0.5
    test_images = (X_test / 255) - 0.5

    # Flatten the images.
    train_images = train_images.reshape((-1, 784))
    test_images = test_images.reshape((-1, 784))

    # get labels
    train_labels = np_utils.to_categorical(y_train)
    test_labels = np_utils.to_categorical(y_test)
    num_classes = test_labels.shape[1]

    print(train_images.shape) # (60000, 784)
    print(test_images.shape)  # (10000, 784)

    # Build keras model
    model = Sequential([
        Dense(64, activation='relu', name='Input', input_shape=(784,)),
        Dense(64, activation='relu', name='Hidden1'),
        Dense(64, activation='relu', name='Hidden2'),
        Dense(10, activation='softmax', name='Output'),
    ])

    model_time = process_time()
    print(" ")
    print("Begin modeling...")

    # Compile the model
    model.compile(
        optimizer=keras.optimizers.Adam(),
        loss=keras.losses.categorical_crossentropy,
        metrics=['accuracy'],
    )

    # Train the model.
    model.fit(
        train_images, train_labels,
        validation_data=(test_images, test_labels),
        epochs=10,
        batch_size=200,
        verbose=2
    )
    scores = model.evaluate(test_images, test_labels, verbose=0)
    print("Baseline Error: %.2f%%" % (100-scores[1]*100))

    print(" ")
    print("Model Run time:", run_time(model_time))

    # Predict on the first 5 test images.
    predictions = model.predict(test_images[:5])
    # Print our model's predictions.
    print(" ")
    print("First five values")
    print(np.argmax(predictions, axis=1)) # [7, 2, 1, 0, 4]
    print("Compare the labels")
    # Check our predictions against the ground truths.
    print(test_labels[:5]) # [7, 2, 1, 0, 4]

    print(" ")
    print("Run time:", run_time(begin_time))
    print("...Finished...End of Line")

I then read some of the rules I picked up from the gaming stores to unwind. It is hard to change gears.

Dinner was grilled teriyaki chicken with green beans. I did have to go outside for the grilling–oh my! I served Susie and myself.

I had boiled the chicken before teriyaki sauce and grilling to ensure it was cooked and remove the flame-ups. Often raw chicken with teriyaki sauce is a fire hazard with a burned outside and uncooked in the middle. I avoided that.

I kept some chicken out of the flames and teriyaki and made chicken salad for tomorrow.

I cleaned the kitchen and then poured myself a gin and tonic before writing this. It is the right kind of day for gin and tonic. It is made from Oregon Gin, Canda tonic, and the lime was from Mexico. A perfect liberal drink!

IMG_1301

Today more than four-hundred fifty people in the USA died from the virus, according to reports. The week’s totals are ten percent higher than the previous week.

With all the attacks in Portland and the problems and the terrible losses, I picked The Star Spangle Banner from here in liberal Oregon and Portland Greater Area. This is followed by “American the Beautiful” in the video.

The drink is empty so it is time to stop. Good night!