From 2e3612efca76c7e586151d264b70f63eb70a551d Mon Sep 17 00:00:00 2001
From: NumEricR <->
Date: Thu, 2 Jun 2011 15:08:13 +0200
Subject: [PATCH 1/3] Dynamic user status based on repos number
---
js/githubresume.js | 29 ++++++++++++++++++++++++++---
views/resume.html | 2 +-
2 files changed, 27 insertions(+), 4 deletions(-)
diff --git a/js/githubresume.js b/js/githubresume.js
index 04ea3de..b74cb90 100644
--- a/js/githubresume.js
+++ b/js/githubresume.js
@@ -87,9 +87,32 @@ var run = function() {
repos: data.user.public_repo_count,
plural: data.user.public_repo_count > 1 ? 'repositories' : 'repository',
username: username,
+ userStatus: 'Github user',
since: since
};
-
+
+ view.userStatus = getUserStatus();
+ function getUserStatus() {
+ if (view.repos == 0) {
+ return 'Inactive Github user';
+ }
+ else if (view.repos > 0 && view.repos <= 1) {
+ return 'Newbie Github user';
+ }
+ else if (view.repos > 1 && view.repos <= 5) {
+ return 'Regular Github user';
+ }
+ else if (view.repos > 5 && view.repos <= 10) {
+ return 'Advanced Github user';
+ }
+ else if (view.repos > 10 && view.repos <= 30) {
+ return 'Enthusiastic Github user';
+ }
+ else if (view.repos > 30) {
+ return 'Passionate Github user';
+ }
+ };
+
if (data.user.blog !== undefined && data.user.blog !== null && data.user.blog !== '') {
view.blog = addHttp + data.user.blog;
}
@@ -274,7 +297,7 @@ var run = function() {
});
};
-
+/*
if (trackerId) {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', trackerId]);
@@ -286,5 +309,5 @@ if (trackerId) {
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
}
-
+*/
$(window).bind('error', error);
diff --git a/views/resume.html b/views/resume.html
index a176f0d..e3b89ea 100644
--- a/views/resume.html
+++ b/views/resume.html
@@ -6,7 +6,7 @@
{{name}}
- Passionate github user
+ {{userStatus}}
From 15b5255a1016743c86f51ebe0650d8273293fbf7 Mon Sep 17 00:00:00 2001
From: NumEricR <->
Date: Thu, 2 Jun 2011 20:53:34 +0200
Subject: [PATCH 2/3] User status is now defined using several parameters
---
js/githubresume.js | 58 ++++++++++++++++++++++++++++------------------
1 file changed, 35 insertions(+), 23 deletions(-)
diff --git a/js/githubresume.js b/js/githubresume.js
index b74cb90..3d54581 100644
--- a/js/githubresume.js
+++ b/js/githubresume.js
@@ -87,30 +87,42 @@ var run = function() {
repos: data.user.public_repo_count,
plural: data.user.public_repo_count > 1 ? 'repositories' : 'repository',
username: username,
- userStatus: 'Github user',
+ userStatus: 'Github user',
since: since
};
- view.userStatus = getUserStatus();
- function getUserStatus() {
- if (view.repos == 0) {
- return 'Inactive Github user';
- }
- else if (view.repos > 0 && view.repos <= 1) {
- return 'Newbie Github user';
- }
- else if (view.repos > 1 && view.repos <= 5) {
- return 'Regular Github user';
- }
- else if (view.repos > 5 && view.repos <= 10) {
- return 'Advanced Github user';
- }
- else if (view.repos > 10 && view.repos <= 30) {
- return 'Enthusiastic Github user';
- }
- else if (view.repos > 30) {
- return 'Passionate Github user';
- }
+ view.userStatus = getUserStatus();
+ function getUserStatus() {
+ var COEF_REPOS = 2;
+ var COEF_GISTS = 0.25;
+ var COEF_FOLLOWERS = 0.5;
+ var COEF_FOLLOWING = 0.25;
+ var FIRST_STEP = 0;
+ var SECOND_STEP = 5;
+ var THIRD_STEP = 20;
+ var FOURTH_STEP = 50;
+ var FIFTH_STEP = 150;
+
+ var statusScore = view.repos*COEF_REPOS + data.user.public_gist_count*COEF_GISTS + data.user.followers_count*COEF_FOLLOWERS + data.user.following_count*COEF_FOLLOWING;
+
+ if (statusScore == FIRST_STEP) {
+ return 'Inactive Github user';
+ }
+ else if (statusScore > FIRST_STEP && statusScore <= SECOND_STEP) {
+ return 'Newbie Github user';
+ }
+ else if (statusScore > SECOND_STEP && statusScore <= THIRD_STEP) {
+ return 'Regular Github user';
+ }
+ else if (statusScore > THIRD_STEP && statusScore <= FOURTH_STEP) {
+ return 'Advanced Github user';
+ }
+ else if (statusScore > FOURTH_STEP && statusScore <= FIFTH_STEP) {
+ return 'Enthusiastic Github user';
+ }
+ else if (statusScore > FIFTH_STEP) {
+ return 'Passionate Github user';
+ }
};
if (data.user.blog !== undefined && data.user.blog !== null && data.user.blog !== '') {
@@ -297,7 +309,7 @@ var run = function() {
});
};
-/*
+
if (trackerId) {
var _gaq = _gaq || [];
_gaq.push(['_setAccount', trackerId]);
@@ -309,5 +321,5 @@ if (trackerId) {
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
}
-*/
+
$(window).bind('error', error);
From 5298fe46cadd077dcd55a5a9bab5e14ec9542956 Mon Sep 17 00:00:00 2001
From: NumEricR <->
Date: Wed, 8 Jun 2011 21:02:49 +0200
Subject: [PATCH 3/3] Added some extra points on user status algorithm
---
js/githubresume.js | 28 +++++++++++++++++++++++++---
1 file changed, 25 insertions(+), 3 deletions(-)
diff --git a/js/githubresume.js b/js/githubresume.js
index 3d54581..0623525 100644
--- a/js/githubresume.js
+++ b/js/githubresume.js
@@ -63,8 +63,9 @@ var run = function() {
repos = data;
});
- var since = new Date(data.user.created_at);
- since = since.getFullYear();
+ var sinceDate = new Date(data.user.created_at);
+ since = sinceDate.getFullYear();
+ var sinceMonth = sinceDate.getMonth();
var addHttp = '';
if (data.user.blog !== undefined && data.user.blog !== null && data.user.blog !== '') {
@@ -82,6 +83,7 @@ var run = function() {
name: name,
email: data.user.email,
created_at: data.user.created_at,
+ earlyAdopter: 0,
location: data.user.location,
gravatar_id: data.user.gravatar_id,
repos: data.user.public_repo_count,
@@ -90,6 +92,11 @@ var run = function() {
userStatus: 'Github user',
since: since
};
+
+ // We consider a limit of 4 months since the Github opening (Feb 2008) to be considered as an early adopter
+ if (since == '2008' && sinceMonth <= 5) {
+ view.earlyAdopter = 1;
+ }
view.userStatus = getUserStatus();
function getUserStatus() {
@@ -102,8 +109,23 @@ var run = function() {
var THIRD_STEP = 20;
var FOURTH_STEP = 50;
var FIFTH_STEP = 150;
+ var EXTRA_POINT_GAIN = 1;
+
+ var statusScore = view.repos * COEF_REPOS
+ + data.user.public_gist_count * COEF_GISTS
+ + data.user.followers_count * COEF_FOLLOWERS
+ + data.user.following_count * COEF_FOLLOWING;
- var statusScore = view.repos*COEF_REPOS + data.user.public_gist_count*COEF_GISTS + data.user.followers_count*COEF_FOLLOWERS + data.user.following_count*COEF_FOLLOWING;
+ // Extra points
+ // - Early adopter
+ if (view.earlyAdopter == 1) {
+ statusScore += EXTRA_POINT_GAIN;
+ }
+ // - Blog & Email & Location
+ if (view.location && view.location != '' && view.email && view.email != '' && data.user.blog && data.user.blog != '') {
+ statusScore += EXTRA_POINT_GAIN;
+ }
+
if (statusScore == FIRST_STEP) {
return 'Inactive Github user';