<?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-7006133869916555295</id><updated>2012-01-26T20:02:08.136-08:00</updated><category term='templates'/><category term='Java1.6'/><category term='JBoss Seam'/><category term='XP'/><category term='html5'/><category term='Brasil'/><category term='web iphone'/><category term='IT'/><category term='data warehouse'/><category term='lyrics'/><category term='JBoss ESB'/><category term='Australia'/><category term='TDD'/><category term='inefficiency'/><category term='Cucumber'/><category term='BDD'/><category term='Mac OS'/><category term='Mobile Development'/><category term='windows'/><category term='bad customer services'/><category term='Information Technology'/><category term='web android'/><category term='java-to-word'/><category term='JBoss'/><category term='Microsoft word'/><category term='justice'/><category term='css3'/><category term='Java 1.5'/><category term='hiphop'/><category term='optus'/><category term='Capybara'/><category term='Java'/><category term='covariant return type'/><category term='java2word'/><category term='sql server'/><category term='Snow Leopard'/><category term='Vi'/><category term='Vim'/><category term='Agile'/><category term='Ruby'/><category term='Database'/><category term='web mobile'/><category term='Linux'/><category term='Brazil'/><category term='MySql'/><category term='Ubuntu'/><category term='statistics'/><category term='corruption'/><category term='numbers'/><category term='on the prowl'/><category term='Dexter'/><category term='ellesquire'/><category term='MacVim'/><title type='text'>Life in Australia, social, work in IT (Vida na Austrália, Inglês, Trabalho e diversão)</title><subtitle type='html'>I write about life in Australia, soccer, social life, Java, Ruby, Information Technology and my work experience. 
There is also a lot about Java2word, which is an open source project I run for fun on my free time.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-5906081367370161018</id><published>2012-01-26T20:02:00.000-08:00</published><updated>2012-01-26T20:02:08.155-08:00</updated><title type='text'></title><content type='html'>Hello guys,I have moved Java2word to its own blog. &lt;a href="http://java2word.blogspot.com/p/documentation.html"&gt;http://java2word.blogspot.com/p/documentation.html&lt;/a&gt;&lt;br&gt;Issues and SVN code repository will remain over there. Thank all of you for your contribution over the last 18 months.&lt;br&gt;Leonardo Correa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-5906081367370161018?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/5906081367370161018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2012/01/hello-guysi-have-moved-java2word-to-its.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/5906081367370161018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/5906081367370161018'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2012/01/hello-guysi-have-moved-java2word-to-its.html' title=''/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-529492217109427056</id><published>2011-10-31T20:25:00.000-07:00</published><updated>2011-11-25T00:53:12.772-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lyrics'/><category scheme='http://www.blogger.com/atom/ns#' term='ellesquire'/><category scheme='http://www.blogger.com/atom/ns#' term='on the prowl'/><category scheme='http://www.blogger.com/atom/ns#' term='hiphop'/><title type='text'>ellesquire on the prowl lyrics aussie hiphop</title><content type='html'>Ollesquire is a Sydney hip hop rapper and released his first record called&amp;nbsp;"Ready"&amp;nbsp;in&amp;nbsp;August&amp;nbsp;2011.&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;Ollesquire is coming to Melbourne:&lt;br /&gt;Fri, Nov 25 -&amp;nbsp;8:30 pm&lt;br /&gt;Northcote Social Club -&amp;nbsp;Melbourne (W/ Thundamentals Foreverlution Tour)&lt;/blockquote&gt;&lt;br /&gt;further info on his Facebook page:&amp;nbsp;&lt;a href="http://www.facebook.com/ellesquire?sk=app_178091127385"&gt;http://www.facebook.com/ellesquire?sk=app_178091127385&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;He is best known for the track "on the prowl" where he uses humor and sincerity to describe a&amp;nbsp;typical situation when we go out for hunting! Really funny!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I tried to find "on the prowl" lyrics in the internet but is is not available. What do we do in this situation? We write it!&lt;br /&gt;If you see this lyrics anywhere else, they copied from here.&lt;br /&gt;&lt;br /&gt;As English is not my first language, it was a good&amp;nbsp;exercise&amp;nbsp;to sit down, write the lyrics and understand better the Aussie accent and slang. &amp;nbsp;Obviously I didn't get it all done.&amp;nbsp;I did 70% and asked Genny to help with the rest. There is still a few words we couldn't get it but.&lt;br /&gt;&lt;br /&gt;You can listen to "on the prowl" on his Facebook page or youtube"&amp;nbsp;&lt;a href="http://www.youtube.com/watch?v=ipU7_e6uF3A"&gt;http://www.youtube.com/watch?v=ipU7_e6uF3A&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So, do you like stuff??? very Aussie - here we go:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ellesquire - on the prowl&lt;br /&gt;&lt;br /&gt;Oh yeah&lt;br /&gt;I'm on fire when I go to the night clubs&lt;br /&gt;My pick up line is&lt;br /&gt;so do you like stuff?&lt;br /&gt;if they are keen they're probably a mindfuck&lt;br /&gt;&lt;br /&gt;or they're fine &amp;nbsp;but they've turned dark known' my luck&lt;br /&gt;&lt;br /&gt;I've gone right up to 'em and like Hi but&lt;br /&gt;I never have a follow up line&lt;br /&gt;So I just hi em up&lt;br /&gt;&lt;br /&gt;Can I buy you a drunk&lt;br /&gt;I mean buy a drink&lt;br /&gt;I mean shit n' a fuck&lt;br /&gt;&lt;br /&gt;I'm trying to think of somethin' witty to say&lt;br /&gt;and she's like "whatever"&lt;br /&gt;I'm sorry baby you could've been mine forever&lt;br /&gt;&lt;br /&gt;I came on too strong&lt;br /&gt;played on too long and found myself dancing to Akon's new song&lt;br /&gt;&lt;br /&gt;Drunk as all fuck&lt;br /&gt;Still trying to get my groove on&lt;br /&gt;Bouncer comes up&lt;br /&gt;"Sir can you please move on, you're too drunk it's time to call it quits"&lt;br /&gt;I says:&lt;br /&gt;"too drunk this is only my fourth of fifth, plus you're interrupting me, I'm trying' to talk to chicks"&lt;br /&gt;he says "it's not a girl, you're talking to the wall you dick"&lt;br /&gt;ahh shit...&lt;br /&gt;"No wonder she was such a good listener, about to start kissing' her and get all of her digits, but you interrupted!"&lt;br /&gt;he didn't find it funny&lt;br /&gt;he kicked me out the club and then he punched me in the tummy&lt;br /&gt;&lt;br /&gt;He's calling me a smartass and a drunk bum&lt;br /&gt;said "I'd rather be a smartass than a dum cunt" (ehee no you didn't?)&lt;br /&gt;No I didn't&lt;br /&gt;but I think it's probably what I would've said if I was bigger&lt;br /&gt;&lt;br /&gt;Full of liquor I move on to the next pub&lt;br /&gt;I'm not gonna go home,&lt;br /&gt;I've gotten all dressed up&lt;br /&gt;&lt;br /&gt;Listen to me&lt;br /&gt;&lt;br /&gt;(chorus)&lt;br /&gt;Single and I'm on the prowl&lt;br /&gt;I wish that I could mingle, I just don't know how&lt;br /&gt;I get pissed too quick&lt;br /&gt;Then I get thrown out&lt;br /&gt;before I even get a chance to write your number down&lt;br /&gt;(repeat)&lt;br /&gt;&lt;br /&gt;Hey..um.. so I'm a rapper you know&lt;br /&gt;oh you're a rapper, what?&lt;br /&gt;you know like I rap and stuff&lt;br /&gt;My mate is in the hilltop hoods&lt;br /&gt;No, I don't know the hilltop hoods&lt;br /&gt;They're awesome...yeah, you should see them&lt;br /&gt;I'm good but, I'm heaps good, do you want me to do a rap for you?&lt;br /&gt;no, I m actually gonna go over here now&lt;br /&gt;&lt;br /&gt;So I find myself&lt;br /&gt;in the middle of the largest of lines&lt;br /&gt;just to get into a bar for a lager or five&lt;br /&gt;&lt;br /&gt;I'd already been going hard drunk a carton at mine&lt;br /&gt;before I even left my apartment and started my night&lt;br /&gt;&lt;br /&gt;I see a hottie walk pass so I ask her for a light&lt;br /&gt;She says "no I don't smoke"&lt;br /&gt;n I say 'nah, neither do I'&lt;br /&gt;&lt;br /&gt;We got to have a laugh at my retarded reply&lt;br /&gt;but then she kept walking like she just passing me by&lt;br /&gt;&lt;br /&gt;I had to think fast so I ask for the time&lt;br /&gt;she says 'the thing on your wrist will give a rather good guide'&lt;br /&gt;&lt;br /&gt;back to old smart ass like she's larger than life&lt;br /&gt;ah forget her&lt;br /&gt;I'm already at the start of the line&lt;br /&gt;So I get into the venue where the party is right&lt;br /&gt;everybody is looking like they're haven' a marvellous night&lt;br /&gt;so many ladies in the place that it was hard to see guys&lt;br /&gt;So it can't be hard for me to get a part of the pie&lt;br /&gt;Pardon me I think I'll get a glass of your wine&lt;br /&gt;the barman behind next to the chick in the karky design&lt;br /&gt;The bartender just laughs and says "aren't you surprised that apart from you and I in the club there aren't any guys"&lt;br /&gt;Well I did feel a little bit marginalised&lt;br /&gt;But hell, all the more girls for me to party with me right?'&lt;br /&gt;&lt;br /&gt;he's like "next time you (?find or win?) yourself some ass for the night n stay away from here dude this is a bar just for dykes"&lt;br /&gt;&lt;br /&gt;(chorus)&lt;br /&gt;Single and I'm on the prowl&lt;br /&gt;I wish that I could mingle, I just don't know how&lt;br /&gt;I get pissed too quick&lt;br /&gt;Then I get thrown out&lt;br /&gt;before I even get a chance to write you number down&lt;br /&gt;(repeat)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is Aussie talent! I will definitely check it out in Melbourne on 25th Nov.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;Leonardo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-529492217109427056?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/529492217109427056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/10/ellesquire-on-prowl-lyrics-aussie.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/529492217109427056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/529492217109427056'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/10/ellesquire-on-prowl-lyrics-aussie.html' title='ellesquire on the prowl lyrics aussie hiphop'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-7927070042518888629</id><published>2011-10-25T00:39:00.000-07:00</published><updated>2011-10-25T03:33:48.186-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css3'/><category scheme='http://www.blogger.com/atom/ns#' term='web android'/><category scheme='http://www.blogger.com/atom/ns#' term='web mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='web iphone'/><title type='text'>Web Mobile iPhone and Androids Inconsistencies</title><content type='html'>As I wrote in my profile, I am currently working as a Web Mobile Developer, focussed on high-end devices and will start to share my experiences and hacks to get the work done.&lt;br /&gt;&lt;br /&gt;It has been a great experience working with HTML5, CSS3 and Javascript.&amp;nbsp;Most people thinks this is all about rounded corner divs but we can build powerful web mobiles applications with HTML5 and CSS3. &lt;br /&gt;&lt;br /&gt;Therefore nothing comes without some reasonable&amp;nbsp;hassle. If you were one that complains about inconsistence on standard web site like Internet Explorer versus firefox, you need relax. You should be really happy where you are.&lt;br /&gt;&lt;br /&gt;Web Mobiles is ten times more inconsistent than web for desktop. IPhones run safari mobile, which is not the same as safari desktop. &amp;nbsp;Androids behave slightly differently over device manufacturers (Eg.: annoying&amp;nbsp;&lt;i&gt;-webkit-tap-highlight-color&lt;/i&gt; css3 property) and totally different from iPhones. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please don't get me wrong: I love mobiles! that's why I didn't kill myself when I found out that safari mobile does not implement fixed position, neither div overlay scroll.&lt;br /&gt;&lt;br /&gt;Can you do anything on web for desktop without fixed position and overflow scroll? In mobiles we have to do it. Find a good work-around is part of your role. &lt;br /&gt;&lt;br /&gt;Worse yet, here comes safari mobile - the new Internet Explorer headache in mobiles.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But there are things that both iPhone and Androids sucks:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;input type="search"&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;This code is supposed to give you that "clear on demand", the same on iphone apps but without any extra code. This is specified on HTML5 but they don't implement it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Safari mobile does not implement overflow scroll for divs.&amp;nbsp;Luckily there is the fantastic iScroll (http://cubiq.org/iscroll-4) that "fixes" this problem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are consistent things as well like geoLocation:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&amp;nbsp; &amp;nbsp;&lt;i&gt; navigator.geolocation.getCurrentPosition(foundLocationFunc, noLocationFunc);&amp;nbsp;&lt;/i&gt;&lt;/blockquote&gt;works for both devides and in a second you'll .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next time I will share how to implement like a&amp;nbsp;centralized&amp;nbsp;spinner with a&amp;nbsp;full screen semi-transparent overlay locking the page background. There are some tricks when the page is bigger than the screen and you have scroll.&lt;br /&gt;&lt;br /&gt;Later on, I will share how to use full screen for iphone, take the most of this huge screen height.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;Leonardo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-7927070042518888629?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/7927070042518888629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/10/web-mobile-iphone-androids.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/7927070042518888629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/7927070042518888629'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/10/web-mobile-iphone-androids.html' title='Web Mobile iPhone and Androids Inconsistencies'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-2621325995771606083</id><published>2011-09-30T22:17:00.000-07:00</published><updated>2011-09-30T22:17:42.422-07:00</updated><title type='text'>soccer world cup 2014 brazil</title><content type='html'>Soccer world cup in Brazil is in less than 1000 days. Nice! This is the task list for this event to happen &lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(from blog blogfazendoasocial)&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;12 stadiums&amp;nbsp;&lt;/li&gt;&lt;li&gt;3 years&lt;/li&gt;&lt;li&gt;1 national team&lt;/li&gt;&lt;/ul&gt;I would add:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Decent airports&amp;nbsp;&lt;/li&gt;&lt;li&gt;Get rid of corrupt&amp;nbsp;politicians and policemen all over the country&lt;/li&gt;&lt;li&gt;Sack Mano Menezes (current coach)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Brazil is the only place in the world that politicians take the money and never go to jail regardless of evidences like videos, phone call records and documents. Worse yet, those corrupt politicians never give the robbed money back - it&amp;nbsp;disappears&amp;nbsp;like magic. &lt;br /&gt;&lt;br /&gt;Fact: In Brazil, everything that involves politicians has corruption.&lt;br /&gt;&lt;br /&gt;Soccer stadiums construction are running late, airports have reached maximum capacity and the government is&amp;nbsp;government (don't need to say anything else: made up of&amp;nbsp;laziness&amp;nbsp;and corruption).&lt;br /&gt;&lt;br /&gt;If you haven't bough your tickets to Brazil 2014, don't do it because who knows if this world cup will ever happen. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Leonardo Correa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-2621325995771606083?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/2621325995771606083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/09/soccer-world-cup-2014-brazil.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/2621325995771606083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/2621325995771606083'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/09/soccer-world-cup-2014-brazil.html' title='soccer world cup 2014 brazil'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-7493076177379584574</id><published>2011-03-22T00:47:00.000-07:00</published><updated>2011-03-22T04:39:09.288-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java2word'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft word'/><category scheme='http://www.blogger.com/atom/ns#' term='templates'/><category scheme='http://www.blogger.com/atom/ns#' term='java-to-word'/><title type='text'>Java2word Templates</title><content type='html'>Now you can use Templates with Java2word!&lt;br /&gt;&lt;br /&gt;Take a look at the wiki page: &lt;a href="https://code.google.com/p/java2word/wiki/TemplatesWithJava2word"&gt;https://code.google.com/p/java2word/wiki/TemplatesWithJava2word&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is not the most advanced solution but gets the job done!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://code.google.com/p/java2word/"&gt;https://code.google.com/p/java2word/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Leonardo Correa&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;coding for fun...&lt;/i&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-7493076177379584574?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/7493076177379584574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/03/java-2-word-templates.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/7493076177379584574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/7493076177379584574'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/03/java-2-word-templates.html' title='Java2word Templates'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-4038836116927850941</id><published>2011-02-20T03:50:00.000-08:00</published><updated>2011-02-20T03:50:10.614-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='java2word'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='numbers'/><title type='text'>Java2word in numbers statistics</title><content type='html'>&lt;a href="https://code.google.com/p/java2word/"&gt;&lt;b&gt;Java2word&lt;/b&gt;&lt;/a&gt; started in August 2010. Since then, I have spent many hours of my own time to implement this code. There has been a lot of collaboration from people all over the world.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Last 30 days:&lt;/b&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Visits: 850&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Pageviews: 3,189&amp;nbsp; &lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;At all times(7 months): &lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt;Visits: 3,429&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: large;"&gt; Pageviews: 15,146&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Now we have style, fluent interface, over 92% test coverage.&lt;br /&gt;Unfortunately I can't fit cucumber here...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TODO:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Knock off some cyclomatic complexity &lt;/li&gt;&lt;li&gt;Get to 100% test coverage&lt;/li&gt;&lt;li&gt; Make font-size work&lt;/li&gt;&lt;li&gt;Implement bullet points&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I decide to write in one unit test that uses all elements of the API. This works like a documentation/demonstration&amp;nbsp; of what can be done with java2word.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Take a look at the project page and search (ctrol + f) for "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;testJava2wordAllInOne&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;&lt;a href="https://code.google.com/p/java2word/"&gt;https://code.google.com/p/java2word/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;thanks everyone for helping!&lt;br /&gt;&lt;br /&gt;Leonardo Correa&lt;br /&gt;&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-4038836116927850941?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/4038836116927850941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/02/java2word-in-numbers-statistics.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/4038836116927850941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/4038836116927850941'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/02/java2word-in-numbers-statistics.html' title='Java2word in numbers statistics'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-482389582033445349</id><published>2011-02-19T23:17:00.000-08:00</published><updated>2011-02-19T23:17:56.895-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java2word'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='covariant return type'/><title type='text'>Java2word covariant return type</title><content type='html'>When I was studying for SCJP exam, in 2007, I had to learn a lot of things that didn't make sense and I thought that I would never use.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Today, in my &lt;a href="https://code.google.com/p/java2word/"&gt;&lt;b&gt;Java2word&lt;/b&gt;&lt;/a&gt; library, I utilized &lt;b&gt;Covariant Return Typ&lt;em&gt;e&lt;/em&gt;. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This basically is when you override some method, you can return any subtype of the original return type. Eg.:&lt;br /&gt;&lt;br /&gt;The class ParagraphPieceStyle extends AbstractStyle and overrides the method create().&lt;br /&gt;&lt;br /&gt;public abstract class AbstractStyle implements ISuperStylin {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private IElement element;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void setElement(IElement element) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; this.element = element;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public IElement create() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return this.element;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;public class ParagraphPieceStyle extends AbrstractStyle{ &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @Override&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ParagraphPiece create() {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return (ParagraphPiece) super.create();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The original return type is "IElement" but returns "ParagraphPieceStyle".The advantage of this is the flexibility to return any subtype of the original type.&lt;br /&gt;&lt;br /&gt;this is the code without Covariant:&lt;br /&gt;&lt;br /&gt;ParagraphPiece myParPiece01 = (ParagraphPiece) ParagraphPiece.with("..."); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is with covariant:&lt;br /&gt;&lt;br /&gt;ParagraphPiece myParPiece01 = ParagraphPiece.with("...");&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Now I don't need to do a type cast (downcast) of the type.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://code.google.com/p/java2word/"&gt;https://code.google.com/p/java2word/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;&lt;br /&gt;Leonardo Correa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-482389582033445349?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/482389582033445349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/02/java2word-covariant-return-type.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/482389582033445349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/482389582033445349'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/02/java2word-covariant-return-type.html' title='Java2word covariant return type'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-3078294293933964332</id><published>2011-02-12T03:25:00.000-08:00</published><updated>2011-08-13T20:29:15.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dexter'/><category scheme='http://www.blogger.com/atom/ns#' term='corruption'/><category scheme='http://www.blogger.com/atom/ns#' term='justice'/><title type='text'>My Dexter Addiction</title><content type='html'>what is our concept of wrong and right? how about punishment; how should we punish someone that does something wrong? Have you ever thought that you would like someone that kills people? &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Friend of mine called &lt;b&gt;Dylon&lt;/b&gt; talked about a TV serie that the main character is a serial killer. I couldn't believe it! But he&amp;nbsp;said: He kills only bad people!&lt;br /&gt;Yeah... sounds cool...&lt;br /&gt;&lt;br /&gt;I downloaded some episodes, watched them and quickly became addicted to it. It surprised me the &amp;nbsp;number of people supporting the ideas behind Dexter.&lt;br /&gt;On the other hand, there are lots of people against Dexter's concepts - I respect their opinion.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I must define &lt;b&gt;"bad people"&lt;/b&gt; at this point:&lt;br /&gt;&lt;br /&gt;Murderers, Brazilian Politicians (all fucking corrupt politicians and policemen), presidents and ex-presidents of some countries, ..., ..., ..., this list could never finish...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The pleasure to see real punishment, punish whom ever f$%#ng deserve is priceless. We are sick of &lt;/b&gt;&lt;b&gt;&lt;u&gt;bad people*&lt;/u&gt; not being punished properly.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Dexter judges and executes the sentence at the same time. He efficiently does what the system can't do it.&lt;br /&gt;&lt;br /&gt;Surely no one wouldn't mind if Dexter applies his skills on Brazilian politicians - I think they deserve... fucking deserve. Conventional justice doesn't work for then.&lt;br /&gt;&lt;br /&gt;If you grew up in a first world-country (or decent place), you have NO idea what I am talking about here. You may have never seen corruption in the same way.&lt;br /&gt;&lt;br /&gt;I have seen so much corruption in the government.&amp;nbsp;I used to be an&amp;nbsp;accountant&amp;nbsp;and worked in the treasure department for 3 years.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;Everybody has their own secrets. I love when Dexter is holding his baby and says: "I ll tell you a secret - daddy kills people, but only bad guys..." &lt;br /&gt;&lt;br /&gt;In my point of view people love Dexter because the world is missing a very simple thing: give bad people what they deserve. At the end of the day what we want is justice, nothing more...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-3078294293933964332?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/3078294293933964332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/02/my-dexter-addiction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/3078294293933964332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/3078294293933964332'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2011/02/my-dexter-addiction.html' title='My Dexter Addiction'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-5911267418288888624</id><published>2010-12-07T18:15:00.000-08:00</published><updated>2010-12-13T14:22:05.414-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='BDD'/><category scheme='http://www.blogger.com/atom/ns#' term='Capybara'/><category scheme='http://www.blogger.com/atom/ns#' term='Mobile Development'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Mobile Web Sites BDD Cucumber Capybara Gizmo</title><content type='html'>Have you ever thought about running Cucumber tests for Mobile Web Sites?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Background about my current role: &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I have  been working as a Mobile Developer. I build web page to run in mobile  devices. They could be iPhone, iPad, T-Touch, T-Hub, Galaxy, Nokia,  Motorola or any mobile device that can access internet via somehow.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;First of all:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;what is a Mobile Web Site?&lt;/li&gt;&lt;/ul&gt;It is a site that runs on smart phones, tablets or handsets. &lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;what is &lt;b&gt;NOT&lt;/b&gt; a Mobile Web Site (in this blog)?&lt;/li&gt;&lt;/ul&gt;I am not talking about iPhones or Android Apps. If you have one Nokia Mobile you can't install any apple app.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More about Mobile Web Site here:&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/Mobile_Web"&gt; http://en.wikipedia.org/wiki/Mobile_Web&amp;nbsp; &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The Funny Challenging&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If we have a traditional &lt;b&gt;Web Site&lt;/b&gt; we now already how to test it.&lt;br /&gt;We could use Cucumber + Capybara + Gizmo + Selenium Web Driver and run this on the Continouns Integration Server (CI).&lt;br /&gt;&lt;br /&gt;We could have in our CI, at least those three different virtual machines: One with in Firefox + Linux, other with Firefox + Windows and last with Windows + Internet Explorer.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;You could consider IE6, IE7, Vista, Windows Seven... anyway this is just an illustration. &lt;br /&gt;&lt;br /&gt;&lt;div style="color: #20124d;"&gt;&lt;span style="font-size: large;"&gt;How about Mobiles????????????????????????????&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #20124d;"&gt;&lt;span style="font-size: large;"&gt;Can we run automatic Cucumber tests natively on a Mobile device???????&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Additional information: In my work, there are one list of twenty mobile devices that we support. Those devices can be classified as the screen size such as tiny, small, medium, large, extra-large and maybe huge. &lt;br /&gt;&lt;br /&gt;The application gives a different CSS configuration per device, but the content by itself is basically the same in most cases. Mobiles from a specific carrier (Eg.: Telstra) could have additional content available. &amp;nbsp; &lt;br /&gt;&lt;br /&gt;Not enough, &lt;b&gt;other devices don't accept cookies&lt;/b&gt;. Example of those are some dodge Nokias that surprisingly come up at the tip of the list, according to the corporate stats. This non-cookie devices we have to use URL rewriting &lt;c:url&gt;. &lt;/c:url&gt;&lt;br /&gt;&lt;br /&gt;Every time we have a release, QA guys have to test the application in many different devices. Regarding to mobile, we need to see the font size, if images are visible, text in the write place, etc. In other words, for 20 different devices, possibly 20 different pages.&lt;br /&gt;&lt;br /&gt;I am not even talking about &lt;b&gt;HTML5&lt;/b&gt; neither &lt;b&gt;Web Semantic&lt;/b&gt; - not also about &lt;b&gt;table-less&lt;/b&gt; approach. All those issues would deserve another post and we surely take care of them in my workplace.&lt;br /&gt;&lt;br /&gt;Despite of those issues, I think we still can test a lot of things automatically via Cucumber. Using a normal PC web browser, we can definitely test at least 70% of the application.&lt;br /&gt;&lt;br /&gt;Certainly we could perform a complete functional test using Cucumber, and finally, by the time&amp;nbsp; that QA guys take the manual&amp;nbsp; tests using handset, there will be no more basic functional errors.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How can we emulate a mobile device using Firefox? &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I figured it out a way to do this changing &lt;b&gt;Firefox HTTP request headers&lt;/b&gt;. This way, the application will respond the request the same way it does for a real device. &lt;br /&gt;&lt;br /&gt;I will assume that you have your Cucumber + Capybara environment up and running.&lt;br /&gt;&lt;br /&gt;If not, follow these steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Read this page https://github.com/icaruswings/gizmo&lt;/li&gt;&lt;li&gt; git clone https://github.com/icaruswings/gizmo.git&lt;/li&gt;&lt;li&gt;Now you have got a Cubumber + Capybara + Gizmo environment half way done.&lt;/li&gt;&lt;/ul&gt;Now you need to install all gems. I use bundle but if you want something quickly up and running, install the following gems:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;sudo gem install cucumber&lt;/li&gt;&lt;li&gt;sudo gem install rspec&lt;/li&gt;&lt;li&gt;sudo gem install gizmo&lt;/li&gt;&lt;li&gt;sudo gem install capybara&lt;/li&gt;&lt;li&gt;sudo gem install tilt&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Now you can run:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;cucumber features/github_example.feature&lt;/li&gt;&lt;/ul&gt;This should start Firefox and successfully run the feature.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you are on Linux Ubuntu 10.10 and see some problem like: &lt;b&gt;spec/specification&lt;/b&gt;, run: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;sudo apt-get install librspec-ruby1.8&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Finally The Cool Point of this Post&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;* Assuming that Cucumber + Capybara is up and running.&amp;nbsp; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Your &lt;b&gt;env.rb&lt;/b&gt; has got a line like this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Capybara.default_driver = :selenium&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I will write my &lt;b&gt;env.rb&lt;/b&gt; and how I override Firefox headers using a Firefox Profile. I removed this line and added:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Capybara.default_driver = :selenium_iphone&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Capybara.register_driver :selenium_iphone do |app|&amp;nbsp; &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; require 'selenium-webdriver'&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile = Selenium::WebDriver::Firefox::Profile.new&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile['general.user&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.override'] = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile['general.description.override'] = "Mozilla" # appCodeName&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile['general.appname.override'] = "Netscape"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile['general.appversion.override'] = "5.0 (iPhone; U; CPU iPhone OS 4_1 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8B117 Safari/6531.22.7"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile['general.platform.override'] = "iPhone"&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile['general.useragent.vendor'] = "Apple Computer, Inc." &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; profile['general.useragent.vendorSub'] = "" &lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; Capybara::Driver::Selenium.new(app, :profile =&amp;gt; profile)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;end&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is my spike feature:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Feature:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; As a Mobile Developer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; In want to have a DRY, elegant and maintainable tests for all diferent devices&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; So that I can to simulate mobile (hi-end and low-end) and desktop browsers&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @iphone&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Scenario: It opens the test page and shows which browser is being simulated&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Given a user is on the user-agent-switcher homepage&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is the implementation of the one and only one step:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #351c75;"&gt;Given /^a user is on the user\-agent\-switcher homepage$/ do&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; visit "http://chrispederick.com/work/user-agent-switcher/features/test/"&amp;nbsp; &lt;br /&gt;&amp;nbsp; sleep 15 # so that I can see the new values&lt;br /&gt;end &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;At this point I would recommend you to take a look at the Firefox Plugin and web page &lt;b&gt;User Agent Switcher: &lt;/b&gt;&lt;a href="http://chrispederick.com/work/user-agent-switcher/features/test/"&gt;http://chrispederick.com/work/user-agent-switcher/features/test/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;In addition, you can enable and disable cookies. Why? If some developer forget to use URL rewriting (JSTL: &lt;c:url ...=""&gt;), you can catch this in your tests. Disable cookies with this code:&lt;/c:url&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #351c75;"&gt;&amp;nbsp; if ENV["disable_cookies"]&amp;nbsp; #or variable or whatever... &lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts "_________________ Cookies have been Disabled...."&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; profile['network.cookie.cookieBehavior'] = 2 #0 enables, 2 disable all&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #351c75;"&gt;&amp;nbsp; end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is all spike code and you should get those snippets and fit in your test implementation. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I am happy to hear your experience! Feel free to write back with your thoughts and suggestions.&lt;br /&gt;&lt;br /&gt;If you are a Mobile Dev and would like to say how you do integration tests or how you do Agile or whatever, leave a comment. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;* Curiosities:&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Capybara creator jnicklas said that wasn't possible to change request headers via Capybara. I found a workaround and did via Selenium Profile. Then I asked him again and He told de me how to do it (Imagine if I had given up with the first answer...). He said that didn't know that was possible to do this workaround...&amp;nbsp; Thanks &lt;/i&gt;&lt;i&gt;jnicklas!!!&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;I almost forgot to sleep one night because the problem was quite interesting... &lt;/i&gt;&lt;/li&gt;&lt;li&gt;I don't know how to format code in this blog, or how to add code block... shame on me...&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;&lt;br /&gt;Leonardo Correa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-5911267418288888624?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/5911267418288888624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/12/mobile-web-sites-bdd-cucumber-capybara.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/5911267418288888624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/5911267418288888624'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/12/mobile-web-sites-bdd-cucumber-capybara.html' title='Mobile Web Sites BDD Cucumber Capybara Gizmo'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-4264046770752460837</id><published>2010-11-30T03:46:00.000-08:00</published><updated>2010-11-30T03:46:58.306-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vim'/><category scheme='http://www.blogger.com/atom/ns#' term='Vi'/><category scheme='http://www.blogger.com/atom/ns#' term='MacVim'/><title type='text'>best vi vim macvim command reference</title><content type='html'>I have recently started using &lt;b&gt;MacVim&lt;/b&gt; for my Ruby stuff I write for fun. It is amazing things you can do using this text editor combined with all those plugins.&lt;br /&gt;&lt;br /&gt;I installed Janus version (https://github.com/carlhuda/janus) of MacVim and turned it to a proper IDE for ruby code.&lt;br /&gt;&lt;br /&gt;I found this website that has absolutely everything about vi - &lt;span style="font-weight: bold;"&gt;best VI reference&lt;/span&gt;:&lt;br /&gt;&lt;span style="font-size: medium;"&gt;&lt;a href="http://www.rayninfo.co.uk/vimtips.html" target="_blank"&gt;http://www.rayninfo.co.uk/&lt;wbr&gt;&lt;/wbr&gt;vimtips.html&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I use Janus on Linux as well and works perfectly as well. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;&lt;br /&gt;Leonardo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-4264046770752460837?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/4264046770752460837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/11/best-vi-vim-macvim-command-reference.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/4264046770752460837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/4264046770752460837'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/11/best-vi-vim-macvim-command-reference.html' title='best vi vim macvim command reference'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-3053353555616718859</id><published>2010-11-24T19:05:00.000-08:00</published><updated>2011-08-13T18:55:49.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inefficiency'/><category scheme='http://www.blogger.com/atom/ns#' term='optus'/><category scheme='http://www.blogger.com/atom/ns#' term='bad customer services'/><title type='text'>Optus inefficiency sucks</title><content type='html'>&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Optus Systems Nightmare&lt;/span&gt;...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have got an Optus mobile post-paid plan in Australia and I am very unhappy with the service provided by this company.&lt;br /&gt;&lt;br /&gt;They are so bad, so inefficient that deserves one post so we can make all that shit public. Maybe they will care about it...&lt;br /&gt;&lt;br /&gt;I set up an online account to check my plan, usage and payments. For some strange reason, the system "locked" my account and when I try to login I get the message:&lt;br /&gt;&lt;br /&gt;"&lt;span style="color: red;"&gt;To protect the security of Optus customers, a limit is placed on the number of login attempts per session. Please verify your User Name and Password and try again later.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Then I call 1300 300 937, speak with some unprepared call centre people and after 35 minutes, the teller says:&lt;br /&gt;&lt;br /&gt;- Yes, sir, your account has been "&lt;span style="font-weight: bold;"&gt;locked"&lt;/span&gt;&lt;br /&gt;- We can't unlock because there is a problem in the system, so you'll have to create another on-line account.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This means I will lose all configurations because of their lack of capability to build systems and solve problems.&lt;br /&gt;&lt;br /&gt;Other funny thing happens when I try to login via iPhone app. It says that my account has been &lt;span style="font-weight: bold;"&gt;temporarily locked&lt;/span&gt;. If they can't unlock, Why the fuck they say "temporarily"???&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I went to the Optus website, clicked in "register" and set up a &lt;span style="font-weight: bold;"&gt;second on-line account&lt;/span&gt;, according to the bad advice from call centre people.&lt;br /&gt;&lt;br /&gt;When I try to link "link billing account" and enter my Optus customer number, I got the following error message:&lt;br /&gt;&lt;br /&gt;"&lt;span class="validation-font"&gt;&lt;span style="color: red;"&gt;This service has previously been added to another web profile. Please login to My Account using your other web profile. &lt;/span&gt;&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Now I am in a situation that I can't fix my first account and can't set up a second one.&lt;br /&gt;&lt;br /&gt;For us that work in IT, it is just unbelievable hear such a huge bullshit. They said that the IT guys are working on it - bullshit again!&lt;br /&gt;&lt;br /&gt;it is amazing how they can &lt;span style="font-weight: bold;"&gt;lock&lt;/span&gt; your account but they can not &lt;span style="font-weight: bold;"&gt;unlock&lt;/span&gt; it.&lt;br /&gt;&lt;br /&gt;All these dodge situations occur specially when you use Internet  services (on-line account or iPhone app). If you are an IT or tech  person and want to take the most of technology AVOID Optus.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-weight: bold;"&gt;Other Problem to prove how bad and inefficient Optus is:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When I migrated from pre-paid to post-paid, my name and surname were wrong in the system. They said that they had to fix my name before start the post-paid contract.&lt;br /&gt;&lt;br /&gt;The teller made a call and ask to change my name. But she changed my first name only. she called again and ask to change my surname. She got an answer back saying that is is not possible to change the name more then once a day because the system doesn't allow that. Change your name on Facebook and see the change straight away. &lt;br /&gt;&lt;br /&gt;If you had any bad experience with Optus feel free to share. I will send this link to Optus and all my friends.&amp;nbsp;I am stuck in a year contract...&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;I figured it out that I am not the only one pissed off with Optus:&lt;br /&gt;&lt;a href="http://bella2007.blogspot.com/2007/10/optus-sucksdont-ever-go-there.htm"&gt;http://bella2007.blogspot.com/2007/10/optus-sucksdont-ever-go-there.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/group.php?gid=23162216637"&gt;http://www.facebook.com/group.php?gid=23162216637&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.facebook.com/group.php?gid=23162216637"&gt;http://www.facebook.com/group.php?gid=23162216637&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;&lt;br /&gt;Leonardo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-3053353555616718859?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/3053353555616718859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/11/optus-inefficiency-sucks.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/3053353555616718859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/3053353555616718859'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/11/optus-inefficiency-sucks.html' title='Optus inefficiency sucks'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-91859318090516734</id><published>2010-11-22T19:41:00.000-08:00</published><updated>2011-05-31T16:15:06.360-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java1.6'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Java 1.5'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Ubuntu'/><title type='text'>Java Sun JDK 1.5 or 1.6 no Ubuntu 10.10 or 11.04 (updated: 01 Jun 2011)</title><content type='html'>As we know, Java 1.5 has not been maintained anymore and Java 6, has been hanging around for a while and Java 7 is coming soon. But it doesn't mean everybody has to move on to Java 1.6. The problem in Ubuntu is they force you to use OpenJDK. Worse yet, they don't let you downgrade to 1.5.&lt;br /&gt;&lt;br /&gt;There are lots of legacy systems running on Java 5 and we can't forget that. It is also about freedom of choice. If you want to install Sun JDK 5 or 6 Ubuntu should not make your life difficult.&lt;br /&gt;&lt;br /&gt;Ubuntu 10 and 11 don't allow us to natively (or easily) install Sun JDK's via apt-get.    &lt;br /&gt;&lt;br /&gt;It is so frustrate when we try to install it on Ubuntu 10.10 and have no luck:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;sudo apt-get install sun-java5-jdk (or&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;sudo apt-get install sun-java6-jdk&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;After installed, the JDK will go to this directory: /usr/lib/jvm/java-6-sun&lt;br /&gt;&lt;br /&gt;You can see all JDK's installed running the following command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;sudo update-java-alternatives -l&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After a while, finally got the solution for this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;sudo add-apt-repository "deb &lt;/span&gt;&lt;a href="http://us.archive.ubuntu.com/ubuntu/" style="font-family: courier new; font-style: italic; font-weight: bold;" target="_blank"&gt;http://us.archive.ubuntu.com/&lt;wbr&gt;&lt;/wbr&gt;ubuntu/&lt;/a&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt; jaunty multiverse"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt; sudo add-apt-repository "deb &lt;/span&gt;&lt;a href="http://us.archive.ubuntu.com/ubuntu/" style="font-family: courier new; font-style: italic; font-weight: bold;" target="_blank"&gt;http://us.archive.ubuntu.com/&lt;wbr&gt;&lt;/wbr&gt;ubuntu/&lt;/a&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt; jaunty-updates multiverse"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;sudo apt-get update &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;sudo apt-get install sun-java5-jdk&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Check it out just to confirm:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: 'courier new'; font-style: italic; font-weight: bold;"&gt;sudo update-java-alternatives -l&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The commands above worked for me in Ubuntu 10 and 11, installing Sun JDK 1.5 and 1.6.&lt;br /&gt;If it doesn't work, try to add the following repositories and repeat the process: (anonymous suggestion - thanks a lot):&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;b&gt;&lt;i&gt;sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse"&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;b&gt;&lt;i&gt;sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse"&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cheers&lt;br /&gt;&lt;br /&gt;Leonardo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-91859318090516734?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/91859318090516734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/11/java-15-no-ubuntu-1010.html#comment-form' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/91859318090516734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/91859318090516734'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/11/java-15-no-ubuntu-1010.html' title='Java Sun JDK 1.5 or 1.6 no Ubuntu 10.10 or 11.04 (updated: 01 Jun 2011)'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-5682259525130588356</id><published>2010-10-23T20:56:00.000-07:00</published><updated>2010-10-23T22:44:17.054-07:00</updated><title type='text'>HP Officejet 6500 refill cartridge LX920 - hacky way</title><content type='html'>My girlfriend bought a printer &lt;span style="font-weight: bold;"&gt;HP Officejet 6500&lt;/span&gt; short ago and we were pretty happy until the cartridge's ink finished.&lt;br /&gt;&lt;br /&gt;I was really disappointed with the price of the new cartridge: AU $50.00. I decided to buy just the ink in order to refill the cartridge.&lt;br /&gt;&lt;br /&gt;When I arrived at home and tried to refill the cartridge, I realized that there was no place to inject the ink.&lt;br /&gt;&lt;br /&gt;I spent a few minutes looking to the fu%$^#g cartridge and conclude that there was no way to access the ink tank without making a hole at the top of the cartridge.&lt;br /&gt;&lt;br /&gt;I will explain what I hacked this cartridge and put the ink inside.&lt;br /&gt;&lt;br /&gt;This next two pictures show all you need:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FL75LBkcFDQ/TMO3x-nFrYI/AAAAAAAAAB8/5MxCgEMmr2g/s1600/all_you_need_02.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 240px; height: 320px;" src="http://2.bp.blogspot.com/_FL75LBkcFDQ/TMO3x-nFrYI/AAAAAAAAAB8/5MxCgEMmr2g/s320/all_you_need_02.JPG" alt="" id="BLOGGER_PHOTO_ID_5531466836589522306" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FL75LBkcFDQ/TMO3rnP1r0I/AAAAAAAAAB0/JY82ZJv8NFw/s1600/all_you_need_01.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 240px; height: 320px;" src="http://1.bp.blogspot.com/_FL75LBkcFDQ/TMO3rnP1r0I/AAAAAAAAAB0/JY82ZJv8NFw/s320/all_you_need_01.JPG" alt="" id="BLOGGER_PHOTO_ID_5531466727238774594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You will need a clip, 20ml ink and obviously the empty cartridge.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step-by-step:&lt;br /&gt;&lt;br /&gt;1 - Buy the ink (see image bellow). I didn't find HP ink then I bought Cannon ink: AU $5.00.&lt;br /&gt;&lt;br /&gt;2 - Get a clip, put on the fire for a few seconds&lt;br /&gt;&lt;br /&gt;3 - Using the hot clip, make a hole in the cartridge on the place appointed in the last picture bellow. You might have to repeat the process if the ink needle doesn't fit in the hole.&lt;br /&gt;&lt;br /&gt;4 - Inject 20 ml of ink slowly&lt;br /&gt;&lt;br /&gt;5 - Seal the hole with a tape&lt;br /&gt;&lt;br /&gt;6 - Put it back in the printer&lt;br /&gt;&lt;br /&gt;7 - It will not work straight away. You will have to use the  functionality in the printer to clean up the print head. Press the  button "&lt;span style="font-weight: bold;"&gt;Setup&lt;/span&gt;", choose "&lt;span style="font-weight: bold;"&gt;Tools&lt;/span&gt;", then select "&lt;span style="font-weight: bold;"&gt;Clean Printhead&lt;/span&gt;".&lt;br /&gt;This could take up to 5 minutes.&lt;br /&gt;&lt;br /&gt;8 - Sometimes the printer may complain about the cartridge. In this case just press ok and ignore those messages about the cartridge.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That is it!&lt;br /&gt;&lt;br /&gt;If you are really wondering what this cartridge looks like inside, take a look at the following pictures:&lt;br /&gt;&lt;br /&gt;Inside the cartridge. Tank on the left and the the sponge on the right side:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_FL75LBkcFDQ/TMO4KJo_cxI/AAAAAAAAACE/hS0KXzjvH70/s1600/inside01.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 251px; height: 320px;" src="http://1.bp.blogspot.com/_FL75LBkcFDQ/TMO4KJo_cxI/AAAAAAAAACE/hS0KXzjvH70/s320/inside01.JPG" alt="" id="BLOGGER_PHOTO_ID_5531467251867153170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;See where you have to make the hole on the left side. On the right, there are three sponges and a little hole between the tank and the sponge compartment:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_FL75LBkcFDQ/TMO4U7E1tvI/AAAAAAAAACM/I1mNg_tIOoE/s1600/inside02.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 240px;" src="http://2.bp.blogspot.com/_FL75LBkcFDQ/TMO4U7E1tvI/AAAAAAAAACM/I1mNg_tIOoE/s320/inside02.JPG" alt="" id="BLOGGER_PHOTO_ID_5531467436935984882" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I have done this twice and everything has been going fine.&lt;br /&gt;&lt;br /&gt;Obviously this cartridge in the pictures is rubbish and can NOT be utilized anymore.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Stay clear from HP!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Leonardo Correa&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-5682259525130588356?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/5682259525130588356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/10/hp-6500-refill-cartridge-lx920-hacky.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/5682259525130588356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/5682259525130588356'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/10/hp-6500-refill-cartridge-lx920-hacky.html' title='HP Officejet 6500 refill cartridge LX920 - hacky way'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_FL75LBkcFDQ/TMO3x-nFrYI/AAAAAAAAAB8/5MxCgEMmr2g/s72-c/all_you_need_02.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-6148500265056779581</id><published>2010-07-22T23:03:00.000-07:00</published><updated>2010-08-07T19:36:55.795-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java2word'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft word'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Java2Word Microsoft Word Document Generator from Java code without any "special" components or libraries</title><content type='html'>I had a problem in my work a few weeks ago which was how to generate one Microsoft Word Document from Java code. Reports were composite by 40 pages around and over 30 database queries to bring data. It also had cover page, table of contents, header, footer and many tables.&lt;br /&gt;&lt;br /&gt;We tried a lot of things but they were all crap solution. We had to delivery those "word" reports so the solution was pretty bad: Generate Jasper RTF and open as an Word Document.&lt;br /&gt;&lt;br /&gt;When you open this rtf, the result is just horrible. You can't properly edit those dodge tables generated by jasper. Other problem is when you save this document as .doc, file size increased from 5 MB to 40 MB.&lt;br /&gt;&lt;br /&gt;So... there were I again... playing around with the problem...&lt;br /&gt;&lt;br /&gt;I decide to create an API in Java to generate Word documents from Java code. The Document generated HAS to be compatible with Microsoft Word  and can't have any manipulation - so has to be ready for the end user!&lt;br /&gt;&lt;br /&gt;I wrote two implementations: one for Word 97 - 2003 and another for Word 2004 +.&lt;br /&gt;&lt;br /&gt;To be honest I spent more time in W2004 because this is the current standard.&lt;br /&gt;&lt;br /&gt;I have created the java project  and hosted in Google code:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/p/java2word/"&gt;http://code.google.com/p/java2word/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The philosophy is have something in Java and really easy like:&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;span class="typ"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;   IDocument myDoc = new Document2004();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   myDoc.getBody().addEle(new Heading1("Heading01"));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   myDoc.getBody().addEle(new Paragraph("This is a paragraph..."));&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;You are Java dev and deal with this API. You Don't need to worry about the implementation!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;*Project has 97% of code test coverage.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;** When I say no "special" components I mean not using any MS library.&lt;br /&gt;In order to use the Java2Word you will need in your classpath xstream (if you use images) and log4j (for other than JBoss server).&lt;br /&gt;Please refer to dependencies section in the project page.&lt;/span&gt;&lt;span style="font-family:arial;"&gt; &lt;/span&gt;&lt;br /&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/7006133869916555295-6148500265056779581?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/6148500265056779581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html#comment-form' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/6148500265056779581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/6148500265056779581'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/07/java2word-word-document-generator-from.html' title='Java2Word Microsoft Word Document Generator from Java code without any &quot;special&quot; components or libraries'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-1522041126209930517</id><published>2010-05-30T01:09:00.000-07:00</published><updated>2010-05-30T01:38:13.900-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='data warehouse'/><title type='text'>SQL Server performs very well on data warehouse</title><content type='html'>I personally don't like .net, ms office, windows and all this shit. Maybe because I love open source, Linux, Java, Mac.&lt;br /&gt;&lt;br /&gt;In a data warehouse project, we utilized MySql as first option but the database was considerably slow with 90 Gigabytes database (We are using "star schema" for the data warehouse).&lt;br /&gt;&lt;br /&gt;In order to solve this problem, the database was switched to SQL Server . After the initial historical loading, the SQL Server database has got 460 Gigabytes of data and I am very impressed with the response time.&lt;br /&gt;&lt;br /&gt;Considering the amount of data processed, I have to admit that SQL Server is a great database for huge data warehouse projects.&lt;br /&gt;&lt;br /&gt;It is difficult to sit on your hands when the SQL Server performs comfortably well in a 460 GB database.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-1522041126209930517?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/1522041126209930517/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/05/sql-server-performs-very-well-on-data.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/1522041126209930517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/1522041126209930517'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/05/sql-server-performs-very-well-on-data.html' title='SQL Server performs very well on data warehouse'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-1515469125795919690</id><published>2010-04-05T06:33:00.000-07:00</published><updated>2010-04-05T07:25:26.374-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cucumber'/><category scheme='http://www.blogger.com/atom/ns#' term='BDD'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss ESB'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='XP'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>Agile na veia: BDD e TDD.</title><content type='html'>Estou trabalhando em um projeto na Austrália onde o pessoal adota agile completo com SCRUM, XP, BDD (Business Driven Development) e TDD (Test Driven Development)&lt;br /&gt;&lt;br /&gt;Vou escrever esse em portugues porque eu não sei se o pessoal esta usando as mesmas coisas no Brazil. E tambem quero praticar meu portugues já que não falo e nem escrevo em pt_br há bastante tempo.&lt;br /&gt;&lt;br /&gt;Ferramentas utilizadas são:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cucumber&lt;/span&gt;: Testes de integração automatizados escritos por QA (quality assurance).  Testes são implementados em &lt;span style="font-weight: bold;"&gt;Ruby&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;JRuby&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Selenium + Webrat:&lt;/span&gt; End-to-end testes totalmente automatizados - acabou aquela época de o tester ficar igual a um macaquinho clicando em todos os links etc...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Agile&lt;/span&gt;: stand up meeting todo dia  pela manha, Retro meetings  no final de cada iteração para discutir o  que ocorreu de bom e ruim. É tipo uma lavação de roupa suja por meia  hora. Pair programming o tempo todo - eu disse o tempo todo. Nenhum  codigo pode ser escrito sem "pair&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;JBoss ESB&lt;/span&gt;: Transformação dos  dados e alimentaçao do FAST. A transformaçao é feita usando &lt;span style="font-weight: bold;"&gt;Smooks&lt;/span&gt; e gerando um XML através do &lt;span style="font-weight: bold;"&gt;Freemaker&lt;/span&gt; e entao fornecendo essa XML  para armazenamento pelo FAST.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Liquibase&lt;/span&gt;: Melhora o controle de mudanças no banco de dados.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;MySql&lt;/span&gt;: Base de dados de uns 90GB.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FAST ESP&lt;/span&gt;: Melhorar performance nas pesquisas e na indexação de documentos. Neste caso FAST e usado como um banco de dados com performance elevada. NÃO ache que documento é um .doc ou .xls. Na minha opinião FAST é um "Elefante branco".&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Git&lt;/span&gt;: Controle de versoes - tipo SVN.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Hudson&lt;/span&gt;: Nosso CI (Continuous integration)&lt;br /&gt;&lt;br /&gt;O que eu mais gostei:&lt;br /&gt;&lt;br /&gt;Com o pair programming eu aprendi Ruby em um tempo muito reduzido. Tambem aprendi a escrever código curto e fácil de ser testado. &lt;br /&gt;&lt;br /&gt;Achei o BDD legal. Outra regra no projeto é: Não se escreve código sem Cucumber test que o justifique. Cucumber testes são escritos no ponto de vista do usuário final e segem todos os critérios de aceitação para aquela implementação. Isso quer dizer que quando você desenvolvedor escreve seu codigo, voce já sabe exatamente o que tem que implementar.&lt;br /&gt;&lt;br /&gt;Comunicação constante  no stand-up sobre o que voce fez, vai fazer e problemas.&lt;br /&gt;Qualquer pedaço de papel ou rabisco vira documentação.&lt;br /&gt;&lt;br /&gt;Também acabou aquela palhaçada de o gerente do projeto ficar enchendo a porra do saco a cada 10 minutos perguntando sobre o andamento da tarefa - é só olhar o card board que está tudo lá (what the fuck???).&lt;br /&gt;&lt;br /&gt;Refactoring o tempo todo. Voce se sente seguro em efetuar um refactoring porque o código esta todo coberto por testes unitários.&lt;br /&gt;&lt;br /&gt;Trabalhei eu vários projetos onde existiam códigos cheios de gambiarra, ninguém sabia como funcionava e niguém podia alterar nada senao parava de funcionar - eu tinha até medo de tocar naquele código.&lt;br /&gt;&lt;br /&gt;Com agile, o codigo fica mais maduro com o passar do tempo porque ele vai ser testado e refatorado centena de vezes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Abraço a todos!&lt;br /&gt;&lt;br /&gt;Leonardo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-1515469125795919690?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/1515469125795919690/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/04/agile-na-veia-bdd-e-tdd.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/1515469125795919690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/1515469125795919690'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2010/04/agile-na-veia-bdd-e-tdd.html' title='Agile na veia: BDD e TDD.'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-2324965517158259230</id><published>2009-12-21T01:22:00.000-08:00</published><updated>2009-12-21T03:35:00.676-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Snow Leopard'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Brasil'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Java Developer convertido ao Mac Os</title><content type='html'>Essa eu vou escrever em português porque este post e direcionado ao pessoal no Brasil. No Brasil, a utilizacão do sistema operacional Mac OS e quase nula.&lt;br /&gt;&lt;br /&gt; No mundo, Mac Os possui somente 7.46% do mercado. O líder ainda e o Windows XP com 57.57% e o Windows Vista aparece em segundo com 21.73% do mercado. Ja o nosso grandioso Linux, possui aproximadamente 2%.&lt;br /&gt;&lt;br /&gt; Aqui na Austrália, praticamente todas as empresas de desenvolvimento usam Mac OS. Mas este privilegio não esta restrito somente a empresas de desenvolvimento mas também empresas em outras áreas. Usuários domésticos também apreciam este sistema operacional.&lt;br /&gt;&lt;br /&gt; &lt;span style="font-weight: bold;"&gt;Perfil do usuário Mac:&lt;/span&gt; Quem gosta de coisa de qualidade e não liga para o valor que vai gastar para ter essa qualidade desejada - dinheiro nao e o problema.&lt;br /&gt; A Apple abriu a primeira loja no Brasil no inicio de 2008 no bairro do Morumbi, em São Paulo&lt;br /&gt;&lt;br /&gt; No meu primeiro dia de trabalho, eu perguntei meu chefe se eu tinha mesmo que usar Mac. Ele disse para eu usar por um més e se eu não gostasse ele me forneceria o sistema operacional que eu quisesse.  As duas primeiras semanas foi só para me acostumar com as novas teclas.&lt;br /&gt; Eu era uma pessoa infeliz e decepcionada usando rWindows, sofrendo com a falta de estabilidade e segurança deste sistema. No Linux, sofria com a falta de usabilidade nas primeiras versões do Linux para desktop.&lt;br /&gt;&lt;br /&gt; Emfim fui apresentado ao &lt;span style="font-weight: bold;"&gt;Mac Os Snow Leopard&lt;/span&gt;! Simplesmente e o sistema que reúne a usabilidade do rWindows e a segurança e estabilidade do Linux!&lt;br /&gt;&lt;br /&gt; Mac e sem duvida um caminho irreversível - Eu nunca mais trabalho em empresa que usa rWindows na minha vida. &lt;b&gt;Ubuntu 9&lt;/b&gt; e uma alternativa barata ao Mac e estaria feliz com ele. Já faco uso do Ubuntu há dois anos.&lt;br /&gt;&lt;br /&gt; &lt;span style="font-style: italic;"&gt;*** Uso Mac OS para desenvolvimento e não falta nenhuma ferramenta para Mac. Caso não exista versão para Mac, pode instalar o macPorts e através dele, instalar qualquer aplicativo Linux no Mac. &lt;/span&gt;&lt;br /&gt; &lt;span style="font-size:85%;"&gt;&lt;br /&gt;Fonte:&lt;br /&gt;http://www.w3counter.com/globalstats.php&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-2324965517158259230?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/2324965517158259230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/12/java-developer-convertido-ao-mac-os.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/2324965517158259230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/2324965517158259230'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/12/java-developer-convertido-ao-mac-os.html' title='Java Developer convertido ao Mac Os'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-8438577790891269078</id><published>2009-08-14T05:39:00.000-07:00</published><updated>2009-10-19T21:05:48.288-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss Seam'/><title type='text'>java.lang.OutOfMemoryError: PermGen space, JBoss running JBoss Seam</title><content type='html'>Who has never faced to &lt;span style="font-style: italic;"&gt;"java.lang.OutOfMemoryError: PermGen space"&lt;/span&gt; using JBoss Application Server and JBoss Seam Framework?&lt;br /&gt;&lt;br /&gt;I have faced to this problem more frequently in production environment because the application has expanded considerably. I remember I had the same problem in Brazil when we were doing our final project of Post Graduate APGS at PUC University. When I got this job, the fist thing I did was change JVM settings to fix this problem in my workstation.&lt;br /&gt;&lt;br /&gt;You are going to see in many sites  and blogs people saying that increasing the PermSize will solve the problem. This way you just postpone this exception.&lt;br /&gt;&lt;br /&gt;By default, the Collect Garbage cleans the Heap but does NOT clean the Permanent Generation.&lt;br /&gt;&lt;br /&gt;The default value for PermSize is 64 MB which is not enough neither for development nor production environment. You definitely should not use the default configuration for professional applications involving JBoss Application Server and JBoss Seam Freamework.&lt;br /&gt;&lt;br /&gt;The only way to really resolve this issue is enabling CG to clean the Permanent Generation space as well.&lt;br /&gt;&lt;br /&gt;I haven't had this problem since I started using those configuration:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I run JBoss in my computer inside Eclipse but if you run outside or for production environment you have to put those parameters on the file JBOSS_HOME/bin/run.conf .&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Specify options to pass to the Java VM.&lt;br /&gt;#&lt;br /&gt;if [ "x$JAVA_OPTS" = "x" ]; then&lt;br /&gt; #JAVA_OPTS="-Xms1024m -Xmx1024m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000"&lt;br /&gt; JAVA_OPTS="-Xms1024m -Xmx1024m -Dsun.rmi.dgc.client.gcInterval=3600000 -Dsun.rmi.dgc.server.gcInterval=3600000 -XX:PermSize=192m -XX:MaxPermSize=192m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled"&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;I am sure you will never see PermGen space again!&lt;br /&gt;&lt;br /&gt;cheers&lt;br /&gt;Leonardo Pinho Correa&lt;br /&gt;Java Analyst/Developer, soccer player and beer drinker&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-8438577790891269078?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/8438577790891269078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/07/javalangoutofmemoryerror-permgen-space.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/8438577790891269078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/8438577790891269078'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/07/javalangoutofmemoryerror-permgen-space.html' title='java.lang.OutOfMemoryError: PermGen space, JBoss running JBoss Seam'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-3339853813872729843</id><published>2009-07-26T18:10:00.000-07:00</published><updated>2010-10-23T20:56:22.031-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySql'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='IT'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss'/><category scheme='http://www.blogger.com/atom/ns#' term='Information Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='JBoss Seam'/><title type='text'>MySQL command Explain saved my life!</title><content type='html'>Today I have to thank &lt;span style="font-weight: bold;"&gt;Paulinho &lt;/span&gt;about everything I learned in my Post Graduate APGS (Analisys, Project and Management of Information System - Latu Sensu ). Paulinho is a database specialist and teaches DB subject at&lt;span style="font-weight: bold;"&gt; PUC-RJ&lt;/span&gt; (Pontífica Universidade Católica) in Rio de Janeiro.&lt;br /&gt;&lt;br /&gt;I remember I didn 't give it a shit about that subject, used to joke about that and I didn 't believe in that f#&amp;amp;*$ng "&lt;span style="font-weight: bold;"&gt;explain&lt;/span&gt;" command at that time.&lt;br /&gt;&lt;br /&gt;I have been involved in a project which uses MySql, JBoss Seam, JBoss Server, JAX-WS and RedHat Linux... Pretty cool stuff!!!&lt;br /&gt;&lt;br /&gt;I had to run one query quite big with a couple of joins. I left running for 1 hour and didn 't finish.&lt;br /&gt;&lt;br /&gt;This time I remembered Database classes with the teacher Paulinho and decided to "explain" that query.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You don't need to be a DBA to do it, just need to put the word "explain" in front of your query and run it!!! like this&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;explain select * from employee inner join department on ...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;The most important thing in your result is the column&lt;span style="font-weight: bold;"&gt; "Type"&lt;/span&gt; which tells you how bad is you query.&lt;br /&gt;&lt;br /&gt;For the worse to the best ones, here are possibles values of &lt;span style="font-weight: bold;"&gt;"Type"&lt;/span&gt; (in Mysql):&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;&lt;span style="font-style: italic;"&gt;All, index, range, Eq_ref, const, system&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you see "All" in any line of the "type" column means you have your ass in the line (tá fudido).&lt;br /&gt;&lt;br /&gt;If you carefully analyze the result you can much improve your query. In my case I just created a few indexes and removed some calculated fields from the clause where.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The original query was running in one hour - The new query ran in less than one minute making  inner join in tables with over 1 million lines each!!!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Now we are going to take a look at Ingres database... Let have a go and see it... write about that later...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Leonardo Correa&lt;br /&gt;Java Analyst/Developer, soccer player and beer drinker&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7006133869916555295-3339853813872729843?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/3339853813872729843/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/07/mysql-command-explain-saved-my-life.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/3339853813872729843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/3339853813872729843'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/07/mysql-command-explain-saved-my-life.html' title='MySQL command Explain saved my life!'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7006133869916555295.post-8867765196463313484</id><published>2009-01-05T22:04:00.000-08:00</published><updated>2009-08-13T18:28:34.717-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Brazil'/><category scheme='http://www.blogger.com/atom/ns#' term='Australia'/><title type='text'>Primeira Impressão – Adelaide, Perth e Melbourne.</title><content type='html'>&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span lang="PT-BR"  style="font-size:14;"&gt;Primeira Impressão – Adelaide, Perth e Melbourne.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;Welcome to the First World Country!!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Já tinha lido muito sobre a Austrália e após alguns dias percebi que aqui tem tudo que se espera do terceiro país mais desenvolvido do mundo (3ª colocado no IDH – Índice de Desenvolvimento Humano da ONU). Não é a toa que grande parte das pessoas que vem acabam permanecendo por tempo indeterminado. Índice de violência e de corrupção são baixos(quase nulo) e não existe o “Forô privilegiado” para políticos como no Brasil e os políticos são julgados como qualquer cidadão. Para resumir, Austrália é o “Brazil” que deu certo! O sistema aqui realmente funciona e vale a pena pagar seus impostos!!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Vida na Austrália...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Logo de cara já vi a “Mão inglesa” - carros com volante no direito e os carros no lado esquerdo. O asfalto aqui é perfeito e as ruas são limpas. Praticamente todos os carros são com câmbio automático, inclusive os carros com 20 ou 30 anos de uso. Há uma grande diversidade de marcas mas as mais predominantes são: Toyota, Subaru, Honda, Suzuki, Ford, Audi e alguns VW...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Praticamente todas as pessoas são “classe média” pois o salário mínimo aqui é em torno de 2000 dólares(Quase 3000 reais). Esse é o salário que um australiano ganha para trabalhar como recepcionista, auxiliar de limpeza, vendedor etc... É um salário bem razoável e suficiente para a pessoa viver de maneira satisfatória, ter carro novo e talvez fazer uma viagem internacional por ano.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Aqui na Austrália, como em todos os países desenvolvidos, é normal fazer viagens internacionais. Quase todos conhecem no mínimo a Europa e ásia e alguns América do sul. As pessoas não acreditam que essa é minha primeira viagem internacional com 26 anos. Então eu tenho que explicar como é a vida em um país subdesenvolvido... Índice de violência é muito baixo. Já os acidentes de trânsito apresentam um número considerável e geralmente são decorrente de consumo de bebidas e drogas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Crianças...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;As crianças são bem educadas e sempre respeitam as pessoas. Não é necessário falar mais de uma vez para elas obedeçam. Para ter uma idéia, quando elas entram no carro, a primeira coisa que elas fazem e colocolar o cinto de segurança. Elas sempre separam o lixo reciclável do lixo normal e nunca jogam lixo no chão. Se não houver lixeira perto, elas quadram o lixo até que encontrem uma. As crianças aqui estudam em horário integral e praticam no mínimo três esportes de forma compulsória. Aqui não se estuda gramática de maneira absurda como no Brasil. Estuda-se somente o básico.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Animais...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Já tive meu primeiro contato com uma aranha “red-back”(Costas vermelha) de 4 centímetros e extremamente perigosa. Essa aranha pode matar uma pessoa caso ela não receba cuidados médicos dentro de 24 h. Essa aranha estava debaixo da mesa de madeira utilizada no almoço de natal. Ainda não vi nenhum canguru...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Praias...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;As praias são limpas e a água é verde e outras são azul turquesa. É possível ver o fundo do mar como se fosse uma piscina – parece a praia de “Lost”. As garotas usam biquines gigantescos e os homens usam bermudas e camisas. Na austrália, há um alto índice de câncer de pele decorrente do sol. O sol é muito forte e parece não haver a proteção na camada de ozônio. Em Perth ou Adelaide eu não consigo ficar no sol por muito tempo. No segundo dia eu já tive que usar protetor solar, camisa e chapel.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Lindas praias porém cheias de tubarões aguardando ansiosamente para fazer um lanche. Saiu uma reportagem sobre um tubarão branco que foi filmado passeando pela praia de Perth a cerca de 300 metros da areia – eu estava nesta praia este dia!!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Vinhos, comida...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;A Austrália tem uma grande tradição em vinhos. É hábito beber vinho aqui. Em alguns dias acho que já bebi mais vinho do que minha vida inteira. Não se come feijão aqui e o almoço geralmente é sanduíche e a grande refeição é à noite. Pizza aqui é realmente saborosa e não é necessário catchup. Finalmente conheci o verdadeiro catchup, que aqui é chamado de molho de tomate. Não é essa porcaria que tem no BR.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Em Melbourne, existem restaurantes tailandeses, vietnamitas, indianos, japoneses, chineses, brasileiros, italianos e de quase todos os países... Melbourne hoje é uma das cidades mais internacionais do mundo. Você vê facilmente nas ruas pessoas de vários países e cada um vestido de uma forma diferente! Neste ponto parece uma Lapa gigante onde cada um faz a sua moda! O pessoal gostou da minha calça xadrez.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Esportes...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Aqui o pessoal gosta de Tênis, Cricket, Rugby e Aussie Rules. O pessoal está começando a se acostumar com o futebol.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Brasil no ponto de vista dos australianos...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;O pessoal aqui não conhece somente Pelé e Carnaval... O pessoal lê bastante Paulo Coelho! Eles conhecem o Cássio que joga no Adelaide FC e Romário que também teve uma passagem rápida por este clube. Eles gostam muito do filme Cidade de Deus e do seriado Cidade dos Homens. Eu vou apresenta-los o Tropa de Elite em breve!!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Todos conhecem a capoeira, carnaval, mulheres, Kaká, Ronaldo, Ronaldinho, Copacabana, bossa nova e samba.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;O caso dos travestis do Ronaldo saiu nos jornais aqui também!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Leis, Bebidas...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Aqui ainda não se conhece nenhum caso de suborno para policiais e eles são todos confiáveis. As leis são extremamente rigorosas aqui. É permitido beber e dirigir dentro de um limite. Para estar apto a dirigir, é aconselhável na primeira hora duas bebidas e depois, uma bebida a cada hora. Os pubs geralmente disponibilizam garrafas de água para facilitar a vida de quem está bebendo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;As cervejas são extremamente saborosas. Existem as cervejas leves(light) e as secas ou fortes(“Pale Ale”, “Dry” ou “Extra dry”). As leves são iguais a skol, antártica e as fortes parecem as cerveja belga ou alemã. Eu bebo bastante cervejas do tipo “pale ale”. Depois de dois copos de 500ml já to ficando meio torto porque ainda to me acostumando com esse tipo de cerveja.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Os australianos(e australianas) bebem muito!!! Mas muito mesmo!!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Eu estava bebendo em um pub, então comecei a conversar com uns caras. Tinha um que já estava bem doidão. Então a garçonete disse para ele:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;“Essa é a sua última cerveja! Bebe essa garrafa de água!”&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Eu disse para o cara que a garçonete estava afim dele mas depois eu descobri que aqui existe um negócio chamado “Responsibility Alchoholic Services”. A garçonete não pode servir bebidas para quem já está ficando bêbado e ela pode ser responsabilizada pelos atos cometidos por essa pessoa bêbada!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Eu quase morri de rir quando a soube disso! Eu já estava quase no meu limite também.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Nights e Mulheres...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Na Austrália em geral existem mais homens do que mulheres. Nas boates que fui, constatei que aproximadamente 55 a 60% eram homens e 40 a 45% eram mulheres. O fato positivo é que as mulheres são bem bonitas e o problema é que os caras também são “boa pinta”...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Então para quem quer se dar bem aqui, vai ter que ralar muito... É aquela velha história né... Eu sempre cobrei muito das pessoas o “diferencial”....&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Percebi que aqui também não seria muito difícil desde de que você faça a diferença!!! Ou seja, depende da disposição ou capacidade de cada um!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;Várias vezes que fui ao bar pegar cervejas e drinks, alguma garota disse: “Hi!” ou “Cheers”... Percebi que as coisas devem ficar mais fáceis no decorrer da noite ou quando a bebida começa a fazer efeito...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;b style=""&gt;&lt;u&gt;&lt;span style="" lang="PT-BR"&gt;Drogas...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;O consumo de drogas é alto porém nenhuma droga é permitida por lei. A maconha é droga quase padrão aqui. Eles consomem a maconha do tipo “Hidropônica”. A droga da elite aqui é a cocaína. A grama da cocaína custa cerca de 300 dólares! Coisa absurda! A droga mais consumida aqui é o ecstase. A droga suja aqui é a heroína.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;br /&gt;&lt;span style="" lang="PT-BR"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="" lang="PT-BR"&gt;&lt;span style="font-weight: bold;"&gt;Essa foi minha primeira impressão sobre a Austrália após 15 dias de observação e muita conversa com as pessoas. Austrália também tem alguns problemas mas nada que se compara aos problemas dos países de terceiro mundo.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;Leonardo Pinho Correa&lt;br /&gt;Java Analyst/Developer, soccer player and beer drinker&lt;br /&gt;&lt;span style="" lang="PT-BR"&gt;&lt;o:p&gt;&lt;/o:p&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/7006133869916555295-8867765196463313484?l=leonardo-pinho.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://leonardo-pinho.blogspot.com/feeds/8867765196463313484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/01/primeira-impresso-adelaide-perth-e.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/8867765196463313484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7006133869916555295/posts/default/8867765196463313484'/><link rel='alternate' type='text/html' href='http://leonardo-pinho.blogspot.com/2009/01/primeira-impresso-adelaide-perth-e.html' title='Primeira Impressão – Adelaide, Perth e Melbourne.'/><author><name>Leonardo Correa</name><uri>http://www.blogger.com/profile/08270375448570135516</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://3.bp.blogspot.com/-afie4Uu9zjM/TWEDBsjNowI/AAAAAAAAACc/YQmXQ9MxYgE/s220/OgAAAI160KbO9DraXnbf6xO4AonpTzQ7TV1Yyy_F4eDdCyYkfk3lKmFqaYUxsp_R7FvVeosSdcNHuMmvXDJ2G_TiaUcAm1T1UAz8AHkYy6_XTwmqTFlt_4ROoHtv.jpg'/></author><thr:total>0</thr:total></entry></feed>
