Publisher Showcase: Indulgy

Indulgy is one of our coveted publishers. Their mission is to be the creator of your perfect world. They do that through a pinboard site that presents users with the best possible images through a, “special algorithm that combines human subjectivity and technology certainty”. This is what sets them apart from their main competitor, Pinterest. Founder, Eugene Strokin, was kind enough to lend us his time and  provide us with a first-hand account of the ins and outs of Indulgy.

indulgy

How did you get into creating a pinboard site?

I was inspired to start the site three years ago when my wife was submitting pictures to a pinboard styled site called foodgawker.com. I noticed the massive amounts of traffic driven by this site and thought to myself, why just food? I went on to build a pinboard site where people could post and share pictures of anything they were passionate about and visualize their perfect world.

What is your mission, specifically what are you trying to accomplish?

I am trying to build a site where people can come and be visually inspired. This isn’t a site where people come to interact with one another; in fact people don’t have to talk to each other at all. People come here to look at beautiful pictures, and in that respect our site falls somewhere between Pinterest and Tumblr. We constantly work to find the best content and present it to our users.

What kind of connection do you have with your user and what’s some of the feedback you receive?

Although we don’t often communicate with our users directly on our site, we do receive a lot of feedback from them. We have two types of users, those who stop by the site consistently and those who come and go. Both of these groups provide us with different types of feedback and we aim to give them the best experience when they visit Indulgy.

What are you looking forward to in the future, how will your focus shift?

We are currently working hard to monetize our site, one we do that is through VigLink. Another option we are considering is the implementation of a shopping cart directly to our site. This is appealing to us because it gives us more control when the user stays on our site to make a purchase. Although we haven’t gotten that far, we know we will stay true to our native advertising roots. Since our primarily focus is aesthetics and quality content, we would never compromise that by having intrusive ads on our site.

What value do you deliver your customer by showcasing certain brands?

We only collaborate with the most elite brands that are visually pleasing to our audience. Again, since everything is visual on our site we don’t want to compromise that by working with brands that don’t uphold our standard. Once we have identified which brands are good partners for us we offer to showcase them on our site if they are willing to give us a commission increase. However, like I stated earlier we wouldn’t promote anything that isn’t relevant to our audience.

How does the shift to mobile consumption affect your strategy?

Over half of our traffic is mobile. That being said, we recognize the importance of optimizing our site for mobile and have done so accordingly.  Looking to the future we would like to design an app for our site but that takes resources that we haven’t quite yet acquired.  

 Written by Hanna Fritzinger

This Week In Tech: SFCMGR Visits Prezi!

image

We love SFCMGR, and not just because our very own Lucy Bartlett is a co-organizer. It’s a wonderful group of people who come together once a month to discuss the ins and outs of online community. This month’s event was held at the San Francisco Prezi Office.  They provided four wonderful speakers, all who have different backgrounds within Prezi, but work toward the common goal of creating an online community of happy Prezilians.

Jana Hanavan, Prezi’s mood coordinator, opened up the series of presentations with some background on the organization, thus setting the stage for Ashley Whitlatch, the 8th U.S. employee who developed and launched Prezi’s successful college ambassador program. She informed the audience of 5 tips to build a community of college ambassadors. They are- focus on those who love you, help them set their own goals, provide feedback, listen to their ideas, and provide useful takeaways.

When looking for people who are passionate about your product, find those who already actively support you. Once they’ve become an ambassador, it’s important not to set stringent goals for them, but rather collaborate to decide what you’re working towards. After all, an ambassador knows their peers better than anyone else, that’s why they’ve been selected. The college ambassador program wouldn’t have been beneficial to anyone if it simply included passing out fliers. Prezi encourages ambassadors to create online groups and A/B test new products, both enriching the experience of its ambassadors as well as the community they’re present in.

Zsofi Goreczky was once upon a time what Prezi calls a Champion, someone incredibly active in the Prezi community answering other’s questions and sharing best practices.  A few months after becoming a Champion, Prezi asked her to officially join their team. She’s now the Operations Manager for Support. Zsofi explained the importance of the Championship program and other methods that encourage peer-to-peer support. Although acknowledging these key factors of building a supportive community, she also stressed the strong influence of support reps, promoting good answers, monitoring frequent questions to modify content pieces accordingly, and archiving out-dated issues. The combination of Prezi employees and Prezilians supporting the community has proven to be the most effective way to support their online community.

The last to take the stage was Prezi’s Social Media Coordinator,Susannah Shattuck who helps to manage Prezi’s global community across LinkedIn, Twitter, Facebook, Google+, and beyond! When she first started at Prezi her main focus was to get as many “likes” and “followers” as possible but soon realized that didn’t result in engagement. Rather, a smaller, targeted audience creates higher interaction amongst followers. To best amplify your company’s voice and convert users into advocates, Susannah suggests meeting your audience where they are, listening to what they have to say, and empowering them to share their stories. If you are able to successfully follow these three tactics you will drive traffic to your website, which is critically important when trying to explain the ROI of social media.

We hope all that attended this month’s SFCMGR meeting learned as much as we did! It was wonderful to hear about community from three different departments of the Prezi team. We hope you’ll join us next month for another round of networking and insightful talks from industry leaders. Stay tuned!

Check out the great Prezi they made for SFCMGR!

Written by Hanna Fritzinger

Asynchronous programming with Play framework

Background
Some  services provided by VigLink are handling 7K requests per second. Our current architecture is mostly running on a Tomcat 7/Spring 4 sync approach. Our services are mostly powered by MySQL, Elasticsearch, and Cassandra. Since traffic has grown over the past few years, we’ve increased the number of machines to keep up with throughput and response time.

Goal
In anticipation of growing traffic, we want to experiment with different frameworks and approaches to make our service more scalable and efficient.

  1. Increase throughput
    We aim to handle more traffic with the same hardware. This can reduce our engineering costs and ease up the maintenance of having too many servers. The CPU cycle being wasted on thread churn is one key thing we want to address in this experiment.
  2. Improve response time
    The vision of VigLink is to make the web better, therefore we strive to maintain and improve our request latency. We want to provide low, and most importantly a consistent latency because we’ve observed that spikes of latency happen once in a while on the current application.
  3. Java codebase compatibility
    Since our code base is mostly Java based, we hope to reuse our existing code base while enjoying the benefits of new framework.

Decision of Play framework
We started to learn and code with Play framework on our company’s internal hackathon day. We found it extremely easy to setup and run. Additionally, its async controller is well defined. As a result, Play framework was chosen to experiment with this time.

Code change
Future interface
To make our Java code’s computation and DAO asynchronous, we need a more advanced future interface to handle in-progress computation so we can code from end to end in async manner. Some options include Java 8 CompletableFuture, Akka, Guava ListenableFuture. We decided to use Guava ListenableFuture because we found it easy and powerful for transformation and chaining. Also, the code change for our existing code was minimal with ListenableFuture.

Migrating existing Java code to asynchronous computation
Cassandra client library
We are using Hector as our Java client library for Cassandra, but this client library does not provide async interface. As a result, we decided to try Astyanax for its powerful async interface. The code change was straightforward and easy since their interfaces are similar.

 

Hector – Sync

public UrlValidity getUrlValidity(String url) {
   SliceQuery<String, String, ByteBuffer> query = HFactory.createSliceQuery(linkSwapKeyspace, StringSerializer.get(), StringSerializer.get(), ByteBufferSerializer.get());
 
   ColumnSlice<String, ByteBuffer> queryResult = query.setKey(getKey(url))
           .setRange(null, null, false, 100)
           .setColumnFamily(CassandraColumnFamily.URL_VALIDITY)
           .execute()
           .get();
 
   return extractValidity(queryResult.getColumns());
}

 

Elasticsearch
We are using Elasticsearch 1.2 standard Java client library. It provides async execution out of the box. As the return value of its async execute() method is ListenableActionFuture, we transformed this into ListenableFuture by using SettableFuture.

public ListenableFuture asyncSearch(final Class clazz, SearchQuery query, String... facetNames) {
SearchRequestBuilder searchRequestBuilder = createSearchContent(query, facetNames);

ListenableActionFuture searchResponse = searchRequestBuilder.execute();

final SettableFuture searchResult = SettableFuture.create();

searchResponse.addListener(new ActionListener() {
@Override
public void onResponse(SearchResponse searchResponse) {
String responseBody = toJson(searchResponse, true, false);
T result = unmarshalResponse(responseBody, clazz);
searchResult.set(result);
}

@Override
public void onFailure(Throwable throwable) {
searchResult.setException(throwable);
}
});

return searchResult;
}

 

Play Framework Async Controller
We are using Play 2.2.x for this experiment. Async controller can be easily implemented with Action.async {}. We have implemented AsyncUtil.asScalaFuture to transform Guava ListenableFuture to Scala Future as expected by Action.async {}. The tility method is inspired by sphere.util.Async.

@Component
class LinkSwapController extends Controller {

@Resource var offerSearchService: OfferSearchService = _

def swap(url: Option[String], keyword: Option[String]) = Action.async { request =>
AsyncUtil.asScalaFuture(offerSearchService.search(url.getOrElse(null), keyword.getOrElse(null))).recover {
case t =>
Logger.error("Exception caught", t)
BadRequest(...)
} map {
case result: OfferSearchResult => Ok(...)
}
}
}
public static Future asScalaFuture(ListenableFuture future) {
final Promise promise = new Promise<>();
Futures.addCallback(future, new FutureCallback() {
@Override
public void onSuccess(T result) {
promise.success(result);
}

@Override
public void onFailure(Throwable t) {
promise.failure(t);
}
});
return promise.future();
}

 

Metrics
Graphite is used to measure and monitor performance. Yammer metrics library is used to populate metrics to our Graphite server. To measure the response time of requests, we have implemented a metrics filter.

class MetricsFilter extends EssentialFilter {

def namePrefix = "responseCodes."

def statusCodes: Map[Int, Meter] = Map(
Status.OK -> Metrics.newMeter(classOf[MetricsFilter], namePrefix + "ok", "responses", TimeUnit.SECONDS),
Status.CREATED -> Metrics.newMeter(classOf[MetricsFilter], namePrefix + "created", "responses", TimeUnit.SECONDS),
Status.NO_CONTENT -> Metrics.newMeter(classOf[MetricsFilter], namePrefix + "noContent", "responses", TimeUnit.SECONDS),
Status.BAD_REQUEST -> Metrics.newMeter(classOf[MetricsFilter], namePrefix + "badRequest", "responses", TimeUnit.SECONDS),
Status.NOT_FOUND -> Metrics.newMeter(classOf[MetricsFilter], namePrefix + "notFound", "responses", TimeUnit.SECONDS),
Status.INTERNAL_SERVER_ERROR -> Metrics.newMeter(classOf[MetricsFilter], namePrefix + "serverError", "responses", TimeUnit.SECONDS)
)

def requestsTimer: Timer = Metrics.newTimer(classOf[MetricsFilter], "requests", TimeUnit.MILLISECONDS, TimeUnit.SECONDS)

def activeRequests: Counter = Metrics.newCounter(classOf[MetricsFilter], "activeRequests")

def otherStatuses: Meter = Metrics.newMeter(classOf[MetricsFilter], namePrefix + "other", "responses", TimeUnit.SECONDS)

override def apply(next: EssentialAction) = new EssentialAction {
override def apply(rh: RequestHeader) = {
val context = requestsTimer.time()

def logCompleted(result: SimpleResult): SimpleResult = {
activeRequests.dec()
context.stop()
statusCodes.getOrElse(result.header.status, otherStatuses).mark()
result
}

activeRequests.inc()
next(rh).map(logCompleted)
}
}
}

 

Result
Response time

engineering-1

 

 

 

 

 

 

The average latency of Play framework is lower in this experiment. Most importantly, there is no spike in the async one. This can be the combined results from async computation, Play framework, and Astyanax.

 

Thread churn

engineering-thread

 

 

 

 

 

 

The thread count in Play framework (async) is more consistent and lower than Spring framework (sync). That means it has the potential to handle more traffic.

Conclusion
We are pleased with the result of using async computation in this experiment. Both latency and thread churn were improved dramatically. We also found it very easy to setup and use Play framework. However, it is unfair to Spring framework because it’s using sync computation. We are planning to do another experiment with async computation in Spring framework so we can compare the two in fair manner. We are also planning to do a stress test experiment to understand the real potential of Play framework async programming.

Written by Edward Chu, Senior Software Engineer.

Follow Ed on Twitter @edwardchu521


 

This Week in Tech: Publishers granted greater control by Google

Untitled 3

Monday marked the launch of the  Google News Publisher Center, a new feature of Google News that allows publishers to dictate how Google indexes their site. Most top publishers spend hours generating engaging and relevant content, however that’s not enough to drive traffic to their site. Until Monday, publishers could only hope Google would predict the layout of their site correctly and pick up on any recent formatting changes.

For example, ELLE one of our coveted publishers, categorizes their site by fashion, beauty, accessories, culture, etc. With this new feature ELLE can label the different segments of their site from the Publisher Center, therefore enabling Google to efficiently categorize the content. If ELLE decides to delete the “beauty” category from their site or add a “lifestyle” category, they would subsequently go to the Publisher Center and ensure those changes are made. This will result in more accurate Google News results, which is beneficial for ELLE, Google, and readers.

The Google News Publisher Center can be simply explained as a tool that gives publishers the power to edit Google’s records, thus putting power and responsibility into the hands of publishers. It is now up to them to attentively keep information in their Publisher Center portal up to date, simultaneously relieving pressure from Google Support.

What do you think about the latest advance in Google News?

Written by Hanna Fritzinger

EPC Explored Infographic Released

There are many ways to measure your native advertising efforts.  At VigLink we tend to focus on earnings per click (EPC). EPC represents a per-click measure of how efficiently your traffic is earning from advertisers. For a given volume of clicks, the higher your EPC, the higher your revenue. It’s imperative for publishers to understand how EPC functions in order to maximize their earnings; this means finding out where people are earning the most, in what industries, and on which devices. We analyzed 100 million clicks and four million dollars in revenue to bring you a detailed breakdown of where the money is.

Calculating EPC is as simple as dividing total commission by total clicks. By doing so, you’re able to determine the potential worth of clicks on your site. But EPC is actually driven by a variety of other variables.  The publisher must also consider (a) price of the item recommended (b) average commission rate of the merchant (c) average likely conversion rate of the shopper.  EPC is the product of those variable.  If one of every hundred clicks from your site turn into a purchase for a $100 gadget, for which you are paid 5%, then your EPC would be (0.01 * (100*0.05)) = $0.05 per click.  Keep the click number constant but sell goods worth $200, and your EPC will double.  Keep clicks and item price constant but double the commerce intent of your traffic by really encouraging them to buy, and the increased conversion rate will mean higher EPC for you.

EPC-Explored_Infograph (1)

One way to consider EPC is by industry. Our data suggest the top three are financial services ($1.80), motorcycles & power-sports ($1.50), and lifestyle ($1.37). On the contrary, the three lowest are art & entertainment ($.06), travel ($.19), and family & baby ($.27). The purchase price of items in the first three industries tend to be significantly higher in cost than the later three, they also warrant recurring customers which merchants value and are willing to pay higher prices for.This explains their high EPCs.

With increasing resources and time devoted to tracking consumer trends over mobile and desktop devices, publishers are focusing more on where they are getting their traffic. Mobile is quickly emerging and will be more influential than desktop traffic in the near future, but it isn’t there yet. Even if publishers have equal amounts of mobile and desktop traffic, that doesn’t mean the conversion rate on mobile clicks is as high.

We learned desktop EPC was the highest at $0.07. Not surprisingly, tablet EPC was not far behind desktop at $0.06, but mobile remained low at only $0.02. Showing that even as mobile traffic to sites is increasing, people are still far less likely to purchase on those devices. The poor user experience on mobile risks deterring even the most avid shoppers. When considering the sports and fitness industry this trend mapped out exactly following the trend with desktop EPC at $0.18, tablet EPC at $0.13, and mobile EPC at $0.10.  Device EPC will be the number to watch as apps and mobile websites continue to increase their accessibility to customers. With the combination of these more efficient sites and the upcoming generation being more comfortable on their mobile devices than desktops, mobile EPCs will undoubtedly continue to rise, but for now… don’t neglect your desktop experience.

Written by Hanna Fritzinger

VigLink has a Pinterest!

VigLink Pinterest

Back in April Bradley Taylor wrote a blog post for us highlighting four ways to promote your personal or professional site using Pinterest. We took his valuable advice and have officially joined the Pinterest community! VigLink Pinterest will showcase some of the unique personalities of our team  you wouldn’t normally get the chance to see. We are following some of the useful tips Bradley suggested…

  1. Discover the Pinterest Community
  2. Generate original, thought-provoking content
  3. Unite all of your current social networks
  4. Piggyback popular pins!

Pinterest already has a special sector of their site called Pinterest for Business which is dedicated solely to professional sites and certainly worth checking out. The tagline for this service is, “get discovered by millions of people looking for things to plan, buy and do”. As of right now the best way you can do this is by following the four tips highlighted above, but not for long! They have just announced that they are gearing up to launch “Promoted Pins” which will expand business’ reach via Pinterest. Although this new technology has yet to be implemented, you can fill out a form on their website for priority access. Pinterest is already a wildly powerful tool if used well (people who are referred to a site from Pinterest spend 70% more), and it’s influence is only going to continue to grow with time and new advances. Is your company on Pinterest yet?    

Written by Hanna Fritzinger

Our afternoon at Larkin Street Youth Services

10391056_10152563970636684_7599014151645625001_n

 

We had a wonderful time volunteering at the Larkin Street Youth Services center yesterday afternoon. When we arrived we were greeted by their incredible Manager of Volunteers & Community Relations, Jessie, who gave us an introduction to the center and told us more about the wonderful work they do to help San Francisco’s most vulnerable youth. Not only is Larkin Street Youth Services in it’s 30th year of operation but it has evolved from a single drop-in center into 25 youth programs housed across 15 different sites. The center is set to continue to grow as they move into a larger space and have greater ability to serve an even more youth and engage them in various programs.

Our team helped by cooking lunch, organizing the clothing donation closet, and making hygiene kits.  It was wonderful to speak with some of the teens and share about ourselves and what we do. We found it truly rewarding to be amongst people who are doing such important good within our community. If you want to learn more about Larkin Street Youth Services and all of amazing things they are doing take a look at their website!

Written by Hanna Fritzinger

ForumCon 2014 Highlights

DSC07756-82_filtered DSC07930-114_filtered  DSC07627-62_filtered

Last week was our annual conference, ForumCon, and what a conference it was! Here are the most important takeaways from each of the day’s sessions.

What does “Mobile-Optimized” Mean for Communities?

In the opening session, moderator John Boitnott led panelists Tyler Smith, Zach Hobbs, Craig Dalrymple and Howard Steinberg in a discussion on increasing Internet consumption via mobile devices and the effect that is having on forums. The panel emphasized that forums will need to adapt as users increasingly use mobile devices to consume forum content but less so to create new content. Developing countries in particular have many users who access the Internet solely through their mobile devices.

The Lean Community: Simple Tactics for Building Thriving Communities

David Spinks spoke about his first experience in building an online community that was centered around Tony Hawk’s Pro Skater. David argued that forums are far more likely to succeed if they are built as an outlet for an existing community, rather than an attempt to build a new community based on corporate interest. Additionally, David informed the audience, despite conventional wisdom, debates between community members could be key to developing stronger community bonds.

The Top 5 Forum Insights that Changed Our Business

Crista Bailey emphasized the importance of encouraging community members to openly  share their content. As the CEO of TextureMedia, Bailey has built the largest online community for women with curly hair. If TextureMedia weren’t an environment where women in this historically-marginalized community felt comfortable sharing their stories and pictures, the brand would not be what it is today.

Moderation and Management of Your Community

Dan Gill moderated the talk about managing online community with panelists Greg Childs, Justin Isaf and Patrick Clinger. The panel members had important insights about who ought to be responsible for electing community managers. One great example was, if someone asks to be a community manager, they probably aren’t a good choice. Instead, ask an active and influential member of your forum to be a manager. There’s a good chance that they are the type of member who plans on being a part of the community for an extended period of time.

Conversation about Online Community

Conversations about Online Community gave attendees the chance break into groups and answer assigned questions. They then chose their best insights to share with the entire ForumCon conference. Attendees made a series of clever suggestions such as, making sure that each community manager receives individual attention and emphasizing the importance of randomized checks on manager decisions. There was also plenty of discussion about whether to remove “downvote” features altogether.

ForumCon Tech Fest

This year’s ForumCon featured the first ever Tech Fest competition with a series of entrepreneurs pitching their products to a panel of expert judges. Each of our presenters had a great pitch, but Panjo and their advertising marketplace for forums ultimately prevailed.

Using Proven Science to Create Highly Addictive Communities

Attendees had the opportunity to learn about proven methods that increase their community’s retention rate from Richard Millington. One of his most interesting pieces of advice was messaging someone right after they join your community might not necessarily the most effective use of your time, especially if your goal is to get them to contribute to the site. Instead, Millington found that responding within five hours to a new member’s first contribution resulted in a 53% increase in the chance that they would contribute again. Additionally, responding within the first hour increased that figure even further.

The Future Discussion of the Web Panel

ForumCon’s final panel was moderated by Nellie Bowles and featured Jeff Atwood, Josh Miller, Daniel Ha and Thomas Plunkett. Our most forward-looking panel spoke about the need to encourage civil discussion online and some of the ways previous efforts to do so had fallen short. For example, insisting that users login through Facebook doesn’t seem to have any effect on their being civil to one another. What’s most important is for people participating in online communities to realize that even without face-to-face interaction there is someone on the receiving end of their comments.

How Purposeful Design Increases Engagement

Courtney Couch explained the power of purposeful design (the holistic approach you take to your site). Couch suggested that every design decision ought to be evaluated on the basis of its benefit for users and not simply because it “could be done” or might look “cool”. His talk tied to previous comments made at ForumCon that the most successful forums are very basic with user-friendly designs.

Thank you to all of you who came and a special thanks to our wonderful sponsors: FORUMS.net, tapatalk, Vanilla, BoardReader, Panjo, Internet Brands, Hi-def Ninja, Vbulletin, Verticalscope and Topix.  Other great wrap-ups have been written byJessica Malnik and Evan Hamilton. You can also check out a great collection of content from the ForumCon Storify and visit our blog for videos of the sessions.

Written by Hanna Fritzinger