What would you have served at your feast fit for a king?
Everyone’s favorite epic fantasy begins again this Sunday, July 16th, and two lucky winners are about to have a $500 feast delivered to their door to celebrate!
*PROMOTIONAL DETAILS: No purchase necessary. Offer is in no way sponsored, endorsed or administered by, or associated with, Home Box Office, Inc. (HBO) or Time Warner . Contest starts 7/11/17 at 2:00:00 PM PT and ends on 7/14/17 at 11:59:59 PM PT. Must be at least 18 years of age to enter. Restrictions apply. See official rules and alternative method of entry here.
#DinnerIsComing was originally published in The DoorDash Dispatch on Medium, where people are continuing the conversation by highlighting and responding to this story.
Dashing to Doorsteps in more than 70 Cities — Orlando, New Jersey, and Long Island
By Brent Seals, Head of Launch
Summer is finally here and we’re bringing all your favorite foods to your favorite vacation destinations. After successfully launching in Miami and New York City, we’re thrilled to announce that we’ve expanded even further into Florida, as well as into even more of the area surrounding New York City, with DoorDash now available in areas of Orlando, New Jersey, and Long Island.
DoorDash is making magic in Orlando, starting with Downtown, Alafaya, Maitland, Winter Park, College Park, Oviedo, International Drive, and expanding into additional neighborhoods later this year. We’ll be offering delivery as far north as Altamonte Springs, south past the Orange County Convention Center, and west to Ocoee. UCF Knights on the eastern side of town can get their Cheesecake Factory and Taco Bell fix with DoorDash too! We’ll have more than 1500 restaurants available at launch, including local favorites exclusively on DoorDash including Pepe’s Cantina, Crispers, Dixie Belle’s, Jack & Mary’s and more.
We’re also rockin’ the suburbs with delivery available in parts of Northern New Jersey, including Bergenfield, Montclair, South Orange, Short Hills, Vauxhall, Teaneck, Cedar Grove, Garfield, and many more — adding more than 40 cities in the area all together. Dashers will be bringing Jersey’s finest right to your door, think: Inspiration Roll, Brick Lane Curry House, Finca, Millburn Deli, and tons of others.
Finally, we’ll be available to Long Islanders in more than 20 towns in Nassau County, from Mineola to Hempstead, Freeport, Lynbrook, Massapequa, and everywhere in between. Delivery starts at just 99 cents from restaurants like Bareburger, Revel Restaurant & Bar, Mim’s Restaurant, Doughology, and more.
To mark our arrival into 70 plus cities across the United States, we’ll be delighting commuters in the Tri-State Area. Today, starting at 7am EST, if you travel on the LIRR or NJ Transit be on the lookout for free donuts and coffee from DoorDash! We’ll be setup outside the Walnut Street and Rockville Centre train stations giving away thousands of free donuts from Doughology and Doughnut Plant.
Whether you’re at the beach, the theme park, or hungry after a train ride back from the City, we’ve got you covered this summer and all year long.
Most Android apps rely on network calls to a set of backend services. As an app grows, so does the complexity of network calls and data operations. Networking libraries like Retrofit and Volley provide all the functionality needed for basic API calls. However, for threading and sequencing of events beyond a single API call, you may end up writing messy, error-prone code. Enter RxJava, an extension of the Observable pattern that abstracts away the complexities of threading and synchronization and integrates seamlessly with Retrofit.
At DoorDash, we’ve experimented with RxJava and found that it has tremendous benefits. In this blog post, we’ll talk about how using RxJava allows us to handle network operations in a reliable, scalable way.
Let’s start off with a basic example in the DoorDash consumer app that makes an asynchronous API call via Retrofit to fetch the list of restaurants at a given location. Using Retrofit’s Callback<T> interface, we perform the request on a background thread and get the response in onResponse on the main thread.
While this approach works fine for this basic use case, it does not scale much beyond that. Let’s consider a requirement change.
Chaining API Calls
Let’s say the requirement now changes to fetch restaurants based on the user’s default address on login. For this, we have to first make the API call to fetch the user info and then fetch the restaurant list. Using the previous approach, this is what it would look like:
Let’s look at the problems in this code:
It’s not readable because of multiple nested callbacks
It’s not trivial to make the API call aware of lifecycle changes, which can lead to crashes when updating the view
The API call to fetch user info is tightly coupled to the call that fetches the restaurant list
Let’s see how RxJava helps us with this problem:
It addresses the above issues in the following manner:
Makes the code clean and readable
The fragment can subscribe to the Observable, which makes the API calls on a background thread and emits data on the main thread, as specified with subscribeOn and observeOn. It can unsubscribe from the Observable to stop receiving data from it, as done in onPause
Adding API calls to the chain is easy, without much overhead
Making Parallel Requests
Let’s say we want to run an A/B test to display photos for the fetched restaurants. Let’s assume we have an API call that returns a boolean value of the experiment for the current user, where “true” means we should show restaurant photos in the list. Using the same approach from before, we could just use another flatMap operator to first fetch the restaurants and then fetch the experiment value to display the correct experience based on the experiment value. However, ideally we should make the calls in parallel since they are independent of each other and combine their results.
Let’s see how we can do this with the the zipWith operator:
RxJava comes with a powerful set of operators that can be used to compose sequences together. For this use case, we make the two API calls in parallel and combine their results using the zipWith operator before emitting the final result.
Conclusion
Hopefully these examples showed you that RxJava can help you easily adapt to the changing needs of your app via it’s APIs and operators. Our Android apps have benefited from using RxJava for solving problems such as combining data streams, search-as-you-type, and polling. Let us know if you have additional thoughts on how RxJava can help with your applications or come join the team.
At DoorDash we’re always trying to create the best possible experience for our customers and our industry-leading restaurant partners. In that spirit, we’re excited to announce a partnership with NCR, a global leader in point-of-sale solutions for retailers, including some of the most popular restaurant chains in the country.
This new partnership will allow restaurants using NCR’s Aloha platform to more efficiently receive and manage delivery requests by sending DoorDash orders directly into the POS. By managing all orders in one place, restaurants can better streamline operations and expand their off-premise business without requiring additional technology. A direct integration with Aloha also helps increase order and delivery time accuracy that will provide a better customer experience.
DoorDash is the delivery partner of choice for top restaurant brands in the country, many of which already use NCR-Aloha including P.F. Chang’s, Wendy’s, Buffalo Wild Wings, and California Pizza Kitchen. We expect this new partnership to enhance restaurant operations and provide a better consumer and dasher experience.
By Rohan Shanbhag and Thomas Belluscio, Software Engineers
At DoorDash, mobile is an integral part of our end user experience. Consumers, Dashers, and merchants rely on our mobile apps every day for delivery. And our Android team moves fast to ship impactful features that improve the user experience and the efficiency of our platform.
In the past, we verified the functionality of our releases by manually running them through a set of regression tests. In order to scale the development and release process with our growing team, we have tried to automate as much of the testing process as possible. We have taken two major steps to achieve this:
Adopt a testable design pattern
Automate end to end integration tests to replace manual testing before releases
Adopt a testable design pattern
In order to make code testable, it is important to decouple application logic from Android components. Model View Presenter (MVP) and Model View View Model (MVVM) are the two most popular design patterns used in Android apps. MVP decouples logic from the view and makes it easy to write tests for this logic. MVVM uses data binding to accomplish this. We chose MVP because it was easy to learn and it integrated with the rest of the architecture in our apps very well. We have been able to achieve close to 100% test coverage of view and application logic using this pattern.
Let’s take a look at the login functionality in our app using MVP:
This architecture gives us a clear separation of view, business, and application logic, which makes it very easy to write tests. The code is broken down into the following components:
LoginContract.java defines the contract between the view and the presenter by defining the two interfaces.
LoginPresenter.java handles user interactions and contains logic to update the UI based on data received from the manager.
LoginActivity.java displays UI as directed by the presenter.
AuthenticationManager.java makes the API call to fetch the auth token and saves it to SharedPreferences. This class gives us the ability to decouple application logic from MVP. Other responsibilities of manager classes that are not covered in this example include caching and transforming model data.
Oftentimes when implementing a new architecture, the tendency is to rewrite the entire app from scratch. In a fast-moving startup such as ours, this approach is not feasible since we need our engineering resources to work on product improvements in our evolving business. Instead, as we make major changes in areas of the codebase, we take the opportunity to refactor to MVP and add unit tests.
Automate end to end integration tests to replace manual testing before releases
MVP with unit tests alone isn’t enough to guarantee stable releases. Integration testing helps us to make sure our apps work with our backend. To accomplish this, we write end to end integration tests for critical flows in our apps. They are black-box tests that verify whether our apps are compatible with our backend APIs. A simple example is the login test. In this test, we launch the LoginActivity, enter the email and password, and verify that the user can login successfully:
We use Espresso for writing this test. As we are making a real API call, we have to wait for it to finish before moving to the next test operation. Espresso provides IdlingResource to help with this. As defined in the isIdleNow method, LoginIdlingResource tells Espresso to wait until the login call finishes and the app goes to the DashboardActivity.
We took the following steps to build out the infrastructure for running acceptance tests:
Configured a database with sample data and a local web server to service API requests on a machine in our office
Target this web server in our tests. For us, this involved creating a new build variant with a different base url for Retrofit
Set up Continuous Integration with Jenkins to run these tests. We use the same machine to host the Jenkins CI server that runs these tests every time code gets merged into our main development branch
Configured Github webhook for Jenkins to report build status for every pull request
We write and maintain acceptance tests for critical flows in our apps. Continuous integration using Jenkins has helped us catch bugs very early in the release cycle. It has also helped us scale our development and testing efforts as we don’t need a lot of manual testing before our releases.
Conclusion
These testing strategies have helped us immensely in making our releases smoother and more reliable. While the automated acceptance testing strategy outlined in this article has some initial setup cost, it scales very well once you build the infrastructure. In addition, MVP makes sure that new features are tested at the unit and functional level. We hope that these steps will help you reduce the amount of manual testing and gain increased confidence in your releases.
We all think of August as the doldrums of summer. It’s hot. It’s sweaty. Kids are out of school and you’d much rather be on vacation. And all you want is a cold, refreshing drink to keep you cool.
We looked through our data, market-by-market, and found that on August 2 more people ordered iced lattes for delivery than any other day. So, we’re deeming today Iced Latte Day!
Offering delivery in over 500 cities, DoorDash has data from coast to coast, and we dug deep into our data to answer some intense Iced Latte questions: what special add ins are people ordering in their lattes? Are New Yorkers more inclined to get whole milks or almond? Who orders more, LA or Chicago?
Here’s our Iced Latte Intel:
Got milk? The votes are in from the coasts and here’s the most popular milk from each geo:
NY: whole milk
LA: soy
Phoenix: matcha iced lattes
Dallas: whole
Most popular added flavors?
Matcha Iced Latte
French Vanilla
Which city are we deeming the capital of Iced Lattes?
NYC
Phoenix
LA
Dallas
And what’s a holiday without a celebration? Our thoughts exactly. We’re offering customers free iced lattes all day to celebrate!
PROMOTIONAL DETAILS:
$5.00 off when you purchase an Iced Latte and spend a minimum $15.00. Applies to new customers only. Promotion starts 8/1/17 11:59:59 PM PT and ends at 11:59:59 on 8/2/17
Lotta Latte Love Today was originally published in The DoorDash Dispatch on Medium, where people are continuing the conversation by highlighting and responding to this story.
At DoorDash we recently migrated the codebase of our iOS Consumer and Dasher apps to Swift 3 from Swift 2. We decided to migrate the codebase after XCode 8.3 was released in March, which ended support for Swift 2.3. The newest versions of many third party libraries used by our apps are written in Swift 3, and since Swift 2 and Swift 3 modules cannot import each other, we weren’t able to upgrade to the newest version of many libraries. Additionally, Swift 3 has many improved features and syntactical improvements that we wanted to take advantage of.
Our codebases contain nearly 100,000 lines of Swift code which made the migration a non-trivial and challenging task. We want to share some steps we took to facilitate the migration to Swift 3 and what we learned from the process.
Preparation
Before we began we decided to do a code freeze of feature development so that we would not need to constantly update our migration branch with feature development changes.
We also realized that much of the initial work, such as updating code dependencies and project settings, would have to be done in a sequential fashion. However, we quickly realized that we could speed up the process by dividing the codebase into different subtasks to allow multiple developers to help with the migration effort simultaneously We use JIRA as our task tracking tool, so to aid with dividing up the steps of the migration process we decided to create a JIRA reference ticket along with sub-tasks to make it clear which task each developer was working on and to track the overall migration process.
Those subtasks divided up the codebase in alphabetical order by directory path.
Finally, Swift 3 includes many naming convention improvements over Swift 2. We decided to follow the official Swift API Design Guidelines since it offers suggestions on standard best practices when writing Swift code. For example, when the first argument of a method can form a prepositional phrase with the method name, it should have an argument label.
We also came up with our own internal Swift Style guide that clarified additional style conventions such as spacing (indent with spaces instead of tabs) and guard statement usage.
Initial steps of the migration
Since migration steps are not easily parallelizable, one developer worked sequentially on the first few steps of the migration process. These steps took around two days to complete.
First, the developer updated external third party library dependencies. We use Cocoapods for library dependency management and thankfully all of our Swift dependencies were popular libraries that have Swift 3 versions, enabling us to update each dependency pod to the latest version with a simple change to the Podfile. If we had any dependencies that did not have Swift 3 versions, we would either need to remove the dependency or fork the pod repo and perform the Swift 3 upgrade on the code ourselves.
Next we updated the XCode project file. We decided to forgo using the migration tool since the tool makes a lot of changes that don’t automatically follow the API guidelines, such as having empty argument label for the first parameter of converted functions and access control replacements such as using fileprivate when private is sufficient. We also found that the migration tool made many changes that resulted in unnecessary casting between NSError and Error in our codebase. Another disadvantage of using the migration tool is that it makes changes to the entire project, which makes it hard to create pull requests to peer review code in chunks. However, using the migration tool is a perfectly valid option especially for apps that are divided up into smaller modules.
Since we didn’t use the migration tool, we used regular expressions to find and replace many Apple frameworks changes. For example, CGRectMake(0, 0, 100, 50) can be changed to CGRect(x: 0, y: 0, width:100, height: 50) with a simple regex find and replace.
Lastly, we created a main migration branch for these changes. We used the branch Swift3/MainMigration, which was created for the individual subtasks that covered migrating directories within our app. After the work for each subtask was done, the branch for that subtask was merged into this main branch.
Migrating the codebase
We had five iOS developers work in parallel on the JIRA subtasks that divided up the codebase to apply the remaining migration changes. This process included migrating Swift files for each subtask to support Swift 3 and opening Github pull requests against the main migration branch for changes as they were finished. We also peer reviewed each PR to make sure they conformed with the Swift API guidelines and our style guide.
This entire process took a little over a week to finish.
Compiling, testing and releasing
After the first pass through of all the files, we still had around 100 compile errors. One iOS engineer fixed the remaining issues and made sure the app compiled properly. Many of the issues that remained after the first pass were because SourceKit often will not show errors in files until dependent errors in other files are resolved.
Before releasing, we also did a thorough test of all app functionality since the migration touched so many areas of our codebase. We fixed issues as they were found during testing. One common crash we encountered was due to UIKit button selectors being changed to include WithSender in the selector name.
For example:
[DoordashDriver.BankDetailViewController didTapEditButtonWithSender:]: unrecognized selector sent to instance 0x7fbab0e55150
The fix was simply to add WithSender to the name of the IBAction methods.
Our app next went through another round of testing where we distributed the app to employees internally as well as to beta users. This step was essential to help catch bugs and to reduce the likelihood of regression bugs going out with the release. After our internal testing and beta periods, we felt confident that our release was stable and we released our app through our normal release process.
But of course, a developer’s job has only just begun after an app has been released. Proper crash detection and network request monitoring through tools like New Relic is essential to catch post-release issues and crashes. Thankfully we did not encounter any critical post release bugs in our Swift migration release.
Common changes required
We encountered a number of common issues throughout the migration process. Here are a few of the most common changes that we had to make.
Closure parameter labels — Swift 3 removed support for argument labels in function types. This requires the migration process to involve removing parameter labels from closures. This limitation of Swift 3 is discussed in Closure Parameter Names and Labels. In those cases, we simply removed the argument labels in the closures.
Optional protocol functions — The function signatures for UIKit protocol delegate methods have changed for many classes like UITableViewController and UICollectionViewController. The impact of the protocol name changes are not obvious since the code will compile fine without updating the functions since the functions are optional protocol functions. For example: func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) has changed to: func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath). Using XCode’s find and replace feature can help with catching and resolving many of these protocol name changes.
Variables that are assigned to implicitly unwrapped optionals will now have an optional type — This is related to the change in Abolish ImplicitlyUnwrappedOptional type. Implicitly unwrapped optionals are now only allowed at the top level and as function results so function argument types need to be modified. For example, in the following case we just had to change the implicitly unwrapped optional type to be an optional type instead:
#Swift Lint
We also decided to adopt Swift Lint during our Swift migration process to automate code conformance to our style guide. swiftlint autocorrect will correct many issues (548 files for us!), but many issues such as file length violations can’t be auto-fixed. This can be addressed by using swiftlint:disable comments to temporarily disable the violations and then coming back to fix these issues at a later time.
Final Thoughts and Tips
Ultimately, we’re very happy that we completed this migration. While it took time away from product development and required a lot of experimentation, our codebase is now up to date and more scalable thanks to using Swift 3 across all our apps.
If you choose to make the update from Swift 2 to Swift 3 be sure to read the API guideline documentation thoroughly to understand the best practices in naming conventions. Also, make sure there is a consensus on the team for Swift style before starting the migration process.
Additionally, if there are compile errors that are difficult to figure out, move on to other errors and go back to the skipped errors later. Many compile errors are due to dependent files having errors. In retrospect, we might have encountered fewer migration issues if we spent more preparation time to order the migration process in a way that migrated files that were dependencies first. If you do encounter errors, the compiler does a relatively good job of suggesting fixes, but pay attention to avoid unnecessary casting and to ensure that function signatures follow the Swift API guidelines.
Remember that proper communication and coordination during the entire effort is critical. We organized a meeting for all the developers involved before starting the migration so that everyone would be up to date on the entire process. We also made sure to sync up regularly during the migration to share what we learned and coordinate working on the remaining tasks.
Finally, try to limit code modifications to changes that are absolutely essential for the Swift 3 migration. Many times we were tempted to refactor code as we worked through the files for the migration changes but we decided that too many code changes at once can lead to hard-to-discover regression bugs. The migration changes are large enough as-is, so we decided it would be better to add tickets to our bug tracking tool in order to address refactoring changes in a future release.
By Stanley Tang, Co-founder and Chief Product Officer
At DoorDash, we’ve always said that delivery operates at the intersection of a math problem and a human problem. In that spirit, we’re constantly testing various ways to make deliveries faster. From machine learning and artificial intelligence to drones and electric bikes, we know that innovative technology paired with DoorDash’s top operations can help decrease delivery times, increase efficiency, and improve quality.
Earlier this year we began testing testing robot deliveries on the DoorDash platform, as a complement to other modes of transportation like cars, bikes, and scooters. We’re excited by the progress we’ve made so far and have already expanded robot deliveries to four cities across the US (Redwood City, Washington DC, Sunnyvale, and San Carlos). We’ve learned the strengths and weakness of these robots, improved operations, and developed new technology to directly integrate our delivery platform into the robot’s software.
With the success of our existing pilots, today we’re announcing our second robot delivery partnership, teaming up with Marble to test deliveries in San Francisco.
Marble robots offer a new form factor that is larger and more robust, making them useful for multiple orders or for short distance catering deliveries. Their technology also uses LIDAR, the same technology in autonomous vehicles, providing a new approach to self-driving deliveries. Finally, with Marble we’re excited to start offering robot deliveries in our fifth city: our hometown of San Francisco, CA.
While Marble’s robots are a promising technology on their own, we’re most excited about the ways we can use them to complement the existing Dasher fleet and help make human Dashers more efficient and productive, ultimately earning them more money. For example, even though large robots can carry bigger catering orders placed using DoorDash Drive, these types of orders still require a human to set up the food and lay out the order in a cafeteria or conference room. For these deliveries, robots could essentially serve as “autonomous food carts,” making it easier and faster for Dashers to transport the meal, set up the food, and then move on to the next delivery. Similarly, a large form factor robot could enable us to create a mobile “hub and spoke” model, using a robot to pick up multiple orders from a single restaurant at once, transport the orders to a central dispatch hub, and then meet a number of human Dashers who can then take each order to their final delivery destinations.
To celebrate the Marble partnership, we conducted a very special test delivery with our friends at Jack in the Box. Check out a video of our Jack in the Box robot delivery, below:
Robots are an exciting initiative for us and we’re proud to be doubling down on our tests here by teaming up with Marble. But robots are just a first step: with drones, autonomous vehicles, and other promising technologies on the horizon, we know our experiments in this space are just getting started. Keep an eye out for more news on these tests, or join the team to help us determine what technology we should pilot next.
What’s better than waking up on a Saturday morning to your favorite breakfast sandwich hot, fresh, and at your door? Nothing. (We agree!) So we’ve made bagel delivery even easier with the launch of our newest partnership with Noah’s NY Bagels!
Starting today, you can order delicious bagels and shmear, coffee, breakfast and lunch sandwiches and more from 45 locations across California, including San Francisco, Los Angeles, Oakland, San Jose and Sacramento.
Noah’s began piloting its delivery partnership with DoorDash earlier this year, offering deliveries from 13 stores in the Bay Area. Since the initial pilot, the partnership will now include delivery from Noah’s NY Bagels across the company’s footprint. Throughout the process, the two companies have refined operations to ensure deliveries are quick and just how we all like ’em, warm and delicious!
To celebrate the partnership DoorDash and Noah’s NY Bagels are also announcing a social media contest where customers will enter for a chance to win a year’s supply of Noah’s delivered by DoorDash. Simply snap a photo through the hole of a bagel that shows your lifestyle in a creative way. Post it on Instagram, then tag @doordash and use the hashtag #BringMeBagels! (Full terms and conditions here).
Together with Noah’s we look forward to bringing everyone’s breakfast dreams to life — order your bagel and share the love on Instagram now!
#BringMeBagels was originally published in The DoorDash Dispatch on Medium, where people are continuing the conversation by highlighting and responding to this story.
By Elle Pak, Strategy & Operations Manager New York
It’s been a great month since we first launched in New Jersey and Long Island. Since then, we’ve heard a ton of positive feedback from customers about bringing delivery to the suburbs surrounding NYC — making life a little easier and a whole lot more delicious. That’s why we’re excited to announce that we are continuing to expand in the area and are now launching delivery in Queens and the North Shore of Long Island.
In Queens, you can now order from your favorite restaurants in Bayside, College Point, Flushing, Fresh Meadows, Hollis, Little Neck, Murray Hill, and Whitestone. And yes, we’re the only ones offering delivery from the NY restaurant everyone’s been buzzing about — The Cheesecake Factory in Queens. Meanwhile, in Long Island, you can now find us in Glen Head, Great Neck, Greenvale, Lake Success, Manhasset, Port Washington, and Roslyn. Crowd favorites in Nassau County include Frank’s Steaks, Bareburger, Casa de Fratelli, Buffalo Wild Wings, and much more.
We’re delighted to be offering delivery from these new neighborhoods, rich with strong food cultures and histories built off some amazing restaurants. So savor these last few weeks of summer by getting all the best local food delivered straight to your doorstep from 10am-10pm, seven days a week.
Get started today by going to doordash.com or downloading the DoorDash mobile app. Plus, if you have friends or co-workers in Queens or Long Island, be the best bud yet and let them know about DoorDash.
By Millie Yang, Software Engineering Intern (Dispatch)
As I scurry to Little Star Pizza without breaking a sweat, I ask for Anna’s delivery and pride myself on finally tackling that New Year’s resolution of staying fit. Welcome to my first day at DoorDash, where my first task as a Software Engineering Intern was to learn our technology by delivering food.
I love testing our software by actually hitting the streets and completing deliveries, because it allows me to gain first-hand understanding of the impact of my work. As an engineer on the Dispatch team, we focus on problems related to the underlying logistics of on-demand delivery such as picking the optimal delivery route, reducing restaurant wait times, maximizing Dasher efficiency, building models to predict the number of Dashers on the road, finding the best Dasher-consumer pair, and more. When we successfully reduce wait times, for example, it’s not just numbers we see, but actual Dasher stories to share.
I did not come into my internship being told what to do. Instead, I spent the first weeks deploying four different features in three code bases that the Dispatch team mainly uses. Then, I had a discussion with my mentor, Richard, about my particular interests. I picked the open-ended problem of improving batching — offering a Dasher multiple deliveries in a given time span — which allows her to earn more money.
The first question was where to start. I spent a few days thinking about ways to ensure that my program would be intelligent enough to pick out quality batches. At DoorDash, we strive for a strong balance between quality and quantity. This means that every batch my program creates should not only be on time, but should also provide increased earnings for both Dashers and the company. After some back and forth discussion with the business team, we were able to come up with an algorithm to filter out bad batches. Through this process, I learned the importance of communicating effectively within and across teams at DoorDash.
As the weeks flew by, I realized that my colleagues and co-interns had slowly become some of my close friends. Through activities like hiking, sailing, and white-water rafting, we bonded over climbing rocks, saving a windsurfer, and falling off rafts together. There is probably no better way to get to know someone than to be out in the wild with them — well, unless it’s crying from spicy hot pot soup base with your manager and mentor.
While everyone at DoorDash has been warm, welcoming and encouraging, I specifically want to thank my mentor, Richard, and my manager, Jeff, for the best summer in college so far. Their genuine desires to understand me as a person — not just as an engineer — enabled me to warm up to DoorDash very quickly. I will never forget Richard’s big smile when we finished our hardware hack together (picture below), how tasty Jeff’s homemade burgers are, and the spontaneous Dispatch Happy Hours that are even happier than they sound. I guess you know you’ve had an amazing time when goodbyes are so tough, so thank you so much for making my internship so memorable.
To celebrate the total solar eclipse happening this Monday, we decided to get in on the fun and share the excitement in the form of delicious free cookies.
For those of you living in NYC, the Bay Area, LA, Boston or DC — aka not directly in the 67-mile path of the total eclipse… we got you covered with free Half Moon Cookies on Mondaybetween the hours of 2–4pm local time.
To partake in the fun, simply open the app and look for the The Eclipse Cookie Store (#cookieclipse) on 8/21 and voilå — order and have one delivered to wherever you are!
So, even though nearly every store across the country has sold out of solar eclipse glasses and if you miss it you’ll have to wait will 2024 to see it again… DoorDash has you covered with a solar treat.
By Emma Rothstein, Senior Strategy & Operations Manager
We’re firm believers in never passing up a good deal. That’s why we’re excited to share that this week we’re bring you one of the best deals yet, which we’re calling #DoorDashTastes.
#DoorDashTastes is our first ever delivery-only Restaurant Week in Atlanta and Miami, a special time where you can enjoy restaurant specials from the comfort of your couch. #DoorDashTastes celebrates our favorite restaurant partners who are offering exclusive deals just for DoorDash customers in the app and on the website.
Starting today through Friday, order in from select restaurants and choose from dozens of DoorDash-only specials for just $5 + free delivery with promo code TasteMIA or TasteATL.
Meanwhile, folks in Atlanta can chow down on great deals on items like Silverspoon Catering’s BBQ Pork Chop with Mac & Cheese, Grub Burger’s Front Porch Burger, Dickey’s Big Barbecue Burger, Mellow Mushroom and Uncle Maddio’s Pizzas, and Alessio’s Baked Ziti — with many more to chose from across both markets.
If you live in the Miami or Atlanta areas, you can participate in Restaurant Week Delivered by simply downloading the DoorDash app and clicking on the #DoorDashTastes banner to select from the many restaurants participating in your area. We hope you enjoy!
“…people will be valued for their ideas & unique perspectives, not for their title or the strength of their voice.”
“…women will go out of their way to welcome, connect with and support one another.”
“…the company will not only be a great place to work but also a company that develops and fosters lasting relationships and inspires personal and professional growth outside of the office.”
These are just a few of the inspiring sentiments shared at the first Women@DoorDash Summit last month. With the support of our management team, 45 women from 10 offices across the country gathered to spend the day connecting with one another and answering the question: How can we make DoorDash an even better place to work?
In recent months, there has been much discussion around the challenges faced by women in Silicon Valley. Women@DoorDash emerged as a positive force to help create a model for women in tech. Today, the group counts over 100 members and we continue to grow!
Shout out to our wonderful advisor and facilitator Diane Thompkins of Courage Corps
Before we started the group, my colleague Tia and I began by collecting data on women’s experiences at DoorDash. Armed with feedback from confidential focus groups (Tia is a lawyer), and spreadsheets of the most referenced themes (I work on data analysis), we prepared a statement of purpose and a framework for the group. To ensure we reflected the diverse perspectives of women across our offices, we partnered with colleagues like Dana in Phoenix and Darshini in New York to synthesize discussions into guiding beliefs. And with the help of our experienced advisor Diane Tompkins, we used the framework to plan our day-long offsite.
After months of planning, the Summit day finally arrived. Yes, there was yoga, laughter, food-themed floaties (see photos) and dinner with senior leadership. But most importantly there was real talk about real issues. We discussed where we are are today, our vision for tomorrow, and the initiatives that will make us stronger as a company. As a group, we decided that we are most passionate about six initiatives:
Building a collaborative culture
Championing one another
Creating community and connection
Developing female leadership
Increasing diversity and inclusion
Addressing success at work and in life
Being a company with a bias towards action, we finished the day with no less than 97 ideas across themes! Not only that, but volunteers stepped up to move top-voted initiatives forward.
Writing up our ideas for Women@DoorDash — all 97 of them!
“I was really skeptical when we started the day talking about “how we felt as women” but by the end of the day, I was confident in our actionable list of initiatives to not only improve the company culture, but also bring meaningful change to making women at DoorDash stronger contributors and leaders.” - Prithvi
Since returning from the Summit, the connection and momentum have continued to build. Members have stepped up to organize events such as last week’s “Chai & Chill” — an hour long discussion open to all employees interested in discussing diversity issues in a safe space. It’s been empowering to see all that this group has accomplished so far and we look forward to sharing more as we track our six initiatives. Stay tuned!
Thanks to all those who helped, including our logistical mastermind Darshini, talented photographer Madison, swag designer Brandon, yogi Ashley, and catering connoisseur Lindsey. Special thanks to our management team supporters and allies, including our General Counsel Keith and CEO Tony.
Fantasy football season is coming up and it’s time to start planning your draft party! We’re celebrating by kicking the season off with special discounts and a giveaway.
From September 1 — September 11, 2017, enter to win a fantasy football championship prize package for your league, including $50 in DoorDash credits!
Trophy Bundle Courtesy of FantasyJocks.com
In addition to your entry into the Fantasy Football giveaway, you’ll also score a sweet discount on your food! There are two ways to enter:
Enter promo code DDFOOTBALL20 at checkout for $5 off an order of $20+.
Enter promo code DDFOOTBALL50 at checkout for $15 off an order of $50+.
The Championship Package Includes:
(1) Championship Trophy
(1) Championship Ring
(1) Championship Banner
(1) Last Place Trophy
$50 in DoorDash Credits
The winner will be announced before the start of week two of the fantasy football season. So get your team together and don’t forget to order in to host the ultimate draft party. Enter now on DoorDash.com.
— — — — — — — — — — — — — — — —
*PROMOTIONAL DETAILS: No purchase necessary. Offer is in no way sponsored, endorsed, or administered by, or associated with, the National Football League or the National Collegiate Athletic Association. Contest starts 9/1/17 at 9:00:00 AM PT and ends on 9/11/17 at 11:59:59 PM PT. Must be at least 18 years of age to enter. One entry per person. Restrictions apply. See official rules and alternative method of entry here.
By Kristen Webster, Senior Communications Associate
It’s that time of year again, where we celebrate all things good: warm baked bread, topped with delicious tomato sauce, all covered in melted cheese! Yes, believe it or not, today is National Cheese Pizza Day, and we’re celebrating in style.
We’ve combed through millions of data points from over 500 cities across the U.S. to find out just which cities love their cheese pizza the most. The results are in and Nashville, TN takes the cake (or pizza) for the number one spot on our list, followed by Los Angeles, and Northern New Jersey. Curious where your city falls? See the top 10 cities ranked below.
U.S. CITIES THAT ORDER-IN THE MOST CHEESE PIZZA:
Nashville
Los Angeles
Northern New Jersey
Boston
San Francisco Bay Area
Indianapolis
Las Vegas
Dallas
Miami
Sacramento
Looks like the staple Nashville Hot Chicken has some tough competition when it comes to Nashvillian’s love of cheese pizza! With pizza on the mind, we also looked into who simply orders in the most pizza in general (not just cheese pizza) and data shows that the award for the city with the most pizza orders goes to Atlanta. Though they came in at number 23 on our list, they’re still ordering in plenty of other varieties to make up for it.
MOST PIZZA ORDERS (ALL TYPES):
Atlanta
Chicago
Phoenix
Boston
San Francisco Bay Area
Miami
Los Angeles
Sacramento
Northern New Jersey
Las Vegas
We’re also serving up more pizza fun facts below.
MOST POPULAR TYPES OF PIZZA ORDERED IN:
Cheese
Margherita
Pepperoni
Build your own 2 topping pizza
BBQ chicken
Hawaiian
Vegetarian
Deep dish
Sausage & peppers pizza
Thin crust
*Fun fact: another commonly ordered pizza on DoorDash, the Mexican pizza from Taco Bell
MOST ORDERED PIZZA TOPPINGS:
Pepperoni
Mushrooms
Extra cheese
Pineapple
Black olives
Italian sausage
Bacon
Spinach
Green peppers
Onions
To celebrate the occasion, we’re giving you $10 off your pizza order today with promo code CHEESEPLEASE. So no matter your city or pizza preference, don’t miss out on the celebration and order in you favorite pizza today!
PROMOTIONAL DETAILS:
$10.00 off when you purchase a pizza and spend a minimum $20.00. Limit 500 redemptions. One redemption per household. Promotion starts 9/5/17 06:00:00 AM PT and ends at 11:59:59 PM PT on 9/5/17
But just because Labor Day Weekend is behind us, doesn’t mean the fun has to stop. That’s why today we’re excited to announce that DoorDash is available for the first time in the Sooner state, with delivery now available throughout the Oklahoma City and Tulsa areas. Plus, today we’ve expanded even further into Florida with our launch in 12 new cities in the Tampa area. And last but not least, we’re opening delivery to Dayton, Ohio as well. It’s a big day!
In Oklahoma City we’re sweeping down the plains to the hungry folks in Edmond, Moore, Bethany, The Village and Nichols Hills, and to those in Tulsa and Broken Arrow. Local favorites now available through DoorDash include City Bites, Billy Sims BBQ and The Cow Calf-Hay.
For new Oklahoma City and Tulsa area users, DoorDash is offering $3.99 delivery from select restaurants and $5 off orders of $20+ with the code DASHOK.
On the Gulf Coast, Tampa area residents in Brandon, Carrollwood, Citrus Park, Dover, Egypt Lake-Leto, Mango, Pinecrest West Park, Seffner, Seminole Heights, Tampa, Town ’n’ Country and Valrico can now enjoy delivery from local favorites like AJ’s Press, Bamboozle Cafe, Burger Culture, California Tacos To-Go and Nico’s Arepas Grill — just in time for the Buc’s season!
To celebrate, DoorDash is offering free delivery for the entire month of September, and $5 off orders of $15 or more for new users with the code DASHTPA.
And last but definitely not least, we’re pushing further into Ohio with delivery now available in Dayton, Kettering and Beavercreek, and we’re offering free delivery for the first week to all new users in the area!
So now people in Oklahoma City, Tampa, and Dayton, can also enjoy these last few weeks of summer by sitting back, relaxing and letting DoorDash handle all the work.
With cell phone cameras at our fingertips, it’s no surprise that some of the best food and lifestyle photography is on Instagram. While scrolling through our social feed each day, we see incredibly creative shots posted by people throughout the DoorDash community.
We love it when you tag us in your Instagram photos, and that’s why this month we’re giving away free delivery for an entire month to the winner of top photo that makes us double tap.
To enter to win, simply snap a photo that showcases your food or DoorDash order in a creative way and post it to Instagram. Then tag @doordash and include hashtag #MyDoorDash.
Winner will be announced on October 3rd, 2017 — Best of luck!
TERMS & CONDITIONS:
No purchase necessary. Photo submissions can be of food order on the DoorDash platform or any other food item. A purchase does not increase your chances of winning. Must be at least 18 years of age to enter. One entry per person. See official rules here. Sponsor: DoorDash, Inc.
You know the whole if a tree falls in the woods and no one hears it, did it even fall? Well… if it’s a national food holiday and you’re not getting something free, is it even a holiday? DoorDash and Shake Shack sure don’t think so…
Together with Shake Shack, we are launching #ShackWeek starting tomorrow, 9/12 through Monday, 9/18 — aka, a week of free Shake Shack delivery for orders over $12 via DoorDash from 50 Shake Shack locations all across the country.
To further celebrate the occasion, we are starting and ending #ShackWeek by giving away our favorite menu items, for FREE:
In honor of National Chocolate Milkshake Day on Tuesday, 9/12, we are giving out FREE chocolate milkshakes between 11–2pm local time
To end the week on a high note, we’re celebrating National Cheeseburger Day on Monday, 9/18 by offering FREEShack Burgers between 11–2pm local time
Join in on the #ShackWeek celebrations by avoiding the crowds and enjoying your delicious, juicy burgers and shakes from the comfort of your home! For free shakes on Tuesday, burgers on Monday and free deliveries all week long, all you have to do is use promo code SHACK at checkout. Enjoy!
Over the past few years, fellow Y-Combinator company, Rickshaw, has been building a white-label, same-day local delivery platform aimed at helping businesses provide efficient, high-touch deliveries to their customers. We’ve closely tracked their progress over time and realized in recent months that both Rickshaw and DoorDash shared a vision to revolutionize the way last-mile delivery is done.
Having been so impressed by their team, today we’re announcing that the founding team at Rickshaw will be joining DoorDash as part of an acquihire.
As part of the deal, Rickshaw’s three key team members will be joining our engineering and product teams, to work on DoorDash Drive and our merchant product suite. They bring a wealth of experience in scaling delivery operations and strong technical knowledge with previous experience at companies including Dropbox, Trulia, Ooyala, and more.
While the Rickshaw operations will be winding down, we know their entrepreneurial spirit, commitment to excellence, and last-mile delivery vision will live on here at DoorDash. We’re excited to have them onboard and can’t wait to show off their contributions in the months to come.