JavaBlackBelt.com community skill assessment site launched

Home

News: JavaBlackBelt.com community skill assessment site launched

  1. One year after the initial idea, http://javablackbelt.com is finally ready for production. This (free) community web site proposes an assessment system where any user may author new multiple choice questions, and add them in the DB for other users.

    The questions must concern a Java related technology as J2SE, EJB, Struts, Maven, XML, Servlet/JSP, Tapestry, JDO, Hibernate, Spring, etc.

    The DB already contains 1000+ questions, but they are concentrated in too few subjects. It needs more questions on many subjects, as Spring, JDBC and Swing.

    The development of the platform has been long and we have focused on performance and scalability these last 8 weeks doing profiling and load testing. It can handle around 100+ simultaneous requests with good response time (we started from 5, height weeks ago). We can now focus on the content (add more questions and start recieving/moderating questions from the community).

    Check 2 nice questionnaires on Maven from Vincent Massol and 2 others on JDO from Patrick Linskey

    Threaded Messages (70)

  2. Free?[ Go to top ]

    When viewing the license, I noticed that you might charge money for future tests. What is so free about this? What am I missing? Thanks!

    JBB may:
    * make money with the question (by proposing pay tests, not by reselling it)
  3. Free...[ Go to top ]

    Thanks for the question, Tarek.
    When viewing the license, I noticed that you might charge money for future tests. What is so free about this? What am I missing? Thanks!

    We didn't made JavaBlackBelt to earn money. All the time, energy and money that we put in it ... if we put it on invoicable consultancy or training, I could build a new house...
    We just did it because we really wanted to.

    So, why this statement in the policy ?
    Just trying to face fewer justice trials in the future. Imagine for example, that we publish a book with the best 100 questions. It's quite unlikely I know. We sell the book (I've not yet met a Java author who has written a book to make big money), then a question author claims some money...
    Another example: imagine that interface21 co (Spring team) wants to develop a certification with us. It costs money (to make it, to pay the diploma paper, admin,...) and it's not free. But there is one question in it that somebody claims to have posted on JavaBlackBelt... -> court?

    Our intention is that questions provided by the community are free for the community. We just want to avoid side effects if we ever develop something additionnal that costs.

    Hope this answers your legitimate question.

    John.
  4. Does this actually make sense?
    Given the following code, what is the effect if a has the value 5?

    <br>public class Test { <br>  public void add(int a) { <br>     loop: for (int i = 1; i < 3; i++){ <br>        for (int j = 1; j < 3; j++) { <br>           if (a == 5) { <br>              break loop; <br>           } <br>        System.out.println(i * j); <br>        } <br>     } <br>  } <br>}<br>
    


    0 Generate a runtime error
    1 Throw an ArrayIndexOutOfBoundsException
    2 Print the values: 1, 2, 2, 4
    3 Produces no output
  5. The right answer is 3, I guess.
    It's a SCJP-like question to test the knowlege of J2SE break + outer loop label mechanism.

    Something I'm often asked during assessments, is "what does it show to being able to answer such questions ?".
    My answer is that these questions do not test the intelligence, neither the programming logic skills (neither the social skills or language, etc.). It's just to test the knowlege of some technologies.

    I often find interesting to test how people can use the technologies, by giving a 2h programming assignment with open books, for examples.

    Final question: "is it better to hire a programmer who knows many technologies or a programmers who learns fast ?". Easy answer. I should post it on JBB :)
  6. Something I'm often asked during assessments, is "what does it show to being able to answer such questions ?".My answer is that these questions do not test the intelligence, neither the programming logic skills (neither the social skills or language, etc.). It's just to test the knowlege of some technologies.

    You're right here. But why do you then include this kind of questions?

    Another question in this category is
    Which of the following is a legal way to construct a RandomAccessFile?

    RandomAccessFile("data", "r");
    RandomAccessFile("r", "data");
    RandomAccessFile("data", "read");
    RandomAccessFile("read", "data");

    In my opinion, the fact that you do or don't know this from the top of your head doesn't say anything about your java skills.
  7. One questions contains this code snippet
    public class ThreadTest extends Thread {
      public void run() {
         System.out.println("In run");
         suspend();
         resume();
         System.out.println("Leaving run");
      }
      public static void main(String args []) {
         (new ThreadTest()).start();
      }
    }

    Both suspend and resume are deprecated methods, and I'm pretty sure they are deprecated for several years. I don't think it's useful to confront users with questions on deprecated functionality -- on the contrary!
  8. One questions contains this code snippet
    public class ThreadTest extends Thread {&nbsp;&nbsp;public void run() {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("In run");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;suspend();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;resume();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println("Leaving run");&nbsp;&nbsp;}&nbsp;&nbsp;public static void main(String args []) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(new ThreadTest()).start();&nbsp;&nbsp;}}
    Both suspend and resume are deprecated methods, and I'm pretty sure they are deprecated for several years. I don't think it's useful to confront users with questions on deprecated functionality -- on the contrary!

    Right. The author wrote it a long time ago I guess.
    We need to introduce a quality voting system on the questions to address this kind of issue (that specific question would be badly rated, then not shown in "normal" questionnaires).
    Another system that should help is the forum. Beside evey question, users should have a text box to tell a comment that moderators would see and react on (as removing the question here). In the meanwhile, please specify the questions number in your posts (do we need a search facility ?)
  9. What is a good question ?[ Go to top ]

    Which of the following is a legal way to construct a RandomAccessFile?RandomAccessFile("data", "r"); RandomAccessFile("r", "data"); RandomAccessFile("data", "read"); RandomAccessFile("read", "data");
    In my opinion, the fact that you do or don't know this from the top of your head doesn't say anything about your java skills.

    I agree. Why that question ? It's in the SCJP category I guess.
    JavaBlackBelt has been created to start offering some alternative to that kind of Sun Certif questions.
    But some people like this kind of questions and I respect that taste also. So they may enjoy the SCJP category.

    If you want to provide non-SCJP interesting J2SE questions, I can create a category for it. That would be great. Just sent me a mail.
  10. oops:)[ Go to top ]

    I sware I will never read some code that is not indented nicely again :)
  11. formatting[ Go to top ]

    We used a Java code formatter to have nicer output. It is not activated yet (so the question's code was just black and white with no real visual help). It'll be activated by the end of the week Xuekun.
  12. problems on website[ Go to top ]

    I went to try out a test and got the following error. Talk about frameworks on top of more frameworks (hibernate, spring, struts, AOP, blah, blah). Is there really a reason for all these layers?

    Exception :
    java.lang.NullPointerException
    net.sf.hibernate.loader.CriteriaLoader.(CriteriaLoader.java:64)
    net.sf.hibernate.impl.SessionImpl.find(SessionImpl.java:3630)
    net.sf.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:238)
    be.loop.jbb.dao.QuestionDaoSpringImpl.getQuestionListByIds(Unknown Source)
    sun.reflect.GeneratedMethodAccessor167.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:324)
    org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:295)
    org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:154)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:121)
    org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:56)
    org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:143)
    org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:174)
    $Proxy5.getQuestionListByIds(Unknown Source)
    be.loop.jbb.bl.QuestionnaireService.generate(Unknown Source)
    be.loop.jbb.web.struts.actions.QuestionnairePerformDAction.before(Unknown Source)
    sun.reflect.GeneratedMethodAccessor155.invoke(Unknown Source)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:324)
    org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:276)
    org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:196)
    be.loop.jbb.web.struts.actions.BaseDAction.execute(Unknown Source)
    org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    be.loop.jbb.web.filter.CompressionFilter.doFilter(Unknown Source)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    be.loop.jbb.web.filter.LoginFilter.doFilter(Unknown Source)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    org.springframework.orm.hibernate.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:171)
    be.loop.jbb.web.filter.JBBSessionFilter.doFilterInternal(Unknown Source)
    org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:306)
    org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
    org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:745)
    org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
    org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:868)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    java.lang.Thread.run(Thread.java:534)
  13. Sorry for the problem, guys.[ Go to top ]

    It looks like the sever had no problems until ... we reached 500 concurrent users.

    We think that it's a RAM problem (256Mb limit).

    Then the server stopped.
    Then everyone passing a quizz were very frustrated being interrupted by an internal error.

    We are watching the restarted baby and investigate. Sorry if some restart happen in the next few hours...
  14. Why to many layers.[ Go to top ]

    We started developping using all the nice technologies we know: Servlet/JSP, Struts, Spring DAOs, Hibernate.

    But we experienced painful problems and the learning curve was hard.

    Between you and me, if we had to do it again in the same conditions, I may not use Hibernate, neither Spring transactions, and probably something else than Struts (maybe PhP ? oups, I've said it !). We'll publish an article later end May and explain how these painful layers have been useful sometimes.
  15. Why to many layers.[ Go to top ]

    We started developping using all the nice technologies we know: Servlet/JSP, Struts, Spring DAOs, Hibernate.But we experienced painful problems and the learning curve was hard.

    Having successfull project in desing and architecture sense is not about combining 'nice' technologies, but about combining 'right' technologies :)
  16. Why to many layers.[ Go to top ]

    Java is fast and scallable when used right.
    Unfortunatelly, Java developers quite often over-engineer, over-design, over-layer, over-hype, over-complicate...

    Launching web site that is capable of handling 100 concurrent users in year 2005? Calling it JavaBlackBelt?
    This is very, very, very bad, nasty joke!!!
  17. Why to many layers.[ Go to top ]

    Java is fast and scallable when used right. Unfortunatelly, Java developers quite often over-engineer, over-design, over-layer, over-hype, over-complicate...
    Yes, I completely agree with you and I would add ... no, it's not a thread about Java vs TheRestOfTheWorld.
    Launching web site that is capable of handling 100 concurrent users in year 2005?

    100 simult requests (not 100 users). Would it be 100 users, anyway I wouldn't be shamed.
    Calling it JavaBlackBelt? This is very, very, very bad, nasty joke!!!

    I'm sure that you would have done a better job and I hope to have, one day, the chance to learn things from you.
  18. Possibly wrong answer[ Go to top ]

    I noticed the following in the John Hunt Exam.
    I think we cannot apply tostring method to a string object. toString might work.



    Question 35
    Question Type MultipleChoiceQuestion
    Question Statement Which methods can be legally applied to a string object?
    Your Answer(s) equals(String)
    equals(Object)
    trim()
     
    Possible Answer(s) equals(String)
    equals(Object)
    trim()
    round()
    tostring()
     
    Correct Answers equals(String)
    equals(Object)
    trim()
    tostring()
     
    Is Answer Correct false
  19. String.toString()[ Go to top ]

    Why can't you call .toString() on a String? String, like every other object in Java, ultimately extends from Object which has a .toString() method....
  20. toString(), not tostring()[ Go to top ]

    I think the comment was indicating that tostring() is incorrect, though of course toString() is fine.
  21. Why to many layers.[ Go to top ]

    We started developping using all the nice technologies we know: Servlet/JSP, Struts, Spring DAOs, Hibernate.But we experienced painful problems and the learning curve was hard.
    Having successfull project in desing and architecture sense is not about combining 'nice' technologies, but about combining 'right' technologies :)

    There's an anti-pattern that is called the "golden hammer" that says "if you have a hammer, everything looks like a nail"...
  22. Why to many layers.[ Go to top ]

    We started developping using all the nice technologies we know: Servlet/JSP, Struts, Spring DAOs, Hibernate.But we experienced painful problems and the learning curve was hard.Between you and me, if we had to do it again in the same conditions, I may not use Hibernate, neither Spring transactions, and probably something else than Struts (maybe PhP ? oups, I've said it !). We'll publish an article later end May and explain how these painful layers have been useful sometimes.

    Don't knock all these tried and true technologies because your writers had problems. Some of us use Struts, Spring, and Hibernate with no issues.
  23. Why to many layers.[ Go to top ]

    We started developping using all the nice technologies we know: Servlet/JSP, Struts, Spring DAOs, Hibernate.But we experienced painful problems and the learning curve was hard.Between you and me, if we had to do it again in the same conditions, I may not use Hibernate, neither Spring transactions, and probably something else than Struts (maybe PhP ? oups, I've said it !). We'll publish an article later end May and explain how these painful layers have been useful sometimes.
    Don't knock all these tried and true technologies because your writers had problems. Some of us use Struts, Spring, and Hibernate with no issues.

    Creating architectural layers based only on technologies might not be that great idea. I would design the logical layers first and then decide what tehcnology should be used in DAOs, how to instantiate services etc. Spring, Hibernate and even JSF surely have helped in my latest projects.

    BTW, tools like JUnitPerf for scalability and performance testing are definitely out. Just send some news and TSS people will do the job for you! :)
  24. More problems on the website[ Go to top ]

    I thought this website could handle "100+ simultaneous requests" . . . This is what I get now when I go to the site.

    Internal Server Error

    The server encountered an internal error or misconfiguration and was unable to complete your request.

    Please contact the server administrator, webadmin at javablackbelt dot com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

    More information about this error may be available in the server error log.
    Apache/2.0.50 (Fedora) Server at www.javablackbelt.com Port 80
  25. Same here[ Go to top ]

    Found another problem. I tried to answer Patricks tounge-in-cheek JDO questions and all of a sudden there this: "HTTP Status 404 - /jbb/AnswerEditInQuestionnaire.do". That can't be good. Right?

    Judging from the other comments I'd suggest that you take it down, iron it out for a week or two, and try again. Having a site called "Java black belt" which constantly crashes is no good you know.
  26. Server is fubar[ Go to top ]

    Pretty frustrating when your halfway through a 62-question quizz, and then see an "Internal server error", or a 404, or a 503 response, or a "Main" wikipage editor screen ?!?

    And I'm sure I answered all questions correctly so far ;)
  27. All I had to do was answer question 1 and then press the 'Finish and correct quizz button' and it told me that I passed the test and answered all the questions correctly.

    I wish all my test were like this.
  28. English competencies?[ Go to top ]

    I love the idea of this site and seeing my "white belt" rank as an anonymous user is a great glove-in-the-face challenge to my Java ego. I'm going to continue exploring, but I couldn't help but notice several typos and grammar mistakes throughout the site. This is surprising since the site claims that questions are screened by moderators for spelling, quality, etc. Here's a quiz question: Since Java programmers are supposed to be language and syntax experts, why isn't their English up to scratch?
  29. Spelling[ Go to top ]

    Sorry for the spelling. Do you want the true story about it ?
    2 days ago, I asked yesterday night a specialized company to review the spelling (we whish we were not French & Dutch speaking Belgians, but we are). They sent the texts back to us 2 hours before the announcement. I was about correcting it but then, my pregnant woman called me to come back home help her with the children. I asked my partner in business to help me (to apply the corrections) and he did it half if them (he had to go to a party, you know it's night here).

    Now I'm back and I apply the rest of the corrections (if the site does not go down :)
    If you see any more spelling in 2 hours, I'll be happy to correct them.
  30. Is this April 1 ?[ Go to top ]

    While I appreciate all TSS new Posts, this one highlights the occasional 'rush job' that waste my time - I got the "Internal Error". I wish you and your pregnant woman the best though.:)
  31. Passed test ?[ Go to top ]

    Hi cesidio,

    Damn it's amazing how easily you passed this test... In fact I noticed the percentage required for this test was 0% .. So you'll be glad to know you would have passed it even if you had not answered any question at all! :) It's been updated to 50% now, maybe is it going to be a little bit harder...
  32. Bug in mail system ...[ Go to top ]

    All this mess came from a litle bug in the mail managment system.
    We had to fix it quick and post the modifications to the server. During those modifications the server crashed !
    We apologize for this inconvenience !
  33. some QA wouldn't hurt[ Go to top ]

    Just wanted to test my Java skills in John Hunt SCJP Mock Exam. Jokes aside, these tests need some serious QA, otherwise the novice Java developers can get traumatized. These are cut-and-paste excerpts from the test Result Summary:

    Question 1
    Question Type MultipleChoiceQuestion
    Question Statement What is the parameter specification for the public static void main method?

    Your Answer(s) String [] args

    Possible Answer(s)
    # String args []
    # String [] args
    # Strings args []
    # String args

    Correct Answers
    # String args []
    # String [] args

    Is Answer Correct false

    Question 4
    Question Type MultipleChoiceQuestion
    Question Statement Which of the following returns true?

    Your Answer(s) "john".equals("john")

    Possible Answer(s)
    # "john" == "john"
    # "john".equals("john")
    # "john" = "john"
    # "john".equals(new Button("john"))

    Correct Answers
    # "john" == "john"
    # "john".equals("john")

    Is Answer Correct false
  34. Thank you for finding out these 2 mistakes Victor, they are now corrected.

    First, I'd like to point out that John Hunt is not responsible of these. I've cheked on his orgiginal mock (http://www.jaydeetechnology.co.uk/planetjava/certification.htm), questions 4 and 13, and they are correct there. That's our fault, when we moved these questions on JavaBlackBelt, we introduced these mistakes, and these probably are not the only ones (maybe 1% mistakes ?).

    It's the fist time the site is so exposed (program, platform and content) and goes to the rough reality of brutal mass "usage" (should we say "testing" ?).

    As days will pass, these now discovered problems will be fixed and in one week or two, will have disapeared. New stuff (program features and questions) will be introduced (and tested) progressively leading to less frustrating experience.

    For the content, the key success factor are the moderators (who review the questions submitted). And we need people to point out misktakes, just as you did !
  35. Victor,

    Aymeric made me re-read your post and, are you sure that you are correct ? According to your copy/paste results:

    Question 1: you answered "String [] args" only, while "String args []" is also correct (so you should have checked both answers).

    Question 2: "John" == "John" returns true (due to compiler optimizations. So it's correct on JBB, but that's not the original question of John Hunt (he proposed "john" == new String("john") for the first choice)

    Sorry for my last reply, I did not read your post well enough.
  36. Sorry for my last reply, I did not read your post well enough.

    Darn! My bad John, I treated those as the single choice questions.
  37. It took me some time, too, to figure out that some questions allow multiple answers -- the only difference is the checkboxes instead of the radio buttons. You can imagine this subtle difference goes unnoticed by many users.

    It would make sense to alert users to this type of question...
  38. Nifty site. I hope it succeeds[ Go to top ]

    I like the blackbelt idea. Very cute. This is a great 10-minute time killer with a sense of accomplishment at the end.

    I did not see any way to submit errata - which might be a good solution for the QA problem. I took a 20 question Struts quiz and at the end it said that (q#0050) ActionServlet was the Prototype pattern???? I'm pretty sure it's Front Controller. My quiz's other questions were well-composed and accurate.

    Kudos!
  39. Errata submit[ Go to top ]

    Yes Marc, it's missing.
    We planned it to be through a forum. Ideally, when viewing a question, the user should have a "post comment about this question" button, that would fire a new forum post automatically in the right thread (one thread / question). We did integrate MvnForum in November, but we removed it. We are still looking for a solution.

    Another (complementary) idea is to let (option) users pass a quiz in "learning mode", that would let them see the right answer (+ explain) after each submitted answer. So you still have the context in mind and will react more likely if disagree. What do you think ?

    Thanks for your encouraging comment.
  40. Tomcat just crashed again (with 800+ concurrent users this time). We suspect mem problems. We changed the session timeout from 2h to 30min and hope it will fix it. It will be applied next time we'll restart (I'll wait for the next crash to restart).

    It's 1AM here and time for use to go to bed. So next time the server crashes it may have to wait for the morning. I'm posting a warning on the home page for the poor next guys stopped in the middle of a quizz...

    Sure we also need some monitoring tool (as one to restart the server automatically when not responding anymore). Any suggestion ?

    Tomorrow, we'll do soem load tests (on the test machine) with 1000 very quite users (insead of the test with 100 furious users that we did).

    John.
  41. I am bitten by a bug[ Go to top ]

    Hi,
    I registered and logged in to java black belt and then clicked
    on So you want to be a black belt. I read the comments there about the grading (I am a martial arts black belt so i really liked the grading system). Then i wanted to go to my home page and clicked on the home page link.
    Surprisingly, i was logged out and asked to login again.

    Is this a bug or a feature (You never know right?? :-))
  42. I am bitten by a bug[ Go to top ]

    And how painful was the bug bite? ;)

    Jokes aside, it is a terrible mistake by these guys to release such an unripe system to the public. Like one poster mentioned, you hardly succeed at one go with such projects however, things we're seeing going wrong now are things that could have been spotted and avoided during the development and testing phases.
    My advice? Guys, download apache JMeter and do some stress testing, etc, before you bring this thing back on air.

    One question. You said you would have preferred using PHP. Unlike one other poster's comment about choice of architecture, I agree with your choice (Struts/Spring/Hibernate layered architecture, though for the presentation layer I would recommend Tapestry) for this system but, were you forced to use these technologies or you just wanted to go through that learning experience as well as making your CV look more sexy?

    F
  43. I am bitten by a bug[ Go to top ]

    One question. You said you would have preferred using PHP. Unlike one other poster's comment about choice of architecture, I agree with your choice (Struts/Spring/Hibernate layered architecture, though for the presentation layer I would recommend Tapestry) for this system but, were you forced to use these technologies or you just wanted to go through that learning experience as well as making your CV look more sexy?F

    I was not serious about the PHP joke (while I think that it's a great technology when used a structured way).
    In fact, we are quite happy of our Struts/Spring/Hibernate architecture which is very classic. We were hesitating between Struts and Tapestry but selected Struts because we knew it already (while adding Tapestry would have been a nice add on our CVs ;)
    Learning the technologies well enough has not been easy (for us) and it took too much time regarding to the functionality. But now we are happy with these choices in term of maintenance and flexibility for new features. We are also very happy with facilities that these technologies brings, as the Hibernate caching mechanism.
    Guys, download apache JMeter and do some stress testing, etc

    We used another web stress tools and could tune the system under load (hundreds concurrent users with 256Mb is a correct achievement I guess). One problem is the difficulty to test all possible scenarios. We took the most common. I think that our mistake has been:
    - not waiting 5 extra days (as pointed out by a comment here),
    - in order to first asks a few friends to tests the system (before opening for the masses).

    Sure I will never forget that lesson.
    John.
  44. Ouch, that must hurt[ Go to top ]

    Hi, I registered and logged in to java black belt and then clicked on So you want to be a black belt. I read the comments there about the grading (I am a martial arts black belt so i really liked the grading system). Then i wanted to go to my home page and clicked on the home page link. Surprisingly, i was logged out and asked to login again.Is this a bug or a feature (You never know right?? :-))

    And forget not to get yourself some medicine from your nearest pharmacy shop because those stings can be vernomous. :)
  45. Here's a feature idea: I'd like to be able to challenge colleagues to a competition fight.

    It would work like this: To challenge somebody, they would have to be registered for this, and I would have to know their nick. I would enter the nick, and get a fixed number of questions (not too many, maybe 10). The questions would be chosen randomly from all areas (so I cannot win a lot of fights by just knowing one tiny topic). If I cancel, I have lost the fight. If I finish my questions, a mail is sent to the colleague, and they are invited to the challenge. If they don't respond in a fixed time, they have lost the fight. If they do respond, they are presented the same questions I had answered earlier. If they cancel, they have lost. When they finish their test, both sides are notified of the outcome of the fight - they are notified directly on the page, I get notified by mail. The winner is the one who has answered more questions directly, of course. Maybe even as part of my publicly visible personal info, I would have a statistic of wins/losses/ties.

    As a refinement, you could even tie this in with the belt grading system. For example, I could only challenge people with a belt of my color or higher. People two belt grades or more above mine could deny to fight without losing a point. After winning a certain number of fights against others (where fights against higher belts count more than those against the same level, lower doesn't count), I might be upgraded to the next belt level automatically.
  46. Here's a feature idea: I'd like to be able to challenge colleagues to a competition fight.

    It'd be nice, indeed.
    Some refinement: you can challenge somebody, but he can choose the category for 60% of the questions (and you select the category for the other 40%).
    We'll probably release that around november.
    Before, we'll propose some kind of championship. Maybe before end May ?

    John.
  47. But make sure you test first before release! JUnit, JMeter, HttpUnit are all free, man.

    J
  48. Keep up the good work![ Go to top ]

    Those guys did a great job with this site and I think their efforts shouldn't be "marginalized" just because the site crashes every once in a while.
    When was the last time YOU launched a project that ran perfectly fine from day one on...?

    John, keep up the good work! :-)

    Rias A. Sherzad
    sherzad.com

    P.S.: John, there's a small typo on the site: It's "subscription" and not "subscribtion" (see right box: http://javablackbelt.com/jbb/QuestionnairePerform.do?id=7567).
  49. Keep up the good work![ Go to top ]

    Those guys did a great job with this site and I think their efforts shouldn't be "marginalized" just because the site crashes every once in a while.

    Thanks for this encouraging post, Rias ! The site went down 2x 5min the first 10h. First time because of a bug hot correction. Next time, it was because 256Mb is too few for soo many users and we reduced the session time out. Now it runs fine. We just wait for the traffic to be low to redeploy the fixes. On other forums and by mails, we have recieved many positive comments and suggestions, as yours. For example, we've just recieved a very kind powerful hosting offer.
    P.S.: John, there's a small typo on the site: It's "subscription" and not "subscribtion"

    It's corrected, thanks (but needs to wait next redeploy to be visible).
  50. what are right questiions?[ Go to top ]

    Is it importand to know in which order the targets are executed in <target name's' depends'a,b,c'>...?
    I think no.
    The only knowledge which is good to count on is that there's an order. Not the exact easy forgettable thinks like that.
  51. what are right questiions?[ Go to top ]

    Having never authored an exam myself, I suspect writing good questions is more an art than a science. Can anyone just submit their own exams, without a quality check? Or even worse, throw their questions into an existing exam, mixing good with bad? How is quality going to be controlled?

    I guess over time, the wheat is seperated from the chaff by word of mouth. But it's my belief that only a fraction of solid J2EE developers can write good exams. I would think that most technical exam writers are writers 1st, tech experts second.

    Mike
  52. ... Jean-Claude Van Damme ? Huh ? :-)
  53. ... Jean-Claude Van Damme ? Huh ? :-)
    It's "Black-belt Jones" (old serie)
  54. what are right questiions?[ Go to top ]

    How is quality going to be controlled?

    Important question, thanks.
    Every category (EJB, Servlet/JSP, Struts,...) is administrated by a moderator who screens each new individual question, and eventually proposes improvements to its author before releasing the question.

    Anybody may create his own questionnaires with the questions he wants. You can specify categories with amount of questions and difficulty level (questions will be picked up random with these constraints). You may also filter on an author (to not mix different author's questions). Finally you may also individually list (identify) questions for the questionnaire.

    The moderators may use the same questionnaire creation tool to create quality and coherent questionnaires and put a link to them on the concerned technology page.

    I would think that most technical exam writers are writers 1st, tech experts second. Mike

    I completely agree, Mike.
    Inspiration may come from various sources (different authors), but to make an exam, someone has to put coherence. I’ve done that for a customer (other web app instance). For the community DB, as you say, this will come with time (and with some help).

    John.
  55. The burden of incompetence[ Go to top ]

    IMO this site shouldn't have come in production today. Testing (load testing or not) should have occured earlier, at the very beginning of its development in fact.

    Instead of wanting to go in production whatever the result is, you should have postponed it until major bugs are fixed. It would have spared a lot of mockery. Who cares this site is two weeks late? Who cares about this site anyway?

    I would say that using so much buzzwords and fancy framework names without the proper knowledge doesn't make you a j2ee professional.
  56. Source code highlighting[ Go to top ]

    I suggest that you get rid of those {code} tags and integrate some kind of source-code highlighting. Lucky for you guys I released JHighlight (http://jhighlight.dev.java.net) during the weekend :-p It should be very easy to integrate
  57. source code commenting[ Go to top ]

    I suggest that you get rid of those {code} tags and integrate some kind of source-code highlighting. Lucky for you guys I released JHighlight (http://jhighlight.dev.java.net) during the weekend :-p It should be very easy to integrate

    Hi Geert,

      You mentioned that they could use jHighlight. That will be pretty good. Here's what would be useful for jHighlight to add
    a) a source-code formatter. This should be fairly popular since jalopy is not business friendly. javascript formatting might be one of the tricky issues though.

    b) an intelligent source-code displayer. see
    http://www.me.umn.edu/~shivane/blogs/cafefeed/2004/10/colorizing-java-sources-in-browser.html
    for how to colorise Colorizing Java sources in a browser using JavaScript and CSS.

    BR,
    ~A
  58. None of the registration emails seem to arrive.
  59. I just can believe how they dare present this to the public.
  60. The friggin milk of human kindness[ Go to top ]

    Gosh it's good to be around so many superior intellects, especially knowing that they are completely prepared to find fault with every last detail of a new offering to ensure that no potential criticism is overlooked. I'm sure that human evolution is advancing in the Java developer world faster than almost anywhere else. Otherwise how could we defy the odds and have so many near-perfect people in one place. I'll bet not one of you guys lives in anything like a glass house, and that's why you're so very ready and willing to throw stones.

    How freely the friggin milk of human kindness flows in our so-called "communities." With friends and colleagues like you guys who needs enemies? I can barely remember a time when people have been so caustic and such assholes about the hard work and good ideas of people like the guys behing JavaBlackBelt.

    So what if their server flopped over under the load of TSS-inspired traffic? So what if their questionnaires aren't perfect yet or their email system didn't correctly send the emails yet? So what if the scoring system didn't work right, or there were some misspellings in their English?

    It's a brand new system, and this is to be expected. I have spoken with John and his team for months, and they are dedicated and enthusiastic about making JBB good. I trust that they will succeed, and after their system is working perfectly a lot of you guys who scorned them here will still be total jerks. His system is a lot more likely to improve than your wretched behavior.

    It's disgraceful to see so much negative response and so pathetically little encouragement for the JBB team to keep working on something I bet will help more Java newcomers in the next few years than all your forum post here and at Javalobby combined! These guys are working to build something positive, something helpful and something the Java space needs.

    I stand with John, Aymeric and Olivier, and I encourage them to take the best "bug reports" they can glean from the mean-spirited messages above and do all they can to improve JBB until it is everything they have hoped it will be. It's a neat start, and when it delivers on their full vision it will be a fantastic resource for the Java community.

    Rick Ross
    rick@javalobby.org
  61. Character encoding issue[ Go to top ]

    One of the questions reads
    Which of these is the correct format to create the literal char value a?

    ?a?
    "a"
    new Character(a)
    \000a
    Initially, I was stunned since I realised that with my java experience, I couldn't find the correct answer. But I came across another question that had question mark character where I didn't expect it. My guess is that either you're using not-so regular character for e.g. single quotes, or your server's encoding is not correct.
  62. Character encoding issue[ Go to top ]

    My guess is that either you're using not-so regular character for e.g. single quotes, or your server's encoding is not correct.
    Probably, we'll check that tomorrow, thanks.
  63. wait question[ Go to top ]

    One of the questions is "What is the effect of issuing a wait() method on an object ?"
     
    The correct answer was "The object issuing the call to wait() will halt until another object sends a notify() or notifyAll() method".

    This is not entirely correct. It's not the object that will halt. Objects can not halt; it's a thread that halts. Another thread has to call notify or notifyAll on that object in order to abort the wait. This can be any object, including the object itself.
  64. Compliments[ Go to top ]

    John,

    Besides giving hopefully useful comments, I would also like to compliment you on your site. Some people mentioned this before: the idea is really neat. The fact that you're getting so much response is a good indicator.

    You obviously have some startup problems due to a very high sudden exposure. But on the other hand, you are very helpful and honest in this forum, and you seem to take most comments seriously. Keep up the good work!

    Cheers
    Tom
  65. I'm so stunned that no one offered his/her help. I'd love to volunteer if I may! Addition to that it would be nice to see the following improvements:

    1. To see that site in different languages
    2. Rich UI enabled (i.e. utilizing Laszlo) and
    3. Using open source survey frameworks instead of reinventing the wheel (one comes to my mind - Opinio, unfortunately not open source by itself, but very, very robust)
    4. Release the whole product or some parts of it as an open source.

    Defintely after applying mentioned above options the framework need to be JUnit(ed), JMeter(ed), go thru f"ire and air and metal pipes" (Russian proverb that imply thorough testing)

    I can work on maturing framework, RUI, scalability, Russification, Hebrewization, etc.
  66. Defintely after applying mentioned above options the framework need to be JUnit(ed), JMeter(ed), go thru f"ire and air and metal pipes" (Russian proverb that imply thorough testing)

    Correct me if I wrong but IMO the proverb goes about 'fire, water and brass pipes', implying that an individual went via horrors of war (fire and water) and tempted by glory and power (brass pipes, of the kind men play music with).

    Back to the topic. To deliver framework for quizzes is actually a decent engineering job, considering all possibilities and features that you might need. Once I've done a website with IQ tests and similar trivia. It was an effort about 6 FTE. You can think of e.g. placing pictures next to questions, setting time limit for tests, stopping and resuming sessions, and even providing scripting possibility per test to allow arbitrary logic in processing test results and even deciding dynamically what question to give next depending on the answers to previous questions.
    The baseline is that yes it's indeed possible but trying to deliver something as generic as 'framework for online tests'is not that straightforward. Localization being not the worst part of it.
  67. Hello Roman, thank you for your proposal.
    Please contact me at - john {at} javablackbelt dot com - and we will talk more about that!
  68. Framework Blackbelt and Java blackeye[ Go to top ]

    If you wana assess some one if he/she is a java buff you have to consider Sun standard certifications.
    However including Frameworks won't show any competency in Java.
    I have interviewed many good J2EE developers with around 2-3 years experience of enterprise development with (EJB,Hibernate,Struts,Spring ……) ,and I gave them normal SCJP questions ,however many of them failed to get a good mark!!!!!!!
    This implies that knowledge of these frameworks wont imply that an individual is damn good at Java and deserve a karate-ish style merit.
    What a crap!!!
    Blackbelt in Java!!!
    Are you kiddin me???
  69. One point of vue[ Go to top ]

    Hi Farzad,

    I guess this is one point of vue, that you're certainly not the only one to share, but there can be others. It depends on what you consider the most important.

    As you can read in some other posts here, we try to cover both point of vues. There is a huge amount of questions in the 'classic' SCJP category, for technical people who like technical J2SE questions, but there are also many other categories.

    IMO you can reach achievement following many different paths. One of them could be knowing the Java language very well, being able to answer all SCJP questions on JBB for example. An other path could be knowing enough of it to learn even more of what lays around it.

    I_really_believe that the first thing to do is learn the language. That's what they try to teach you in IT classes in College. With that knowledge in your head, you'll then be able to learn all those useful frameworks that are present in the Java world, to not reinvent the wheel on each of your projects. Knowing that, everyone's free to choose what kind of learning path seems more suitable to him.

    We're trying to do both things here, as we know everyone has it's own idea of what "being competent in Java" means.

    Kind regards,

    Delausnay Olivier
  70. Though I greatly appreciate the whole idea of JBB initiative, it seems like you guys have to do something right now about the quality of the application.
    When the session times out (yeah I just went to the WC in between questions), I got Wiki page instead of next question.
    Now I won't bother trying another test at your site until next major release.
    Try writing all major scenarios in jWebUnit test cases.
    That helps. Believe me.
  71. What would you have answered...[ Go to top ]

    Question Statement: Given that a Button can generate an ActionEvent which listener would you expect to have to implement, in a class which would handle this event?

    Your Answer(s):
      ActionListener

    Possible Answer(s):
      FocusListener
      ComponentListener
      WindowListener
      ActionListener
      ItemListener

    Correct Answers:
      ItemListener

    Is Answer Correct:
      false

    I don't know about you, but I typically have to implement ActionListener to handle ActionEvents.