Posted on

Climbing season begins

I’m putting together some borrowed gear for climbing. It’s a big rack.  I’ve been playing a lot of ping pong for exercise. I’m a decent defensive player, able to dig for balls that appear to be hopeless. I have a couple pretty good serves, and can occasionally get in a good slam, though it’s not reliable yet.

So when I heard there was a ping pong tournament at the local climbing gym I got all excited. The prize was a $180 pass for 10 visits. Most young people are too busy playing video games and don’t pursue ball sports. And if they are athletic, I figured they’d focus on climbing, at the expense of ball sports.

The first young guy I played had a little talent but clearly didn’t spend a lot of time at pong. Then I sat out and watched 3 games with people who I thought I could beat…or at least equal.

When my turn came again I was matched with a 23 year old guy who held his paddle with the penhold grip. If that wasn’t scary enough, the way he was bouncing on his feet like a boxer sealed the deal. From the very first time his ball came over the net I knew I was in serious trouble. Every ball had a wicked spin. They’d float over the net headed south, but after the bounce they’d head east, or west, or any direction but the original vector.

I lost 8 to 11 and went home in a bad mood. I mean, really, what was I thinking? I’m 64 and I went to tournament in  a climbing gym full of people in their 20’s. It was inevitable that I would loose. Pick any activity, and no matter how good you are, there is always going to be someone better. Add in the factor of age, and it just happens more often.

While I was stewing in my bad mood I got to thinking about all the things at which I am mediocre. Here is my list. I have mediocre skill at the following:

  • rock climbing
  • backcountry skiing
  • downhill skiing
  • ping pong
  • guitar
  • chromatic harmonica
  • landscape, still-life, seascape painting
  • photography
  • operating an industrial sewing machine
  • operating a printing press
  • programming JavaScript
  • filmmaking
  • studio lighting
  • electrical wiring

And here is my list of things at which I  consider myself to be talented:

  • parenting…kids turned out great!
  • blues harp
  • teaching ( I was awarded tenure…until my program closed)
  • HTML5, CSS3, JavaScript Animation
  • Photoshop and Illustrator
  • WordPress
  • portrait painting
  • life planning (our house and cars are paid off)
  • marriage…though Sue might disagree?
  • inventing, designing and trouble shooting…I make things
  • social skills, I can get along with anyone.

After a couple days of thinking about it I came around to the realization that being a jack of all trades, master of none means I am quite good at one thing that isn’t on either list:

I am really good at having fun! The fact that I am mediocre at an activity doesn’t stop me from enjoying it. That long list of things at which I am mediocre represents a lot of time…a lifetime really…of trying different things…and focusing in on the fun ones.

I’ll be working three days a week again in April. That will be fun to get a pay check again. I sort of miss those. In late June I’ll be off again for the summer…which might be really sweet. I plan to keep studying JavaScript. I decided to give up Python…I think that was a wrong turn. I realized there was much more to learn in JavaScript so I got a new book called Eloquent Javascript that looks fun.

 

Posted on

Skied up Mount St. Helens

Clint, Craig and I skied up Mt. St. Helens yesterday.  I ate steak and potatoes the night before but it wasn’t enough. At the halfway point we could see figures on the summit, but my endurance was very low. I could skin up about 100 feet, then I’d have to pause for a while to catch my breath, and repeat. The distances between pauses got shorter the higher I got.

I apologized to Clint for going so slow, and he said he wasn’t in any hurry, that I should take my time. My son and Craig are both superb skiers, while I am mediocre at best. I was the oldest guy on the mountain by at least 20 years. Most of them were between 25 and 35. Most of the 100 people we saw were on snowshoes or on foot. It’s weird that only about 1 in 5 were on skis. Skis made the trip down a lot faster, and in spots the skiing was excellent, feeling like  the steep section of a blue run at Crystal i.e. the Forest Queen chair lift. The skiing down Worm Flow couloir was fairly easy in spring corn, though it had some cement snow in places.

Down lower on the main hiking route there were tons of post hole tracks which made for choppy skiing. I was so tired by then (10 mile round trip, 4500 feet gain) that all I could do was shaky snow plow turns. We were racing the light, as getting caught in the dark on icy snow was not an attractive option.

 

# # Example file for parsing and processing JSON # import urllib import json def printResults(data): # Use the json module to load the string data into a dictionary theJSON = json.loads(data) # now we can access the contents of the JSON like any other Python object if "title" in theJSON["metadata"]: print(theJSON["metadata"]["title"]) # output the number of events, plus the magnitude and each event name count = theJSON["metadata"]["count"] print (str(count) + " events recorded") # for each event, print the place where it occurred for i in theJSON["features"]: print(i["properties"]["place"]) print("-----------------\n")#this runs after the for loops is done # print the events that only have a magnitude greater than 4 for i in theJSON["features"]: if i["properties"]["mag"] >= 4.0: print "%2.1f" % i["properties"]["mag"], i["properties"]["place"] print("-----------------\n")#this runs after the for loops is done # print only the events where at least 1 person reported feeling something print("Events that were felt: ") for i in theJSON["features"]: feltReports = i["properties"]["felt"] if feltReports != None: if feltReports > 0: print "%2.1f" % i["properties"]["mag"], i["properties"]["place"], " reported " + str(feltReports) + " times" def main(): # define a variable to hold the source URL # In this case we'll use the free data feed from the USGS # This feed lists all earthquakes for the last day larger than Mag 2.5 urlData = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.geojson" # Open the URL and read the data webUrl = urllib.urlopen(urlData) print ("result code: " + str(webUrl.getcode()))#returns: 200 = true, it got data if (webUrl.getcode() == 200): data = webUrl.read() printResults(data) else: print("Received error, cannot parse results") if __name__ == "__main__": main()
Me and my son Clint
Summit shot, me, Craig & Clint
Summit shot, me, Craig & Clint

 

St. Helens crater
St. Helens crater

 

Clint and Craig lunch break, Mt. Adams in the background
Clint and Craig lunch break, Mt. Adams in the background

I’ve been studying Python. My Django studies got weird because Django runs in Python and I’d never done Python. Sometimes I feel like I’m trying to learn Japanese, French, Russian and Spanish all at the same time.

This was my latest exercise. This is the Python code for pulling JSON data from the USGS Earthquake website. It formats the data and then spits it back out as a list of recent earthquakes with information about strength, location and whether it was felt.

 

Posted on

Recent Songs

I’ve been playing guitar and or harmonica about an hour a day recently. Along with regular exercise, it helps me stay balanced. Music is a wonderful gift I got from my parents, who were also both amateur musicians. Dad sang into his 90’s, and mom played the piano.

Here are my recent songs. Finding the  sheet music and chords for any given song is a challenge. The two websites linked here seem to be the current best choice. Both of them allow you to transpose the key. Transposing is essential if you are a beginner, as I am on the harp. I need as few flats and sharps as possible. Plus the key needs to fit my voice and the guitar chords need to be easy. It’s a lot to ask, but those websites make it happen. And for $5.50, the sheet music is nicely priced and instantly downloadable.

Once I get the chords, I copy them into Word and massage them so they are correct, and so they fit on one page. Here are 4 of my most recent songs.

 

bobby-mcgee
bobby-mcgee

 

save-best4-last
save-best4-last

 

candle-in-wind
candle-in-wind

 

my-father-chords
my-father-chords

 

Sitting on the dock of the bay
Sitting on the dock of the bay
Posted on

Skiing and climbing in one weekend

Saturday Sue, Lisa and I skinned up to Pebble Creek above Panorama Pt. Then we dropped into the bowl above the top of Mazama Ridge, where a cloud rose up to meet us just as we got to the best snow. We skied blindly for half an hour, trusting in our previous trips there to know we weren’t skiing off cliffs. That was nerve wracking. Lisa is the best skier and was boldly leading out ahead. She’d do a few turns into the white out, holler up that it was ok and we’d follow.

Eventually we came out of the cloud but by then we were in the flats on top of Mazama. Another half hour brought us to Clints snowcave. He, Craig, Tony and Mike had skied up with overnight gear and were well into a 4 man snow palace.

It was getting on toward 4 PM by then and we couldn’t stay long as the car was several miles down and away in deep cement snow. It was a lovely day with the family, but we were very glad to get to the car. Sue and I were exhausted but Lisa could have probably done it all again.

I got up early Sunday and drove to Vantage with Vitaliy, Christine and Julia. We met Vladi and a few other gym friends there. I got up Air Guitar and Pony Keg cleanly, but had to hang on Whipsaw and Sunshine Buttress. My absence from the climbing gym has made my fingers weak. It was great hanging out with so many good climbing friends. Even Chad was there and we talked about Indian Creek.

When we got to Ellensburg there was a roadblock on I-90. The pass had shut down due to snow. It took us a total of 8 hours to drive home from Vantage, including waiting at a restaurant for an hour. We took 97 over Bluit Swauk Pass, then Stevens Pass, and 203 down through Carnation to Julias car at North Bend.

Lisa's 30th birthday. From right, me, Clint, a nurse, nurse, Lisa, Bonnie
Lisa’s 30th birthday. From right, me, Clint, a nurse, nurse, Lisa, Bonnie

 

Vitaliy, me, Christine, Julia, ?, AJ, ?, Christian
Vitaliy, me, Christine, Julia, ?, AJ, ?, Christian at Vantage

 

Lisa and Clint top of Mazama Ridge
Lisa and Clint top of Mazama Ridge

 

Looking up above Pan
Looking up above Pan

 

Lisa and Sue top of pan

 

Posted on

to do app in html5

I spent a full day trying to debug an indexedDB JavaScript lesson. It would work on my iPhone, and on codepen, but nowhere else. It wouldn’t  work at all on my MacBook, except for codepen.com. I knew my code was clean because typing errors are always the first thing I check. And the way it was behaving, I could tell it was some kind of security blockage either on the hosting servers or in the browsers.

While searching for an answer I came across another free online tutorial, and this one worked. I don’t know why it worked because it was structured much the same, though with subtle differences. Anyway I was able to combine stuff I’d learned in both tutorials to make a pretty sweet little  pure  HTML5 and vanilla JavaScript  note taking app.

Once I had it running I realized it was missing the drag and drop functionality I’ve come to expect in apps like wunderlist. After a quick google search, I found a tutorial that built a drag and drop list. Sadly, that one has a problem on mobile devices. You can drag the list items on a computer, but not on a phone. Phones have a different set of responses and the  eventListeners are set up completely different from computers.

But more searching led me to this cool tutorial page with links out to the slip.js library.

And finally I had a very nice little “todo” note taker app. It’s still not hooked up to a database…that may be coming. But it’s actually quite useable. There are 400 lines of code, not counting the slip javascript library. I prettied it up with some style sheets, and tried to make it mobile friendly.

It’s tricky to embed it in WordPress. There are conflicts with classes and ID’s. So instead, here is a direct link on my server.. It remembers your list items as long as you don’t clear your browsers cache. It does not sync with your computer though… You need wunderlist for that.

Just for practice, I’ve also posted it up on codepen so that you can tinker with it, if you should so desire.

There are two js files that run it. This is the one that hooks it up to the indexedDB database.

And here is the one where I did quite a bit of customization, you can see the drag and drop “slip” references at the bottom.

The style sheet got fairly long  because…well…I’m sort of artsy and I wanted it to be pretty.

 

Posted on

HTML5 To Do shopping list app

I’ve been using both Evernote and Wunderlist for years. I’ve built a ToDo list before in jQuery that came close to Wunderlist. It had draggable list items, and delete item checkboxes. But when studying JavaScript, jQuery is considered cheating.

So I was pleased to see this one show up in my latest online lesson. I prettied it up with some style sheets. I’m waiting until later in my studies to figure out how to connect it to a database, hopefully with something like Node.js. For now though, it just works in the browser session memory. It’s cool to make useful things that actually work. This one embedded in WordPress has some extra padding related to WordPress styles, but the direct link outside of WordPress works as intended.

Shopping list


You can also access it here as a direct link outside of WordPress.

Posted on

Custom HTML5 video player controls

We had an inch of snow today. I took a brisk walk around the block on the sunny, but slippery sidewalks before getting back to work programming.

Yesterday our exercise was to remove the default html5 video player controls, then substitute a handbuilt controller. As an added challenge, they asked if we could program in a clickable playhead. They gave us a couple clues, but thinking it through was a  brain squeezer. There was a 190 pixel wide area where the progress bar walked across as the video played.

Somehow that area needed to become clickable. When clicked, the video should play at that percentage. Meaning, if you click half way across the progress bar area, the video should jump to the halfway point.

I can’t post the video here in WordPress without a lot of trouble from width properties. So instead I’m linking to it here as an external page. But the code is shown below. The magic in the  clickable progress bar is on line 157: function jumpTo(e){…}

My solution isn’t a true draggable playhead, but it does at least navigate, and displays a nice red bar when clicked.

 

Posted on

Rotate in 3D with JavaScript

I’m taking online classes in Javascript for a few months while I’m between contracts. I learned how to animate a cube in 3 dimensions today. It uses a library called three.js. As with Jquery libraries, we plug them in (three.js) to make things easier.

I wrote these 50 lines of code that makes it work. It’s a fun lesson, but the full credit needs to go developer.mozilla.org. A lot of that stuff makes no sense to me. I gotta be honest…some of these lessons are so far above my head I wonder sometimes if I’m totally wasting my time learning this stuff. I mean these people are geniuses, probably with masters degrees in computer science. I can write their code and make the lesson work…but full understanding would only come with doing it full time.

 

In other news, I removed my woocomerce store and shopping cart. I had zero sales from it, and it was always worrisome that I would have a purchase while I wasn’t paying attention…which could lead to an unhappy customer. I’m thinking I might try etsy at some point as some artists are selling there.

Selling my paintings is very low on my priority list right now. I think of myself as being in college full-time. I’m hitting the books every weekday, 9 to 5. The only unusual thing is that I’m not enrolled anywhere. I’m doing self study. This stuff is all free online…no need to pay a teacher. Hmmm, that might be a contributing factor to why I’m not working this quarter as a teacher. Go figure.

Posted on

Christmas at Joshua Tree 2017

I can’t spare the time to write the story of my trip this year. But it was awesome, perhaps the best jtree trip in 9 years. Good climbing trips are all about finding a good partner.

Clouds high above Vitaliy on Sexy Grandma
Clouds high above Vitaliy on Sexy Grandma

~

Vitaliy
Vitaliy on Papa Woolsey

~

me on bambi and godzilla
me on bambi and godzilla

~

Me leading Fisticuffs, 10b
Me leading Fisticuffs, 10b

~

Vitaliy following Fisticuffs
Vitaliy following Fisticuffs

~

Night photography

~

Micah following The Watershute 10B

~

Vitaliy on Orphan

~

Craig following The Watershute

~

Me leading The Watershute. First bolt is 20 feet up. It’s a scary lead but the stemming feels secure to get there.

~

Vitaliy following my hangdog lead of Heart of Darkness, 5.11

~

Rapping off Strawberry Jam outhouse rock

~

Me and some awesome friends

~

New Years eve

~

New Years eve

~

~

~

~

~

~

Posted on

Doubles Ping Pong

ping pong Alex brother

I grew up with a ping pong table in dad’s basement. Three years ago Marty and I played pong on a climbing trip at Squamish and fell in love with the game again. We were having as much fun playing pong in the evenings as we did climbing during the day. We would trash talk each other’s climbing abilities with promises of revenge at the table after dinner.

And then the battles for superiority, man that game is fun! When I returned from that climbing trip I built a table from some scrap plywood and have it in our spare bedroom. Sue and I play when we can. This is a picture of a  friend who came over to play. So when I heard that our new community center had ping pong twice a week I decided it would be nice break from studying and a good way to get some exercise.

When I walked in I was a little alarmed to see people my age, and older. One woman was 73, and one of the guys has a stiff back.  But I try to never judge a book by it’s cover and was soon batting the ball around. They specialize in doubles in this gym, which I have rarely played. That first day, I ran over my partner going for a ball and knocked her to the ground. Everyone looked shocked, as if I’d committed a horrible sin. I felt terrible and apologized of course, though in my sports: climbing, skiing, hiking,  windsurfing, volleyball, falls are normal.

She got up slowly and kept playing, saying she was well padded. But I could see my first day with these people had got off to a bad start. Despite being seniors, several of them are a lot better than me. They have wicked serves and slams that rarely miss. Some of them are really good!

In doubles, you only hit every other ball. So if your partner is serving, you stand back. As soon as  the ball goes over the net, the table is yours. You hit the returning ball and dash out of the way. Your partner hits the next one while you stand behind them…or at least out of their way. Then it all repeats.

Often, because you are behind your partner when they are hitting the ball, you have no idea what has happened. Your partner hits, then circles around behind you while you assess the situation: where is the ball, and where is it headed…assuming the other side has managed to hit it back. It requires intense concentration to be in the right place to return the ball, while simultaneously avoiding colliding  with your partner, who is hovering nearby, getting ready to return to play.

I’d liken doubles table tennis (it’s official name) to a dance. When it’s done well for several rallies there is a beauty that builds up…a sense that magic is happening and we all try to keep it going for as long as possible. I know it all sounds a bit stupid, batting a little white plastic ball around a table. But after a couple hours I’m sweating and wishing I’d worn shorts and a tank top, in February.