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

Tho’ much is taken, much abides; and tho’
We are not now that strength which in old days
Moved earth and heaven, that which we are, we are;
One equal temper of heroic hearts,
Made weak by time and fate, but strong in will
To strive, to seek, to find, and not to yield.

~ Part of the poem Ulysses, by Lord Alfred Tennyson

(In the process of writing Functional Programming, Simplified, I had to make thirteen trips to the emergency departments of three different hospitals. So this poem has some meaning to me.)

The Farnam Street Blog has a nice set of core principles in regards to “all that we write about, think about, and strive to achieve”:

- Direction Over Speed
- Live Deliberately
- Thoughtful Opinions Held Loosely
- Principles Outlive Tactics
- Own Your Actions

I came across quite a few bald eagles in Canada and Alaska, but didn’t know we had them right next door here in Colorado. I knew construction on this project had been held up for at least two years, and now I know why.

Bald eagles next door (Broomfield, Colorado)

I have a rough surgery coming up in a couple of weeks, and when I came across the saying, “Collect beautiful moments,” it reminded me that that’s pretty much all we can do in life.

Collect beautiful moments

I’ve watched so many British tv shows, I have a hard time driving on the right side of the road.

The people behind IntelliJ IDEA released their JetBrains Scala developer survey recently.

JetBrains Scala developer survey

Two days ago Google announced their “Principles/Objectives for using AI”:

1. Be socially beneficial
2. Avoid creating or reinforcing unfair bias
3. Be built and tested for safety
4. Be accountable to people
5. Incorporate privacy design principles
6. Uphold high standards of scientific excellence
7. Be made available for uses that accord with these principles

I was reminded of this “If at first you don’t succeed, call it Version 1.0” saying this morning. You can find this t-shirt on Amazon if you’re interested.

If at first you don’t succeed, call it Version 1.0

After watching the movie Powder and hearing an electrical arc device referred to as Jacob’s Ladder, I looked into it and found this Jacob’s Ladder page on the Popular Science website (where this image comes from). I was familiar with the term in a religious context, but I didn’t know that’s what the name for this device is.

Jacob's Ladder electrical arc device

“You have no responsibility to live up to what other people think you ought to accomplish. I have no responsibility to be like they expect me to be. It’s their mistake, not my failing.”

~ Richard Feynman (one of the great physicists of the 20th century)

I like the “No New Rationale” rule, which I learned about in this blog post by Aaron Turon, who writes about the Rust RFC process:

No New Rationale rule: decisions must be made only on the basis of rationale already debated in public (to a steady state).”

“At some point, a member of the subteam will propose a “motion for final comment period” (FCP), along with a disposition for the RFC (merge, close, or postpone). This step is taken when enough of the tradeoffs have been discussed that the subteam is in a position to make a decision. That does not require consensus amongst all participants in the RFC thread (which is usually impossible). However, the argument supporting the disposition on the RFC needs to have already been clearly articulated, and there should not be a strong consensus against that position outside of the subteam.”

Based on his current work in developing Rust, Aaron Turon has a couple of good blog posts on developing/leading open source projects titled, listening and trust, part1, and listening and trust, part 2.

A friend once told me he had no self-confidence. “That’s good,“ I said, “You’re halfway there. All you need now is no no-self-confidence.”


If you or someone you know has a mast cell disease — a type of autoimmune disease — the website has several great infographics. I printed them out so I can take them to new doctors who don’t know me, when I have to go to emergency departments, and for things like my upcoming surgery.

Great printable infographics on mast cell disease has an article titled Speeding Up Compilation Time with `scalac-profiling` where they demonstrate how they reduced a project’s compilation time from 32.5 seconds down to 4 seconds. In addition to all of the scalac and profiling details, it demonstrates a nice use of flamegraphs.

Per this tweet, back on May 15 Martin Odersky shared a slide with these contents:

The essence of Scala: Fusion of functional and object-oriented programming in a typed settings.

- Functions for the logic
- Objects for the modularity

I originally wrote a long introduction to this article, but I decided to keep that introduction for the second article in this series. For this article I’ll just say:

  • idiomatic Scala code involves never using null values
  • because you never use nulls, it’s important to become an expert at using Option, Some, and None
  • initially you may want to use match expressions to handle Option values
  • as you become more proficient with Scala and Options, you’ll find that match expressions tend to be verbose
  • becoming proficient with higher-order functions (HOFs) like map, filter, fold, and many others are the cure for that verbosity

Given that background, the purpose of this article is to show how to use HOFs with Option values rather than match expressions.

In theory this is my biological grandfather, who I was partially named for. We don’t know if actually is our biological grandfather because my dad’s older brothers were about five and a half feet tall and bald, and my dad was 6'3" and wasn’t bald. The man shown in the picture here died in a fire when my dad was six or seven years old, and he said he only knew his adopted father, who was also tall and had some similar features with my dad.

We joked with our dad about this before he died, but he had no way of knowing which man was his biological father, but he did say that his adopted father was the only one he ever knew, and he considered him to be his father. Either way, all of them were Assyrian.

Possibly my biological grandfather