R&D at 500px
While working on the R&D team at 500px I’ve had the opportunity be a part of several interesting projects. In 2016 we built our photo recommendation system helping photographers discover more personalized content based on their social interactions. It’s used on our onboarding, home feed, and discover page, serving upwards of 250K requests per day. I later led the work on our new vision system which is based upon research in deep visual-semantic embeddings. It powers our related image search, gallery suggestions, and auto-keywording. We’re using Spotify’s Annoy to perform large-scale nearest neighbour search, and our model is running with TensorFlow Serving.
RAW by 500px
We want 500px to bring value to every stage of a photographer’s workflow. With the launch of iOS 10 and it’s support for raw capture, and import, we worked to extend 500px to the beginning of that workflow: capture and edit. RAW by 500px was part of the iOS 10 launch, appearing on the iTunes Home Page, under “New Apps we Love”, and “Your Photos Never Looked Better”. It reached over 10 million impressions during its first week on the App Store. We leveraged Core Image to build a real-time image editing pipeline for RAW photos. We built several custom CIKernels for this project, including multiband HSL adjustments. Since we launched, photographers can create and edit model releases, license their photos on the 500px marketplace, and make money through our newest product offering: assignments.
500px for Android
As part of the refreshing of the 500px brand in 2015, we wanted to bring the same improvements from our iOS rewrite to Android - together with the learnings. One such learning led to the development of a framework that takes a reactive approach to simplify view-model binding. You can read more about it in a talk I gave here. I led this project which spanned roughly 4 months from inception to release. This application leverages RxJava and the many Rx frameworks which helped us build fluid interfaces, and a clean network layer with very little boilerplate code.
500px for iOS
500px is the premier photography community for capturing, sharing, and discovering inspiring photos. Each month, millions of users come to the platform to find the world’s most incredible photos, interact with other photographers, and express their passion for photography. My role was in developing the version 4 rewrite of the iOS application. In V4 we pushed the limits of the visual experience and user interface to create the most streamlined 500px experience to date.
Dive Smart Sanitizer by Formarum
Dive is an in-development automatic pool sanitization system. It uses the movement of water within the pool line to generate electricity and, with it, produce chlorine and mineral sanitizers. This eliminates the need for the addition of disinfecting chemicals which reduces costs, and enhances water quality. Working with their hardware engineers, I built a Ruby on Rails web application that allowed remote control of the smart sanitizer. This allowed owners to regulate algaecide, and chlorine levels, take readings, and enable/disable certain hardware functions from their web or mobile browser. In 2016 the company was selected as a 43North winner of 500,000 USD.
Fluidmedia is community-based media sharing and story-telling platform with a strong focus on privacy and security. We help organizations, schools, and families connect through digital media, and physical products like school yearbooks, photobooks, and memorabilia. My role was in developing and maintaining our iPhone and iPad application that act as a media and sharing endpoint.
Watchtower Library grew out of a need to access online-only literature from wol.jw.org offline. Leveraging jsoup, a Java HTML parser, content is scraped and stored in a local SQLite datastore. This app is enjoyed by over 500,000 users around the world, in hundreds of languages. It’s also made it to Google Play Store’s “Education Top 100” in dozens of countries.
Open Source Projects
Much of what I have learned - one way or another - came through open-source projects, and I make it a point to work in the same open environment where possible. I believe sharing our source for others to learn from, and build upon, helps our industry innovate faster and makes us all better at our craft. I have a variety of open-source projects: from libraries, and frameworks to complete applications, and websites like this one. You can find some of those projects on my GitHub in domains such as mobile applications, computer graphics, and software tools.