<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Willian Mitsuda.com</title>
	<atom:link href="http://www.willianmitsuda.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.willianmitsuda.com</link>
	<description></description>
	<lastBuildDate>Sun, 24 Aug 2008 03:58:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Minha (Ex-)Corretora Quer Que Eu Perca Dinheiro!</title>
		<link>http://www.willianmitsuda.com/2008/08/24/minha-ex-corretora-quer-que-eu-perca-dinheiro/</link>
		<comments>http://www.willianmitsuda.com/2008/08/24/minha-ex-corretora-quer-que-eu-perca-dinheiro/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 03:58:19 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[WTF]]></category>
		<category><![CDATA[finance]]></category>
		<category><![CDATA[money]]></category>
		<category><![CDATA[stock market]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/?p=60</guid>
		<description><![CDATA[Corretoras de valores não prestam. Faturam os tubos em cima de um modelo de negócio baseado em cobrar X por transação, e em troca você tem à sua disposição (sic) sistemas de home broking toscos que caem toda vez que Ben Bernanke dá um espirro.
Me interessei pelo mercado acionário em 2003, quando esse hype em [...]]]></description>
			<content:encoded><![CDATA[<p>Corretoras de valores não prestam. Faturam os tubos em cima de um modelo de negócio baseado em cobrar X por transação, e em troca você tem à sua disposição (sic) sistemas de home broking toscos que caem toda vez que Ben Bernanke dá um espirro.</p>
<p>Me interessei pelo mercado acionário em 2003, quando esse hype em cima da bolsa de valores brasileira estava ainda começando. Hoje a maioria das corretoras cobra um valor fixo por transação do cliente (geralmente na faixa de 10 a 20 reais). Na época o modelo de cobrança mais comum, e que era (e ainda é) usado pela corretora que eu havia escolhido era o de cobrar uma porcentagem sobre o valor transacionado. É a tal da tabela de preços sugerida pela BOVESPA que hoje só é seguido por algumas corretoras jurássicas e corretoras de vinculadas a bancos. Desde o ano passado eu passei a operar também por outra corretora, justamente por causa desse problema do custo por transação, mas por razões pessoais preferi manter uma parte dos meus recursos na corretora antiga.</p>
<p>Bom, já deu para perceber que o faturamento de uma corretora é influenciada diretamente pela quantidade de transações que seus clientes efetuam. Cliente que não compra e vende ações não dá dinheiro para a corretora. O modelo de negócios de uma corretora gira em torno do &#8220;fazer o cliente efetuar transações&#8221;. Quanto mais melhor. Videozinhos, tutoriais, fóruns repletos de imbecis pedindo dicas de investimento, cursinhos de análise técnica, tudo isso é feito para se criar uma atmosfera em que o cliente se sinta &#8220;O&#8221; mega investidor e opere cada vez mais.</p>
<p>Mas aqui cabe uma pergunta: qual a razão que leva uma pessoa a procurar uma corretora de valores para negociar ações ela mesma ao invés de, por exemplo, simplesmente colocar tudo num fundo de ações e esquecer? Um bom motivo é poder ter controle sobre sua estratégia de investimento. Só que existe uma estratégia que consiste em simplesmente ficar fora do mercado. Sim, isso mesmo, ficar fora. Ou você, leitor desse blog, acha uma decisão coerente ficar comprado e ver seu rico dinheirinho ir para o buraco enquanto o mundo inteiro está caindo?</p>
<p>Bom, acho que os analistas da minha ex-corretora acham que sim. No mês de maio, um pouco depois da euforia causada pelo investment grade resolvi vender tudo. Foi um pouco antes da BOVESPA atingir o topo histórico e entrar na tendência de baixa de curto prazo que se mantém até agora. Foi então que comecei a receber telefonemas insistentes (vários) de uma pessoa que se dizia gerente da minha conta, dizendo que &#8220;por uma política interna da corretora, não é permitido ficar com recursos parados em conta&#8221;. Ora bolas, quer dizer que eu, cliente, não posso utilizar uma estratégia perfeitamente comum e racional que é ficar fora do mercado, enquanto está tudo caindo? Ou ela espera que eu, cliente, permaneça comprado e veja meu patrimônio se desvalorizar?</p>
<p>Para ilustrar melhor, vamos observar o gráfico do IBOVESPA desse período:</p>
<p><img class="alignnone size-full wp-image-77" title="bovespa-queda" src="http://www.willianmitsuda.com/wp-content/uploads/bovespa-queda.png" alt="" width="439" height="720" /></p>
<p>A seta verde indica mais ou menos o período em que vendi tudo e fiquei 100% líquido. As setas vermelhas são os dias em que me ligaram da corretora. Foram no total 4 (quatro!) ligações da tal gerente de contas me questionando por que eu estava vendido, blá, blá, blá, e querendo me oferecer &#8220;dicas&#8221;, afinal dinheiro parado em conta não rende&#8230; Pode se ver pelo gráfico acima que realmente eu fiz um péssimo negócio ficando fora do mercado&#8230;</p>
<p>A gota d&#8217;água foi depois de algumas semanas de encheção de saco e várias ligações da inconveniente gerente de contas, quando recebi o seguinte e-mail:</p>
<p><img class="alignnone size-full wp-image-78" title="mail-corretora" src="http://www.willianmitsuda.com/wp-content/uploads/mail-corretora.png" alt="" width="474" height="526" /></p>
<p>Pois é&#8230; fui expulso da minha corretora por não querer perder dinheiro! O final da história? Bem, eles perderam um cliente, e a <a href="http://www.wintrade.com.br/">Wintrade</a> ganhou um novo (pelo menos enquanto eles não implicarem comigo por deixar a conta parada&#8230; rs).</p>
<p>PS: achei melhor omitir o nome da corretora. Mas caso estejam curiosos, vocês podem imaginar uma famosa e tradicional corretora que &#8220;obriga&#8221; os clientes a usar a versão HTML do sistema porque a versão com atualização em tempo real é uma Applet Java tosca cheio de memory leaks que deixa o sistema lento e trava o browser a cada meia hora <img src='http://www.willianmitsuda.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/08/24/minha-ex-corretora-quer-que-eu-perca-dinheiro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Be Agile with Scrum and&#8230; iPhone?</title>
		<link>http://www.willianmitsuda.com/2008/08/23/be-agile-with-scrum-and-iphone/</link>
		<comments>http://www.willianmitsuda.com/2008/08/23/be-agile-with-scrum-and-iphone/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 02:13:32 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[Scrum]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[planning poker]]></category>
		<category><![CDATA[uol]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/?p=62</guid>
		<description><![CDATA[My employer started to adopt Scrum in the entire company some months ago, but we have been missing card decks in the planning poker sessions. My co-worker and iPhone addicted, Marco Túlio, came out with a simple and interesting solution:

Use the iPhone as a virtual planning poker card  
Check out his work: http://www.coders.com.br/iplanning/
]]></description>
			<content:encoded><![CDATA[<p>My <a href="http://www.uol.com.br/">employer</a> started to adopt <a href="http://blog.aspercom.com.br/2008/07/29/uol-indo-para-agilidade/">Scrum in the entire company</a> some months ago, but we have been missing <a href="http://www.crisp.se/planningpoker/">card decks</a> in the <a href="http://en.wikipedia.org/wiki/Planning_poker">planning poker</a> sessions. My co-worker and iPhone addicted, Marco Túlio, came out with a simple and interesting solution:</p>
<p><a href="http://www.coders.com.br/iplanning/"><img class="alignnone size-full wp-image-63" title="iPlanning" src="http://www.willianmitsuda.com/wp-content/uploads/iplanning.jpg" alt="" width="320" height="480" /></a></p>
<p>Use the iPhone as a virtual planning poker card <img src='http://www.willianmitsuda.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Check out his work: <a href="http://www.coders.com.br/iplanning/">http://www.coders.com.br/iplanning/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/08/23/be-agile-with-scrum-and-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Widgets Can Kill Your Website</title>
		<link>http://www.willianmitsuda.com/2008/05/29/widgets-can-kill-your-website/</link>
		<comments>http://www.willianmitsuda.com/2008/05/29/widgets-can-kill-your-website/#comments</comments>
		<pubDate>Thu, 29 May 2008 18:57:58 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[Performance]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[digg]]></category>
		<category><![CDATA[firebug]]></category>
		<category><![CDATA[rec6]]></category>
		<category><![CDATA[widget]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/?p=58</guid>
		<description><![CDATA[Today, it is very common for people to embed widgets in their website, blog, etc. Usually these widgets are provided by social apps who want to promote their service by inserting their widgets in most sites, in exchange to providing some kind to benefit to the site owner, like improving visibility by using some kind [...]]]></description>
			<content:encoded><![CDATA[<p>Today, it is very common for people to embed widgets in their website, blog, etc. Usually these widgets are provided by social apps who want to promote their service by inserting their widgets in most sites, in exchange to providing some kind to benefit to the site owner, like improving visibility by using some kind of ranking, etc.</p>
<p>However, using a poor engineered service can degrade your website&#8217;s performance substantially. One real example I just faced is with the <a href="http://www.chrinvestor.com/">CHR Investor</a> website. It is a brazilian blog I read and like very much, about stock market. They put a widget from <a href="http://rec6.via6.com/">Rec6</a>, a brazilian Digg-like website. This widget is a <a href="http://digg.com/">Digg</a>-like voting widget: it shows the number of votes the article has, and a button to vote on it.</p>
<p>However, the Rec6 servers have been very slow to respond and this is degrading the blog&#8217;s performance very much. As you can see in the next screenshot, taken from <a href="http://www.getfirebug.com/">Firebug</a>, the widget is loaded from an external javascript, which takes ~9 seconds to load (actually, in my tests the response time is varying between 5 and 12 seconds)!</p>
<p><img class="alignnone size-full wp-image-59" title="Firebug screenshot" src="http://www.willianmitsuda.com/wp-content/uploads/performance-rec6-chrinvestor.png" alt="" width="497" height="514" /></p>
<p>Those who already read the excellent <a href="http://www.oreilly.com/catalog/9780596529307/">High Performance Web Sites</a> book (chapter 6, more precisely) know what this means: an external javascript blocks everything until it is entirely loaded. This can be seem clearly in the picture: only after the widget is loaded, the rest of the page is downloaded.</p>
<p>The result from the visitor point of view is also very noticeable: the beginning of the page is loaded and rendered, everything freezes for ~9 seconds (the amount of time it takes to load the javascript from Rec6), and only then the rest of the page is rendered, very quickly.</p>
<p>So, if you intend to embed some kind of external service in your website, it is important to measure if they can handle the load of thousands (millions?) of users using their service.</p>
<p>I use some services here, like Google Adsense, Google Analytics, and the Google Reader Shared Items. The Google Analytics and Google Reader are a little slow (~200-400ms), but they don&#8217;t hurt because I can move them to the end of the page. The more problematic is Adsense because it writes content in the middle of the page, so you cannot move it. But the response times (~300ms each ad) don&#8217;t hurt, and are just fine.</p>
<p>More reading:</p>
<p><a href="http://developer.yahoo.com/performance/rules.html#js_bottom">http://developer.yahoo.com/performance/rules.html#js_bottom</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/05/29/widgets-can-kill-your-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Playing with OpenSocial: Memory Game</title>
		<link>http://www.willianmitsuda.com/2008/05/13/playing-with-opensocial-memory-game/</link>
		<comments>http://www.willianmitsuda.com/2008/05/13/playing-with-opensocial-memory-game/#comments</comments>
		<pubDate>Tue, 13 May 2008 21:28:51 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[OpenSocial]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[memory game]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/?p=50</guid>
		<description><![CDATA[I&#8217;ve been playing with OpenSocial APIs in Orkut since the 0.5 release, and now that they finally opened access to all your friends data in 0.7 release (previously you could only access data from those who also signed in for the Orkut sandbox), I started to play more seriously.
Inspired by Aurelio&#8217;s EmoMemory game, I created [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing with <a href="http://code.google.com/apis/opensocial/">OpenSocial APIs</a> in <a href="http://www.orkut.com/">Orkut</a> since the 0.5 release, and now that they finally opened access to all your friends data in 0.7 release (previously you could only access data from those who also signed in for the Orkut sandbox), I started to play more seriously.</p>
<p>Inspired by <a href="http://aurelio.net/soft/emomemory/">Aurelio&#8217;s EmoMemory game</a>, I created a little memory game using your friends thumbnail images. It uses OpenSocial APIs to get the images from your list of friends.</p>
<p><img class="alignnone size-full wp-image-54" title="Memorize" src="http://www.willianmitsuda.com/wp-content/uploads/memory-game-memorize.png" alt="" width="382" height="452" /></p>
<p><a href="http://www.willianmitsuda.com/open-social/memory-game/">Try it here!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/05/13/playing-with-opensocial-memory-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Web Standards Evolve</title>
		<link>http://www.willianmitsuda.com/2008/04/24/how-web-standards-evolve/</link>
		<comments>http://www.willianmitsuda.com/2008/04/24/how-web-standards-evolve/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 23:18:39 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[Funny]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[acid test]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[evolution]]></category>
		<category><![CDATA[homer]]></category>
		<category><![CDATA[simpsons]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/?p=43</guid>
		<description><![CDATA[For a long time, we had the ACID2 test.

Then Web 2.0 came, and brought a new set of requirements to web browsers. As such, the ACID3 test debuts.

As humanity evolves, the web standards follow. Now, we have the Homer test.

Is your browser capable of rendering Homer correctly?  
]]></description>
			<content:encoded><![CDATA[<p>For a long time, we had the <a href="http://www.webstandards.org/action/acid2/guide/">ACID2 test</a>.</p>
<p><a href="http://www.willianmitsuda.com/wp-content/uploads/acid2.png"><img class="alignnone size-medium wp-image-45" title="ACID2 Reference Rendering" src="http://www.willianmitsuda.com/wp-content/uploads/acid2.png" alt="" width="168" height="168" /></a></p>
<p>Then Web 2.0 came, and brought a new set of requirements to web browsers. As such, the <a href="http://www.webstandards.org/action/acid3">ACID3 test</a> debuts.</p>
<p><a href="http://www.willianmitsuda.com/wp-content/uploads/acid31.png"><img class="alignnone size-full wp-image-47" title="ACID3 Reference Rendering" src="http://www.willianmitsuda.com/wp-content/uploads/acid31.png" alt="" width="500" height="337" /></a></p>
<p>As humanity evolves, the web standards follow. Now, we have the <a href="http://www.romancortes.com/blog/homer-css/">Homer test</a>.</p>
<p><a href="http://www.willianmitsuda.com/wp-content/uploads/homer.png"><img class="alignnone size-full wp-image-48" title="Homer Reference Rendering" src="http://www.willianmitsuda.com/wp-content/uploads/homer.png" alt="" width="378" height="466" /></a></p>
<p>Is your browser capable of rendering Homer correctly? <img src='http://www.willianmitsuda.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/04/24/how-web-standards-evolve/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>java.net.URL is Evil</title>
		<link>http://www.willianmitsuda.com/2008/03/03/javaneturl-is-evil/</link>
		<comments>http://www.willianmitsuda.com/2008/03/03/javaneturl-is-evil/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 06:51:03 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[equals]]></category>
		<category><![CDATA[evil]]></category>
		<category><![CDATA[hashcode]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[update manager]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/2008/03/03/javaneturl-is-evil/</guid>
		<description><![CDATA[This is something I wanted to blog about since long time. Although some people had already talked about this beast before, this is not a well known issue, and spreading this information is never enough.
From java.net.URL.equals() javadoc:
Compares this URL for equality with another object.
If the given object is not a URL then this method immediately [...]]]></description>
			<content:encoded><![CDATA[<p>This is something I wanted to blog about since long time. Although some people had already talked about this beast before, this is not a well known issue, and spreading this information is never enough.</p>
<p>From java.net.URL.equals() javadoc:</p>
<p><cite>Compares this URL for equality with another object.<br />
If the given object is not a URL then this method immediately returns false.<br />
Two URL objects are equal if they have the same protocol, reference equivalent hosts, have the same port number on the host, and the same file and  fragment of the file.<br />
Two hosts are considered equivalent if both host names can be resolved into the same IP addresses; else if either host name can&#8217;t be resolved, the host  names must be equal without regard to case; or both host names equal to null.<br />
<strong>Since hosts comparison requires name resolution, this operation is a blocking  operation.</strong><br />
Note: The defined behavior for equals is known to be  inconsistent with virtual hosting in HTTP.</cite></p>
<p>Now, the java.net.URL.hashCode() javadoc:</p>
<p><cite>Creates an integer suitable for hash table indexing.<br />
The hash code is based upon all the URL components relevant for URL  comparison. <strong>As such, this operation is a blocking operation</strong>.</cite></p>
<p>Note the highlighted phrase. Yes, that&#8217;s it&#8230; I know exactly what you are thinking&#8230;</p>
<p><strong>OMFG!!! java.net.URL.equals() and hashCode() DO A NETWORK CONNECTION!!!</strong></p>
<p>That is one of the biggest traps and horrendous mistakes I&#8217;ve seem in JDK code. That is a totally broken example of equals()/hashCode() implementation. An unadvertised developer may be tempted to innocently use URL objects inside some collection and get some headaches&#8230;</p>
<p>Actually, that&#8217;s what happens in Eclipse update manager (at least until Eclipse 3.3; 3.4 will [hopefully] have a new one). Their code use maps of URL objects as keys to compute update sites from each installed feature. The result is a well known hang in code that was supposed to be very quick:</p>
<p><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=117708">https://bugs.eclipse.org/bugs/show_bug.cgi?id=117708</a></p>
<p><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=121201">https://bugs.eclipse.org/bugs/show_bug.cgi?id=121201</a></p>
<p><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=164211">https://bugs.eclipse.org/bugs/show_bug.cgi?id=164211</a></p>
<p><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=205001">https://bugs.eclipse.org/bugs/show_bug.cgi?id=205001</a></p>
<p><a href="http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html">http://michaelscharf.blogspot.com/2006/11/javaneturlequals-and-hashcode-make.html</a></p>
<p>So, the lesson today is: be very careful with URL objects. NEVER use them as keys in HashMaps or elements in HashSets. NEVER use them in a context where you need to compare them. If possible, work with the String representation of the URL, so you are safe from its evil side effects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/03/03/javaneturl-is-evil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eclipse Plugin Development Tip and Tricks</title>
		<link>http://www.willianmitsuda.com/2008/02/07/eclipse-plugin-development-tip-and-tricks/</link>
		<comments>http://www.willianmitsuda.com/2008/02/07/eclipse-plugin-development-tip-and-tricks/#comments</comments>
		<pubDate>Thu, 07 Feb 2008 20:31:46 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[jface]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[swt]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/2008/02/07/eclipse-plugin-development-tip-and-tricks/</guid>
		<description><![CDATA[Some quick and dirty nuggets of information I got while doing plugin development in Eclipse platform. For most of them I didn&#8217;t find documentation, so I hope Google will index this for others stumbling on similar needs.
Need to create a dialog for displaying and selecting from a list of items with filtering support, similar to [...]]]></description>
			<content:encoded><![CDATA[<p>Some quick and dirty nuggets of information I got while doing plugin development in Eclipse platform. For most of them I didn&#8217;t find documentation, so I hope Google will index this for others stumbling on similar needs.</p>
<p><strong>Need to create a dialog for displaying and selecting from a list of items with filtering support, similar to Open Type/Resource?</strong></p>
<p>Subclass <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/dialogs/FilteredItemsSelectionDialog.html">FilteredItemsSelectionDialog</a> (since Eclipse 3.3). Override methods to define your providers and filtering policy.</p>
<p>Similar implementations are Open Task dialog from Mylyn (Ctrl+F12) and Open Plug-in Artifact from PDE 3.4 (Ctrl+Shift+A). You can take a look at their source code to see how they were implemented. If using Eclipse 3.4, use the cool <a href="http://www.eclipse.org/pde/incubator/spy/index.php">Plugin Spy</a> (Alt+Shift+F1) while dialog is open to discover and get linked to the class source code.</p>
<p><img src="http://www.willianmitsuda.com/wp-content/uploads/eclipse_tips/spy_opentype.gif" alt="spy_opentype.gif" border="0" height="400" width="336" /></p>
<p><strong>How to make an ToolItem produced by an IAction show both text and image when working with IToolBarManager?</strong></p>
<p>When working with raw SWT <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/ToolBar.html">ToolBar</a>/<a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/ToolItem.html">ToolItem</a> this is easily accomplished. But when you are working with JFace <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/action/IToolBarManager.html">IToolbarManager</a>/<a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/action/IAction.html">IAction</a>, you will see that even if you define both text and image for an IAction using #setText(String) and #setImage(ImageDescriptor), the resulting control will show only the image. No need to curse JFace developers!</p>
<p>The ToolItem creation itself is delegated to an <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/action/IContributionItem.html">IContributionItem</a>. When you invoke IToolBarManager#add(IAction), the action is encapsulated inside an IContributionItem implementation instance, <a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/action/ActionContributionItem.html">ActionContributionItem</a>, whose policy is: if the IAction defines only text, the ToolItem has only text; if the IAction defines an image, use only the image, regardless of text presence.</p>
<p>If you want to display text and image, you need to manually create an ActionContributionItem and override the default policy calling ActionContributionItem.setMode(ActionContributionItem.MODE_FORCE_TEXT).</p>
<pre class="brush: java;">
IAction action = new MyAction();
ActionContributionItem ci = new ActionContributionItem(action);
ci.setMode(ActionContributionItem.MODE_FORCE_TEXT);
IToolBarManager tbm = new ToolBarManager();
tbm.add(ci);
</pre>
<p>This way, the ToolItem will display text and image, positioned according to the ToolBar style: text under image by default; text after image, if using SWT.RIGHT style.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/02/07/eclipse-plugin-development-tip-and-tricks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palm drops Java VM</title>
		<link>http://www.willianmitsuda.com/2008/01/27/palm-drops-java-vm/</link>
		<comments>http://www.willianmitsuda.com/2008/01/27/palm-drops-java-vm/#comments</comments>
		<pubDate>Sun, 27 Jan 2008 05:53:46 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[Palm]]></category>
		<category><![CDATA[j9]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[jvm]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/2008/01/27/palm-drops-java-vm/</guid>
		<description><![CDATA[As of January 12, 2008, Palm stopped the distribution of the JVM for Palm OS.
Java never was a very popular platform for Palm OS development, neither Palm -&#62; Palm Source -&#62;&#160;Palm Inc promoted its use very much. The distributed JVM was actually a licensed version of IBM&#39;s J9. The latest version (released in 2005) supports [...]]]></description>
			<content:encoded><![CDATA[<p>As of January 12, 2008, <a href="http://www.palm.com/us/support/jvm/">Palm stopped the distribution of the JVM for Palm OS</a>.</p>
<p>Java never was a very popular platform for Palm OS development, neither Palm -&gt; Palm Source -&gt;&nbsp;Palm Inc promoted its use very much. The distributed JVM was actually a licensed version of IBM&#39;s J9. The latest version (released in 2005) supports MIDP 2.0 with some optional JSRs: <a href="http://jcp.org/en/jsr/detail?id=75">JSR-75</a> (PDA Optional Packages) and <a href="http://jcp.org/en/jsr/detail?id=172">JSR-172</a> (J2ME Web Services). It didn&#39;t come pre-installed with your device (at least it didn&#39;t in my Zire 72) or available in the installation CD; you had to manually register and download it from Palm support website.</p>
<p>While its competitors support <a href="http://www.forum.nokia.com/main/resources/technologies/java/">Java ME out-of-the-box</a>, Palm never cared about taking advantage of its superior PDA UI against the limited phone UI from its concurrents, and it took very long for developers to have available at least a descent JVM supporting the lowest common denominator of mobile widget toolkits which is the MIDP.</p>
<p>Some people may complain about the relevance of this fact, arguing about the relevance of Java ME itself, which may be somewhat true regarding its limitations and the amount of very cool MIDP applications versus very cool native applications available on market. But I believe it can have its niche, maybe quick-and-dirty internal corporate applications, for example. And I still believe strongly that the power of a platform is directly proportional to the amount of developer support you provide (developer diversity included).  </p>
<p>So, apparently now you are on your own. If you downloaded it before January 12, congratulations. If you didn&#39;t, it&#39;s time to look for alternatives. I don&#39;t know if it&#39;s possible to license it directly from IBM. But looking at Palm&#39;s strategy over the last few years, perhaps it&#39;s time to search for a platform alternative&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/01/27/palm-drops-java-vm/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Remembering the Logo Language</title>
		<link>http://www.willianmitsuda.com/2008/01/01/remembering-the-logo-language/</link>
		<comments>http://www.willianmitsuda.com/2008/01/01/remembering-the-logo-language/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 02:37:59 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[Logo]]></category>
		<category><![CDATA[apple II]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[cdt]]></category>
		<category><![CDATA[djgpp]]></category>
		<category><![CDATA[dosbox]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[grx]]></category>
		<category><![CDATA[mingw]]></category>
		<category><![CDATA[programming language]]></category>
		<category><![CDATA[rhide]]></category>
		<category><![CDATA[wascana]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/2008/01/01/remembering-the-logo-language/</guid>
		<description><![CDATA[Jeff Atwood from Coding Horror just posted about the Logo language. Like him, and many of the commenters in his post, that language had a great influence in my own career. I could say that my contact with Logo was responsible for making me gain interest for software development. And yes, I didn&#39;t know it [...]]]></description>
			<content:encoded><![CDATA[<p>Jeff Atwood from Coding Horror <a href="http://www.codinghorror.com/blog/archives/001026.html">just posted</a> about the <a href="http://en.wikipedia.org/wiki/Logo_(programming_language)">Logo language</a>. Like him, and many of the commenters in his post, that language had a great influence in my own career. I could say that my contact with Logo was responsible for making me gain interest for software development. And yes, I didn&#39;t know it was a easy-to-read LISP language too&#8230;</p>
<p>Everything began in 1990, when I was 10 years old. I started to have computer classes in my college. At that time, computer classes meant to learn a programming language: the first year was Logo, some Basic variant on next year. After that, we would learn to use Wordstar and then some database programming with dBase III. Ah, good old days!</p>
<p>It was my first contact with computers. We used a Apple II clone, <a href="http://eufiz.kit.net/FMU/apple2.html">Exato</a>, with a Logo implementation called MLogo. According to my professor, it was Microsoft Logo; unfortunately I couldn&#39;t find any references on this to confirm&#8230; If you have some MLogo disk image lost somewhere that can be emulated, please comment!&nbsp;</p>
<p><img src="http://www.willianmitsuda.com/wp-content/uploads/exato-pro.gif" border="0" alt="Exato PRO" title="Exato PRO" width="261" height="263" align="right" />Thanks to Logo is was able to learn and practice things &quot;normal people&quot; only learn years later, for example, mathematical concepts like angles and some basic trigonometry. I remember being surprised to know that a circle is just a polygon with some many sides you just don&#39;t notice. I also learned procedural programming by breaking bigger problems into small procedures.</p>
<p>It was very funny to spend some hours just drawing pictures and playing with the repeat command.&nbsp;</p>
<p>In 1999 I had another contact with Logo during my graduation in Computer Science. Apparently my C professors were fans of Logo too, and they proposed a exercise to make a simple Logo interpreter, consisting of a simple shell and basic drawing operations: forward, left, right and the repeat command.</p>
<p>I was so excited while implementing it, that I ended up implementing a lot more features than previously planned. I implemented most drawing functions, color changing, pen modes, and repeat (loop) command with nested blocks.</p>
<p>That code was left hibernating in my old HD until now. After reading that nostalgic post from Jeff, I decided to release it under GPL at <a href="http://code.google.com/p/minilogo/">Google Code</a>, so it doesn&#39;t got lost someday. It uses a portuguese Logo dialect, and the source code comments are also in portuguese.</p>
<p>I don&#39;t plan to evolve that code, but maybe I would rewrite it in another language or platform when I have time. The source is just for study purposes (but don&#39;t forget it is a beginner C programmer&#39;s code, so be aware that it may contain some <a href="http://thedailywtf.com/">WTF code</a> <img src="http://www.willianmitsuda.com/wp-content/plugins/Wysi-Wordpress/plugins/emotions/images/smiley-embarassed.gif" border="0" alt="Embarassed" title="Embarassed" />).</p>
<p>Impressively, I was able to run the original 1999 executable using <a href="http://www.dosbox.com/">DOSBox</a>, an MS-DOS emulator. I was even able to run <a href="http://www.rhide.com/">RHIDE</a>, the IDE which comes with DJGPP I used to develop the original code! It is not just for running old games <img src='http://www.willianmitsuda.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I did some minor modifications to make it work in win32. Originally the code was written using the free <a href="http://www.delorie.com/djgpp/">DJGPP</a>/<a href="http://www.gnu.org/">GNU</a> toolchain and the <a href="http://grx.gnu.de/">GRX</a> graphics library for DOS environment, so the executable was not working in Windows Vista.</p>
<p>Thankfully, GRX is multi-platform, and with some little modifications I was able to make it compile and run under <a href="http://wascana.sourceforge.net/">Wascana</a> (an <a href="http://www.eclipse.org/">Eclipse</a>/<a href="http://www.eclipse.org/cdt/">CDT</a>/<a href="http://www.mingw.org/">MinGW</a> bundle). So, the executable available for download can be run directly on Windows.</p>
<p>You can download it and see some screenshots <strong><a href="http://www.willianmitsuda.com/mini-logo/">here</a></strong>.&nbsp;</p>
<p><em>Credit for the Exato PRO photo: <a href="http://eufiz.kit.net/FMU/index.html">Idalio Manuel</a>.&nbsp;</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2008/01/01/remembering-the-logo-language/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New GMail App for Nokia E61 &#8211; A step back?</title>
		<link>http://www.willianmitsuda.com/2007/12/30/new-gmail-app-for-nokia-e61-a-step-back/</link>
		<comments>http://www.willianmitsuda.com/2007/12/30/new-gmail-app-for-nokia-e61-a-step-back/#comments</comments>
		<pubDate>Sun, 30 Dec 2007 19:23:26 +0000</pubDate>
		<dc:creator>Willian Mitsuda</dc:creator>
				<category><![CDATA[E61]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://www.willianmitsuda.com/2007/12/30/new-gmail-app-for-nokia-e61-a-step-back/</guid>
		<description><![CDATA[I&#39;m a heavy-user of GMail Mobile App. I consider it one of the best and useful Java ME applications ever made. However, I&#39;m very disappointed with the latest version they launched in mid-october.
Although it was released in october, I just made the upgrade few weeks ago, and for my surprise, the new version (v1.5.0.1187) introduced [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;m a heavy-user of <a href="http://www.google.com/mobile/mail/index.html">GMail Mobile App</a>. I consider it one of the best and useful Java ME applications ever made. However, I&#39;m very disappointed with the <a href="http://gmailblog.blogspot.com/2007/10/updated-gmail-for-mobile-application.html">latest version they launched in mid-october</a>.</p>
<p>Although it was released in october, I just made the upgrade few weeks ago, and for my surprise, the new version (v1.5.0.1187) introduced some usability issues:</p>
<p style="font-weight: bold">Startup time</p>
<p>It is incredibly slow to open. It takes at least 10 seconds to open, but sometimes it takes longer.</p>
<p style="font-weight: bold">Changes in shortcut keys</p>
<p>The previous version used the number keys as shortcuts, like * &#8211; star, 9 &#8211; archive, 3 &#8211; mark unread, 8 &#8211; mark spam; and although the Nokia E61 has a full keyboard, you hadn&#39;t to hold the &quot;blue&quot; key (a kind of Shift-key) to activate the shortcut; you just pressed the corresponding &quot;letter&quot; key.</p>
<p>In the new version, I presume they tried to use the same shortcut keys used in normal GMail website: S &#8211; star, Y &#8211; archive, ! &#8211; spam.</p>
<p>Although it is a minor change, it is annoying when they change something you are used to.</p>
<p style="font-weight: bold">Removal of shortcut key</p>
<p>The previous version had a shortcut key of &quot;3&quot; to mark a message unread. This is useful when you want to take a quick look at some big message and want to mark it unread, so you can read it later in your desktop machine.</p>
<p>In the new version they just removed this shortcut key! Please, don&#39;t remove features users are used to!</p>
<p style="font-weight: bold">Introduction of not-so-shortcut keys</p>
<p>Some shortcut keys now requires you to press 2 keys simultaneously! For example, the shortcut to &quot;search&quot; is &quot;/&quot;, but it doesn&#39;t respond if you just press the corresponding key for &quot;/&quot;, because in Nokia E61 keyboard &quot;/&quot; is &quot;Blue&quot; + &quot;I&quot;. To report spam, you have to press &quot;blue&quot; + &quot;Q&quot; (= &quot;!&quot;). They made it harder to report spam!</p>
<p>The previous version required only 1 key press!&nbsp;</p>
<p style="font-weight: bold">Conclusion</p>
<p>The previous version worked very well with the Nokia E61 keyboard and was very quick and simple. The new version is slower and commands are hard to activate due to the changes they made in shortcut keys.</p>
<p>These are serious issues (IMHO) because we are talking about a mobile application. In fact, I&#39;m desperately trying to find some place to download the previous version. If you know where to download it, please post a comment.</p>
<p>PS: If someone from Google is reading this, please take it as a constructive criticism, and please, fix these issues <img src='http://www.willianmitsuda.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.willianmitsuda.com/2007/12/30/new-gmail-app-for-nokia-e61-a-step-back/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
