Monthly Archives: February 2016

Beating the Competition

When I was in Seattle last fall, staying in a nice hotel in Redmond, I had the opportunity to sample a few restaurants in the area. One I really liked was a one of a kind Italian restaurant call the Tropea. Located in a strip shopping plaza, it’s hard to image a place like this could survive, let alone thrive by beating the competition. And thrive is the correct adjective. When I arrived on a Tuesday night, I expected immediate seating and was surprised to Continue reading →

Should I Learn Haskell before Learning Scala?

Start with Latin or French? This question is similar to “Should I learn Latin in order to understand French?” A student asked my friend Earl, when they were both in school, that question. Some of the information below is what Earl told me about his conversation with the student who wanted to learn French. Sure Latin will help, but if you just concentrate on French that will work as long as you use the correct learning techniques. Besides that, Latin is much harder than French. Continue reading →

What is Contravariance?

This article is a follow up to my What is Covariance article. If you read the previous article and understood the concept then contravariance should be relatively straight forward. A Demonstration of Contravariance and Covariance package com.translationdata; import java.util.ArrayList; import java.util.List; public class Contravariance { public static void main(String[] args) { App app = new App(); app.run(); } } class App { public void run() { List<Animal> animals = new ArrayList<>(); List<Mammal> mammals = new ArrayList<>(); List<Human> humans = new ArrayList<>(); animals.add(new Animal()); animals.add(new Animal()); Continue reading →