SlideShare a Scribd company logo
RavenDB Conference 2016
Building Codealike
A journey into the developers analytics world
Federico Lois
federico.lois@corvalius.com
github.com/redknightlois
twitter.com/federicolois
What do we do?
• We track how developers write code.
• How interruptions impact developer’s productivity
• What part of the software they worked on.
• An instant (available) extended memory.
• How much they can concentrate.
• How they compare against other developers.
• In the world,
• In their team,
• With themselves (a few months/years ago).
What do I mean?
Lets so some actual data!!!
What data is stored?
Time
ActivityArtifact
Activity
System
Outside the
IDE
Debugging
Building
Coding
Artifacts
Time
+ 200,000 Hs.
of detailed activity
+130
countries + 100M
de actividades
+ 8M
de artefactos
Duplicating (roughly)
each 6 months
Persistent
Non
persistent
DERIVED
INFORMATION
Volume
We ingest more data than our ability of
“instantly” index it.
Timezones
Aggregation
Months
Weeks
Days
Hours
Minutes
Seconds
Aggregation
Visualization
Aggregation
Months
Weeks
Days
Hours
Minutes
Seconds
Aggregation
Visualization
Evil Indexes
public class WebAggregateByHostIndex : AbstractIndexCreationTask<WebActivityCollection, WebActivityAggregateByUser>
{
public WebAggregateByHostIndex()
{
this.MaxIndexOutputsPerDocument = 2048;
Map = activities => from activity in activities
let statesMapping = from state in activity.Activities
let host = state.Url != null ? new Uri(state.Url.ToString()).Host : "unknown"
select new
{
Owner = "membership/account/" + activity.Owner,
Status = state.Status,
Host = host,
StartTicks = state.StartTimeTicks,
DurationTicks = state.DurationTicks,
EndTicks = state.StartTimeTicks + state.DurationTicks,
}
from state in statesMapping
group state by new
{
Owner = state.Owner,
Host = state.Host,
} into g
select new WebActivityAggregateByUser
{
Owner = g.Key.Owner,
Host = g.Key.Host,
MinTimeTicks = g.Min( x => x.StartTicks),
MaxTimeTicks = g.Max( x => x.EndTicks),
Navigation = g.Where(x => x.Status == "navigation").Sum(x => x.DurationTicks),
Debugging = g.Where(x => x.Status == "debugging").Sum(x => x.DurationTicks),
Debugger = g.Where(x => x.Status == "debugger").Sum(x => x.DurationTicks),
NavigationCount = g.Where(x => x.Status == "navigation").Count(),
DebuggingCount = g.Where(x => x.Status == "debugging").Count(),
DebuggerCount = g.Where(x => x.Status == "debugger").Count(),
};
Reduce = results => from result in results
group result by new
{
result.Owner,
result.Host
} into g
select new WebActivityAggregateByUser
{
// This is the bag used on the reduce.
Owner = g.Key.Owner,
Host = g.Key.Host,
// Spatial index to prune the search space.
MinTimeTicks = g.Min(x => x.MinTimeTicks),
MaxTimeTicks = g.Max(x => x.MaxTimeTicks),
// This is the actual data
Navigation = g.Sum(x => x.Navigation),
Debugging = g.Sum(x => x.Debugging),
Debugger = g.Sum(x => x.Debugger),
NavigationCount = g.Sum(x => x.NavigationCount),
DebuggingCount = g.Sum(x => x.DebuggingCount),
DebuggerCount = g.Sum(x => x.DebuggerCount),
};
StoreAllFields(FieldStorage.Yes);
}
}
}
6 month token:
ravendbconf2016
Questions?
Get in
TOUCH
Let’s do something great together.
info@corvalius.com
@Corvalius
/Corvalius
Av. Federico Lacroze 2352
7th Floor, Buenos Aires, Argentina
T. (+54 11) 4772-0650
c o r va l i u s . c o m

More Related Content

What's hot

Survey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data LandscapeSurvey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data LandscapeIke Ellis
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbMongoDB APAC
 
Test driving Azure Search and DocumentDB
Test driving Azure Search and DocumentDBTest driving Azure Search and DocumentDB
Test driving Azure Search and DocumentDBAndrew Siemer
 
Why Wordnik went non-relational
Why Wordnik went non-relationalWhy Wordnik went non-relational
Why Wordnik went non-relationalTony Tam
 
RavenDB Presentation
RavenDB PresentationRavenDB Presentation
RavenDB PresentationMark Rodseth
 
Document Databases & RavenDB
Document Databases & RavenDBDocument Databases & RavenDB
Document Databases & RavenDBBrian Ritchie
 
Should I use a document database?
Should I use a document database?Should I use a document database?
Should I use a document database?Oren Eini
 
Benchmarking Redis by itself and versus other NoSQL databases
Benchmarking Redis by itself and versus other NoSQL databasesBenchmarking Redis by itself and versus other NoSQL databases
Benchmarking Redis by itself and versus other NoSQL databasesItamar Haber
 
Getting started with Laravel & Elasticsearch
Getting started with Laravel & ElasticsearchGetting started with Laravel & Elasticsearch
Getting started with Laravel & ElasticsearchPeter Steenbergen
 
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesSenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesMalin Weiss
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesKyle Banerjee
 
A (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetITA (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetITFrank van der Linden
 
Solving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and Atlas
Solving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and AtlasSolving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and Atlas
Solving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and AtlasMongoDB
 
Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Domingo Suarez Torres
 
AWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricksAWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricksDirk Harms-Merbitz
 

What's hot (20)

Survey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data LandscapeSurvey of the Microsoft Azure Data Landscape
Survey of the Microsoft Azure Data Landscape
 
Buildingsocialanalyticstoolwithmongodb
BuildingsocialanalyticstoolwithmongodbBuildingsocialanalyticstoolwithmongodb
Buildingsocialanalyticstoolwithmongodb
 
Test driving Azure Search and DocumentDB
Test driving Azure Search and DocumentDBTest driving Azure Search and DocumentDB
Test driving Azure Search and DocumentDB
 
Wongnai Engineering Story
Wongnai Engineering StoryWongnai Engineering Story
Wongnai Engineering Story
 
Why Wordnik went non-relational
Why Wordnik went non-relationalWhy Wordnik went non-relational
Why Wordnik went non-relational
 
RavenDB Presentation
RavenDB PresentationRavenDB Presentation
RavenDB Presentation
 
Document Databases & RavenDB
Document Databases & RavenDBDocument Databases & RavenDB
Document Databases & RavenDB
 
Should I use a document database?
Should I use a document database?Should I use a document database?
Should I use a document database?
 
MongoDB
MongoDBMongoDB
MongoDB
 
Benchmarking Redis by itself and versus other NoSQL databases
Benchmarking Redis by itself and versus other NoSQL databasesBenchmarking Redis by itself and versus other NoSQL databases
Benchmarking Redis by itself and versus other NoSQL databases
 
NoSQL benchmarking
NoSQL benchmarkingNoSQL benchmarking
NoSQL benchmarking
 
Why ruby and rails
Why ruby and railsWhy ruby and rails
Why ruby and rails
 
Getting started with Laravel & Elasticsearch
Getting started with Laravel & ElasticsearchGetting started with Laravel & Elasticsearch
Getting started with Laravel & Elasticsearch
 
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in MinutesSenchaCon 2016 - How to Auto Generate a Back-end in Minutes
SenchaCon 2016 - How to Auto Generate a Back-end in Minutes
 
Laravel and SOLR
Laravel and SOLRLaravel and SOLR
Laravel and SOLR
 
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL DatabasesDropping ACID: Wrapping Your Mind Around NoSQL Databases
Dropping ACID: Wrapping Your Mind Around NoSQL Databases
 
A (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetITA (XPages) developers guide to Cloudant - MeetIT
A (XPages) developers guide to Cloudant - MeetIT
 
Solving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and Atlas
Solving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and AtlasSolving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and Atlas
Solving Your Backup Needs Using MongoDB Ops Manager, Cloud Manager and Atlas
 
Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016Elasticsearch JVM-MX Meetup April 2016
Elasticsearch JVM-MX Meetup April 2016
 
AWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricksAWS Cloud experience concepts tips and tricks
AWS Cloud experience concepts tips and tricks
 

Viewers also liked

Improving the Quality of Existing Software - DevIntersection April 2016
Improving the Quality of Existing Software - DevIntersection April 2016Improving the Quality of Existing Software - DevIntersection April 2016
Improving the Quality of Existing Software - DevIntersection April 2016Steven Smith
 
はいはいベイビークラス201612公開用
はいはいベイビークラス201612公開用はいはいベイビークラス201612公開用
はいはいベイビークラス201612公開用Yuka Motobe
 
4 Mistakes to Avoid When Solving High Workforce Turnover
4 Mistakes to Avoid When Solving High Workforce Turnover4 Mistakes to Avoid When Solving High Workforce Turnover
4 Mistakes to Avoid When Solving High Workforce TurnoverEffex
 
day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...
day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...
day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...wepc2016
 
Volumen 1 Numero 2
Volumen 1 Numero 2Volumen 1 Numero 2
Volumen 1 Numero 2Ed Tuggy
 
Production schedule
Production scheduleProduction schedule
Production scheduleBeth Carter
 
DT_Presentation
DT_PresentationDT_Presentation
DT_PresentationAnanya Ram
 
Presentation Advanced Advertising Procedures
Presentation Advanced Advertising ProceduresPresentation Advanced Advertising Procedures
Presentation Advanced Advertising ProceduresNaja Faysal
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#Olga Maksimenkova
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#Olga Maksimenkova
 
Intellectual Property and Copyrights
Intellectual Property and CopyrightsIntellectual Property and Copyrights
Intellectual Property and CopyrightsChristopher Pappas
 
Chapter 6.4 - Pollution of Freshwater
Chapter 6.4 - Pollution of FreshwaterChapter 6.4 - Pollution of Freshwater
Chapter 6.4 - Pollution of FreshwaterDwayne Squires
 
Government Cloud for ISVs (November 18, 2015)
Government Cloud for ISVs (November 18, 2015)Government Cloud for ISVs (November 18, 2015)
Government Cloud for ISVs (November 18, 2015)Salesforce Partners
 
Analise de poemas
Analise de poemasAnalise de poemas
Analise de poemasPaula CAA
 

Viewers also liked (19)

Improving the Quality of Existing Software - DevIntersection April 2016
Improving the Quality of Existing Software - DevIntersection April 2016Improving the Quality of Existing Software - DevIntersection April 2016
Improving the Quality of Existing Software - DevIntersection April 2016
 
はいはいベイビークラス201612公開用
はいはいベイビークラス201612公開用はいはいベイビークラス201612公開用
はいはいベイビークラス201612公開用
 
4 Mistakes to Avoid When Solving High Workforce Turnover
4 Mistakes to Avoid When Solving High Workforce Turnover4 Mistakes to Avoid When Solving High Workforce Turnover
4 Mistakes to Avoid When Solving High Workforce Turnover
 
day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...
day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...
day 2: Working together: national partnerships, Mr. Juan Manuel Casanueva, So...
 
Los
Los Los
Los
 
Volumen 1 Numero 2
Volumen 1 Numero 2Volumen 1 Numero 2
Volumen 1 Numero 2
 
Production schedule
Production scheduleProduction schedule
Production schedule
 
DT_Presentation
DT_PresentationDT_Presentation
DT_Presentation
 
sau
sausau
sau
 
Hi-Res FACES of COLUMBUS
Hi-Res FACES of COLUMBUSHi-Res FACES of COLUMBUS
Hi-Res FACES of COLUMBUS
 
Resume1
Resume1Resume1
Resume1
 
Presentation Advanced Advertising Procedures
Presentation Advanced Advertising ProceduresPresentation Advanced Advertising Procedures
Presentation Advanced Advertising Procedures
 
1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#1. Типы данных. Операции. Ввод и вывод C#
1. Типы данных. Операции. Ввод и вывод C#
 
Napster
NapsterNapster
Napster
 
4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#4. Многомерные массивы и массивы массивов в C#
4. Многомерные массивы и массивы массивов в C#
 
Intellectual Property and Copyrights
Intellectual Property and CopyrightsIntellectual Property and Copyrights
Intellectual Property and Copyrights
 
Chapter 6.4 - Pollution of Freshwater
Chapter 6.4 - Pollution of FreshwaterChapter 6.4 - Pollution of Freshwater
Chapter 6.4 - Pollution of Freshwater
 
Government Cloud for ISVs (November 18, 2015)
Government Cloud for ISVs (November 18, 2015)Government Cloud for ISVs (November 18, 2015)
Government Cloud for ISVs (November 18, 2015)
 
Analise de poemas
Analise de poemasAnalise de poemas
Analise de poemas
 

Similar to Building Codealike: a journey into the developers analytics world

How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for youSimon Willison
 
Reactive programming with RxJS - Taiwan
Reactive programming with RxJS - TaiwanReactive programming with RxJS - Taiwan
Reactive programming with RxJS - Taiwanmodernweb
 
Big data week presentation
Big data week presentationBig data week presentation
Big data week presentationJoseph Adler
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup PerformanceGreg Whalin
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)Christian Rokitta
 
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsEP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsAlessandro Molina
 
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...Gianfranco Palumbo
 
Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsRomain Guy
 
Html5 and web technology update
Html5 and web technology updateHtml5 and web technology update
Html5 and web technology updateDoug Domeny
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureSimon Willison
 
Nestoria new design
Nestoria new designNestoria new design
Nestoria new designlokku
 
How dojo works
How dojo worksHow dojo works
How dojo worksAmit Tyagi
 
Building DSLs with Groovy
Building DSLs with GroovyBuilding DSLs with Groovy
Building DSLs with GroovySten Anderson
 
Google Cluster Innards
Google Cluster InnardsGoogle Cluster Innards
Google Cluster InnardsMartin Dvorak
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineRicardo Silva
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.Mike Brevoort
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBMongoDB
 

Similar to Building Codealike: a journey into the developers analytics world (20)

How to make Ajax Libraries work for you
How to make Ajax Libraries work for youHow to make Ajax Libraries work for you
How to make Ajax Libraries work for you
 
Reactive programming with RxJS - Taiwan
Reactive programming with RxJS - TaiwanReactive programming with RxJS - Taiwan
Reactive programming with RxJS - Taiwan
 
Big data week presentation
Big data week presentationBig data week presentation
Big data week presentation
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
Meetup Performance
Meetup PerformanceMeetup Performance
Meetup Performance
 
huhu
huhuhuhu
huhu
 
5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)5 x HTML5 worth using in APEX (5)
5 x HTML5 worth using in APEX (5)
 
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsEP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
 
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...
How to leverage MongoDB for Big Data Analysis and Operations with MongoDB's A...
 
Google I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb HighlightsGoogle I/O 2011, Android Honeycomb Highlights
Google I/O 2011, Android Honeycomb Highlights
 
Html5 and web technology update
Html5 and web technology updateHtml5 and web technology update
Html5 and web technology update
 
JavaScript Libraries: The Big Picture
JavaScript Libraries: The Big PictureJavaScript Libraries: The Big Picture
JavaScript Libraries: The Big Picture
 
Nestoria new design
Nestoria new designNestoria new design
Nestoria new design
 
Code Management
Code ManagementCode Management
Code Management
 
How dojo works
How dojo worksHow dojo works
How dojo works
 
Building DSLs with Groovy
Building DSLs with GroovyBuilding DSLs with Groovy
Building DSLs with Groovy
 
Google Cluster Innards
Google Cluster InnardsGoogle Cluster Innards
Google Cluster Innards
 
Event-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 EngineEvent-driven IO server-side JavaScript environment based on V8 Engine
Event-driven IO server-side JavaScript environment based on V8 Engine
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 
Fast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDBFast REST APIs Development with MongoDB
Fast REST APIs Development with MongoDB
 

Recently uploaded

Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Product School
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaRTTS
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...QADay
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsVlad Stirbu
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesThousandEyes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backElena Simperl
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...Elena Simperl
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
 
UiPath New York Community Day in-person event
UiPath New York Community Day in-person eventUiPath New York Community Day in-person event
UiPath New York Community Day in-person eventDianaGray10
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupCatarinaPereira64715
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
 

Recently uploaded (20)

Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...КАТЕРИНА АБЗЯТОВА  «Ефективне планування тестування  ключові аспекти та практ...
КАТЕРИНА АБЗЯТОВА «Ефективне планування тестування ключові аспекти та практ...
 
Quantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIsQuantum Computing: Current Landscape and the Future Role of APIs
Quantum Computing: Current Landscape and the Future Role of APIs
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...When stars align: studies in data quality, knowledge graphs, and machine lear...
When stars align: studies in data quality, knowledge graphs, and machine lear...
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
UiPath New York Community Day in-person event
UiPath New York Community Day in-person eventUiPath New York Community Day in-person event
UiPath New York Community Day in-person event
 
ODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User GroupODC, Data Fabric and Architecture User Group
ODC, Data Fabric and Architecture User Group
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 

Building Codealike: a journey into the developers analytics world

  • 1.
  • 2.
  • 3. RavenDB Conference 2016 Building Codealike A journey into the developers analytics world Federico Lois federico.lois@corvalius.com github.com/redknightlois twitter.com/federicolois
  • 4. What do we do? • We track how developers write code. • How interruptions impact developer’s productivity • What part of the software they worked on. • An instant (available) extended memory. • How much they can concentrate. • How they compare against other developers. • In the world, • In their team, • With themselves (a few months/years ago).
  • 5. What do I mean? Lets so some actual data!!!
  • 6. What data is stored? Time ActivityArtifact
  • 10. + 200,000 Hs. of detailed activity +130 countries + 100M de actividades + 8M de artefactos Duplicating (roughly) each 6 months
  • 11.
  • 12. Persistent Non persistent DERIVED INFORMATION Volume We ingest more data than our ability of “instantly” index it.
  • 16. Evil Indexes public class WebAggregateByHostIndex : AbstractIndexCreationTask<WebActivityCollection, WebActivityAggregateByUser> { public WebAggregateByHostIndex() { this.MaxIndexOutputsPerDocument = 2048; Map = activities => from activity in activities let statesMapping = from state in activity.Activities let host = state.Url != null ? new Uri(state.Url.ToString()).Host : "unknown" select new { Owner = "membership/account/" + activity.Owner, Status = state.Status, Host = host, StartTicks = state.StartTimeTicks, DurationTicks = state.DurationTicks, EndTicks = state.StartTimeTicks + state.DurationTicks, } from state in statesMapping group state by new { Owner = state.Owner, Host = state.Host, } into g select new WebActivityAggregateByUser { Owner = g.Key.Owner, Host = g.Key.Host, MinTimeTicks = g.Min( x => x.StartTicks), MaxTimeTicks = g.Max( x => x.EndTicks), Navigation = g.Where(x => x.Status == "navigation").Sum(x => x.DurationTicks), Debugging = g.Where(x => x.Status == "debugging").Sum(x => x.DurationTicks), Debugger = g.Where(x => x.Status == "debugger").Sum(x => x.DurationTicks), NavigationCount = g.Where(x => x.Status == "navigation").Count(), DebuggingCount = g.Where(x => x.Status == "debugging").Count(), DebuggerCount = g.Where(x => x.Status == "debugger").Count(), }; Reduce = results => from result in results group result by new { result.Owner, result.Host } into g select new WebActivityAggregateByUser { // This is the bag used on the reduce. Owner = g.Key.Owner, Host = g.Key.Host, // Spatial index to prune the search space. MinTimeTicks = g.Min(x => x.MinTimeTicks), MaxTimeTicks = g.Max(x => x.MaxTimeTicks), // This is the actual data Navigation = g.Sum(x => x.Navigation), Debugging = g.Sum(x => x.Debugging), Debugger = g.Sum(x => x.Debugger), NavigationCount = g.Sum(x => x.NavigationCount), DebuggingCount = g.Sum(x => x.DebuggingCount), DebuggerCount = g.Sum(x => x.DebuggerCount), }; StoreAllFields(FieldStorage.Yes); } } }
  • 19. Get in TOUCH Let’s do something great together. info@corvalius.com @Corvalius /Corvalius Av. Federico Lacroze 2352 7th Floor, Buenos Aires, Argentina T. (+54 11) 4772-0650
  • 20. c o r va l i u s . c o m