Looking at some differences between Scalaz Task and Scala Future alvin October 29, 2017 - 6:04pm
Table of Contents1 - The Scala Future example2 - The Scalaz Task example3 - What happens when you call the Future twice?4 - What happens when you call the Task twice?5 - Is one approach correct?6 - Source code

Some time ago I was searching for something and came across this Reddit thread about this tweet from Timothy Perrett, who leads Scala teams at Verizon:

“The fact that #scala Future is not lazy just blows my mind. After years of using Scalaz Task, Future is now totally unusable.”

The last part of that tweet is a bit of hyperbole to me, as I’ve been using the Scala Future for a long time myself, and I’ve had no problems using it. That being said, the examples at the top of the Reddit page were interesting, so I decided to try to understand the differences.

A look at how exceptions work with Scala Futures and the onComplete ‘Failure’ case alvin September 18, 2017 - 12:53pm

Here’s a little example of how exceptions work with Scala Futures, specifically looking at the onComplete ‘Failure’ case.

In this example I start three Futures that run for different lengths of time, and the shortest-running Future throws an exception:

How to use multiple Futures in a Scala for-comprehension alvin August 22, 2017 - 5:40am

If you want to create multiple Scala Futures and merge their results together to get a result in a for comprehension, the correct approach is to (a) first create the futures, (b) merge their results in a for comprehension, then (c) extract the result using onComplete or a similar technique.

8 ways to do asynchronous processing in Android and counting alvin August 3, 2017 - 5:27pm

This is a good article that shows several different ways to handle background tasks in Android, including

  • AsyncTask
  • IntentService
  • Loader
  • JobScheduler
  • CountdownTimer
  • Java threads
  • Android HandlerThread
  • FutureTask
  • Java Timer
The karma of writing a book alvin April 5, 2017 - 2:13pm

As I’m writing my new book on functional programming in Scala I started thinking, “What if the person who creates Skynet or the Matrix reads this book and suddenly understands how to create their evil invention? But ... if I don’t create this book, they’ll stay on their previous course in life to be a world-famous cookie baker.”

It’s quite a responsibility, knowing that you could be responsible for a future without great cookies.

Don’t let yesterday contain the greatest things you’ve ever done

Via a friend on Facebook:

“My advice: Don’t let yesterday contain the greatest things you’ve ever done. Make tomorrow contain your next great goal. Because once you feel your greatest days are behind you, you begin to die.”

At the very least that quote is about the importance of having goals.

The state of payments systems in ten years

“If you think you know what the state of the payments system 10 years out you're in a state of delusion.”

~ Charlie Munger talking about AMEX