There are Rockstars out there. Ninjas or some other kind of guys been given or given themselves titles like famous and successful members of well know communities. Sometimes it all sounds like there is slightly more to it than communicating some kind of celebrity status, or even 'stardom'. Don't get me wrong. Most of them are an essential part of the Java ecosystem but to me, looking at the deeper meanings of the available titles, this all simply does not make sense. I don't want to read about celebrities. I want to read about people displaying courage and sometimes even self-sacrifice for the greater good. For Java. I want to read about Heroes rather than agents, fighters or solo artists. This is why I started interviewing Java people. Some I know. Some you might know. With this first post in a new series called "The Heroes of Java" I kick off the publishing. New interviews will appear on an irregular basis and I don't have a final list of people to ask for answering my questions. But I hope: Some will jump in. A big thanks to those who already did!
1st Part: Marcus Lagergren
2nd Part: Charles Oliver Nutter
3rd Part: Martijn Verburg
4th Part: Fabiane Bizinella Nardon
5th Part: Cay Horstmann
6th Part: Michael Hüttermann
7th Part: Andrew Lee Rubinger
8th Part: Eberhard Wolff
9th Part: Agnes Crepet
10th Part: Rod Johnson
11th Part: Trisha Gee
12th Part: Ward Cunningham
13th Part: Greg Luck
14th Part: Ola Bini
' + entry.content.$t + '';
}
}
}
return entry.content.$t;
}
var parse = function(data) {
cursor = null;
var comments = [];
if (data && data.feed && data.feed.entry) {
for (var i = 0, entry; entry = data.feed.entry[i]; i++) {
var comment = {};
// comment ID, parsed out of the original id format
var id = /blog-(\d+).post-(\d+)/.exec(entry.id.$t);
comment.id = id ? id[2] : null;
comment.body = bodyFromEntry(entry);
comment.timestamp = Date.parse(entry.published.$t) + '';
if (entry.author && entry.author.constructor === Array) {
var auth = entry.author[0];
if (auth) {
comment.author = {
name: (auth.name ? auth.name.$t : undefined),
profileUrl: (auth.uri ? auth.uri.$t : undefined),
avatarUrl: (auth.gd$image ? auth.gd$image.src : undefined)
};
}
}
if (entry.link) {
if (entry.link[2]) {
comment.link = comment.permalink = entry.link[2].href;
}
if (entry.link[3]) {
var pid = /.*comments\/default\/(\d+)\?.*/.exec(entry.link[3].href);
if (pid && pid[1]) {
comment.parentId = pid[1];
}
}
}
comment.deleteclass = 'item-control blog-admin';
if (entry.gd$extendedProperty) {
for (var k in entry.gd$extendedProperty) {
if (entry.gd$extendedProperty[k].name == 'blogger.itemClass') {
comment.deleteclass += ' ' + entry.gd$extendedProperty[k].value;
} else if (entry.gd$extendedProperty[k].name == 'blogger.displayTime') {
comment.displayTime = entry.gd$extendedProperty[k].value;
}
}
}
comments.push(comment);
}
}
return comments;
};
var paginator = function(callback) {
if (hasMore()) {
var url = config.feed + '?alt=json&v=2&orderby=published&reverse=false&max-results=50';
if (cursor) {
url += '&published-min=' + new Date(cursor).toISOString();
}
window.bloggercomments = function(data) {
var parsed = parse(data);
cursor = parsed.length < 50 ? null
: parseInt(parsed[parsed.length - 1].timestamp) + 1
callback(parsed);
window.bloggercomments = null;
}
url += '&callback=bloggercomments';
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
document.getElementsByTagName('head')[0].appendChild(script);
}
};
var hasMore = function() {
return !!cursor;
};
var getMeta = function(key, comment) {
if ('iswriter' == key) {
var matches = !!comment.author
&& comment.author.name == config.authorName
&& comment.author.profileUrl == config.authorUrl;
return matches ? 'true' : '';
} else if ('deletelink' == key) {
return config.baseUri + '/delete-comment.g?blogID='
+ config.blogId + '&postID=' + comment.id;
} else if ('deleteclass' == key) {
return comment.deleteclass;
}
return '';
};
var replybox = null;
var replyUrlParts = null;
var replyParent = undefined;
var onReply = function(commentId, domId) {
if (replybox == null) {
// lazily cache replybox, and adjust to suit this style:
replybox = document.getElementById('comment-editor');
if (replybox != null) {
replybox.height = '250px';
replybox.style.display = 'block';
replyUrlParts = replybox.src.split('#');
}
}
if (replybox && (commentId !== replyParent)) {
document.getElementById(domId).insertBefore(replybox, null);
replybox.src = replyUrlParts[0]
+ (commentId ? '&parentID=' + commentId : '')
+ '#' + replyUrlParts[1];
replyParent = commentId;
}
};
var hash = (window.location.hash || '#').substring(1);
var startThread, targetComment;
if (/^comment-form_/.test(hash)) {
startThread = hash.substring('comment-form_'.length);
} else if (/^c[0-9]+$/.test(hash)) {
targetComment = hash.substring(1);
}
// Configure commenting API:
var configJso = {
'maxDepth': config.maxThreadDepth
};
var provider = {
'id': config.postId,
'data': items,
'loadNext': paginator,
'hasMore': hasMore,
'getMeta': getMeta,
'onReply': onReply,
'rendered': true,
'initComment': targetComment,
'initReplyThread': startThread,
'config': configJso,
'messages': msgs
};
var render = function() {
if (window.goog && window.goog.comments) {
var holder = document.getElementById('comment-holder');
window.goog.comments.render(holder, provider);
}
};
// render now, or queue to render when library loads:
if (window.goog && window.goog.comments) {
render();
} else {
window.goog = window.goog || {};
window.goog.comments = window.goog.comments || {};
window.goog.comments.loadQueue = window.goog.comments.loadQueue || [];
window.goog.comments.loadQueue.push(render);
}
})();
// ]]>
great great for us java enthusiasts
ReplyDelete@Markus
ReplyDeleteThis is very interesting and inspiring article.
can I expect an Interview of Joshua Bloch,Rod Johnson and Gavin King.
Hi stoical,
ReplyDeleteThanks! I will do my best to engage some of the well know names. But this is also about 'my' heroes. So expect some not too well known ones, too :)
Thanks,
Markus
In addition to stoical's great suggestions, how about Doug Lea, Brian Goetz and Cliff Click ?
ReplyDeleteHi will,
ReplyDeleteBrian isn't responding to my requests :( you could help by asking him via twitter! Thanks for the other suggestions! I'm working on them!
-m
Hi Markus,
ReplyDeleteI came to your blog "by chance" and while browsing I just run across this interviews. It's really nice, a GREAT initiative.
I'm also doing kinda similar interviews, but with PHP guys ;) You can find them here: http://7php.com/category/expert-php-advice/ (for those interested ;))
I enjoyed reading some of them and seeing how you do it on your side. It's good to read and see how others are doing similar things with a different "theme" and "ways".
Keep the interviews coming :) Cheers!
//Wasseem K.
Very nice series!
ReplyDeleteI addition to the suggestions made by others, I would like to nominate David Blevins (still rather young, but quite impressive CV with among others Co-Founder Apache TomEE, OpenEJB and EJB 3.2 and Java EE 7 EG member, etc).
Ed Burns (JSF spec-lead) would also be nice ;)
Hi
ReplyDeleteis it possible to interview with Gavin King ?
I'm really looking forward to read this interview
I've read every last one of them
thanx for your great interview series