Jump to content
herobyclicking

DonorDrive AMA w/ the Extra Life Community

Recommended Posts

Screen Shot 2017-10-17 at 1.24.11 PM.png

Who?

If you've signed up for Extra Life or have made a donation, then you've interacted with DonorDrive! A leader in cloud based peer-to-peer donations DonorDrive|Global Cloud helps us do what we do #ForTheKids by providing a digital means to collect donations online for Extra Life, Dance Marathon and Children's Miracle Network Hospitals across the US and Canada. 

 

What?

 

We want to talk about using JSON information! More specifically, we want to talk about HOW you are using it to improve your fundraising. JSON data is used to capture information about Extra Life participants, that then can be output in applications for live stream alerts or display team member rankings.  

 

As our donation platform, DonorDrive is looking to improve upon the use of this data and they want to hear from you, the Extra Life Community!

 

Next steps:

 

Questions from you, our community:

Are you a developer? Have you created an application to interact with your Extra Life fundraising efforts?

 

Now is the time to fill this forum with your questions about the DonorDrive platform and how you can better access Extra Life participant data for your projects.

 

The DonorDrive team will field your questions here, explain some of the upcoming enhancements. This is a great time to find out more and be a part of enhancing the streaming experience when fundraising for Extra Life. 

 

AMA on Monday, October 30th!

 

It's happening, right here! 10/30/17 @ 8pm EST, the fine folks at Donor Drive will be hopping in the forums and answering as many of your questions as possible for ~ 1 hour. Feel free to post your question ahead of time or set your calendar to come back on October 30th!

 

DonorDrive Who's Who:

 

@Nik [DonorDrive] Stephens:  Chief Technology Officer, wears the towering pillar of hats

 

@Tim [DonorDrive] Mixell:  Senior Application Architect, Captain of Team DonorDrive 7 years running!  https://www.extra-life.org/team/donordrive

 

@Ben [DonorDrive] Clayton:  Product Integration Developer, resident Twitch enthusiast

 

@Matt [DonorDrive] Clark:  Senior Account Manager, CMNH's point guy at DonorDrive

 

 

  • Like 3

Share this post


Link to post
Share on other sites

@herobyclicking you for sure should have known I'd comment on this :P

 

I'm literally in the process of working a little dashboard app right now and on the participant JSON object, it would be nice if the Team ID would also be returned as a part of it. Additional data would be great too. It would be cool if it could contain things like Twitch and other Social sites.

  • Like 1

Share this post


Link to post
Share on other sites
There appears to be a delay between the JSON data that is viewable by directly going to the participant page versus pulling it programmatically. My own rudimentary testing shows a delay of anywhere from 1 - 4 minutes. Why is this delay occuring?
 
Specifically, here are the reproduction steps (assuming you start with no recent donation activity):
  1. Navigate to participant JSON page in a browser tab and view "totalRaisedAmount".
  2. Pull JSON with an XMLHttpRequest and view "totalRaisedAmount". It should be the same as above.
  3. Enter (or delete) an offline donation.
  4. Go to participant JSON page in browser, and "totalRaisedAmount" is immediately updated with new amount.
  5. Pull JSON with a new XMLHttpRequest, and "totalRaisedAmount" is NOT updated.
  6. Continue polling with XHR for several minutes until it finally updates.
7 hours ago, heartandthesynapse said:

@herobyclicking you for sure should have known I'd comment on this :P

 

I'm literally in the process of working a little dashboard app right now and on the participant JSON object, it would be nice if the Team ID would also be returned as a part of it. Additional data would be great too. It would be cool if it could contain things like Twitch and other Social sites.

 

fyi, teamID is indeed returned in the participant JSON. See attached image for my personal data as an example (my teamID is null, but I would assume it would have a value if you're on a team).

Capture.PNG

  • Like 1

Share this post


Link to post
Share on other sites

@Zosoled the latency you're seeing is a function of the cache mechanisms in place. Depending on current request volume, it may take a couple minutes for the totalRaisedAmount you're accessing via XHR to reflect the amount you see in your browser. We are always working on ways to improve the experience and responsiveness of DonorDrive. We value your feedback, and will do our best to make sure your game day experience is top-notch.

 

A friendly reminder that responsible JSON consumers poll a given endpoint once-a-minute at most.

 

Thanks!

P.S. Double-thanks for answering @heartandthesynapse's question!

 

 

Share this post


Link to post
Share on other sites

First, thanks for responding! I did not know there was a universal timing rule for polling data, so I will adjust my code accordingly. :)

 

Second, this doesn't really answer the question. From my own extensive time-consuming research that was totally not just googling it, the simplest way to avoid browser caching is to modify the URL in a trivial way, i.e. add a timestamp parameter. I tried this with my XHR, but it didn't make a difference, so it seems like there is server-side caching that distinguishes between XHR and UI access, somehow. Per the first point above, it doesn't seem like this would be too much of an issue if the cache expired every 30-60 seconds, but when it takes 5 minutes to get the data, it seems like it's not working optimally.

 

Thanks again! This tool is proving very useful to me.

  • Like 1

Share this post


Link to post
Share on other sites

@Zosoled, you are absolutely correct. We do make a server-side delineation between XHR and requests made to the EL website. That being said, if you're experiencing persistent 5+ minute delays in updates to the &format=json endpoints, then there is something on our end that may require additional investigation. I'll dig in and see what I can find.

 

In the meantime, would you mind describing which endpoints you use, and for what purposes? There may be other ways to slice your requests that result in a better experience.

 

Cheers!

  • Like 1

Share this post


Link to post
Share on other sites

Right now I'm just using participant and participantDonations, since I'm not on a team this year. I'm building a goal meter since the one on Streamlabs doesn't plug into Extra Life donations (only the alert popups work), and I'm planning on building out some other assets similarly

Share this post


Link to post
Share on other sites
On 10/19/2017 at 10:25 PM, Zosoled said:
fyi, teamID is indeed returned in the participant JSON. See attached image for my personal data as an example (my teamID is null, but I would assume it would have a value if you're on a team).

Capture.PNG

3

 

Oh, shoot I'm a dummy. Not sure how I missed that.  Thanks for pointing that out... well looks like I've got some code to refactor.

  • Like 1

Share this post


Link to post
Share on other sites

@Tim [DonorDrive] I made the Extra Life Helper which hits a participant or team endpoint once a minute. It then hits the donations endpoint for participants if the total has changed in order to do a donation alert. I was very happy to see the API introduced because before that I was parsing the Extra Life HTML pages. :P  More info on the Helper here:

 

 

I just posted this and @herobyclicking directed me here. I've noticed the caching that you're doing on your side but it has been pretty extreme over the last few days. I don't see requests to the API returning the latest data for multiple hours sometimes. I'm doing my best to make sure I bust the cache from the client side.  Do you know why things have been slower to refresh lately? 

 

 

  • Like 2

Share this post


Link to post
Share on other sites

@bread_man, welcome to the discussion! I've been talking with @Zosoled about latency in some of the JSON endpoints. I believe we've tracked down the culprit, so updates to the participant and team totals should be happening more quickly.

 

The caching mechanisms in place are entirely server-based, so client-based cache-busting strategies wont help you. We're actively monitoring the API cache, and are making adjustments as needed to ensure a smooth experience for consumers of the JSON-formatted pages.

 

Thanks!

Share this post


Link to post
Share on other sites
1 hour ago, Tim [DonorDrive] said:

I've been talking with @Zosoled about latency in some of the JSON endpoints. I believe we've tracked down the culprit, so updates to the participant and team totals should be happening more quickly.

 

Thanks for the info, @Tim [DonorDrive]!  And thanks for working on improving the caching for the XHR responses.

 

Information like this (server-side caching policies for XHR) and best practices (only hitting the endpoint once per minute) would be great information to put on a dedicated page for developers.  Such a page could include code examples and other documentation as well.

  • Like 2

Share this post


Link to post
Share on other sites
2 minutes ago, bread_man said:

Information like this (server-side caching policies for XHR) and best practices (only hitting the endpoint once per minute) would be great information to put on a dedicated page for developers.  Such a page could include code examples and other documentation as well.

 

It's a work in progress!!! :)

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

@bread_man Thanks for all the work you've put into Extra Life Alerts. I'm using it for labels for the last donator and the top donator of all time. I'm wondering if there is any way to grab the top donator of an hour. Our team is giving away prizes to the top donator of each hour so it would be good to have that person's name labeled on stream to encourage viewers to try and beat out his/her donation.

 

Thanks.

Share this post


Link to post
Share on other sites
17 minutes ago, DrewM1788 said:

@bread_man Thanks for all the work you've put into Extra Life Alerts. I'm using it for labels for the last donator and the top donator of all time. I'm wondering if there is any way to grab the top donator of an hour. Our team is giving away prizes to the top donator of each hour so it would be good to have that person's name labeled on stream to encourage viewers to try and beat out his/her donation.

 

Thanks.

Are you familiar with programming at all? You could modify the files to parse out the donations by the "createdOn" timestamp.

Share this post


Link to post
Share on other sites
3 hours ago, DrewM1788 said:

@bread_man Thanks for all the work you've put into Extra Life Alerts. I'm using it for labels for the last donator and the top donator of all time. I'm wondering if there is any way to grab the top donator of an hour. Our team is giving away prizes to the top donator of each hour so it would be good to have that person's name labeled on stream to encourage viewers to try and beat out his/her donation.

 

Hey @DrewM1788. I'm actually not one of the developers of Extra Life Alerts. :)  I made the Extra Life Helper which is a different stream tool.  Are you talking about this? 

 

Share this post


Link to post
Share on other sites
49 minutes ago, bread_man said:

 

Hey @DrewM1788. I'm actually not one of the developers of Extra Life Alerts. :)  I made the Extra Life Helper which is a different stream tool.  Are you talking about this? 

 

 

Oh yes...I'm sorry. I actually use both tools which lead to some confusion. My apologies.

  • Thanks 1

Share this post


Link to post
Share on other sites

I have a question! What happened to the pie chart that used to be in our dashboard before the site overhaul? The one that showed how much I raised, my recruits have raise, and my recruits recruits have raised?

 

I just realized it was gone because I was telling someone how I can't raise much myself so I focus on recruiting others and how you can see how much they raised. Now of course it's not there.... lol

Share this post


Link to post
Share on other sites
On 10/26/2017 at 3:13 PM, waterboysh said:

I have a question! What happened to the pie chart that used to be in our dashboard before the site overhaul? The one that showed how much I raised, my recruits have raise, and my recruits recruits have raised?

 

I just realized it was gone because I was telling someone how I can't raise much myself so I focus on recruiting others and how you can see how much they raised. Now of course it's not there.... lol

 

 @waterboysh Good question - I remember that well.  We (DonorDrive and Extra Life) did a lot of user testing during the recent site redesign, and that "Impact" widget was a feature we decided to remove from the site to keep the overall experience simple.  We appreciate your recruitment efforts, with or without the widget - and we'll certainly be thinking about ways to show that info in the future!

  • Like 1

Share this post


Link to post
Share on other sites

Hey! Reposting questions here instead of our initial feature request thread so that it's all in one place:

---

 

Two quick questions on the latest API update:

 * Does fetching multiple pages of donations count towards the 60s request rate/DDoS flagging? Or is that only for re-requesting/refreshing the same page?

 * Are you guys worried about the new "100 record" default breaking other applications that use the API before it was paginated? Don't get me wrong, I'm glad we have this functionality and that we have the bandwidth to roll with integrating that change here, but shifting that to the default a few days before game day also seems pretty scary in general.

  • Like 1

Share this post


Link to post
Share on other sites

great questions @deliciousbees.

 

re: rate limit - the rationale/thinking was that for integrations pulling recent information, the most 100 records within a 60-second period would be the most relevant for the use cases we're seeing in the wild (showing recent donors on twitch). we don't strictly enforce rate-limits on API consumption - if you're doing an initial population of data, then it'd be fine to grab those records sequentially after each previous request completes. the issue would be doing that as part of every fetch, every 60 seconds.

 

re: the pagination - the goal was to furnish the most relevant information in a format that was as easy-to-consume fashion as possible. pagination will affect a small minority of fundraisers, and was a necessary function of consolidating all team-member donations inside the now-relevant "team donations" endpoint.

 

additionally, as @Matt [DonorDrive] mentioned in the other thread: we're now including a timestamp down to the millisecond with each record we pass back. this should satisfy requirements for identifying uniqueness at the participant and team level. we're actively looking into ways to make this information more-useful to people that want to integrate, so any additional feedback/concerns/questions would be most welcome.

 

cheers!

  • Like 1

Share this post


Link to post
Share on other sites

I posted this in the general JSON discussion group, but wanted to bump it here for visibility since it's DonorDrive related: 

 

  • Like 1

Share this post


Link to post
Share on other sites

Thanks for the feedback, @megashub.


We are currently looking at better ways to provide information via our APIs and making it easier for streamers to use DonorDrive. I can't provide specifics but it is definitely on our radar.

 

Ben

  • Like 1

Share this post


Link to post
Share on other sites
2 minutes ago, Ben [DonorDrive] said:

We are currently looking at better ways to provide information via our APIs and making it easier for streamers to use DonorDrive. I can't provide specifics but it is definitely on our radar.

 

Great to hear! If you're ever in need of alpha testers or early adopters, let me know.

  • Like 2

Share this post


Link to post
Share on other sites

Does the pagination mean we can only retrieve 100 records from those two endpoints every minute? So it could take up to 10 minutes to get all donations if there are 1000 donations, theoretically?

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×