eHarmony Engineering logo

Enhancing RESTful Services with Manifest Data

February 17, 2016

Enhancing your RESTful services with key environment metadata in your Manifest files is a core step towards creating a universal application status dashboard for all the API versions in all your environments. One advantage of having RESTful services is enabling and advocating their use outside your team, especially since integration with RESTful APIs is so […]

Spark and Scala: a Compatible Match

January 7, 2016

At eHarmony, a critical piece of the engineering puzzle is finding the right tool for the job. Recently we rewrote part of our match notification email system (which delivers the profiles of new matches to our users). We implemented a set of tools to simplify the system and make it more efficient, utilizing Apache Spark […]

Taking MongoDB to Production

August 4, 2015

MongoDB makes it extraordinarily easy to get your first application up and running. Unfortunately, some of the very things that make that possible—such as self-descriptive, schema-less data—can actually become headaches once you’re maintaining that application at scale over the long term. A while back, I gave a talk to the LAMongoDB user group on the […]

In Pursuit of Messaging Brokers

June 27, 2015

During this session I will present the path we have taken to: Prioritize Features -> Compare Brokers -> Eliminate -> Benchmark I’ll discuss the findings, together with our recommendations. Messaging Brokers are intrinsic part of our infrastructure. At eHarmony, we have historically used HornetQ, which failed to meet our needs. We have experienced issues that forced us to […]

Redis at eHarmony as a Store and Cache

June 26, 2015

There are few options when evaluating low latency in-memory Cache or Store solutions, and Redis is at the top of the list. Redis is an open source, advanced key-value Cache and Store; it is often referred to as a data structure server. In this blog post, I’ll discuss how we use Redis at eHarmony as […]

Maven Dependency Wrangling

December 2, 2014

What nested project versions does your main Apache Maven project actually depend on? How can you choose those nested versions wisely? This Blog post looks at the methodology Rick’s team follows. If you use Gradle or some other tool, the principles are the same though the implementation differs. If you’re a Java developer, you’ve inevitably […]

Mapping Love with Hadoop

September 24, 2014

In this talk, I discuss how Hadoop helps us to process over a billion possible matches into several highly compatible matches for each of our users per day. eHarmony was founded to give people a better chance at finding happy, passionate, and fulfilling relationships. Did you know that we are already responsible for 5% of […]

Design Pattern: Private Type Parameters, an Application of Type Currying for Java

July 16, 2014

I’ve recently noticed myself applying the following design pattern. Then I started noticing it in libraries that I use. It’s better known in Functional circles; I haven’t previously seen a formal description for Java developers. Just as functions can be curried by accumulating and encapsulating object parameters, types can be curried by accumulating and encapsulating […]

Spring Batch Admin – The Tricky Parts

June 26, 2014

In the Matching Engineering team at eHarmony, our projects use the Spring Batch and Spring Data frameworks extensively. As the frameworks became more mature, we realized that a GUI control mechanism would be useful. The new GUI needed to support features like monitoring executing runs, starting and stopping jobs, and using a well-defined API remotely. […]

Spring Batch and Oracle 11G

June 26, 2014

I am sure anyone working with Spring Batch and using Oracle as metadata store has encountered this issue. The problem I am talking about is the default Transaction Isolation level in Spring Batch (SERIALIZABLE), which is causing inconsistent behavior. (However it is fair to mention that this issue isn’t happening as frequently in 10G or […]