Star Wars

Just some random ramblings about my memories of seeing various Star Wars films . . .

The Original Trilogy

The first Star Wars movie I saw was The Empire Strikes Back.  It is also the first movie I remember seeing in a theater.  I went with my parents and older sister to some theater in down town Brussels.  In all honesty, I don’t think I had much idea what was going on, but I do remember the experience of going to a movie as a family.

It was about two more years before I saw A New Hope.  It was on a trip to Berlin with my father and older sister (my younger sister had just been born and stayed home with my mother).  The apartment in which we stayed had a VCR and “A New Hope” was one of the available tapes.  Being older, I was able to better appreciate the movie.

It was the summer of 1983 when Return of the Jedi was released and at the time we were visiting family in Idaho.  My older sister and I went with a few cousins to see the show.  I was at a good age to enjoy the Ewoks and fondly remember the outing to see the show.

The Prequels

My experiences with the prequels are less interesting and less memorable.  Episode I was seen in Arizona while visiting my new sister-in-law.  A couple years later in Colorado I accidentally saw Episode II a week before it was officially released.  I still haven’t seen Episode III even though upstairs there is a Blu Ray disc containing the film (and it has been sitting there for several years now).

Post Lucas (aka The Disney Years)

The Force Awakens had it’s official release date of 18 December 2015, but I managed to get tickets to a 9:30pm showing on 17 December which happens to correspond with Boy#1’s birthday.  So as a birthday present I took Boy#1 and Boy#2 to experience a Star Wars movie in the theater for the first time.

I purchased six tickets for $75.60 to see Rogue One at 8:00pm on 15 December 2016–again one day before the official release.  The tickets were for me, Boy#1, Boy#2, Boy#3, friend of Boy#1, and friend of Boy#2.  The movie was satisfying, but what I remember most was getting to and from the theater.  We had gotten a fair amount of snow (for Oregon at least) and the minivan couldn’t make it up the hill to get out of the neighborhood so we bundled up and walked the two miles to see the show and then walked home with Boy#3 soldiering on without complaint even though he was half-asleep.

In October 2017 I purchased six tickets for the 9:30pm showing of The Last Jedi on 14 December–Boy#2 had a band concert that evening so the later show time was requisite.  So after the concert, the entire family zipped home for Boy#2 to change from his concert apparel and then we all headed to the theater.  This was the first opportunity my daughter had to experience a Star Wars movie in a theater; she fell asleep.

The release of Solo corresponded with my daughter’s birthday–she was not overly keen to see the movie, so we didn’t.  I expect I will see it sometime, but for now I remember not seeing the film.

 

My Stand-Up Family

Artistic rendition of family stand-up meeting

Every morning at work, I participate in a team stand-up meeting.  During this fifteen minute meeting, the kanban is displayed and each team member briefly answers these three questions:

  • What did I do yesterday (towards sprint goal)?
  • What am I doing today (towards sprint goal)?
  • What is blocking me (from sprint goal)?

It doesn’t take very long for as many as 20 people to report and we are usually done early.  If someone is blocked, a subset of people may remain afterward in order to figure out how to remove the block.  But this post isn’t about stand-ups in the tech world rather how my family is also having a daily stand-up.

For many years my family has had a bedtime routine.  It has evolved over the years as the children have aged, and a few weeks ago we added a stand-up where everyone reports:

  • What did I do today?
  • What am I doing tomorrow?
  • What is blocking me?

It has taken some time to get the scope correct.  For example, breakfast menu typically doesn’t need to be reported and being tired is not a blocking issue.  Now we are more likely to hear about accomplishments such as a song being passed off at a music lesson or blocking issues such as a child needing to be somewhere and lacking transport.

I’ve seen benefits from having the family stand-up every evening:

  • More accurate calendaring–we have a shared family calendar that displays on the BakBoard and is available on our various electronic devices, but sometimes activities and appointments aren’t added to the calendar.  When someone mentions something for the next day that isn’t on the calendar, we get it added.
  • Everyone is better informed–there usually isn’t anything that is new to everyone, but often there is something that is new to someone.  We now have fewer situations where a subset of the family is ill-informed as to what is happening.
  • Offers to help–when someone reports being blocked, other family members often immediately volunteer to help resolve the issue.
  • Positive reinforcement–when someone reports a worthy accomplishment, the family promptly provides proper praise.

Even though both my work and my family stand-up meetings follow the same pattern, the implied context of the questions is different.  While work stand-ups are focused on the sprint goals, family stand-ups deal a lot more with schedule synchronization and individual well-being.  Also, blockages reported in a family scenario are more likely to include details of interpersonal squabbles.  This perhaps suggests that the family stand-ups could benefit from defined goals rather than the implicit “make it through the week somehow.”

I am glad that we started having daily family stand-ups–it has made some things easier.  I expect that over time the family stand-ups will continue to evolve as we see what is most effective for our needs.

10000 Steps!

About 4.5 years ago I started wearing a Fitbit and tracking my steps.  The default goal is 10,000 steps per day and I made that my personal goal.  Some days I do not meet that goal either because of illness, scheduling, weather, or laziness, but most days my Fitbit jiggles and I exclaim “10,000 steps!”  In the 4.5 years I have walked over 17,500,000 steps which averages out to just over 10,000 steps per day and my record for continuous days over 10,000 steps is over 100 days.  But this post is not about steps.

Just over a year ago I underwent some surgery.  Not only did my step count plummet, but I was unable to do any strenuous activity for six weeks–particularly nothing that would use my abdominal muscles.  After that activity hiatus, I wanted to do something to get into better shape without overdoing it.

I couldn’t do a lot, but I could do five pushups and five sit ups without feeling too much strain in the scarred area of the surgery site.  So I did five pushups and five sit ups every day for six days.  Then I did six pushups and six sit ups every day for another six days.  Then seven and then eight.  I kept on doing pushups and sit ups every day and added one more about every six days (the number of days varied slightly so that I would add five every month).

It never got particularly easy and, as the daily count grew, some days I would break up the count into multiple sets.  But every day it was doable.  After several months, I reached the point where I was doing 50 pushups and 50 sit ups every day.  That’s where I stopped adding to my daily count, but still continued with the daily activity.

Approximate number of pushups and sit ups per day

So now it’s been a year since I started and I am still doing 50 pushups and sit ups every day.  It still isn’t easy, but it is always doable.  When I started, five seemed hard, but now I zip past five, ten, 15, 20, and beyond before even noticing the effort.

As I realized it’s been a year, I wondered if I could say “10,000 pushups!” and “10,000 sit ups!” so I decided to do some rough math and see about how many I did.

Total number of pushups (and sit ups) over the course of the year

It took about three months to do the first thousand, but the rate increased and the total grew ending up closer to 12,000.

So if you can do five pushups today, you can do 10,000 in a year.  10,000 pushups!

A Better Movie?

The Princess Bride is a great book and a great movie.   I recently read Cary Elwes’ book As You Wish: Inconceivable Tales from the Making of The Princess Bride and learned a lot about the making of the movie.  Normally the book is better than the movie, but in the case of The Princess Bride I think the movie is just as good as the book and arguably better because it has had a wider influence.  Reading Elwes’ book caused me to think a lot about why The Princess Bride movie is so great.

I like a good story, but even a good story needs to be told properly.  When verbalizing a story, I use different words and sentence structures than when I am writing the same story.  There are many ways and mediums to tell the same story and many of those have been used to tell the story of The Hitchhiker’ Guide to the Galaxy.  Some stories, or at least some narratives, tend to work better for certain mediums and I think often when a good book is adapted for screen that the movies isn’t as good because the medium isn’t as right for the story.  But this is not the case for The Princess Bride.

William Goldman, a gifted author, wrote The Princess Bride book in 1973.  But Goldman is also a gifted screenwriter, and I think in the years between writing the book and then crafting the screenplay he thought a lot about how to tell the same story in a different way.  This means that the movie,  while not 100% faithful to the book, is still faithful to the story.

Both the book and the movie tell the story of a six-fingered man, iocane powder, rodents of unusual size, true love and more.  The book can provide a depth of details that couldn’t effectively be conveyed in movie format, but the movie is incredibly quotable.  I wouldn’t go so far as to claim the movie is better than the book, but I think it is just as great because it is the same story told by a creator skilled in telling a story in two different mediums.

 

My Accidental Introduction to Yoshikawa Eiji

I really enjoy the writings of Yoshikawa Eiji.  I’ve already written far too much about Yoshikawa and his writings in my thesis Yoshikawa Eiji’s Three kingdoms as Japanese literature, but in that sort of academic paper there isn’t much opportunity to mention my personal experiences with his writings.

I encountered Yoshikawa by accident.  I was at a Barnes and Noble bookstore looking for a Yoshimoto Banana book (a very different author) when I saw a paperback of Musashi (actually, as I later learned, only the first part of the story) and bought it based only on the information on the cover.  I often find myself reading multiple books during the same stretch of time, and I remember while reading Musashi I was also reading Foucault’s Pendulum so the two books will always be strangely linked in my brain despite having little in common.  I was sad when I reached the end of my incomplete Musashi and so I soon invested in a volume containing the complete text.  Since then, I’ve spent many hours reading various writings by and about Yoshikawa Eiji in both English and Japanese.

When I read the literary works of Yoshikawa Eiji, I enter a vivid world with rich characters.  Unlike many books where the protagonist is a generic “everyman” or “everywoman” (although typically with a bit of spunk) which take place in the “here and now” or thereabouts, Yoshikawa’s books take place during specific times and places in history centered around actual historical people.  Of course there is a lot of fiction filling in the details.  In the past I have said that if a person is going to read only one book of Japanese literature, it should be Endo’s Silence.  However, typically when I am recommending a book to introduce someone to Japanese literature, I will suggest Yoshikawa’s Musashi.

 

 

 

 

My Sheveled Desk

It’s no secret that my desk is neither neat nor tidy.  Apparently the second Monday in January (today) is “National Clean Off Your Desk Day”, so I decided to clean off my desk.  Here are some items I encountered:

  • Three paper crowns (one from Christmas dinner, one from dinner of New Year’s Eve, and I’m not sure about the third–perhaps Christmas 2016)
  • Screws for the upstairs tub faucet (now reinstalled)
  • Two tape measures (not counting the one on the shelf across from the desk)
  • Tickets for the Lantern Tour of Jewel Cave from 21 June 2016
  • The case for my Leatherman multitool (on the opposite end of the desk from the actual tool)
  • The case for my HP 48G calculator (on the opposite end of the desk from the actual calculator)
  • Eight tins originally containing Altoids, Trader Joe’s Gingermints, etc. (now mostly empty, but one containing ear buds and two contained dryer lint and matches)
  • Two pair sunglasses (I never wear sunglasses)
  • Three D20
  • Random dusty picture of me and my wife (taken by an elephant statue in Dallas, Texas in 2000)
  • Container of BB’s (last used in early 2016 to add mass to a Pinewood Derby car)
  • Battery cover for a remote (no sign of the remote)
  • Several batteries of unknown charge (mostly size AA and AAA )
  • Dozen CDs and DVDs (including Ubuntu 15.10, DBAN, and “A Sesame Street Celebration”)
  • Numerous checks that have been deposited via smart phone

Basically I removed pretty much everything from the desk that wasn’t connected by wires (and some things that were).  Cleaned and sanitized the keyboards and mice and phones.  I decided the second phone doesn’t need a spot since I only use it every three months or so.  I replaced items that I frequently use (such as glasses, calculator, box cutter) into the usual locations.  The improvement is significant.

Now I’ll wait for “National Clean Up the Rest of Your Office Where You Dumped All the Stuff When Cleaning Off Your Desk Day”.

A Knife in the Dark

I have happy memories associated with Little House on the Prairie and the other books by Laura Ingalls Wilder. Some people seem to consider the books to be “girly” or fluff, but I think them to be a great read both for what they are and for the memories experiencing the books with family.

I was about five or six when my mother read the series aloud to me and my older sister.  The things I remember most from the story are 1) the kids using the pig’s bladder as a ball and 2) the snow fort and subsequent snowball fight.  But what I remember best was that while my mother was reading about the struggles of the Ingalls’ family, my father would quietly appear in the doorway behind her and mime the story–somehow even the most somber of stories was hilarious when depicted in that manner.  When my sister and I would burst out laughing, my father would disappear behind the corner before my mother could turn around.

A few years ago, while visiting my parents, I stole those same books (which technically belong to my sister) to share with my children.  We spent a few months of after dinner reading time working our way through the series.  The kids found the stories interesting and entertaining.

In order to carry on the tradition of silliness, and also to make sure everyone was paying attention, I would occasionally slip in a little bit of extra content.  Typical favorites would be to add “A Ghost in” at the beginning of a chapter name and/or append “of Doom” to the end.  So while reading These Happy Golden Years and not long after advertising “Sleigh Bells of Doom”, I read out the chapter title “A Knife in the Dark”.  Nobody believed me until I displayed the actual text.  So now that chapter (or at least the title) is probably the family favorite and best remembered both for the ominous tone and for the memory of disbelief.

Some may say that the “Little House” books are for girls, but to me they represent fatherhood.  For the stories about about the fathers in the books.  For the stories acted out by my father.  And for being a father with children dubious about a chapter entitled “A Knife in the Dark”.

Watching the Eclipse

Apparently if I were to drive about 21 miles southwest from where I live, I could experience eclipse “totality”. Instead, I’m going to stay home and be satisfied with 99.3% coverage of the sun.

Like most people, the family procured eclipse glasses.  We also pointed the telescope at the sun and directed the view piece onto paper.  Viewing it on the paper made it easier to see the actual movement.

 

 

 

 

 

 

Another interesting thing we observed was that the sun shining through the trees created slivers of light shaped the same as the mostly obscured sun.

Back in 1984, when I was about the age of the girl child, I remember seeing an eclipse in Montgomery, Alabama.  I hope the kids have happy memories of today.

Dynamically downloading a JAR and adding to classpath

I recently had a situation where I had a JAR that had dependencies on another JAR, but wouldn’t always be packaged with the other JAR.  I’m not completely happy with what I ended up doing, but since I succeeded in doing what I wasn’t certain was possible, I decided to document it.  Basically (as the title suggests), I tweaked my code so that at runtime it will download the JAR and add it to the classpath.

Downloading from a URL

Normally I’d use something like the Apache Commons IO library to help with downloading the JAR, but since that’s one of the pieces in the JAR to be downloaded, I’m in a catch-22 situation.  Instead, I used vanilla Java for the implementation.  I ran into some minor complications because the server hosting the JAR did not have a signed certificate, so I had to force Java to ignore certificate errors.  Fortunately, no authentication was required–otherwise things would have been a bit more complicated.  Here is my class:


package com.nathanbak.gomi;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.channels.Channels;
import java.nio.channels.ReadableByteChannel;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class UrlDownloader {

    /**
     * Downloads the specified URL to the specified file location. Maximum size
     * allowed is <code>Long.MAX_VALUE</code> bytes.
     *
     * @param url
     *            location to read
     * @param file
     *            location to write
     * @throws NoSuchAlgorithmException
     * @throws KeyManagementException
     * @throws IOException
     */

    public void download(URL url, File file) throws NoSuchAlgorithmException, KeyManagementException, IOException {
        TrustManager [] trustManagers = new TrustManager [] { new NvbTrustManager() };
        final SSLContext context = SSLContext.getInstance("SSL");
        context.init(null, trustManagers, null);
       
        // Set connections to use lenient TrustManager and HostnameVerifier
        HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
        HttpsURLConnection.setDefaultHostnameVerifier(new NvbHostnameVerifier());
       
        InputStream is = url.openStream();
        ReadableByteChannel rbc = Channels.newChannel(is);
        FileOutputStream fos = null;
       
        try {
            fos = new FileOutputStream(file);
            fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
        } finally {
            if (fos != null) {
                fos.close();
            }
            is.close();
        }
    }

    /**
     * Simple <code>TrustManager</code> that allows unsigned certificates.
     */

    private static final class NvbTrustManager implements TrustManager, X509TrustManager {
        @Override
        public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { }

        @Override
        public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    }
   
    /**
     * Simple <code>HostnameVerifier</code> that allows any hostname and session.
     */

    private static final class NvbHostnameVerifier implements HostnameVerifier {
        @Override
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    }
}

Adding JAR to classpath

This was my first foray into dynamically changing the classpath at runtime.  I found many examples of how to load a specific class (when you know the full class name) from a JAR file, but there wasn’t as much information about stuffing a JAR of whatever into the current, running classpath.  After much trial and error, this is what I finally produced:


package com.nathanbak.gomi;

import java.io.File;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.net.MalformedURLException;
import java.net.URL;

public class JarAdder {
    public void addJarToClasspath(File jar) throws NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, MalformedURLException {
        // Get the ClassLoader class
        ClassLoader cl = ClassLoader.getSystemClassLoader();
        Class<?> clazz = cl.getClass();
       
        // Get the protected addURL method from the parent URLClassLoader class
        Method method = clazz.getSuperclass().getDeclaredMethod("addURL", new Class[] {URL.class});
       
        // Run projected addURL method to add JAR to classpath
        method.setAccessible(true);
        method.invoke(cl, new Object[] {jar.toURI().toURL()});
    }
}

The addJarToClasspath() method wasn’t necessary on my Windows system.  My main JAR had a classpath to the dependency JAR specified in the MANIFEST.MF and as long as the JAR was downloaded there, it would be found.  However, on Linux it didn’t work and so the method is necessary (and it doesn’t seem to hurt anything on Windows).

Other thoughts

  • It is important to do the download and classpath changes before calling any code that depends on the stuff in the JAR.  Even imports in the same class can cause problems.
  • The downloadUrl() method is pretty generic and could be reused in a lot of situations provided the content being downloaded doesn’t get to big.
  • Different versions of Java seem to behave differently–I’ve only tested two Java’s so far (one on Windows and one on Linux), but have seen very different behaviour.
  • Since the certificate checking is disabled and code is loaded and at runtime, it seems like it would be an easy setup to attack or hack.
  • This method could potentially be used for applications to self-update without needing to restart.

Conclusion

I’m not sure this is a permanent solution for my problem, but it does work for the time being.  Also, I think the parts I learned while going through the process have potential to be used in future situations.

Escaping to Discworld

A couple years ago I had a lovely six months reading through Robert Jordan’s The Wheel of Time series.  This summer I’m binging on Sir Terry Pratchett’s Discworld novels.  I’ve read most of them before, but I’m really enjoying consuming the books in mass quantities.  There are several reasons I think they make great summer reads.

It’s nice not to have to worry about what to read next–you just grab another book in the series.  However, the Discworld series adds an extra dimension because I can easily jump around between storylines thanks to Jakub Oleksów’s reading order guide (there are newer versions than the one in the link, but they don’t always seem to mention the artist and I think he should get credit for his creation).  If I should need a break (I didn’t) from the misadventures of Rincewind (a “Wizzard” who cannot do magic), I can easily switch to another storyline such as the city watch or industrialization.  So in the Discworld series there is something readily available for any mood (or at least any of my recent moods).

The Discworld novels, for the most part, are written such that they can be appreciated on various levels.  The entire family engaged in much laughter as we read aloud Tiffany Aching’s encounter with the Nac Mac Feegle in The Wee Free Men.  Boy #1 and Boy #3 can read through the same book and enjoy it for entirely different reasons with Boy #1 commenting that he “got” so many more of the jokes on his second read now that he’s older.  Boy #3 decided to build The Mended Drum out of Popsicle sticks.

It’s easy to pickup where you left off (or even where you’ve never been) in Discworld.  The novels are great to take with on vacation because it’s not necessary to reserve a few hours in a special reading spot in order to appreciate the text.  I just tossed a couple of books in the suitcase when packing for each trip in July, and had something to enjoy as time permitted.

Some people categorize Pratchett’s Discworld novels as silly (they are) or state that it’s not “real” fantasy (just another way of saying silly), but that is the intent.  I’ve heard some people say that if you’ve read one Discworld book, you’ve read them all, but that is like saying if you’ve eaten one ice cream cone, you don’t need to eat another one since each book provides its own unique satisfaction  So this summer, even though I’ve been keeping busy, when I do find a few minutes to escape, I love heading over to Discworld.