graphql The Shadow Request: Troubleshooting OkCupid’s First GraphQL Release Our first GraphQL release was twice as slow as our old REST API. Here’s how we fixed it.
graphql Moving OkCupid from REST to GraphQL How to convert a site with millions of users, ensure that performance doesn’t suffer, and not screw it up.
iOS An Intro Guide to Protocol vs Object Oriented Programming The objective of this post is to compare some of the differences between object-oriented programming and protocol-oriented programming while modeling the same functionality using both approaches. Object-oriented programming has been
backend Vespa vs. Elasticsearch for matching millions of people As a dating application, an integral part of the experience is in recommending to you great potential matches based on the myriad of preferences you and your potential matches have set.
android Improved Localization With Custom TextView Effects We have started the process of making our application more internationalization friendly. That typically requires the removal of all hardcoded strings and replacing them with the reference to the string.
apollo Why we decided against GraphQL for local state management Here at OkCupid, we're pretty big fans of using GraphQL. When it comes to fetching data on any of our client platforms, the abstraction...
android Improving Testability with Fakes and Factories Legacy code exists in the codebases of many companies. Often within, there are anti-patterns that can cause roadblocks during development. I recently added my first analytics event as part of
android Using Fakes To Test Reactive Flows Unlike mocks, fake implementations give us full control of our dependencies in unit tests, allowing us to accurately and thoroughly test reactive flows.
android Cutting Through the Static - Find and Fix Issues the Smart Way with Android Studio Static Code Analysis Did you know that Android Studio has static code analysis built in? You can run this tool using the inspect code dialog. When launched you can specify what you want to analyze; your whole project, individual modules, or just a directory. Fire it up
iOS It's OK to Choose SwiftUI and UIKit By now, you have heard of SwiftUI... this new, declarative, and "exceptionally simple" way of building user interfaces for Apple devices. Ever since its announcement last year, the
Customer Support The washing your hands guide for your mind Essential steps to staying mentally healthy while working from home. With COVID-19 forcing social distancing, many people who are working from home for the first time are trying to figure out how to balance being productive with the stress and worry that a global
web Glow-Up: Bringing a Teenaged Website into the Modern World of SPA What many SPA discussions don’t take into account is just how arduous a process it can be to migrate to a single page architecture, especially when you’re dealing with a mature application, with millions of users and heaps of poorly-understood code.
Monitoring Performance the Easy Way: HAProxy to the Rescue Monitoring is a fundamentally difficult problem, which is annoying because it sounds like it should be easy. We built this service or application and now all we want to do
You Can’t Spell Update Without Date - A Guide to Getting Users to Update to Your Latest Release OkCupid's Android team releases new features and bug fixes every week. In a short amount of time the app can see an improvement in performance, user experience, and even a
testing Stand The Test Of Time: A Guide To Maintainable Unit Testing Writing tests is a crucial skill for programmers. In this post we're going to walk through everything you need to know to become a skilled test writer.
Data Science Peek-a-boo! Sometimes No Data is the Answer OkCupid prides itself on our data analyses. While we are famous for sharing insights on how people date, the processes we have in place that lead to these insights transcend
OkCupid Presents: How To Use Type Erasure For Better Model Abstractions Erase your fear, type erasure is here OkCupid is hiring for iOS Click here to learn more Introduction Here at OkCupid we are constantly striving to implement best in class
backend Stepping on the "Scale" with Kubernetes When the OkCupid app on your phone updates to a new version, you have to close and relaunch the app to complete the update. This happens once every few weeks, and when it's time to update, you get to choose when to restart the
Leveling Up Your UI Tests With MockWebServer This spring, I took the week to finally dive further into Espresso testing. I've automated apps with this tool before, but there's one issue with Espresso testing that I've always struggled with: network mocking.
javascript Getting Hooked on React Hooks By now, informed reader, you’ve surely glanced at, skimmed through, or at least bookmarked half a dozen articles about React 16.8’s most hotly anticipated feature: hooks. You’
Web Deploys Made Pretty Easy: S3, Webpack, and Legacy Systems Some time over the summer, we began thinking about converting OkCupid's desktop webapp to a more SPA-style experience. "Why not?" we asked. "It's strange we hadn't started doing this earlier!" was probably something someone else said.
Hidden Gems In Kotlin StdLib We've been using Kotlin at OkCupid since about mid 2017, and our entire Android team loves it. If you've been developing in, or even researching Kotlin, you're aware of how
OKTableViewLiaison: UITableView Made Simple 🙌 Note: We released this framework on GitHub UITableView is the defacto tool to help us create rows of cells when developing our iOS apps. The typical configuration consists of having
The state of SageMaker: It's a work in progress. I have been working on evaluating AWS SageMaker with TensorFlow, and integrating it into our Python heavy ML stack to provide the model training step. The idea is to avoid
Cropping Bitmaps With Custom Glide Transformations One of the most crucial features of any dating app is the ability to share pictures. I spend a decent amount of time combing through the (few) good pictures of