Content Will Ultimately Rule and Announcing the Native Ad Summit!

Earlier this month, Sharethrough engineer Ryan L. published a Medium piece on the tech we’ve built (and continue to build) to facilitate the creation of higher quality content-as-advertising - Content Will Ultimately Rule.

At Sharethrough, we believe the ultimate mobile advertising experience is native — an ad that adheres to the form and function of the site. Currently, we’ve mastered the form of how content is displayed in feeds. Now it’s time to double down on providing quality content.

Up next, on July 22, Sharethrough will be hosting the first Native Ad Summit in San Francisco. We’ve run these to sold-out crowds in New York, Chicago and Atlanta and are bringing it home to SF.

To help get the word out around town, we’ve picked up a few pieces of contemporary city art (aka billboards)…

Check out more at Here’s What It Looks Like When You Design Your Billboards to Fit In!

- - CQS

New Gem Released: Json-schema-rspec

We just released a gem which adds matchers to rspec for validating JSON strings against JSON schemas.

From the README:

JSON schemas are great for ensuring that changes in applications don’t break their integrations, without having to write complex integration tests or run many application environments on your development machine.

Check it out on Github and RubyGems.

- - JSON, Open Source, Rspec

Finagle @ Sharethrough: Twitter #Conf Presentation

On April 3rd, Sharethrough participated in #Conf, a Twitter-hosted conference focused around the real-world usage of their impressively vast library of open source contributions. The half-day event featured terrific talks by various members of the open source community including contributors to Mesos, Scalding and Parquet.

Engineer and avowed Australian Michael Jensen talked about our use of Finagle and how our tech stack has changed over the years.

- - Finagle, Open Source, Scala

Escape From the Time Travel Lab

We occasionally take engineering field trips that involve leaving the office and making a foray into the real world. Recently we got the whole team together and went to the puzzle/team-building event Escape from the Time Travel Lab.

The premise is that your team is locked in a room for an hour and you have to to solve a bunch of puzzles in order to get out. The room has been carefully designed so that some things are immediately obvious while others take time to make sense. I don’t want to give anything away since that would ruin it for anyone else planning on doing it - there are several different types of puzzles and many of them involve lateral thinking. The result is controlled chaos but lots of fun.

These games are notorious for being difficult to finish with less than 10% of teams escaping the room (currently only 25 out of 322 have made it). We came very close and just missed being able to escape in the 60 minutes allowed; still great fun!

- - Good Times

Letting It Flow With Spark Streaming

Today, Russ and Michael of the Sharethrough Engineering team are featured over on the Cloudera blog about our usage of CDH and Spark Streaming. We’ve been using Spark Streaming in production for several months now and took the opportunity to share our learnings with those transitioning over from a batch paradigm.

Apache Spark is a fast and general framework for large-scale data processing, with a programming model that supports building applications that would be more complex or less feasible using conventional MapReduce. When we began using Spark Streaming, we shipped quickly with minimal fuss. To get the most out of our new streaming jobs, we quickly adjusted to the Spark programming model. Here are some things we discovered along the way…

Hope it helps! Let us know if you have any questions down in the comments.

UPDATE: Also picked up by the kind folks at Databricks!

- - Scala, Spark

What Do You Get When You Send an Engineer to Poland to Give His First Presentation?

There are two types of people: producers and consumers. Producers make things that consumers use. We as software developers are both - we build software using software. We also create and consume information: books, blog posts, and conference talks, to name a few.

I recently gave my first conference talk at wroc_love.rb in Wrocław, Poland. We’ve had good success with refactoring a complicated form to a form object, and we wanted to share this knowledge. There are many blog posts that mention form objects, but we found that they only gave an overview of what they are and didn’t go into as much detail as we wanted.

- - Ruby, Speaking

Unified Scala(tra) Deployments With SBT

If you use SBT, which you most probably do if you’re writing Scala repos, you’ve probably used the assembly fat-jar generator plugin for shipping and running your code. If this much is true, you’ve probably encountered merge conflicts and had to wrangle with a verbose build description and struggled.

We have a few RESTful microservices in our “corner of some datacenter someplace”(TM) doing various different things, and one of our go-to frameworks in Scala to use in engineering them is Scalatra. Our packaging up of Scalatra repos with launchers and dependencies has previously been done using the assembly sbt plugin and specifying the main class entry point. It’s worked great and will probably continue to be used as a strategy to package and ship our code. But we just discovered another really elegant way to do the same thing using a different and potentially simpler SBT plugin.

- - SBT, Scala

RequireJS and jQuery - a Journey in noConflict Mode

Being purveyors of 3rd-Party JavaScript, sandboxing is something near and dear to our hearts. We take integrating with our publishers seriously, aiming to ensure a high-quality experience for their engineers and most importantly their users. jQuery has noConflict() and you’re gold; easy enough, right? In some cases, this isn’t enough and when it isn’t, it can be tricky to understand why.

- - 3rd Party JavaScript, JavaScript, RequireJS, jQuery