<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5963915115180797467</id><updated>2011-08-01T16:58:36.717-07:00</updated><title type='text'>Barraca do Paulo</title><subtitle type='html'>Hi, my name is Paulo, I am portuguese, and I am currently working as  a freelance Software Engineer in Luxembourg. This is my personal blog, where I express my views in various subjects. You can contact me using barracadopaulo@gmail.com. Welcome!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default?start-index=101&amp;max-results=100'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>141</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6712206576622567228</id><published>2011-06-02T14:11:00.000-07:00</published><updated>2011-06-02T14:14:50.315-07:00</updated><title type='text'>The Art of  Embezzlement- A Short Guide to the Portuguese Political Scene</title><content type='html'>&lt;p style="margin-bottom: 0cm"&gt;Now that there is so much talking about Portugal and its economical challenges, I have many people asking me about the political scene in the country. Since we are few days away from the election, I decided to write “The Art of  Embezzlement- A Short Guide to the Portuguese Political Scene“, in order to shed some light on the matter.   &lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;&lt;a name="result_box"&gt;&lt;/a&gt;Politics in Portugal is not far from an episode of “The Sopranos”- there are two big families which control  most of the country, and exploit every field of activity, sacking beyond one's imagination. These families suffer from lack of creativity, and instead of making use of well sounding Italian names, they decided to call themselves Socialists and Social Democrats, even though none of its &lt;span lang="en"&gt;constituents&lt;/span&gt; practices any value which might be remotely related to these two philosophies.  Both have very exquisite criterias when it comes to accepting new members- each candidate is subjected to a rigorous selection process, and only the most corrupted, dumb and unethical get accepted.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt; Although in theory the control shifts between them every half a dozen years, in something which in a humorous tone is called election, the most attentive observer will easily conclude that they thoroughly share power, working in a balanced ecosystem of equally shared exploitation. They are nothing more than one big family, divided in two parts, aiming and succeeding to swindle the people, inducing them to believe that changing from one to the other might bring them something good.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt; Like a typical mafia structure, they are divided in boss, underboss, consigliere, capos and soldiers, which around there is formally designated as Prime Minister, Minister and Mayors. The common people are well aware of such reality, but they do not worry much about it, why should one care when there are other much more relevant matters like football or soup operas. Too many years of dictatorship made them soft and resigned to the idea that mediocrity is their faith.  &lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;There are three other families, which aspire to control the country and to rip the people even more. Once more, all invariably suffer from lack of imagination when it comes to names.  &lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Christian Democrats are quite skilled in the naval industry, they recently became popular by blessing the people with the purchase of few useless submarines for a humble amount which could probably pay a big part of the Portuguese, Greek and Irish debts.  &lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Other of these families are the so called Communists, which are characterized by a peculiar skill- all members are frozen in time, and live around 1917. If one day we achieve time traveling we can send them back, our ancestors will be most thankful. When it comes to the present, this group of individuals are close to useless, being their only use the ability to summon strikes on Mondays and Fridays, providing the people with the very desirable long weekends.   &lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Last but not least we have the Trotskists, good old timer criminals, which base their “modus operandi” in promoting anarchy. With these guys anything goes, as long as it can bring them some additional power.&lt;/p&gt; &lt;p style="margin-bottom: 0cm"&gt;Portuguese people are affable and they know how to work well and be productive. One day they will wake up from this nightmare, and will put the country in the right track. Till then, just be patient with us ;-)  &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6712206576622567228?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6712206576622567228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6712206576622567228' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6712206576622567228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6712206576622567228'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2011/06/art-of-embezzlement-short-guide-to.html' title='The Art of  Embezzlement- A Short Guide to the Portuguese Political Scene'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8837360713362255594</id><published>2010-10-17T14:43:00.000-07:00</published><updated>2010-10-17T14:44:33.289-07:00</updated><title type='text'>Traveler’s Ten Commandments</title><content type='html'>1. Thou shalt not expect to find things as thou left them at home…for thou hast left home to find things different.&lt;br /&gt;2. Thou shalt not take anything too seriously..for a carefree mind is vital to a good vacation.&lt;br /&gt;3. Thou shall not let other travelers get on thy nerves..for thou paid good money to enjoy thyself.&lt;br /&gt;4. Thou shalt not forget..thou are a representative of your country at all times.&lt;br /&gt;5. Thou shalt not worry..for he who worrieth hath no pleasure and few things are fatal.&lt;br /&gt;6. Know where they passport is at all times..for a traveler without a passport is a traveler without a country.&lt;br /&gt;7. As a stranger in a strange land..be prepared to do as its people doeth.&lt;br /&gt;8. Thou shalt not judge all people of a country..by the one person who hath given thee trouble.&lt;br /&gt;9. Blessed is the traveler who can say thank you in any language..for this and a smile doubles the value of any tip.&lt;br /&gt;10. Remember thou are a guest in every land..and those who treat their hosts with respect shall be treated likewise.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8837360713362255594?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8837360713362255594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8837360713362255594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8837360713362255594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8837360713362255594'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/10/travelers-ten-commandments.html' title='Traveler’s Ten Commandments'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6138722837244654709</id><published>2010-10-17T11:00:00.000-07:00</published><updated>2010-10-17T11:01:57.874-07:00</updated><title type='text'>You Will Meet a Tall Dark Stranger</title><content type='html'>Here is Woody Allen again with a great movie. I strongly recommend. The end is a bit strange, but for sure a movie which will stay in your memory.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6138722837244654709?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6138722837244654709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6138722837244654709' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6138722837244654709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6138722837244654709'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/10/you-will-meet-tall-dark-stranger.html' title='You Will Meet a Tall Dark Stranger'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2149890992036515933</id><published>2010-05-30T10:56:00.000-07:00</published><updated>2010-05-30T11:00:10.510-07:00</updated><title type='text'>Sex &amp; the City 2</title><content type='html'>It was a though exercise to remember a movie which was as bad as this one. I would say it is the worse movie of the last year. I find it offensive towards women and towards people from the Emirates. They used to have some funny jokes, but on this movie they simple use cheap and bad taste humor.  It is a complete waste of time and money.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2149890992036515933?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2149890992036515933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2149890992036515933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2149890992036515933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2149890992036515933'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/05/sex-city-2.html' title='Sex &amp; the City 2'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-3378413907060155361</id><published>2010-05-25T12:58:00.002-07:00</published><updated>2010-05-25T13:47:58.886-07:00</updated><title type='text'>Metallica Live in Lisbon</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/S_w3bu5PMFI/AAAAAAAAAF8/UJhFqa18BTY/s1600/Fotos-0041.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/S_w3bu5PMFI/AAAAAAAAAF8/UJhFqa18BTY/s400/Fotos-0041.jpg" alt="" id="BLOGGER_PHOTO_ID_5475312196559777874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I was always a big fan of Metallica, since my teenager times. Unfortunately I had never the opportunity to watch them live, even though it has always been on my TODO list. After many years the opportunity finally arrived, with the concert they had in Lisbon. And it could not get any better. The atmosphere was fantastic, concert was sold out for many weeks, they have a faithful crowd of followers in Portugal. They come full of energy and played an excellent choice of songs, taking the audience to the limit. Age does not seem to have affected them. The crowd knew all songs by heart, and the band seemed to had as much fun as we did. I had high expectations, but they were able to exceed them!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-3378413907060155361?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/3378413907060155361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=3378413907060155361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3378413907060155361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3378413907060155361'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/05/metallica-live-in-lisbon.html' title='Metallica Live in Lisbon'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6AibgWUYSmw/S_w3bu5PMFI/AAAAAAAAAF8/UJhFqa18BTY/s72-c/Fotos-0041.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-9221949216598458822</id><published>2010-04-11T08:53:00.000-07:00</published><updated>2010-04-11T11:19:59.826-07:00</updated><title type='text'>Tragedy of Smolensk- Parallels with Software Projects</title><content type='html'>We were all shocked with the tragic accident that victimized some of the most distinguished Polish personalities. I have been closely following the facts that were so far revealed, and, as a Software Engineer, I cannot avoid finding many similarities between this sad accident and many unsuccessful software projects.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;We had a plane full of people with busy schedules and tight deadlines, aiming to attend an event but wanting to loose as little time as possible in the journeys. Reminds me a project with plenty of managers and business people with very demanding deadlines, imposing tight targets which are often close to impossible.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The plane was old and missing much of the technology which is available on any Airbus or Boeing. Such gap was well known but nothing was done due to budget limitations. Reminds me a project where the targets are ambitious but developers are not given the necessary tools. Managers know that such tools are a mandatory condition for success, but there is never enough budget.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;The safety of the plane and everyone inside it was in the hands of the pilot. Considering most of the people inside the plane, the pilot was probably the one having the smaller salary, and working under more stressful conditions. In any traditional project the final outcome is in the hands of developers, which are traditionally less paid than managers or business people, and have to work late hours under a considerable amount of stress.&lt;/li&gt;&lt;li&gt;Even though the weather conditions were hard, and the traffic controllers advised the pilot to land in alternative airport, the pilot continued trying to land in Smolensk. Reminds me developers breaking good practices and guidelines in order to try to deliver and to satisfy impossible timings.&lt;/li&gt;&lt;li&gt;We know that presidential flights are normally assigned to the best pilots so I am sure that the quality of the pilot is not questionable. Nevertheless there are rumors that indicate that he was pressed to land in Smolensk due to the tight schedule of the Polish president. Reminds me developers which are forced to perform irresponsible tasks against their own will simply to satisfy the utopian agenda of management and business.&lt;/li&gt;&lt;li&gt;I might be wrong, but I guess that History will mark this accident as caused by a pilot's mistake. In most of the unsuccessful projects  the blame ends up at the developer´s plate. They are the ones not delivering on time, or delivering something that does not work, so who else should we blame? Like it happened with the airplane pilot, no one cares about the context that triggered the accident, we simply choose the easiest target.&lt;/li&gt;&lt;/ul&gt;More and more we live in a society which is driven by impossible goals, and we all are forced to excel to a level where risks are very high. This kind of sad events should make us reflect, and to question our attitude towards the goals that we force into ourselves and into the ones that surround us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-9221949216598458822?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/9221949216598458822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=9221949216598458822' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/9221949216598458822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/9221949216598458822'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/04/tragedy-of-smolensk-parallels-with.html' title='Tragedy of Smolensk- Parallels with Software Projects'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8404949187289795712</id><published>2010-04-07T12:04:00.000-07:00</published><updated>2010-04-07T12:05:03.436-07:00</updated><title type='text'>Top-paying industries for IT</title><content type='html'>Interesting article &lt;a href="http://www.computerworld.com/s/article/9172718/Top_paying_industries_for_IT"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8404949187289795712?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8404949187289795712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8404949187289795712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8404949187289795712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8404949187289795712'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/04/top-paying-industries-for-it.html' title='Top-paying industries for IT'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8135863298378711218</id><published>2010-04-05T13:37:00.000-07:00</published><updated>2010-04-05T13:40:16.802-07:00</updated><title type='text'>Scottevest sells Ipad friendly jackets</title><content type='html'>It did not take much time until we got the &lt;a href="http://www.scottevest.com/"&gt;first jackets&lt;/a&gt; with a special pocket for the new Ipad!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8135863298378711218?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8135863298378711218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8135863298378711218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8135863298378711218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8135863298378711218'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/04/scottevest-sells-ipad-friendly-jackets.html' title='Scottevest sells Ipad friendly jackets'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-104037121315420045</id><published>2010-04-05T10:23:00.000-07:00</published><updated>2010-04-05T10:24:40.288-07:00</updated><title type='text'>Le fabuleux destin d'Amélie Poulain</title><content type='html'>It took me a while to watch this movie. It got out in 2001, since then that I was planning to watch it, but never did. I finally had the opportunity and it is a fantastic movie, really excellent, I strongly recommend!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-104037121315420045?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/104037121315420045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=104037121315420045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/104037121315420045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/104037121315420045'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/04/le-fabuleux-destin-damelie-poulain.html' title='Le fabuleux destin d&apos;Amélie Poulain'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-414073627424680452</id><published>2010-03-28T09:43:00.000-07:00</published><updated>2010-03-28T09:46:38.419-07:00</updated><title type='text'>Where is Humpty Dumpty?</title><content type='html'>Alice in Wonderland 3D is a great movie. But where is Humpty Dumpty??? Shame on you, Tim Burton!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-414073627424680452?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/414073627424680452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=414073627424680452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/414073627424680452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/414073627424680452'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/03/where-is-humpty-dumpty.html' title='Where is Humpty Dumpty?'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5706906609238679940</id><published>2010-03-23T14:53:00.000-07:00</published><updated>2010-03-23T15:06:25.689-07:00</updated><title type='text'>FindBugs- Detecting EJB instantiation</title><content type='html'>In projects using EJB3, every now and then we bump into manual instantiation of EJBs, causing unexpected results. This is the typical issue which is very easy to automatically detect. The following FindBugs detector does the job, assuming that you annotate your EJBs:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class EJBInstantiation extends BytecodeScanningDetector {&lt;br /&gt;&lt;br /&gt;  private static final Collection&lt;string&gt; EJB_ANNOT_NAMES = Arrays.asList(&lt;br /&gt;          "Stateless", "Statefull", "MessageDriven");&lt;br /&gt;&lt;br /&gt;  private BugReporter bugReporter;&lt;br /&gt;&lt;br /&gt;  public EJBInstantiation(BugReporter bugReporter) {&lt;br /&gt;      this.bugReporter = bugReporter;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;  public void sawOpcode(int seen) {&lt;br /&gt;      try {&lt;br /&gt;          if ((seen == INVOKESPECIAL)&lt;br /&gt;                  &amp;amp;&amp;amp; getNameConstantOperand().equals("&lt;init&gt;")&lt;br /&gt;                  &amp;amp;&amp;amp; getSigConstantOperand().equals("()V")) {&lt;br /&gt;              XClass clazz = getXClassOperand();&lt;br /&gt;              if (clazz != null &amp;amp;&amp;amp; isEJB(clazz)) {&lt;br /&gt;                  bugReporter.reportBug(new BugInstance(this,&lt;br /&gt;                          "EJB_INST", HIGH_PRIORITY).addClassAndMethod(&lt;br /&gt;                          this).addSourceLine(this));&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;      } catch (ClassNotFoundException cnfe) {&lt;br /&gt;          bugReporter.reportMissingClass(cnfe);&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  private boolean isEJB(XClass clazz) throws ClassNotFoundException {&lt;br /&gt;      boolean result = false;&lt;br /&gt;      Collection&lt;classdescriptor&gt; annotations = clazz&lt;br /&gt;              .getAnnotationDescriptors();&lt;br /&gt;      if (annotations != null &amp;amp;&amp;amp; !annotations.isEmpty()) {&lt;br /&gt;          for (ClassDescriptor annotation : annotations) {&lt;br /&gt;              if (EJB_ANNOT_NAMES.contains(annotation.getSimpleName())) {&lt;br /&gt;                  result = true;&lt;br /&gt;                  break;&lt;br /&gt;              }&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;      return result;&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/classdescriptor&gt;&lt;/init&gt;&lt;/string&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5706906609238679940?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5706906609238679940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5706906609238679940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5706906609238679940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5706906609238679940'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/03/findbugs-detecting-ejb-instantiation.html' title='FindBugs- Detecting EJB instantiation'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1544654124700277297</id><published>2010-03-17T14:16:00.000-07:00</published><updated>2010-03-17T14:20:35.931-07:00</updated><title type='text'>WLST- Get Current Message Count for a JMS Queue</title><content type='html'>Here is a small WLST script that can be used to monitor the message count of a certain queue. This can be specially handy for monitoring exception queues.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;connect('weblogic', 'weblogic', 't3://localhost:7001')&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;domainRuntime()&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;cd('ServerRuntimes/AdminServer/JMSRuntime/AdminServer.jms/JMSServers/MyJMSServer/Destinations/MyJMSModule!MyQueue')&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;msgNumber = get('MessagesCurrentCount')&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:85%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-family:arial;font-size:85%;"  &gt;print msgNumber, " messages in the queue!"&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1544654124700277297?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1544654124700277297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1544654124700277297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1544654124700277297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1544654124700277297'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/03/wlst-get-current-message-count-for-jms.html' title='WLST- Get Current Message Count for a JMS Queue'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1252974845652533489</id><published>2010-02-21T06:35:00.000-08:00</published><updated>2010-02-21T06:36:25.445-08:00</updated><title type='text'>Very Sad Weekend</title><content type='html'>This is a very sad weekend for all Portuguese people: &lt;a href="http://www.cnn.com/2010/WORLD/europe/02/21/portugal.mudslide/index.html?hpt=C1"&gt;http://www.cnn.com/2010/WORLD/europe/02/21/portugal.mudslide/index.html?hpt=C1&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1252974845652533489?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1252974845652533489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1252974845652533489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1252974845652533489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1252974845652533489'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/02/very-sad-weekend.html' title='Very Sad Weekend'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8721163444008102495</id><published>2010-02-14T05:52:00.000-08:00</published><updated>2010-02-14T06:06:08.332-08:00</updated><title type='text'>Last 2 weeks in a nutshell</title><content type='html'>Not much spare time to update my blog, so here are the last days in a nutshell:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Java- Finally the deal Oracle/Sun got approved by the EC. It was about time, we could not go any longer with this. Is this good? I do not know. I guess it would be better to have Sun as an independent company, but it is better to have Java in the hands of Oracle than in IBM's.&lt;/li&gt;&lt;li&gt;Economy- Few countries in the Euro zone are collapsing. In the last 10 years we had many criticism towards the euro currency, but I do not hear any criticism anymore. Yes, because for countries like Greece, Ireland, Spain or Portugal the collapse is not complete due to the strong currency they have, otherwise it would be "copy paste" from Iceland. As always, thanks to Germans and French for babysitting us.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Portugal- What a disaster, it gets me so sad the way my country is evolving. Besides the major issues in financial terms (a deficit higher than 9%) the top government people are involved in recursive scandals which are beyond any acceptable limits. The country is far worse than 10 years ago. Really sad...&lt;/li&gt;&lt;li&gt;Luxembourg- Suffering from the crisis as well, I hear more and more stories about people loosing their jobs. The unemployment stats should not be trusted because a part of the people which live in Germany/France/Belgium and cross the border to work here do not count as unemployed whenever they loose their job. So it goes through a tough time, but of course, this is a very rich country,and can manage such periods in a more relaxed way when compared to other European countries.&lt;/li&gt;&lt;li&gt;Weather- It snows, snows and then snows again.... Long and hard winter.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8721163444008102495?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8721163444008102495/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8721163444008102495' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8721163444008102495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8721163444008102495'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/02/last-2-weeks-in-nutshell.html' title='Last 2 weeks in a nutshell'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8005612037798484208</id><published>2010-02-07T12:56:00.000-08:00</published><updated>2010-02-07T12:57:10.978-08:00</updated><title type='text'>Confessions of a Public Speaker</title><content type='html'>I am currently reading this &lt;a href="http://oreilly.com/catalog/9780596802004"&gt;book&lt;/a&gt; and I find it extremely good. Give it a try!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8005612037798484208?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8005612037798484208/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8005612037798484208' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8005612037798484208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8005612037798484208'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/02/confessions-of-public-speaker.html' title='Confessions of a Public Speaker'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7276925361983386694</id><published>2010-02-06T15:13:00.000-08:00</published><updated>2010-02-06T15:16:20.591-08:00</updated><title type='text'>Luxembourg and Hotel California</title><content type='html'>One of my colleagues says that Luxembourg is like Hotel California- &lt;span style="font-style: italic;"&gt;you can checkout any time you like, but you can never leave&lt;/span&gt;. It makes sense :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7276925361983386694?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7276925361983386694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7276925361983386694' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7276925361983386694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7276925361983386694'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/02/luxembourg-and-hotel-california.html' title='Luxembourg and Hotel California'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1068751740433336823</id><published>2010-01-31T13:46:00.000-08:00</published><updated>2010-01-31T13:49:26.559-08:00</updated><title type='text'>IPAD</title><content type='html'>Another revolution coming from Apple. It seems like a very interesting product and I believe it will get a strong adoption. I wonder how it is going to change the book market. Could it be than in few years no one will buy paper books anymore?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1068751740433336823?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1068751740433336823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1068751740433336823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1068751740433336823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1068751740433336823'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/ipad.html' title='IPAD'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2170220896577681697</id><published>2010-01-27T14:57:00.000-08:00</published><updated>2010-01-27T15:01:35.849-08:00</updated><title type='text'>WebLogic- EJB3 uses Spring</title><content type='html'>WebLogic makes use of Spring in order to manage dependency injection between EJBs. Quite interesting approach, an EJB on top of Spring stack.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2170220896577681697?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2170220896577681697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2170220896577681697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2170220896577681697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2170220896577681697'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/weblogic-ejb3-uses-spring.html' title='WebLogic- EJB3 uses Spring'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6901491792075684522</id><published>2010-01-24T13:07:00.000-08:00</published><updated>2010-01-24T13:09:12.314-08:00</updated><title type='text'>A Little Less Conversation</title><content type='html'>Joel Spolsky wrote one more interesting article about the risks of too much communication. Can be found &lt;a href="http://www.inc.com/magazine/20100201/a-little-less-conversation.html"&gt;here.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6901491792075684522?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6901491792075684522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6901491792075684522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6901491792075684522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6901491792075684522'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/little-less-conversation.html' title='A Little Less Conversation'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2006646165592627086</id><published>2010-01-24T12:56:00.000-08:00</published><updated>2010-01-24T13:01:28.645-08:00</updated><title type='text'>A tricky SQL question for an interview</title><content type='html'>When doing your next interview try to ask the result of the following boolean expression in SQL:&lt;br /&gt;&lt;br /&gt;TRUE OR NULL&lt;br /&gt;FALSE OR NULL&lt;br /&gt;TRUE AND NULL&lt;br /&gt;FALSE AND NULL&lt;br /&gt;&lt;br /&gt;I can ensure you that a significant part of the interviewees will fail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2006646165592627086?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2006646165592627086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2006646165592627086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2006646165592627086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2006646165592627086'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/tricky-sql-question-for-interview.html' title='A tricky SQL question for an interview'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5908740294154157607</id><published>2010-01-19T14:17:00.000-08:00</published><updated>2010-01-19T14:20:41.085-08:00</updated><title type='text'>Fundamental Rights of the European Union- Article 3.c</title><content type='html'>Article 3.c states "&lt;span style="font-style: italic;"&gt;the prohibition on making the human body and its parts as such a source of financial gain&lt;/span&gt;". Speaking deep down from my ignorance in terms of legal matters, I wonder how the legal prostitution in The Netherlands goes together with this article...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5908740294154157607?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5908740294154157607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5908740294154157607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5908740294154157607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5908740294154157607'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/fundamental-rights-of-european-union.html' title='Fundamental Rights of the European Union- Article 3.c'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-74342140193705207</id><published>2010-01-19T14:13:00.000-08:00</published><updated>2010-01-19T14:16:49.826-08:00</updated><title type='text'>Java Posse- Holiday Special 2009/2010</title><content type='html'>The holiday special from the Java Posse is a must. There is not much about Java in this episode, but it is a excellent source of ideas about all sort of gadgets, books, etc. I just wish they would make this special before Christmas, so we could get some interesting ideas for presents.&lt;br /&gt;&lt;br /&gt;And of course, as requested many times by a lot of people, we are still waiting on the special episode about books!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-74342140193705207?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/74342140193705207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=74342140193705207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/74342140193705207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/74342140193705207'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/java-posse-holiday-special-20092010.html' title='Java Posse- Holiday Special 2009/2010'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-9045409350173828846</id><published>2010-01-17T10:58:00.001-08:00</published><updated>2010-01-17T11:10:06.378-08:00</updated><title type='text'>EJB4- One whish to the list</title><content type='html'>This is an old wish which unfortunately never got into the spec (I can only blame myself as I never submitted it to the spec work group). Why does a deployment descriptor has to be part of the EAR/JAR? Why not allowing the DD to include a reference to a second DD located somewhere else (filesystem, remote server, etc)? Alternatively we could say something like "find a DD with this name in the classpath and use it", avoiding the need of hard-code references to a file name.&lt;br /&gt;I know that in theory having a self-contained  EAR is a good idea. But more and more it is handy to change certain features dynamically without having to provide a new application file. Lets use interceptors as an example. One of the most common usages is to have a default interceptor which logs and measures any access to the EJBs. Most of the people do not want to go to production with such feature, nevertheless they want to be able to trigger it should there be an unexpected serious issue. Having an external DD would allow production support to easily activate/deactivate such feature. If a new application has to be deployed then there is a whole process of building it, deploying it, etc. More than that many companies have formal procedures which do not allow a new EAR to be deployed without certain quality validations that can take up to days. Of course some will say- "just create a properties file, stick a boolean there, make your interceptor look at that boolean, are you are done!", but I do not like such approach, the interceptor will still be used all the time, it just does not produce any output.&lt;br /&gt;This time I promise I will be submit this idea as a proposal, as soon as I formalize it and there is a new EJB spec being written.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-9045409350173828846?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/9045409350173828846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=9045409350173828846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/9045409350173828846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/9045409350173828846'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/ejb4-one-whish-to-list.html' title='EJB4- One whish to the list'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5125963032734693211</id><published>2010-01-17T10:53:00.000-08:00</published><updated>2010-01-17T10:57:45.380-08:00</updated><title type='text'>Right to the Integrity of the Person</title><content type='html'>Article 3.1 of the Fundametal Rights of the EU states that "&lt;span style="font-style: italic;"&gt;Everyone has the right to respect for his or her physical and mental integrity&lt;/span&gt;". Where do we draw the line of what is mental integrity? How many of us are under such a professional pressure, where there is no respect whatsoever for the mental integrity? I think modern societies are far from respecting one's mental integrity.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5125963032734693211?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5125963032734693211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5125963032734693211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5125963032734693211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5125963032734693211'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/right-to-integrity-of-person.html' title='Right to the Integrity of the Person'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-170246591798063527</id><published>2010-01-17T09:45:00.001-08:00</published><updated>2010-01-17T09:58:27.923-08:00</updated><title type='text'>Charter of Fundamental Rights of the European Union</title><content type='html'>I was recently introduced to the Charter of Fundamental Rights of the European Union. I am ashamed to admit it, I should have gotten acquainted with this 2 years ago, when the text was written, but it is better late than never.&lt;br /&gt;It is interesting to go through each of one of these rights, and to note how some of them are clearly forgotten in some working environments. Lets for example start with the first one:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Human dignity is inviolable. It must be respected and protected.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;If we &lt;/span&gt;&lt;span&gt;go to some of the poorest countries in the EU, we find plenty of people which have to work in the most unthinkable environments, forced to work in conditions which go beyond human dignity. So plenty of work to do in order to enforce right 1 at the work place! &lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-170246591798063527?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/170246591798063527/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=170246591798063527' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/170246591798063527'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/170246591798063527'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/charter-of-fundamental-rights-of.html' title='Charter of Fundamental Rights of the European Union'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1752997255803822717</id><published>2010-01-08T16:25:00.000-08:00</published><updated>2010-01-08T16:31:25.042-08:00</updated><title type='text'>EJB and Dynamic Dependency Injection</title><content type='html'>It is unquestionable that the more we get the more we want. DI brought EJBs into a whole new world. But what about support for DDI? Why do I need to say that I depend on a certain EJB with a certain name? I rather say I depend on an interface and during runtime I will give the name of the EJB implementing such interface. This would allow us to define the dependency depending on runtime conditions.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1752997255803822717?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1752997255803822717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1752997255803822717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1752997255803822717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1752997255803822717'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/ejb-and-dynamic-dependency-injection.html' title='EJB and Dynamic Dependency Injection'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8396335543827698629</id><published>2010-01-06T13:25:00.000-08:00</published><updated>2010-01-06T13:27:51.513-08:00</updated><title type='text'>Nativity scene with a military vehicle</title><content type='html'>Interesting photo I took in Portugal :-)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6AibgWUYSmw/S0UAQNnKNdI/AAAAAAAAAF0/cQ_8Zj62O_Q/s1600-h/Fotos-0016.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://2.bp.blogspot.com/_6AibgWUYSmw/S0UAQNnKNdI/AAAAAAAAAF0/cQ_8Zj62O_Q/s400/Fotos-0016.jpg" alt="" id="BLOGGER_PHOTO_ID_5423741604769445330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8396335543827698629?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8396335543827698629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8396335543827698629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8396335543827698629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8396335543827698629'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/nativity-scene-with-military-vehicle.html' title='Nativity scene with a military vehicle'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6AibgWUYSmw/S0UAQNnKNdI/AAAAAAAAAF0/cQ_8Zj62O_Q/s72-c/Fotos-0016.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-292798630314729512</id><published>2010-01-05T12:20:00.000-08:00</published><updated>2010-01-05T12:33:07.940-08:00</updated><title type='text'>Fighting discrimination in Lux- a joke</title><content type='html'>Every now and then I get speechless with how ridiculous certain initiatives are. One year ago Luxembourg got an institution intended to promote equality in terms of treatment. So far seems like a good initiative. The interesting part is that such institution's exclusive goal is to fight discrimination based on race, religion or sexual orientation. Should someone gets discriminated because of its nationality, age, physical appearance, etc then do not expect them to help you. So it seems that it is bad if you get discriminated due to your race or religion, but it is ok if you get segregated because of your age, nationality or any other criteria which does not fit their concept of discrimination. Luxembourg is quite uniform in terms of race and religion so I can only understand this as a marketing initiative to look good, it does not go where the discrimination really exists. How ridiculous can it be??? Simply a joke!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-292798630314729512?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/292798630314729512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=292798630314729512' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/292798630314729512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/292798630314729512'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2010/01/fighting-discrimination-in-lux-joke.html' title='Fighting discrimination in Lux- a joke'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6356716075365162929</id><published>2009-12-22T02:58:00.001-08:00</published><updated>2009-12-22T03:08:04.267-08:00</updated><title type='text'>Merry Christmas Everyone!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6AibgWUYSmw/SzCoj9JhL4I/AAAAAAAAAFs/F2FYY6pqAoE/s1600-h/merry_christmas_1024.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_6AibgWUYSmw/SzCoj9JhL4I/AAAAAAAAAFs/F2FYY6pqAoE/s400/merry_christmas_1024.jpg" alt="" id="BLOGGER_PHOTO_ID_5418015687390080898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_6AibgWUYSmw/SzCmW13TgaI/AAAAAAAAAFk/qWXY6LSJXTA/s1600-h/Animated_Christmas_HouseSus.gif"&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6356716075365162929?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6356716075365162929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6356716075365162929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6356716075365162929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6356716075365162929'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/merry-christmas-everyone.html' title='Merry Christmas Everyone!'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6AibgWUYSmw/SzCoj9JhL4I/AAAAAAAAAFs/F2FYY6pqAoE/s72-c/merry_christmas_1024.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-179717957474436175</id><published>2009-12-21T12:39:00.000-08:00</published><updated>2009-12-21T12:42:20.922-08:00</updated><title type='text'>Spring 3.0 GA has arrived</title><content type='html'>Spring 3.0 has made it to GA. Can be downloaded &lt;a href="http://www.springsource.com/download"&gt;here&lt;/a&gt;.&lt;br /&gt;I am looking forward to start exploring it.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6AibgWUYSmw/Sy_dlLYkk4I/AAAAAAAAAFc/Iib6FDF7qe4/s1600-h/Fotos-0002.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 400px;" src="http://2.bp.blogspot.com/_6AibgWUYSmw/Sy_dlLYkk4I/AAAAAAAAAFc/Iib6FDF7qe4/s400/Fotos-0002.jpg" alt="" id="BLOGGER_PHOTO_ID_5417792507530744706" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-179717957474436175?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/179717957474436175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=179717957474436175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/179717957474436175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/179717957474436175'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/spring-30-ga-has-arrived.html' title='Spring 3.0 GA has arrived'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6AibgWUYSmw/Sy_dlLYkk4I/AAAAAAAAAFc/Iib6FDF7qe4/s72-c/Fotos-0002.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4516746297765109567</id><published>2009-12-20T09:34:00.000-08:00</published><updated>2009-12-20T09:36:52.672-08:00</updated><title type='text'>The snow does not stop</title><content type='html'>Definitely a white Christmas, the snow does not stop.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/Sy5gdBKr9yI/AAAAAAAAAE4/r1-AS0owRoI/s1600-h/Fotos-0011.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/Sy5gdBKr9yI/AAAAAAAAAE4/r1-AS0owRoI/s400/Fotos-0011.jpg" alt="" id="BLOGGER_PHOTO_ID_5417373453419018018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/Sy5gktD9O1I/AAAAAAAAAFA/HadMJCvaWig/s1600-h/Fotos-0013.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/Sy5gktD9O1I/AAAAAAAAAFA/HadMJCvaWig/s400/Fotos-0013.jpg" alt="" id="BLOGGER_PHOTO_ID_5417373585461033810" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4516746297765109567?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4516746297765109567/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4516746297765109567' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4516746297765109567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4516746297765109567'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/snow-does-not-stop.html' title='The snow does not stop'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6AibgWUYSmw/Sy5gdBKr9yI/AAAAAAAAAE4/r1-AS0owRoI/s72-c/Fotos-0011.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7315423644927593778</id><published>2009-12-20T05:17:00.000-08:00</published><updated>2009-12-20T05:25:08.745-08:00</updated><title type='text'>Want to make good money with Open-Source?</title><content type='html'>I cannot resist publishing this photo, which I took during Devoxx. They have several white boards where attendees are encouraged to opine about various matters. The photo is not very clear, but one of the boards was about the Best Open-Source Business Model. Several options were given like GPL, AGPL, etc. Someone added a "Mary Rod Johnson" alternative :-) So for those of you which are looking to make good money in the Open-Source world, you have now a new alternative!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6AibgWUYSmw/Sy4lo-ybhKI/AAAAAAAAAEw/X9cHYcJE8e4/s1600-h/Fotos-0006.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_6AibgWUYSmw/Sy4lo-ybhKI/AAAAAAAAAEw/X9cHYcJE8e4/s400/Fotos-0006.jpg" alt="" id="BLOGGER_PHOTO_ID_5417308787752797346" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7315423644927593778?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7315423644927593778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7315423644927593778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7315423644927593778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7315423644927593778'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/want-to-make-good-money-with-open.html' title='Want to make good money with Open-Source?'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_6AibgWUYSmw/Sy4lo-ybhKI/AAAAAAAAAEw/X9cHYcJE8e4/s72-c/Fotos-0006.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1019451075305065950</id><published>2009-12-20T03:57:00.002-08:00</published><updated>2009-12-20T05:16:59.308-08:00</updated><title type='text'>White Christmas in Luxembourg</title><content type='html'>Luxembourg is all dressed in white, waiting for Christmas to arrive.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/Sy4joicBeKI/AAAAAAAAAEo/BdfCPaxaXJw/s1600-h/Fotos-0008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/Sy4joicBeKI/AAAAAAAAAEo/BdfCPaxaXJw/s400/Fotos-0008.jpg" alt="" id="BLOGGER_PHOTO_ID_5417306581119367330" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1019451075305065950?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1019451075305065950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1019451075305065950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1019451075305065950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1019451075305065950'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/white-christmas-in-luxembourg.html' title='White Christmas in Luxembourg'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6AibgWUYSmw/Sy4joicBeKI/AAAAAAAAAEo/BdfCPaxaXJw/s72-c/Fotos-0008.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-587464962396720597</id><published>2009-12-19T14:56:00.000-08:00</published><updated>2009-12-19T15:07:32.030-08:00</updated><title type='text'>If I was a Buffett's disciple I would buy Amazon</title><content type='html'>Due to the busyness of the season, any quick visit to the Post Office becomes a prolonged wait, due to the endless queues. While waiting I distracted myself by looking at people collecting deliveries. I was very surprised with the amount of deliveries coming from Amazon, something like 20%. I know that Amazon is widely used by most of the people, but I would not expect them to have such an impressive weight. Some people were collecting huge deliveries, probably most of their Christmas presents.&lt;br /&gt;If I followed Warren Buffett's advice and would invest in businesses whose success I observe on my normal life, I would definitely buy Amazon. I won't, but we can always make the exercise- the share price is 128$, lets see how it evolves in the next months.&lt;br /&gt;And by the way, here goes a though question- imagine where my delivery was coming from?  ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-587464962396720597?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/587464962396720597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=587464962396720597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/587464962396720597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/587464962396720597'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/if-i-was-buffetts-disciple-i-would-buy.html' title='If I was a Buffett&apos;s disciple I would buy Amazon'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7470915707006353636</id><published>2009-12-18T14:03:00.001-08:00</published><updated>2009-12-18T14:03:55.467-08:00</updated><title type='text'>Dexter- Fourth Season</title><content type='html'>I just finished watching the fourth season of Dexter, it is excellent, probably the best one. It is a must!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7470915707006353636?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7470915707006353636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7470915707006353636' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7470915707006353636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7470915707006353636'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/dexter-fourth-season.html' title='Dexter- Fourth Season'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6828643131916584859</id><published>2009-12-16T12:26:00.000-08:00</published><updated>2009-12-16T12:32:29.181-08:00</updated><title type='text'>JEE Humble developers</title><content type='html'>Look at the following stats concerning the Devoxx attendees- &lt;a href="http://www.devoxx.com/display/DV09/2009/12/15/Senior+JEE+Developers+at+Devoxx%2709"&gt;http://www.devoxx.com/display/DV09/2009/12/15/Senior+JEE+Developers+at+Devoxx%2709&lt;/a&gt;&lt;br /&gt;A quick look around the rooms would show that such stats are not realistic, people were in average quite young, for sure there were not 600 seniors there. Nowadays the career of a developer is Junior (for 6 months) and then immediately Senior, Consultant, Architect, Expert or some other fancy name. Titles in IT are worthless because everyone abuses them. Lets be a bit more humble!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6828643131916584859?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6828643131916584859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6828643131916584859' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6828643131916584859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6828643131916584859'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/jee-humble-developers.html' title='JEE Humble developers'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1345250750230228462</id><published>2009-12-15T13:56:00.000-08:00</published><updated>2009-12-15T14:00:21.817-08:00</updated><title type='text'>Java EE 6 is Final!!!</title><content type='html'>I know, I am 5 days late, but I couldn't avoid this matter. After few delays Java EE 6 became final! I have to say that I have high expectations, Java in the Enterprise is getting better and better, I expect that the EE adoption will keep having a solid increase. And of course, a special word for EJB 3.1 and all the interesting features it introduces, it could easily be EJB 4 considering all the enhancements.&lt;br /&gt;A big thank you to all the people that worked hard on this, well done!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1345250750230228462?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1345250750230228462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1345250750230228462' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1345250750230228462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1345250750230228462'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/12/java-ee-6-is-final.html' title='Java EE 6 is Final!!!'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8093795072775564182</id><published>2009-11-20T12:52:00.000-08:00</published><updated>2009-11-20T13:10:44.729-08:00</updated><title type='text'>Devoxx- stupid remarks</title><content type='html'>So much was written about Devoxx that I have not much more to add.&lt;br /&gt;So here goes a bit of noise....&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Has someone noticed that during the presentation "Project Coin" Joe Darcy looked the twin brother of José Mourinho??? If you look at him directly the similarities are not many, but when looking at him on the screen he was really similar. I guess some strange angle on the camera.&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/SwcDf49DgYI/AAAAAAAAAEQ/9hQ9phYL5yM/s1600/images.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 104px; height: 119px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/SwcDf49DgYI/AAAAAAAAAEQ/9hQ9phYL5yM/s400/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5406293724080865666" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;There was an attendee which was really similar to Andy, from Little Britain. I was expecting to listen the typical "Yes, I know!" but I did not succeeded.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/SwcESRq9DDI/AAAAAAAAAEY/yV60LeI_c4s/s1600/ml_26.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 201px; height: 201px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/SwcESRq9DDI/AAAAAAAAAEY/yV60LeI_c4s/s400/ml_26.jpg" alt="" id="BLOGGER_PHOTO_ID_5406294589709290546" border="0" /&gt;&lt;/a&gt;On Wednesday evening, while most of us where waiting in the queue for a hand full of belgian fries, one of the rock stars from Sun applied an optimization algorithm and cut the line. I won't say his name :-)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8093795072775564182?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8093795072775564182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8093795072775564182' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8093795072775564182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8093795072775564182'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/11/devoxx-stupid-remarks.html' title='Devoxx- stupid remarks'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_6AibgWUYSmw/SwcDf49DgYI/AAAAAAAAAEQ/9hQ9phYL5yM/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1859124040282440516</id><published>2009-11-19T14:00:00.001-08:00</published><updated>2009-11-19T14:02:31.371-08:00</updated><title type='text'>Plenty of news</title><content type='html'>Well, it seems that in 2009 Devoxx was the place to be to get the hot news. It seems that we will be getting closures in Java 7 after all. JDK 7 is supposed to be final in September of 2010. Also, there was a commitment to have Java EE 6 final on the 10 of December. Not bad!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1859124040282440516?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1859124040282440516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1859124040282440516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1859124040282440516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1859124040282440516'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/11/plenty-of-news.html' title='Plenty of news'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8835478823882318678</id><published>2009-11-18T23:28:00.000-08:00</published><updated>2009-11-18T23:31:24.240-08:00</updated><title type='text'>Devoxx Conference- 1st day</title><content type='html'>Well, so far so good, Devoxx keeps being as good as it used to. You can feel some signs of the crisis (less atendees, less sponsors, etc) but the quality is still quite high.&lt;br /&gt;&lt;br /&gt;The key note speach was good. Parleys.com is getting bigger and bigger (and 49 euros for all Devoxx presentations is a bargain), WebLogic DM sounds promising, Java EE 6 rocks, and Adobe had an excellent presentation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8835478823882318678?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8835478823882318678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8835478823882318678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8835478823882318678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8835478823882318678'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/11/devoxx-conference-1st-day.html' title='Devoxx Conference- 1st day'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7876025358165962586</id><published>2009-11-01T12:40:00.001-08:00</published><updated>2009-11-01T12:40:32.047-08:00</updated><title type='text'>Devoxx</title><content type='html'>Devoxx is approaching, so do not forget to purchase your entrance. See you there!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7876025358165962586?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7876025358165962586/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7876025358165962586' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7876025358165962586'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7876025358165962586'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/11/devoxx.html' title='Devoxx'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2909017472906830511</id><published>2009-10-10T15:33:00.000-07:00</published><updated>2009-10-10T15:35:35.792-07:00</updated><title type='text'>World Cup Qualifying- Miracles happen</title><content type='html'>After having a very poor qualifying it seems that Portugal can still make it, it just has to win the next game and then the playoff. This is the proof that miracles happen, because with such a low quality team being able to go to South Africa is nothing more than a miracle.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2909017472906830511?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2909017472906830511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2909017472906830511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2909017472906830511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2909017472906830511'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/10/world-cup-qualifying-miracles-happen.html' title='World Cup Qualifying- Miracles happen'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8367001723710151430</id><published>2009-10-08T13:00:00.000-07:00</published><updated>2009-10-08T13:10:12.825-07:00</updated><title type='text'>Java Rocks!</title><content type='html'>I am using Java for so long that sometimes I forget how lucky I am and how powerful it is. We tend to forget about the HUGE advantage of writing once running everywhere. Most of the times companies are tight to a certain hardware/operating system stack and they are unlikely to change, so the fact that they can change at a very low cost in terms of code migration is normally forgotten.&lt;br /&gt;&lt;br /&gt;We are now migrating some systems from Solaris to Linux and it is incomparable the cost of migrating the Java systems against the cost of migrating the C++ ones. I know this post sounds like something one would write 12 years ago, nevertheless I can only say "Java Rocks!!!".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8367001723710151430?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8367001723710151430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8367001723710151430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8367001723710151430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8367001723710151430'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/10/java-rocks.html' title='Java Rocks!'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7418776510252826203</id><published>2009-08-30T12:03:00.000-07:00</published><updated>2009-08-30T12:07:17.245-07:00</updated><title type='text'>JDK 7- The Final 7</title><content type='html'>&lt;pre style="white-space: pre-wrap;"&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;The final Project Coin changes accepted for inclusion in JDK 7 are:&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;ul&gt;&lt;li&gt;Strings in switch&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Automatic Resource Management&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Improved Type Inference for Generic Instance Creation (diamond)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Simplified Varargs Method Invocation&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;An omnibus proposal for better integral literals&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Language support for Collections&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;pre style="white-space: pre-wrap;"&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;Language support for JSR 292&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7418776510252826203?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7418776510252826203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7418776510252826203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7418776510252826203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7418776510252826203'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/08/jdk-7-final-7.html' title='JDK 7- The Final 7'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4285338995579057996</id><published>2009-08-22T07:54:00.000-07:00</published><updated>2009-08-22T08:02:52.136-07:00</updated><title type='text'>Some stats about the Java job market</title><content type='html'>I was playing with one of the most popular web sites for job advertisements and I got some interesting results. All the results presented below are related to jobs posted in the last 7 days and located in Europe&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;344 jobs for Spring, 30 for EJB- I have been working with EJBs in the last 8 years and therefore I can only conclude that I have definitely choosen the wrong side of the fence :-(&lt;/li&gt;&lt;li&gt;100 jobs for WebLogic, 129 for WebSphere, 66 for JBoss and 7 for GlassFish-For WebSphere I was not able to filter the ones for WebSphere MQ so I tend to believe that WebLogic and WebSphere are head to head, and most lileky WebLogic is even leading.&lt;/li&gt;&lt;li&gt;1124 jobs for Java, 1115 for C#- We have a good head to head here.&lt;/li&gt;&lt;li&gt;367 jobs for Java EE- not much considering an overall of 1124 jobs for Java. That means that Java in the Enterprise is far from being Enterprise Java.&lt;/li&gt;&lt;li&gt;1587 for .Net, 1161 for Java + Phyton + Ruby + Groovy + Scala- .Net rules!&lt;/li&gt;&lt;li&gt;2 for Scala, 0 for Groovy, 49 for Ruby, 0 for Phyton- Besides all the noise, does not seem that the alternative languages that run on the JVM put food in many people's tables :-)&lt;/li&gt;&lt;li&gt;1062 for Oracle, 92 for DB2, 1117 for SQLServer, 164 for Sybase- I was astonished with the results I got for SQLServer.&lt;/li&gt;&lt;/ul&gt;Of course these numbers are based on simple searches and therefore must not be considered to be very solid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4285338995579057996?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4285338995579057996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4285338995579057996' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4285338995579057996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4285338995579057996'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/08/some-stats-about-java-job-market.html' title='Some stats about the Java job market'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-985535207391044346</id><published>2009-08-22T03:04:00.000-07:00</published><updated>2009-08-22T03:19:01.605-07:00</updated><title type='text'>Five in Five</title><content type='html'>This week I beat my own personal record by being able to get five parking tickets in five days. The Luxembourgish authorities put in place a system which is an efficient way to get additional revenue to the town hall. Each resident is entitled to a parking stamp, allowing to park the car on the respective neighborhood. Such stamp has big fat letters indicating the area and the expiration month. Nevertheless it has in very small letters, 20 times smaller than the expiration month, a specific day when the stamp expires. It goes without saying that I was fully convinced that my stamp would go until end of August, when it reality it was expiring on the 15. To make it worse they have send me a letter with the new stamp, which has arrived on the 14. Considering that August is a month when a lot of people are on holidays, I do not think that sending the new stamps one day before the current stamps expiring is a well intentioned idea, because there are many people away which will not be able to run to their cars to exchange stamps.&lt;br /&gt;Additionally, there is no tolerance from the authorities, even during holiday periods. They could at least give a week of tolerance.&lt;br /&gt;They have tight checks on the parking- every day they verify it. Since I already lived in different places I observed that such checks are more regular in neighborhoods with smaller concentrations of voters.&lt;br /&gt;Long story short, I payed the tickets because indeed I broke the law. Nevertheless I cannot stop thinking that the system is not well intentioned...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-985535207391044346?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/985535207391044346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=985535207391044346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/985535207391044346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/985535207391044346'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/08/five-in-five.html' title='Five in Five'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7697706651596931281</id><published>2009-08-11T13:53:00.000-07:00</published><updated>2009-08-11T13:57:07.102-07:00</updated><title type='text'>VMware acquires SpringSource</title><content type='html'>It seems VMware is&lt;a href="http://www.vmware.com/company/news/releases/springsource.html"&gt; going to pay&lt;/a&gt; $362 millions for SpringSource. Who said that Open Source does not make anyone rich???&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7697706651596931281?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7697706651596931281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7697706651596931281' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7697706651596931281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7697706651596931281'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/08/vmware-acquires-springsource.html' title='VMware acquires SpringSource'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5457969865672476743</id><published>2009-08-04T02:46:00.000-07:00</published><updated>2009-08-04T03:53:05.878-07:00</updated><title type='text'>Java- Still the Most PopularProgramming Language</title><content type='html'>Java is still solid as number 1 programming language. C and C++ are resisting quite well. Scala is #32, I was expecting a bit more. Complete info available &lt;a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5457969865672476743?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5457969865672476743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5457969865672476743' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5457969865672476743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5457969865672476743'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/08/java-still-most-popularprogramming.html' title='Java- Still the Most PopularProgramming Language'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7730337525845593301</id><published>2009-07-28T14:40:00.001-07:00</published><updated>2009-07-28T14:46:04.812-07:00</updated><title type='text'>Mixing languages</title><content type='html'>Every now and then I participate in projects where developers have to perform their work in several different languages in parallel. It is hard to find people (me included) which quickly switch from one language to the other and nevertheless develop high quality code in both. I bump quite often into such scenario with Java and PL/SQL. I normally end up with good PL/SQL and Java which is simply a wrapper around SQL, or good Java and some sort of strange PL/SQL with a Java flavor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7730337525845593301?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7730337525845593301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7730337525845593301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7730337525845593301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7730337525845593301'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/mixing-languages.html' title='Mixing languages'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6941314956554029598</id><published>2009-07-26T11:33:00.001-07:00</published><updated>2009-07-26T11:36:17.083-07:00</updated><title type='text'>Six Feet Under</title><content type='html'>I was finally able to watch the 5 seasons of Six Feet Under. It is definitely good stuff, some episodes have great quality. After watching it you start looking at death in a different way. There are some ups and downs, with good episodes and not so good episodes, but the overall impression is very good. The last episode is the best, the last sequence is just brilliant.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6941314956554029598?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6941314956554029598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6941314956554029598' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6941314956554029598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6941314956554029598'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/six-feet-under.html' title='Six Feet Under'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4008632973102491601</id><published>2009-07-25T12:33:00.000-07:00</published><updated>2009-07-25T12:50:06.890-07:00</updated><title type='text'>Analyze This and Analyze That</title><content type='html'>Yesterday I found both movies for 6€ each and I did not resist. I was always a big fan-seen the movies on the cinema and rented them a couple of times. Now I can watch them whenever I want. &lt;span style="font-style: italic;"&gt;You, you're good you!!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4008632973102491601?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4008632973102491601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4008632973102491601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4008632973102491601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4008632973102491601'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/analyze-this-and-analyze-that.html' title='Analyze This and Analyze That'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2655040845123647411</id><published>2009-07-24T14:50:00.000-07:00</published><updated>2009-07-24T15:00:52.317-07:00</updated><title type='text'>Leave the change or not... that is the question</title><content type='html'>I have a kind of philosophical question.... It makes sense more to Europeans than to Americans, because Americans are way much more generous than us when it comes to tipping. Lets say you go to a supermarket or to a store and the bill is X.97. You pay X+1. That means you have few cents as change. What to do with the change? If you take it the person in the supermarket looks at you with the look of "what a cheap guy, he does not even leave these few cents". If you leave them you get the look of "what do I care about these cents, leave a decent tip or take your cents away". Not easy...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2655040845123647411?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2655040845123647411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2655040845123647411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2655040845123647411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2655040845123647411'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/leave-chsnge-or-not-that-is-question.html' title='Leave the change or not... that is the question'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-671876691369285381</id><published>2009-07-23T12:33:00.000-07:00</published><updated>2009-07-23T12:43:23.674-07:00</updated><title type='text'>Oracle DB- Issue with the same table in different schema names</title><content type='html'>Oracle 10 (at least 10.2.0.2) has a bug which can cause serious issues. Lets assume a database has two schemas, X and Y, and both schemas contain the same table T. Lets assume that you connect to the database as X and execute an "insert into T ...". You can execute this query thousands of times and the insert will be done on X.T. Then suddenly one insert is done in Y.T and then all inserts go back to normal for few more thousands. That means that you can through all your test cycles without detecting the issue. You can even go for many weeks in production without any issues. And then one day....&lt;br /&gt;In order to avoid this issue prefix the tables with the schema name.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-671876691369285381?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/671876691369285381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=671876691369285381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/671876691369285381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/671876691369285381'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/oracle-db-issue-with-same-table-in.html' title='Oracle DB- Issue with the same table in different schema names'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8998565068833405239</id><published>2009-07-19T15:11:00.000-07:00</published><updated>2009-07-19T15:21:05.809-07:00</updated><title type='text'>“La communauté portugaise au Luxembourg” - Protest Letter</title><content type='html'>&lt;a href="http://www.samsa.lu/"&gt;&lt;/a&gt;In the past days a small movie has been broadcasted in all cinemas in Luxembourg. This movie is advertising a campaign for a documentary about the Portuguese families in Luxembourg. This movies lasts something like one minute. 95% of the time is spent on mocking the Portuguese people by taking some erroneous stereotypes and taking them to an extreme. Then in the end comes a guy and says something like "lets stop the clichês". The intention is good, criticizing the way people perceive the community, but it does not achieve its objective at all. Worse than that, it works the other way around- people laugh at the movie, and the message in the end is totally ignored. Therefore the movie makes the image of community even worse.&lt;br /&gt;Since this movie is constantly being advertised I decided to address the following complain letter to the institution responsible for advertising it.&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p style="margin-bottom: 0cm; font-style: italic;"&gt;Dear Sirs,&lt;/p&gt;  &lt;p style="margin-bottom: 0cm; font-style: italic;"&gt;I hereby address you respecting the movie advertising the campaign “La communauté portugaise au Luxembourg” that has been recently broadcasted across all cinemas in Luxembourg. To my understanding, you are responsible for the broadcasting of such movie and therefore I ought to pass you my position concerning its content.&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: italic;"&gt;The movie passes a ridiculous stereotype of the Portuguese family and does nothing more than damaging the image of the Portuguese community. It goes for most of the time with a satire of Portuguese people and it uses the last couple of seconds to challenge the stereotypes. Should you care to go to a cinema and observe the audience reaction you will immediately conclude that the movie does nothing more than to provide a good laugh  about the Portuguese community, deepening the erroneous stereotypes, and passing absolutely no message. Should you want to change the way people perceive a certain community then I do think that there are better ways to do it besides playing a movie which takes the stereotypes to an extreme.&lt;/p&gt; &lt;p style="margin-bottom: 0cm; font-style: italic;"&gt;I do want to believe that your intention is good, and that you intend to help the community achieving a better impression. I do also believe that you will realize that such movie is going into the opposite direction, and that you will take the necessary steps to stop its broadcasting.&lt;/p&gt;  &lt;p style="margin-bottom: 0cm; font-style: italic;"&gt;Yours sincerely&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8998565068833405239?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8998565068833405239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8998565068833405239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8998565068833405239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8998565068833405239'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/la-communaute-portugaise-au-luxembourg.html' title='“La communauté portugaise au Luxembourg” - Protest Letter'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8455358405031454288</id><published>2009-07-16T12:45:00.000-07:00</published><updated>2009-07-16T13:24:51.075-07:00</updated><title type='text'>Java Gotcha 7-Tricky Date Format</title><content type='html'>&lt;span style="font-family:georgia;"&gt;This Java Gotcha is related with the way &lt;span style="font-style: italic;"&gt;DateFormat &lt;/span&gt;implementations work, how they can be misleading, and how sometimes can cause issues which go uncovered until the code hits production.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;The method &lt;span style="font-style: italic;"&gt;parse &lt;/span&gt;of the &lt;span style="font-style: italic;"&gt;DateFormat &lt;/span&gt;parses a text and produces a date. The parsing is made according to the defined date format. The method throws a &lt;span style="font-style: italic;"&gt;ParseException &lt;/span&gt;whenever “the beginning of the specified string cannot be parsed”. This definition is very vague and gives room to many interpretations. Most of the developers assume that if the string passed as parameter does not match the defined format then a &lt;span style="font-style: italic;"&gt;ParseException &lt;/span&gt;is thrown. That is not always the case.   &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;One ought to be very careful with the &lt;span style="font-style: italic;"&gt;SimpleDateFormat&lt;/span&gt;. When faced with the code below most of the developers would assume that a &lt;span style="font-style: italic;"&gt; ParseException &lt;/span&gt;would be thrown.&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="font-weight: bold; font-family: courier new;font-family:courier new;font-size:85%;"  &gt;String date = &lt;span style="color: rgb(51, 51, 255);"&gt;"16-07-2009"&lt;/span&gt;;&lt;br /&gt;SimpleDateFormat sdf = new SimpleDateFormat(&lt;span style="color: rgb(51, 51, 255);"&gt;"ddmmyyyy"&lt;/span&gt;);&lt;br /&gt;try {&lt;br /&gt;Date d = sdf.parse(date);&lt;br /&gt;System.&lt;span style="color: rgb(51, 51, 255);"&gt;out&lt;/span&gt;.println(DateFormat.getDateInstance(DateFormat.&lt;span style="color: rgb(51, 51, 255);"&gt;MEDIUM&lt;/span&gt;,&lt;br /&gt;    new Locale(&lt;span style="color: rgb(51, 51, 255);"&gt;"US"&lt;/span&gt;)).format(d));&lt;br /&gt;} catch (ParseException pe) {&lt;br /&gt;System.&lt;span style="color: rgb(51, 51, 255);"&gt;out&lt;/span&gt;.println(&lt;span style="color: rgb(51, 51, 255);"&gt;"Exception: "&lt;/span&gt; + pe.getMessage());&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;When run, the code produces the following output: &lt;span style="font-style: italic;"&gt;"Jan 16, 0007"&lt;/span&gt;. Suprinsingly enough, there is no complain about the string not matching the expected format- the implementation simply goes ahead and tries its best to parse the text. This discrepancy would be easily identifiable but it gets trickyer if  "&lt;span style="font-style: italic;"&gt;yyyymmdd&lt;/span&gt;" is used, as the output would have the same year and a different month and day.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8455358405031454288?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8455358405031454288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8455358405031454288' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8455358405031454288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8455358405031454288'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/java-gotcha-7-tricky-date-format.html' title='Java Gotcha 7-Tricky Date Format'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-1105213465603681582</id><published>2009-07-12T13:51:00.000-07:00</published><updated>2009-07-12T13:56:23.975-07:00</updated><title type='text'>Java Gotcha 6-Overload that operator!</title><content type='html'>&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p lang="en-US"&gt;Java is not particularly strong concerning operator overloading, but it does support it for the operator '+'. We can use it both for mathematical addition or for string concatenation, depending on the context.&lt;/p&gt;&lt;p  lang="en-US" style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;val = 1 + 2;&lt;br /&gt;String txt = &lt;span style="color: rgb(0, 0, 153);"&gt;"1"&lt;/span&gt; + &lt;span style="color: rgb(0, 0, 153);"&gt;"2"&lt;/span&gt;;&lt;/span&gt;&lt;/p&gt;&lt;p lang="en-US"&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;/p&gt;&lt;p&gt;It gets more tricky whenever a numerical value is mixed with a string. But the rule is simple- a mathematical addition will be performed until a string is encountered as an operand. As soon as a string is found then both operands are converted into strings (if necessary) and a string concatenation is performed. The following examples illustrate the different combinations.&lt;/p&gt;&lt;p&gt;&lt;span style="color: rgb(0, 102, 0); font-family: courier new;font-size:85%;" &gt;//Performs addition and prints 3&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;System.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;out&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.println(1 + 2);&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-family: courier new;font-size:85%;" &gt;//Performs concatenation and prints 12&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;System.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;out&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.println(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;"1"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt; + &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;"2"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-family: courier new;font-size:85%;" &gt;//Performs addition until "4" is found and then concatenation, prints 645&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;System.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;out&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.println(1 + 2 + 3 + &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;"4"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt; + 5);&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0); font-family: courier new;font-size:85%;" &gt;//Performs concatenation and prints 12345&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;System.&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;out&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;.println(&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;"1"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt; + &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt;"2"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt; +&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153); font-family: courier new;font-size:85%;" &gt; "3"&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt; + 4 + 5);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-1105213465603681582?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/1105213465603681582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=1105213465603681582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1105213465603681582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/1105213465603681582'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/java-gotcha-6-overload-that-operator.html' title='Java Gotcha 6-Overload that operator!'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4635072692950930900</id><published>2009-07-12T11:51:00.000-07:00</published><updated>2009-07-12T11:55:15.153-07:00</updated><title type='text'>World Press Photo 2009</title><content type='html'>Today I went to visit the &lt;a href="http://www.worldpressphoto.org/"&gt;World Press Photo&lt;/a&gt; 2009, which is being exhibited in Luxembourg during the month of July. It is always an interesting experience, but in my humble opinion I believe this is not its strongest year.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4635072692950930900?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4635072692950930900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4635072692950930900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4635072692950930900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4635072692950930900'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/world-press-photo-2009.html' title='World Press Photo 2009'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8533285285227820097</id><published>2009-07-12T00:59:00.000-07:00</published><updated>2009-07-12T01:02:06.580-07:00</updated><title type='text'>Whatever Works- II</title><content type='html'>I was finally able to watch the movie, and I really liked. One of my favorite movies of 2009. It is very funny and it has a strong message. Woody Allen has finally became a little bit more optimistic. And the role of Boris fits perfectly into Larry David. Actually, I could not think about anyone else that could do it better. It is a must see!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8533285285227820097?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8533285285227820097/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8533285285227820097' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8533285285227820097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8533285285227820097'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/whatever-works-ii.html' title='Whatever Works- II'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5735246672984954069</id><published>2009-07-06T11:27:00.000-07:00</published><updated>2009-07-06T11:29:48.875-07:00</updated><title type='text'>Whatever Works</title><content type='html'>The movie &lt;a href="http://www.imdb.com/title/tt1178663/"&gt;Whatever Works&lt;/a&gt; has been recently released. I haven't seen it yet but I definitely want to. I am looking forward to see the result of mixing Woody Allen and Larry David. Sounds promising...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5735246672984954069?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5735246672984954069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5735246672984954069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5735246672984954069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5735246672984954069'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/07/whatever-works.html' title='Whatever Works'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-163727610428387490</id><published>2009-06-30T11:15:00.000-07:00</published><updated>2009-06-30T11:17:20.985-07:00</updated><title type='text'>Real World Java EE Patterns</title><content type='html'>&lt;a href="http://press.adam-bien.com/"&gt;This&lt;/a&gt; is an interesting book. I already got my copy and I am enjoying it quite a lot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-163727610428387490?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/163727610428387490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=163727610428387490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/163727610428387490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/163727610428387490'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/real-world-java-ee-patterns.html' title='Real World Java EE Patterns'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4032439884220344722</id><published>2009-06-29T13:36:00.000-07:00</published><updated>2009-06-29T13:46:37.733-07:00</updated><title type='text'>JavaFX and Open Office</title><content type='html'>During JavaOne Larry Ellison has been very supportive of JavaFX. That was a tremendous sign and gave early adopters the necessary confidence to go forward with their projects. The fact that Larry has mentioned the porting of Open Office into JavaFX was also a major strike. It shows that JavaFX will be more and more suitable for enterprise applications, and even though it still has a long way ahead, I strongly believe it will become a major player in the near future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4032439884220344722?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4032439884220344722/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4032439884220344722' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4032439884220344722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4032439884220344722'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/javafx-and-open-office.html' title='JavaFX and Open Office'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2814946153663396175</id><published>2009-06-23T12:47:00.000-07:00</published><updated>2009-06-23T12:53:16.356-07:00</updated><title type='text'>To bind or not to bind</title><content type='html'>Assume that you have a table which is partitioned by a column X. Even though not solid as gravity, most of the times the rule is that your SQL should hard-code any values affecting X instead of using bind variables.&lt;br /&gt;Therefore&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;&lt;span style="font-family: arial;"&gt;select * from Table where X = 1&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;should be used instead of&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;select * from Table where X = :var&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This way the database engine is able to calculate a better execution plan when compared to using bind variables.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2814946153663396175?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2814946153663396175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2814946153663396175' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2814946153663396175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2814946153663396175'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/to-bind-or-not-to-bind.html' title='To bind or not to bind'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5326158969235391988</id><published>2009-06-14T12:39:00.000-07:00</published><updated>2009-06-14T13:08:55.312-07:00</updated><title type='text'>SQL Tuning- how and who</title><content type='html'>SQL Tuning is an indispensable step during application development. But who should do it?&lt;br /&gt;The developer knows the functionality around the application and around the queries, and therefore knows how to re-write a query making it more performant but keeping the same result. The developer knows well SQL and will be able to fully use a range of tuning tools which will make the query faster. But most of the times the developer will look at his query as the center of the world. He will make it as fast as he can, ignoring any side effect on any other processes or queries running on the same database. The developer will be happy to tune his query even if it brings the database on its knees. He will proudly advertise the result of his work not caring about the fact that his gain cause higher losses on other processes. &lt;br /&gt;The DBA has a more wider view on the database and can look to the query from a different perspective. He is capable of measuring the consequences of the tuning on the database and decide how far the process can go. He has a better knowledge of the database and can better improve the query. In the other hand, he normally knows little about the functionality or the business priorities, and therefore he will judge the tuning simply from the technical perspective. Maybe the query must take a big part of resources because it implements a business functionality which is by far a priority.&lt;br /&gt;So the conclusion is that SQL tuning is a process where developers and DBAs must work closely in order to maximize performance, taking is consideration the business priorities, and measuring the impact of the process on the system as whole.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5326158969235391988?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5326158969235391988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5326158969235391988' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5326158969235391988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5326158969235391988'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/sql-tuning-how-and-who.html' title='SQL Tuning- how and who'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7715204862237776584</id><published>2009-06-13T14:52:00.000-07:00</published><updated>2009-06-13T15:04:54.040-07:00</updated><title type='text'>UNION versus UNION ALL</title><content type='html'>Whenever possible use UNION ALL instead of UNION. An UNION forces a sorting of both tables in order to identify duplicates. With big volumes this can introduce a considerable overhead on the query. Therefore if your tables do not contain duplicates, or if you do not care about having duplicates in the final result, then use UNION ALL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7715204862237776584?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7715204862237776584/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7715204862237776584' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7715204862237776584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7715204862237776584'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/union-versus-union-all.html' title='UNION versus UNION ALL'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8826667353356807239</id><published>2009-06-13T14:44:00.000-07:00</published><updated>2009-06-13T14:49:31.817-07:00</updated><title type='text'>One more "go live"...</title><content type='html'>And another "go live" took place, sixteen hours of work straight. This one was quite ok.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8826667353356807239?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8826667353356807239/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8826667353356807239' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8826667353356807239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8826667353356807239'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/one-more-go-live.html' title='One more &quot;go live&quot;...'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-3790671055968737139</id><published>2009-06-09T13:50:00.000-07:00</published><updated>2009-06-09T13:51:19.449-07:00</updated><title type='text'>Happy Birthday, Mr. Unix!</title><content type='html'>I forgot that Mr. Unix is now 40 years old. Long live Unix!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-3790671055968737139?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/3790671055968737139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=3790671055968737139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3790671055968737139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3790671055968737139'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/happy-birthday-mr-unix.html' title='Happy Birthday, Mr. Unix!'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-3963848858935496652</id><published>2009-06-09T13:36:00.000-07:00</published><updated>2009-06-09T13:42:45.500-07:00</updated><title type='text'>I miss Prolog....</title><content type='html'>From all languages I have used during my academic and professional life, Prolog was always one of my favorites. Unfortunately I cannot use it on my day-by-day and therefore I feel Prolog-sick every now and then. I keep telling myself that one of these days I will take a couple of days and dedicate them to play a bit with Prolog. Maybe soon. I miss some backtracking...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-3963848858935496652?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/3963848858935496652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=3963848858935496652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3963848858935496652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3963848858935496652'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/i-miss-prolog.html' title='I miss Prolog....'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5171140501646105675</id><published>2009-06-09T13:22:00.000-07:00</published><updated>2009-06-09T13:31:00.376-07:00</updated><title type='text'>Java Gotcha 5- Overriding flavors</title><content type='html'>&lt;span style="font-family: georgia;"&gt;Keep in mind that with Java 5 it is possible that the overriding method has a different return type than the overridden method. The only rule is that the return type of the overriding method is a subtype of the return type of the overridden method. Therefore the following code became valid with Java 5:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;class &lt;/span&gt;A {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   &lt;span style="color: rgb(153, 51, 153);"&gt;public &lt;/span&gt;A m() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       &lt;span style="color: rgb(153, 51, 153);"&gt;return new &lt;/span&gt;A();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;class &lt;/span&gt;B &lt;span style="color: rgb(153, 51, 153);"&gt;extends &lt;/span&gt;A {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   &lt;span style="color: rgb(153, 51, 153);"&gt;public &lt;/span&gt;B m() {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       &lt;span style="color: rgb(153, 51, 153);"&gt;return new &lt;/span&gt;B();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;   }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5171140501646105675?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5171140501646105675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5171140501646105675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5171140501646105675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5171140501646105675'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/java-gotcha-5-overriding-flavors.html' title='Java Gotcha 5- Overriding flavors'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5757182399090084195</id><published>2009-06-02T13:20:00.000-07:00</published><updated>2009-06-02T13:22:21.599-07:00</updated><title type='text'>JavaOne</title><content type='html'>Time flies, and one more JavaOne has arrived. For those of you in the sunny California, enjoy it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5757182399090084195?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5757182399090084195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5757182399090084195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5757182399090084195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5757182399090084195'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/javaone.html' title='JavaOne'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5780812451142920204</id><published>2009-06-01T13:40:00.000-07:00</published><updated>2009-06-01T13:55:31.516-07:00</updated><title type='text'>Java Gotcha 6- Mutable constants</title><content type='html'>&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p&gt;&lt;span lang="en-US"&gt;Most of the developers assume that whenever the &lt;/span&gt;&lt;span lang="en-US"&gt;&lt;i&gt;final&lt;/i&gt;&lt;/span&gt;&lt;span lang="en-US"&gt; keyword is used in a variable it indicates a constant, that is, a variable which gets assigned with an immutable value. That is not entirely correct, the &lt;/span&gt;&lt;span lang="en-US"&gt;&lt;i&gt;final&lt;/i&gt;&lt;/span&gt;&lt;span lang="en-US"&gt; keyword, whenever applied to a variable, indicates that the variable can only get one value being assigned once.&lt;/span&gt;&lt;/p&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p style="margin-bottom: 0cm;" align="left" lang="zxx"&gt; &lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public class&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;b&gt; MyClass {&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;final&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;myVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;myOtherVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; = getMyVar();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;private&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;andAnotherVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; MyClass() {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;myVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; = 10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;andAnotherVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; = getMyVar();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; getMyVar() {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;myVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; getMyOtherVar() {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;myOtherVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;int&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; getAndAnotherVar() {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;return&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;andAnotherVar&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;	&lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;public&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;static&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;void&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; main(String args[]) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		MyClass mc = &lt;/span&gt;&lt;span style="color: rgb(127, 0, 85);"&gt;&lt;b&gt;new&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; MyClass();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;out&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.println(mc.getMyVar());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;out&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.println(mc.getMyOtherVar());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;		System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 192);"&gt;&lt;i&gt;out&lt;/i&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.println(mc.getAndAnotherVar());&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;	}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;" align="left"&gt;&lt;span style="font-family:Courier New,monospace;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style=";font-family:georgia;font-size:100%;"  &gt;The previous code will print the sequence 10 0 10. Therefore, while dealing with final variables, we must distinguish the ones which have a value assigned at compile time, which work as constants, from the ones which get their values at runtime.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5780812451142920204?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5780812451142920204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5780812451142920204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5780812451142920204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5780812451142920204'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/06/java-gotcha-6-mutable-constants.html' title='Java Gotcha 6- Mutable constants'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-716600468600084602</id><published>2009-05-25T13:54:00.000-07:00</published><updated>2009-05-25T14:02:40.570-07:00</updated><title type='text'>Java Gotcha 5- Varargs and Arrays, Mutatis Mutandis</title><content type='html'>The variable arguments feature introduced a powerful concept which has given a hand to developers  in order to simplify code. Nevertheless, behind the scenes the varargs are nothing more nothing less than an array.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;public void&lt;/span&gt; m1(&lt;span style="color: rgb(153, 51, 153);"&gt;int..&lt;/span&gt;. myInts) { ... }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;m1(1, 2, 3);&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: georgia;font-size:100%;" &gt;The previous code gets translated by the compiler into something like: &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;int[]&lt;/span&gt; ints = {1, 2, 3};&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;m1(ints);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Carefull with empty invocations, they correspond to passing a null as parameter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;m1();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;=&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;int[] &lt;/span&gt;ints = &lt;span style="color: rgb(153, 51, 153);"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;m1(ints);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;And of course, the following will cause a compilation error, as they are equivalents:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;public void&lt;/span&gt; m1(&lt;span style="color: rgb(153, 51, 153);"&gt;int&lt;/span&gt;[] myInts) { ...    }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;public void &lt;/span&gt;m1(&lt;span style="color: rgb(153, 51, 153);"&gt;int...&lt;/span&gt; myInts) { ...    }&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-716600468600084602?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/716600468600084602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=716600468600084602' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/716600468600084602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/716600468600084602'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/java-gotcha-5-varargs-and-arrays.html' title='Java Gotcha 5- Varargs and Arrays, Mutatis Mutandis'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4459809220361031396</id><published>2009-05-23T02:36:00.000-07:00</published><updated>2009-05-23T02:58:04.609-07:00</updated><title type='text'>Java Gotcha 4- Look mom, no exception!</title><content type='html'>&lt;span style="font-family:georgia;"&gt;This one is very simple, but it catches some experienced Java developers by surprise. Lets look at the following code:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;A myA = &lt;span style="color: rgb(153, 51, 153);"&gt;null&lt;/span&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.&lt;span style="color: rgb(51, 51, 255);"&gt;out&lt;/span&gt;.println(myA.m1());&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p style="margin-bottom: 0cm;"&gt;When faced with this code, most of the people will indicate that it will cause a NullPointerException. Is it that so? Lets look at the rest of the code:&lt;br /&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;class &lt;/span&gt;A {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   &lt;/span&gt;&lt;/span&gt;&lt;pre id="line526"&gt;&lt;span class="entity"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;    public static int &lt;/span&gt;m1() {&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;pre id="line526"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;        return &lt;/span&gt;1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;     }&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;Always remember that the use of class variables and methods depend only on the reference type. So even if your reference is null you can still invoke them. In terms of good practices it is advisable to use&lt;span style="font-style: italic;"&gt; A.m1()&lt;/span&gt; instead of &lt;span style="font-style: italic;"&gt;myA.m1()&lt;/span&gt;but you never know when you'll bump into such code.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4459809220361031396?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4459809220361031396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4459809220361031396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4459809220361031396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4459809220361031396'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/java-gotcha-4-look-mom-no-exception.html' title='Java Gotcha 4- Look mom, no exception!'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7868872507898421780</id><published>2009-05-16T14:37:00.000-07:00</published><updated>2009-05-16T14:50:05.624-07:00</updated><title type='text'>Dev anti-pattern: Missing an index with a trimming</title><content type='html'>An anti-pattern which I observe often among developers is the following- there is a database table which has a column whose data type is a CHAR(X). An index is created on this column in order to improve query's performance. &lt;br /&gt;&lt;br /&gt;select * from MyTable where MyCharColumn = :inputVal&lt;br /&gt;&lt;br /&gt;Then the developer realizes that some of the input values have a length o Y, where Y &lt; X. Because of this the query fails as normally the entries on char columns are padded with spaces. Now we enter the anti-pattern- the developer updates the query in the following way:&lt;br /&gt;&lt;br /&gt;select * from MyTable where trim(MyCharColumn) = :inputVal&lt;br /&gt;&lt;br /&gt;By doing this the query does not use the existing index anymore and gets its performance dramatically worse. Here there are two options:&lt;br /&gt;- Or a new function index on trim(MyCharColumn) is created.&lt;br /&gt;- Or the query is changed so it pads the input value instead of trimming the char column&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7868872507898421780?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7868872507898421780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7868872507898421780' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7868872507898421780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7868872507898421780'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/dev-anti-pattern-missing-index-with.html' title='Dev anti-pattern: Missing an index with a trimming'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2370732149200816393</id><published>2009-05-12T13:52:00.000-07:00</published><updated>2009-05-12T13:58:37.119-07:00</updated><title type='text'>Java Gotcha 3- My Wrapper Types have an identity crisis...</title><content type='html'>&lt;span style="font-family:georgia;"&gt;Lets continue with the Autoboxing and look at the following code:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Short s1 = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Short s2 = s1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.&lt;span style="color: rgb(51, 51, 255);"&gt;out&lt;/span&gt;.println(s1 == s2);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;It naturally prints &lt;span style="font-style: italic;"&gt;true&lt;/span&gt;. Lets now make it a bit more interesting:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Short s1 = 1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Short s2 = s1;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;s1++;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;System.&lt;span style="color: rgb(51, 51, 255);"&gt;out&lt;/span&gt;.println(s1 == s2);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;The output becomes &lt;span style="font-style: italic;"&gt;false&lt;/span&gt;. What the hell, shouldn't s1 and s2 reference the same object? Crazy JVM!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:georgia;"&gt;Lets apply the code translation mechanism seen in Java Gotcha 2.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;Short s1 = &lt;span style="color: rgb(153, 51, 153);"&gt;new &lt;/span&gt;Short((&lt;span style="color: rgb(153, 51, 153);"&gt;short&lt;/span&gt;)1);&lt;br /&gt;Short s2 = s1;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;short &lt;/span&gt;tempS1 = s1.shortValue();&lt;br /&gt;tempS1++;&lt;br /&gt;s1 = &lt;span style="color: rgb(153, 51, 153);"&gt;new &lt;/span&gt;Short(tempS1);&lt;br /&gt;System.&lt;span style="color: rgb(51, 51, 255);"&gt;out&lt;/span&gt;.println(s1 == s2);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;&lt;span style="font-family:georgia;"&gt;Hmmm... makes more sense now, doesn't it? Be always very careful with the Autoboxing.&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2370732149200816393?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2370732149200816393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2370732149200816393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2370732149200816393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2370732149200816393'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/java-gotcha-3-my-wrapper-types-have.html' title='Java Gotcha 3- My Wrapper Types have an identity crisis...'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7402885590974858145</id><published>2009-05-11T13:57:00.000-07:00</published><updated>2009-05-11T14:00:00.409-07:00</updated><title type='text'>Shii - The Wii for Women</title><content type='html'>I know it is a bit machist, but this &lt;a href="http://www.youtube.com/watch?v=_SXNAtwYMBw"&gt;movie&lt;/a&gt; really made me laugh!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7402885590974858145?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7402885590974858145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7402885590974858145' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7402885590974858145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7402885590974858145'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/shii-wii-for-women.html' title='Shii - The Wii for Women'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5157164981853501471</id><published>2009-05-10T03:19:00.000-07:00</published><updated>2009-05-10T03:39:45.610-07:00</updated><title type='text'>Java Gotcha 2- Where is that NullPointerException coming from?</title><content type='html'>&lt;meta equiv="CONTENT-TYPE" content="text/html"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;p&gt;Autoboxing was introduced in Java 5 and made our life easier when having to jump back and forward from primitive types to wrapper types:&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt;&lt;/style&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;primitiveA = 1;&lt;br /&gt;Integer wrapperA = primitiveA;&lt;br /&gt;wrapperA++;&lt;br /&gt;primitiveA = wrapperA;&lt;/span&gt;&lt;/p&gt;&lt;p style="font-family: courier new;"&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;The runtime did not change in order to accommodate such changes, most of the work is done at compilation time. The compiler would look at the previous piece of code and would generate something like the following:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;primitiveA = 1;&lt;br /&gt;Integer wrapperA = new Integer(primitiveA);&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;tmpPrimitiveA = wrapperA.intValue();&lt;br /&gt;tmpPrimitiveA++;&lt;br /&gt;wrapperA = &lt;span style="color: rgb(153, 51, 153);"&gt;new &lt;/span&gt;Integer(tmpPrimitiveA);&lt;br /&gt;primitiveA = wrapperA.intValue();&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;The Autoboxing obviously applies to method invocation as well:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(153, 51, 153);font-size:85%;" &gt;public static int&lt;/span&gt;&lt;span style="font-size:85%;"&gt; calculate(&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:85%;" &gt;int &lt;/span&gt;&lt;span style="font-size:85%;"&gt;a) {&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(153, 51, 153);font-size:85%;" &gt;int &lt;/span&gt;&lt;span style="font-size:85%;"&gt;result = a + 3;&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(153, 51, 153);font-size:85%;" &gt;return &lt;/span&gt;&lt;span style="font-size:85%;"&gt;result;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;   &lt;span style="color: rgb(153, 51, 153);font-size:85%;" &gt;public static void&lt;/span&gt;&lt;span style="font-size:85%;"&gt; main(String args[]) {&lt;br /&gt;&lt;/span&gt;    &lt;span style="color: rgb(153, 51, 153);font-size:85%;" &gt;int &lt;/span&gt;&lt;span style="font-size:85%;"&gt;i1 = 1;&lt;br /&gt; Integer i2 = &lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-size:85%;" &gt;new &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Integer(1);&lt;br /&gt; System.&lt;/span&gt;&lt;span style="color: rgb(102, 0, 204);font-size:85%;" &gt;out&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.println(calculate(i1));&lt;br /&gt; System.&lt;/span&gt;&lt;span style="color: rgb(102, 0, 204);font-size:85%;" &gt;out&lt;/span&gt;&lt;span style="font-size:85%;"&gt;.println(calculate(i2));&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;This is great, we can use all our methods that take primitive types with the corresponding wrappers. Up to the compiler to perform the translation:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;public static void&lt;/span&gt; main(String args[]) {&lt;br /&gt;  &lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;i1 = 1;&lt;br /&gt;  Integer i2 = &lt;span style="color: rgb(153, 51, 153);"&gt;new &lt;/span&gt;Integer(1);&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i1));&lt;br /&gt;  int i2Tmp = i2.intValue();&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i2Tmp));&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;Lets now try the same code with something a bit different:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;public static void&lt;/span&gt; main(String args[]) {&lt;br /&gt;  &lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;i1 = 1;&lt;br /&gt;  Integer i2 = &lt;span style="color: rgb(153, 51, 153);"&gt;new &lt;/span&gt;Integer(1);&lt;br /&gt;  Integer i3 = null;&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i1));&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i2));&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i3));&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;meta equiv="CONTENT-TYPE" content="text/html; charset=utf-8"&gt;&lt;title&gt;&lt;/title&gt;&lt;meta name="GENERATOR" content="OpenOffice.org 2.4  (Win32)"&gt;&lt;style type="text/css"&gt; 	&lt;!-- 		@page { margin: 2cm } 		P { margin-bottom: 0.21cm } 	--&gt; 	&lt;/style&gt; &lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;As seen before, this code translates into:&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;public static void&lt;/span&gt; main(String args[]) {&lt;br /&gt;  &lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;i1 = 1;&lt;br /&gt;  Integer i2 = &lt;span style="color: rgb(153, 51, 153);"&gt;new &lt;/span&gt;Integer(1);&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i1));&lt;br /&gt;  int i2Tmp = i2.intValue();&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i2Tmp));&lt;br /&gt;  int i3Tmp = i3.intValue();&lt;br /&gt;  System.&lt;span style="color: rgb(102, 0, 204);"&gt;out&lt;/span&gt;.println(calculate(i3Tmp));&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;And of course, this code leads us to our old friend NullPointerException. Same would happen with something even more simple:&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;public static void&lt;/span&gt; main(String args[]) {&lt;br /&gt;  Integer iW = null;  &lt;br /&gt;  &lt;span style="color: rgb(153, 51, 153);"&gt;int &lt;/span&gt;iP = iW;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;Therefore be very careful with the use of Autoboxing, it can lead to NullPointerExceptions in code where it would be impossible to get such exceptions before this feature was introduced. To make it worse it is not always easy to identify these code patterns. If you have to convert a wrapper into a primitive, and you are not sure if the wrapper might be null, protect your code!&lt;br /&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5157164981853501471?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5157164981853501471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5157164981853501471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5157164981853501471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5157164981853501471'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/java-gotcha-2-where-is-that.html' title='Java Gotcha 2- Where is that NullPointerException coming from?'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-3376529487378044940</id><published>2009-05-03T13:20:00.000-07:00</published><updated>2009-05-03T14:10:25.286-07:00</updated><title type='text'>Java Gotcha 1- Mad identifiers</title><content type='html'>We are all familiar with the rules that define a legal Java identifier:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;An identifier is a set of one or more characters consisting of letters, digits, currency characters, or underscores (_).&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;An identifier must begin with a letter, a currency character, or an underscore.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;A Java keyword cannot be used as identifier.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;There is no limit to the number of characters that can be used in an identifier.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Unicodes from \u00c0 to \ud7a3 can also be used.&lt;/li&gt;&lt;/ul&gt;The rules are quite simple, but there are tricky cases which raise some eyebrows. For example, nothing disallows the developer to use a class name as an identifier:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6AibgWUYSmw/Sf4HDK_FQXI/AAAAAAAAADY/ZRADXQBr9-k/s1600-h/I1.bmp"&gt;&lt;img style="cursor: pointer; width: 400px; height: 175px;" src="http://2.bp.blogspot.com/_6AibgWUYSmw/Sf4HDK_FQXI/AAAAAAAAADY/ZRADXQBr9-k/s400/I1.bmp" alt="" id="BLOGGER_PHOTO_ID_5331706759923188082" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_6AibgWUYSmw/Sf4DWyV3HZI/AAAAAAAAAC4/4qYImhgWnis/s1600-h/I1.bmp"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;All the following are legal identifiers as well:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_6AibgWUYSmw/Sf4IAAwhMTI/AAAAAAAAADo/FoollFLX5Cc/s1600-h/I2.bmp"&gt;&lt;img style="cursor: pointer; width: 400px; height: 94px;" src="http://2.bp.blogspot.com/_6AibgWUYSmw/Sf4IAAwhMTI/AAAAAAAAADo/FoollFLX5Cc/s400/I2.bmp" alt="" id="BLOGGER_PHOTO_ID_5331707805149770034" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Also, keep in mind that the same name can be used both for a variable and a label. The compiler knows which one you refer to, by analyzing the context.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/Sf4D64VolAI/AAAAAAAAADI/6EF7xHM9MsE/s1600-h/I3.bmp"&gt;&lt;img style="cursor: pointer; width: 264px; height: 93px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/Sf4D64VolAI/AAAAAAAAADI/6EF7xHM9MsE/s400/I3.bmp" alt="" id="BLOGGER_PHOTO_ID_5331703318943667202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;And of course, remember that identifiers refer to names of variables, methods, labels and classes:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_6AibgWUYSmw/Sf4EK0PsbAI/AAAAAAAAADQ/Op1GQ8hS2Fo/s1600-h/I4.bmp"&gt;&lt;img style="cursor: pointer; width: 273px; height: 79px;" src="http://4.bp.blogspot.com/_6AibgWUYSmw/Sf4EK0PsbAI/AAAAAAAAADQ/Op1GQ8hS2Fo/s400/I4.bmp" alt="" id="BLOGGER_PHOTO_ID_5331703592722918402" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;So now you know, should you want to create a piece of code which is hardly readable by anyone (including you), you have here a good start.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-3376529487378044940?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/3376529487378044940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=3376529487378044940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3376529487378044940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3376529487378044940'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/java-gotcha-1-mad-identifiers.html' title='Java Gotcha 1- Mad identifiers'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_6AibgWUYSmw/Sf4HDK_FQXI/AAAAAAAAADY/ZRADXQBr9-k/s72-c/I1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-3804746570180564430</id><published>2009-05-02T16:36:00.000-07:00</published><updated>2009-05-02T16:43:22.299-07:00</updated><title type='text'>Java Gotchas</title><content type='html'>I will start a new column in this blog called “Java Gotchas”. It will be a mix of Java Puzzlers and SCJP training.&lt;br /&gt;&lt;br /&gt;Every now and then we all come across some code whose behavior is unexpected. The Java language contains plenty of particularities, and even the more experienced developers can be caught by surprise. Lets be honest, we all had the Junior guy coming to us and asking “what is the result of executing this code?”, catching us unprepared. Now, instead of using the usual “I could tell you but I think it will be better if you find it by yourself”, we can distract his attention for a moment (hmmm.... I think I just saw Angelina Jolie hiding behind our build server. Can you quickly go and check?) while we rapidly browse through the Java Gotchas.&lt;br /&gt; &lt;br /&gt;Java Gotchas will try to present some of these particularities, helping developers to be better prepared to deal with corner cases. Each Java Gotchas post is going to present a tricky piece of code, with a behavior at compile and/or runtime which is not straightforward to understand, and will shed some light on the rationale behind the whys and the hows. &lt;br /&gt;&lt;br /&gt;The target of the Java Gotchas will be a miscellaneous number of Java topics. There will not be any special order, Java Gotchas touching different areas can be intercalated. The level of complexity will also be diversified, going from very simple remarks to real brainers. In other words, I will write about whatever it comes to my mind, and sometimes I will be in  the mood to write about something complicated, others I will be lazy and will write about something simple which everyone knows.  &lt;br /&gt;  &lt;br /&gt;The main goal is to help developers in achieving one or more of the following :&lt;br /&gt;&lt;br /&gt;- Increase the knowledge about the Java SE platform in order to be a better developer. With such knowledge, your manager won't be able say no to that raise you have been asking for.&lt;br /&gt;&lt;br /&gt;- Achieve a good score on the SCJP. A basic score can be achieved with a satisfactory knowledge about the language, but in order to achieve a top score you have to be familiar with most of the Java Gotchas that will be presented. You ought to get that score which will make everyone in the team jealous!&lt;br /&gt;&lt;br /&gt;- Have some fun, learn some curiosities, and hopefully impress your team mates with that piece of code that no one knows how it will behave. Show them who's the man!&lt;br /&gt;&lt;br /&gt;- Provide you with some ice breakers which will allow you to start a conversation with that girl that you always wanted to meet but never got the guts to approach! It has been scientifically demonstrated that Java Gotchas are in the top 5 ways to meet girls!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-3804746570180564430?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/3804746570180564430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=3804746570180564430' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3804746570180564430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3804746570180564430'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/05/java-gotchas.html' title='Java Gotchas'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7301019690994341471</id><published>2009-04-29T13:41:00.000-07:00</published><updated>2009-04-29T14:44:52.558-07:00</updated><title type='text'>Google Collections- Multimap</title><content type='html'>During the last few weeks I have been playing with the &lt;a href="http://code.google.com/p/google-collections/"&gt;Google Collections&lt;/a&gt;. It is an excellent library and I hope that sooner or later it will become part of the JDK. There are many good features, and now that it got to the 1.0 Release Candidate 1, I believe the API is stable enough and can safely be adopted in any project.&lt;br /&gt;&lt;br /&gt;Today I look at the Multimap. Many times we need a Map which has a key pointing at a collection of values:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;private &lt;/span&gt;Map&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code class="&amp;quot;html&amp;quot;"&gt;&amp;lt;&lt;/code&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;K, Collection&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code class="&amp;quot;html&amp;quot;"&gt;&amp;lt;&lt;/code&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;V&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;myMap&lt;/span&gt;;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The code which populates this map is somehow cumbersome:&lt;br /&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;public void&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt; populateMap(K key, V value) {&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;   Collection&lt;v keyvalues="&lt;span" style="color: rgb(0, 0, 153);"&gt;&lt;/v&gt;&lt;/span&gt;&lt;code class="&amp;quot;html&amp;quot;"&gt;&amp;lt;&lt;/code&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;V&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;k keyvalues="&lt;span" style="color: rgb(0, 0, 153);"&gt; &lt;/k&gt;&lt;/span&gt;keyValues &lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;k keyvalues="&lt;span" style="color: rgb(0, 0, 153);"&gt;= myMap&lt;/k&gt;&lt;/span&gt;.get(key);&lt;br /&gt;  if (keyValues == &lt;span style="color: rgb(153, 51, 153);"&gt;null&lt;/span&gt;) {&lt;br /&gt;      keyValues = &lt;span style="color: rgb(153, 51, 153);"&gt;new &lt;/span&gt;ArrayList&lt;code class="&amp;quot;html&amp;quot;"&gt;&amp;lt;&lt;/code&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;V&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;();&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       myMap&lt;/span&gt;.put(key, keyValues);&lt;br /&gt;  }&lt;br /&gt;  keyValues.add(value);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Using a Multimap the code gets as simple as it can be. A Multimap associates multiple values to a key. Calling a put(key,value) multiple times for the same key but for different values will associate the key to all values. The method get(key) returns a collection of values.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(153, 51, 153);"&gt;private &lt;span style="color: rgb(51, 0, 51);"&gt;Multi&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;map&lt;/span&gt;&lt;k,&gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;code class="&amp;quot;html&amp;quot;"&gt;&amp;lt;&lt;/code&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;k,&gt;K,V&amp;gt;&lt;/k,&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;k,&gt;&lt;/k,&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;myMap&lt;/span&gt; = &lt;span style="color: rgb(51, 0, 51);"&gt;...;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;//Several implementations available&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 51, 153);font-family:courier new;" &gt;public void&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; populateMap(K key, V value) {&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;    &lt;span style="color: rgb(0, 0, 153);"&gt;myMap&lt;/span&gt;.put(key, value);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7301019690994341471?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7301019690994341471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7301019690994341471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7301019690994341471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7301019690994341471'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/google-collections-multimap.html' title='Google Collections- Multimap'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6643645713118442343</id><published>2009-04-28T15:07:00.000-07:00</published><updated>2009-04-28T15:11:37.824-07:00</updated><title type='text'>"EJB 3.1 - A significant step towards maturity" in spanish</title><content type='html'>It seems Leonardo De Seta has translated my article into spanish, available &lt;a href="http://www.dosideas.com/java/528-ejb-31-un-paso-importante-hacia-la-madurez.html"&gt;here&lt;/a&gt;. Well done, the more languages the better.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6643645713118442343?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6643645713118442343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6643645713118442343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6643645713118442343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6643645713118442343'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/ejb-31-significant-step-towards_28.html' title='&quot;EJB 3.1 - A significant step towards maturity&quot; in spanish'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6926218762392907077</id><published>2009-04-27T14:29:00.000-07:00</published><updated>2009-04-27T14:31:59.254-07:00</updated><title type='text'>"EJB 3.1 - A Significant Step Towards Maturity" on the Java Posse</title><content type='html'>The guys from the Java Posse were kind enough to mention my article on their episode #246. Many thanks!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6926218762392907077?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6926218762392907077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6926218762392907077' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6926218762392907077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6926218762392907077'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/ejb-31-significant-step-towards_27.html' title='&quot;EJB 3.1 - A Significant Step Towards Maturity&quot; on the Java Posse'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2431789869805292504</id><published>2009-04-26T13:57:00.000-07:00</published><updated>2009-04-26T14:02:45.335-07:00</updated><title type='text'>EJB 3.1 - A Significant Step Towards Maturity- Comments</title><content type='html'>During the past days I have received some comments concerning the article. Additionally, I have detected a couple of issues in the code samples used to illustrate the new features. Therefore this post will try to react on that.&lt;br /&gt;Starting with the errata, here is the correction of the code issues:&lt;br /&gt;&lt;br /&gt;-The method &lt;span style="font-style: italic;"&gt;invokeSayBye &lt;/span&gt;in the class &lt;span style="font-style: italic;"&gt;ClientEJB &lt;/span&gt;is missing the &lt;span style="font-style: italic;"&gt;futStr.get&lt;/span&gt;:&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;try {&lt;br /&gt;    Future&lt;string&gt; futStr = byeEjb.sayBye();&lt;br /&gt;    &lt;span style="font-weight: bold;"&gt;String str =  futStr.get();&lt;/span&gt;&lt;br /&gt;} catch(ExecutionException ee) {&lt;br /&gt;    String originalMsg = ee.getCause().getMessage();&lt;br /&gt;    System.out.println(“Original error message:” + originalMsg);&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;-In the Embeddable EJB Containers section, the &lt;span style="font-style: italic;"&gt;Logger &lt;/span&gt;in the class &lt;span style="font-style: italic;"&gt;Client &lt;/span&gt;must be static:&lt;br /&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;private &lt;span style="font-weight: bold;"&gt;static &lt;/span&gt;Logger log;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Concerning the comments:&lt;br /&gt;- The article was simply intended to present the new features of EJB 3.1, never to compare EJBs with Spring. Nevertheless, and judging by the feedback, it would be very interesting to have a detailed and impartial comparison between both.&lt;br /&gt;- All code imports were ignored as I do not consider them relevant for judging the new features. All new classes used in the code samples come from the EJB 3.1 API.&lt;br /&gt;- Asynchronous Invocations are supported since EJB 2.1 using Web Services endpoints and can therefore be used on stateless session beans.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2431789869805292504?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2431789869805292504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2431789869805292504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2431789869805292504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2431789869805292504'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/ejb-31-significant-step-towards_26.html' title='EJB 3.1 - A Significant Step Towards Maturity- Comments'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6060327446963922169</id><published>2009-04-21T09:59:00.000-07:00</published><updated>2009-04-21T10:00:17.369-07:00</updated><title type='text'>EJB 3.1 - A Significant Step Towards Maturity</title><content type='html'>TheServerSide has published an article I wrote about EJB 3.1. You can read it &lt;a href="http://www.theserverside.com/tt/articles/article.tss?l=EJB3-1Maturity"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6060327446963922169?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6060327446963922169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6060327446963922169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6060327446963922169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6060327446963922169'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/ejb-31-significant-step-towards.html' title='EJB 3.1 - A Significant Step Towards Maturity'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8801800566698828086</id><published>2009-04-20T13:24:00.000-07:00</published><updated>2009-04-20T13:38:56.169-07:00</updated><title type='text'>Oracle wasn't sleeping</title><content type='html'>Well, it seems that after all Oracle was not sleeping and is going to buy Sun. I would rather see Sun as an independent company, but if I had to choose I would go for Oracle instead of IBM. Nevertheless there are few questions popping in my mind:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;What is going to happen to MySQL? I find hard to believe that Oracle will keep two database engines.&lt;/li&gt;&lt;li&gt;What is going to happen to JRockit? I presume that it will get merged with the Sun's JVM.&lt;/li&gt;&lt;li&gt;What is going to happen to GlassFish? Since it is a recent product, with a small costumer base, I guess it won't survive for long. This has a tremendous effect on the Java EE world, as the same company will concentrate 3 application servers. I do not even want to imagine if Oracle buys Red Hat and gets JBoss as well, even though I think that it will be quite unlikely now that Oracle owns Solaris.&lt;/li&gt;&lt;li&gt;What is going to happen to NetBeans? Here my guess is that NetBeans will be the strategic product and JDeveloper will be decomissioned.&lt;/li&gt;&lt;/ul&gt;In any case these are bad news for the community, as the number of choices will be reduced in the mid term. The ideal solution would be to have Sun being bought by an outsider (Cisco, HP, Dell, etc.), but that seems more and more unlikely.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8801800566698828086?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8801800566698828086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8801800566698828086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8801800566698828086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8801800566698828086'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/oracle-wasnt-sleeping.html' title='Oracle wasn&apos;t sleeping'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4010152678946435470</id><published>2009-04-19T11:27:00.000-07:00</published><updated>2009-04-19T11:39:58.262-07:00</updated><title type='text'>Parleys</title><content type='html'>In a society which is getting more and more greedy, where almost no one does anything for free, it is amazing how sometimes we find great initiatives where people decide to share precious information without trying to profit from it, just for the pleasure of helping the community. Today I speak about &lt;a href="http://www.parleys.com/"&gt;Parleys&lt;/a&gt;. Parleys is an eLearning platform where different recorded talks from Devoxx, JavaPolis, BeJUG, SpringOne, JaZoon, JavaZone and EclipseCon get published on a regular basis. All this content is provided for free. This is a precious source of information which should be consulted on a regular basis by any Java developer. Well done for the guys that had such initiative!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4010152678946435470?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4010152678946435470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4010152678946435470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4010152678946435470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4010152678946435470'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/parleys.html' title='Parleys'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-7736879738646952913</id><published>2009-04-17T13:47:00.000-07:00</published><updated>2009-04-17T13:53:30.308-07:00</updated><title type='text'>Oracle buys Red Hat?</title><content type='html'>It seems the rumor about Oracle buying Red Hat is spreading again. The intention is to grab one of the most influent Linux distributions. But one wonders how this would affect the Java EE world. Oracle already owns Oracle Application Server and WebLogic. By acquiring Red Hat it would get JBoss as well. Oracle would then own three of the "big" application servers. I am not sure if the three of them would go on for a long time, my guess is that they would be merged into a single product, perhaps open source, which would be the strategic one. Nevertheless this would reduce significantly the offer, and consequently the quality.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-7736879738646952913?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/7736879738646952913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=7736879738646952913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7736879738646952913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/7736879738646952913'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/oracle-buys-red-hat.html' title='Oracle buys Red Hat?'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6506647424855608683</id><published>2009-04-10T01:00:00.000-07:00</published><updated>2009-04-10T01:52:26.595-07:00</updated><title type='text'>Double Checked Locking</title><content type='html'>Quite often I come across developers which are not familiar with the issues in the Double-Checked Locking approach. Here goes a good document about it-&lt;br /&gt;&lt;a href="http://www.cs.umd.edu/~pugh/java/memoryModel/DoubleCheckedLocking.html"&gt;The "Double-Checked Locking is Broken" Declaration&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6506647424855608683?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6506647424855608683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6506647424855608683' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6506647424855608683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6506647424855608683'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/double-checked-locking.html' title='Double Checked Locking'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-223669990929238079</id><published>2009-04-08T13:23:00.000-07:00</published><updated>2009-04-08T13:27:29.031-07:00</updated><title type='text'>Oracle Enterprise Pack for Eclipse and WebLogic 11gR1</title><content type='html'>To my knowledge, WebLogic 11 is only expected to come out in 2010. But, whenever reading the Oracle Enterpsie Pack For Eclipse User Manual, I see the following:&lt;br /&gt;&lt;p style="font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;OEPE supports the following versions of Oracle WebLogic Server:&lt;/span&gt;&lt;/p&gt; &lt;ul style="font-style: italic;"&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;11gR1&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;10gR3&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;10.0&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;9.2&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;Strange....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-223669990929238079?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/223669990929238079/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=223669990929238079' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/223669990929238079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/223669990929238079'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/oracle-enterprise-pack-for-eclipse-and.html' title='Oracle Enterprise Pack for Eclipse and WebLogic 11gR1'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-4152015771182589373</id><published>2009-04-08T12:45:00.000-07:00</published><updated>2009-04-08T12:49:41.722-07:00</updated><title type='text'>Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior</title><content type='html'>This week the Software Engineering Radio has an interview with two of the authors of the book "Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior". I got so interested in the book that I ordered it immediately. As soon as I read it I will post my commentary. This is therefore my reading suggestion for the holiday season. Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-4152015771182589373?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/4152015771182589373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=4152015771182589373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4152015771182589373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/4152015771182589373'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/adrenaline-junkies-and-template-zombies.html' title='Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-119051610876059028</id><published>2009-04-06T13:04:00.000-07:00</published><updated>2009-04-06T13:11:00.097-07:00</updated><title type='text'>News of the day- IBM withdrew their offer to buy Sun</title><content type='html'>Well, it is definitely the news of the day, it seems that the negotiations between Sun and IBM went a step backwards. It does not mean much, we all know that Wall Street deals have ups and downs, and what is a no deal today can become a real deal tomorrow. Nevertheless it gives us some hope. Maybe Cisco will come....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-119051610876059028?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/119051610876059028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=119051610876059028' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/119051610876059028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/119051610876059028'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/news-of-day-ibm-withdrew-their-offer-to.html' title='News of the day- IBM withdrew their offer to buy Sun'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-789700788019420171</id><published>2009-04-05T01:58:00.001-07:00</published><updated>2009-04-05T02:10:09.017-07:00</updated><title type='text'>IBM Sun- Is Oracle sleeping?</title><content type='html'>Whenever the rumors about IBM buying Sun came out I thought that Oracle would fight back. Lets look at the facts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Both companies strongly compete in areas like databases or middleware.&lt;/li&gt;&lt;li&gt;Both companies provide a product stack which massively depend on Java.&lt;/li&gt;&lt;li&gt;Any of the companies will get in a weak position should the other one gets control over Java.&lt;/li&gt;&lt;/ul&gt;Therefore I thought that Oracle would fight back. Something like what has happened in the past with Retek, where Oracle and SAP fought a bloody battle in order to control the Database market behind Retek. But, till today, I haven't listened any reactions from Redwood Shores. Could it be that Oracle is sleeping?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-789700788019420171?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/789700788019420171/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=789700788019420171' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/789700788019420171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/789700788019420171'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/ibm-sun-is-oracle-sleeping.html' title='IBM Sun- Is Oracle sleeping?'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-6101201567223318395</id><published>2009-04-02T11:50:00.000-07:00</published><updated>2009-04-02T12:12:50.121-07:00</updated><title type='text'>Interview with Rod Johnson</title><content type='html'>The Java Posse has published an interview with Rod Johnson, accessible &lt;a href="http://cdn4.libsyn.com/dickwall/JavaPosse238.mp3"&gt;here&lt;/a&gt; . As always, it is very interesting to listen to what he has to say and where is Spring 3 heading to. Nevertheless, there are few points which I do not agree with:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;His constant criticism to EJB 2.x. Yes, we all know that it was not perfect, but it wasn't as bad as he puts it.&lt;/li&gt;&lt;li&gt;His numbers about market distribution among Spring and EJB. Yes, Spring has became a major player in the enterprise world, and has conquered a solid position. But he tries to indicate that the EJB presence is almost residual, which is far from the truth. Actually, from my experience, I would say that the market is well spread among both technologies.&lt;/li&gt;&lt;li&gt;EJB3 failed in achieving market adoption. I keep hearing about new projects using EJB3, many in teams which have never used EJBs before. Yes, the use of EJB3 did not skyrocket from the night to the day, but is increasing at a good passe.&lt;/li&gt;&lt;li&gt;Java EE 6 versus Spring. I think this was the worse part of the interview. Java EE 6 presents an excellent stack of technologies and I am sure it will bring many developers back from Spring. I do not know which one is better but for sure that Java EE ought to deserve a little bit more of respect.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-6101201567223318395?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/6101201567223318395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=6101201567223318395' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6101201567223318395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/6101201567223318395'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/interview-with-rod-johnson.html' title='Interview with Rod Johnson'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-352994053246521591</id><published>2009-04-01T11:08:00.000-07:00</published><updated>2009-04-01T11:09:09.977-07:00</updated><title type='text'>On the move again</title><content type='html'>And once more, I am moving into a different place. It is my seventh place here in Luxembourg...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-352994053246521591?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/352994053246521591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=352994053246521591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/352994053246521591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/352994053246521591'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/04/on-move-again.html' title='On the move again'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-2835703785755125195</id><published>2009-03-30T14:51:00.000-07:00</published><updated>2009-03-30T15:03:28.212-07:00</updated><title type='text'>Sun Certification recycling</title><content type='html'>I was always a big supporter of certification initiatives, mostly when it consists of a respectable process measured by rigorous and neutral exams. Nothing like the usual foolish of "you make one week of training and you get automatically certified".&lt;br /&gt;Sun always had reasonable certifications, which ensure that the certified professional possesses an acceptable understanding of the technology. Whenever having to measure the potential of new candidates, the certifications always have a considerable weight. Not that I believe that a certified engineer is better than a non-certified engineer. Far from that. Just that a certification ensures me that the candidate has at least a minimal level of knowledge. And, as Joel Spolsky says, the cost of hiring a bad professional is way higher than the cost of not hiring a good one. Therefore I prefer to play safe and certifications help me to be on the safe side.&lt;br /&gt;This year I decided to recycle my certifications. I have done the upgrade from SCBCD 1.3 to SCBCD 5, and now it is time to go from SCJP 1.4 to SCJP 6. More will follow.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-2835703785755125195?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/2835703785755125195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=2835703785755125195' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2835703785755125195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/2835703785755125195'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/03/sun-certification-recycling.html' title='Sun Certification recycling'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-347098209440725074</id><published>2009-03-27T16:36:00.000-07:00</published><updated>2009-03-27T16:52:18.906-07:00</updated><title type='text'>Profiling for the stats</title><content type='html'>I do quite a lot of application profiling, and I do not know how to survive without profilers. I mostly use JProfiler, but there few more which are quite good as well. Most of the times the results are quite impressive and contribute in a very significant way to the overall system performance. But I cannot avoid noticing that every now and then the profiling is done just for the stats. Even though a profiler is an essential tool, sometimes it provides values that are somehow dubious, mostly if dynamic instrumentation is used. If a certain process is composed by two steps, A and B, where A consists of invoking method mA one time and B consists of invoking mB ten thousand times, and if both step A and B take the same amount of time, the result of dynamically instrumenting the code will give stats roughly different. This takes the developer to a questionable path, causing the profiling for the stats, a profiling anti-pattern.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-347098209440725074?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/347098209440725074/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=347098209440725074' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/347098209440725074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/347098209440725074'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/03/profiling-for-stats.html' title='Profiling for the stats'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-3552251043787074650</id><published>2009-03-26T13:29:00.000-07:00</published><updated>2009-03-26T13:46:56.016-07:00</updated><title type='text'>JSR 305</title><content type='html'>I have been always a big supporter of automatic defect detection. Therefore I welcomed JSR 305 and the initiative of standardizing the annotations used for software defect detection. I could not imagine a better person to handle it, Bill Pugh has provided incredible contributions in this field. I followed the development of this JSR but have never adopted it on my code. I am now planning to make the move and to start using it. It will require some effort from the developers, as they will have to start annotating their code, but I am confident that after a small adaptation period, the annotated code will just come naturaly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-3552251043787074650?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/3552251043787074650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=3552251043787074650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3552251043787074650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/3552251043787074650'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/03/jsr-305.html' title='JSR 305'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8569028877932274632</id><published>2009-03-25T13:30:00.000-07:00</published><updated>2009-03-25T13:42:38.342-07:00</updated><title type='text'>PMD- Performance Curiosity</title><content type='html'>PMD (&lt;a href="http://pmd.sourceforge.net/"&gt;http://pmd.sourceforge.net&lt;/a&gt;) is one of the tools which long ago became mandatory on our build processes. We have noticed that with bigger projects its performance becomes a little bit worrying. But the interesting fact is that such issue did not apply to every system. We had developers with similar machines, having PMD running 10 times faster in one than the other. This interesting observation triggered some research work on our side. We isolated most of the possibilities and reached no conclusion. We were quite lost. But in the end we found the source of the problem. All developers use Windows, and normally map their source code repository into a dedicated logical drive (lets assume X:). Some implement this by mapping a network drive while others use the subst command. The former has an amazing impact in the performance, making PMD 10 times slower. One would assume that the fact that a network drive is used would slow down the process, but never in such scale. Windows was expected to be a little bit smarter whenever a network drive is pointing to a folder on the local machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8569028877932274632?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8569028877932274632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8569028877932274632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8569028877932274632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8569028877932274632'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/03/pmd-performance-curiosity.html' title='PMD- Performance Curiosity'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5141569553875776946</id><published>2009-03-24T13:58:00.000-07:00</published><updated>2009-03-24T14:01:26.142-07:00</updated><title type='text'>Dilbert and Flight of the Conchords</title><content type='html'>Every now and then I have to catch up with some tv shows which were on air some time ago. Recently I started to watch the first season of Dilbert and the first season of Flight of the Conchords. They are both really good, I definitely recommend. I am having good fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5141569553875776946?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5141569553875776946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5141569553875776946' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5141569553875776946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5141569553875776946'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/03/dilbert-and-flight-of-conchords.html' title='Dilbert and Flight of the Conchords'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-5535168772931518764</id><published>2009-03-22T13:50:00.000-07:00</published><updated>2009-03-22T14:04:01.253-07:00</updated><title type='text'>Five in Five</title><content type='html'>I was always a big supporter of public transports. First for obvious reasons like taking care of the environment and making sure that our cities do not get transformed into motor jungles. Second because I feel that I can use the time I spend on the bus in a much productive way (like reading) that I could if I would take my car. &lt;br /&gt;I always take the bus to work. That means that, most of the weeks I park my car on Sunday evening and I only pick it back on Friday.&lt;br /&gt;Luxembourg has a rigorous parking policy where each citizen is entitled to a parking permit applicable to the neighborhood where it lives. This week I parked my car on the usual street, but failed to notice that the street where I usually park has around 25 meters where the parking during the week is limited to max of three hours. I know, shame on me, I should have notice it. It goes without saying that I parked in such area. Therefore past Friday when I went to pick up my car I found five parking tickets waiting for me. That is right, one per day. I learned my lesson the hard way.&lt;br /&gt;Here you can see the strong German influence in the Luxembourgish behavior. If I was back at Portugal I am sure I would not get 5 tickets. I would probably get one every second day. For sure the guy would feel sorry for me and would not give me one present per day. But here it is all by the rules.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-5535168772931518764?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/5535168772931518764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=5535168772931518764' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5535168772931518764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/5535168772931518764'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/03/five-in-five.html' title='Five in Five'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5963915115180797467.post-8881632616168524373</id><published>2009-03-21T09:51:00.000-07:00</published><updated>2009-03-21T10:08:25.140-07:00</updated><title type='text'>Sun and IBM</title><content type='html'>The news of the week in the Java world are the rumors about the possibility of IBM buying Sun. Like most of the community, I am deeply concerned. I fear for OpenJDK, GlassFish, NetBeans, MySQL, OpenSolaris and few others. I deeply respect IBM, I have worked with many of their products like WebSphere, MQSeries, DB2 or AIX and must point out their quality. I have been a couple of times at Hursley Park, in the UK, and have only good things to speak about the IBM people I had the pleasure to work with. But Sun and IBM are companies with very different strategies, and I am afraid that most of the things I like about Sun will disappear if it gets bought by IBM. The future will tell.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5963915115180797467-8881632616168524373?l=barracadopaulo.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://barracadopaulo.blogspot.com/feeds/8881632616168524373/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5963915115180797467&amp;postID=8881632616168524373' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8881632616168524373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5963915115180797467/posts/default/8881632616168524373'/><link rel='alternate' type='text/html' href='http://barracadopaulo.blogspot.com/2009/03/sun-and-ibm.html' title='Sun and IBM'/><author><name>Paulo</name><uri>http://www.blogger.com/profile/11550976890626503721</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
