Andrew Conner

Introducing Spotsy: Amazon EC2 Spot Instance Analysis Framework

Spotsy is a newly open-sourced Play! Framework web application for analyzing Amazon EC2 Spot prices. It has been developed independently, but is currently used at Kifi to reduce infrastructure costs. We have been able to cut our EC2 monthly bill by over 60% by using a spot-first environment.

Some EC2 Spot instances are chronically . . .

Read More

March 07, 2016

Essential Slick review

Updated for Slick 3

Essential Slick by Jonathan Ferguson and Richard Dallaway was recently updated to include Slick 3, which was a big update from Slick 2. Slick is a “functional relational mapping” library for Scala. Instead of focusing on Table Object relations, Slick uses functional programming concepts to build queries, bind data, and stream results. In . . .

Read More

January 24, 2016

Slack Hide Typing

Chrome Extension to prevent typing status being shared

I've written a very simple Chrome extension that prevents the Slack site from sending typing indications while you’re typing. My primary use case is so that I can type longer messages and use the text as a scratch pad without making others think that a message is incoming immediately.

Install in the Chrome web store. The source . . .

Read More

January 22, 2016

Moving fast and staying secure

Having a security culture in a startup world

Startups often “move fast and break things” to get to market faster and test assumptions. However, they also often do not take security seriously enough. I've responsibly disclosed web vulnerabilities in sites such as Pinterest, Amazon, IMDB, and many more smaller startups. Typically, the issues were very simple and avoidable by having a . . .

Read More

October 11, 2015

Gambler's Verity?

How in small sets, randomness can be quite surprising

Flip a fair coin four times. Consider the cases, if any, after a heads. Since you're flipping a fair coin—you reason—you should notice no significant patterns in the flips after a heads, because flips are independent. However, you have heard of “hot streaks” or how random events become “due”, so you record your results.

You flip . . .

Read More

October 06, 2015

Using Java Futures in Scala

Occasionally, you may need to interface with Java Futures in Scala. Unfortunately, it is “an abomination”. Several older Java libraries, like Amazon's SDK, provides asynchronous interfaces using Java's Futures. java.util.concurrent.Future only provides a .get, and no mechanism to react to completion. The best solution to avoid . . .

Read More

October 01, 2015

Scalaz Task ↔ Scala Future

Since many asynchronous APIs in Scala use Futures, if you prefer using Task, you'll need to convert between the two. Here are two simple classes that enhance scalaz.concurrent.Task and scala.concurrent.Future:

import scalaz.concurrent.Task
import scala.concurrent.{ Promise, Future }

final class FutureExtensionOps[A](x:  . . .

Read More

September 25, 2015