Bayesian Penalty/Boost Function

Scoring functions are widely used in our system, e.g. in search engine and recommendation service. In practice, a scoring function may be paired with a penalty/boost function for additional tweaks. Given an entity $E$ to be scored, the final score is of form $f(E)w(E)$, where $f(E)$ is the original scoring function, and $w(E)$ serves as the […]

Introducing a Reactive Lock for Scala

TL;DR: At Kifi we try to follow reactive patterns as much as possible. Over the last two years we’ve come to appreciate the strengths of the pattern, but also run into some weaknesses. This post and the accompanying open source library is about two particular issues we’ve found not to be well addressed by existing libraries or […]

Run Play dev mode from the console

Scala’s REPL is incredibly useful during development. For Play apps, especially in version 2.3 and before, much of the API requires a running application (such as WS, database access, etc). They provide a StaticApplication, but this runs in production mode. This could be an issue for configuration reasons (if there is differences in behavior, configuration, […]

Location Macro – a useful Scala macro

It is sometimes very useful to know the locations where a particular method is called. Of course your IDE tells you all of the locations in your source code. However, when investigating runtime issues, such as performance bottlenecks in production, logging is a simple yet powerful tool. How do we know the location of the […]

Reactive LDA Library

  In this post, we introduce a parallel LDA (Latent Dirichlet Allocation) library. It’s available on Github. The library is written in Scala with Akka actors (hence the name Reactive). The underlying algorithm is based on vanilla Gibbs sampling. We will show that this approach scales much better than training LDA with collapsed Gibbs sampler, […]

Day 1: Finish the First Feature!

It was my first day at Kifi, and first thing in the morning… … as I walked up the stairs to the apartment-like office, our CTO, Eishay, met me at the top. He had a beaming grin. “So your job today is to finish a complete production cycle.” “wut” “By the end of today, you […]

Dynamic sizing content in Keep cards

For our latest design of, we’ve moved to a graphical, content-centric view for keeps. Each keep appears as a card that contains the title, description, primary image, and metadata about the keep itself. We wanted to design an experience where the user could quickly digest the content of the keep, so wanted to optimize […]

Typesafe case study on Kifi

We were happy to participate in a case study that Typesafe wrote on Kifi. Specifically, they were interested in how we used the Typesafe Platform to build the reactive and scalable platform that powers Kifi. The service’s unique approach to search is based on users easily tagging and keeping anything found online – articles, videos, […]