I wanted to check some ideas with Java this evening and the PC that was available to me did not hava Java, nor Java IDE installed. I wish there was a web-based Java IDE integrated with my Google account, Sourceforge.net, and integrated with some Maven repo to fetch the dependencies!
I have googled about this topic and didn't find any reasonable results besides a video about wwworkspace. I couldn't find the service's website, unfortunately. The only reasonable webpage that I've found on this topic is the IBM's effort on the XUL front-end for eclipse: here... dated October 11, 2007. And no further news from there.
In fact this could be a very interesing project, and also very useful. The web-bvased IDE could even be not only Java-oriented but like eclipse, targeted towards different languages, taking advantage of plug-ins. Probably, using eclipse as a back-end wouldn't be that hard to implement? I wonder why there wasn't a GSoC'2008 proposal for this idea (or even if it was, it wasn't accepted)?
Pages
Saturday, April 26, 2008
Tuesday, April 22, 2008
Google Summer of Code 2008: Application Accepted!
I've got my GSoC application accepted again! This time I've applied to JBoss.org project Drools for extending Guvnor framework. Red Hat got 12 slots in total for Fedora and JBoss.org projects (10 for Fedora and only 2(!) for JBoss.org), Here's the project list. And here's some more stats.

So, happy summer coding to me! :)

So, happy summer coding to me! :)
Friday, April 11, 2008
Shell History in My Ubuntu
ant@ubuntu:~$ history|awk '{a[$2]++ } END{for(i in a){print a[i] " " i}}' |sort -rn|head
171 ls
134 cd
19 less
17 mogrify
14 rm
12 unzip
10 mv
8 java
8 idea.sh
7 mkdir
171 ls
134 cd
19 less
17 mogrify
14 rm
12 unzip
10 mv
8 java
8 idea.sh
7 mkdir
Sunday, March 30, 2008
Star Wars telnet movie
telnet towel.blinkenlights.nl
Friday, March 21, 2008
CaseInsensitiveMap and CollectionFactory
The code of the subject:
In the real code, the map was received as a result from org.springframework.jdbc.core.JdbcTemplate#queryForList() method call, and SpringFramework 2.0.8 is in use. As it came out, the ResultSet extraction spans down to the org.springframework.core.CollectionFactory class which purpose is
That said, there's a dependency on Commons Collections 3.x library. The while extracting the ResultSet received from the query call, the framework asks the factory for the map implementation to accumulate the results and makes a call to CollectionFactory#createLinkedCaseInsensitiveMapIfPossible() method:
So, if the Commons Collections 3.x exists in the classpath, we'll receive a CaseInsensitiveMap decorated with ListOrderedMap to preserve the order in which the objects would be isnerted into the map. In its turn, CaseInsensitiveMap stores calls the Object.toString().toLowerCase() method on any key object that is being added, so the keys are always lowercase strings! And this is why the example above was working.
The problem is that if you won't add the Commons Collections library to classpath, and will use lowercase strings to pick the values (i.e. map.get("some_key")), then you will most probably get null as a result, because there's absolutely no guarantee that the column name in the database is in lowercase.
Map map = ...;The output:
map.put("hello", "world")
System.out.println(map.get("hello"));
System.out.println(map.get("HELLO"));
worldHow could this possibly work?
world
In the real code, the map was received as a result from org.springframework.jdbc.core.JdbcTemplate#queryForList() method call, and SpringFramework 2.0.8 is in use. As it came out, the ResultSet extraction spans down to the org.springframework.core.CollectionFactory class which purpose is
... to avoid runtime dependencies on JDK 1.4+ or Commons Collections 3.x, simply using the best collection implementation that is available.
That said, there's a dependency on Commons Collections 3.x library. The while extracting the ResultSet received from the query call, the framework asks the factory for the map implementation to accumulate the results and makes a call to CollectionFactory#createLinkedCaseInsensitiveMapIfPossible() method:
private static final boolean commonsCollections3Available =
ClassUtils.isPresent("org.apache.commons.collections.map.LinkedMap",
CollectionFactory.class.getClassLoader());
...
public static Map createLinkedCaseInsensitiveMapIfPossible(int initialCapacity) {
if (commonsCollections3Available) {
logger.trace("Creating [org.apache.commons.collections.map.ListOrderedMap/CaseInsensitiveMap]");
return CommonsCollectionFactory.createListOrderedCaseInsensitiveMap(initialCapacity);
}
else if (JdkVersion.isAtLeastJava14()) {
logger.debug("Falling back to [java.util.LinkedHashMap] for linked case-insensitive map");
return JdkCollectionFactory.createLinkedHashMap(initialCapacity);
}
else {
logger.debug("Falling back to plain [java.util.HashMap] for linked case-insensitive map");
return new HashMap(initialCapacity);
}
}
...
private static Map createListOrderedCaseInsensitiveMap(int initialCapacity) {
// Commons Collections does not support initial capacity of 0.
return ListOrderedMap.decorate(
new CaseInsensitiveMap(
initialCapacity == 0 ? 1 :
initialCapacity));
}
So, if the Commons Collections 3.x exists in the classpath, we'll receive a CaseInsensitiveMap decorated with ListOrderedMap to preserve the order in which the objects would be isnerted into the map. In its turn, CaseInsensitiveMap stores calls the Object.toString().toLowerCase() method on any key object that is being added, so the keys are always lowercase strings! And this is why the example above was working.
The problem is that if you won't add the Commons Collections library to classpath, and will use lowercase strings to pick the values (i.e. map.get("some_key")), then you will most probably get null as a result, because there's absolutely no guarantee that the column name in the database is in lowercase.
Tuesday, March 18, 2008
Google Summer of Code 2008 Begins
Google Summer of Code 2008 Mentoring Organization List Announced!
Google announced the list of mentoring organizations for GSoC2008. A marvelous number of interesting projects and many famous OSS companies are in the list. ASF, Fedora & JBoss.org, Eclipse.org, Codehaus, Jikes RVM and some other are the organizations that I'm interested in. I think that the most suitable project is the one which brings a value once it is complete. So I think I can find such a project within these organizations.
Google announced the list of mentoring organizations for GSoC2008. A marvelous number of interesting projects and many famous OSS companies are in the list. ASF, Fedora & JBoss.org, Eclipse.org, Codehaus, Jikes RVM and some other are the organizations that I'm interested in. I think that the most suitable project is the one which brings a value once it is complete. So I think I can find such a project within these organizations.
Sunday, January 13, 2008
uCertify's PrepKit for SCBCD5.0
Recently, I had a pleasure to evaluate the uCertify's PrepKit software for the SCBCD5.0 exam. The impression is somewhat twofold. The PrepKit is great software to prepare for the exam, it is easy to use and the GUI is quite intuitive. But along with all the positive stuff, there were some obstacles I found a bit annoying. I will go over all the positive and negative moments as they appeared while using the software.
PrepKit works on Windows only
Certification software is provided by many different vendors and the suits are developed for very different platforms. When one is about to purchase such a software package it would be a good point to verify, if this software will run at his/her computer at all. The uCertify PrepKit software is Windows PC only, and this is what I found frustrating. I use Ubuntu Linux at home and I use wine to run MS Windows-based programs. This time wine failed even to install the PrepKit package: the installation process hanged on a half way and I was forced to xkill it. Fortunately my wife still uses Windows on her laptop so I installed the PrepKit there.
Probably, if the subject of certification is an MS's technology or product, then the idea to make PrepKit run only on Windows is OK. But if the subject is about Java certification, then it is quite strange to cut the Linux users off. Hopefully uCertify will soon come up with Linux version of PrepKit software.
The UI is quite intuitive
What makes the software easy to use? And what makes UI intuitive? PrepKit is aimed to help the user to prepare for the exam and carries the educational purpose for a specific area of interest. The user works with PrepKit via its GUI and is not aware how the software acts behind the scenes. The point is that the user doesn't want to learn about the GUI, but rather interested in the subject of certification. PrepKit GUI controls are organized is such way that user could see everything right from the very first sight.

I could logically divide the user screen in three parts: the tests part (top left), the learning part (right), and the estimation part (bottom left).
PrepKit allows you to take practice tests, quizes, provides explanations on the subject and estimates your progress. Each piece of functionality is well-recognized and thus it is easily located on the user screen.
Where do I start?
There could be several strategies to start using the software, depending on your background. If you have already some experience with EJBs, and you know that is the exam about, it is reasonable to take some mid-level test to see what is your initial level. If you aren't sure to take the test right away, "Enhance your understanding" might be useful to get the overview of the exam, find some additional information and practice a little before you proceed with the tests.
The "Enhance your understanding" part is the subject for improvement

I found "Enhance your understanding" panel very useful for getting more information about the exam itself, and also for improving my knowledge about the subject. From top to bottom:
Exam objectives provides an overview of the exam objectives and general notes about every part of the exam. This is quite useful to understand how the exam is structured and what kind of knowledge is expected.
Interactive quiz is really nice feature! The quiz is sort of a small test that allows you quickly to test your knowledge for the specific subject. It is possible to choose which part of the exam questions you would like to give a try. Say, I want to test my knowledge in transactions, so I could customize the quiz to include only the relevant questions. You will get the result immediately after you answer a quiz question, and you have the option for grading the questions as well - whether you liked it or not (I'm not sure how would it be useful yet).
The thing that the quiz is missing, IMO, is the explanation of the result. I wanted to know why my answer is not correct, but the quiz only shows if the answer was OK.
I did not get the purpose of Flash cards. What is it for? The "flash cards" do not test anything and aren't very different from the Study notes. So why hold them separately? For every flash card you are suggested to write down your knowledge about some specific topic and then compare with some predefined text. Honestly I didn't find any use of that feature.
Study notes are somewhat more useful compared to Flash cards. There are ~250 notes on the different aspects of the EJB technology from different areas of the examination. The notes are provided in question-answer form which seems to be quite natural. For instance: "What is the ejb-jar file?", following with some text explaining the subject.
What I find really useful about the notes section, is that every study note has several test questions associated with it. So when you have read a study note and you would like to practice with the topic, then you have the option to answer the related questions.
There was only one article in the Articles part. The feature is nice but only one available article is definitely not enough. Hopefully the articles section will be extended with the updates.
The very last part of the section is Study tips, which are redundant IMO. This could be actually merged with the Exam objectives part.
The tests are well organized

These include a diagnostic test which aims to identify your weakness and guides you to focus your preparations accordingly. Next, there are some predefined tests, which aim to simulate the actual exam. Also, an adaptive test is available. Depending on your answers the adaptive test aims to provide you relevant questions: if your answer was correct, the next question will be of higher difficulty level, and in opposite, if you fail, the next question will be easier. And the last but not least a user can customize the test content on his own with the custom test.
I also found some things that were annoying me in the tests. Almost every question in tests starts with the following text:
Pardon me, does it make sense if I do work in BlueWell Inc. or not? The statement about writing the EJB application is redundant because I'm already concerned about the subject and there's no point in raising it over and over again. This two sentences just took my time in reading the question while providing no value.
Track the progress and estimate your skills
PrepKit provides some statistical information of the progress of the studies.
So when the user takes a test or a quiz the result is added to his record. In the history part is possible to review the questions and answers and thus it helps proceed with the preparation accordingly.
Also, PrepKit collects the statistical information about the exam objectives and maps it to your progress, so it is easy to see which areas are required for improvement.

Summary
I find the PrepKit software quite useful for SCBCD5.0 exam preparation although there are several things to improve. The tests are well structured and provide close to real exam questions. The educational part of the PrepKit is a little noisy of some information that could be optimized but it still provides quite valuable information while studying the EJBs. Also, the software guides you which part of your knowledge is missing for the certification, which is very useful to know. I would definitely suggest the PrepKit to everyone preparing for the SCBCD5.0 certification exam.
*****Update*****
uCertify is offering a discount to you! You can use the discount code given below and get 10% discount on the uCertify PrepKit of your choice. The discount code is:
ANTPOV
PrepKit works on Windows only
Certification software is provided by many different vendors and the suits are developed for very different platforms. When one is about to purchase such a software package it would be a good point to verify, if this software will run at his/her computer at all. The uCertify PrepKit software is Windows PC only, and this is what I found frustrating. I use Ubuntu Linux at home and I use wine to run MS Windows-based programs. This time wine failed even to install the PrepKit package: the installation process hanged on a half way and I was forced to xkill it. Fortunately my wife still uses Windows on her laptop so I installed the PrepKit there.
Probably, if the subject of certification is an MS's technology or product, then the idea to make PrepKit run only on Windows is OK. But if the subject is about Java certification, then it is quite strange to cut the Linux users off. Hopefully uCertify will soon come up with Linux version of PrepKit software.
The UI is quite intuitive
What makes the software easy to use? And what makes UI intuitive? PrepKit is aimed to help the user to prepare for the exam and carries the educational purpose for a specific area of interest. The user works with PrepKit via its GUI and is not aware how the software acts behind the scenes. The point is that the user doesn't want to learn about the GUI, but rather interested in the subject of certification. PrepKit GUI controls are organized is such way that user could see everything right from the very first sight.
I could logically divide the user screen in three parts: the tests part (top left), the learning part (right), and the estimation part (bottom left).
PrepKit allows you to take practice tests, quizes, provides explanations on the subject and estimates your progress. Each piece of functionality is well-recognized and thus it is easily located on the user screen.
Where do I start?
There could be several strategies to start using the software, depending on your background. If you have already some experience with EJBs, and you know that is the exam about, it is reasonable to take some mid-level test to see what is your initial level. If you aren't sure to take the test right away, "Enhance your understanding" might be useful to get the overview of the exam, find some additional information and practice a little before you proceed with the tests.
The "Enhance your understanding" part is the subject for improvement

I found "Enhance your understanding" panel very useful for getting more information about the exam itself, and also for improving my knowledge about the subject. From top to bottom:
Exam objectives provides an overview of the exam objectives and general notes about every part of the exam. This is quite useful to understand how the exam is structured and what kind of knowledge is expected.
Interactive quiz is really nice feature! The quiz is sort of a small test that allows you quickly to test your knowledge for the specific subject. It is possible to choose which part of the exam questions you would like to give a try. Say, I want to test my knowledge in transactions, so I could customize the quiz to include only the relevant questions. You will get the result immediately after you answer a quiz question, and you have the option for grading the questions as well - whether you liked it or not (I'm not sure how would it be useful yet).
The thing that the quiz is missing, IMO, is the explanation of the result. I wanted to know why my answer is not correct, but the quiz only shows if the answer was OK.
I did not get the purpose of Flash cards. What is it for? The "flash cards" do not test anything and aren't very different from the Study notes. So why hold them separately? For every flash card you are suggested to write down your knowledge about some specific topic and then compare with some predefined text. Honestly I didn't find any use of that feature.
Study notes are somewhat more useful compared to Flash cards. There are ~250 notes on the different aspects of the EJB technology from different areas of the examination. The notes are provided in question-answer form which seems to be quite natural. For instance: "What is the ejb-jar file?", following with some text explaining the subject.
What I find really useful about the notes section, is that every study note has several test questions associated with it. So when you have read a study note and you would like to practice with the topic, then you have the option to answer the related questions.
There was only one article in the Articles part. The feature is nice but only one available article is definitely not enough. Hopefully the articles section will be extended with the updates.
The very last part of the section is Study tips, which are redundant IMO. This could be actually merged with the Exam objectives part.
The tests are well organized

These include a diagnostic test which aims to identify your weakness and guides you to focus your preparations accordingly. Next, there are some predefined tests, which aim to simulate the actual exam. Also, an adaptive test is available. Depending on your answers the adaptive test aims to provide you relevant questions: if your answer was correct, the next question will be of higher difficulty level, and in opposite, if you fail, the next question will be easier. And the last but not least a user can customize the test content on his own with the custom test.
I also found some things that were annoying me in the tests. Almost every question in tests starts with the following text:
You work as a Software Developer for BlueWell Inc. You create an application using Enterprise JavaBeans
Pardon me, does it make sense if I do work in BlueWell Inc. or not? The statement about writing the EJB application is redundant because I'm already concerned about the subject and there's no point in raising it over and over again. This two sentences just took my time in reading the question while providing no value.
Track the progress and estimate your skills
PrepKit provides some statistical information of the progress of the studies.



Summary
I find the PrepKit software quite useful for SCBCD5.0 exam preparation although there are several things to improve. The tests are well structured and provide close to real exam questions. The educational part of the PrepKit is a little noisy of some information that could be optimized but it still provides quite valuable information while studying the EJBs. Also, the software guides you which part of your knowledge is missing for the certification, which is very useful to know. I would definitely suggest the PrepKit to everyone preparing for the SCBCD5.0 certification exam.
*****Update*****
uCertify is offering a discount to you! You can use the discount code given below and get 10% discount on the uCertify PrepKit of your choice. The discount code is:
ANTPOV
Wednesday, January 2, 2008
The Closed-Source Software Buy-In
The Case
What makes our stakeholders to take a decision for proprietary software buy-in? Literally, one stakeholder was eager to implement a "brand-new-cool" solution for automating some of the business operations that forced him to hire 3 more employees. So the claim was that if once he have the product installed, and the data integration is done against our core system, then eventually everything will work... That said, we have: the stakeholder X, the software product Y, that should implement function Z. And finally, the software product Y doesn't include its sources in the shipping package.
As you may have already guessed, this software was not working properly after installation and we could not integrate the data model as the software wasn't suitable for some specific business cases.
Let us to take a look to the root of the issue. When the stakeholder was about to take a decision which software to buy, he did not evaluate the software by using the demo version, but instead, some marketing salesmen were visiting the customer and selling the product using PowerPoint slides... (OMG). The stakeholder knew that the product cannot perform some operations, so the required customization was merely ordered.
Next, after the contract was signed, we were testing our data integration procedures with every new version of the product. And, we were receiving the new versions every 4-5 weeks, periodically, with some bugfixes. Nice. After about 2 years (!) of such integration process we've got to know, that by the time of contract signing, there were no customers who succeeded with integrating this product. And, some customization logic were still not working by this time. At the moment the project is almost 3 years old. Lately we received the new version that was claimed to work accordingly to the ordered specification.
The Hi-Tech
The product is actually a J2EE application, running on BEA Weblogic application server, and, even if have no source code available for this application, we can still see that the application is built using EJB 2.1 (despite it is legacy specification already). So the stakeholder made the decision just based on the PowerPoint slides. The software product was not analyzed if it applies up-to-date technologies, or if it is complies to maturity standards.
... blah blah blah... i could continue for nothing :)
The Real Problem
As I see it at the moment, the stakeholder's point of view in this situation is that the integration team is the bottleneck, as we fail to integrate the product.
So my list of questions for this issue is:
From the business process point of view, buying the software product from the 3rd party might be even positive: bringing the know-how in. But! Is your stakeholder so incompetent that it would take n+1 years to complete the project?
What makes our stakeholders to take a decision for proprietary software buy-in? Literally, one stakeholder was eager to implement a "brand-new-cool" solution for automating some of the business operations that forced him to hire 3 more employees. So the claim was that if once he have the product installed, and the data integration is done against our core system, then eventually everything will work... That said, we have: the stakeholder X, the software product Y, that should implement function Z. And finally, the software product Y doesn't include its sources in the shipping package.
As you may have already guessed, this software was not working properly after installation and we could not integrate the data model as the software wasn't suitable for some specific business cases.
Let us to take a look to the root of the issue. When the stakeholder was about to take a decision which software to buy, he did not evaluate the software by using the demo version, but instead, some marketing salesmen were visiting the customer and selling the product using PowerPoint slides... (OMG). The stakeholder knew that the product cannot perform some operations, so the required customization was merely ordered.
Next, after the contract was signed, we were testing our data integration procedures with every new version of the product. And, we were receiving the new versions every 4-5 weeks, periodically, with some bugfixes. Nice. After about 2 years (!) of such integration process we've got to know, that by the time of contract signing, there were no customers who succeeded with integrating this product. And, some customization logic were still not working by this time. At the moment the project is almost 3 years old. Lately we received the new version that was claimed to work accordingly to the ordered specification.
The Hi-Tech
The product is actually a J2EE application, running on BEA Weblogic application server, and, even if have no source code available for this application, we can still see that the application is built using EJB 2.1 (despite it is legacy specification already). So the stakeholder made the decision just based on the PowerPoint slides. The software product was not analyzed if it applies up-to-date technologies, or if it is complies to maturity standards.
... blah blah blah... i could continue for nothing :)
The Real Problem
As I see it at the moment, the stakeholder's point of view in this situation is that the integration team is the bottleneck, as we fail to integrate the product.
So my list of questions for this issue is:
- What makes the stakeholder X believe into some product Y, instead of developing the solution in-house?
- Why doesn't stakeholder try the product demo before signing a contract?
- What position should take the integration team in this situation?
From the business process point of view, buying the software product from the 3rd party might be even positive: bringing the know-how in. But! Is your stakeholder so incompetent that it would take n+1 years to complete the project?
Tuesday, January 1, 2008
Am I a good PHP programmer?
I found a recruiting test for PHP programmers today. I have no experience with PHP at all and haven't written a single line of PHP code in my life. So I decided to try, if my Java knowledge will help me with PHP.

The test result says that I'm a good PHP programmer! :)
The test result says that I'm a good PHP programmer! :)
Thursday, December 27, 2007
An Interesting Reference to Google.com
Yesterday my mother made me a Christmas gift - a book. This book is called "Stress as an Asymmetric State. Natural Healing". Nice hardcover, approximately 125 pages. But on the very first page, where all the copyrights are listed I found something very strange to my mind.

I found the following. At the line 4 of the copyright page there's a reference to www.google.com. It says:

Pardon me, but I doubt that any trustworthy author would refer to a search engine in his/her text. Say, if you make a student project at university, will you refer to {yahoo|altavista|google|yandex}.com to make your text look authoritative??? I don't think so. I can think that the authors did not even know about this reference, but the respectful publisher should have thought twice before passing this one to production.

I found the following. At the line 4 of the copyright page there's a reference to www.google.com. It says:
All the illustrative material comes from www.google.com and is adopted for this book

Pardon me, but I doubt that any trustworthy author would refer to a search engine in his/her text. Say, if you make a student project at university, will you refer to {yahoo|altavista|google|yandex}.com to make your text look authoritative??? I don't think so. I can think that the authors did not even know about this reference, but the respectful publisher should have thought twice before passing this one to production.
Subscribe to:
Posts (Atom)