Alvin Alexander | Java, Scala, Unix, Perl, Mac OS X

I need your grace
To remind me
To find my own.

~ from Chasing Cars by Sarah Bettens (originally by Snow Patrol)

We walked the narrow path,
Beneath the smoking skies.
Sometimes you can barely tell the difference
Between darkness and light.
Do we have faith
In what we believe?
The truest test is when we cannot,
When we cannot see.

~ Lyrics from a pretty (but sad) song named It Can’t Rain All The Time, by Jane Siberry, which I first heard in the movie, The Crow.

This is a very small version of a “painting” I’ve been working on. It’s from a photo I took when I was staying at the Jenny Lane Cottage(s) in Homer, Alaska. I started with the photo, and have been working on it in Gimp until I finally came up with this image, which hopefully looks a little bit like an oil painting. I’ll be including the full size “painting” in a new app that I’m working on.

While converting a photo to a painting in Gimp is usually fairly easy, it took a lot of work to make sure the bench in this photo/painting came out the way I wanted it to. Even just a few months ago I wouldn’t have been able to create this the way it is. (For that matter I couldn’t have made the mountains in the background look the way they look only two weeks ago.)

Jenny Lane cottage painting, Homer, Alaska

One thing that’s changed for me in the last year is that I’ve become a little less interested in what spiritual leaders have to say, and more interested in what spiritual laymen have to say. Don’t get me wrong, leaders are great in many ways, but they don’t have bills to pay, and don’t have spouses or children. I’m far more interested in what a spiritual person has to say when they’re in the midst of struggling to pay their bills, and they have jobs, spouses, children, and neighbors.

I was reminded of this recently when I saw a headline about Charlie Munger giving advice on how to be happy. I’ve read a lot of Charlie Munger quotes and he seems like a very nice person, but he’s been a billionaire for decades, and that skews your thinking. Based on my own experience, when you have a lot of money and you don’t have to worry about your health, paying your bills, noisy neighbors, or family problems, life is easy, so your advice is tainted. These days I’ll take “advice on happiness” from someone who is truly happy while living in the midst of the muck. In retrospect, this feeling is one thing that drew me to Viktor Frankl’s Man’s Search for Meaning when I was still a teenager.

In terms of being a nice person, Steve Jobs may have been the worst Buddhist in the history of the world, but he captures the Zen/Buddhist essence in this quote:

“Remembering that I’ll be dead soon is the most important tool I’ve ever encountered to help me make the big choices in life. Because almost everything — all external expectations, all pride, all fear of embarrassment or failure — these things just fall away in the face of death, leaving only what is truly important. Remembering that you are going to die is the best way I know to avoid the trap of thinking you have something to lose. You are already naked. There is no reason not to follow your heart.”

Photo from forbes.com, words from Steve Jobs.

Steve Jobs - remembering that i will be dead soon

There was a Drupal 8 module security update today for the Metatag module, and for some reason I couldn’t get Composer commands like these to work:

composer update drupal/metatag --with-dependencies
composer require 'drupal/metatag:^1.8'
composer require 'drupal/metatag:~1.8'

Paraphrasing someone tonight: “I worked on cool projects X, Y, Z with cool new technologies A, B, and C. They all failed. Nobody used them. The only app customers still use was written in lowly old PHP. And the customers love it.”

I took that as, if you build the wrong application, no cool new tech will save it.

A funny thing about writing books, or at least writing books with O’Reilly in 2013, is that I never received a final copy of the Scala Cookbook in PDF format. Fortunately I have the original Word docs, which is what they used at the time, so I carry those around on my laptop.

When training an adult polar bear, it’s important to let their cub eat on your leg. #protip

(I don’t remember the original source of this photo.)

Training polar bears

I’ve used Jenkins before, but hadn’t used it in a while, so when I got it running with Scala, SBT, ScalaTest, and Git, I made some notes about how to configure it. You can get Jenkins going with Docker, but I just got Jenkins running by starting its WAR file like this:

java -jar jenkins.war

Jenkins with Scala, SBT, ScalaTest, and Git

My notes on getting everything up and running are a little cryptic, but if you have a little experience with Jenkins I hope they’ll make sense. Here they are:

“Truth waits for eyes unclouded by longing.”

I keep running into various versions of this quote (from sources like the Tao, Ram Dass, and Zen books), so I thought I’d share it here. All sayings like this mean that if you become like a clear mirror and view the world exactly as it is — not how your desires (and fears) want it to be — you’ll see the truth.

Today (February 19th) is an anniversary of sorts for me. After knowing “something” was wrong for a long time — I used to tell doctors it felt like I had been poisoned or was experiencing the symptoms of anaphylaxis or sepsis — I went unconscious for the first time on this date in 2014.

While that in many ways was a horrible event — if I had fallen to the right instead of the left when I blacked out I probably would have cracked my head on the bathtub and died right then — in the end it was necessary for doctors (and I) to take things more seriously, which resulted in seeing a total of 26 doctors to learn that I have MCAS, a rare but treatable non-contagious blood disease (something I was born with).

Carlos Castaneda meets Denali: “Does this path have a heart?”

For me, the path that led me to Alaska had a heart. For others, that path may have no heart, but another path does.

Carlos Castaneda meets Denali: 'Does this path have a heart?'

“True concentration is an unbroken thread of awareness. Yoga is about how the Will can free us from the wavering mind and outwardly directed senses. This is how asana serves us.”

~ B.K.S. Iyengar

I bought my first copy of Agile Software Development with Scrum, by Schwarber and Beedle back around 2002, I think. I was just thumbing through it last night when I saw that they use Function Points as a metric to demonstrate the velocity that agile software teams achieve, and more specifically use it to show that some teams develop software much faster using Scrum.

I didn’t know about Function Point Analysis back in 2002 — I didn’t become a Certified Function Point Specialist until about two years later — so I probably just skimmed over that line then, but when I saw it last night I thought it was cool that they used function points as a metric for software team development speed.

A few times during the past year I got tired of trying to remember the Unix/Linux sed syntax while wanting to make edits to many files, so this weekend I wrote a little sed-like Scala class.

I think I’ve discovered the secret of life: you just hang around until you get used to it.

~ Charles M. Schulz

“Scope doesn’t creep; understanding grows.”

From Jeff Patton in User Story Mapping (something I tried to explain to people many years ago)

Table of Contents1 - Benefits of automated GUI testing2 - Keys to automated GUI testing and continuous integration3 - Beware automated GUI testing software sales pitches and recorders

Introduction: I first wrote this article about automated GUI testing many years ago, but I find that it still holds today.

I just wrote most of the following note on the Apple Mac Java-dev mailing list, and I'd like to share it here as well, because I think it captures my thoughts on the benefits of automated GUI testing and GUI testing software.

I ran automated GUI tests part-time (4-6 hours per week) on a project with 8-12 developers, and saw some good benefits. True, in the 80/20 rule, 80% of the problems were due to UI changes and communication, like “We forgot to tell you we split the Name field into First Name and Last Name,” but with a good automated GUI testing tool, one test may fail, but the rest of the automated GUI test suite keeps running (see Fowler’s continuous integration). Furthermore, with a good GUI testing tool, something like this is also a minor change to get the test running again.

I put my Scala String Utilities library on Github a few days ago. It includes my Q String Interpolator, and several other string utility functions. It also demonstrates how to write ScalaTest and ScalaCheck tests with an SBT project.