Back to Venmo.Com

Python linting at Venmo

· by Simon Weber, Platform Engineer

Quick! What’s wrong with this (contrived) Python 2 code?

import sys

class NotFoundError(Exception):
   pass

def enforce_presence(key, entries):
   """Raise NotFoundError if key is not in entries."""

   for entry in entries:
       if entry == key:
           break
   else:
       NotFoundError

If you said the unused import and missing raise keyword, you’re right! But, if you took longer than a quarter of a second to answer, sorry: you were outperformed by my linting tools.

Don’t feel bad! Linting is designed to detect these problems more quickly and consistently than a human. There are two ways to make use of it: manually or automatically. The former is flexible but not robust, while the latter risks getting in the way. We lint automatically at Venmo; here’s how we strike a balance between flexibility and enforcement.

We use a collection of linting tools. Currently we use flake8, pylint and a custom internal tool. They each address different needs: flake8 quickly catches simple errors (like the unused import), pylint slowly catches complex errors (like the missing raise), and our internal tool catches errors that are only relevant to Venmo. For easy use from the shell, we combine their output with git-lint and a short script. This setup catches a wide variety of errors and can easily accommodate new linters. Here’s what it looks like when run on the code from this post:

$ ./lint example.py
Linting file: example.py FAILURE
line 1, col 1: [F401]: 'sys' imported but unused
line 15, col 8: Warning: [W0104]: Statement seems to have no effect

Linting happens in three places during our workflow: in-editor, pre-commit, and during builds. The first step varies for each of us since we don’t all use the same editor (though vim with syntastic is a common choice). This is the step with the fastest feedback loop: if you don’t currently use linting, start with this.

The second step is implemented with a git pre-commit hook. It lints all the files about to be committed and aborts the commit if there are problems. Sometimes we opt out of this check - maybe we know about the problems and plan to address them later - by using git’s built in --no-verify flag.

Finally, any errors that survive to a pull request will be caught during build linting on Jenkins. It’s similar to the pre-commit check, but runs on all files that have been changed in the feature branch. However, unlike the pre-commit check, our build script uses GitHub Enterprise’s comparison api to find these files. This eliminates the need to download the repository’s history, allowing us to save bandwidth and disk space with a git shallow clone.

No matter when linting is run, we always operate it at the granularity of an entire file. This is necessary to catch problems such as unused imports or dead code; these aren’t localized to only modified lines. It also means that any file that’s been touched recently is free of problems, so it’s rare that we need to fix problems unrelated to our changes.

All of our configuration is checked into git, pinning our desired checks to a specific version of the codebase. Checks that we want to enable are whitelisted, allowing us to safely update our linters without worrying about accidentally enabling new, unwanted checks.

When enabling a new check, we also fix any existing violations. This avoids chilling effects: we don’t want to discourage small changes through fear of cleaning up lots of linting violations. It also incentivizes automated fixes, which saves engineering time compared to distributed manual editing.

Hopefully, sharing our linting workflow helps save you some time as well!

Permalink

Group accounts on Venmo launched in beta

· by Lili Jiang, Product Manager

Venmo’s mission has always been to connect the world and empower people through payments. And today, we’re excited to announce that we are taking another step towards reaching that goal. We’re launching the beta for groups, a new feature that lets Venmo users create an account for their group or club.

No more lost checks, complicated spreadsheets, or delayed transactions. We’re bringing the magic of Venmo to group payments.

You can now easily make an account for your group to use for anything from paying dues, to issuing reimbursements, to collecting money for an event. Group accounts offer all the Venmo features you know and love, plus the ability to add managers to help administer the group.

If you’re interested in opening an account for your group, sign up at groups.venmo.com!

Feel free to share the news! And if you’re interested in being involved in a focus group or have ideas for the product, please email groupaccounts@venmo.com.

Permalink

Expanding Venmo Support

· by Tim Bakeris, Head of Support

Here at Venmo we have heard you loud and clear - we know you've been looking for a faster response from our support team, and we are excited to share that we’ve been hard at work building a team worthy of our incredible community.

Today, we are thrilled to announce three new support upgrades that will help get you the support you need, when you need it.

Live Chat

With the launch of in-app live chat you can now have a conversation with us right in the app. If you happen to leave the app while chatting with us, we’ll send you a push notification once we’ve responded (for this to work, make sure you have enabled Push Notifications on your phone). Our goal with live chat is to provide you with timely, effective support. The support team is really looking forward to being able to communicate with you in real time.

If you have questions and want to chat with us now, here’s how:

Step 1: Open the drawer by swiping right or tapping the three horizontal lines in the upper lefthand corner, then choose ‘Help Center’".

Step 2: Select the topic that most closely resembles your problem.

Step 3: Select the Help article that is most closely related to your problem. If it doesn’t help, just tap “Contact Us."

Step 4: Our support agents will be with you as quickly as we can. Chatting with us feels like texting a friend! Just make sure you have Push Notifications enabled on your device.

Upgraded In-App Search

Our in-app Help Center has been upgraded with native, searchable FAQs and help articles. Now you can find relevant help articles just by searching with a few words. For example, looking for information on how to move money to your bank? Type “transfer” and you’ll be shown all of the relevant information, instantly. Still can’t find what you’re looking for? Just start a conversation with one of our agents right from the article you’re reading.

24/7 Support Coverage

Over the past few months we’ve tripled the size of our support team and have expanded our hours of coverage to 24 hours a day, Monday through Friday. On the weekends we have people available from 9:00AM - 5:00PM (CDT). We anticipate full 24/7 availability by the end of 2015.

There is still a lot of work to do and we are very excited to continue improving upon the foundation we’ve built. We are fully committed to building the support team that you deserve. Thank you for being patient with us as we grow our team quickly to keep up with our fast-growing community!

Permalink

Hack Week at Venmo

· by Katie Mulligan, People Team

A company-wide hackathon is a great opportunity for folks to team up with people from different departments and tackle a project that isn’t currently on the roadmap. And, working with new team members on interesting projects cultivates creativity and innovation. At Venmo, Hack Week also means bringing remote employees to our NYC headquarters, peppering the week with activities that encourage cross-team socialization, and making sure to end on a high note– our annual summer party. The result was an incredibly fun week that left us reeling with Venmo pride.

Since everyone was diligently hacking away on ambitious projects, we made sure to sneak in a couple breaks. One afternoon, we pushed our cafeteria tables aside for a fun and re-energizing Michael Jackson dance class. We also offered relaxing meditation sessions every day and a chance for individual teams to go out to dinner together. The most popular activity was Venmo’s first ever “Lunch Roulette.” We split everyone into groups varied by team and office location, and sent them out to lunch together. Lunch Roulette successfully got folks out of the office and sharing a meal with people they don’t necessarily interact with day to day.

At the end of the week, the entire company got together to watch the presentations from our fourteen different Hack Week teams. Among the winners, a group who designed an internal Bot that allows our team to give each other positive feedback via Venmo payments, and a proposed feature that would send your friends a musical greeting through Venmo on their birthdays. The coveted People’s Choice prize went to a group that choreographed a lip dub video around the Venmo office.

The best part of Hack Week was that we got to take all that positivity and inspiration with us to a huge Venmo summer celebration at the end of the week. We boarded a boat for a dinner cruise on the Hudson River, followed by a full evening of dancing and karaoke. Venmo parties are always a blast, but we were celebrating so much more this time around– the amazingly talented group of people that we’re so lucky to come to work with everyday.

Interested in being part of the Venmo crew? Check out our jobs page.

Permalink

Two Cents: Episode Two

· by Terri Burns, Developer Evangelist Intern

Welcome to the second episode of Two Cents: NYC... Minus the Smell.

Listen in to hear about what projects Venmo interns are working on, hackathon prep, and Terri and Cassidy's two cents on imposter syndrome. We hope you enjoy!

And if you're just tuning in, Two Cents is a podcast series which follows the intership of Terri Burns, a Venmo developer evangelist intern, and Cassidy Williams, a full-time Venmo software engineer and developer evangelist. If you missed the first episode, Get Gif-y With It, listen here.

Permalink

New Blog Updates!

· by Terri Burns, Developer Evangelist Intern

We're excited to announce some fantastic updates to our blog!

We’ve made it easier to get around the blog with updates to the navigation bar. Now you can view posts by topic: Engineering, Feature Announcements, and Life at Venmo.

Additionally, our subscribe feature will allow you to sign up to receive email updates (which will come at most once a week) letting you know about new blog posts. And, you can also enjoy our archive of posts over the years, or search for a specific post you read in the past.

As always, feel free to leave a comment here on the blog or via some of our social channels to tell us more about what you'd like to read about in future posts!

Permalink

Two Cents: A Venmo Podcast

· by Terri Burns, Developer Evangelist Intern

Welcome to Two Cents.

This summer podcast series will be following the internship of Terri Burns, a developer evangelist intern, and Cassidy Williams, a full-time software engineer and developer evangelist here at Venmo. Stay tuned to hear more about what it's like to work at Venmo, the current state of NYC's technology scene, and hear Terri and Cassidy's two cents on on a given topic in tech and in life each episode. It's a beautiful marriage of payments and podcasts. Catch the first episode, Get Gif-y With It, below:

Permalink

Venmo Paints the Town

· by Katie Mulligan, People Team

A few weeks ago, we sent some Venmo volunteers to help local artist Ellie Balk and the students at Brooklyn’s Green School finish up their annual mural. This isn’t just any old neighborhood beautification project: every year Ellie works together with the staff and students to design a mural based on the school’s math curriculum. This year’s project, Visualize Pi: Perspective, uses blocks of varying height and color to represent Pi.

Visualize Pi is an extraordinary program for Green School. It allows students to understand complex math concepts through design and feel ownership over a project that adds value to their neighborhood.

The Venmo volunteers jumped in towards the end of the painting week to help with some straight lines, ladder climbing, and detail work. We had a blast rolling up our sleeves, getting paint on our faces, and spending time outside in the sun. When we were painting with Ellie and the students, we really felt like we were making a direct impact in the community. People kept walking by to chat with us and thank us for adding a colorful flair to the neighborhood. It was an incredible feeling to step back at the end of the day and check out the beautiful result of everyone’s hard work.

Permalink

Coming Soon: Use your Fingerprint to unlock your Venmo App

· by Tiem Song, Android Engineer

Today, at Google I/O, Google unveiled Android M Developer Preview, which will include new fingerprint capability for Android devices when M rolls out, and we’ve integrated this new capability into the Venmo app.

Soon, consumers using Venmo on their Android device with a fingerprint sensor will be able to unlock their password protected Venmo app with their fingerprint instead of a PIN.

We’re always looking for ways to make Venmo simple and delightful to use, while keeping our high standards of security. Enabling fingerprint authentication on supported Android devices lets us maintain our security standards, yet reduce the friction of entering a PIN.

We’ll be rolling out the new Android-enabled fingerprint technology in the Venmo app later this year. Stay tuned to try it out!

Permalink

Introducing Emoji Autocomplete

· by Dasmer Singh, iOS Engineer

Venmo payment notes are more than just a memo for transaction history. They provide a social way to make and request payments in the news feed, and users often write clever and witty messages to express their reason for payment.

With close to a quarter of all Venmo notes using an emoji, we wanted to take a look at how we could make using an emoji easier and more fun for our users. That's why today, we are releasing the Emoji Autocomplete feature in the Venmo iOS app! Simply tap on the emoji button, type the name of the emoji you’re looking for, and select it from the list. Emoji are also suggested as you type a payment note.

For example if you type “pizza”, you will be given the option to use a:

instead, or if you type “rent”, you will be given the option to use the emoji combination:

Of course, if you ever want to turn emoji suggestions off, you can always flip the switch in Settings.

Emoji Autocomplete is available today in the App Store. We hope that you love the feature as much as we do. As always we love getting user feedback — whether good or bad, so let us know what you think!

Permalink

Keep the fight in the ring this weekend with Venmo

· by Matthew Hamilton, Product Manager

Put away your boxing gloves -- there's no need to fight your friends to get your money back when you order the Mayweather vs. Pacquiao fight on Pay-Per-View this Saturday, May 2nd.

HBO and Showtime, along with Mayweather Promotions and Top Rank, have launched an innovative mobile ad experience with agencies PHD New York and Undertone. All you have to do is tap the ad to open the Venmo app where you can easily add your friends to pay for the event. Check out the mobile ad on Thrillist as well as mobile sites for College Spun and Men’s Fitness.

Instead of getting knocked out with the cost of covering the event for all of your friends, you can easily get paid back with Venmo.

Permalink

Love Pizza? Love Venmo? Papa John’s brings them both together.

· by Matthew Hamilton, Product Manager

People love to use Venmo to split pizza. In fact, the pizza slice is the most often used emoji on Venmo.

That’s why we’re excited to share that Papa John’s has integrated the Venmo API into their online and mobile checkout experience. So now, instead of chasing down your friends for their slice of the pie, it's easy to quickly request money from your friends for their share, as seen in the recent spot with NBA All Star Paul George. Here are the three easy steps:

1. Buy ALL THE PIZZA.

                                                            Gotta get buffalo chicken.

                                      Yeah, I want it ASAP.

2. Allow Papa John's access to your Venmo account, so you can request payments from your friends. 

3. Select your friends you want to share the pizza with.

Boom! The payment requests are out. Now you can enjoy your pizza without having to pester your friends to pay you back.

Go give it a shot and tell us what you think!

Permalink

Updates to Venmo Security

· by Aditya Pasumarty, Product Manager

We’re pleased to announce that multifactor authentication (MFA) is now available for all Venmo users on the web or the latest iOS and Android apps.

Our version of MFA requires an additional verification step when accessing Venmo from a new device. The feature is automatically turned on for all users in the latest version of the app. This is how it works:

  • Anytime we detect a sign-in attempt from a phone or browser you haven’t previously used to access Venmo, we will alert you via email and text a 6-digit code to your mobile phone. Entering this code correctly will let you successfully sign in to your Venmo account. So if someone knows your password, but doesn’t have access to your mobile phone, they won’t be able to get in.
  • After signing in, you may grant Venmo permission to remember that the device belongs to you. You won’t need a verification code when signing in from this device in the future. You will still need to enter your password correctly every time.

This feature is designed to maximize security while continuing to provide a quick and easy sign-in experience on devices you regularly use. As always, if you have questions please reach out to us at support@venmo.com or visit our help center for more information on multifactor authentication.

Permalink

Can Venmo Users Predict the March Madness Winner?

· by Venmo Data Team

March Madness is a time when people share their love for their alma mater or favorite team, and Venmo users are no different.

JT Glaze, one of our Data Scientists, looked at payment notes in the Venmo feed from Selection Sunday to the first game tip off for this year's NCAA tournament to build a Venmo user crowd-sourced bracket. Our methodology to determine the winner of each round looked at the number of times a school name, abbreviation or team mascot was mentioned in the Venmo feed.

Check our Venmo bracket out below - how does yours compare?

So: will our users predict the March Madness winner? Can a crowd-sourced bracket be a slam dunk?

Get out the popcorn and pizza, it's game time!

Permalink

Updates to Venmo Account Notifications

· by Michael Vaughan, Venmo GM

Today, we wanted to share a few updates we’ve made to Venmo account notifications, as well as make you aware of some additional product updates we’ll be releasing soon.

To enhance the security of your Venmo account, any time there is a change to your primary email address, password or phone number, we will send you an email notification.

Here is how it works:

  • If the primary email on your account is changed, you will receive a notification to the old primary email in addition to a verification for the new primary email.
  • If your password is changed, you will receive an email notification.
  • If the phone number on your account is changed, you will receive an email notification in addition to verification of the new phone number.

If we notify you of a change that you didn’t request, please immediately reset your password and contact us at support@venmo.com so we can confirm your account is secure.

Additionally, we're working to be more responsive to your support inquiries. We’ve made significant progress and will continue to improve in this area. We’ll also be rolling out multifactor authentication (MFA) in the coming weeks, among other product features, to further enhance user security and experience.

As always, please reach out to us at support@venmo.com with any questions and check back here for updates.

Permalink

A Note to Our Venmo Community

· by Michael Vaughan, Venmo GM

Recently, there’s been some commentary about the security of Venmo’s service and our responsiveness to our customers. It’s really important to everyone at Venmo that we address this with you directly. Our most important job at Venmo is to protect your money and provide you with a secure and easy way to make and share payments. This involves building an amazing product experience, but it also includes the teams of people behind the scenes who work tirelessly and are dedicated to protecting and supporting you - our fraud prevention, customer support and operations teams. We are all part of the community and we are grateful for those of you who have posed questions and provided feedback.

First things first, I want you to know a lot of what we do to protect you is happening behind the scenes. We focus on your safety and overall experience as a whole. We don’t build for features just for features’ sake. We’re processing billions of dollars of your payments every year and we maintain fraud rates favorable to industry standards and that is why we are comfortable guaranteeing your money if you are the victim of fraud or unauthorized transactions.

So….. here are the things we do to help keep you secure:

• We have fraud protection algorithms and systems that are always on. As much as I’d love to share more here, I don’t want to tip our hand to would-be fraudsters, but we back it up by guaranteeing your money from unauthorized transactions.

• We encrypt your sensitive financial information, including your bank account details. That data is never stored on your device. It’s not even visible to you. Ha. Take that. So, even if your crazy uncle got your password and logged into your account without you knowing, your bank account information is not visible. Unfortunately, I can’t say the same about all those checks you’re writing that have your full routing number and account number at the bottom. But that’s a story for another day.

• We are PCI-compliant and your debit/credit card info is encrypted and secure. You’re probably wondering “What is PCI-compliant?” Answer: it’s a credit card industry standard to make sure we’re doing our job to protect you. It’s kind of like putting on suspenders after you have a belt on, and then having your mom check your belt and snap your suspenders to make sure they’re both working.

• We set payment limits to protect against unauthorized transactions and only verified accounts have higher limits.

• We log you out of a web session after a certain period of inactivity.

And if that’s not enough, here are some things you can do for yourself to make you feel more comfortable when using Venmo:

• Set a passcode lock on the Venmo app (in addition to your phone lock) that’s required each time you open it. If you have an iPhone, you can use TouchID instead of a four-digit PIN to use fingerprint authentication for your Venmo lock.

• Disable any device and remotely log out of a session from your web settings if you have any concerns to prevent unauthorized transactions.

• Set options to receive text messages, push notifications or emails for payment transactions and a wide range of app activities so that you can monitor your account.

And, as with any online service: use a password that is strong and unique to your Venmo account. Venmo can’t guarantee the security of your other apps and services and sharing a password across many services can make your account vulnerable - as with any online service.

I want to assure you we are continuously improving product and security measures. We have a bunch of things we’ve been working on and we’ll share more of those with you soon. While we know that we measure up favorably against the industry standards for fraud prevention, we aren’t sitting back.

Another concern we’ve heard is some frustration in delays in getting help from us when you need it. We never want you to be disappointed and we’re sorry if that’s been the case. Our support team is the lifeblood of Venmo and we aim to be the biggest advocates for you. As we grow rapidly, we are working diligently to keep the level of service you should expect, and we’re hiring more people to work in support (if you are interested in joining us). We’re also looking at other areas where we can offer additional help more quickly including chat support and taking a new approach to support that will enable us to better interact with our users.

Venmo doesn’t exist without you, our users, and our job is to do right by you. We work to earn your trust every day. We take that responsibility seriously and we will do our best to be as transparent as possible with you as we continue on this journey. As part of that relationship, we value your feedback and we welcome it continuously to help make Venmo better. We’re all standing by to listen to your comments – please email us at support@venmo.com and we will answer every single question you have as quickly as we can.

Thanks for being a part of the Venmo family.

Permalink

Venmo Developer Spotlight: Joel Bixby

· by Cassidy Williams

By Cassidy Williams and Joel Bixby

This is the third in a series of Venmo Developer Spotlights, where you can get insights on what life at Venmo is really like. If these posts tickle your fancy, head over to our job board and join us!

Joel is a solid backend engineer at Venmo. Joel grew up in Iowa believing his dream job was on the West Coast. After graduating at Iowa State University with a degree in Computer Science, he went the East Coast. In his free time, he enjoys testing new web frameworks and going outside for some fresh air!

How long have you been with Venmo? What do you work on?

I have worked at Venmo for seven months. I am currently on the Scaling team, which helps Venmo’s code keep working as we grow with our user base. I have worked on projects that setup Celery for queue processing, migrated data from MySQL to Redis for extremely fast reads and writes, and also work in Puppet, our infastructure manager for deploying and managing our services.

What is your favorite programming language?

I enjoy many programming languages, but I can’t seem to pick just one. Python and Javascript would definitely be in my favorite programming languages. Both are very informal and have many ways of doing the same thing. I believe this freedom gives them a personality. A personality made of common practices, clever tricks, and some ugly stuff too.

What do you like to do outside of work?

I try to stay active and go to the gym as much as I can. In the Fall, a group of coworkers and I participated in ZogSports dodgeball, which was extremely fun! I definitely plan to join another season of it soon! When I’m at home, I like to investigate new programming languages, frameworks, and software for my own projects.

Are you working on any side projects right now?

I am currently working on a mobile app for skydivers. Skydivers are required to do a lot of jump logging in order to become licensed and it requires a lot of manual labors. With new technology in cell phones, almost all data can be collected automatically.

What is a fun fact about you that you don’t usually get to talk about?

When I was little I took dance classes with my sisters. I took lead roles in many nursery rhymes as a cowboy, a mouse, and a spider.

What advice do you have for aspiring developers?

Learn as much as you can! There are unlimited applications of software development and you can decide how you want to apply it. Pick something that interests you and learn that front to back. The more you know, the more experience you will have to make an educated decision.

Got more questions? Email us at blog@venmo.com!

Permalink

Awesome Venmo API Hacks

· by Cassidy Williams


By Cassidy Williams

Hi friends!

Venmo loves going to hackathons and seeing awesome projects that developers come up with. I recently talked to a few people who made some great ones, and I'm going to tell you about them!

Via

Michigan State students Caitlin McDonald and Erin Hoffman built this project and won the Venmo prize at MHacks V!

Students and families alike love to take road trips across the country. Road trips are a fun way to experience small town America while getting us to our final destinations with minimal expenses. Despite their advantages, however, road trips can involve tedious financial concerns, ranging from finding the cheapest gas along the route to ordering at a drive-thru window with a car full of people. With Via, these issues evaporate to provide a fun, carefree roadtripping experience.

Via provides some helpful roadtripping features while also tracking all of your expenses along the way, allowing for easy reimbursements between roadtrippers.

The team built Via as a mobile web app, using Ruby on Rails and PostgreSQL for the database. The main API used was Venmo (for user login, friend lists, and payments), but they also used the Google Maps API, Google Places API, and the MyGasFeed API. The icons are Twitter emoji, but the rest of the graphics they made themselves.

Take a look at Via on ChallengePost!

Paybble

Purdue students Vipul Nataraj, Drew Ruberson, Josh Foeh, and Zachary Simpson worked on this fun project for the Pebble watch.

Paybble is an application developed for Boilermake Fall 2014 that allows you to pay people on your contact list directly through your Pebble watch. In order to use the service, the user has to have the companion iPhone application installed and allow application access to their Venmo account. Once these prerequisites are complete, the user can then use the Pebble watch to cycle through their contact list and select a contact to pay as well as an amount. After confirmation, the application carries out the transaction and even sends both the payer and the payee notifications via text message. This application is targeted towards people that want to utilize Venmo but are always too lazy to pull out their phones to do it.

Gotta love those lazy piles. <3 data-preserve-html-node="true"

If you want to see more about the project, check it out on ChallengePost

The team also wanted to share their favorite joke with you.
Q: Why do Aliens always choose functional programming languages as their main development languages?
A: Because they’re both stateless.

SiriKit

University of Michigan students Janum Trivedi and Noah Shutty built this project for iPhone, and they won the Venmo prize at PennAppsX!

We love Siri--Apple's sassy voice assistant has delighted us since day one. But why can't Siri make one-time and recurring payments to your friends? Find your backpack for you? Activate your Jambox? Control your automated home? Interface with all your IoT devices?

Though Apple has not released a public API for its voice interface, the team found a workaround that allows third-party apps to grab data from Siri and take actions in response. Importantly, this proceeds without any traffic proxying, data limitations (eg, wifi only), or browser trickery.

Siri, plain and simple. And now limitless.

Check out SiriKit on ChallengePost!

They also shared a funny with us, a quote from Mitch Hedburg: "My fake plants died because I did not pretend to water them."

RideShare

At the recent HackTheDrive hackathon run by BMW in San Francisco, Gregor Engelmann and his team of 3 built an iOS application that explored a way of identifying energy/fuel costs per passenger based on local fuel/energy rates at the destination.

The application utilized data like GPS location and power consumption, as well as sensor readings like car door status and passenger location within the car from the BMW i3 to identify how many people are sharing the fuel costs for a certain distance driven, and how much it would cost to refuel the car based on local service point rates at the driving destination. The Venmo and PayPal APIs were used to process in-app money requests from passengers.

Want to see more?Check out this list!
Want to make your own?Go for it!

Permalink

Thank you, open-source community

· by Ayaka Nonaka


By Ayaka Nonaka

We open-source a lot of things at Venmo, and we also use a lot of open-source libraries. To show some appreciation to all of the open-source maintainers and contributors out there, we thought it might be cool to share a list of open-source libraries and tools that the Venmo iOS team relies on. Thank you everyone out there who has contributed to these projects and other projects out there. Here’s to a great 2015!

  • 1PasswordExtension adds 1Password support to our login. (Psssst... Look out for it in our next release!)
  • AFNetworking is great for all things networking, but we especially like UIImageView+AFNetworking for async image loading.
  • Alcatraz is the package manager that brings XVim, FuzzyAutocomplete, GitGutter, etc. to Xcode. Such a must have.
  • BZGFormViewController is great for simple forms that require validation. We use it in our app for our sign up and edit profile views.
  • BZGMailgunEmailValidation is perfect if you use Mailgun for email validation.
  • BlocksKit because dismissWithClickedButtonIndex:animated: delegate methods are no fun at all. Besides, who “clicks” on an iOS device?
  • Braintree allows our users to pay via Venmo on apps like YPlan.
  • CMPopTipView has been useful when we want to draw attention to a new feature that we added.
  • CocoaPods is how we manage all of our dependencies, including private pods. Can’t wait for their 0.36 release which supports Swift!
  • DAZABTest provides a super simple API to do basic A/B tests.
  • Expecta is a great matcher framework that makes your tests read like English. expect(myTests).toNot.beEmpty()
  • Facebook-iOS-SDK makes it easier our users to sign up and find friends to start using Venmo with.
  • FLEX is built into all of our debug and dogfood builds, and it makes finding and fixing UI bugs so much fun and so much easier.
  • FuzzyAutocomplete because Cocoa API’s is so verbose.

objc initRecurrenceWithFrequency:interval:daysOfTheWeek:daysOfTheMonth:monthsOfTheYear:weeksOfTheYear:daysOfTheYear:setPositions:end: anyone?

  • FXBlurView makes it super easy to have your own blurred views to match iOS 7 and 8’s frosty look.
  • FrameAccessor is perfect for the lazy programmer who would prefer to type view.width = 50 intead of CGRect newFrame = view.frame; newFrame.size.width = 50; view.frame = newFrame;
  • GBDeviceInfo tells us useful things about the device our app is running on so we can optimize a little for older devices, etc.
  • GitGutter shows you what lines were changed, added, and removed right in Xcode’s gutter!
  • Godzippa has been immensely helpful when uploading large amounts of data to our API.
  • iRate because we love hearing back from our users. <3 data-preserve-html-node="true"
  • JTSImageViewController is what you see when you tap on a picture on a friend’s profile. We love the interaction where you can flick the image off the screen.
  • KGStatusBar is used to show “offline mode” in the status bar for Braintree merchants to test out Venmo integration. Super simple to use!
  • KIF makes writing automated UI tests such a fun experience. It looks like magic!
  • libextobjc provides us with things like @weakify and @strongify, and one of our favorites is EXTKeyPathCoding which lets us avoid @"stringlyTyped". For example, [NSSortDescriptor sortDescriptorWithKey:@keypath([Story new], createdDate) ascending:NO] which gets checked at compile time, as opposed to [NSSortDescriptor sortDescriptorWithKey:@"createdDate" ascending:NO] which is prone to typos and harder to refactor.
  • Mantle makes converting JSON reponses to and from objects a breeze.
  • MCDateExtensions adds some nice additions to NSDate that make it a lot more manageable to do date computations, etc.
  • Mixpanel has a really nice dashboard and handles all of our analytics.
  • MMDrawerController is really easy if you want add drawer navigation to your app. We’re looking to bid farewell to our hamburger button in the near future though.
  • MZFormSheetController brings iPad’s UIModalPresentationFormSheet to iPhone.
  • Nocilla is our favorite HTTP stubbing libary because it has such a simple and elegant API.
  • NSURL+QueryDictionary makes it easy to convert URL query params to a dictionary and vice versa.
  • ObjectiveSugar is exactly as it sounds. Add some sugar to your Objective-C!
  • OCMock because dependencies. Though with Swift and its focus on value types, we might be using fewer mocks!
  • oh-my-zsh because all we can say is, “OH MY ZSHELL!”
  • PSTAlertController provides an API similar to iOS 8’s UIAlertController, and it’s backwards compatible with iOS 7.
  • ReactiveCocoa is a different way of thinking about architecture, and we like it. We’re moving more and more towards FRP.
  • Specta allows our specs to read like English and have better structure. it(@"should allow the user to log in", ^{ ... }); instead of testUserShouldBeAbleToLogIn. We think it’s a lot nicer thanReadingABunchOfCamelCasedSentences.
  • SSKeychain provides an elegant abstraction around Apple’s Keychain Services API.
  • SVProgressHUD is basically every spinning progress loader in our app.
  • TOWebViewController is so nice for the few web views that we have in our app, although we’re slowly but surely moving away from them.
  • TTTAttributedLabel appears over and over in our app. Any stylized, tappable looking sections of UILabel’s in our app is probably a TTTAttributedLabel.
  • Underscore.m is one of my personal favorites. Never write a for-loop again.
  • xcpretty makes our Travis CI build output so much cleaner and prettier.
  • XVim I think I’m the only one who thinks this on my team, but it’s impossible to navigate quickly around Xcode without this.

A huge thank you to everyone who contributes to open-source. It makes development so much more collaborative, faster, and fun.

Giving back

Since we use so many open-source libraries, we wanted to give a little back to the community. We hope you find something that you like!

  • DryDock is basically our internal “App Store” for distributing beta builds to the rest of the team.
  • synx reorganizes your Xcode project folder to match your Xcode groups, because Xcode doesn’t already do that for some reason.
  • slather lets you measure test coverage in your iOS projects and optionally hook it into CI.
  • VENCalculatorInputView is the calculator keyboard for the amount field of a payment flow.
  • VENPromotionsManager is what we use for location / time dependent events, like our SXSW promotion last year.
  • VENSeparatorView is the zig-zaggy line that shows up in your payment feed for cash out events, etc.
  • VENTokenField is the Messages.app style recipients field that we use in our payment and invite flows.
  • VENTouchLock is our Touch ID + pin code integration.
  • VENVersionTracker is what we use to auto-update our dogfood versions. We’re looking to move to using HockeyApp’s equivalent though.
  • Venmo-iOS-SDK lets you build apps that integrate Venmo payments really easily.
Permalink

Venmo Developer Spotlight: Edmund Yan

· by Cassidy Williams

By Cassidy Williams and Edmund Yan

This is the second in a series of Venmo Developer Spotlights, where you can get insights on what life at Venmo is really like. If these posts tickle your fancy, head over to our job board and join us!

Edmund is a great backend engineer at Venmo. A recent Computer Science graduate from UC Davis, he is very excited to put his years of studying to use at Venmo. His life revolves around food, so expect to catch him trying out a new restaurant or cooking his ol' classic of steak and potatoes at home.

How long have you been with Venmo? What do you work on?

Venmo is my first job out of college, and I've been here a little over four months. I'm a platform engineer on the Money team, which owns the systems that deal with handling, you guessed it, money! This includes things like adding and verifying your bank account and the delicate process of actually moving money around Venmo.

What is your favorite programming language?

I'm a big Python fan these days, but I still have a huge place in my heart for C/C++. I did a lot of CUDA in school and although immensely frustrating, I loved the hours spent in the computer lab trying to squeeze out extra FLOPs out of my GPU.

What do you like to do outside of work?

I probably have an unhealthy obsession with Esports, where I log many more hours watching other people play video games than playing the game myself. While some people spend the weekend marathoning Netflix, I'm spending it marathoning a weekend LoL, CS:GO, or SC2 tournament.

Are you working on any side projects right now?

Now that I finally have my own apartment, I've been spending the past month "pimping" it out to be my little tech-oasis I call home. Organizing the miles of wires throughout the room, setting up the HTPC, automatically downloading the latest TV shows/magazines, wirelessly syncing all of it to my phone/tablet, etc. It's been a ton of fun incrementally building the system out and finding places I can write scripts to automate the process.

What is a fun fact about you that you don’t usually get to talk about?

In the 8th grade, I wrote a 70-page report on Jedi in the Stars Wars universe. This went into detail about their history, bios of influential Jedi, descriptions of force powers, lightsaber designs, and even an interview with a random guy I found on a Star Wars forum. I'm cringing but also laughing hysterically remembering it now.

What advice do you have for aspiring developers?

If you're having trouble finding inspiration to do programming on the side, find things in your life (no matter how small) and optimize it! My very first program was an auto-clicking script that pressed two keys over and over again so that I could get a high score in a Flash game on Neopets.
Looking back, some of the most fun and rewarding coding I've done were just small scripts I made to automate and make my mundane life a little easier. Things like auto-clicking video game bots, Excel macros, and web page parsers were just me thinking "hey, a computer can do this way better!"

Got more questions? Email us at blog@venmo.com!

Permalink