Blog Articles 81–85

Comparing Recommendation Lists

In my research, I am trying to understand how different recommender algorithms behave in different situations. We’ve known for a while that ‘different recommenders are different’1, to paraphrase Sean McNee. However, we lack thorough data on how they are different in a variety of contexts. Our RecSys 2014 paper, User Perception of Differences in Recommender Algorithms (by myself, Max Harper, Martijn Willemsen, and Joseph Konstan), reports on an experiment that we ran to collect some of this data.

I have done some work on this subject in offline contexts already; my When Recommenders Fail paper looked at contexts in which different algorithms make different mistakes. LensKit makes it easy to test many different algorithms in the same experimental setup and context. This experiment brings my research goals back into the user experiment realm: directly measuring the ways in which users experience the output of different algorithms as being different.

Vegan Biscuits and Gravy

I love biscuits and gravy. Their traditional form doesn’t work for our family, however, so over the last months I’ve adapted and refined a recipe for vegan biscuits and gravy that is now our standard Sunday morning breakfast.

This recipe makes enough biscuits for 4 and gravy for 2.

  • Updated November 1: more gravy improvements
  • Updated May 11: improve gravy recipe.
  • Updated Sep. 29: more gravy improvements

To filter or not to filter?

Rumors have been afloat that Twitter may be making a significant change to its service: moving away from the reverse-chronological timeline in favor of an algorithmically tuned news feed. And Zeynep Tufekci’s critique of this prospect made the rounds, in waves, through my Twitter stream.

I must confess, my initial reading of Tufekci’s article (as a recommender systems researcher and developer) was somewhat knee-jerk. I latched on to this statement:

An algorithm can perhaps surface guaranteed content, but it cannot surface unexpected, diverse and sometimes weird content exactly because of how algorithms work: they know what they already know.

This statement strikes me as overreaching in its claims. ‘Cannot’ is a strong claim to make with a high evidentiary bar, and I think we just don’t know enough about the capabilities and limits of algorithms to capture user interest in order to say what they cannot do.

Zucchini Pasta

Inspired by a delicious zucchini ratatouille I had at Root Cellar Cafe, I ordered a julienne peeler and bought some vegetables from the farmer’s market tried to make something like it. There is still a bit of refining to do, but it worked pretty well:

  • 2 zucchini
  • 1 summer squash
  • A small-medium tomato
  • 1 large baby bella mushroom
  • Marinara sauce (I used HEB’s)

I cubed the summer squash and blanched it, then heated the marinara sauce with the squash, the mushroom, and the tomato (both cut up).

Better Standard Fonts in LaTeX

Times and Helvetica are two the standard PostScript fonts, and required by many formatting and style guides. Since official versions of these fonts are expensive and not freely distributable, GhostScript (the standard PostScript interpreter on Linux) and LaTeX installations typically include clones of them from URW (Nimbus Roman No9 and Nimbus Sans). Unfortunately, the URW fonts are Type-1 fonts that do not have good hinting for on-screen display, resulting in misaligned text.

Modern TeX distributions also include updated remakes in OpenType format - the TeX Gyre family of typefaces. TeX Gyre Termes and TeX Gyre Heros replace Times and Helvetica, respectively. These fonts seem to render better on-screen, so I want to use them in my documents. There is also a companion math font for TeX Gyre Termes; its Greek letters are a bit on the ugly side, but it gets the job done and flows nicely with Termes (or other Times fonts).

XeTeX and LuaTeX both have the ability to use OpenType and TrueType fonts, in addition to the Postfix and Metafont fonts used by other TeX engines. To use TeX Gyre’s Times and Helvetica, put the following in your preamble:

% import font loading packages
\usepackage{fontspec}
\usepackage{unicode-math}

% set up Termes (Times) and its companion math font
\setmainfont[Ligatures=TeX,
Extension=.otf,
BoldFont=*-bold,
UprightFont=*-regular,
ItalicFont=*-italic,
BoldItalicFont=*-bolditalic,
SmallCapsFeatures={Letters=SmallCaps}]{texgyretermes}
\setmathfont[Ligatures=TeX]{texgyretermes-math.otf}

% set up Heros (Helvetica)
\setsansfont[Ligatures=TeX,
Extension=.otf,
BoldFont=*-bold,
UprightFont=*-regular,
ItalicFont=*-italic,
BoldItalicFont=*-bolditalic,
SmallCapsFeatures={Letters=SmallCaps}]{texgyreheros}