Category : Tech Talks

scala

Tech Talk: Scala

Tagged allows people to connect and meet each other on a global scale every single day. As part of this social discovery mission, we must create smart algorithms to process the data from our millions of users. Scala is a technology that helps our team tackle this challenge.

Scala is a functional object-oriented language and the driving technology behind Tagged’s PeopleRanker: people relevance scoring, models and algorithms. It can be a huge benefit to projects that focus on analyzing, transforming and processing collections of data.

Scala helped us build a rapid pipeline for building, training and deploying models. Its functional nature enables our engineers to smoothly transform ideas and algorithms to production code. Scala has turned out to be useful for standard web services as well. As a language, it is very concise and the compiler offers strong type inference, offering a seamless experience when working with collections and functions.

Because Scala runs on a JVM, we can also import our existing Java libraries, external packages like Trove, Guice and Jersey, and also use native IO. Scala “convertors implicits” make it easy to work with Java types as if they were Scala.

There are a few pitfalls to Scala, notably the more complex syntax and slow compilation time. However, my team’s experience has shown that it was easier for our engineers to transition from Java to Scala than go back to Java after working in Scala. The syntax and conciseness of the language are addicting and make previous Java patterns feel clunky and obtrusive.

The best example of how Scala has helped Tagged be more productive can be seen in our MeetMe application. We are now able to train models in the afternoon and have them run in production the next morning, serving recommendations to millions of users from our Scala-based server.

For a more in-depth look at Scala, check out the below video of my recent Tech Talk:

 


Michael Terkowski is a People Algorithms Engineering Manager at Tagged. When not obsessing over Scala, he teaches and performs dance, plays rock guitar and enjoys Battlestar Galactica.

Tech Talk: Matrix Factorization

There are millions of material varieties in the world such as sand, concrete, milk, cotton, etc., but only about a hundred elements make these materials in various combinations. Science helps us discover what things are made up of, and because of the recent exploration into matrix factorization techniques, we are able to apply this methodology with abstract concepts.

When given a set of people and their movie preferences, what is a common basic set of movie concepts that people perceive? We don’t just think of movies as simply action or adventure, but we sometimes come up with more specific categories such as “George Clooney movies.” In truth, the concepts we perceive are more nuanced and different than we actually have words for. Matrix factorization not only helps us find underlying idea sets, it also helps us define a set of component preferences a given person may have.

Matrix factorization is just what the name claims: taking a given matrix and factoring it into several smaller matrices. The term matrix factorization captures a wide variety of algorithms that have the same underlying idea: factoring a large matrix into smaller ones. Some of these are categorized as CF (Collaborative Filtering), SVD (Singular Value Decomposition), and NMF (Non negative matrix factorization).

When you look at the output of matrix factorization, it is easy to see that the results all have a lower dimension than the input as they allow a way to compress information, which is helpful in Data Analysis situations. And if you can represent some data with high dimensionality in lower dimensions, why not use just two dimensions? In this case, we can project the data onto a piece of paper, and this forms the basis of Data Visualization using matrix factorization.

At Tagged we are just scratching the surface of matrix factorization techniques -currently exploring applications for this in our popular Pets game and engaging our content teams to serve up the most exciting and relevant content for our users.

In closing, matrix factorization is a fundamental technique (like searching or sorting) and is much more than just a recommendation algorithm – I believe it can be of use in many situations.

Take a look at the video below for a more in-depth discussion on using Matrix Factorization at Tagged.


Senthil Gandhi is a Senior Scientist on the Analytics team at Tagged. His background is in delivering algorithmic solutions for massive data volume situations, numerical analysis, advanced algorithms and data structures. Senthil has a passion for photography (his galleries are here and here) and Deep Learning Algorithms – you can follow him on his blog too.

 

Tech Talk: Tagged Deployment System

With the goal of making the lives of all engineers here at Tagged a bit easier, Corey and I from the SiteOps team have been working on an automated deployment system. This special tool will allow our developers to deploy new versions of their products without SiteOps’ interaction. Currently it manages only Java applications, but in the future it will be expanded to handle most (if not all) the different types of applications used for Tagged’s website and infrastructure.

This system transfers primary control to the developers for managing application deployments, improving response times, and allows our SiteOps team to focus on more complex requests from the developers. In particular, it allows me to devote more time to other projects to further assist our engineering team. I am excited to watch how this new system will improve the efficiency for making changes to the Tagged website.

Check out the video of my Tech Talk below for a more in-depth look at the new Tagged Deployment System.


Kenneth Lareau is a Senior Systems Engineer at Tagged with a passion for music, mathematics, and Git – a version control system; you can follow him on his website. Corey Hickey is also a Senior Systems Engineer on the Tagged SiteOps team.

 

jason lucas tech talk

Tech Talk: Dependency Injection

Like many other software engineering organizations, Tagged is moving toward a more test-aware development culture. Dependency injection can be a powerful tool to assist in the adoption of test-driven (or at least test-friendly) development techniques.

Dependency injection is a technique useful for dividing a complex design into smaller, simpler parts. This results in more flexible designs with greater testability. It can help you better understand your own designs and makes the mechanisms of interaction between components more clear. It might seem like extra work up front, but it pays off in fewer time-consuming headaches later.

The Stig project uses dependency injection routinely. It helps us avoid dependency cycles, which can easily snowball into nightmares of spaghetti code.

Check out the video of my Tech Talk below for a more in-depth look at Dependency Injection at Tagged.


 

 


Jason Lucas is the scalability architect for Tagged, one of the largest social networking system in the world. Jason previously worked for Google on large-scale, distributed systems and for Microsoft on the Visual C++ compiler. He also spent almost ten years working on artificial intelligence systems for treating HIV/AIDS in Africa. These days Jason focuses on problems in the NoSQL space, creating planetary-scale data services that are reliable, fast, cheap, and, if at all possible, easy to use.

IMG1765-L

Responsive Web Design SF, Take II

Tagged recently hosted another “Responsive Web Design SF” (RWD-SF) Meetup. It was a great turnout, as Marcos Lara (product designer and HTML5 evangelist) showed the audience how audiovroom.com was built with RWD in mind. Marcos pointed out the many benefits of RWD, and explained the tools and libraries that audiovroom.com utilizes. Very insightful, with many interesting discussions afterwards. We’re already looking forward to RWD-SF’s next meetup!

Check out more photos here on Flickr.


Marcos Lara is the co-founder of audiovroom.com. Follow him on Twitter.