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

Table of Contents1 - Sample data2 - From match expressions to higher-order functions3 - Notes4 - Resources5 - Comments

I originally wrote a long introduction to this article about Scala Options, but I decided to keep that introduction for a future 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 for you 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
Table of Contents1 - Effects are related to monads2 - Not a side effect, but the main effect3 - Effectful functions return F[A] rather than [A]4 - Summary5 - Notes

When you get started with functional programming (FP) a common question you’ll have is, “What is an effect in functional programming?” You’ll hear advanced FPers use the words effects and effectful, but it can be hard to find a definition of what these terms mean.

“By a lie a man throws away and, as it were, annihilates his dignity as a man. A man who himself does not believe what he tells another … has even less worth than if he were a mere thing … makes himself a mere deceptive appearance of man, not man himself.”

~ Immanuel Kant (via Dan Rather)

Once upon a time I was recommended for a college baseball scholarship.

Once upon a time I was recommended for a college baseball scholarship

I don’t know if it was just coincidence, but I went to Lowe’s yesterday for the first time in seven months, then I had a Lowe’s ad on Twitter first thing this morning. So “Allow some” is now “Off.” (See the Location and Personalization settings in the images.)

On Twitter privacy settings and personalized ads

“If you try to drive through Canada in the winter with those summer tires you’re going to end up as a statistic.”

~ A nice RCMP person, after looking at my car, March, 2011. She was very close to being right, as I got stranded for five days in Dease Lake, British Columbia.

Some time ago I was at a party, and there was a woman there that I didn’t know, but I felt like I knew her. It was a strange feeling, kind of like deja vu, but it had nothing to do with this party, just the feeling that I knew this woman. Maybe I had seen somewhere before, but I couldn’t place it.

When that thought first came to me I was talking to some other people, so I shrugged it off for the time being. It was relatively early and I figured we’d meet soon enough. A little while later a trash can became full, so I took the bag out of the can and walked it to a garbage can outside by the detached garage. After I put the bag in the can outside I turned around, only to be startled to see the woman standing there.

“How do I know you,” she asked.

If you happen to be using Dotty (Scala 3) and find that the f string interpolator isn’t working, it’s a known bug. (It was implemented with a macro, and the old, experimental macro system has been dropped.) I’m writing this in January, 2019; I don’t know when it will work again. You can use the Java/Scala String.format method until it’s fixed:

val pi = scala.math.Pi
println( "%1.5f".format(pi) )

I was reading this post by Martin Odersky (Make the Scala runtime independent of the standard library) and came across this comment by Li Haoyi: “This would also make it more feasible to use Scala for tiny bootstrap scripts; current Mill’s launcher is written in Java because the added classloading needed to use scala.Predef (even just println) easily adds a 200-400ms of initialization overhead.” I haven’t written anything where the startup time of a Scala application was a huge problem, but that was interesting to read.

(Though I should say that I wish all Scala/Java command-line apps started faster. It’s one reason I occasionally think about using Haskell for small scripts, so I can compile them to an executable.)

“You become what you give your attention to. If you yourself don’t choose what thoughts and images you expose yourself to, someone else will ... and their motives may not be the highest.”

~ Epictetus

Back in the 90s I was a Unix admin on a NASA project. Rumor was there was going to be a 14% layoff. The next day my boss tells me to go to HR. I’m thinking, “Me???”

I get there, and they tell me they can’t print their Postscript layoff reports in landscape mode, ask if I can help. In the end I got a great Pico de Gallo recipe out of it. :)

One day a black bear walked into the Breeze Inn in Seward, Alaska, but was encouraged to leave.

Bear walks into the Breeze Inn, Seward, Alaska

If you ever need to convert Docbook to AsciiDoc, this Pandoc command seems to work well:

pandoc --wrap=none -f docbook -t asciidoc \
       DocbookFile.xml > AsciiDocFile.adoc

Nature.com has a great article, How ‘magic angle’ graphene is stirring up physics (Misaligned stacks of the wonder material exhibit superconductivity and other curious properties).

“Keep grinding man. If you’ve ever been down, misplaced, overlooked, just keep grinding baby. You’re dreams don’t die until you give up on them. Just continue to keep working.”

~ CJ Anderson, let go by the Broncos, Panthers, Raiders, and now a star in the playoffs with the Rams

Canadian street gangs will mess you up.

I’m glad to say that I’ll be going back to regular consulting work again very soon. If you’re interested in the gory medical details that led me to quit consulting work (and write five computer programming books and a couple thousand blog posts), here you go:

When you worry about where your words land or how others digest or perceive them, you are clinging (and not allowing space for more to come through the channel). Continually create, let go, surrender to more. Create, let go, surrender to more. It is a divine dance. Respect your own story. Remain inside the rhythm.

~ Victoria Erickson

“I met a dolphin down there, and I swear to God that dolphin looked not at me, but into my soul, into my goddamn soul, and said, ‘I’m saving you Megan.’ Not with his mouth, but he said it — I’m assuming telepathically — we had a connection that I don’t even know if I can explain.”

~ from the movie Bridesmaids

Bridesmaids movie dolphin quote