
A few weeks ago I gave a talk at MOSSCon about contributing to Open Source. Before giving the talk I wanted to define Open Source. In asking my fellow Snappers I’d hear words like: public, free, software, and shared. I want to discard software. Open Source and Open Source Software are not the same thing. The single best of these words was free. But not free in the sense you might think. Consider this quote:
“Not free as in beer, but free as in freedom.”
There’s a spirit behind Open Source. A free spirit. I consider Open Source a philosophy to freely share with others. One that extends well beyond software. Yet this philosophy creates an interdependence. Open Source could not exist without the contributions of other free spirits.
I have summarized my talk into five ways you can contribute:
Write Code
The most obvious way to contribute to Open Source is code. And the most obvious way to do that is Github. Create a repo and share your code.

In the first part of this blog post, I talked about how I modified the Calabash iOS framework to use Rspec instead of Cucumber. It works well and I was able to build out a nice set of tests, but I wanted to make these test more human-readable and easier to maintain. This is where the Page Objects design pattern comes into play.

I have always thought it was important to give back to the community in any way that you can. Whether you are giving up an hour of your time or donating money to a charity - it all counts!
As a meaningful way to celebrate our employees birthdays, SNAP started making donations of $100 to a charitable organization of the employee’s choice. Since we started this last summer, we have donated over $2,000 to organizations across a broad spectrum of interests. Our hope is that we can help support organizations that are making a positive contribution in our community.
Here are some of the organizations our SNAP employees have chosen for their birthday donations:
Recently, SNAP Interactive took “center stage” at the Puppet-NYC Meetup on Continuous Integration with Jenkins.
Here is a video of the presentation which covers installing Jenkins & configuring slave nodes automatically with Puppet, as well as integrating Jenkins into a Puppet release workflow.

My primary responsibility at SNAP is to improve the quality and reliability of our product through testing. One of the first areas I wanted to concentrate my efforts on was the testing of our native iOS App (AYI).
SNAP’s Chief Technologist presents the technology vision for the company and it’s flagship product, AYI - Are You Interested
POSTED BY: Mike (@MikeSherov)

I love to debug code. Lately, I’ve discovered that debugging code with a team of fellow developers can be highly productive and lead to quicker and more robust solutions to problems. Here are a few things that I’ve learned about the process by frequently engaging in team code debugging sessions with my awesome peers at SNAP Interactive!
When debugging gets tough, always take the time to go back for a high-level overview of the problem: I think every developer has

At Snap Interactive we love building things and deploying them for the whole world to see. This means we deploy lots of new code every single day. In fact we currently do around 20 deploys per day. Luckily we also love Continuous Integration, which is how we can do this without constant downtime and bugs. But like all developers we don’t like doing stuff by hand. And we especially hate doing the same things over and over and over again by hand.
SNAP Presents at “NY MongoDB User Group Meetup”
On November 28, 2012, SNAP presented at the NY MongoDB User Group Meetup regarding how we use MongoDB to scale Facebook’s Real-time Endpoint. In building AreYouInterested.com, we wanted to instantly update people’s profiles based on users’ individual “likes”. In this talk, Mike (@MikeSherov) and Justin (@JMedoy) discuss how we configured MongoDB to handle thousands of user profile updates. See the video of the presentation below.
These days, not a lot of work gets done without the help of the open-source community. We acknowledge this at Snap and always make an effort to give back - by either helping others on programming communities such as Stackoverflow or releasing tools and components that we develop as open source projects on Github®.
This post covers an iOS component that we recently released as open-source that replaces the default indicator that the UIScrollView provides. As you would expect from the apple engineering team, the default indicator is already very functionally and aesthetically pleasing as seen below:

However, wouldn’t it be nice to also be able to show more information in context to your current position while scrolling through a large data set? For example, when scrolling through a list of people sorted by their distance from your current location, we could also indicate the distance of the last visible row – this way if you scroll quickly trying to find a particular row, you can quickly identify how close you are to that row.

In addition, you could also provide an animation of a person walking forward to indicate that distance is increasing as you scroll down, and vice versa when you scroll up. The speed of the animation can also be relative to the speed the user is scrolling.
In just a few seconds, these contextual indicators help the user quickly understand your data, in both the way it is sorted, as well as the range of the data set.
We’ve extracted out our implementation of this into a single class so that can be re-used by others with just a couple of lines of code. We’ve even taken care of the subtle animations and conditions when the indicator appears/disappear ensuring that it is unobtrusive to your app’s UI.
You can pretty much re-use what we have built to indicate a variety of things – we’ve used it for time (using an animated clock) and distance, but there are plenty of other use cases that this could be useful. Hopefully your project can also find it useful whether you use it as-is or as a starting point or even just a reference when building a similar feature.
Check it out on Github®: https://github.com/SnapInteractive/SNAPScrollStroll
Check it out in action in our app: https://itunes.apple.com/us/app/are-you-interested/id307930478?mt=8
- Authored by Edwin - https://github.com/eiskandar
Github is a registered trademark of Github, LLC.