-- adapted by nick sawhney -->
I'm a 23 year-old software engineer. I like biking in the city, making music, and drinking cold brew. I'm passionate about using technology to build things that solve interesting problems, make a social impact, and sometimes just to make people laugh.
Nick Sawhney
nicksawhney@nyu.edu
I made a website where people could put a picture of Bernie Sanders, sitting with his mittens on inaugration day, anywhere in the world with Google Maps street view. It went viral, hitting 9.8 million site requests in 4 days, and garnered some press attention as well. I immediately had 2 problems: scaling to meet the demand, and paying for the API requests to Google Maps. Luckily, I got in contact with some great engineers who taught me how to scale in real-time, and more than 7,000 people donated money to help pay for the costs. I learned a lot in this project, and hopefully gave some people a good meme along the way.
Here's a video I made sharing the story!For my undergraduate thesis, I researched changes in fare evasion arrests in New York City's subway system as a result of new enforcement policies from the Manhattan District Attorney. For accessibility, I made an interactive map you can use to explore the data set I created for the paper. Feel free to click around! Read the paper here.
I noticed that I would cough a lot more during my commute when pollutant levels were high, so I did a brief survey of air quality in the city and its health impacts. This was one of my first projects about the city, and introduced me to the complexities of dealing with different types of map projections and geographic data. It's also a great example of how easy it is to turn around a project from NYC Open Data. Check out the jupyter notebook
This interview was originally conducted by OpenSource.com, but was not published due to the potential political content. I decided to publish it here instead! Thanks to Allie Delyanis for the help!
The idea came to me basically out of nowhere, though definitely inspired by the light silly attitude I saw all over Twitter on inauguration day. It definitely feels like there was a much-needed reset that day, across social media. It took me about an hour of building and half an hour of testing before I felt comfortable putting the site up. I'm glad I took the half hour to test -- it meant that when traffic started picking up later that night I was able to focus on new scale-specific problems.
Thanks for mentioning this! I'm a huge nerd for everything geospatial and really want to do more rigorous work with it in the future. I figured that there would be an API to let me access Google Maps and there was! Incorporating google maps was dead simple at first -- I used the `requests` library to make a `GET` request to the API with the location from the form on the frontend and got returned a jpeg. When the site started getting more traffic, I quickly blew through my free api credits and people started getting error messages. Incredibly amusing to me was that the error message was still returned as a jpeg, so the site was just plopping bernie into an infinite white void with an "X" in the middle. To get around this, I had to implement a signing/authentication module (mostly taken directly from the google cloud documentation) on the fly. The cool part was I was able to get direct feedback on whether the site was working or not throughout the development process because people were constantly retweeting with their own images, I just had to check to make sure I had those instead of comments about how the site was broken!
Dead simple tech stack. Flask app calling functions to get the image from google and add bernie to them. Deployed on heroku with as many concurrent gunicorn workers as possible. The image manipulation is done with `cv2`. Normally, I would've used `Pillow`, but I've been wanting to get into `cv2` for use with practicing making CNNs and GANs. Since I had no idea the site would get popular at all, I went with cv2 just to learn the library a bit more, having only used it to help a friend with her homework one time.
It took me about half an hour after posting to start completely freaking out. At that point, I bit the bullet and started increasing the tiers of machine and scaling as I saw fit but still trying to save costs wherever possible. Eventually, I got scaling help from some really cool people at Heroku. This also led me to open the crowdfunding page, which became very useful once I started getting charged for API calls as well.
I was definitely hyperbolizing a bit there (I was very sleep deprived during this interview) but I think what I meant was that my overall approach was a scrappy just build and release kind of vibe. This does make sense if you're looking for a simple couple-hour project just to put online for fun. That being said, I've got a couple takeaways. First, test as much as you can. It'll save your life. Write test suites if you can, and think a bit more critically about the balance between release time/scaling prep if it's something like this where the timing is everything.
People keep messaging me on twitter/email/linkedin asking why I don't just put ads on the thing to support it. I don't like ads. I don't want to make a site with ads. I don't think I would have crowdfunded as much if there were ads. Finally, it just doesn't seem to be in the spirit of the meme to put ads on it, crowdfunding feels much more grassroots! Luckily, the higher total volume the lower the cost per use, so moving forward I expect the financial burden to keep the site to be much lower. So, I plan on crowdfunding again! I do not expect the popularity to be as high this time around so hopefully costs and donations are more manageable. I'm going to be working on some open-source tools to monitor the api usage vs crowdfunding, and automate pulling of the core api-using functionality when funds dip below the required threshold. Also, I'm going to be putting up some content on YouTube and potentially looking into more longer-term regular crowdfunding i.e. to support the site, and maybe even my future work! For now, my page at Buy Me A Coffee is still open.
Please feel free to visit the github to contribute! While the meme site is cool, what I really really would love help on is developing those open source tools I mentioned above. It would be so awesome if the next time someone goes viral like this, they don't have to spend the time worrying about costs, worrying if they should go to sleep because they might wake up with a credit card overcharge, etc. Instead, they might have the tools to just enjoy the ride! Not to sound ungrateful of course, the multi-faceted stress/exhilaration I felt during the site's lifetime was the most intense period of rapid learning I have ever undergone.
Thanks so much for having me and asking such insightful questions! Hope to hear more from y'all soon.
I researched changes in fare evasion arrests in New York City's subway system as a result of new enforcement policies from the Manhattan District Attorney. For accessibility, I made an interactive map you can use to explore the data set I created for the project. Read the paper here.
I noticed that I would cough a lot more during my commute when pollutant levels were high, so I did a brief survey of air quality in the city and its health impacts. This was one of my first projects with Pandas, Folium, and introduced me to the complexities of dealing with different types of map projections and geographic data.
Exercitationem reprehenderit quod explicabo consequatur aliquid ut magni ut. Deleniti quo corrupti illum velit eveniet ratione necessitatibus ipsam mollitia.
Dolores velit qui quos nobis. Aliquam delectus voluptas quos possimus non voluptatem voluptas voluptas. Est doloribus eligendi porro doloribus voluptatum.
Proin gravida nibh vel velit auctor aliquet. Aenean sollicitudin, lorem quis bibendum auctor, nisi elit consequat ipsum, nec sagittis sem nibh id elit.
Quisquam vel libero consequuntur autem voluptas. Qui aut vero. Omnis fugit mollitia cupiditate voluptas. Aenean sollicitudin, lorem quis bibendum auctor.
Odio soluta enim quos sit asperiores rerum rerum repudiandae cum. Vel voluptatem alias qui assumenda iure et expedita voluptatem. Ratione officiis quae.
Proin gravida nibh vel velit auctor aliquet. Aenean sollicitudin, lorem quis bibendum auctor, nisi elit consequat ipsum, nec sagittis sem nibh id elit.
During my undergraduate career, I studied politics, game theory, international relations, and data science. This culminated in my thesis, a quantitative analysis of the role of policing in the NYC subway system. Beyond academics, I had the great pleasure of serving as General Manager of WNYU Radio 89.1 FM, where I hosted Weekly Refresh, a technology news talk show.