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

Some long time ago I was working on a large software development project, and I wasn’t happy with either the quality or the velocity of our programming effort. So one night I sat down and tried to work out an activity diagram to show what our software development process needed to be, to improve both speed and quality. It turns out that a lot of this is just common sense, but for some reason or another team members would try to circumvent the process, which always led to more pain for everyone involved.

Every time I read an article or book about UML “Use Cases” I cringe a little bit. Every author says something like “Jacobson left the definition of a Use Case too open,” and then they try to work through some elaborate scheme of what a Use Case means to them. IMHO, the best use case definition was created in the early 1980s, long before Jacobson mentioned the term.

Table of Contents1 - The three concerns of the business analyst2 - “Um, but I just write software requirements ...”3 - “But I don’t do database design or prototypes ...”4 - “But what about ...”5 - A fourth element

When it comes to working as a business analyst, I’ve learned that there are just three things you need to keep in your mind when meeting with your customers (the project sponsor (gold owner) and domain experts (“goal donors”)) to gather requirements. These three thoughts will keep your meeting on track, lead you to the next question, and will help you know when your work is done.

A couple of stories are bouncing around in my head, so I thought I’d write them down to get them out of there.

In story #1, I was meditating a few nights ago when “Boom!” I was standing in the house I grew up in. I always wanted to go back there to see what it was like with an older set of eyes, so I took my time in walking around, looking at and touching everything. Eventually I walked downstairs, and when I got there a young version of my mom came out of her bedroom and seem concerned about something. Then she looked at me and said, “Money is important, isn’t it?” I replied, “I suppose so,” and then she kept walking around with that concerned look, and then the scene ended just as fast as it began and I was back in the darkness of meditation.

In story #2, my family was at O’Hare Airport in Chicago, and I probably wasn’t a teenager yet, maybe thirteen years old at the most. I think I went to get a drink of water, and when I turned around an older hippie girl was standing there. She leaned down and pinned a little fake red flower on my shirt and said something spiritual, which I thought was cool. Then she asked if could give her some money. I didn’t have any money, and when I told her that, she ripped the flower off my shirt and stomped away much less peacefully. I remember thinking that her behavior wasn’t correct, and I suspect that incident made me mistrust religious people for quite some time.

(From a Facebook post a couple of days ago.)

Several years ago I stepped away from a consulting gig. I had an opportunity to continue the gig, but I didn’t enjoy it, and didn’t like the direction the project was headed in. This quote from this article about the Denver Post expresses how I feel very well:

“I have total disagreement with how they're managing the place, but I'm not going to stand up and be overly critical of them. They've got the keys to the car and they can drive it any way they want to. But they're not driving it in a way that I want to be a passenger of the car.”

(That reminds me of the old Alaska sled dog saying: “If you’re not the lead dog, the view never changes.”)

For the first time in many years I just came across Kent Beck’s Four Rules of Software Design:

  1. Passes the tests
  2. Reveals intention (should be easy to understand)
  3. No duplication (DRY)
  4. Fewest elements (remove anything that doesn’t serve the three previous rules)

There are wording variations on those rules, but I got those specific words from this Martin Fowler post. As he notes, “The rules are in priority order, so ‘passes the tests’ takes priority over ‘reveals intention.’”

For more information on Kent Beck’s Four Rules of Software Design, see that link, or this link to the original rules on c2.com.

As a brief note this morning, I’d just like to offer a “thank you” to the people who have purchased my new book, Functional Programming, Simplified, as sales have certainly exceeded my expectations. I first offered the idea to the people at O’Reilly, and when they turned it down I was concerned that maybe they knew something I didn’t. But sales and feedback have all been very positive, so thank you for that.

Functional Programming, Simplified

When I first moved to Colorado I used to read the Denver Post, but for at least the last year I’ve read constant stories about reporting staff being gutted down to a bare-bones skeleton crew. These days I don’t even bother looking at it, which is a shame, because honest journalism is important in a free society.

Today the battle for journalism in Colorado continues, as employees of the Denver Post signed a letter about one of their colleagues being censored in the midst of what appears to be significant profit-taking by the newspaper ownership. (I saw “appears” because there is no mention of profit margins; every for-profit business must have a profit margin to stay in business.)

Update: If you’re interested in this sage, I recommend reading, They’ve Killed a Great Newspaper on westword.com.

The battle for journalism in Colorado (and the Denver Post)

If you ever need to batch-insert a lot of records into a MySQL/MariaDB database using the JDBC PreparedStatement (as in preparedStatement.executeBatch()) be sure to change the MySQL URL to use the rewriteBatchedStatements, as shown here:

"jdbc:mysql://localhost:8889/DATABASE?rewriteBatchedStatements=true"

For a recent project I needed to batch-insert about eleven million records into a MySQL database, and the runtime was about 55 minutes. Once I added rewriteBatchedStatements=true to the MySQL URL, the batch-insert time was reduced down to only three minutes. That one little change made all the difference.

I just received a BrainFood email with this recommendation about this new book about Tiger Woods:

“Even if you don’t like golf, this book is hard to put down. One of my working hypotheses is that people with extreme abilities are not balanced. Attempts to address the imbalance usually cause them to lose some or all of their advantage, which contributed to the outlier success.”

Toger Woods book

There’s probably a well-known psychological theory about this, but I had the same thought many years ago. A recent example for me is that Bobby Petrino was once considered an offensive genius in college football, but since his personal scandal he seems much more human. A “balanced” life seems to take away from the obsession that makes certain people great about what they do.

From an interview with Zen Master Bon Shim, for people who live with a lot of fear, worries, and insecurity:

Question: Do you feel that Zen has helped you?

Zen Master Bon Shim: Yes, yes, tremendously. I was a different person forty years ago. I was always very scared, scared of life, of people, of situations.

An interview with Zen Master Bon Shim

I’ve often wondered about the difference between the terms emptiness and interdependence in Buddhism, and came across this excellent Accidental Buddhist blog post recently, which includes this paragraph about a conversation the Dalai Lama had:

“In the course of one of these conversations, His Holiness tells Victor Chan that for decades he has meditated every day on interconnectedness and emptiness. He said that there are two types of reality. Firstly, there is ‘standard’ reality. He gestures towards a mug of water. When we look at it we see water. When we touch it we feel water. We know it is water. But then he described how we can look at it with ‘ultimate’ reality in which the mug is a combination of particles, atoms, electrons and quarks — none of these particles can be described as ‘a mug’. The term mug is just an every-day label for this collection of particles.”

“The mug has come into existence because of a complex web of causes and conditions. Therefore it does not and could not exist independently. It cannot come into being by itself, of its own volition. It is empty of intrinsic, inherent existence. In other words, empty is another word for interdependent.”

I haven’t worked with JavaScript much in the last few years, and I just learned about this cool console.table output-logging technique, which I just saw on this website, which has several other good JavaScript debugging techniques.

JavaScript console.table logging/debugging output

Dries Buytaert has a good story about how he created the now-defunct Mollom anti-spam service. No word on why they didn’t try to sell the service rather than just shut it down.

“While his brain was probed by the fMRI, Mingyur (a Buddhist monk) followed the instruction to engage compassion. Once again the minds of everyone watching in the control room felt as though they had stopped. The reason: Mingyur’s brain circuitry for empathy rose to an activity level 700 to 800 times greater than it had been in the rest period just before.”

“Such an extreme increase befuddles science; the intensity with which those states were activated in Mingyur’s brain far exceeds any that had ever been seen in ‘normal’ people. The closest resemblance is for epileptic seizures, but those episodes last brief seconds, not for a full minute. And besides, brains are controlled by seizures, in contrast to Mingyur’s display of intentionally controlling his brain activity.”

~ from a story about brainwave tests of a monk in 2002

“If you are neutral in situations of injustice, you have chosen the side of the oppressor.”

~ Desmond Tutu

“If we think we want to get joy for ourselves, we realize that it’s very shortsighted, short-lived. Joy is the reward, really, of seeking to give joy to others. When you show compassion, when you show caring, when you show love to others, do things for others, in a wonderful way you have a deep joy that you can get in no other way.”

“You can’t buy it with money. You can be the richest person on Earth, but if you care only about yourself, I can bet my bottom dollar you will not be happy and joyful. But when you are caring, compassionate, more concerned about the welfare of others than about your own, wonderfully, wonderfully, you suddenly feel a warm glow in your heart, because you have, in fact, wiped the tears from the eyes of another.”

~ Archbishop Desmond Tutu, in The Book of Joy

Hillary Clinton was quoted today as saying that being a “capitalist” probably hurt her with Democratic voters. IMHO, being a stiff, non-authentic politician hurt her with all voters. To me all of her answers seemed rehearsed, rather than authentic, and as a result of appearing disingenuous she inspired no passion in voters.

By contrast, Bernie Sanders seemed to passionately say what he believed, and as a result he fired up a portion of the electoral base, even if his views were a little too far “left” for many voters.

If you’re interested in computer system performance, ExtremeTech has an article titled, CPU utilization is wrong on PCs, and it’s getting worse every year. The original article was written on the same topic by Brendan Gregg in 2017, but the problem has been made worse by the Spectre and Meltdown patches.