accelerating innovation: do more with less in your startup

Post on 14-Jan-2017

297 Views

Category:

Data & Analytics

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Joel Worrall CTO

CURE International

Accelerating innovation:Do more with less in your startup

Accelerating InnovationUsing the New Relic Software Analytics Cloud to do more with less.

Joel WorrallCTO, CURE International@tangollama

Joel WorrallCTO, CURE Intl (cure.org)

PM, HospitalRun (hospitalrun.io)

joel@cure.org@tangollama

Why this is a good use of 25 minutes?

● Context● Insights● Applications

1 ContextWhat’s “startupy” about CURE?

We have hospitals in 10 countries and operate programs, such as clubfoot and hydrocephalus in an additional 20 countries.We have ~1500 employees worldwide, only 45 in the US.

CURE Operations Map

5# OF PEOPLE ON THE TECH TEAM,

INCLUDING IT SUPPORT & THE TALKING HEAD (ME)

From online donors and reporting to program delivery, New Relic helps us heal kids.

cure.org & CUREkidsCustom Wordpress applications with online donations, marketing content, and our real-time patient reporting platform utilizing the complete suite of services.

HydroOSOffline-first cloud-based EMR for a hydrocephalus treatment program, using Servers, APM (PHP), Browser & MySQL.

HospitalRunOpen source, offline-enabled cloud-based EMR focused on bringing the world’s best usability experience in healthcare to the nearly 14,000 facilities in the developing world, supported by APM (Node), Browser & (TBI) Insights.

We are “full platform” users

2 InsightsSome practical advice from what we’ve learned as a team.

APM is an assumptionI’m not sure I even need to say this, but I will anyway...

Catch performance issues before you even deployDevelop with the agent installed locally

Profiling your app in dev = time saved.Pic cred: https://xkcd.com/1513/

For mission-critical functional and performance monitoring

● Measure performance for a global user base.

● Ensure that the stuff that can’t break, isn’t.

● Validate that ancillary services are up and running.

Use Synthetics Strategically

Pic cred: https://xkcd.com/1319/

Learn from what users are actually doing vs. just what they might say they want.

CUREkids Actions:● Age● Condition● Country● Etc.

App Analytics > Focus Group

Product Management

Using the API to add additional data into the capture request

if (function_exists(‘newrelic_add_custom_parameter’)) { newrelic_add_custom_parameter("ck_user_id", $cua->getUserId()); newrelic_add_custom_parameter("ck_profile_id", $cua->getProfileId()); $profile = new CkProfile(); $profile->load($cua->getProfileId()); newrelic_add_custom_parameter("ck_url", $profile->getFriendlyUrl()); newrelic_add_custom_parameter("ck_condition", $profile->getConditionTerm()->slug); newrelic_add_custom_parameter("ck_country", $profile->getCountryTerm()->slug); newrelic_add_custom_parameter("ck_gender", ($profile->isFemale() ? "F" : "M")); newrelic_add_custom_parameter("ck_age", $profile->getBirthYearsDifference()); //do some other stuff to set the ck_action and gift_amount

}

Capturing the data in New Relic

3 ApplicationsDirecting user behavior with app analytics

Using Insights as reporting mechanism into your user experience.

Data captured in CUREkids goes to New Relic, then out of New Relic and into CUREkids.

New Relic “Inception”

Using the Insights query API

if (function_exists(‘newrelic_insights_query’)) { //other stuff

$json = newrelic_insights_query( "SELECT uniques(ck_profile_id) from Transaction since 7 days ago limit 10"); update_option("nr_stats_recent_profiles", $json);

//overall impact $json = newrelic_insights_query(

"SELECT count(*) from Transaction WHERE ck_action IS NOT NULL FACET ck_action SINCE '".curekids_get_last_sunday()."'");

update_option("nr_stats_overall", $json); }

Reading the data back out of New Relic

By measuring user interactions

HospitalRun home screen defined not only by role but individual user history.

Defining User Experience

using PageActions and the Browser API

//hospitalrun patient edit route newrelic.addPageAction(‘hr_watch_patient’, { userName: UserSession.getUserName(),

patientId: patientId, externalId: model.get('externalPatientId'), displayName: model.get('displayName')

});

//NQRL retrieval to build the home screen SELECT uniques(patientId) FROM PageAction WHERE userName=<this user> SINCE 2 weeks ago

Capturing JS App Actions in New Relic

Questions?

Meet my primary customer: David from Kenya

Before

After

top related