<?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:blogger='http://schemas.google.com/blogger/2008' 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-8406420</id><updated>2024-08-28T09:26:35.604+01:00</updated><category term="java"/><category term="Linux"/><category term="spring"/><category term="PDF"/><category term="Ubuntu"/><category term="ajax"/><category term="mvc"/><category term="ruby"/><category term="struts"/><category term="AOP"/><category term="Bochs"/><category term="Exhibit"/><category term="GWT"/><category term="Gaim"/><category term="Gentoo"/><category term="IM"/><category term="IoC"/><category term="JSP"/><category term="JSTL"/><category term="Javascript"/><category term="Jython"/><category term="MSN"/><category term="Mercury"/><category term="OpenSocial"/><category term="Plex86"/><category term="Python"/><category term="Quemu"/><category term="SIMILE"/><category term="Sabayon"/><category term="Sun"/><category term="Suse"/><category term="XUL"/><category term="ZK"/><category term="aMSN"/><category term="acegi"/><category term="alsa"/><category term="argouml"/><category term="args4j"/><category term="commons cli"/><category term="data binding"/><category term="dead pixels"/><category term="dia"/><category term="duck-typing"/><category term="file handling"/><category term="google maps"/><category term="groovy"/><category term="h2"/><category term="hsqldb"/><category term="itext"/><category term="jakarta commons"/><category term="jconsole"/><category term="lcd monitor"/><category term="ldc"/><category term="mobile"/><category term="monitor"/><category term="pda"/><category term="pocket pc"/><category term="pointui"/><category term="sound"/><category term="sound blaster audigy"/><category term="umbrello"/><category term="uml"/><category term="virtualization"/><category term="vmware"/><category term="webwork"/><category term="wm5"/><category term="xml"/><title type='text'>Carlos&#39; Binary Stuff</title><subtitle type='html'>Technology is us.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default?alt=atom&amp;redirect=false'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default?alt=atom&amp;start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>49</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8406420.post-6639229426296530604</id><published>2009-02-13T15:51:00.001+00:00</published><updated>2009-02-13T15:52:29.897+00:00</updated><title type='text'>JavaFX goes mobile</title><content type='html'>&lt;div xmlns=&#39;http://www.w3.org/1999/xhtml&#39;&gt;&lt;a href=&#39;http://www.javafx.com/&#39;&gt;JavaFX&lt;/a&gt; is a Sun language to develop rich applications for the desktop. Their intent was to make GUI application development easier and more flexible. It never really enthusiam the Java community. I too was not convinced by it. There&#39;s already many solutions to develop desktop aplications, being Flex, probably, the toughest competitor. So, although JavaFX for the desktop is far from being a success, it could become one in another area. &lt;br/&gt;Recently, Sun released a new version that brings JavaFX to the mobile phones. I think this are interesting news, because there&#39;s really a lot to improve in the mobile phone area. Java has a big percentage in the mobile world, with J2ME, but having a better tool for designing applications would be great. Although I don&#39;t have much experience with J2ME, the little experiments that I&#39;ve made showed a restrictive and cumbersome SDK to work with. &lt;br/&gt;I think this are good news for the developers. At least, I&#39;m finally curious about trying JavaFX. As for the business itself, we have to wait. It also depends on the VM and more specifically on its performance. There&#39;s no point on having beautiful (or easily developed) but slow apps.&lt;br/&gt;&lt;br/&gt;Technorati Tags: &lt;a class=&#39;performancingtags&#39; href=&#39;http://technorati.com/tag/java&#39; rel=&#39;tag&#39;&gt;java&lt;/a&gt;, &lt;a class=&#39;performancingtags&#39; href=&#39;http://technorati.com/tag/javafx&#39; rel=&#39;tag&#39;&gt;javafx&lt;/a&gt;, &lt;a class=&#39;performancingtags&#39; href=&#39;http://technorati.com/tag/mobile&#39; rel=&#39;tag&#39;&gt;mobile&lt;/a&gt;&lt;br/&gt;&lt;br/&gt;&lt;div class=&#39;zemanta-pixie&#39;&gt;&lt;img src=&#39;http://img.zemanta.com/pixy.gif?x-id=3f0b4ec2-f4b8-4ae4-a616-eef58488b4c4&#39; class=&#39;zemanta-pixie-img&#39;/&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/6639229426296530604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/6639229426296530604' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/6639229426296530604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/6639229426296530604'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2009/02/javafx-goes-mobile_13.html' title='JavaFX goes mobile'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-7518213116035447712</id><published>2008-05-02T14:59:00.004+01:00</published><updated>2008-05-02T15:07:47.775+01:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="args4j"/><category scheme="http://www.blogger.com/atom/ns#" term="commons cli"/><category scheme="http://www.blogger.com/atom/ns#" term="jakarta commons"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Parse command line arguments with Args4J</title><content type='html'>&lt;a href=&quot;https://args4j.dev.java.net/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;Args&lt;/span&gt;4J&lt;/a&gt; is a useful library to parse command line arguments, instead of doing it by hand. I&#39;m very pleased with its simplicity, something I didn&#39;t find in others libraries.&lt;br /&gt;&lt;br /&gt;Recently I&#39;ve been working on some small console applications in Java. Like most of these applications, it&#39;s often needed to pass them some arguments at the console. For a while I parsed those arguments by hand. However, as soon as I had to do it for a large enough amount of arguments I started searching for a library to simplify things.&lt;br /&gt;&lt;a href=&quot;http://commons.apache.org/&quot;&gt;Jakarta Commons&lt;/a&gt; has all sort of useful libraries and &lt;a href=&quot;http://commons.apache.org/cli/&quot;&gt;Commons &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;CLI&lt;/span&gt;&lt;/a&gt; is one of them. And for a while I used Commons &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;CLI&lt;/span&gt;. But although the code became more organized I felt I had to write as much lines of code as before!&lt;br /&gt;So after another search I found &lt;a href=&quot;https://args4j.dev.java.net/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;Args&lt;/span&gt;4J&lt;/a&gt;. This library makes use of annotations and has a much smaller &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt;API&lt;/span&gt; to use. It&#39;s not as flexible as Commons &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;CLI&lt;/span&gt;, which allows you to parse different styles of arguments, etc. But I don&#39;t need that, I just wanted something to simplify the task. And &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;args&lt;/span&gt;4j does simplify. Here&#39;s an example of how it works:&lt;br /&gt;&lt;br /&gt;Imagine a sample application that tests some external system by sending a request to a specified machine. This application would need the following arguments: -h (the host of the external system) and -p (the port of the external system). This would translate to the following command in the console: &quot;tester -h &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;somemachine&lt;/span&gt;.com -p 9000&quot;.&lt;br /&gt;The main class should look something like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class Tester {&lt;br /&gt;&lt;br /&gt;   @Option(name=&quot;-h&quot;, usage=&quot;host of the external system&quot;, required=true)&lt;br /&gt;   private String host;&lt;br /&gt;&lt;br /&gt;   @Option(name=&quot;-p&quot;, usage=&quot;port of the external system&quot;)&lt;br /&gt;   private int port = 80;&lt;br /&gt;&lt;br /&gt;   public void &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;setHost&lt;/span&gt;(String h){ this.host = h; }&lt;br /&gt;   public void &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;setPort&lt;/span&gt;(int p){ this.port = p; }&lt;br /&gt;&lt;br /&gt;   public static void main(String[] &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_10&quot;&gt;args&lt;/span&gt;) {&lt;br /&gt;&lt;br /&gt;       Tester t = new Tester();&lt;br /&gt;       t.run(&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_11&quot;&gt;args&lt;/span&gt;);&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   public void run(String[] &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_12&quot;&gt;args&lt;/span&gt;) {&lt;br /&gt;&lt;br /&gt;       &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_13&quot;&gt;CmdLineParser&lt;/span&gt; parser = new &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_14&quot;&gt;CmdLineParser&lt;/span&gt;(this);&lt;br /&gt;       try {&lt;br /&gt;           parser.&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_15&quot;&gt;parseArgument&lt;/span&gt;(&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_16&quot;&gt;args&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;           //do whatever ...&lt;br /&gt;           System.out.println(&quot;Testing host &quot; + host + &quot; on port &quot; + port);&lt;br /&gt;&lt;br /&gt;       } catch (&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_17&quot;&gt;CmdLineException&lt;/span&gt; e) {&lt;br /&gt;         &lt;br /&gt;           System.err.println(e.getMessage());&lt;br /&gt;           System.err.println(&quot;\&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_18&quot;&gt;nTester&lt;/span&gt; [options...] arguments...&quot;);&lt;br /&gt;           parser.printUsage(System.err);&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As you can see from the sample above, the clever usage of annotations in this case allows the definition and description of the parameters in a very simple way.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;name&lt;/span&gt; is the argument name that should be typed in the console&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;usage&lt;/span&gt; is the description that is shown in case you don&#39;t type a valid set of arguments&lt;/li&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;required&lt;/span&gt; tells &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_19&quot;&gt;arg&lt;/span&gt;4j that the specified argument is mandatory (see documentation for more options).&lt;/li&gt;&lt;/ul&gt;Also, the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_20&quot;&gt;API&lt;/span&gt; is quite small and does all the validation for you. In this case, the &quot;host&quot; parameter is required, so &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_21&quot;&gt;args&lt;/span&gt;4j will throw an exception if it&#39;s not supplied. And port parameter is automatically converted to &quot;int&quot;. An error is also thrown if it can&#39;t convert it.&lt;br /&gt;If validation succeeds, the values supplied will be bound to the corresponding fields in the class. Also notice that port is not required and has a value defined. This is basically a default value that will be replaced by the supplied argument, if it receives one.&lt;br /&gt;So, with &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_22&quot;&gt;arg&lt;/span&gt;4j, all you have to do is annotate the fields, put the line of code that parses the arguments inside a try-catch block and safely use the fields. That&#39;s pretty cool.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/7518213116035447712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/7518213116035447712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7518213116035447712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7518213116035447712'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/05/parse-command-line-arguments-with.html' title='Parse command line arguments with Args4J'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-8737367509602501949</id><published>2008-03-26T23:30:00.005+00:00</published><updated>2008-03-27T00:03:24.494+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OpenSocial"/><title type='text'>Howto write an application for social networks</title><content type='html'>I&#39;ve been seeing more and more applications for social networks (like &lt;a href=&quot;http://www.hi5.com/&quot;&gt;Hi5&lt;/a&gt;). What I didn&#39;t realise was that it existed a standard API for developing those applications. &lt;a href=&quot;http://code.google.com/apis/opensocial/&quot;&gt;OpenSocial&lt;/a&gt; is a reference API by Google that is being used by some of the major social networks (&lt;a href=&quot;http://www.linkedin.com&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;http://www.hi5.com&quot;&gt;Hi5&lt;/a&gt;, &lt;a href=&quot;http://www.myspace.com&quot;&gt;MySpace&lt;/a&gt;). It makes sense as it allows a developer to create an application or gadget that works in several social networks, or even allows communication between those.&lt;br /&gt;And this explains the amount of new applications that are emerging every day. Still, it amazes me how a consensus was reached to allow this to happen. I thought only W3C had the power to do that. On the other hand, Google is becoming more &quot;standard&quot; than anything else...&lt;br /&gt;On the technical side, the OpenSocial site seems quite good, with lots of documentation and sample applications. I didn&#39;t have the time to read the API itself, but being so well documented it&#39;s a great thing. It makes me think it must be easy to implement this kind of applications. It makes me wanna implement something :)&lt;br /&gt;This also makes me wonder how many interesting Google projects are there that I still never heard of...</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/8737367509602501949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/8737367509602501949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/8737367509602501949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/8737367509602501949'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/03/howto-write-application-for-social.html' title='Howto write an application for social networks'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-7238390490910138224</id><published>2008-03-07T12:27:00.005+00:00</published><updated>2008-03-07T14:41:56.251+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Exhibit"/><category scheme="http://www.blogger.com/atom/ns#" term="google maps"/><category scheme="http://www.blogger.com/atom/ns#" term="Javascript"/><category scheme="http://www.blogger.com/atom/ns#" term="SIMILE"/><title type='text'>Exhibit 2.0 - Javascript web framework</title><content type='html'>I just discovered &lt;a href=&quot;http://simile.mit.edu/exhibit/&quot;&gt;Exhibit&lt;/a&gt; and I&#39;m amazed by its simplicity. Exhibit is a web framework written in Javascript that you can use to display data. It&#39;s not a general purpose framework. It&#39;s focused on displaying data in several formats, like interactive tables, maps, graphs, etc.&lt;br /&gt;What I like about Exhibit is how simple it is to use. Everything is done in a simple HTML file! You heard me right, just HTML. The framework is done in Javascript, and it does all the data manipulation. You just have to add some special attributes to the HTML tags in order to specify how data is going to be shown. That&#39;s the presentation part of the framework. The data itself has to be in JSON format. Just add a &lt;span style=&quot;font-style:italic;&quot;&gt;link&lt;/span&gt; tag pointing at the &lt;span style=&quot;font-style:italic;&quot;&gt;js&lt;/span&gt; file with your data structure and you&#39;re all set. This is actually very flexible. In a simple case you can point to a static &lt;span style=&quot;font-style:italic;&quot;&gt;js&lt;/span&gt; file. But you can also point to an URL that dynamically generates your JSON data.&lt;br /&gt;Exhibit then gives you a few presentation choices. One of them is trough Google Maps. This way you can create mash ups quite easily. Interactive tables that allow filtering and sorting also look nice.&lt;br /&gt;Exhibit is part of &lt;a href=&quot;http://simile.mit.edu/&quot;&gt;SIMILE project&lt;/a&gt;, a joint effort conducted by the &lt;a href=&quot;http://libraries.mit.edu/&quot;&gt;MIT Libraries&lt;/a&gt; and &lt;a href=&quot;http://csail.mit.edu/&quot;&gt;MIT CSAIL&lt;/a&gt;. So simple, but it can be quite useful...and pretty cool.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/7238390490910138224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/7238390490910138224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7238390490910138224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7238390490910138224'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/03/exhibit-20-javascript-web-framework.html' title='Exhibit 2.0 - Javascript web framework'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-4852338427874405452</id><published>2008-03-06T10:24:00.003+00:00</published><updated>2008-03-06T10:51:15.012+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Jython"/><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Sun"/><title type='text'>Pyhton developers hired by Sun</title><content type='html'>This is interesting news:&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.zdnet.com/Burnette/?p=539&quot; rel=&quot;bookmark&quot; title=&quot;Permalink&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://blogs.zdnet.com/Burnette/?p=539&quot; rel=&quot;bookmark&quot; title=&quot;Permalink&quot;&gt; Python’s future looks bright&lt;/a&gt; by &lt;a href=&quot;http://zdnet.com/&quot;&gt;ZDNet&lt;/a&gt;&#39;s Ed Burnette -- It always warms my heart to see good programmers get the recognition they deserve. This week, Sun announced they were hiring Ted Leung (long-time Python developer), and Frank Wierzbicki (lead implementer of the Jython project). They’ll be working full-time on Jython and in particular paying attention to developer tools. Ted and Frank join Charles Nutter, Thomas [...]&lt;/p&gt;&lt;/blockquote&gt;&lt;br /&gt;Although Jython is not new, this shows the current trend in Sun: to support as many languages as possible in the VM. It&#39;s nice to see that not all eggs are being put in the same basket (Ruby) and Python is also getting some attention. I specially like that because I prefer Python over Ruby. This also reminds me of putting Jython in my ToDo list of technologies to check out :)</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/4852338427874405452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/4852338427874405452' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/4852338427874405452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/4852338427874405452'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/03/pyhton-developers-hired-by-sun.html' title='Pyhton developers hired by Sun'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-1022833731220292897</id><published>2008-02-28T11:09:00.004+00:00</published><updated>2008-02-29T15:29:22.670+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="PDF"/><title type='text'>PDFEdit - Editing PDF in Linux</title><content type='html'>Did you ever had the need to alter a PDF file ? For me, it doesn&#39;t happen very often, but when it does I can only think of Acrobat Writer. I know I have also searched the Internet for some free tool, but it&#39;s not easy to find one. I&#39;ve searched for &quot;editing pdfs in Linux&quot; before and come up with nothing but some technique involving saving each page to PostScript, then editing on an image editor, etc...&lt;br /&gt;So it was with a bit of surprise that I found &lt;a href=&quot;http://pdfedit.petricek.net/&quot;&gt;PDFEdit&lt;/a&gt;. It does its job well and has lots of features. At first glance seems like an application that would be very well known. But it&#39;s not the case, and it definitely deserves more spotlight. Check the screenshot below (taken from PDFEdit website):&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a aiotarget=&quot;false&quot; aiotitle=&quot;&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://pdfedit.petricek.net/i/pdfedit-ss-020.png&quot;&gt;&lt;img style=&quot;margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;&quot; src=&quot;http://pdfedit.petricek.net/i/pdfedit-ss-020.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;You can add text, highlight sentences, add pictures, etc. Almost like any other text processing tool. Very cool.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/1022833731220292897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/1022833731220292897' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/1022833731220292897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/1022833731220292897'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/02/pdfedit-editing-pdf-in-linux.html' title='PDFEdit - Editing PDF in Linux'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-8185120806719427497</id><published>2008-02-27T15:08:00.001+00:00</published><updated>2008-02-28T11:08:19.694+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Htop - Manage Your System Processes in Seconds</title><content type='html'>Almost everyday we use &lt;i&gt;top&lt;/i&gt; to check which processes are using more cpu/memory. It&#39;s such a basic tool that I have never spend time searching for something better. Nevertheless, I never found &lt;i&gt;top&lt;/i&gt; to be very intuitive or fast. The article &lt;a href=&quot;http://thedailyubuntu.blogspot.com/2008/02/htop-manage-your-system-processes-in.html&quot;&gt;Htop - Manage Your System Processes in Seconds&lt;br /&gt;&lt;/a&gt; shows an excellent alternative. It starts much faster and it&#39;s much easier to use than &lt;i&gt;top&lt;/i&gt;.&lt;br /&gt;Just to show you an example: if you want to change the order in which processes are displayed, just press F6 and select with your up/down keys the criteria (cpu, memory, etc). Press Enter and voilá. Now try the same on &lt;i&gt;top&lt;/i&gt;! Yes, you can do it with &lt;i&gt;top&lt;/i&gt; almost as fast, but only if you can remember the weird shortcuts. If you use top ocasionally, then using &lt;i&gt;htop&lt;/i&gt; is much simpler and intuitive.&lt;br /&gt;Another example is killing a process: select the process with your up/down keys and press F9.&lt;br /&gt;Just a note for the article &lt;a href=&quot;http://thedailyubuntu.blogspot.com&quot;&gt;author&lt;/a&gt;: very good blog, focused and to the point.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/8185120806719427497/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/8185120806719427497' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/8185120806719427497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/8185120806719427497'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/02/htop-manage-your-system-processes-in.html' title='Htop - Manage Your System Processes in Seconds'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-5421430943465814018</id><published>2008-01-15T15:36:00.000+00:00</published><updated>2008-01-15T15:44:09.069+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="mobile"/><category scheme="http://www.blogger.com/atom/ns#" term="pda"/><category scheme="http://www.blogger.com/atom/ns#" term="pocket pc"/><category scheme="http://www.blogger.com/atom/ns#" term="pointui"/><category scheme="http://www.blogger.com/atom/ns#" term="wm5"/><title type='text'>Thumb navigation and Pointui</title><content type='html'>It&#39;s funny to see the evolution in user interfaces for mobile devices. The evolution from static simples screens to touch screens was a huge step. Allowing a user to write with a plastic pen on a screen was incredible. That evolution allowed the user to do more with his mobile device, at the cost of complexity. There&#39;s no doubt that the introduction of the touch-screen and the pen increased the complexity of the user interface. And that&#39;s because it allowed the user to do more. It almost mimics the desktop computer nowdays. So, that&#39;s a good thing...or not ? In that time it was a great thing....now, we want to be able to the same things but with a simplified interface. That&#39;s the most recent evolution: thumb navigation aka &quot;getting rid of the pen and allowing us to use our fingers&quot; :)&lt;br /&gt;I think what drove this evolution was the merge between the phone and the pda. We don&#39;t mind using a pen with a PDA. We are used to it. But we are not used to need a pen to use a phone. That&#39;s just to much work. I need to access my phone fast and hassle-free. Sometimes I only have one free hand to answer the phone or make a call, it must be able to do it.&lt;br /&gt;Besides all the eye-candy, I think that was the great evolution that iPhone popularized. For me, I don&#39;t own an iPhone, but I own a windows mobile 5 device. And this platform hasn&#39;t seen any user interface improvements in years. It&#39;s almost the same I used several years ago, when I first saw a Pocket PC. So, I have to resort to third-party applications to make my user experience more pleasant.&lt;br /&gt;&lt;a href=&quot;http://www.pointui.com/&quot;&gt;Pointui&lt;/a&gt; is a free application that substitutes wm5 desktop with a thumb-navigation interface with a lot of eye candy, resembling iPhone in many aspects (like scrolling a list). It&#39;s not completely finished yet (it&#39;s a beta) but for me it&#39;s better than using wm5 desktop. You can see a &lt;a href=&quot;http://youtube.com/watch?v=qRw1T-N5dic&quot;&gt;video&lt;/a&gt; of what it feels like.&lt;br /&gt;&lt;br /&gt;The veredict is: I haven&#39;t found many bugs, but there are some things lacking to completely substitute wm 5 interface in day-to-day tasks. Besides that, it&#39;s great and fun to use. Did I mention it&#39;s free ? :) Go ahead and &lt;a href=&quot;http://www.pointui.com/Home.aspx&quot;&gt;try it&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/5421430943465814018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/5421430943465814018' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/5421430943465814018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/5421430943465814018'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/01/thumb-navigation-and-pointui.html' title='Thumb navigation and Pointui'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-7960950249467236540</id><published>2008-01-11T14:23:00.000+00:00</published><updated>2008-01-11T14:30:58.771+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Gentoo"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Sabayon"/><category scheme="http://www.blogger.com/atom/ns#" term="Ubuntu"/><title type='text'>Gentoo and Ubuntu 7.10</title><content type='html'>A few days ago I installed &lt;a href=&quot;http://www.ubuntu.org/&quot;&gt;Ubuntu&lt;/a&gt; 7.10. I needed something quickly and went for Ubuntu. As you might know I used &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt; for several years, so this is quite a change...although I haven&#39;t decided if I&#39;ll keep Ubuntu or install something else.&lt;br /&gt;Before this, I was curious about &lt;a href=&quot;http://www.sabayon.org/&quot;&gt;Sabayon&lt;/a&gt; and I&#39;ll probably try it in a near future. For those who don&#39;t know, Sabayon is a flavor of Gentoo. Sabayon has a nice install with many packages pre-built, so that you don&#39;t have to compile everything.&lt;br /&gt;From this, you might think I got tired of compiling software. Maybe a little, but that was never the reason why I liked Gentoo. I liked Gentoo because of portage, the huge repository, good community-based documentation for almost anything, and even having to hack one thing or another... what I don&#39;t like is having to wait so much time to install a package.&lt;br /&gt;In comparison to Ubuntu, obviously I can install things much faster but I lose the flexibility that portage gave me. Not the &quot;flexibility&quot; of compiling the software...the flexibility of choosing which version of the software I want (not just the last) and which features I want compiled in the software. In the past I had issues with this in Ubuntu: a package was available in repository, but compiled without a feature I needed. Another thing (related to this) I dislike in Ubuntu is the huge dependency tree that I have to pull when installing some packages. In part that&#39;s because in Gentoo I always had several features disabled (like Kde or Gnome integrations if I don&#39;t use them) which saved me from installing a bunch of libraries that I didn&#39;t need.&lt;br /&gt;Well, for now I&#39;ll be using Ubuntu and I already found several good/bad points.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Something I liked was the hardware detection. It detected everything pretty well, including my webcam, printer and digital camera.&lt;/li&gt;&lt;li&gt;Boot time is fast, even gnome starts fast (but I prefer Xfce, which is always faster)&lt;/li&gt;&lt;li&gt;Good collection of GUIs for system configuration.&lt;/li&gt;&lt;/ul&gt;What I didn&#39;t like was some surprising bugs:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;login window sometimes is just a white screen&lt;/li&gt;&lt;li&gt;my wallpaper disappears sometimes, leaving me with a pale blue background&lt;/li&gt;&lt;li&gt;flash plugin for firefox is broken (fixed it manually)&lt;/li&gt;&lt;li&gt;some strange effect in window titles that disappear, under Gnome&lt;/li&gt;&lt;li&gt;Compiz Fusion is not available under XFCE (I&#39;ll try to fix this by hand  when I have the time)&lt;/li&gt;&lt;/ul&gt;</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/7960950249467236540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/7960950249467236540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7960950249467236540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7960950249467236540'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2008/01/gentoo-and-ubuntu-710.html' title='Gentoo and Ubuntu 7.10'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-4422862140672296113</id><published>2007-06-20T14:47:00.001+01:00</published><updated>2007-06-20T14:49:21.871+01:00</updated><title type='text'>New ideas</title><content type='html'>Here&#39;s an &lt;a href=&quot;http://blog.vagueware.com/2007/6/18/introducing-chaos-to-development&quot;&gt;interesting article&lt;/a&gt; about innovation and how we can feed our brain to breed new ideas. I still haven&#39;t tried the techniques, but they seem logical enough to work.&lt;br /&gt;And no, the reason this blog hasn&#39;t been updated has nothing to do with lack of ideas, but with time-consuming personal matters :)&lt;br /&gt;Cheers.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/4422862140672296113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/4422862140672296113' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/4422862140672296113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/4422862140672296113'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2007/06/heres-interesting-article-about.html' title='New ideas'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-1278702681801467023</id><published>2007-03-09T16:42:00.000+00:00</published><updated>2007-03-09T16:47:05.241+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="duck-typing"/><category scheme="http://www.blogger.com/atom/ns#" term="file handling"/><category scheme="http://www.blogger.com/atom/ns#" term="groovy"/><category scheme="http://www.blogger.com/atom/ns#" term="ruby"/><title type='text'>Groovy impressions</title><content type='html'>Recently I&#39;ve been doing some work in &lt;a href=&quot;http://groovy.codehaus.org/&quot;&gt;Groovy&lt;/a&gt;. First impressions were very good, but I won&#39;t start using it for everything. I think we should choose the right tool for the job, and dynamic languages like Groovy are great for some tasks, but are worse for others (and this is not an universal truth, some people function better in one way, others in other ways). I already knew some of the syntax-sugar (map handling, duck typing, etc) that is also common to Ruby or Python, so that was not a surprise. What really impressed me in Groovy was how complex tasks were made simple. For example: file handling. Here&#39;s a small example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;File f = new File(&quot;a.txt&quot;)&lt;br /&gt;f &lt;&lt; &quot;text&quot; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is enough to append the given string to the file. This is different from just &quot;typing less characters&quot;. What&#39;s great here is that resource handling is completely hidden from the programmer. We just tell it to read or write something to a file and don&#39;t have to remember to open or close resources.&lt;br /&gt;Another gem:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;URL url = new URL(&quot;http://www.google.com&quot;)&lt;br /&gt;File f = new File(&quot;a.txt&quot;)&lt;br /&gt;f &lt;&lt; url.text&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Yes, it does what you&#39;re thinking: automatically fetches the contents of the given URL and stores it in the file a.txt. Now, if you add closures and regular expressions, page scraping just became a lot easier :)&lt;br /&gt;&lt;br /&gt;Some people see less typing as the ultimate goal to increase productivity. Although I think much faster than I type, I still spend more time thinking than typing. In the end I don&#39;t think a few less characters make any difference. I think is much more a psychological effect than anything else (I constantly see people writing how Ruby makes programming more &quot;fun&quot;). But this kind of simplicity shown above does make a difference because it make file handling easier and less error-prone (no more forgetting to close resources).</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/1278702681801467023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/1278702681801467023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/1278702681801467023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/1278702681801467023'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2007/03/groovy-impressions.html' title='Groovy impressions'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-7184450599146785915</id><published>2007-03-04T15:32:00.000+00:00</published><updated>2007-03-04T15:36:39.057+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="dead pixels"/><category scheme="http://www.blogger.com/atom/ns#" term="ldc"/><category scheme="http://www.blogger.com/atom/ns#" term="monitor"/><title type='text'>Fixing dead pixels</title><content type='html'>Fortunately I don&#39;t have any dead pixels on my monitor. If I had I could try &lt;a href=&quot;http://udpix.free.fr/&quot;&gt;this&lt;/a&gt;, although I&#39;m highly skeptical about it&#39;s effectiveness. But, who knows...every now an then I get surprised at something :)</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/7184450599146785915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/7184450599146785915' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7184450599146785915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7184450599146785915'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2007/03/fixing-dead-pixels.html' title='Fixing dead pixels'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-1364077040398293962</id><published>2007-03-01T17:43:00.000+00:00</published><updated>2007-03-01T17:46:39.022+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="jconsole"/><title type='text'>Java 6 Hotpatching</title><content type='html'>I already knew of the ability for a java process to attach itself to another process for monitoring purposes. Java 6 comes with a nice graphical console (jconsole) that shows several statistics about the running process, like memory usage, etc.&lt;br /&gt;What I didn&#39;t know was that the API for that allowed to do &lt;a href=&quot;http://www.fasterj.com/articles/hotpatch1.shtml&quot;&gt;this&lt;/a&gt;. According to the article we can substitute a class for a new version of it in runtime!! Although I don&#39;t see this sort of thing being used very often, it&#39;s still very cool :)</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/1364077040398293962/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/1364077040398293962' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/1364077040398293962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/1364077040398293962'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2007/03/java-6-hotpatching.html' title='Java 6 Hotpatching'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-7240096417958136659</id><published>2007-01-16T00:04:00.000+00:00</published><updated>2007-01-16T00:13:20.339+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="aMSN"/><category scheme="http://www.blogger.com/atom/ns#" term="Gaim"/><category scheme="http://www.blogger.com/atom/ns#" term="IM"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Mercury"/><category scheme="http://www.blogger.com/atom/ns#" term="MSN"/><title type='text'>Linux needs better IM clients!</title><content type='html'>There are several IM clients for Linux and they work perfectly fine for the most basic operations, like chatting and file transfer. I personally like &lt;a href=&quot;http://gaim.sourceforge.net/&quot;&gt;Gaim&lt;/a&gt;. It&#39;s fast, stable and the simplicity of its interface is great. I&#39;ve also tried &lt;a href=&quot;http://amsn-project.net/index.php&quot;&gt;aMsn&lt;/a&gt;, &lt;a href=&quot;http://kopete.kde.org/&quot;&gt;Kopete&lt;/a&gt;, &lt;a href=&quot;http://www.mercury.to/&quot;&gt;Mercury&lt;/a&gt; with different degrees of success. But looking at their Window&#39;s counterparts (msn messenger, yahoo, icq, etc) they seem a lot behind. Modern IMs now have things like animated smileys, custom and animated backgrounds, small flash animations and most importantly web cam and audio support.&lt;br /&gt;Well, some Linux IMs actually have most of those features, being aMsn probably the most complete and Gaim the least (doesn&#39;t have any of those features). My experience with aMsn (and others) is not very successful. aMsn seemed very unstable, and although I could get my webcam to work, it was too sluggish to be of any use. Mercury seemed promising but I couldn&#39;t get the web cam to work. And audio definitely didn&#39;t work with neither. I know some have had success with these programs, but they definitely need much work to be able to compete with windows IMs.&lt;br /&gt;&lt;br /&gt;Many Linux users don&#39;t care about these features, but they are important. And if we want Desktop Linux to be successful they&#39;re essential, like it or not. Audio and video is the most important. And is not only to keep up with your friends. Many companies use this for internal video-conferencing (it&#39;s simpler, cheaper and perfectly suffices in many cases).&lt;br /&gt;But custom backgrounds, flash animations, etc are also important. And I know many people dislike these features and don&#39;t understand why it matters. For several years I lived without those flash animations and fancy backgrounds, but now I&#39;m rebooting to others OSes to use them. Before you think I got some sort of mental illness, let me give you a simple compelling reason why it matters: when you want to talk to a girl (non-techie) that happens to like those features, the whole argument &quot;I use Gaim because I have Linux and it&#39;s open source and it&#39;s better...&quot; just doesn&#39;t seem that strong all of a sudden. And you&#39;ll end up using (or letting her use) those features. It&#39;s just an example :) but it shows that there are people that want to use those features.&lt;br /&gt;&lt;br /&gt;The point is: in many aspects Linux is leading the innovation (take XGL for example), but IM is several years behind. I know it&#39;s a very difficult subject because most of the communication protocols are not public. But I&#39;m not sure this lack of good and innovating IMs has all to do with hidden protocols. I just think there&#39;s  not enough motivation in Linux programmers for implementing it. Maybe distros like Redhat, Suse or Ubuntu start seeing this and start promoting more advances in this area.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/7240096417958136659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/7240096417958136659' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7240096417958136659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/7240096417958136659'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2007/01/linux-needs-better-im-clients.html' title='Linux needs better IM clients!'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-116631815256464931</id><published>2006-12-17T01:03:00.001+00:00</published><updated>2008-03-03T23:33:56.499+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="data binding"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="xml"/><title type='text'>Java XML Data Binding</title><content type='html'>I don&#39;t recall the last time I used DOM or SAX to process XML documents. Things have evolved and processing XML seems more and more an unnecessary low-level work. And that&#39;s because of the superior XML Data Binding. XML Data Binding is all about mapping objects to XML, and back again. It&#39;s not document-centric, but data-centric. After all, isn&#39;t XML a way of representing data ? The data is what matters. For example, if I have the following XML:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;customer&amp;gt;&lt;br /&gt;     &amp;lt;code&amp;gt;128682&amp;lt;/code&amp;gt;&lt;br /&gt;     &amp;lt;name&gt;Mr. Smith&amp;lt;/name&amp;gt;&lt;br /&gt;&amp;lt;/customer&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I don&#39;t want to mess around with DOM objects or SAX events if I just need to get the data into Java objects. I just want to pass the XML to some method and get a Java Bean named &lt;span style=&quot;font-style: italic;&quot;&gt;Customer&lt;/span&gt; with properties &lt;span style=&quot;font-style: italic;&quot;&gt;code&lt;/span&gt; and &lt;span style=&quot;font-style: italic;&quot;&gt;name&lt;/span&gt; (of course the real advantage it&#39;s when the XML is a lot more complex). That&#39;s what XML Data Binding frameworks are for. And there&#39;s plenty of them. They typically work by generating classes from some provided XML Schema. You&#39;ll normally get the Java Beans that hold the data and a few classes responsible for the marshalling/unmarshalling of XML.&lt;br /&gt;&lt;br /&gt;I tried a few when developing &lt;a href=&quot;http://ws.apache.org/axis2/&quot;&gt;Axis2&lt;/a&gt; web services. Axis2 supports several data binding frameworks and also provides its own implementation: &lt;a href=&quot;http://ws.apache.org/axis2/1_1/adb/adb-howto.html&quot;&gt;ADB&lt;/a&gt;. For what I&#39;ve seen of ADB I don&#39;t like it much. By default it generates Java Beans with strange looking code filled with inner classes. And although it claims that it can generate plain POJOs, I couldn&#39;t get them to work well.&lt;br /&gt;There&#39;s also &lt;a href=&quot;http://xmlbeans.apache.org/&quot;&gt;XMLBeans&lt;/a&gt;, which is known to be the most comprehensive out there. But it also generates a lot of classes and a lot of code.&lt;br /&gt;A third, and in my opinion a better choice, is &lt;a href=&quot;http://jibx.sourceforge.net/&quot;&gt;JibX&lt;/a&gt;. With JibX you can do things a little differently. Instead of letting JibX generate the Java Beans, I prefer to create them myself and then configure a short XML mapping file (in the simplest case, just to tell which class is the root element). JibX then generates only 2-3 classes responsible for mapping the XML to the Java Beans. This way my Java Beans stay clean and I have much less generated code.&lt;br /&gt;&lt;br /&gt;But there are even more alternatives. I&#39;ve used &lt;a ref=&quot;http://xstream.codehaus.org/&quot;&gt;XStream&lt;/a&gt; several times and it&#39;s great. It doesn&#39;t generate any code, it&#39;s all done in runtime. It&#39;s similar to JibX : you also have to provide the Java Beans and some mapping configuration, but instead of generating code to handle the XML, it does everything in runtime. You could argue that XStream is better that JibX, but actually XStream also has some disadvantages: doesn&#39;t support XML namespaces, which is essential for web services development. I&#39;ve used it in other situations, when I don&#39;t need XML namespaces.&lt;br /&gt;&lt;br /&gt;I should also mention &lt;a href=&quot;http://java.sun.com/webservices/jaxb/&quot;&gt;JAXB&lt;/a&gt;, Sun&#39;s official specification for XML Data Binding (JAXB is only a specification, but there&#39;s at least two implementations: &lt;a href=&quot;https://jaxb.dev.java.net/&quot;&gt;JAXB RI&lt;/a&gt; and &lt;a href=&quot;http://ws.apache.org/jaxme/index.html&quot;&gt;JaxME&lt;/a&gt;), but I still haven&#39;t tried it.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/116631815256464931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/116631815256464931' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116631815256464931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116631815256464931'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/12/java-xml-data-binding.html' title='Java XML Data Binding'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-116370947755375524</id><published>2006-11-16T20:24:00.000+00:00</published><updated>2006-11-16T21:16:50.563+00:00</updated><title type='text'>Thread pooling in Java 5</title><content type='html'>Only recently I began learning (and working with) Java 5&#39;s new features. When they announced the most emblematic new features there was an immediate reaction to them. Some people loved the new features, others hated it. To be true, I liked some things (like enumerations and generics) but never cared much about auto-boxing or varargs. However, I&#39;m not going to talk about these popular features that almost everyone has heard of. It seems there&#39;s plenty more to know about Java 5. Today I discovered a fantastic (first impressions)  and powerful new feature: &lt;span style=&quot;font-style: italic;&quot;&gt;java.util.concurrent &lt;/span&gt;package. This package provides several utilities to handle threads and locks, simplifying the whole process. For now I only tried one thing: creating thread pools. This is something that comes in handy very often and it&#39;s now very simple to do.&lt;br /&gt;&lt;br /&gt;First, you have the usual &lt;span style=&quot;font-style: italic;&quot;&gt;Runnable&lt;/span&gt; that implements whatever you want the thread to do. In this simple example it just prints &quot;hello&quot;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public class WorkerThread implements Runnable {&lt;br /&gt;    public void run() {&lt;br /&gt;        System.out.println(&quot;hello&quot;);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now, let&#39;s imagine I want to create 300 &lt;span style=&quot;font-style: italic;&quot;&gt;WorkerThread&lt;/span&gt; s, but allowing only 5 threads simultaneously.  So,  a thread pool  has to be created with  size 5. Then  I submit  the 300  tasks to the pool, which only executes 5 at a time, queuing the rest. As one thread finishes, the next one in the queue starts.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;ExecutorService pool = Executors.newFixedThreadPool(5);&lt;br /&gt;for(int i=0; i&lt;300; i++){&lt;br /&gt;    pool.submit(new WorkerThread());&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;As simple as that. But there&#39;s a lot more to learn. For example, there&#39;s a new interface &lt;span style=&quot;font-style: italic;&quot;&gt;Callable, &lt;/span&gt;that you can use instead of &lt;span style=&quot;font-style: italic;&quot;&gt;Runnable.&lt;/span&gt; &lt;span style=&quot;font-style: italic;&quot;&gt;Callable&lt;/span&gt; allows the executing method to return arbitrary Objects and throw exceptions, something you couldn&#39;t do with &lt;span style=&quot;font-style: italic;&quot;&gt;Runnable&lt;/span&gt;&#39;s &lt;span style=&quot;font-style: italic;&quot;&gt;run()&lt;/span&gt; method. Look &lt;a href=&quot;http://www.onjava.com/pub/a/onjava/2005/04/20/javaIAN5.html&quot;&gt;here&lt;/a&gt; for more information about this and other cool enhancements that didn&#39;t get the overall attention they deserve.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/116370947755375524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/116370947755375524' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116370947755375524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116370947755375524'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/11/thread-pooling-in-java-5.html' title='Thread pooling in Java 5'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-116286297950395414</id><published>2006-11-07T01:19:00.001+00:00</published><updated>2008-03-03T23:37:31.903+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="lcd monitor"/><title type='text'>LCD Monitor guide</title><content type='html'>A few days ago my LCD monitor started making some strange noises. I knew that it wouldn&#39;t last long. It still works, but barely (the image goes black from time to time). Although I might try to get it fixed, I immediately started searching for a new one. Normally I like to learn about all the little differences and rate the available choices. However, there&#39;s just one little problem :  there&#39;s hundreds of different monitors available!! No I didn&#39;t quit, but instead of collecting all the information I started eliminating most of them based on a few characteristics. So here&#39;s what I found out.&lt;br /&gt;&lt;br /&gt;First and most important of all: the budget. Because I didn&#39;t want to buy a very expensive monitor, I think I reduced my choices to half :D&lt;br /&gt;&lt;br /&gt;Then there&#39;s the size. I own a 17&quot; and I probably will buy another 17&quot;, but I still haven&#39;t  discarded completely an 19&quot; monitor. I won&#39;t get a better resolution with a 19&quot;, it&#39;s the same 1280x1024 that I get with a 17&quot;. Everything just looks a little bit bigger (mostly the fonts). I think it&#39;s not better or worse. It depends on the distance to the monitor. I read somewhere the distance from the eyes to the monitor should be twice the diagonal. Basically it comes down to which you feel more comfortable with. And I feel comfortable with the 17&quot;. Don&#39;t think it&#39;s the price...I surprisingly found a few 19&quot; monitors cheaper than most 17&quot;. There&#39;s also the widescreen&#39;s, which may be better for some situations, like watching DVD&#39;s. But I&#39;m still not sure about those...never worked with one so far.&lt;br /&gt;&lt;br /&gt;At this point, the rules I outlined already exclude lots of monitors, but still there&#39;s too many and I&#39;m lazy enough to just pick a few well-known brands instead of going trough all of them! Also, it helps if the monitor you want is available at your local stores (unless you want to buy online) and that should reduce a few more.&lt;br /&gt;&lt;br /&gt;LCD Monitors have a lot of specifications, but not everything is important:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Contrast ratio - The contrast ratio is an important factor, but  different vendors calculate this value in a different way. So, it&#39;s not a reliable parameter. There are lots of 500:1, 700:1...and then there are a few 2000:1. Clearly this last one was measured differently. I just established a minimum here (500:1) and then pushed this parameter to the bottom of the decision-making process.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Interface - every monitor has an analog input, and some have the better digital input (DVI). I&#39;m not sure how much better is the digital input (some report better image quality, due to faster image render, because there&#39;s no analog/digital conversion) but I chose only monitors with DVI input.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Brightness - this is almost everytime 250 cd/m2, so I completely ignored this.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;viewing angle - most monitors have 160/160, so I excluded everything worse than that. I like to be able to look at the monitor from different angles, and lower values don&#39;t allow good viewing.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;response time - I&#39;ve seen values from 2ms to 12ms. From what I&#39;ve found 12ms is very good and anything below that isn&#39;t that noticeable. Of course there are monitors with response times greater than 12ms (which I ruled out) but most of the new ones already have at least 12ms.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;dot pitch - this almost never varies, so I ignored this.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;power consumption - you could just ignore this, but if you care about the environment (and your bills) you could choose a monitor with better consumption. The best I saw was 30W when &quot;on&quot; and 1W in &quot;standby&quot;.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;base - it&#39;s important to have the monitor well positioned, so the more options it gives you, the better. Possible adjustments are: rotate, tilt, height adjustment and pivot. Almost every monitor has tilt adjustment. Rotate it&#39;s also very common. Height adjustment is the most important to me, but it&#39;s not so common. Pivot is becoming more common, but I have no use for it.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;extras - some monitor have lot of extras, like speakers, USB ports, etc. I prefer not having to pay for these useless extras. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;You might be asking: &quot;so which one did you choose ?&quot; :) Well, I have a small list but haven&#39;t made up my mind yet. And I also don&#39;t want to spoil you this wonderful experience of choosing monitors :P</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/116286297950395414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/116286297950395414' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116286297950395414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116286297950395414'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/11/lcd-monitor-guide.html' title='LCD Monitor guide'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-116118053205296326</id><published>2006-10-18T14:59:00.001+01:00</published><updated>2008-03-03T23:45:48.704+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="h2"/><category scheme="http://www.blogger.com/atom/ns#" term="hsqldb"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><title type='text'>Another simple and small</title><content type='html'>A while ago I reviewed &lt;a href=&quot;http://carlosbinarystuff.blogspot.com/2004/10/simple-and-small.html&quot;&gt;HSQLDB&lt;/a&gt;, a small and fast java database. I&#39;ve used it a few times quite successfully. I&#39;m now developing a java desktop application and I needed a small in-memory database and the first choice was obviously HSQLDB. However, I decided to do some investigation to see what else is there. And surprisingly I stumbled upon HSQLDB apparent successor: &lt;a href=&quot;http://www.h2database.com/&quot;&gt;H2&lt;/a&gt;. Quoted from their website:&lt;br /&gt;&lt;blockquote&gt;The development of H2 was started in May 2004, but it was first published on December 14th 2005. The author of H2, Thomas Mueller, is also the original developer of Hypersonic SQL. In 2001, he joined PointBase Inc. where he created PointBase Micro. At that point, he had to discontinue Hypersonic SQL, but then the HSQLDB Group was formed to continued to work on the Hypersonic SQL codebase. The name H2 stands for Hypersonic 2; however H2 does not share any code with Hypersonic SQL or HSQLDB. H2 is built from scratch.&lt;/blockquote&gt;&lt;br /&gt;According to &lt;a href=&quot;http://www.infoq.com/news/H2-java-rbms-released&quot;&gt;this&lt;/a&gt;, it&#39;s also faster than HSQLDB, which is always good. And after reading the documentation H2 &lt;span style=&quot;font-style: italic;&quot;&gt;feels&lt;/span&gt; more solid and robust. Maybe, it&#39;s because it has a few interesting features like &lt;span style=&quot;font-style: italic;&quot;&gt;cluster support&lt;/span&gt;, &lt;span style=&quot;font-style: italic;&quot;&gt;encrypted database&lt;/span&gt; and &lt;span style=&quot;font-style: italic;&quot;&gt;recovery tool&lt;/span&gt;. Also, data is not stored in text files with SQL inside, as with HSQLDB, which it always felt a bit clumsy to me.&lt;br /&gt;I also like the provided SQL console: it&#39;s a web application that you can launch directly from the database &lt;span style=&quot;font-style: italic;&quot;&gt;jar&lt;/span&gt;. It could be more complete, but it works  well and I specially like the auto-completion feature.&lt;br /&gt;So, for now, I will be using H2 in my application and see if it&#39;s as reliable as it seems.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/116118053205296326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/116118053205296326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116118053205296326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/116118053205296326'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/10/another-simple-and-small.html' title='Another simple and small'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-115852046339377537</id><published>2006-09-17T19:57:00.000+01:00</published><updated>2006-09-17T20:33:23.943+01:00</updated><title type='text'>Kung-Fu Java</title><content type='html'>No, I&#39;m not talking about any kung-fu variant from Indonesia. I&#39;m talking about &lt;a href=&quot;http://www.javablackbelt.com/&quot;&gt;JavaBlackBelt&lt;/a&gt;. In their own words: &lt;blockquote&gt;JavaBlackBelt is a community for Java and related technologies certifications.&lt;/blockquote&gt;&lt;br /&gt;It&#39;s basically an alternative to Sun&#39;s official certifications. And although you won&#39;t get the same recognition (not even close), JavaBlackBelt&#39;s exams cover a lot more ground than Sun&#39;s. You don&#39;t get evaluated only for your knowledge of official JDK libraries, but also from your knowledge of &lt;a href=&quot;http://www.javablackbelt.com/ExamTaskListing.wwa&quot;&gt;many popular technologies&lt;/a&gt; that a Java developer might find: Struts, Spring, XML, JDBC, Ant...just to name a few.&lt;br /&gt;Also, the whole certification path is fun and very well thought. When you first register, you receive a white belt and from that you have to pass exams in order to receive the other belts, all the way to the black belt. To take an exam you also have to pay, but in contribution points, not money :) Contribution points are what holds JavaBlackBelt as a community. You receive contribution points by creating questions to a certain exam (it will be voted and filtered before getting into the real exam) or by evaluating other people&#39;s questions. Then, you can use your contributions points to take exams and also to participate in auctions. &lt;a href=&quot;http://www.javablackbelt.com/AuctionListing.wwa&quot;&gt;Auctions&lt;/a&gt; allow you to spend your contribution points in prizes (normally books or t-shirts).&lt;br /&gt;For now, I have a yellow belt, but I made this post because I just successfully took the JDBC exam and I&#39;m just one exam away from my orange belt. Wheeeeeh...err, I mean: YEAAHHH (with strong manly voice).</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/115852046339377537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/115852046339377537' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/115852046339377537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/115852046339377537'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/09/kung-fu-java.html' title='Kung-Fu Java'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-115686830087453308</id><published>2006-08-29T17:04:00.001+01:00</published><updated>2008-03-03T23:38:15.251+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="Suse"/><title type='text'>New breed of menus</title><content type='html'>Hi. It&#39;s been a long time since the last post, but finally I could get some free-blogging-time :)&lt;br /&gt;A few weeks ago I installed Novell&#39;s Suse Linux Enterprise 10. I&#39;m not planning on ditching Gentoo any time sooner, but I got curious about some of the innovations the folks at Novell are doing. And I also had a few disk-space to waste.&lt;br /&gt;My main interest was to see in action the &lt;a href=&quot;http://www.novell.com/products/desktop/screenshots.html&quot;&gt;new menu interface&lt;/a&gt;. Instead of the regular list of applications, this one is quite different. It gives more importance to the favorite and recently used programs (never really cared much about this). To get to the rest of the applications you have a search mechanism. Begin typing the name of the application you want and see the options start converging to that name. &lt;a href=&quot;http://beagle-project.org/Main_Page&quot;&gt;Beagle&lt;/a&gt; is the technology behind this.&lt;br /&gt;At first glance, it seems more productive, specially for keyboard-intensive users. Just start typing the name and you find the application quite fast. However, we still have to use the mouse: we have to click the button that opens that window (probably there is keyboard shortcut, but I didn&#39;t find out) and then click on the application name after you found it. I think I could have found the same application with the same amount of clicks in the old-fashioned menu (most of the times). But definitely there&#39;s a trend going on here. Everything in the computer is now searchable, even the applications. And this interface somehow reminds me of the auto-completion features in most programming IDEs: hit ctrl+space and you get a list of options, which you can refine by typing in the first letters. I really would like a menu as productive as this, without the need of any mouse click.&lt;br /&gt;&lt;br /&gt;Another use of this kind of search is when we don&#39;t know the exact name of the application (just the description)...but that seems of interest only for real newbies. Sooner or later anyone knows the name of all applications.&lt;br /&gt;&lt;br /&gt;So after spending some time using it, I really felt it slower, mainly because I had to open a second window after opening the menu. It could be a lot better if it was directly embebbed inside the menu window.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/115686830087453308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/115686830087453308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/115686830087453308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/115686830087453308'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/08/new-breed-of-menus.html' title='New breed of menus'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-114856369657699484</id><published>2006-05-25T14:06:00.001+01:00</published><updated>2008-03-03T23:37:12.845+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ajax"/><title type='text'>Oh No! More Ajax</title><content type='html'>Ok, now things are starting to become ridicule. Ajax this, Ajax that... everything has to be Ajax-enabled to be considered cool. What else can they think of ? An Ajax operating system ? Well...yes :)&lt;br /&gt;Welcome to the wonderful world of &lt;a href=&quot;http://www.myajaxos.com/&quot;&gt;AjaxOS&lt;/a&gt;, a place where every file is free... I know I&#39;m being a little sarcastic...but just hearing the name sounds a little silly, to say the least. But I don&#39;t blame them. At this time, the word sells, so it&#39;s a perfect way of getting attention.&lt;br /&gt;Anyway, this new operating system is in fact based on the well known Linspire Linux distribution. What they did was to integrate web (ajax enabled web) applications into the desktop. As cited on their site:&lt;br /&gt;&lt;blockquote&gt;By seamlessly integrating the power of web based applications with Linspire, ajaxOS recognizes any compatible file (doc, svg, odf, txt, xls, etc...) and launches the most up-to-date AJAX software from a Firefox browser.&lt;/blockquote&gt; Actually it can be a good idea if it works well. I&#39;m not saying this will be the future, but it&#39;s an alternative that has a few advantages, like a small installation or the ability to open any file format without having to install first the corresponding viewer/player. In some cases, this might be useful, like public-access computers as it reduces configuration and maintenance effort drastically, and may even provide a better service (public-access computers don&#39;t usually have all the software one might need at some time).&lt;br /&gt;Anyway, it&#39;s still not availalable yet. Let&#39;s wait and see...</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/114856369657699484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/114856369657699484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114856369657699484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114856369657699484'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/05/oh-no-more-ajax.html' title='Oh No! More Ajax'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-114806053220617807</id><published>2006-05-19T18:36:00.001+01:00</published><updated>2008-03-03T23:39:18.458+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ajax"/><category scheme="http://www.blogger.com/atom/ns#" term="GWT"/><category scheme="http://www.blogger.com/atom/ns#" term="XUL"/><category scheme="http://www.blogger.com/atom/ns#" term="ZK"/><title type='text'>Ajax toolkits</title><content type='html'>Well, it appears &lt;a href=&quot;http://en.wikipedia.org/wiki/AJAX&quot;&gt;Ajax&lt;/a&gt; is here to stay. I&#39;ve already used some Ajax-like features in some projects but nothing too big yet. The thing that I like less in Ajax is JavaScript....yes, I know that without it, it&#39;s not Ajax :)&lt;br /&gt;However, my gripe with JavaScript is not unique...&lt;br /&gt;Recently I discovered two new frameworks for dealing with Ajax and both of them minimize JavaScript code to zero! At least, from the developers point of view. These are &lt;a href=&quot;http://code.google.com/webtoolkit/&quot;&gt;Google Web Toolkit&lt;/a&gt; and &lt;a href=&quot;http://zk1.sourceforge.net/&quot;&gt;ZK&lt;/a&gt;. Both of them are Java frameworks, and they hide all the JavaScript away from the developer. The idea is to create an event-driven framework filled with rich GUI widgets that resemble desktop apps. The thing I liked in both frameworks is how Ajax is put inside the framework and away from the developer. It&#39;s not a framework to build Ajax, it&#39;s a framework to build rich web interfaces, that is powered on the inside by Ajax. How is this done ?&lt;br /&gt;In these kind of applications there&#39;s three parts: client-side code, server-side code and the glue to bind them. Client-side code has to be JavaScript (along with html, CSS, etc) for the browser to interpret. Server-side code can be in almost any language, but in this case, it&#39;s Java. The third and the hardest to accomplish is the communication between the previous two. Ajax provided us with a way to create that communication, but coding it by hand is complicated and troublesome (although interesting to learn). What both frameworks provides us to simplify these tasks are:&lt;br /&gt;First, they provide a way of building the web interface that is more similar to the way we build desktop apps. They both provide a rich set of graphical widgets, typical of desktop apps (of course, inside, this is translated into something the browser understands ;)). Second, and more importantly, all communication to the server-side is done automatically and transparently. From the point of view of interface design, you layout widgets that have events. From the point of view of the server, you have a simple Java API that handles events. Everything in between is given by the frameworks and executed automatically. This way, server code is like a traditional desktop app: event-driven.&lt;br /&gt;Despite its similarities, GWT and ZK implement this idea quite differently. In GWT you do everything in Java, even specifying the layout and widgets. But instead of compiling your java files with good old javac, you use a compiler provided by GWT. This compiler will translate the java code you happily wrote into JavaScript. This is basically creating JavaScript without actually writing it :)&lt;br /&gt;In ZK you create the widgets and the layout in &lt;a href=&quot;http://en.wikipedia.org/wiki/XUL&quot;&gt;XUL&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Xhtml&quot;&gt;XHTML&lt;/a&gt; (actually ZUML, which in the future may also support &lt;a href=&quot;http://en.wikipedia.org/wiki/XAML&quot;&gt;XAML&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Xquery&quot;&gt;XQuery&lt;/a&gt;). Then create the event handlers in Java to do the server work. Binding Widgets and event handlers is done in ZUML, and it&#39;s easy to do.&lt;br /&gt;I still don&#39;t have an opinion of which I like more. At first sight GWT seems easier to work with, but I&#39;m always suspicious of generated code. ZK seems more flexible and it&#39;s based on several interesting technologies, like XUL. I believe both can have success, but I&#39;m pretty sure the name &lt;span style=&quot;font-style: italic;&quot;&gt;google&lt;/span&gt; will show its weight, at least at first ;)</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/114806053220617807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/114806053220617807' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114806053220617807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114806053220617807'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/05/ajax-toolkits.html' title='Ajax toolkits'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-114298443389343562</id><published>2006-03-21T23:24:00.000+00:00</published><updated>2006-03-21T23:41:13.933+00:00</updated><title type='text'>How much ?</title><content type='html'>Being a Java Developer I&#39;m of course interested in knowing how other Java Developers are doing, specially in other parts of the world. I&#39;m talking about money, of course... how much Java developers earn in &lt;span style=&quot;font-style: italic;&quot;&gt;&quot;insert_country_name&quot; &lt;/span&gt;? It&#39;s not that I&#39;m not happy with my current income, but we always want more if we can get it :)&lt;br /&gt;Anyway, this &lt;a href=&quot;http://www.javalobby.org/java/forums/t65911.html&quot;&gt;JavaLobby&#39;s forum thread&lt;/a&gt; is a very interesting reading.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/114298443389343562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/114298443389343562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114298443389343562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114298443389343562'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/03/how-much.html' title='How much ?'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-114229196901208225</id><published>2006-03-13T22:50:00.000+00:00</published><updated>2006-03-13T23:21:17.976+00:00</updated><title type='text'>Online Office</title><content type='html'>For some reason, I&#39;ve never been too fond of applets. Maybe because I saw too many bad examples on how to use an applet. However, my opinion changed dramatically, when I saw &lt;a href=&quot;http://online.thinkfree.com/index.jsp&quot;&gt;ThinkFree Office&lt;/a&gt;. Basically, it&#39;s the regular office you are used to, but inside an applet!!&lt;br /&gt;You have Word, Excel and PowerPoint with all the features you can imagine. It&#39;s truly amazing how similar it is to the real thing. It works so good you could use it to substitute the real Office and save a few disk space. Just create a free account, and you get 30Mb of space for creating docs, spreadsheets, convert them to pdf, etc. Try the demo and see for yourself! One of the things that amazed me: you can even do &lt;span style=&quot;font-weight: bold;&quot;&gt;fullscreen &lt;/span&gt;slideshows of powerpoints :)&lt;br /&gt;Apart the usefulness, it&#39;s really the best applet I&#39;ve seen.</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/114229196901208225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/114229196901208225' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114229196901208225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/114229196901208225'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/03/online-office.html' title='Online Office'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8406420.post-113650607751079353</id><published>2006-01-06T00:02:00.001+00:00</published><updated>2008-03-03T23:40:53.610+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="alsa"/><category scheme="http://www.blogger.com/atom/ns#" term="Linux"/><category scheme="http://www.blogger.com/atom/ns#" term="sound"/><category scheme="http://www.blogger.com/atom/ns#" term="sound blaster audigy"/><title type='text'>Suuurrrooouuunnnnd</title><content type='html'>Santa Claus brought me a brand new Creative Sound Blaster Audigy card along with 5.1 speakers. I wasn&#39;t looking for a new sound card, but now I really love the sound I can get here...&lt;br /&gt;I first installed the windows drivers, which confirmed the nice surround sound quality :)&lt;br /&gt;I was a bit curious how Linux would handle the card, and specifically the 5.1 speakers. I had a few problems (and still have) with the Alsa drivers, but curiously not at first. The problem only manifests when I boot my PC directly in Linux (which I do most of the time). Instead of crystalline sound I got some horrible noise. However, if I first boot Windows and then reboot to Linux, everything is fine. It appears to be some kind of initialization code that is missing from the Alsa drivers.&lt;br /&gt;&lt;br /&gt;Besides that annoyance (which I hope it ends soon), the sound in Linux is now a lot better than before. One of the first things I tried was to listen to the surround sound in a DVD. I had a few problems configuring Xine, but it worked nice on Mplayer. And yes, the sound is great :)&lt;br /&gt;However, I noticed something missing comparing to windows drivers. When listening to music, I realized the music was playing only on the 2 front speakers. And in windows, besides playing on all 6 speakers, I could also select from a set of special effects (like the sound was playing inside a church, auditorium, etc). Of course, I wasn&#39;t hoping to have those special effects in Linux...and I don&#39;t miss them too. It&#39;s fun to try the first time, but who uses them, really ? :)&lt;br /&gt;What bothered me was that the music didn&#39;t play on all 6 speakers. Well, I never thought about how things were done in Windows, but I soon figured why Linux only plays on 2 speakers. A surround sound (one that plays on all 6 speakers) must have the information on what to play on each speaker. The sounds and music on DVD are recorded in 6 channels....one for each speaker. But normal music is record in Stereo, which means 2 channels. So, normal music should be played only on 2 speakers. Fortunately there&#39;s a trick: I could tell it to play the same channel on several speakers. That&#39;s very easy to do in Alsa. However, it doesn&#39;t sound the same as in Windows. What I think Windows drivers do is apply some kind of audio filter to the duplicated channels. That filter gives the sound a more 3Dish feel. Nevertheless, the result is reasonable. And hopefully someone with time and patience creates a similar set of functions to be added transparently to Alsa (instead of specific to each driver), which would make it very flexible.&lt;br /&gt;&lt;br /&gt;It&#39;s amazing how much we can do in Linux, even when we lack the manufacturer&#39;s drivers ;)</content><link rel='replies' type='application/atom+xml' href='http://carlosbinarystuff.blogspot.com/feeds/113650607751079353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/8406420/113650607751079353' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/113650607751079353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8406420/posts/default/113650607751079353'/><link rel='alternate' type='text/html' href='http://carlosbinarystuff.blogspot.com/2006/01/suuurrrooouuunnnnd.html' title='Suuurrrooouuunnnnd'/><author><name>Carlos</name><uri>http://www.blogger.com/profile/00736737339830134800</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>