<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-28097013</id><updated>2011-04-21T23:23:37.500+02:00</updated><category term='summer of code'/><category term='miscelanea'/><category term='java'/><category term='kde'/><category term='programming'/><title type='text'>opsiland</title><subtitle type='html'>Indifference will be the downfall of mankind, but who cares?...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>37</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-28097013.post-7896092004395434580</id><published>2008-04-17T12:00:00.003+02:00</published><updated>2008-04-17T12:10:52.550+02:00</updated><title type='text'>Back from dead, but not here</title><content type='html'>It's been a veeeeery long time since my last post on this blog. I've wanted to get back to it at least once a week since then, but haven't done anything about it until today. &lt;br /&gt;&lt;br /&gt;This morning I decided to start back writing things, but with a little couple of changes:&lt;br /&gt;&lt;br /&gt;The first one is that i'm now officially moving to this blog to a new hosted service that's looking better for moments, &lt;a href="http://wordpress.com"&gt;wordpress.com&lt;/a&gt;. I had already registered with them a long time ago, but back then there was no easy way to import posts from outside wordpress, which would have involved forgetting all my old posts and starting over in a blanket. Thankfully that changed since then and now it's as easy as a three click work to import posts from blogger into wordpress, very cool as it will also let me merge posts from another blog I had, and have all my (uninteresting) bloging history together.&lt;br /&gt;&lt;br /&gt;The second change is that as I seem to be a bit lazy writing posts in english lately, from now on I will start writing some posts (maybe all, who knows) in spanish, my home lang. This way I hope to be a little more productive and keep the blog more updated.&lt;br /&gt;&lt;br /&gt;So, I hope to see you (if any) at my new home in wordpress: &lt;a href="http://opsi.wordpress.com"&gt;http://opsi.wordpress.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-7896092004395434580?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/7896092004395434580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=7896092004395434580' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/7896092004395434580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/7896092004395434580'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2008/04/back-from-dead-but-not-here.html' title='Back from dead, but not here'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-254316950256428611</id><published>2007-06-05T13:26:00.000+02:00</published><updated>2007-06-05T13:37:53.009+02:00</updated><title type='text'>Journey of Mankind</title><content type='html'>&lt;p&gt;Here is a nice educational tool for all ages. The &lt;a href="http://www.bradshawfoundation.com/"&gt;Bradshaw Foundation&lt;/a&gt; , an archeological web site, has set up a &lt;a href="http://www.bradshawfoundation.com/journey/"&gt;nice animation&lt;/a&gt; that tracks human kind expansion, from 160.000 to 8.000 years ago:&lt;/P&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_N72yVkv6ycM/RmVIr9u-zdI/AAAAAAAAAOM/4TZtEiMZp0w/s1600-h/journey+of+mankind.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://bp0.blogger.com/_N72yVkv6ycM/RmVIr9u-zdI/AAAAAAAAAOM/4TZtEiMZp0w/s320/journey+of+mankind.png" alt="" id="BLOGGER_PHOTO_ID_5072540475445923282" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;They base their tracking on the analysis of &lt;a href="http://en.wikipedia.org/wiki/Mitochondrial_DNA"&gt;Mitochondrial DNA&lt;/a&gt; for men, and of  the &lt;a href="http://en.wikipedia.org/wiki/Y_chromosome"&gt;Y Chromosome&lt;/a&gt; for women, found on human fossils all around the globe, and on &lt;a href="http://en.wikipedia.org/wiki/Carbon_dating"&gt;Radio Carbon dating&lt;/a&gt; of them. &lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Vínculo" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-254316950256428611?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/254316950256428611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=254316950256428611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/254316950256428611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/254316950256428611'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/06/journey-of-mankind.html' title='Journey of Mankind'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_N72yVkv6ycM/RmVIr9u-zdI/AAAAAAAAAOM/4TZtEiMZp0w/s72-c/journey+of+mankind.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-4284746362094218767</id><published>2007-06-04T15:12:00.001+02:00</published><updated>2007-06-04T15:48:08.929+02:00</updated><title type='text'>Captcha for educated people</title><content type='html'>You'll need a bit of math to register in that russian (or near) web:&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_N72yVkv6ycM/RmQXesV0TbI/AAAAAAAAAOE/kxtyalAqPvQ/s1600-h/captcha-ruso.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: left; cursor: pointer;" src="http://bp0.blogger.com/_N72yVkv6ycM/RmQXesV0TbI/AAAAAAAAAOE/kxtyalAqPvQ/s400/captcha-ruso.jpg" alt="" id="BLOGGER_PHOTO_ID_5072204896392203698" border="0"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;but it's not that hard, just remember that -1 ≤ sin(x) ≤ 1 ...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.microsiervos.com/archivo/microciervadas-varias/captchas-hombres.html"&gt;through Microsiervos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-4284746362094218767?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/4284746362094218767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=4284746362094218767' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4284746362094218767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4284746362094218767'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/06/captcha-for-educated-people.html' title='Captcha for educated people'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_N72yVkv6ycM/RmQXesV0TbI/AAAAAAAAAOE/kxtyalAqPvQ/s72-c/captcha-ruso.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-4280929048173691098</id><published>2007-05-28T22:43:00.001+02:00</published><updated>2007-05-28T22:52:08.871+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Have you got five minutes?</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Then don't miss the oportunity of reading &lt;a href="http://lwn.net/Articles/105375/"&gt;Linus on kernel management style&lt;/a&gt; (&lt;a href="http://www.escomposlinux.org/egkl/"&gt;spanish version&lt;/a&gt;), a funny 2004 paper written by Linus Torvalds in person. As an example of the serious and academic writting you'll find there:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;First off, I'd suggest buying "Seven Habits of Highly Successful&lt;br /&gt;&lt;br /&gt;People", and NOT read it.  Burn it, it's a great symbolic gesture.&lt;br /&gt;&lt;br /&gt;     Linus Torvalds&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-4280929048173691098?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/4280929048173691098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=4280929048173691098' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4280929048173691098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4280929048173691098'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/05/have-you-got-five-minutes.html' title='Have you got five minutes?'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-5684017212406332258</id><published>2007-05-21T19:15:00.000+02:00</published><updated>2007-05-28T22:52:45.546+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Yet another video, but funny };)</title><content type='html'>&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/4tDYOTy4RUA"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/4tDYOTy4RUA" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-5684017212406332258?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/5684017212406332258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=5684017212406332258' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5684017212406332258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5684017212406332258'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/05/yet-another-video-but-funny.html' title='Yet another video, but funny };)'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-6069765554373552949</id><published>2007-05-21T15:32:00.000+02:00</published><updated>2007-05-28T22:52:53.282+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Truth Happens</title><content type='html'>&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/2_VFKqw1q2Q"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/2_VFKqw1q2Q" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-6069765554373552949?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://youtube.com/watch?v=2_VFKqw1q2Q' title='Truth Happens'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/6069765554373552949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=6069765554373552949' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/6069765554373552949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/6069765554373552949'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/05/truth-happens.html' title='Truth Happens'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-1005566971898651377</id><published>2007-05-19T18:17:00.000+02:00</published><updated>2007-05-19T18:19:34.339+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>So, why they do that to me?</title><content type='html'>&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/G6RBBRCKboA"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/G6RBBRCKboA" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-1005566971898651377?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.qj.net/Starcraft-II-announced-first-details-and-video-revealed/pg/49/aid/92896' title='So, why they do that to me?'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/1005566971898651377/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=1005566971898651377' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/1005566971898651377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/1005566971898651377'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/05/so-why-they-do-that-to-me.html' title='So, why they do that to me?'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-5198293563288985501</id><published>2007-05-17T17:18:00.000+02:00</published><updated>2007-05-17T17:23:31.257+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>When the money isn't the problem...</title><content type='html'>&lt;blockquote&gt;"One challenge was being able to regularly search through all of the additional content types to find relevant results. After all, you don't know if there might be a minor news story or an obscure book relevant to your query unless you go and check. But Google's massive compute cluster -- and much effort by our infrastructure experts -- gave us a leg up on that one, and we can now search these disparate types of information about as efficiently as we search our massive index of web pages. &lt;span style="font-weight: bold;"&gt;We may have melted down a data center or two along the way, but then bugs are part of life in this business!&lt;/span&gt;"&lt;/blockquote&gt;&lt;br /&gt;&lt;a href="http://googleblog.blogspot.com/"&gt;Google Official Blog&lt;/a&gt;, &lt;a href="http://googleblog.blogspot.com/2007/05/behind-scenes-with-universal-search.html"&gt;Behind the scenes with universal search&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-5198293563288985501?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://googleblog.blogspot.com/2007/05/behind-scenes-with-universal-search.html' title='When the money isn&apos;t the problem...'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/5198293563288985501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=5198293563288985501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5198293563288985501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5198293563288985501'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/05/when-money-isnt-problem.html' title='When the money isn&apos;t the problem...'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-8918932004273435121</id><published>2007-05-08T23:08:00.000+02:00</published><updated>2007-05-17T17:23:41.147+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Developer jokes</title><content type='html'>Today I've faced two nice jokes from two different projects. First, this morning while working with &lt;a href="http://www.swi-prolog.org/"&gt;swi-prolog&lt;/a&gt; I hit this nice reference to an infinite job:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;?- List.&lt;br /&gt;% ... 1,000,000 ............ 10,000,000 years later&lt;br /&gt;%&lt;br /&gt;%       &gt;&gt; 42 &lt;&lt; (last release gives the question)&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.es/search?q=answer+to+life+the+universe+and+everything&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t"&gt;Ask Google&lt;/a&gt; to know a bit more on it. Then, this evening, while doing my first works with KIO::SlaveBase this message came up:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;kio (Slave): slave failed to connect to application pid=2266 protocol=sdp&lt;br /&gt;kio (Slave): Houston, we lost our slave, pid=2266&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Hilarious&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-8918932004273435121?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/8918932004273435121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=8918932004273435121' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8918932004273435121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8918932004273435121'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/05/developer-jokes.html' title='Developer jokes'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-4304838189025955471</id><published>2007-04-15T23:09:00.000+02:00</published><updated>2007-05-17T17:23:46.473+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>SoC2007 projects</title><content type='html'>Somebody made a &lt;a href="http://www.third-bit.com/soc2007.html"&gt;comprehensive list&lt;/a&gt; of the projects accepted for SoC2007.&lt;br /&gt;A good way to see them all at a glance (or two).&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Vínculo" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-4304838189025955471?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/4304838189025955471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=4304838189025955471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4304838189025955471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4304838189025955471'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/04/soc2007-projects.html' title='SoC2007 projects'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-553170354294988670</id><published>2007-04-15T21:04:00.000+02:00</published><updated>2007-05-19T18:30:56.195+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><title type='text'>Starting with Solid Bluetooth</title><content type='html'>Today I've been starting to try using the &lt;a href="http://solid.kde.org/"&gt;Solid library&lt;/a&gt;, and concretly the Bluetooth support on it and the API it exposes. With this purpose I've set up a little CMake project that justs  gets a reference to the Bluetooth Manager and list remote devices it finds in a single device scan. The output of this program gives  the same information (at least the address) you would retrieve using the command line:&lt;p&gt;$ hcitool scan&lt;/p&gt;&lt;p&gt;You need to follow some steps before trying this code:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;You must have the latest CVS version of bluez installed and running on your system. You need the libs and utils modules; the following commands would get you those modules in the current directory:&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;tt&gt;$ cvs -z3 -d:pserver:anonymous@bluez.cvs.sourceforge.net:/cvsroot/bluez co -P libs&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;tt&gt;  $ cvs -z3 -d:pserver:anonymous@bluez.cvs.sourceforge.net:/cvsroot/bluez co -P utils&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;You should compile the libs first and then the utils. To build them execute the following commands on each folder:&lt;br /&gt;&lt;blockquote&gt;$ ./bootStrap&lt;br /&gt;$ ./configure&lt;br /&gt;$ make&lt;br /&gt;# make install&lt;br /&gt;&lt;/blockquote&gt;&lt;li&gt;Of course it's mandatory to have a working &lt;a href="http://techbase.kde.org/Getting_Started/Build/KDE4"&gt;kde 4 development environment&lt;/a&gt; (be sure to check the &lt;a href="http://opsiland.blogspot.com/2007/04/kde-build-state-as-of-sat-apr-7-214502.html"&gt;SVN dashboard&lt;/a&gt; to know which revision builds), and maybe &lt;a href="http://opsiland.blogspot.com/2007/04/using-kdevelop-3-for-kde-4-development.html"&gt;set kdevelop 3&lt;/a&gt; also. If you've already setup a kde4 environment you still have to recompile kdebase to enable BlueZ support.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Finally, to ensure that you've your Solid Bluetooth support setup correctly execute the following command (be sure that the command is executed using the kde 4 libraries, if you followed the tutorial it's a matter of running it as the &lt;span style="font-style: italic;"&gt;kde-devel&lt;/span&gt; user):&lt;br /&gt;&lt;blockquote&gt;$ kcmshell kcm_solid&lt;br /&gt;&lt;/blockquote&gt;And there should pop a window where you must find something like the following:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_N72yVkv6ycM/RiKFeCOBBCI/AAAAAAAAAKA/ZFFswXzSKz0/s1600-h/kcm_solid_bluez_dif.png"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_N72yVkv6ycM/RiKFeCOBBCI/AAAAAAAAAKA/ZFFswXzSKz0/s400/kcm_solid_bluez_dif.png" alt="" id="BLOGGER_PHOTO_ID_5053748482901345314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Once you've set that up, and only if you saw the BlueZ backend on the last image, create a new folder to contain your project, let's call it &lt;span style="font-style: italic;"&gt;SolidBZ/.&lt;/span&gt; In that folder we are putting three files, namely:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;CMakeLists.txt&lt;/span&gt; : This is the definition file for CMake, and it defines the library requirements and source files of our project.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;main.h&lt;/span&gt; : In this file we'll define a single class that will provide slots to handle the signals emited by the Solid::BluetoothManager.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;main.cpp&lt;/span&gt; :The implementation of the previous class and the main function.&lt;/li&gt;&lt;/ul&gt;Let's see each of those files and comment them a bit:&lt;br /&gt;&lt;br /&gt;CMakeLists.txt&lt;br /&gt;&lt;hr /&gt;&lt;pre&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;PROJECT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(SolidBZ)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;#Finds KDE4 libraries, include them and set includes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;FIND_PACKAGE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(KDE4 &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(0, 0, 0);"&gt;REQUIRED&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;INCLUDE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(KDE4Defaults)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;INCLUDE_DIRECTORIES&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;${KDE4_INCLUDES}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;#List of source files&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;SET&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(SolidBZ_sources main.cpp)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;#Run the Meta Object Compiler&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;KDE4_AUTOMOC&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;${SolidBZ_sources}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;#Create the executable&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;KDE4_ADD_EXECUTABLE&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(SolidBZ &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;${&lt;/span&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;SolidBZ&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;_sources}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;TARGET_LINK_LIBRARIES&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(SolidBZ &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;${KDE4_SOLID_LIBS}&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; )&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;p&gt;In the first line we set a name for our project, then instruct CMake to find the KDE 4 package. On line 3 we include all defaults for KDE4 and set includes for the compiler on line 4. The &lt;span style="font-weight: bold;"&gt;SET&lt;/span&gt; command creates a variable holding the name of our single source file. The &lt;span style="font-weight: bold;"&gt;KDE4_AUTOMOC&lt;/span&gt; directive is of special importance because we will be creating a kind of QObject and need the &lt;span style="font-style: italic;"&gt;Meta Object Compiler&lt;/span&gt; to create signals implementations and some other stuff. Last two lines set the executable to create with the source from where it should be taken, and finally links it with the Solid library.&lt;/p&gt;&lt;p&gt;Now let's see our header:&lt;br /&gt;&lt;/p&gt;&lt;p&gt;main.h&lt;br /&gt;&lt;/p&gt;&lt;hr /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#ifndef __MAIN&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#define __MAIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;qcoreapplication&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Handler:&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QCoreApplication&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;Q_OBJECT&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  QEventLoop m_loop;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;Handler(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; argc, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; **argv):QCoreApplication(argc,argv){};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;Q_SLOTS&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; slotBluetoothDeviceFound( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QString &amp;nombre, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; deviceClass, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; rssi );   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; slotBluetoothDiscoveryCompleted();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; slotBluetoothDiscoveryStarted(); &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;};&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#endif&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;pre&gt;&lt;p&gt;This class is pretty straightforward, but maybe you're puzzled by the blue words... read &lt;a href="http://doc.trolltech.com/4.2/signalsandslots.html"&gt;this&lt;/a&gt; to understand why they are there.&lt;/p&gt;&lt;p&gt;main.cpp&lt;/p&gt;&lt;hr /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include "main.h"&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;qstring&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;kdebug.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;kcomponentdata.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;solid/control/bluetoothmanager.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include &amp;lt;solid/control/bluetoothinterface.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;namespace&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; std;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; main(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; argc, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;char&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; **argv)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Handler handler(argc,argv);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; KComponentData componentData( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"SolidBZ"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Solid::BluetoothManager &amp;manager = Solid::BluetoothManager::self();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Solid::BluetoothInterface adapter = manager.findBluetoothInterface( manager.defaultInterface());&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QObject::&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;connect&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &amp;adapter, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;SIGNAL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( discoveryStarted() ),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &amp;handler, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;SLOT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( slotBluetoothDiscoveryStarted() ) );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QObject::&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;connect&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &amp;adapter, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;SIGNAL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( remoteDeviceFound( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QString &amp;, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ) ),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &amp;handler, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;SLOT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( slotBluetoothDeviceFound( &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QString &amp;, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ) ) );&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QObject::&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;connect&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( &amp;adapter, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;SIGNAL&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( discoveryCompleted() ),&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &amp;handler, &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 149, 255);"&gt;SLOT&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;( slotBluetoothDiscoveryCompleted() ) );&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; adapter.discoverDevices();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; kDebug() &amp;lt;&amp;lt; &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Searching ..."&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &amp;lt;&amp;lt; endl; &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; handler.m_loop.exec();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Handler::slotBluetoothDeviceFound(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;const&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; QString &amp; nombre, &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; , &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; )&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; kDebug() &amp;lt;&amp;lt; &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Remote device found : "&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &amp;lt;&amp;lt; nombre &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Handler::slotBluetoothDiscoveryCompleted()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; kDebug() &amp;lt;&amp;lt; &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Discovery completed"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &amp;lt;&amp;lt; endl;&lt;br /&gt; m_loop.exit();&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Handler::slotBluetoothDiscoveryStarted()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; kDebug() &amp;lt;&amp;lt; &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Discovery started"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &amp;lt;&amp;lt; endl;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 128, 0);"&gt;#include "main.moc"&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;hr /&gt;&lt;br /&gt;I'll avoid commenting the slots code and focus on the main function. First we get an instance of Handler (that will also set some things up) and one KComponentData that does not so many things here but is needed for kDebug to work correctly. We also create a QEventLoop instance so our program continues running and is able to receive the signals we are looking for.&lt;br /&gt;&lt;br /&gt;Now, we use the static &lt;span style="font-style: italic;"&gt;self()&lt;/span&gt; method from the Solid::BluetoothManager class to get the registered manager (from the BlueZ backend), and using it obtain the default Solid::BluetoothInterface which is the first local device detected by BlueZ.&lt;br /&gt;&lt;br /&gt;Once we have a reference to our default device we connect the declared slots on the Handler class to the signals generated by the BluetoothManager using the &lt;a href="http://doc.trolltech.com/4.2/qobject.html#connect"&gt;QObject::connect&lt;/a&gt; static method.&lt;br /&gt;&lt;br /&gt;As a last step, we call the discoverDevices method on our BluetoothManager, which is asynchronous and will use the signals we've just registered with our slots to notify the results.&lt;br /&gt;&lt;br /&gt;In addition, we call exec() on the QEventLoop so our program can survive to get the responses, and also exit() on that same class to gracefully stop the program once we receive the &lt;span style="font-style: italic;"&gt;discoveryCompleted&lt;/span&gt; signal.&lt;br /&gt;&lt;br /&gt;To compile all this you only have to cd into the &lt;span style="font-style: italic;"&gt;SolidBZ/&lt;/span&gt; folder (in the kde4 environment) and execute:&lt;br /&gt;&lt;blockquote&gt;$ cmake -f CMakeLists.txt&lt;br /&gt;$ make&lt;br /&gt;&lt;/blockquote&gt;And that's it, now just run the resulting SolidBZ executable and watch your remote devices on ASCII ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-553170354294988670?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/553170354294988670/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=553170354294988670' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/553170354294988670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/553170354294988670'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/04/starting-with-solid-bluetooth.html' title='Starting with Solid Bluetooth'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_N72yVkv6ycM/RiKFeCOBBCI/AAAAAAAAAKA/ZFFswXzSKz0/s72-c/kcm_solid_bluez_dif.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-1219795743550746821</id><published>2007-04-12T18:11:00.000+02:00</published><updated>2007-04-12T18:36:10.034+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><title type='text'>One, Two... Three!!</title><content type='html'>I haven't mentioned it here before (at least not in a &lt;a href="http://opsiland.blogspot.com/2007/03/draft-note-this-is-not-final-version-of.html"&gt;explicit way&lt;/a&gt; (hey, I didn't say for what I was proposing it, but with &lt;a href="http://opsiland.blogspot.com/2007/03/google-summer-of-code-2007.html"&gt;some imagination&lt;/a&gt;...)), but I presented 1 application for this year's &lt;a href="http://code.google.com/soc"&gt;Google Summer of Code&lt;/a&gt; and it has been accepted!! (say hurray!).&lt;br /&gt;&lt;br /&gt;This is my third year involved on GSoC and, as the menu for this summer includes a lot of C++, it is the first in  wich i'll be doing something that won't include (by far) any Java code.&lt;br /&gt;&lt;br /&gt;Expect much more KDE related stuff in the next months, and hopefully a fresh and new-to-open KDEBluetooth and Bluetooth Presence Manager for your KDE 4 pleasure by the end of summer.&lt;br /&gt;&lt;br /&gt;Now, some words from our beloved sponsor&lt;br /&gt;&lt;br /&gt;&lt;blockquote  style="font-style: italic;font-family:georgia;"&gt;&lt;span style="font-size:85%;"&gt;Dear Applicant,&lt;br /&gt;&lt;br /&gt;Congratulations! This email is being sent to inform you that your&lt;br /&gt;application was accepted to take part in the Summer of Code. Please...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-1219795743550746821?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/1219795743550746821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=1219795743550746821' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/1219795743550746821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/1219795743550746821'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/04/one-two-three.html' title='One, Two... Three!!'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-4299181088585791287</id><published>2007-04-08T00:45:00.001+02:00</published><updated>2007-04-08T01:04:28.574+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>So, what's up with deleting NULL</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;I've always thought that a C++ program showing a behavior like:&lt;br /&gt;(Of course, you won't find something like this on your code, but it points the fact)&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;int main()&lt;br /&gt;{&lt;br /&gt;void *v = 0;&lt;br /&gt;delete v;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;would make your program just die with a segmentation fault, but I just learned that it turns out to be a valid behavior, so a little program like this &lt;code&gt;&lt;/code&gt;will compile and run with no problem.&lt;br /&gt;Just Amazing ;P&lt;br /&gt;&lt;br /&gt;(found at &lt;a href="http://techbase.kde.org/Development/Tutorials/Common_Programming_Mistakes#NULL_pointer_issues"&gt;http://techbase.kde.org/Development/Tutorials/Common_Programming_Mistakes#NULL_pointer_issues&lt;/a&gt;)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-4299181088585791287?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/4299181088585791287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=4299181088585791287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4299181088585791287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/4299181088585791287'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/04/so-what-up-with-deleting-null.html' title='So, what&amp;#39;s up with deleting NULL'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-8976761363687222336</id><published>2007-04-07T21:56:00.000+02:00</published><updated>2007-04-07T22:26:12.334+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><title type='text'>KDE build state</title><content type='html'>So you have started developing KDE4 apps and keep getting dirty SVN revisions that doesn't compile? Not anymore,  &lt;a href="http://developer.kde.org/~dirk/dashboard/"&gt;here&lt;/a&gt; is a nice web that keeps updated with the building state for each module on KDE SVN trunk, indicating what was the last revision that worked.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-8976761363687222336?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://developer.kde.org/~dirk/dashboard/' title='KDE build state'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/8976761363687222336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=8976761363687222336' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8976761363687222336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8976761363687222336'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/04/kde-build-state-as-of-sat-apr-7-214502.html' title='KDE build state'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-262143984331251131</id><published>2007-04-07T21:53:00.000+02:00</published><updated>2007-04-07T22:26:12.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><title type='text'>Using KDevelop 3 for KDE 4 development</title><content type='html'>A good &lt;a href="http://www.kdedevelopers.org/node/2286"&gt;start point&lt;/a&gt; to develop KDE4 applications using KDevelop 3. You should &lt;a href="http://techbase.kde.org/Getting_Started/Build/KDE4"&gt;set-up&lt;/a&gt; a KDE4 development environment before following it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-262143984331251131?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.kdedevelopers.org/node/2286' title='Using KDevelop 3 for KDE 4 development'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/262143984331251131/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=262143984331251131' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/262143984331251131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/262143984331251131'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/04/using-kdevelop-3-for-kde-4-development.html' title='Using KDevelop 3 for KDE 4 development'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-2597201939537791489</id><published>2007-03-25T20:39:00.000+02:00</published><updated>2007-04-07T22:26:46.303+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><title type='text'>GSoC 2007 Proposal</title><content type='html'>&lt;h1&gt;Bluetooth support on KDE4&lt;br&gt; &lt;/h1&gt; &lt;br&gt; &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;hr style="width: 100%; height: 2px;"&gt; &lt;h2&gt;   &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Abstract&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt; &lt;/h2&gt; Today, most people (at developed countries) carries some &lt;a href="http://www.bluetooth.com/" title="Bluetooth"&gt;Bluetooth&lt;/a&gt; capable cell phone or, looking at the current supply at shops,  they will very soon.  Bluetooth is a wonderful technology that joins power efficiency with easiness, making things like file sharing, wireless hands free and so a  child's game. Of course, Bluetooth is not an exclusive property of the handheld world, and it's easy to find USB Bluetooth devices in the 15€/10$ range, and many new computers include it by default.&lt;br&gt; &lt;br&gt; Like any other wireless technology, or network technology for the matter, when using Bluetooth each device has a world-single "name" called &lt;span style="font-style: italic;"&gt;Bluetooth Device Address &lt;/span&gt;(BD_ADDR), see MAC on Ethernet, which is a 48 bit number that is unique for each Bluetooth capable device and is used by each device to communicate with others. In addition, each device has a user editable Name with the only objective of making users life easier (people don't work very well with 48bit numbers), so you will never find two Bluetooth device with the same BD_ADDR, but you can find an undetermined number of devices with the same Name.&lt;br&gt; &lt;br&gt; In addition, Bluetooth management has been developed in the Linux world for some years, now we have the BlueZ stack integrated in 2.4 and 2.6 kernels providing a library to manipulate Bluetooth devices and a D-Bus interface with the same purpose. Also, KDE has gone it's way and has the KDEBluetooth project, which provides a DCOP interface to the underlying BlueZ DBus interfaces, but has one little issue, is not KDE4 ready. The first part of this proposal is to solve that problem.&lt;br&gt; &lt;br&gt; All this plots an scenario where a user arrival/leaving can be easily identified from Linux using few different ways. What if your computer pauses the music you are listening on Amarok,  locks the screen and mutes the audio when you leave, and also unlock the screen, restart playing your music and opens your favorite mail program and a browser with your favorite tabs when you get back to range. This is a feature that has already been included in OSX through the &lt;a href="http://www.apple.com/downloads/macosx/system_disk_utilities/proximity.html" title="Proximity"&gt;Proximity&lt;/a&gt; application, or even on Linux with the command line tool &lt;a href="http://www.matthew.ath.cx/projects/bluemon/" title="bluemon"&gt;bluemon&lt;/a&gt;, so this proposal includes creating a similar application called &lt;span style="font-style: italic;"&gt;Bluetooth Presence Manager&lt;/span&gt;, BtPM, using KDE4, on top of the previous Bluetooth support works.&lt;br&gt; &lt;br&gt; &lt;h2&gt;   Bluetooth for KDE4 &lt;/h2&gt; Actually, KDEBluetooth uses the library interface to BlueZ, and there is a version on the &lt;a href="http://websvn.kde.org/branches/work/kdebluetooth-dbus-integration/kbluetooth/" title="KDE svn"&gt;KDE svn&lt;/a&gt; that uses the D-Bus one. Both versions work well, but they both suffer of an identical defect, they are Linux-exclusive as BlueZ only exists on that platform. Betwen a new HAL module for KDE, called &lt;a href="http://solid.kde.org/" title="Solid"&gt;Solid&lt;/a&gt;, is under development.&lt;br&gt; &lt;br&gt; That Solid layer works like any other HAL and provides interfaces to "kinds" of devices that are then mapped on a concrete back end implementation depending on the host operating system, and that can be accessed on a programmatic way from kdelibs. This way, a KDE application gets more independence of the hardware it's running on, with all the benefits deriving from it (from a multiplatform perspective).&lt;br&gt; &lt;br&gt; Work has been &lt;a href="http://cryptomilch.de/%7Edgollub/KDE4/" title="already started"&gt;already started&lt;/a&gt; by &lt;a href="http://blog.cryptomilch.de/" title="Daniel Gollub"&gt;Daniel Gollub&lt;/a&gt; to create a Bluetooth interface on Solid and he is working to get it included on KDE 4.0. So, the first thing I propose is to help making it possible.&lt;br&gt; &lt;br&gt; Once we have a stable version of the Solid interface, then I'll write a new version of KDEBluetooth on top of it. After some discussion on IRC we've decided that it's a better idea to rebuild it from scratch as a lot of code to deal with BlueZ will disappear (and it's a lot of KDEBluetooth) and also the changes in Qt and KDE make it not a very appealing task to port the old one as it's written with a some constraints that will disappear after the Solid interface is done.&lt;br&gt; &lt;br&gt; I've done a little research that's represented on the following table and graph to help me planning this work, it's just a count of how many lines does each KDEBluetooth module has and a time prediction based on that (not the best metric though, but enough to get an idea):&lt;br&gt; &lt;br&gt; &lt;img src="http://docs.google.com/File?id=dgstv5h4_20dfhzk7" style="height: 818px; width: 816px;" title="Lines of code of KDEBluetooth for KDE3"&gt;&lt;br&gt; &lt;h2&gt;   Bluetooth Presence Manager &lt;/h2&gt; &lt;br&gt; The idea for BtPM is to create a more visually appealing interface than what Proximity/Bluemon provides, that can handle multiple local/remote devices and provides some predefined actions to associate with the arrival/leave events, for example:&lt;br&gt; &lt;br&gt; &lt;ul&gt;   &lt;li&gt;     Start/Stop Amarok playback, with a given playlist/folder.   &lt;/li&gt;   &lt;li&gt;     Lock/Unlock the screen.   &lt;/li&gt;   &lt;li&gt;     Set/Unset kopete/konversation away state.   &lt;/li&gt;   &lt;li&gt;     Run an arbitrary command (or a command from the KMenu)   &lt;/li&gt;   &lt;li&gt;     ...&lt;br&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;br&gt; There are plenty more actions somebody can imagine, and as most KDE applications provide DCOP interfaces adding them once the infrastructure is developed would be trivial. My idea for this application is to be mostly visual,from menu you open a frame to select local device, then in a sub window of the main frame you get icons representing remote devices laid on a grid. In another sub-window there are icons for all the available actions, so when the user wants to associate an action with a device, he justs drags the desired action over that device and a window pops asking with which event wants the action to be associated with and asking for any parameters the action may need. Of course, interface will also allow to examine which actions are associated with a given device, and modify/delete them, as well as exploring disconnected devices that have some action associated (probably a "Show Hidden" option on contextual menu).&lt;br&gt; &lt;br&gt; &lt;h2&gt;   Deliverables &lt;/h2&gt; Based on the previous description there are three main deliverables associated with this proposal:&lt;br&gt; &lt;ul&gt;   &lt;li&gt;     Add Bluetooth to the Solid library: There is a lot of work done on this by     Daniel, but I'll help him with the frontend and any other stuff that comes     along.&lt;br&gt;   &lt;/li&gt;   &lt;li&gt;     A rewrite of KDEBluetooth using the previous Solid interface and KDE 4. This     must provide the same functionalities the KDE 3 version does.&lt;br&gt;   &lt;/li&gt;   &lt;li&gt;     Bluetooth Presence Manager (BtPM) for KDE4, this will be included as a     KDEBluetooh module and will make use of the named Solid interface. This     should include a user manual, but i'll keep it on DESIRED.&lt;br&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;br&gt; &lt;h2&gt;   Timeline &lt;/h2&gt; According to the &lt;a href="http://code.google.com/support/bin/answer.py?answer=60325&amp;amp;topic=10729" title="official program timeline"&gt;official program time line&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;, coding should start on May 28 and end at August 20 (12 weeks), but as feature freeze for KDE 4.0 is April 1, I will start working with Daniel before May 28 so the Solid part is (hopefully) available for 4.0. As this work will be out of the official time frame and also there is a lot of it already done I won't include it in the schedule for the official period, and I'll count it as a training with KDE4 development. For the another two deliverables &lt;a title="here" href="http://www.opsiland.info/PlanningGSOC2007.html"&gt;here&lt;/a&gt; is a Gantt chart showing what I expect based on the data shown before.&lt;br&gt; &lt;br&gt; &lt;h2&gt;   &lt;span style="text-decoration: line-through;"&gt;&lt;/span&gt;Technologies &lt;/h2&gt; The involved software components have already been mentioned, but here is a summary:&lt;br&gt; &lt;ul&gt;   &lt;li&gt;     Kubuntu 6.10, this is the distribution I use, and the one where every     development will occur.&lt;br&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;ul&gt;   &lt;li&gt;     KDE 4, using the head SVN version during all the project, and keeping it in     sync with any possible api change. Solid is part of KDE 4.&lt;br&gt;   &lt;/li&gt;   &lt;li&gt;     BlueZ, the DBus interface to which KDEBluetooth binds.&lt;br&gt;   &lt;/li&gt;   &lt;li&gt;     KDEBluetooth, this is one of the core parts of this proposal, rewrite     KDEBluetooth for KDE4.   &lt;/li&gt;   &lt;li&gt;     All the KDE toolchain(KDevelop, KBabel, cmake, ...)   &lt;/li&gt; &lt;/ul&gt; &lt;br&gt; About the hardware used:&lt;br&gt; &lt;ul&gt;   &lt;li&gt;     I have a a USB Bluetooth adapter     &lt;a href="http://www.conceptronic.net/site/desktopdefault.aspx?tabindex=0&amp;amp;tabid=200&amp;amp;Cat=10&amp;amp;grp=1020&amp;amp;ar=351&amp;amp;Prod_ID=1227&amp;amp;Prod=CBT200U2" title="Well, not exactly this model, but very like"&gt;from     Conceptronic&lt;/a&gt; that works perfectly on my Kubuntu system.   &lt;/li&gt;   &lt;li&gt;     &lt;a href="http://www.sharp-phone.com/country/products/product/spec.php?country=GB&amp;amp;lang=en&amp;amp;product=GX17" title="My mobile phone"&gt;My     mobile phone&lt;/a&gt; has bluetooth support and is correctly detected by Bluez.   &lt;/li&gt;   &lt;li&gt;     Well, my computer, just standard.&lt;br&gt;   &lt;/li&gt; &lt;/ul&gt; &lt;h2&gt;   About me &lt;/h2&gt; I'm a CS student in the last undergrad year at an University in southern Spain (so I'm spaniard). Last two years I participated on SoC with the Project Looking Glass, (succesfully) doing Java development which is my strongest actually. I have C++ knowledge, not as solid as it's for Java, but quite good (and getting better as I read/write code).&lt;br&gt; &lt;br&gt; I installed Linux for the first time in 1997 (&lt;a href="http://counter.li.org/cgi-bin/runscript/display-person.cgi?user=90724" title="Linux registered user since 1998 ;)"&gt;#90724&lt;/a&gt;), and I've been using it as my main OS since then (Slackware, Suse, Debian, Kubuntu (nicest for me)) and KDE since a bit later (say 2000), so I'm quite familiar with it (also with some BSD flavors, but less). I've also done some little developments for the university using the KDE libs, kdevelop+designer combined with the konqueror kde: shortcut makes life much easier than what gtk+glade used to last time I tried.&lt;br&gt; &lt;br&gt; I'm familiar with CVS, and to less extend with SVN (enough to work with it). I also know Bash,HTML,PHP,... and many things I won't need for this project.&lt;br&gt; &lt;br&gt; &lt;hr style="width: 100%; height: 2px;"&gt;&lt;br&gt; &lt;span style="font-weight: bold;"&gt;PS:&lt;/span&gt; I'm sure you already noted it, but English is not my mother tongue so, sorry for any mistake.&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-2597201939537791489?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://docs.google.com/Doc?id=dgstv5h4_18gnvk94' title='GSoC 2007 Proposal'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/2597201939537791489/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=2597201939537791489' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/2597201939537791489'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/2597201939537791489'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/03/draft-note-this-is-not-final-version-of.html' title='GSoC 2007 Proposal'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-5619475601412482292</id><published>2007-03-08T17:28:00.000+01:00</published><updated>2007-04-07T22:26:46.304+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><title type='text'>Google Summer of Code 2007</title><content type='html'>   &lt;span style="font-weight: bold;"&gt;¿Quieres escribir software libre este verano?&lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;¿Quieres ganar dinero?&lt;/span&gt;&lt;br style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;¿Quieres hacer las dos cosas?&lt;/span&gt;&lt;br&gt;&lt;br&gt;El año pasado Google gastó $3,000,000 en patrocinar 630 proyectos de estudiantes a lo largo de 90 países con la ayuda de mas de cien organizaciones mentoras. El Google Summer of Code TM vuelve de nuevo en 2007!&lt;br&gt;&lt;br&gt;Google Summer of Code TM esta expresamente diseñado para llevar a las mentes mas brillantes en los campus a contribuir en iniciativas de software libre e inventar nuevos programas de software libre.&lt;br&gt;&lt;br&gt;Después de todo, aunque los motivos altruistas son loables y la recompensa del reconocimiento de tus iguales agradable, la idea de un premio económico antecede a la Comisión del Nobel - y realmente ¿quien necesita dinero mas que un pobre estudiante de universidad?&lt;br&gt;&lt;br&gt;Así que aquí viene toda la verdad: vamos a dar $4,500 a todos aquellos participantes que consigan trabajar de forma satisfactoria con alguna de las organizaciones colaboradoras para crear software libre que sea útil e innovador. También te enviaremos una camiseta junto con el dinero.&lt;br&gt;&lt;br&gt;Visita code.google.com/soc/ para saber mas y poder enviar tu idea para un proyecto.&lt;br&gt;&lt;br&gt;El plazo para presentar solicitudes de estudiante cumple el 24 de marzo de 2007.&lt;br&gt;&lt;br&gt;&lt;font size="2"&gt;© 2007 Google Inc. Todos los derechos reservados. Google y el logo de Google son marcas registradas por Google Inc.&lt;/font&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-5619475601412482292?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/soc' title='Google Summer of Code 2007'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/5619475601412482292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=5619475601412482292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5619475601412482292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5619475601412482292'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/03/google-summer-of-code-2007.html' title='Google Summer of Code 2007'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-5742313584677314606</id><published>2007-02-22T18:15:00.001+01:00</published><updated>2007-04-07T22:27:41.919+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Science vs Faith</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a href="http://www.wellingtongrey.net/miscellanea/archive/2007-01-15%20--%20science%20vs%20faith.html"&gt;&lt;img style="border: 0px solid ; width: 100%;" src="http://www.wellingtongrey.net/miscellanea/archive/2007-01-15%20--%20science%20vs%20faith.png" alt="Science vs Faith, theory, experiment, idea, universe, religion, science" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-5742313584677314606?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/5742313584677314606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=5742313584677314606' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5742313584677314606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5742313584677314606'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/02/science-vs-faith_22.html' title='Science vs Faith'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-5899318905854420263</id><published>2007-02-06T16:50:00.000+01:00</published><updated>2007-04-07T22:27:41.925+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>eXtreme feedback</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.developertesting.com/images/entryimages/mdt-extreme-feedback_07_0001.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://www.developertesting.com/images/entryimages/mdt-extreme-feedback_07_0001.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-5899318905854420263?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/5899318905854420263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=5899318905854420263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5899318905854420263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/5899318905854420263'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/02/extreme-feedback.html' title='eXtreme feedback'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-8726863501348796194</id><published>2007-01-20T04:25:00.000+01:00</published><updated>2007-04-07T22:27:41.927+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>I must buy a pig...</title><content type='html'>...  to start saving money for one of these (of course it's a ceramics pig)&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="350"&gt;&lt;param name="movie" value="http://www.youtube.com/v/YgW7or1TuFk"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/YgW7or1TuFk" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-8726863501348796194?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/8726863501348796194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=8726863501348796194' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8726863501348796194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8726863501348796194'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/01/i-must-buy-pig.html' title='I must buy a pig...'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-8506883538798267675</id><published>2007-01-08T19:48:00.001+01:00</published><updated>2007-04-07T22:27:41.928+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Never trust a computer you can't throw out a window</title><content type='html'>&lt;div xmlns='http://www.w3.org/1999/xhtml'&gt;atributed to &lt;a href='http://www.woz.org/' target='_blank'&gt;Steve «Woz» Wozniak&lt;/a&gt;&lt;br&gt;&lt;/br&gt;(from &lt;a href='http://www.microsiervos.com/archivo/frases-citas/no-te-fies-ordenador.html'&gt;Microsiervos&lt;/a&gt; (spanish site))&lt;br&gt;&lt;/br&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-8506883538798267675?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/8506883538798267675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=8506883538798267675' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8506883538798267675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/8506883538798267675'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2007/01/never-trust-computer-you-can-throw-out.html' title='Never trust a computer you can&amp;#39;t throw out a window'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-116292945327581652</id><published>2006-11-07T20:51:00.000+01:00</published><updated>2007-04-07T22:26:46.305+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><title type='text'>Inside Google's London office</title><content type='html'>&lt;p&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 655px; height: 474px;" src="http://fgd.trebec.org/media/photos/2006/11/GSoC06London.jpg" alt="" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;One of those things you never forget (photo by &lt;a href="http://joe.truemesh.com/blog/"&gt;Joe Walnes&lt;/a&gt;, through &lt;a href="http://fgd.trebec.org/posts/gsocers-google-offices-london/"&gt;this SoCer&lt;/a&gt;)&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-116292945327581652?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/116292945327581652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=116292945327581652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/116292945327581652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/116292945327581652'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/11/inside-googles-london-office.html' title='Inside Google&apos;s London office'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-116275688083635050</id><published>2006-11-05T21:01:00.000+01:00</published><updated>2007-04-07T22:27:41.929+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Choose to sysadmin.</title><content type='html'>&lt;img src="http://amigosh.dtiltas.lt/%7Elauras/photos/main.php?g2_view=core.DownloadItem&amp;amp;g2_itemId=991&amp;amp;g2_serialNumber=2" /&gt;&lt;br /&gt;&lt;a href="http://of-code.blogspot.com/2006/11/google-london-office-visit.html"&gt;from here&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-116275688083635050?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/116275688083635050/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=116275688083635050' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/116275688083635050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/116275688083635050'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/11/choose-to-sysadmin.html' title='Choose to sysadmin.'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-116215935002503885</id><published>2006-10-29T22:52:00.000+01:00</published><updated>2007-04-07T22:27:41.936+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Project OrangeBox</title><content type='html'>As you may have noticed i'm quite slow posting to this blog, it's been a busy time, but this too nice to not blog about it (Copy&amp;paste follows, I said i'm quite busy ;):&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;If you thought that &lt;a href="http://www.sun.com/emrkt/blackbox/index.jsp"&gt;project Blackbox&lt;/a&gt; is cool and solves datacenter issues with incredible price-performance, eco-responsibility, space requirements, extreme mobility, quick setup, and so on, forget about it. You need to check out project Orangebox, which is the top innovation from Sun.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blogs.sun.com/SC/entry/project_orangebox"&gt;Project Orangebox&lt;/a&gt; is even more eco-responsible, needs less space (unless you give it too much water) and the other factors are also stunning.&lt;br /&gt;&lt;p&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 356px; height: 267px;" src="http://blogs.sun.com/SC/resource/po1.jpg" alt="" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The world's first virtualized pumpkin!&lt;br /&gt;&lt;br /&gt;I would like to thank to &lt;a href="http://blogs.sun.com/SC/entry/project_orangebox"&gt;Achut Reddy&lt;/a&gt; for prolonging my life with a good laughter this morning.&lt;/blockquote&gt;And I would like to thank &lt;a href="http://blogs.sun.com/roumen/"&gt;Roumen&lt;/a&gt; for the same. Back to work&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-116215935002503885?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.sun.com/roumen/entry/project_blackbox_beaten' title='Project OrangeBox'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/116215935002503885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=116215935002503885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/116215935002503885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/116215935002503885'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/10/project-orangebox.html' title='Project OrangeBox'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-115625868730677620</id><published>2006-08-22T16:58:00.000+02:00</published><updated>2007-04-07T22:26:46.306+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><title type='text'>What a cool thank you!</title><content type='html'>&lt;a href="http://www.manucornet.net/"&gt;Manu Cornet&lt;/a&gt; (a &lt;a href="http://code.google.com/soc/olpc/appinfo.html?csaid=D5EC4C07C016815C"&gt;fellow socer&lt;/a&gt;) made a quite cool &lt;a href="http://www.manucornet.net/thankyou/"&gt;thank you&lt;/a&gt; to Google, quite cool.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-115625868730677620?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/115625868730677620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=115625868730677620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115625868730677620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115625868730677620'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/08/what-cool-thank-you.html' title='What a cool thank you!'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-115624941935086727</id><published>2006-08-22T14:19:00.001+02:00</published><updated>2007-04-07T22:27:41.937+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Anything is online</title><content type='html'>What would you do if a totally stranger walks down to you and asks you to touch his belly?&lt;br /&gt;&lt;br /&gt;People do strange things...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-115624941935086727?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://touchmybelly.blogspot.com/' title='Anything is online'/><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/115624941935086727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=115624941935086727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115624941935086727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115624941935086727'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/08/anything-is-online_22.html' title='Anything is online'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-115624598482815412</id><published>2006-08-22T13:26:00.000+02:00</published><updated>2007-04-07T22:27:41.938+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>How to do what you love</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;blockquote&gt;"Whichever route you take, expect a struggle. Finding work you love is very difficult. Most people fail. Even if you succeed, it's rare to be free to work on what you want till your thirties or forties. But if you have the destination in sight you'll be more likely to arrive at it. If you know you can love work, you're in the home stretch, and if you know what work you love, you're practically there."&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div align="right"&gt;&lt;a href="http://paulgraham.com/love.html"&gt;Paul Graham,&lt;/a&gt; January 2006&lt;/div&gt;&lt;br /&gt;Remember to keep your &lt;b&gt;destination&lt;/b&gt; in &lt;b&gt;sight&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-115624598482815412?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/115624598482815412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=115624598482815412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115624598482815412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115624598482815412'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/08/how-to-do-what-you-love.html' title='How to do what you love'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-115099049875022401</id><published>2006-06-22T17:34:00.000+02:00</published><updated>2007-04-07T22:27:41.939+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>What is the answer to life, the universe and everything?</title><content type='html'>Even &lt;a href="http://www.google.com/search?hl=en&amp;amp;lr=&amp;amp;ie=ISO-8859-1&amp;amp;q=answer+to+life%2C+the+universe+and+everything&amp;amp;btnG=Search"&gt;google&lt;/a&gt; knows it ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-115099049875022401?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/115099049875022401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=115099049875022401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115099049875022401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115099049875022401'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/06/what-is-answer-to-life-universe-and.html' title='What is the answer to life, the universe and everything?'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-115097224165245114</id><published>2006-06-22T12:30:00.000+02:00</published><updated>2007-04-07T22:27:41.939+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>BumpTop, a "natural" desktop</title><content type='html'>Imagine a desktop where your documents have physic properties to push another documents with their movement, a desktop where you can pile documents and search them in a fashionable and natural way. Take a look at &lt;a href="http://honeybrown.ca/Pubs/BumpTop.html"&gt;BumTop,&lt;/a&gt; a &lt;a href="http://honeybrown.ca/Pubs/BumpTop.pdf"&gt;prototype&lt;/a&gt; that takes the &lt;a href="http://en.wikipedia.org/wiki/Desktop_metaphor"&gt;desktop metaphor&lt;/a&gt; one step further :&lt;br /&gt;&lt;br /&gt;&lt;object height="350" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/M0ODskdEPnQ"&gt;&lt;embed src="http://www.youtube.com/v/M0ODskdEPnQ" type="application/x-shockwave-flash" height="350" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-115097224165245114?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/115097224165245114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=115097224165245114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115097224165245114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115097224165245114'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/06/bumptop-natural-desktop.html' title='BumpTop, a &quot;natural&quot; desktop'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-115089293374926945</id><published>2006-06-21T14:28:00.001+02:00</published><updated>2007-04-07T22:28:17.371+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>OpenOffice.org api</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Through &lt;a href="http://blogs.sun.com/roller/page/geertjan"&gt;Geertjan Wielenga's blog&lt;/a&gt; I listen about a quite promising project I haven't hear before. It's the &lt;a href="http://api.openoffice.org"&gt;OpenOffice API&lt;/a&gt; and it provides interfaces to allow the use of OO.org facilities from within your own programs. You can see some initial tests done by Geertjan &lt;a href="http://blogs.sun.com/roller/page/geertjan?entry=openoffice_org_api"&gt;here&lt;/a&gt; and &lt;a href="http://blogs.sun.com/roller/page/geertjan?entry=rapid_scam_letter_creator"&gt;here.&lt;/a&gt; Actually the OO.org site is under maintenance so I can't download it, but i'll do it as soon as possible and post something here.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-115089293374926945?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/115089293374926945/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=115089293374926945' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115089293374926945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/115089293374926945'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/06/openofficeorg-api_115089293374926945.html' title='OpenOffice.org api'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-114867931734645505</id><published>2006-05-26T23:34:00.000+02:00</published><updated>2007-04-07T22:27:41.940+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Dukelele's band</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=wf5_TN602lc"&gt;watch&lt;/a&gt; hideya kawahara and yuichi sakuraba play the dukelele&lt;span class="down" style="display: block;" id="formatbar_CreateLink" title="Vínculo" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-114867931734645505?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/114867931734645505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=114867931734645505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114867931734645505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114867931734645505'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/05/dukeleles-band_26.html' title='Dukelele&apos;s band'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-114848377126440570</id><published>2006-05-24T17:16:00.000+02:00</published><updated>2007-04-07T22:26:46.307+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='summer of code'/><title type='text'>My Summer of Code blog</title><content type='html'>Just leave a note that i've been accepted for  the &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt;'s &lt;a href="http://code.google.com/soc/"&gt;Summer of Code&lt;/a&gt; 2006 to create an implementation of the freedesktop standards for menu&amp;amp;desktop regeneration into the &lt;a href="http://lg3d.dev.java.net/"&gt;Project Looking Glass&lt;/a&gt; (You can take a look at my proposal &lt;a href="http://wiki.java.net/bin/view/People/JuanGonzalez"&gt;here&lt;/a&gt;) and that i started &lt;a href="http://opsi-soc2006.blogspot.com/"&gt;another blog&lt;/a&gt; with the purpose of following my work on the summer.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-114848377126440570?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/114848377126440570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=114848377126440570' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114848377126440570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114848377126440570'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/05/my-summer-of-code-blog.html' title='My Summer of Code blog'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-114842800529229143</id><published>2006-05-24T01:51:00.000+02:00</published><updated>2007-04-07T22:28:32.603+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='miscelanea'/><title type='text'>Schwartz says the GPL is *on* the table for Java</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Mr.Jonathan Schwartz (Sun's CEO) &lt;a href="http://blogs.sun.com/roller/page/jonathan?entry=busy_week1"&gt;says&lt;/a&gt; in his &lt;a href="http://blogs.sun.com/jonathan"&gt;blog&lt;/a&gt; that:&lt;br /&gt;&lt;br /&gt;"&lt;span class="body"&gt;But all in all, a really great week - we're now making serious progress&lt;br /&gt;on open sourcing Java (and despite the cynics, using a GPL license is&lt;br /&gt;very much *on* the table), while focusing the debate on what matters&lt;br /&gt;most: not access to lines of code (that's already &lt;a href="http://java.sun.com/developer/technicalArticles/J2SE/peabody/"&gt;widely available&lt;/a&gt;), but ensuring compatibility."&lt;br /&gt;&lt;br /&gt;Who says Sun is not open?&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-114842800529229143?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/114842800529229143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=114842800529229143' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114842800529229143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114842800529229143'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/05/schwartz-says-gpl-is-on-table-for-java.html' title='Schwartz says the GPL is *on* the table for Java'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-114804254762306331</id><published>2006-05-19T14:45:00.000+02:00</published><updated>2007-04-07T22:28:17.373+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Ajax for Java dummies</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; just released a &lt;a href="http://code.google.com/webtoolkit/"&gt;framework&lt;/a&gt; through their &lt;a href="http://code.google.com/"&gt;Open Source site&lt;/a&gt; to let Java programmers that doesn't know the quirks of web development create cool dynamic webpages using only Java code to generate pure HTML/Javascript (Ajax) code. This way the webs generated with the framework can be accesed by almost every browser (not with Konqueror 3.5.2 though), making easier to developers it's deployment in multiple browsers from one codebase. &lt;br /&gt;&lt;br /&gt;Another interesting fact about the Google's approach is that they provide a class to show the (to be) generated web inside a Java app so developers can &lt;a href="http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.Fundamentals.HostedMode.html"&gt;debug it&lt;/a&gt; from within their favorite IDE. &lt;br /&gt;&lt;br /&gt;Somebody should create a &lt;a href="http://netbeans.org/"&gt;Netbeans&lt;/a&gt; project Template to integrate the toolkit in it...&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-114804254762306331?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/114804254762306331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=114804254762306331' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114804254762306331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114804254762306331'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/05/ajax-for-java-dummies.html' title='Ajax for Java dummies'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-114789234472078483</id><published>2006-05-17T21:02:00.000+02:00</published><updated>2007-04-07T22:28:17.374+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Opening Java</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp; If you are not living under a stone, you have surely listened about &lt;a href="http://www.sun.com"&gt;Sun&lt;/a&gt;'s intention to "open" the sources of Java, a good move from &lt;a href="http://blogs.sun.com/jonathan"&gt;Schwartz&lt;/a&gt; who clearly sees that the future ot software is not only in innovation but also in participation.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you want to watch the anouncement that is in every mouth, open &lt;a href="http://webcast-west.sun.com/ramgen/archives/06D00627/06D00627_11_300.rm"&gt;this&lt;/a&gt; RealPlayer file, go to minute 23 and watch Rich Green state before a huge audience that "it (open sourcing Java) is not a question of wether but a question of how, and so we will do this". It doesn't sound like a rummour...&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-114789234472078483?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/114789234472078483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=114789234472078483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114789234472078483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114789234472078483'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/05/opening-java.html' title='Opening Java'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-114778969296768126</id><published>2006-05-16T16:28:00.000+02:00</published><updated>2007-04-07T22:28:17.376+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Hibernate made easier</title><content type='html'>&lt;a href="http://www.hibernate.org/"&gt;Hibernate&lt;/a&gt; is a relational persistence service initially developed for the Java language (and succesfully ported to C#) that allow programmers to bind objects from their language with rows in a relational database. It's a cool technology that let developers forget about SQL queries, and integrate the database systems advantages more easily into their applications.&lt;br /&gt;&lt;br /&gt;    While Hibernate is quite easy to learn, it still includes some hand work that may be a bit boring and repetitive. Here is where  &lt;a href="http://nbxdoclet.sourceforge.net/index.php"&gt;NBXDoclet&lt;/a&gt; comes in action.&lt;br /&gt;NBXDoclet is a plugin (module) for the &lt;a href="http://www.netbeans.org/"&gt;Netbeans&lt;/a&gt;  IDE (download &lt;a href="http://www.netbeans.info/downloads/download.php?type=5.0"&gt;here&lt;/a&gt;) that  will  include common tasks related to Hibernate projects within the netbeans editor.&lt;br /&gt;   &lt;br /&gt;    You can watch a &lt;a href="http://www.netbeans.info/downloads/download.php?type=5.0"&gt;flash demo&lt;/a&gt; to see how nice it is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-114778969296768126?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/114778969296768126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=114778969296768126' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114778969296768126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114778969296768126'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/05/hibernate-made-easier.html' title='Hibernate made easier'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-28097013.post-114763246596317988</id><published>2006-05-14T20:44:00.000+02:00</published><updated>2006-05-14T20:53:18.290+02:00</updated><title type='text'>First post</title><content type='html'>Hehe, what a so original title for the post, isn't it? &lt;br /&gt;This is not the first time that I start a blog, but I haven't succed before, who knows what will happen now...&lt;br /&gt;&lt;br /&gt;(Remember that I'm from Spain, be patient with my english)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/28097013-114763246596317988?l=opsiland.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://opsiland.blogspot.com/feeds/114763246596317988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=28097013&amp;postID=114763246596317988' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114763246596317988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/28097013/posts/default/114763246596317988'/><link rel='alternate' type='text/html' href='http://opsiland.blogspot.com/2006/05/first-post.html' title='First post'/><author><name>Opsi</name><uri>http://www.blogger.com/profile/00369479754091055865</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='https://lg3d.dev.java.net/images/contributors/opsi.jpg'/></author><thr:total>1</thr:total></entry></feed>
