<?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-57700989516441543</id><updated>2012-01-11T09:02:26.169-01:00</updated><category term='life questions'/><category term='boot-land.net'/><category term='google friend connect'/><category term='CISCO'/><category term='reboot.pro'/><category term='vacations'/><category term='registry'/><category term='free'/><category term='watch'/><category term='UML editor'/><category term='tortoise'/><category term='CMU'/><category term='Windows'/><category term='familly'/><category term='yEd'/><category term='phone'/><category term='winbuilder'/><category term='EJB'/><category term='StarCraft'/><category term='ubuntu laptop HP Pavilion tx1000'/><category term='coffee ninja sponsor'/><category term='WINE'/><category term='Laptop'/><category term='bizarre world'/><category term='eclipse'/><category term='web 3.0'/><category term='UPB'/><category term='reviews'/><category term='mysql'/><category term='remedium'/><category term='ninja pendisk'/><category term='security'/><category term='vista uac'/><category term='dedicated server'/><category term='slay'/><category term='PE header'/><category term='summer tent beach carla nuno'/><category term='remote posting'/><category term='OSX'/><category term='Universidade de Coimbra'/><category term='wordpress'/><category term='godaddy'/><category term='pocket pc'/><category term='miguel'/><category term='Stock Market'/><category term='desktop'/><category term='barack obama'/><category term='ubuntu 8.04 VirtualBox 1.6 Personal Edition'/><category term='FindBugs'/><category term='addons2wpi'/><category term='R1Soft'/><category term='HTC PDA'/><category term='HTTP server'/><category term='raw registry'/><category term='ubuntu'/><category term='DDOS'/><category term='biography'/><category term='razor cms'/><category term='google apps'/><category term='Pittsburgh.'/><category term='electric'/><category term='windpws 7 pwned'/><category term='ubuntu 8.10'/><category term='MSE'/><category term='desktop path'/><category term='wiki'/><category term='msfn.org'/><category term='exam season'/><category term='google ads'/><category term='peper'/><category term='PSP'/><category term='xmarks'/><category term='gadget'/><category term='LOC counter'/><category term='stack overflow'/><category term='C&apos;T'/><category term='Acer One'/><category term='baby nuno  carla azores'/><category term='law suit'/><category term='Avatar'/><category term='WIM'/><category term='Coffee'/><category term='CCNA'/><category term='ubuntu mac virtualbox'/><category term='phpbb'/><category term='litePHP'/><category term='scooter'/><category term='romans'/><category term='domain'/><category term='hive'/><category term='mom'/><category term='summer terceira'/><category term='Azores'/><category term='app engine'/><category term='GALP'/><category term='Mac OSX'/><category term='database'/><category term='apache'/><category term='Coimbra'/><category term='raw editor'/><category term='birthday'/><category term='Pittsburgh'/><category term='Canon Ixus 70'/><category term='phpmyadmin'/><category term='email redirection'/><category term='ubuntu virtualbox init.d boot start virtual machine'/><category term='wife'/><category term='MS'/><category term='university carla'/><category term='Java'/><category term='freeware'/><category term='hi5'/><category term='botnet'/><category term='netbeans'/><category term='virusremoval.pro'/><category term='DoD'/><category term='Toshiba R360'/><category term='unix'/><category term='minimum wage'/><category term='C programming language'/><category term='SVN'/><category term='HSQL'/><category term='gmail'/><category term='flippa.com'/><category term='ubuntu 8.10 virtualbox'/><category term='ubuntu 8.04 VirtualBox 1.6 Personal Edition Host USB'/><title type='text'>nuno brito</title><subtitle type='html'>.tidybits of a virtual life</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default?start-index=101&amp;max-results=100'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>178</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2926738982979466793</id><published>2012-01-06T15:57:00.003-01:00</published><updated>2012-01-06T15:58:54.225-01:00</updated><title type='text'>Free photo storage on google plus</title><content type='html'>If you are a fan of picasa, flickr and the such, then there is a nice feature on google plus: free storage of pictures.&lt;br /&gt;&lt;br /&gt;This is nice when considering a cloud storage of your favorite pictures.&lt;br /&gt;&lt;br /&gt;More details can be found at:&lt;br /&gt;&lt;a href="http://support.google.com/picasa/bin/answer.py?hl=en&amp;amp;answer=39567"&gt;http://support.google.com/picasa/bin/answer.py?hl=en&amp;amp;answer=39567&lt;/a&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="background-color: white; color: #222222; font-family: Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;i&gt;Google+ provides unlimited storage for photos uploaded in Google+, which are automatically resized to 2048 pixels. Videos up to 15 minutes in length are also free.&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Have fun while the freebie lasts! :)&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/57700989516441543-2926738982979466793?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2926738982979466793/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2012/01/free-photo-storage-on-google-plus.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2926738982979466793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2926738982979466793'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2012/01/free-photo-storage-on-google-plus.html' title='Free photo storage on google plus'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6643801960658129729</id><published>2011-11-25T18:10:00.001-01:00</published><updated>2011-11-25T18:11:48.822-01:00</updated><title type='text'>Calculating the year using only milliseconds</title><content type='html'>Nice way to get the current year in Java.&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;int year = System.currentTimeMillis()/1000/3600/24/365.25 + 1970;&lt;/blockquote&gt;&lt;br /&gt;Credits are due to Ewin Makepeace at&amp;nbsp;&lt;a href="http://stackoverflow.com/questions/136419/get-integer-value-of-the-current-year-in-java"&gt;http://stackoverflow.com/questions/136419/get-integer-value-of-the-current-year-in-java&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-6643801960658129729?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6643801960658129729/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/11/calculating-year-using-only.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6643801960658129729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6643801960658129729'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/11/calculating-year-using-only.html' title='Calculating the year using only milliseconds'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3638886412372693780</id><published>2011-11-07T13:01:00.000-01:00</published><updated>2012-01-11T09:02:26.176-01:00</updated><title type='text'>IFRAME and reloading back the page to the top</title><content type='html'>I was trying to solve my way around a nuisance.. On web portal that I am working on, there exists the need to use an IFRAME in order to interface two difference platforms.&lt;br /&gt;&lt;br /&gt;So, far things were going great but when I was submitting a long form, the new page that came as result would not be visible unless the user would manually wind up the browser window all the way to the top.&lt;br /&gt;&lt;br /&gt;Tried out a few things until I finally found a working solution: using the "onload" event triggered by the IFrame and some java script.&lt;br /&gt;&lt;br /&gt;So the end result to get neat looking pages is:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;i&gt;&amp;lt;iframe src="http://localhost?display=register" &lt;b&gt;onLoad="window.parent.scroll(0,0);&lt;/b&gt;"&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;br /&gt;And this way you get yourself back to the top of the page every time that a new page is requested inside the iframe window. Problem solved.&lt;br /&gt;&lt;br /&gt;Take care!&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/57700989516441543-3638886412372693780?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3638886412372693780/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/11/iframe-and-reloading-back-page-to-top.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3638886412372693780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3638886412372693780'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/11/iframe-and-reloading-back-page-to-top.html' title='IFRAME and reloading back the page to the top'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8044456863398049609</id><published>2011-11-06T18:52:00.000-01:00</published><updated>2011-11-06T18:52:54.730-01:00</updated><title type='text'>Reboot hosts the official forum for ISOstick</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://s3.amazonaws.com/ksr/avatars/1042618/eiIcon-128x128.thumb.jpg?1309089077" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://s3.amazonaws.com/ksr/avatars/1042618/eiIcon-128x128.thumb.jpg?1309089077" /&gt;&lt;/a&gt;&lt;/div&gt;ISOstick is an interesting USB flash drive because it believes (and fools others) that it is an optical DVD drive.&amp;nbsp;Recently received a full sponsoring from kickstarter.com to begin production:&amp;nbsp;&lt;a href="http://www.kickstarter.com/projects/elegantinvention/isostick-the-optical-drive-in-a-usb-stick/posts/120874"&gt;http://www.kickstarter.com/projects/elegantinvention/isostick-the-optical-drive-in-a-usb-stick/posts/120874&lt;/a&gt;&amp;nbsp;and should soon be available to everyone.&lt;br /&gt;&lt;br /&gt;This a great tool for a any self-claimed rebooter. Allows to switch on-the-fly between multiple ISO images and customize them to his will, so I invited the creator behind this cool product to join our community and we are now the official discussion forum for isostick.&lt;br /&gt;&lt;br /&gt;Really cool distinction, really cool person to help and work with. More details about this cooperation can also be read in Elegant Invention's blog at&amp;nbsp;&lt;a href="http://blog.elegantinvention.com/?p=161"&gt;http://blog.elegantinvention.com/?p=161&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Take care! :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-8044456863398049609?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8044456863398049609/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/11/reboot-hosts-official-forum-for.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8044456863398049609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8044456863398049609'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/11/reboot-hosts-official-forum-for.html' title='Reboot hosts the official forum for ISOstick'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2067809815217300419</id><published>2011-10-27T12:11:00.000Z</published><updated>2011-10-27T12:12:25.821Z</updated><title type='text'>30</title><content type='html'>Regardless of what others might say, I can only see that life gets stranger as you get old.&lt;br /&gt;&lt;br /&gt;Wouldn't necessarily say better or worse but simply strange.We learn so much and get wiser, yet one can also get so unsurprised about new things and becomes quite boring per times.&lt;br /&gt;&lt;br /&gt;As I grow older, I also start to note some patterns emerging on people around my age gap.And this reflection comes to place since this month is my birthday date. It is a special event for me as I will be celebrating thirty years of existence.&lt;br /&gt;&lt;br /&gt;I truly wish that I could have done many things differently across these short decades. There were so many happy thoughts, sad moments and unique emotions that will never be repeated. Perhaps I should (finally) give some credit to the comments from some friends claiming that I am a fatalistic person, looking too often to the past and interpreting my own future has already written.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;However, if the future hasn't been written already, what else can be waiting behind the door?&lt;br /&gt;&lt;br /&gt;Oh well.. I just wish that I could smile more often. Wish that I could enjoy life with the same passion as before.&lt;br /&gt;&lt;br /&gt;While writing this I see that I'm not so fatalistic after all, I do want to feel life, I don't want to stop feeling amazed when I see new things, I want to keep moving and doing new things that make each day special.Thirty is not the end of the world, it is the beginning of a new chapter.&lt;br /&gt;&lt;br /&gt;Let's break the patterns and move forward! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2067809815217300419?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2067809815217300419/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/10/30.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2067809815217300419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2067809815217300419'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/10/30.html' title='30'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5814566276435352711</id><published>2011-10-13T15:54:00.003Z</published><updated>2011-10-13T16:04:42.629Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java scripting for the Remedium platform</title><content type='html'>The latest version of Remedium comes with support for dynamic Java scripting provided by the BeanShell interpreter: &lt;a href="http://www.beanshell.org/"&gt;http://www.beanshell.org/&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you never heard of it, think of bean shell as the PHP equivalent for Java.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Remedium needed a way of getting away from statically compiled classes onto a scripting language. There were plenty of choices available and I chose beanshell because of its simplicity and close resemblance to the Java language. If you know Java or C, you will instantly figure out how this works.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What's the advantage for Remedium?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a web based platform, it allows developers to create scripts that take advantage of the platform without needing to setup a full development environment. This also eases the task of customization and updates.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Along with support for bean shell scripts I also added support for displaying pages of raw HTML from the disk. This works nicely to create, for example, HTML forms that call a given bean shell script.  This way it is possible to add business logic without any compilation being necessary.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, now we have a neat standalone application server that is capable of serving and interpreting scripts that output web pages. No need for a JBoss, Tomcat, JSP, Apache or even PHP interpreters.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you haven't try out BeanShell before, go ahead. It is worth the time to try out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-5814566276435352711?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5814566276435352711/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/10/java-scripting-for-remedium-platform.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5814566276435352711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5814566276435352711'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/10/java-scripting-for-remedium-platform.html' title='Java scripting for the Remedium platform'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3536547215760288363</id><published>2011-10-10T15:00:00.001Z</published><updated>2011-10-10T15:04:11.008Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Making a long name shorter within a range</title><content type='html'>This is just a small JAVA snippet to reduce a given long name onto a format that fits a max size.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Enjoy.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt; &lt;span &gt;    &lt;/span&gt;&lt;span &gt;/**&lt;/span&gt;&lt;br /&gt;&lt;span &gt;     &lt;/span&gt;&lt;span &gt;* Provides a text that will match a desired dimension, reducing&lt;/span&gt;&lt;br /&gt;&lt;span &gt;     &lt;/span&gt;&lt;span &gt;* it if necessary.&lt;/span&gt;&lt;br /&gt;&lt;span &gt;     &lt;/span&gt;&lt;span &gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span &gt;    &lt;/span&gt;&lt;span &gt;&lt;b&gt;public static &lt;/b&gt;&lt;/span&gt;&lt;span &gt;String shortText&lt;/span&gt;&lt;span &gt;(&lt;/span&gt;&lt;span &gt;String text, &lt;/span&gt;&lt;span &gt;&lt;b&gt;int &lt;/b&gt;&lt;/span&gt;&lt;span &gt;maxLength&lt;/span&gt;&lt;span &gt;){&lt;/span&gt;&lt;br /&gt;&lt;span &gt;        &lt;/span&gt;&lt;span &gt;String result = text;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span &gt;        &lt;/span&gt;&lt;span &gt;// if this text portion is bigger than allowed, reduce&lt;/span&gt;&lt;br /&gt;&lt;span &gt;        &lt;/span&gt;&lt;span &gt;&lt;b&gt;if&lt;/b&gt;&lt;/span&gt;&lt;span &gt;(&lt;/span&gt;&lt;span &gt;text.length&lt;/span&gt;&lt;span &gt;() &lt;/span&gt;&lt;span &gt;&amp;gt; maxLength&lt;/span&gt;&lt;span &gt;){&lt;/span&gt;&lt;br /&gt;&lt;span &gt;            &lt;/span&gt;&lt;span &gt;&lt;b&gt;int &lt;/b&gt;&lt;/span&gt;&lt;span &gt;half = maxLength / &lt;/span&gt;&lt;span &gt;2&lt;/span&gt;&lt;span &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;            &lt;/span&gt;&lt;span &gt;&lt;b&gt;int &lt;/b&gt;&lt;/span&gt;&lt;span &gt;length = text.length&lt;/span&gt;&lt;span &gt;()&lt;/span&gt;&lt;span &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;            &lt;/span&gt;&lt;span &gt;result = text.substring&lt;/span&gt;&lt;span &gt;(&lt;/span&gt;&lt;span &gt;0&lt;/span&gt;&lt;span &gt;, half&lt;/span&gt;&lt;span &gt;) &lt;/span&gt;&lt;span &gt;+ &lt;/span&gt;&lt;span &gt;".."&lt;/span&gt;&lt;br /&gt;&lt;span &gt;                    &lt;/span&gt;&lt;span &gt;+ text.substring&lt;/span&gt;&lt;span &gt;(&lt;/span&gt;&lt;span &gt;length - half, length&lt;/span&gt;&lt;span &gt;)&lt;/span&gt;&lt;span &gt;;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;        &lt;/span&gt;&lt;span &gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span &gt;        &lt;/span&gt;&lt;span &gt;&lt;b&gt;return &lt;/b&gt;&lt;/span&gt;&lt;span &gt;result;&lt;/span&gt;&lt;br /&gt;&lt;span &gt;    &lt;/span&gt;&lt;span &gt;}&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;code&gt;&lt;span &gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-3536547215760288363?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3536547215760288363/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/10/making-long-name-shorter-within-range.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3536547215760288363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3536547215760288363'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/10/making-long-name-shorter-within-range.html' title='Making a long name shorter within a range'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-888756437243564423</id><published>2011-08-15T02:20:00.002Z</published><updated>2011-08-15T02:31:34.716Z</updated><title type='text'>Foi bom enquanto durou</title><content type='html'>Ainda me lembro quase como se fosse ontem quando te vi pela primeira vez. Lembro-me das primeiras viagens que fizémos juntos e de todas as aventuras que nos preencheram durante 10 anos. Foi bom, foi muito bom. Tinhamos o mundo pela frente e eu adorava ver-te a sorrir. Nada mais me alegrava tanto como a cara sorridente que fazias quando te levava o pequeno-almoço à cama e me fazias companhia antes de começar mais um dia. Foram bons tempos, muitos bons tempos. Nada mais me marcou tanto como ver o nosso filho pequeno a nascer, não foi um dia fácil mas sorrias, sorrias tanto que eu sorria mais só por te ver sorrir. Tenho saudades desses tempos, dos bons e velhos tempos. Não sei ao certo o que aconteceu.. foi tudo tão rápido: ficámos crescidos, adultos, tristes e cansados. Foi rápido, talvez demasiado rápido mas não arrependo do que fizémos em tanto com tão pouco. Ficámos longe, deixei de escrever, ligar ou falar. Fiquei estranho, à frente do computador, longe de tudo à volta. Mudei muito. Não faço  desporto nem nada do que fazia. Deixámos de estar juntos e tenho o que sempre queria mas perdi o que mais me valia: uma amiga, esposa e companheira de viagens. Muito mudámos. Às vezes penso como seria bom voltar atrás, mexer nos computadores só para ver filmes contigo e mais nada.. seriamos felizes? muito felizes se eu não tivesse mudado? Talvez sim.. mas talvez não.. apenas tenho a certeza que estariamos juntos mais tempo e teriamos viajado muito. Muito mais, muito mais tempo, muito mais tempo juntos. Fiquei triste por estarmos agora separados, triste por não ver o rapaz crescer, triste por não nos podermos entender. Pode parecer um cliché, mas eu admito que a culpa seja só minha. Foste paciente, perdoaste parvoeiras por mais tempo que qualquer mulher teria. Por esse motivo mesmo, só um tolo como eu te perdia. Não me portei bem, fiz muita coisa mal. Deixei de te cantar, deixei de te olhar, e deixei de te rimar. Agora para a frente dizem que é um novo dia. Agora lá olho eu para o futuro, mas também olho para os nossos dias: juntos com carinho. Agora já somos crescidos, ou será que voltámos a ser novos? Seja lá o que for, que seja aquilo que deixámos para trás e que possas agora recuperar, que seja aquele brilho nos teus olhos que me faz sorrir tanto, que sejam aquelas noites na cama a olhar para a lua, que sejam aquelas viagens malucas onde tudo corria mal mas acabava sempre bem. Meu amor, tenho tantas saudades desses dias que nem sei o que te ei dizer. Pode parecer que me esqueço, mas levo esses dias comigo, bem guardados para onde quer que vou. Vou continuar andando, mas levo-te comigo e ao nosso rapaz, todos juntos, todos felizes, como um dia que já passou.&lt;br /&gt;&lt;br /&gt;Foi bom enquanto durou, foi tão bom, foi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-888756437243564423?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/888756437243564423/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/08/foi-bom-enquanto-durou.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/888756437243564423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/888756437243564423'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/08/foi-bom-enquanto-durou.html' title='Foi bom enquanto durou'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8632559022637176585</id><published>2011-08-11T09:55:00.003Z</published><updated>2011-08-11T10:06:10.008Z</updated><title type='text'>sqliteforum.com was sold</title><content type='html'>This week I've placed &lt;a href="http://sqliteforum.com/"&gt;http://sqliteforum.com&lt;/a&gt; for sale and this operation was quickly concluded at the asked price.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My congratulations to the new forum owner, I really hope it meets your expectations and that it grows over the next years.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As for reasons to let go of the site, I'm reducing the number of forum sites where I am not directly involved to focus on the ones I really feel motivated to participate actively. The revenue gathered from this sale allowed to acquire an IP.Content addon for the &lt;a href="http://reboot.pro/"&gt;http://reboot.pro&lt;/a&gt; community and still left enough money for other components that we might see of interest to add.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, this week we also started upgrading the forum software on reboot and solve many of the issues that had been reported over the past 8 months. We are now using the default theme as skin and just adding slight changes on the header to keep it thinner in height.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Mikorist&lt;/b&gt; has been a real help to get all this done, wouldn't really be possible without him to carry forward these changes and improve our work conditions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many changes, so far for the better as the new version is really neat.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-8632559022637176585?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8632559022637176585/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/08/sqliteforumcom-was-sold.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8632559022637176585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8632559022637176585'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/08/sqliteforumcom-was-sold.html' title='sqliteforum.com was sold'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3161080964300896055</id><published>2011-08-05T07:57:00.006Z</published><updated>2011-08-05T09:14:42.560Z</updated><title type='text'>All Quiet on the Western Front</title><content type='html'>I should be happy.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This month I saw WinBuilder being featured again at one of the most popular PC magazines in Germany. To my surprise, I noticed that at the same time a few other PC magazines were promoting tools such as FiraDisk and Grub4DOS that are also hosted at &lt;a href="http://reboot.pro/"&gt;http://reboot.pro&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As we speak, all the roads in the boot field are pointing at reboot.pro in some manner or another and we don't like to disappoint our community.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://3.bp.blogspot.com/-LYtDS9LszYw/TjukayAW1lI/AAAAAAAABPE/uvrfPlrm5Xg/s400/ct1711_gross-166abe56d53a4f2a.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 283px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5637280138591131218" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is one of those moments in life when you feel some sense of achievement for being part in something that steps outside of the virtual world and produces something of real value to so many people.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is a sense of achievement that arrives 6 years after I first started my online activities, and yet it feels terribly bitter today.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I miss a lot of things that I had at my reach 6 years ago.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Professional life got better after fights and challenges that would seem lost at the beginning and are now at reach to be conquered. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;New software is being developed on the pipelines with promises of unprecedented results and expectations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Working groups are flourishing,  assembled with friends of trust that assure quality and continuation of the research tradition that we like to follow.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So many things that I should really feel proud about seeing right now.. yet, I feel so tired and not really victorious. I miss my family, I miss a stable life, I miss vacations and not working so hard during the weekends.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I understand that no person can have all the things they want. The western front of boot land is ours at last, but my personal life got lost in the process and I'm not happy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All is quiet on the western front but this is not good enough, let's move.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-3161080964300896055?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3161080964300896055/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/08/all-quiet-on-western-front.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3161080964300896055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3161080964300896055'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/08/all-quiet-on-western-front.html' title='All Quiet on the Western Front'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-LYtDS9LszYw/TjukayAW1lI/AAAAAAAABPE/uvrfPlrm5Xg/s72-c/ct1711_gross-166abe56d53a4f2a.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3083462423962358953</id><published>2011-06-26T15:50:00.008Z</published><updated>2011-06-27T16:31:31.604Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='remedium'/><title type='text'>Remedium was launched</title><content type='html'>The first beta version of Remedium was launched this week at &lt;a href="http://reboot.pro/14801/"&gt;http://reboot.pro/14801/&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://3.bp.blogspot.com/-yzqlt2ChHv8/TgdWKmGHQAI/AAAAAAAABNI/FFIy5Lm8YDo/s400/screen_capture_110625-JUN.png" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 252px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5622557399820222466" /&gt;&lt;div&gt;It has been a very long year moving this platform from my sketches onto a a real implementation as seen on the screenshot but I am happy with the current result.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Remedium opens the door to a new portofolio of projects based on the Java platform/language.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is also an opportunity to move from an aging concept of applications restricted to work from a desktop onto applications that take advantage of web browsers and remote management.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, when accounting the learning curve to program in Java proficiently, the effort to create a new platform from scratch and still account with the research work necessary to implement a new security concept, I would say that our development time required to make this possible since the past year was indeed put to good use.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wouldn't have made it this far without the help of Professor Benoit Morel from CMU and my close friend &lt;a href="http://random-digit.blogspot.com/"&gt;José Feiteirinha&lt;/a&gt;. The professor helped me keep my feet to ground about the goals to reach and José brought really cool ideas to make this platform a reality.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unless you had been involved since the start, it is difficult to have an idea of the effort required to implement this work. It required a bit too many rewrites until it resulted in a simple solution. &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/-SM-X7cau92Y/TgdY5bmjfmI/AAAAAAAABNQ/D8VoxiL7FOQ/s400/remedium_poster_03.png" style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 348px; height: 400px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5622560403480608354" /&gt;&lt;div&gt;The first phase has been completed. The remedium client is indexing all files inside a given machine and placing the gathered data inside a set of databases.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Indexing files is not an amazing feature, creating a superb architecture was the real challenge. It provides enterprise functionality such as message queues, web server and component based modules that will allow us and other developers to expand remedium with more features.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The next two phases are equally challenging if not even more. We will start to work in a networked environment and aggregating data from multiple sources along with also feeding multiple points.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end, we should have a system capable of allowing users to exchange data and provide feedback on their own, using a perfectly decentralized structure.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A lot of work ahead, but it has been fun so far. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-3083462423962358953?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3083462423962358953/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/06/remedium-was-launched.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3083462423962358953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3083462423962358953'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/06/remedium-was-launched.html' title='Remedium was launched'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-yzqlt2ChHv8/TgdWKmGHQAI/AAAAAAAABNI/FFIy5Lm8YDo/s72-c/screen_capture_110625-JUN.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1075394030925437854</id><published>2011-06-03T15:59:00.007Z</published><updated>2011-06-04T15:40:21.889Z</updated><title type='text'>Little pieces.. Little pieces..</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/-H0LzV-otruI/TekGV6DTKBI/AAAAAAAABM4/i8zmGriP-mM/s1600/synchronization.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Today I am very happy. Solved a challenge that had been a concern for almost a year.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I needed to find a way of keeping two databases (more specifically two tables) in different machines synchronized with each other. It was simple enough to solve this task when designing the system. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://3.bp.blogspot.com/-vrTLaZR-LXQ/TekGg9vIVpI/AAAAAAAABNA/BH1Zz0ahBjY/s320/synchronization.png" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 266px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5614025573891856018" /&gt;&lt;div&gt;As depicted on the image, the proposed concept was clean to understand and perfectly logical on paper. But in implementation this solution was not clean at all.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Maintaining two databases synchronized was not difficult, the difficulty appeared when the pairs of databases to be maintained starting multiplying and the conscience worries of knowing that even more databases would appear in the future.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When designing system architectures, one can imagine in advance several problems that will be encountered. But when building a brand new system, there exists scarce preparation to get things up and running as intended from a blue print. The proposed solution was too complicated for getting data exchanged. Common sense dictates that the more complex a system becomes, the more prone it becomes to errors and difficult to improve in the future. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I wasn’t happy. The implementation looked “ugly” from all possible perspectives, and to my despair it wouldn’t even scale to the exchange of gigabytes between remote machines as necessary.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After five months of frustrating effort to make the designed concept work in a simple manner, it was time to throw the towel and re-think the attitude to solve the problem.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Gathered my notes about what had been learned from past months, locked myself in the house for two days and only stopped when it was finally working: the new solution is simple and functional. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Too many data containers need synchronism, the server part had to manage each one manually and the whole thing grown into a huge puddle of mess. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The new solution is imaginative and breaks away from a rigorous concept of client-server onto a mixed model of peer to peer data exchange. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is so simple that required only two methods inside a single class to work as intended and scale to whatever size of data in need of being exchanged up to the tens of gigabytes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In resume, we start with the traditional client-server approach to discover who is authorized to exchange data, after the initial handshake protocol we ask each database container to “talk” with their counterpart database container on the server side.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This method drastically reduced the administration burden. Each client container will update with new information their server container when it becomes available and vice-versa. We maintain a supervising entity of transactions to provide security while allowing each container to ensure that they correctly pass data onto the other side.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, I no longer need to care about individual instances of containers and if more instances are added to the bulk, they will follow the same rules and patterns as the previous ones.&lt;/div&gt;&lt;div&gt;Breaking the data exchange problem onto little pieces has helped to break the complexity of this problem into a manageable solution.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Simple solutions are nowhere simple to be found. They take a lot of effort, time and concentration to be found. They truly bear a heavy price to achieve. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My advice is that you should make your best to run that extra mile and find them. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the end, they are worth the effort.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;(screenshot image credits to &lt;a href="http://goo.gl/1a40b"&gt;http://goo.gl/1a40b&lt;/a&gt;)&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-1075394030925437854?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1075394030925437854/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/06/little-pieces-little-pieces.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1075394030925437854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1075394030925437854'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/06/little-pieces-little-pieces.html' title='Little pieces.. Little pieces..'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-vrTLaZR-LXQ/TekGg9vIVpI/AAAAAAAABNA/BH1Zz0ahBjY/s72-c/synchronization.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8962517743845092263</id><published>2011-05-16T14:27:00.012Z</published><updated>2011-05-16T22:19:58.083Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>Commencement@CMU</title><content type='html'>It has been a long journey.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Started officially in 2009, but was dreamed, prepared and awaited many years before. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/-qoGUs3mSSjw/TdE2hwZvzMI/AAAAAAAABMY/6-q3G5s8MJk/s320/IMG_6706.JPG" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5607322964609453250" /&gt;&lt;div&gt;Now we are in 2011. I feel that an important chapter was closed, and that many other interesting chapters in this book called "life" are still waiting to be written.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was a long journey indeed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More than a degree, it was the opportunity of being here that made me see the world from a very different perspective.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was fun. Passing through good times, bad times and unique times. But above all, these were memorable times that made me grow as a person.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://3.bp.blogspot.com/-aiTh0AYhqto/TdE0m54I0II/AAAAAAAABMQ/3BjnCKI9yaY/s320/IMG_6695.JPG" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5607320854028931202" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A lot of people helped me reach this far and I am forever grateful to all of them. My only expectation is that I can one day give back to others all the support that I received.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Thank you for everything, the MSE changed my life.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-8962517743845092263?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8962517743845092263/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/05/commencementcmu.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8962517743845092263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8962517743845092263'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/05/commencementcmu.html' title='Commencement@CMU'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-qoGUs3mSSjw/TdE2hwZvzMI/AAAAAAAABMY/6-q3G5s8MJk/s72-c/IMG_6706.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8744344402812200290</id><published>2011-05-02T08:23:00.006Z</published><updated>2011-05-02T09:44:03.073Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='phpbb'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Security analysis of java based web forum products</title><content type='html'>&lt;div&gt;A month ago I received a request from the University of Coimbra to look into the current options of Java based web forum software to provide my opinion on each of them.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To be honest, I am not impressed nor convinced that any of them are suited to power a popular web site that gathers a lot of (malicious) attention.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Regardless of personal preferences, I am sharing my opinions and impressions after evaluating each product that might help other people in the situation of choosing a Java based forum. You find this report at &lt;a href="http://goo.gl/TfvKn"&gt;http://goo.gl/TfvKn&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My ranking for these products is the following:&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: transparent; "&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; font-size: 11pt; background-color: transparent;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;1 - JForum&lt;br /&gt;2 - mvnForum&lt;br /&gt;3 - JavaBB&lt;br /&gt;4 - Yazd&lt;br /&gt;5 - JSforum&lt;br /&gt;6 - JGossip&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In the forum arena, I should really note that PHP based forum software from groups such as vBulletin, IPB and myBB will really save you a lot of headaches in the future. Plus, it is possible to run PHP inside Java using a framework such as &lt;a href="http://www.caucho.com/resin-3.0/quercus/"&gt;Quercus PHP&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-8744344402812200290?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8744344402812200290/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/05/java-web-fora-security-analysis.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8744344402812200290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8744344402812200290'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/05/java-web-fora-security-analysis.html' title='Security analysis of java based web forum products'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-543249257791638645</id><published>2011-04-26T15:15:00.002Z</published><updated>2011-04-26T15:29:54.889Z</updated><title type='text'>The simple beauty of NoJax</title><content type='html'>Recently I've needed to figure a simple way of updating a web page at each 4 seconds.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The modern web 2.0 option is using AJAX &lt;span&gt;&lt;span&gt;(Asynchronous JavaScript and XML) and this option sounded fine and dandy. Got myself exploring this path, finding some nice tutorials and simple guides that took away the black magic underneath the Javascript to reach the intended results.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;However, I was having a lot of troubles to get it working as intended. On some browsers it would work, on some others it wouldn't. On some browsers I would know how to fix the issues while in some others remained a complete mystery.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This was no longer the simple solution I was hoping to apply and found a nice alternative: Meta tags.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The concept is simple, just add a meta tag requesting for the page to be reloaded within some seconds in the future. Simple, practical and works across all browsers.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Some obvious side effects: it will reload the whole page instead of a silent AJAX-style update. Other than that, it does get the job done in a stable manner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Credits go to the about.com page that has a nice tutorial: &lt;a href="http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm"&gt;http://webdesign.about.com/od/metataglibraries/a/aa080300a.htm&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is nice to enjoy the simple beauty of NoJax.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-543249257791638645?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/543249257791638645/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/simple-beauty-of-nojax.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/543249257791638645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/543249257791638645'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/simple-beauty-of-nojax.html' title='The simple beauty of NoJax'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-690902456466545274</id><published>2011-04-22T10:48:00.015Z</published><updated>2011-04-22T11:20:12.962Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='HSQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>The importance of database isolation</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;This week I've continued to progress on the new project.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One of the worries that has been roaming my head was the isolation of data between different components. On the current concept, components are isolated from each other to some extent but they still share some common resources like the database.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below is a simple diagram that depicts the difference between shared and isolated approaches to database storage &lt;i&gt;(&lt;a href="http://www.ibm.com/developerworks/data/library/techarticle/dm-0712taylor/index.html"&gt;credits to Mary Taylor @ IBM&lt;/a&gt;)&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/-AaqkTSymGWE/TbFhgLcBxZI/AAAAAAAABLg/3vovAs_Q6u4/s400/DB2Imag1IsolationLevels.gif" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 186px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5598363017252291986" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was a relevant point to ensure that this resource would also stop being shared for the following reasons:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;One faulty component could wreck the database, causing other components to also fail&lt;/li&gt;&lt;li&gt;10 components can share a single database, could 100 or even 1000 use the same model?&lt;/li&gt;&lt;li&gt;No duplicate table names on the database could exist, this issue is aggravated when sharing this resource with other components&lt;/li&gt;&lt;li&gt;One single point of failure, if the database goes offline then all others will also fail to recover themselves&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And some advantages also surfaced:&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Each component can define custom login/passwords to access their database&lt;/li&gt;&lt;li&gt;Full control over the data that is stored, no other components change the data by accident&lt;/li&gt;&lt;li&gt;Provides choice between running their HSQL database based on a disk file for optimum storage or stored in volatile RAM for optimum speed&lt;/li&gt;&lt;li&gt;Each component can now individually store up to 16Gb of data using HSQL&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I suspected that transitioning from a shared database model onto an isolated model would be somewhat troublesome, but the implementation was (fortunately) completed in a half a day and the effort was surely worthwhile. The end result passed all test cases and works exactly as intended. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;b&gt;Lesson learned:&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;When designing/implementing an architecture, do take into consideration the importance of keeping these resources isolated from each component as early as possible. In the long run you are improving the robustness of the system that is being designed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-690902456466545274?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/690902456466545274/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/importance-of-data-isolation.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/690902456466545274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/690902456466545274'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/importance-of-data-isolation.html' title='The importance of database isolation'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-AaqkTSymGWE/TbFhgLcBxZI/AAAAAAAABLg/3vovAs_Q6u4/s72-c/DB2Imag1IsolationLevels.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1289738932378964599</id><published>2011-04-20T17:10:00.003Z</published><updated>2011-04-20T17:17:17.638Z</updated><title type='text'>Editing large text files (above 1Gb of size)</title><content type='html'>Recently I've began working with considerably sized text files that cannot be edited with the regular text editors such as plain notepad or notepad plus.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To keep on working, I found Cream (&lt;a href="http://cream.sourceforge.net"&gt;http://cream.sourceforge.net&lt;/a&gt;). This editor is free and handles fairly well files of larger dimension. It is supported across multiple Operative Systems, I could use VIM but I really prefer to use big round buttons and menus to get my work done.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Albeit the cream editor allows you to change big files, it is not a magic bullet and you should be prepared to wait some time until your changes are saved back to the file on disk.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Having said this, I think the tool is really worth to try out.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-1289738932378964599?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1289738932378964599/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/editing-large-text-files-above-1gb-of.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1289738932378964599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1289738932378964599'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/editing-large-text-files-above-1gb-of.html' title='Editing large text files (above 1Gb of size)'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4209827305110789533</id><published>2011-04-10T19:12:00.011Z</published><updated>2011-04-12T08:10:07.249Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='remedium'/><title type='text'>Old school programming</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a href="http://3.bp.blogspot.com/-gjKuWKV_xLc/TaIFl_ILD1I/AAAAAAAABLE/KyVY77_EbtQ/s1600/web_interface.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;/a&gt;This weekend was intense.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;While working on my current project, I've slowly reached the conclusion across the past week that many things were wrong on the adopted architecture and that a simpler solution could be adopted.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Reminding myself of the words from a wise software engineer about efficiency of the good enough I could have kept on moving, but it would pain my soul knowing that things were not optimal. If there was a time to make changes, the time was now.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Couldn't afford more schedule slips as seen for the month of the March. So I've decided to plunge myself into a coding marathon to rearrange the code and do things right.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Started of at Friday after work around 17:00 and stopped around 04:00 Saturday morning to grab a snack and some sleep. Saturday and Sunday followed similar hour addiction for code cranking the intended result. The outcome was&lt;b&gt; fabulous!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not only the new framework is simpler in terms of architecture, it also &lt;i&gt;looks&lt;/i&gt; great. The web user interface provides a neat appearance and makes life a lot easier than creating a Swing based interface for each component of the system.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Many other nice-to-have features were also added this way. People can use browsers or third-party developers can create wrappers that make use of the provided web services.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I know that anything coded during a hackathon weekend will haunt me with defects across the next times. That is a risk. But it is still better than living with an architecture that that would only add layers of unnecessary complexity and my own (human) resources are too limited to cope with them. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As result, there is absolutely no need to adopt a Google web toolkit, hibernate, SEAM, JBoss or ActiveMQ COTS for the moment. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The current result can rightfully be called old school programming (compared to current trends of course). And I say this perfectly aware of all advantages and disadvantages that come from this design decision. But nevertheless all that, there is elegance in simplicity and this is the route that I prefer to follow whenever possible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And speaking of small, the entire framework when including the database (HSQL), message queue, process manager, web interface and remaining components is still using some whooping 3Mb of disk space.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below is demonstration screenshot of the current status. The page demonstrates two applications. The first one is a simple file browser and the second demonstrates a simple page with text. Each application can host child applications and these are automatically added on the page tabs.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;img src="http://3.bp.blogspot.com/-gjKuWKV_xLc/TaIFl_ILD1I/AAAAAAAABLE/KyVY77_EbtQ/s400/web_interface.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5594039837306589010" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 295px; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); -webkit-text-decorations-in-effect: underline; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Tough weekend but happy results.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-4209827305110789533?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4209827305110789533/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/old-school-programming.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4209827305110789533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4209827305110789533'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/old-school-programming.html' title='Old school programming'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-gjKuWKV_xLc/TaIFl_ILD1I/AAAAAAAABLE/KyVY77_EbtQ/s72-c/web_interface.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2345631624516176310</id><published>2011-04-05T11:46:00.005Z</published><updated>2011-04-05T12:11:54.777Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='FindBugs'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Last night a findbugs saved my life</title><content type='html'>&lt;a href="http://findbugs.sourceforge.net/buggy-sm.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 120px; height: 92px;" src="http://findbugs.sourceforge.net/buggy-sm.png" border="0" alt="" /&gt;&lt;/a&gt;Do you know what FindBugs is?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's a neat tool for Java that helps coders find part of your software that are plain redundant or might even run into "bugs" in the future (I prefer to call them "defects" rather than plain "bugs").&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had already used FindBugs in the Eclipse IDE last year, but only recently started using this tool for the NetBeans IDE and now I really appreciate its value.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To install this tool as an integrated plugin of Netbeans is fairly simple and covered widely across the Internet (&lt;a href="http://javahowto.blogspot.com/2008/03/install-findbugs-plugin-in-netbeans-6.html"&gt;here's an example&lt;/a&gt;).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I started applying FindBugs on my current project, I noticed that my code was syntactically correct and ran as intended on the test cases, but FindBugs flagged some relevant concerns.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, it would flag a warning when new objects were created in a redundant manner or even when a given result might not be handled properly (null handling).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But what I found to be the most useful feature of them all, is the help for coding systems where multiple concurrent threads  share information between them. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I mean, a developer already has some notion of practices necessary to prevent thread starvation and other concurrency errors but there exists a good amount of human effort and possibility of human flaw that frustrate your coding progress.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is where FindBugs came to the rescue. While coding it was consistently able of reporting to me which methods were required to be synchronized in order to prevent thread locking and inherent locking of the outputs expected by other threads.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would have been able of solving the synchronization issues on my own but having this tool available to help was a real time saver.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're still resistant to the idea of using FindBugs after reading all this, do try it by yourself at least once and then let me know what you think.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Take care!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-2345631624516176310?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2345631624516176310/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/last-night-findbugs-saved-my-life.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2345631624516176310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2345631624516176310'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/04/last-night-findbugs-saved-my-life.html' title='Last night a findbugs saved my life'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-353530829269073157</id><published>2011-03-21T08:54:00.013-01:00</published><updated>2011-03-24T17:43:08.860-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Simple and fast recursive find files for Java</title><content type='html'>This week I needed a simple routine to find files inside a given folder and respective sub folders.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There are plenty of solutions around the web, but these solutions typically use a second method or even more, instead of a single recursive method.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below is the code that I've written, it is not perfect nor fully tested but it is simple and fast on my Toshiba R630 Win7 laptop (indexed 152450 files in 30Gb of data under 12 seconds), so I'm happy and decided to share this code snippet with the rest of the world.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It will output an array list composed of File objects. You only need to define &lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;where&lt;/span&gt; (the starting folder) and &lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;maxDeep&lt;/span&gt; (the level of subfolders that you want to crawl).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you have suggestions for future improvement, please do mention them and I'll update the snippet along with placing your name on the credits. I liked this solution but I'm by no means a coding guru. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have fun!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You find the snippet at this doc: &lt;a href="http://goo.gl/pKq0D"&gt;http://goo.gl/pKq0D&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://goo.gl/pKq0D"&gt;&lt;/a&gt;--- &lt;b&gt;update 1&lt;/b&gt; (23th March 2011), the code was made shorter and simpler. Please update.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;--- Benchmarks&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Testing on drive D: with 30Gb of data took an average 12 seconds for 152 450 files&lt;/div&gt;&lt;div&gt;Testing on drive C: with 92Gb of data and 476 789 files started with 829 seconds on the initial scan and on posterior scans dropped to an average of 140 seconds.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Machine of these testings was a Toshiba R630, equipped with 4Gb of RAM, an i7 core and Windows 7 x64 bits.&lt;/div&gt;&lt;div&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/57700989516441543-353530829269073157?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/353530829269073157/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/simple-recursive-find-files-in-java.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/353530829269073157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/353530829269073157'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/simple-recursive-find-files-in-java.html' title='Simple and fast recursive find files for Java'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2743194117752645811</id><published>2011-03-17T10:05:00.004-01:00</published><updated>2011-03-17T11:09:43.561-01:00</updated><title type='text'>How to change the default icon on a Java Frame</title><content type='html'>&lt;div&gt;When you create a Java frame, it usually comes with the default Java icon on the window title.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is not a bad icon, but you might want to customize that portion after a while.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All you need to do is place this code snippet on the initialization part of your frame:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: monospace"&gt;&lt;br /&gt;&lt;span style="color: #7F0055; font-weight: bold"&gt;this&lt;/span&gt;.setIconImage(Toolkit.getDefaultToolkit().getImage("./media/network.png"));&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt; &lt;div&gt;I've simply placed a .png image on a folder called "media" on the root of my project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Have fun.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2743194117752645811?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2743194117752645811/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/how-to-change-default-icon-on-java.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2743194117752645811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2743194117752645811'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/how-to-change-default-icon-on-java.html' title='How to change the default icon on a Java Frame'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4167993277868852547</id><published>2011-03-16T13:36:00.006-01:00</published><updated>2011-03-16T20:06:55.052-01:00</updated><title type='text'>A day in my life</title><content type='html'>Well, are you curious about knowing how a day on my life is?&lt;br /&gt;&lt;br /&gt;The answer is quite simple:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style=" color: Blue;"&gt;function&lt;/span&gt; starNormalDay&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=" color: Blue;"&gt;begin&lt;/span&gt;&lt;br /&gt;  &lt;span style=" color: Green;"&gt;// initiate procedure to move outside of bed&lt;/span&gt;&lt;br /&gt;While    normalDay&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt; &lt;span style=" color: Blue;"&gt;begin&lt;/span&gt;&lt;br /&gt;  wakeUp&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;  getToBathroom&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;  getBreakfast&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;  goToWork&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;  goHome&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;  sleep&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Maroon;"&gt;7&lt;/span&gt; hours&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;;&lt;br /&gt;&lt;span style=" color: Blue;"&gt;end&lt;/span&gt;&lt;br /&gt; &lt;br /&gt;&lt;span style=" color: Blue;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" &gt;/*&lt;br /&gt;* We wake up at each day, this is life&lt;br /&gt;*/ &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=" color: Blue;"&gt;function&lt;/span&gt; wakeUp&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=" color: Blue;"&gt;begin&lt;/span&gt;&lt;br /&gt;  &lt;span style=" color: Blue;"&gt;if&lt;/span&gt; isMorning&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;   &lt;span style=" color: Blue;"&gt;then&lt;/span&gt;&lt;br /&gt;      &lt;span style=" color: Blue;"&gt;if&lt;/span&gt; weekDay is &lt;span style=" color: Blue;"&gt;(&lt;/span&gt;saturday &lt;span style=" color: Blue;"&gt;or&lt;/span&gt; sunday&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;          &lt;span style=" color: Blue;"&gt;then&lt;/span&gt;&lt;br /&gt;              &lt;span style=" color: Blue;"&gt;while&lt;/span&gt; &lt;span style=" color: Blue;"&gt;(&lt;/span&gt;time&lt;span style=" color: Blue;"&gt;.&lt;/span&gt;now &amp;lt; &lt;span style=" color: Maroon;"&gt;10&lt;/span&gt;h00&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;                sleep&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Maroon;"&gt;10&lt;/span&gt; minutes&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;          &lt;span style=" color: Blue;"&gt;else&lt;/span&gt;&lt;br /&gt;              getOutOfBed&lt;span style=" color: Blue;"&gt;(&lt;/span&gt;&lt;span style=" color: Blue;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style=" color: Blue;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You see? Sometimes life is easy to explain. What do you think?&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/57700989516441543-4167993277868852547?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4167993277868852547/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/day-in-my-life.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4167993277868852547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4167993277868852547'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/day-in-my-life.html' title='A day in my life'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7831109981480378675</id><published>2011-03-09T13:48:00.004-01:00</published><updated>2011-03-09T14:32:15.205-01:00</updated><title type='text'>The end of March</title><content type='html'>The end of this month marks several deadlines that need to be meet.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;A new project will be presented, this follows a lot of new troubles and issues that need to be dealt until the deadline expires.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We are still running short on resources. Things are certainly not going as planned and development seems to progress far slower than desired. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nevertheless these nuisances, the progress made during the past two months is certainly something that leaves me proud to think about. We've managed to create a slim framework that combines essential components for any application to survive the upcoming decades.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We've created a Message Queue to pass messages between applications, a Process Manager to store informations about each applications, a dynamic database storage that can adopt any other technology in the future and a network component that extends the local message queue to  interact with remote message queues in other instances in a fully transparent and asynchronous manner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All of this is certainly not something to undergo with light head. A lot of effort, commitment, rewriting and brainstorming was needed until we were proud of the result.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And the result is nice. We've built a functional enterprise framework that is probably one of the smallest in the world. Using no more than a total of 2Mb and little above 10Mb of RAM while running at full speed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Unfortunately, the deadline is indeed tight. It takes time to write test cases, to write documentation, to fine tune our code to work as intended, but things still move on.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We've been thinking about the licensing for this new framework and that is one of my biggest headaches. I want this new tool to be free and follow the traditions of all my previous works. I would also like to try out the open source way of doing things.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But several issues concern my imagination:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- If an idea is innovative, how can one prevent large corporations from creating their own "better" versions. I say this because we don't have the muscle or desire to compete against big players but they'd have a galore of fun just looking at the code and throwing all our effort into oblivion&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Open source allows branches and more often than not some wild-coder will just pick the code, create a new branch and then advertise it as better instead of contributing to a longer standing project, effectively fragmenting and eroding any community built around the tool or killing any will of the original developers to fell motivated and follow progress&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;These are some of the issues that our time constraints urge to solve. Personally, I prefer to look on the bright side of things and adopt an "I don't care" approach. If these are the problems that we cannot find a proper answer, then I guess that it will be better to follow with the same licensing model used with success for Winbuilder.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Completely free but closed source. On the other hand, I would really like to try out the open source for a change. I am just not ready to open my hand after so much hard work over the past 14 months to see it "used" as a commercial product by someone of ill intentions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Time to think more about the licensing mode.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-7831109981480378675?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7831109981480378675/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/end-of-march.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7831109981480378675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7831109981480378675'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/03/end-of-march.html' title='The end of March'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6792437028483706257</id><published>2011-02-07T09:28:00.005-01:00</published><updated>2011-02-16T18:07:15.999-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DoD'/><title type='text'>DoDAF wisdom</title><content type='html'>The documentation for version 2.0 of DoDAF is a bit lengthy but contains some nice pearls of wisdom.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I personally like this quote:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;i&gt;The central core of DoDAF V2.0 is a data-centric approach where the creation of architectures to support decision-making is secondary to the collection, storage, and maintenance of data needed for efficient and effective decisions.&lt;/i&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;While some decades ago I'd reckon that the effort should emphasize in achieving better solutions to reach a given result, at our current state we should have learned by now that any new tool will soon grown outdated. So, wise decision to shift the focus in order to preserve the data and knowledge that is gathered in between for the future times.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Decision making tools are easy to find, what is not so easy to find are the data tidybits that help you make an informed decision.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-6792437028483706257?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6792437028483706257/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/02/dodaf-wisdom.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6792437028483706257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6792437028483706257'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/02/dodaf-wisdom.html' title='DoDAF wisdom'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-987338392199879063</id><published>2011-01-21T13:02:00.006-01:00</published><updated>2011-01-21T13:25:30.313-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>My first MQ</title><content type='html'>I've finally got around to build my own MQ (Message Queue) service.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Since early January that I've been trying and looking for MQ's already implemented by someone else but they all seemed unadjusted to what I had in mind.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, to keep things simple I've written a message queue server using a database running on HSQL that is also embedded inside the application.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was a bit of a marathon, since early design up to implementation it took less than one day and a half but I'm happy that it is available and working as intended.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The advantage of using a built-in message queue is the ease in maintaining several disperse services working with each other in asynchronous manner. For example, A wants B to receive an update. So, A leaves the message on the queue that B will receive whenever becomes possible.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is handy for cases where a massive amount of information needs to be handled by B from multiple sources, becoming a simple tool that smooths the peak usage from daytime activities that would otherwise require more hardware to cope with the resource demand.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, the next step is implementing a process manager using the same technique. The overall idea is to implement a publisher-subcriber-alike feature at the running processes. This way, process A is running while processes B, C, D (..) can check the ongoing status of process A since he only needs to update his process status on the process manager.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This way we provide a real abstraction layer between the presentation and business logic of our system, allowing to expand a given application to other platforms and interfaces, let them be web-based, GUI based on even plain command line.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;----&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Still, I would have preferred to use a COTS or open source project that could save my time and effort to implement these features. There's only so much that one or two developers can do on their own. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I believe that the limitation of working in a small team can also bring advantages, for example, we can't afford to support the bulk associated with typical enterprise-level frameworks and we are constantly reminded that any given implementation needs to be simple or we'll risk not reaching our goals.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not using enterprise-level frameworks, doesn't necessarily translate to "it won't scale". The idea is to start little and add abstraction at critical locations from the start, so that we can replace components by others with more power (and resource demands) as we progress across the years. So, start small, keep growing as needed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After all this is done, the final step is moving a bit higher in the ladder and allow connectivity between several clients on a given network using the same application. Let's move forward.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-987338392199879063?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/987338392199879063/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/01/my-first-mq.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/987338392199879063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/987338392199879063'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/01/my-first-mq.html' title='My first MQ'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7388093826064090947</id><published>2011-01-20T21:15:00.009-01:00</published><updated>2011-01-20T21:26:01.011-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>4th semester MSE, the End Of Semester Presentation</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eCmZQ6ULvRo/TTi090q1NsI/AAAAAAAABGQ/nm9VaXnONDw/s1600/101210-DEC_EOSP_Presentation.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 282px; height: 208px;" src="http://3.bp.blogspot.com/_eCmZQ6ULvRo/TTi090q1NsI/AAAAAAAABGQ/nm9VaXnONDw/s400/101210-DEC_EOSP_Presentation.png" alt="" id="BLOGGER_PHOTO_ID_5564396313819559618" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is the Fiber team video at the final EOSP session that was recorded during last December.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The video showcases our &lt;a href="http://mse.dei.uc.pt/"&gt;MSE&lt;/a&gt; project that was developed during the program, along with some reflections and decisions made along the way.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can view this presentation online at &lt;a href="http://goo.gl/c2ImF"&gt;http://goo.gl/c2ImF&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The video quality is not top notch, but considering how difficult it was to get all sort of different equipment working together, I already feel happy to see we managed to get the session recorded.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope you enjoy the presentation.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-7388093826064090947?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7388093826064090947/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/01/4th-semester-mse-end-of-semester.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7388093826064090947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7388093826064090947'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/01/4th-semester-mse-end-of-semester.html' title='4th semester MSE, the End Of Semester Presentation'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eCmZQ6ULvRo/TTi090q1NsI/AAAAAAAABGQ/nm9VaXnONDw/s72-c/101210-DEC_EOSP_Presentation.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6220844043830992928</id><published>2011-01-19T16:48:00.004-01:00</published><updated>2011-01-19T16:57:47.050-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Creating test cases</title><content type='html'>Recently I had to brush up my memory of how test cases for Java are created.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;By default, using JUnit is a simple and straightforward way of creating a test case that either validates your code or assures that things are working as you need.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To get started, I recommend looking at the following (quick) tutorial: &lt;a href="http://www.cavdar.net/2008/07/21/junit-4-in-60-seconds/"&gt;http://www.cavdar.net/2008/07/21/junit-4-in-60-seconds/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's from 2008 but nicely explained and still up to date.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-6220844043830992928?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6220844043830992928/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2011/01/creating-test-cases.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6220844043830992928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6220844043830992928'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2011/01/creating-test-cases.html' title='Creating test cases'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1914262299595592627</id><published>2010-12-27T21:35:00.005-01:00</published><updated>2010-12-27T22:01:44.339-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WINE'/><category scheme='http://www.blogger.com/atom/ns#' term='WIM'/><category scheme='http://www.blogger.com/atom/ns#' term='C programming language'/><title type='text'>Inaccuracy on LZX documentation</title><content type='html'>A few more days of debugging passed.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I really appreciate to have documentation available from Microsoft so that I can give somewhat correct names to the binary structures. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But progress moves slowly as the available pages only provide twitter-style sentences to explain how each block tie together and even these are sometimes misleading. Nevertheless, I can't complain much as progress is slow but not frozen.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right now I've reached to a point where an implementation of the Microsoft LZX-2 algorithm is required to compress data. Looking at alternative implementations made by others such as the WINE team, I found this funny comment:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;i&gt;/* LZX decruncher */&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt; &lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt; /* Microsoft's LZX document and their implementation of the&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * com.ms.util.cab Java package do not concur.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  *&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * In the LZX document, there is a table showing the correlation between&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * window size and the number of position slots. It states that the 1MB&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * window = 40 slots and the 2MB window = 42 slots. In the implementation,&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * 1MB = 42 slots, 2MB = 50 slots. The actual calculation is 'find the&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * first slot whose position base is equal to or more than the required&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * window size'. This would explain why other tables in the document refer&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * to 50 slots rather than 42.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  *&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * The constant NUM_PRIMARY_LENGTHS used in the decompression pseudocode&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * is not defined in the specification.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  *&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * The LZX document does not state the uncompressed block has an&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * uncompressed length field. Where does this length field come from, so&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * we can know how large the block is? The implementation has it as the 24&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * bits following after the 3 blocktype bits, before the alignment&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * padding.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  *&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * The LZX document states that aligned offset blocks have their aligned&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * offset huffman tree AFTER the main and length trees. The implementation&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * suggests that the aligned offset tree is BEFORE the main and length&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * trees.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  *&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * The LZX document decoding algorithm states that, in an aligned offset&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * block, if an extra_bits value is 1, 2 or 3, then that number of bits&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * should be read and the result added to the match offset. This is&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * correct for 1 and 2, but not 3, where just a huffman symbol (using the&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * aligned tree) should be read.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  *&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * Regarding the E8 preprocessing, the LZX document states 'No translation&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * may be performed on the last 6 bytes of the input block'. This is&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * correct.  However, the pseudocode provided checks for the *E8 leader*&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * up to the last 6 bytes. If the leader appears between -10 and -7 bytes&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * from the end, this would cause the next four bytes to be modified, at&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * least one of which would be in the last 6 bytes, which is not allowed&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * according to the spec.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  *&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * The specification states that the huffman trees must always contain at&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * least one element. However, many CAB files contain blocks where the&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * length tree is completely empty (because there are no matches), and&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  * this is expected to succeed.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;  */&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://source.winehq.org/source/dlls/itss/lzx.c"&gt;http://source.winehq.org/source/dlls/itss/lzx.c&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Funny because a decade has passed and still we see specifications for other formats to contain lapses, mistakes and misplacements on official docs from the MS corporation. Even the patent claim they made for the WIM specification contains inaccuracies.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Would be nice to see things change.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-1914262299595592627?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1914262299595592627/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/inaccuracy-on-lzx-documentation.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1914262299595592627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1914262299595592627'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/inaccuracy-on-lzx-documentation.html' title='Inaccuracy on LZX documentation'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4479334091189203897</id><published>2010-12-22T17:30:00.008-01:00</published><updated>2010-12-22T17:48:08.457-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WIM'/><title type='text'>Inaccuracy on WIM documentation</title><content type='html'>For those brave souls in the future, trying to interpret the WIM headers using the documentation provided by Microsoft: there is a typo on the declaration of data structure for RESHDR_BASE_DISK.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Where one reads:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;i&gt;typedef struct _RESHDR_BASE_DISK&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;{&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    ULONGLONG ullSize;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    BYTE  sizebytes[7];&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    LARGE_INTEGER liOffset;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It should actually be read as:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;i&gt;typedef struct _RESHDR_BASE_DISK&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;{&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    &lt;b&gt;BYTE bFlags;&lt;/b&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    BYTE  sizebytes[7];&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;    LARGE_INTEGER liOffset;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;}&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The only difference is replacing ullSize by bFlags. If you don't, the difference is that a BYTE on this case is only sized in 8 bits whereas ULONGLONG is sized in 64 bits.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If you're trying to read the header from a binary file then you'd be stuck with the wrong results.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I had actually noted this detail over a year ago. Now I was looking at this again and had to spent around two days doing the math and printing the hex dump to see why things were not looking right &lt;i&gt;(and get some grey hairs)&lt;/i&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, now I've decided to write it once for all in the blog so that it won't get forgotten again. If it helped you, do let me know.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Happy Christmas!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-4479334091189203897?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4479334091189203897/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/inaccuracy-on-wim-documentation.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4479334091189203897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4479334091189203897'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/inaccuracy-on-wim-documentation.html' title='Inaccuracy on WIM documentation'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4996855970412686834</id><published>2010-12-21T22:19:00.005-01:00</published><updated>2010-12-21T22:31:20.494-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reboot.pro'/><title type='text'>Fresh start on the Alexa rank</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;I like watching the Alexa rank to get a notion of how different sites fare in terms of mainstream audience.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wonko, "the Sane" has a very different opinion about the usefulness of this rank. Yet, it is indeed interesting to observe how we are starting from a fresh new domain that was ranked in 2 million about a week ago and right now is already breaking the top 30 000 barrier.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Not something that we get to see very often.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://3.bp.blogspot.com/_eCmZQ6ULvRo/TRE3Uj_xaBI/AAAAAAAABFI/LAEjTKS3A1s/s400/alexa_101221-DEC.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 167px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5553280641924163602" /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More interesting to note that over the past weeks our rank had been around 60 000 and that moving to a new domain has also impacted our relevance to search engines as an old domain has far more trust when compared to a brand new one, bringing less visitors from google and the sort.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm just glad that this transition is going so smoothly. A lot of things could have been gone wrong and still a lot more in need to be fixed but so far, I'm really happy to see how we are going.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:) &lt;/div&gt;&lt;div&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/57700989516441543-4996855970412686834?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4996855970412686834/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/fresh-start-on-alexa-rank.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4996855970412686834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4996855970412686834'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/fresh-start-on-alexa-rank.html' title='Fresh start on the Alexa rank'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eCmZQ6ULvRo/TRE3Uj_xaBI/AAAAAAAABFI/LAEjTKS3A1s/s72-c/alexa_101221-DEC.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2768516388216259238</id><published>2010-12-20T23:20:00.004-01:00</published><updated>2010-12-20T23:23:51.892-01:00</updated><title type='text'>Support for Android and Iphone</title><content type='html'>One of the advantages from upgrading the board is that we also enjoy some of the recent changes.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is one of the nice surprises, support for mobile browsing already available by default:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eCmZQ6ULvRo/TQ_zfixTmBI/AAAAAAAABFA/sgVbmwlirqw/s1600/Photo_00007.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_eCmZQ6ULvRo/TQ_zfixTmBI/AAAAAAAABFA/sgVbmwlirqw/s400/Photo_00007.jpg" alt="" id="BLOGGER_PHOTO_ID_5552924588806215698" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2768516388216259238?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2768516388216259238/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/support-for-android-and-iphone.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2768516388216259238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2768516388216259238'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/support-for-android-and-iphone.html' title='Support for Android and Iphone'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eCmZQ6ULvRo/TQ_zfixTmBI/AAAAAAAABFA/sgVbmwlirqw/s72-c/Photo_00007.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3986014895983920147</id><published>2010-12-18T14:47:00.020-01:00</published><updated>2010-12-19T19:33:33.141-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='reboot.pro'/><title type='text'>The Reboot empire.</title><content type='html'>&lt;div&gt;Boot Land was rebooted, why?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Over the past few months, anyone could note that despite our growth in terms of popularity, page views and visits - we were no longer working true to our founding principles.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eCmZQ6ULvRo/TQ0jUHtFkoI/AAAAAAAABEU/4k0EiCFlYVs/s1600/roman-structures-at-02-500.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 133px;" src="http://1.bp.blogspot.com/_eCmZQ6ULvRo/TQ0jUHtFkoI/AAAAAAAABEU/4k0EiCFlYVs/s200/roman-structures-at-02-500.jpg" alt="" id="BLOGGER_PHOTO_ID_5552132744190202498" border="0" /&gt;&lt;/a&gt;Our once peaceful netizens turned the public forums onto a circus stage/arena for proceeding in never-ending quarrels.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;While looking back, I see how much energy was wasted in defending or destroying opposing positions between aristocracy members without practical results.  Instead of seeing progress, I'd risk stating that we actually saw regress and crisis to install in our development/research projects across 2010. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;-------------------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;b&gt;The Boot Land republic&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;The flagship weapon of our community, Winbuilder, saw script warlords requesting so many new features to a script engine craftman that seldom times said no. Encouraged with a multitude of feedback and requests, he began an effort to instantiate syntax correctness that would last the following two years. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From my perspective, this craftman was (and is) well intended. But each new version would disrupt scripts coded in older versions of the weapon. This forced warlords to re-train themselves and update all scripts in weaponry stock. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The script warlords were (and are) well intended. They know that winbuilder is one of the strongest weapon on their arsenal. They desire new specialized features that may give them an advantage on battlefields not just in open plains as before, but also in mountains, swamps and tropical environments.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I would have preferred to see other weapons being used together with winbuilder to achieve optimal performance in combat, rather than seeing both the engine craftman and these warlords creating a tool that served their specific situation alone. Since design simplicity was no longer present, we really lost the single most important combat advantage.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The engine kept on convolving to a reality each time farther apart from practical reality in present battle fields. While warlords of conquered domains kept on using older versions and consider other weapons for conquering new territories, new versions became ignored or deeply criticized.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Personal conflicts escalated to unprecedented levels of animosity to find guilt in others.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Rage settled in, projects are removed from public sight, opposing parties verbally attack each other on sight of public movement. This discourages thousands of netizens from joining the public forum. Vengeance, rather than reason, becomes a frequent dish served at public gatherings that are now only frequented by a few surviving senators that observe, but seldom times intervene in fear of retaliation.&lt;br /&gt;&lt;div&gt;  &lt;/div&gt;&lt;br /&gt;Ironically enough, due to the plural investment in many other projects instead of just being a winbuilder centric community, we also saw the Boot Land domain escalate to an unparalleled growth across the boot disk universe at the Internet. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We see for the first time the barrier of 700 000 page views being broken and also celebrate the success of many excellent projects promoted by unaligned brave souls at our community, that put their heart in the work and move the boot disk state of the art by themselves.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Conflicts between aristocratic members stale any decision or course of action for the future.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Our online republic fails.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-------------------------&lt;br /&gt;&lt;br /&gt;&lt;b&gt;The reboot empire begins&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;  &lt;/div&gt; &lt;/div&gt;&lt;div&gt;Situations of this kind are not uncommon to occur at any community of reasonable dimension. I remember clearly a sequence of similar events that took place at 911CD.net some years ago. Bart, the author of BartPE superseded by far in popularity the work of DoctorXP, author of the 911CD project. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DoctorXP stepped down from public activity and BartPE became the &lt;i&gt;defacto&lt;/i&gt; tool in coming years.  Bart lost interest after some years and his work was left to other initiatives such as Reatogo and ubcd4win. Conflicts soon started to fringe the once peaceful environment at 911CD.net to a stage of pandemonium until everyone was unhappy.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt; &lt;div&gt; &lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TQ0jdZWRW1I/AAAAAAAABEc/QqVJLRrq3Mk/s1600/i-want-you.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 135px; height: 177px;" src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TQ0jdZWRW1I/AAAAAAAABEc/QqVJLRrq3Mk/s200/i-want-you.jpg" alt="" id="BLOGGER_PHOTO_ID_5552132903545166674" border="0" /&gt;&lt;/a&gt;&lt;/div&gt; &lt;/div&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;As time passed, our state of conflict starts to resemble each time closer to the one observed at 911CD.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt; &lt;div&gt;  &lt;/div&gt;  &lt;/div&gt; Since nobody was accepted as right by others nor admitted wrong doing on their side, decisions still need to be made and the state of &lt;a href="http://en.wikipedia.org/wiki/Imperium"&gt;Imperium&lt;/a&gt; was declared.&lt;br /&gt;&lt;br /&gt;&lt;div&gt; &lt;div&gt;  &lt;/div&gt;  &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The reboot empire comes to life.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Martial law is instantiated to restore a sense of order amidst the political chaos. Those who cross the line of civilized manners are handled summarily regardless of their rank in society. A sad period but necessary to prevent our public forum from returning onto a public arena. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We live in the age of &lt;a href="http://en.wikipedia.org/wiki/Pax_Romana"&gt;pax romana&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;The goal is clear. We work to rebuild stability, to define the new milestones of expansion for our domain and to ensure that our society regains once again it's own balance to conquer new territories. These decisions will surely not please everyone but we are a breed of fighters.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We &lt;a href="http://reboot.pro/"&gt;reboot&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-3986014895983920147?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3986014895983920147/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/reboot-empire.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3986014895983920147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3986014895983920147'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/reboot-empire.html' title='The Reboot empire.'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eCmZQ6ULvRo/TQ0jUHtFkoI/AAAAAAAABEU/4k0EiCFlYVs/s72-c/roman-structures-at-02-500.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5207840645081564804</id><published>2010-12-02T21:00:00.005-01:00</published><updated>2010-12-02T21:20:10.331-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='raw editor'/><title type='text'>RawReg included in pwning bootkit</title><content type='html'>Just of hearing the name of RawReg brings back some really &lt;a href="http://nunobrito1981.blogspot.com/2008/05/raw-registry-hives-magic.html"&gt;good memories&lt;/a&gt; from the attic.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, it was kind of fun to read &lt;a href="http://www.boot-land.net/forums/index.php?s=&amp;amp;showtopic=4684&amp;amp;view=findpost&amp;amp;p=115444"&gt;IceCube mentioning&lt;/a&gt; that it was included by default on the Stoned bootkit, a project described by the author as:&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;i&gt;Stoned Bootkit is a new Windows bootkit which attacks all Windows versions from 2000 up to 7. It is loaded before Windows starts and is memory resident up to the Windows kernel. Thus Stoned gains access to the entire system. It has exciting features like integrated file system drivers, automatic Windows pwning, plugins, boot applications and much much more. The project is partly published as open source under the European Union Public License. Like in 1987, "Your PC is now Stoned! ..again".&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Peter Kleissner, Software Developer in Vienna&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;The project can be found at &lt;a href="http://stoned-vienna.com/"&gt;http://stoned-vienna.com/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well, this certainly brought me back good memories when I didn't worried about the integration of enterprise applications and their survivability in the long term.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TPgaOnJhY0I/AAAAAAAABD0/YNNPNktTybY/s400/rawreg_pic.png" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 400px; height: 293px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5546211779436176194" /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here is a screenshot of the "about" screen on rawreg, while running under Wine on the Mac OS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking forth to the future, many plans lay ahead. However, I still question every day if there will ever be time and commitment to see them through.&lt;/div&gt;&lt;div&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/57700989516441543-5207840645081564804?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5207840645081564804/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/rawreg-included-in-pwning-bootkit.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5207840645081564804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5207840645081564804'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/rawreg-included-in-pwning-bootkit.html' title='RawReg included in pwning bootkit'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/TPgaOnJhY0I/AAAAAAAABD0/YNNPNktTybY/s72-c/rawreg_pic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2512696327361880003</id><published>2010-12-01T22:23:00.009-01:00</published><updated>2010-12-01T23:00:50.813-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boot-land.net'/><title type='text'>700 000 page views</title><content type='html'>&lt;div style="text-align: left;"&gt;For the first time since its inception in 2006, Boot Land has reached a new record with more than 700 000 page views served on a single month.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_eCmZQ6ULvRo/TPbZzGXGRII/AAAAAAAABDs/NgdipcW0LtU/s400/stats_november.png" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 226px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5545859463057392770" /&gt;&lt;/div&gt;&lt;div&gt;This means that over the course of 11 months, we have successfully grown more than 77% in terms of popularity when compared to last year.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Over the same period of time, the daily consumption of bandwidth on the server has surpassed 100Gb per day while also reducing our RAM usage to little above 4Gb.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Things are looking bright when looking at these numbers and indeed there are many good reasons to be proud about, however, not all news are roses as seen on the case of the winbuilder wars.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The good part is that our community has finally outgrown this state of warfare and other projects are also giving very solid signs of growth as well. Across 2010 we can see grub4dos, Sardu, multiPE, Wimb's work and &lt;a href="http://www.boot-land.net/forums/index.php?showforum=64"&gt;many other good projects&lt;/a&gt; rising to become top tools in this industry. These projects are indeed becoming the &lt;i&gt;defacto&lt;/i&gt; tools on this arena.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;At this rate, 2011 is already promising to become a really interesting year in terms of community achievements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div&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/57700989516441543-2512696327361880003?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2512696327361880003/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/700-000-page-views.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2512696327361880003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2512696327361880003'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/12/700-000-page-views.html' title='700 000 page views'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eCmZQ6ULvRo/TPbZzGXGRII/AAAAAAAABDs/NgdipcW0LtU/s72-c/stats_november.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2690384219102619478</id><published>2010-11-27T10:38:00.003-01:00</published><updated>2010-11-27T10:50:33.807-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EJB'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>To EJB, or not to EJB?</title><content type='html'>&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;I've found myself asking this question, what advantages does EJB bring?&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Googled a lot, found a lot some bulleted lists repeated across many sites, but not so easy to find the real reasons that might drive a person to consider EJB in regard to other options.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Finally, I've found a really a good article from&lt;span&gt;&lt;span&gt; Humphrey Sheil that was written at the year of 2000. It encompasses the fundamental questions that one should ask ourselves while looking at this technology even after a decade has passed.&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 11px; color: rgb(102, 102, 102); "&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;Below is the introduction:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;div&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div&gt;&lt;i&gt;To EJB, or not to EJB: that is the question.&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Whether 'tis nobler in the mind, to suffer&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;The slings and arrows of outrageous licensing;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Or to take arms against a sea of potential overheads and features,&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;And by opposing end them? To roll your own: to reinvent the wheel;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;No more; and by reinvent, to say, we continue&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;The heart-ache of low-level systems maintained in-house,&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;and the thousand natural shocks&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;That flesh is heir to; 'tis a consummation&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;i&gt;Devoutly to be avoided. &lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You can read the whole article at this location:&lt;a href="http://www.javaworld.com/javaworld/jw-12-2001/jw-1207-yesnoejb.html?page=1"&gt; http://www.javaworld.com/javaworld/jw-12-2001/jw-1207-yesnoejb.html?page=1&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2690384219102619478?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2690384219102619478/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/11/to-ejb-or-not-to-ejb.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2690384219102619478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2690384219102619478'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/11/to-ejb-or-not-to-ejb.html' title='To EJB, or not to EJB?'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4188716781932873730</id><published>2010-10-23T16:31:00.005Z</published><updated>2010-10-23T16:38:16.446Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='SVN'/><title type='text'>Disabling SVN on Windows</title><content type='html'>Windows has some fascinating characteristics and other not so amusing.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Antivirus often get in the way of new files that are created and rendered my use of SVN to a true nightmare.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hence, I needed to remove SVN from one of the projects that I'm working and there is no single straight forward way of doing this from the coding IDE.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking around for advice I see how many people recommend just removing all files starting with ".SVN". However, this is a lot of manual work when the project is of medium dimension.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've tried it once but it's too time consuming. So, looking around the web I found a nifty way of cleaning SVN from a project.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Create a .bat file, place it on the root of your project and place the following code inside:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span&gt;&lt;i&gt;FOR /F "tokens=*" %%G IN ('DIR /B /AD /S *.svn*') DO RMDIR /S /Q "%%G"&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I take no credit for the snippet as it came from this page: &lt;a href="http://www.sean-barton.co.uk/2009/07/how-to-recursively-remove-svn-directories/"&gt;http://www.sean-barton.co.uk/2009/07/how-to-recursively-remove-svn-directories/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope it helps if you ever run into the same nuisance.&lt;/div&gt;&lt;div&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/57700989516441543-4188716781932873730?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4188716781932873730/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/disabling-svn-on-windows.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4188716781932873730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4188716781932873730'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/disabling-svn-on-windows.html' title='Disabling SVN on Windows'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4426781843229928041</id><published>2010-10-14T16:42:00.005Z</published><updated>2010-10-20T17:38:00.713Z</updated><title type='text'>Getting real, the software development model</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/TLc0rqGMy3I/AAAAAAAABCw/8nvlTbMpjAA/s1600/homecover.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 224px; height: 149px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/TLc0rqGMy3I/AAAAAAAABCw/8nvlTbMpjAA/s320/homecover.jpg" alt="" id="BLOGGER_PHOTO_ID_5527944992259885938" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Found a very nice description of a software development model called "getting real". In a world where processes become the salvation to achieve efficient results in complex systems, we find a group with a different twist of perspective.&lt;br /&gt;&lt;br /&gt;They advice that when competing, one should scale down the features instead of scaling up and avoid common decisions that are made too early in the project development and eventually lead to a result that nobody is happy about.&lt;br /&gt;&lt;br /&gt;I can't say that I agree with all their comments, but in good truth should admit that our development of WinBuilder followed a good part of their guidelines to thrive.&lt;br /&gt;&lt;br /&gt;Here's one of the things you might find inside their pages:&lt;br /&gt;  &lt;div class="quote"&gt;     &lt;h3&gt;&lt;/h3&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;h3 style="font-weight: normal;"&gt;Be An Executioner&lt;/h3&gt; &lt;p&gt;It's so funny when I hear people being so protective of ideas. (People who want me to sign an nda to tell me the simplest idea.)&lt;/p&gt;  &lt;p&gt;To me, ideas are worth nothing unless executed. They are just a multiplier. Execution is worth millions.&lt;/p&gt;  &lt;p&gt;Explanation:&lt;/p&gt;  &lt;ul class="tight"&gt;&lt;li&gt;Awful idea = -1&lt;/li&gt;&lt;li&gt;Weak idea = 1&lt;/li&gt;&lt;li&gt;So-so idea = 5&lt;/li&gt;&lt;li&gt;Good idea = 10&lt;/li&gt;&lt;li&gt;Great idea = 15&lt;/li&gt;&lt;li&gt;Brilliant idea = 20&lt;/li&gt;&lt;/ul&gt;  &lt;ul class="tight"&gt;&lt;li&gt;No execution = $1&lt;/li&gt;&lt;li&gt;Weak execution = $1000&lt;/li&gt;&lt;li&gt;So-so execution = $10,000&lt;/li&gt;&lt;li&gt;Good execution = $100,000&lt;/li&gt;&lt;li&gt;Great execution = $1,000,000&lt;/li&gt;&lt;li&gt;Brilliant execution = $10,000,000 &lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;To make a business, you need to multiply the two.&lt;/p&gt;  &lt;p&gt;The most brilliant idea, with no execution, is worth $20. The most brilliant idea takes great execution to be worth $20,000,000.&lt;/p&gt;  &lt;p&gt;That's why I don't want to hear people's ideas. I'm not interested until I see their execution.&lt;/p&gt;      &lt;cite&gt;—Derek Sivers, president and programmer, &lt;a href="http://www.cdbaby.com/"&gt;CD Baby&lt;/a&gt;  and &lt;a href="http://www.hostbaby.com/"&gt;HostBaby&lt;/a&gt;&lt;/cite&gt;&lt;/blockquote&gt;&lt;cite&gt;&lt;a href="http://www.hostbaby.com/"&gt;&lt;/a&gt;&lt;/cite&gt;    &lt;/div&gt;&lt;div class="quote"&gt;&lt;cite&gt;&lt;/cite&gt;    &lt;/div&gt;&lt;br /&gt;You can read about them here: &lt;a href="http://gettingreal.37signals.com/toc.php"&gt;http://gettingreal.37signals.com/toc.php&lt;/a&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/57700989516441543-4426781843229928041?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4426781843229928041/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/getting-real-software-development-model.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4426781843229928041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4426781843229928041'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/getting-real-software-development-model.html' title='Getting real, the software development model'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/TLc0rqGMy3I/AAAAAAAABCw/8nvlTbMpjAA/s72-c/homecover.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4666379398024541404</id><published>2010-10-12T21:09:00.005Z</published><updated>2010-10-12T21:22:41.666Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='virusremoval.pro'/><title type='text'>Partnership with 360Amigo</title><content type='html'>&lt;span class="wiki_summarized" dir="ltr"&gt;We've become the official  discussion forum of products released by 360amigo a company that recently began releasing their tools to the public such as a System  Speedup, a free tool for home users.&lt;br /&gt;&lt;br /&gt;Their forum section is hosted at VirusRemoval.pro right next to the discussion forum of Ninja  pendisk - &lt;a href="http://virusremoval.pro/forumdisplay.php?fid=12"&gt;http://virusremoval.pro/forumdisplay.php?fid=12&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At VirusRemoval we sometimes receive invitations from security companies to test a given security suite. As a house policy on these cases, we only test and help products that are at minimum free for home users.&lt;br /&gt;&lt;br /&gt;One of these security companies introduced us to 360amigo and the dev team behind it are good guys, so we decided to help them and bring some visibility to their free tool while also bringing some diversity to our forum discussions. A win-win situation for both ends.&lt;br /&gt;&lt;br /&gt;You can visit the company site at &lt;a href="http://360amigo.com/"&gt;http://360amigo.com&lt;/a&gt; and let us know at VirusRemoval your opinion.&lt;br /&gt;&lt;br /&gt;:)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-4666379398024541404?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4666379398024541404/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/partnership-with-360amigo.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4666379398024541404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4666379398024541404'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/partnership-with-360amigo.html' title='Partnership with 360Amigo'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6867222547628242068</id><published>2010-10-12T20:52:00.004Z</published><updated>2010-10-12T21:08:45.694Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='domain'/><title type='text'>http://ous.in acquired</title><content type='html'>It costed some whooping 8 dollars to acquire this short domain that allows setting up domain hacks like http://fabul.ous.in, http://danger.ous.in or even marvel.ous.in amongst any others that you might imagine.&lt;br /&gt;&lt;br /&gt;Despite having no idea of use in sight for "ous" at the moment, it was a good opportunity at a reasonable price. Good enough to compose hundreds of common words for domain hacks in English language at future projects.&lt;br /&gt;&lt;br /&gt;This kind of reminds me of the Delicious website that was initially using http://del.icio.us before it was acquired by Yahoo! Inc. Funny enough that Delicious itself was founded by a Carnegie Mellon student, Joshua Schachter.&lt;br /&gt;&lt;br /&gt;But back to earth, if you have any suggestions regarding how to put this URL into some good use, then do let me know!&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/57700989516441543-6867222547628242068?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6867222547628242068/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/httpousin-acquired.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6867222547628242068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6867222547628242068'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/httpousin-acquired.html' title='http://ous.in acquired'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-9020394594666848806</id><published>2010-10-09T14:26:00.003Z</published><updated>2010-10-09T14:34:11.070Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='boot-land.net'/><title type='text'>Boot Land keeps rising up the charts.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TLB71Z-ybII/AAAAAAAABCo/6QWHZX_M-yM/s1600/101009-OCT_Online_Stats.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 248px;" src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TLB71Z-ybII/AAAAAAAABCo/6QWHZX_M-yM/s320/101009-OCT_Online_Stats.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5526052900221119618" /&gt;&lt;/a&gt;I'm really proud in seeing how well Boot Land is achieving good results in terms of popularity and overall ranking on a global scale.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Over these past few days we've kept on moving up and surpassing a giant site like MSFN, reaching a position on the top 30 000 sites around the globe.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;30k is certainly far from reaching the top 1000 but considering the fact that our community does not deal with mainstream topics like fashion, movies or even generic PC support then I would say that things are looking bright on our arena when comparing to other sites in a similar specialty field.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Congratulations are due to the Boot Land community!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-9020394594666848806?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/9020394594666848806/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/boot-land-keeps-rising-up-charts.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/9020394594666848806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/9020394594666848806'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/boot-land-keeps-rising-up-charts.html' title='Boot Land keeps rising up the charts.'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/TLB71Z-ybII/AAAAAAAABCo/6QWHZX_M-yM/s72-c/101009-OCT_Online_Stats.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-39658018508816461</id><published>2010-10-01T08:51:00.011Z</published><updated>2010-10-01T14:24:11.165Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Toshiba R360'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='Laptop'/><title type='text'>New laptop - Toshiba R630</title><content type='html'>&lt;div&gt;Lo and behold, I'm back on Windows!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;Yesterday I've got myself a brand new machine that comes native with Windows 7 x64.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Guess this concludes a cycle that began two years ago when I removed Vista and installed Ubuntu to use it as a full time replacement desktop OS -&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;a href="http://nunobrito1981.blogspot.com/2008/06/bye-bye-vista-say-hello-to-ubuntu.html"&gt;http://nunobrito1981.blogspot.com/2008/06/bye-bye-vista-say-hello-to-ubuntu.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TKXNidG5fzI/AAAAAAAABCg/NbjF_DPEEpw/s320/Toshiba-Satellite-R630-R630-105_0.jpg" style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 320px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5523046509852589874" /&gt;&lt;div&gt;At that time, Vista was a serious nuissance and moving to Ubuntu was a real blessing to prevent me from getting bald in early age.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now Windows 7 came. Lots of mistakes learned the hard way, hardware continuously evolving and even more experience on my side as I've been using Ubuntu and Mac OSX during this interreign.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Won't spend time talking about the good or bad things on either side but in a true sense can also say that trying to use each one of them for a certain period of time is certainly an enriching experience.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, I'm back on my roots and ready to have fun.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Choosing a new machine wasn't easy. So I've asked for opinion to a hardline no-nonsense structural engineer that follows the laptop trends. He needs to work intensively with Autocad, probably the most resource-hungry application in the world, so, who better to ask for an opinion? :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This guy also happens to be my younger brother and it is interesting to hear his thoughts on new technology.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;He recommended the Toshiba R630, a laptop that judging by the pictures that I saw online was probably one of the ugliest and un-sexiest machines on the market. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, the machine is in fact a hidden gem when you read between the lines and compare it against other laptops.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It comes with an i5 processor (with 4 Intel x64 CPU cores), 4Gb of RAM, battery runs up to 8 hours on economic mode and weights some stunning 1.5 kilograms packed with all that processing power.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And when looking at the machine on real life, it is very discrete and small sized.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's no fluff on the laptop. The display is not glossy, there are no dummy buttons and it goes against the current trend of PC manufacturers to look like a cheap copy of the MacBooks. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's a real PC and I'm happy with it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-39658018508816461?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/39658018508816461/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/new-laptop-toshiba-r630.html#comment-form' title='14 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/39658018508816461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/39658018508816461'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/10/new-laptop-toshiba-r630.html' title='New laptop - Toshiba R630'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/TKXNidG5fzI/AAAAAAAABCg/NbjF_DPEEpw/s72-c/Toshiba-Satellite-R630-R630-105_0.jpg' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2218434156144711015</id><published>2010-09-28T13:33:00.001Z</published><updated>2010-09-28T14:04:01.572Z</updated><title type='text'>Snippet: Fetching a regular expression</title><content type='html'>I'm including a small handy snippet to use regular expressions in your Java code.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Regular expressions allow to save time when in need of retrieving a very specific portion of text within a string. On this case, I've used to gather text from an HTML page.&lt;br /&gt;&lt;blockquote&gt;&lt;i&gt;/**&lt;br /&gt;    * Gets a string value from laptop characteristics based on a given pattern.&lt;br /&gt;    * A Matcher object is used internally.&lt;br /&gt;    *&lt;br /&gt;    * @param source string containing the text to be parsed&lt;br /&gt;    * @param reg regular expression pattern to use&lt;br /&gt;    * @param group index of one of the groups found by the pattern&lt;br /&gt;    * @return String containing the found pattern, or null otherwise&lt;br /&gt;    */&lt;br /&gt;   private String findRegEx(String source, String reg, int group) {&lt;br /&gt;       String out = null;&lt;br /&gt;&lt;br /&gt;       Pattern p = Pattern.compile(reg); // Prepare the search pattern.&lt;br /&gt;       Matcher matcher = p.matcher(source); // Retrieve our items.&lt;br /&gt;&lt;br /&gt;       if (matcher.find()) {&lt;br /&gt;           try {&lt;br /&gt;               out = matcher.group(group);&lt;br /&gt;           } catch (Exception e) {}&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;       return out;&lt;br /&gt;   }&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;You can use a regular expression simulator as the one available at &lt;a href="http://gskinner.com/RegExr/"&gt;http://gskinner.com/RegExr/&lt;/a&gt; to test your regular expressions and also change the available templates over there.&lt;/div&gt;&lt;div&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/57700989516441543-2218434156144711015?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2218434156144711015/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/snippet-fetching-regular-expression.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2218434156144711015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2218434156144711015'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/snippet-fetching-regular-expression.html' title='Snippet: Fetching a regular expression'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2131129909079691396</id><published>2010-09-23T17:03:00.004Z</published><updated>2010-09-23T17:09:57.414Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='winbuilder'/><category scheme='http://www.blogger.com/atom/ns#' term='C&apos;T'/><title type='text'>WinBuilder featured on C'T 2010</title><content type='html'>WinBuilder got featured &lt;i&gt;(again)&lt;/i&gt; on the German C'T Computer magazine.&lt;div&gt;This was three months ago but only noticed it while looking on the visitor log at Boot Land.&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The good guys from C'T are making available online a screenshot of the pages where the article is mentioned. You can see it in more detail at this link:&lt;/div&gt;&lt;div&gt; &lt;a href="http://www.heise.de/ct/inhalt/2010/06/172/"&gt;http://www.heise.de/ct/inhalt/2010/06/172/ &lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And below are two screenshots of the magazine pages:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_eCmZQ6ULvRo/TJuJDgpFjtI/AAAAAAAABCQ/sXREpkc0Vg0/s400/172.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 230px; height: 325px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5520156461667552978" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/TJuJLOD-nnI/AAAAAAAABCY/jZhi5sgDdK4/s400/173.jpg" style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 230px; height: 325px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5520156594119024242" /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;Guess my goal for 2011 is learning German to properly read the article as intended.&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2131129909079691396?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2131129909079691396/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/winbuilder-featured-on-ct-2010.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2131129909079691396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2131129909079691396'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/winbuilder-featured-on-ct-2010.html' title='WinBuilder featured on C&apos;T 2010'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eCmZQ6ULvRo/TJuJDgpFjtI/AAAAAAAABCQ/sXREpkc0Vg0/s72-c/172.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5083674763244659616</id><published>2010-09-19T17:16:00.002Z</published><updated>2010-09-19T17:20:04.646Z</updated><title type='text'>Using the URL shortner from google</title><content type='html'>Google has made available their own google shortner service at &lt;a href="http://goo.gl"&gt;http://goo.gl&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;They require that you install the google toolbar to use the service or you can use the tool made available by Alexandre Gaigalas at &lt;a href="http://gaigalas.net/lab/googl"&gt;http://gaigalas.net/lab/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using their service gives some sense of stability, I was a fan of another service at http://tr.im but when it become inactive, so went inactive all my URL's from their site.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Hope you enjoy this tip.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-5083674763244659616?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5083674763244659616/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/using-url-shortner-from-google.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5083674763244659616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5083674763244659616'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/using-url-shortner-from-google.html' title='Using the URL shortner from google'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6723605190433256916</id><published>2010-09-17T09:44:00.005Z</published><updated>2010-09-17T09:49:06.079Z</updated><title type='text'>ipkr.net sold to game developer</title><content type='html'>Last week I've sold one of the domains on my portfolio - &lt;a href="http://ipkr.net/"&gt;http://ipkr.net&lt;/a&gt; to a game developer from Ubisoft.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was a good trade for both ends, he ended up with a good and short domain for his project and I wouldn't really give any proper use to this domain.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All that is left is wishing the new owner good luck and best wishes of success.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div&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/57700989516441543-6723605190433256916?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6723605190433256916/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/ipkrnet-sold-to-game-developer.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6723605190433256916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6723605190433256916'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/ipkrnet-sold-to-game-developer.html' title='ipkr.net sold to game developer'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2753585283317828323</id><published>2010-09-16T10:27:00.006Z</published><updated>2010-09-16T10:48:53.044Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='HTTP server'/><title type='text'>HTTP servers for Java 5</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/TJH1ajtud6I/AAAAAAAABB8/l4gvW7rxa80/s1600/image_web_server.png"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 128px; height: 128px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/TJH1ajtud6I/AAAAAAAABB8/l4gvW7rxa80/s400/image_web_server.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5517460855118002082" /&gt;&lt;/a&gt;&lt;br /&gt;At my project it is necessary to ensure that each client can also become a HTTP server on their own so that they can communicate with other clients.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;One would think that this task would be easier using JMS or any other communication protocols like XMPP. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, I'm assuming a worst case scenario where the proxy for a LAN only allows connections from port 80 to the outside world and even then, checks all packages to ensure that the content of each message is real HTTP content. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm also assuming that the users of the client have no administrative permissions and no power to allow ports to be open or controlled by applications with guest permissions.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, port 80 is a nice way to communicate since LAN proxies often let this door open but we still can't move past the administrative permissions required to control port 80 so I'm using for the moment 8080 as an alternative.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've considered several communication protocols over the past two weeks, I've lost so much time looking around that I became a bit disappointed at some time. Much of what you find in Java nowadays is targeted to enterprise applications and there are good reasons why whenever someone refers to "enterprise" it might just seems like another synonym for "slow", "fat" and "octopus" to come in mind.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let's try to change this picture then.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As HTTP server, I've abandoned the option of JMS and went forward onto plain HTTP interpretation back and forth of HTML messages (possibly marshaled with XML instructions). &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Looking for HTTP servers, I've discovered that Java 6 comes already built-in with an HTTP server (&lt;a href="http://download.oracle.com/javase/6/docs/jre/api/net/httpserver/spec/com/sun/net/httpserver/package-summary.html"&gt;link&lt;/a&gt;), however, we can only use Java 5 as the minimum supported java so I went looking for other projects. Found quite many of them but my favorite was this one: &lt;a href="http://elonen.iki.fi/code/nanohttpd/"&gt;nanoHTTPD&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It is self-contained inside a single Java file (sized in 24kb) and brings all the basic support for exchanging pages back and forth.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a wishful thinking, it would be nice to use the servlet power since the application is intended to be flexible and allows plugins to be integrated but I'm running out of time and other priorities need to be meet on time.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nevertheless, here is a list of other small sized web servers in plain java that you might be interested in taking a look:&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;span&gt;&lt;span&gt;&lt;br /&gt;Jibble - &lt;a href="http://www.jibble.org/jibblewebserver.php"&gt;http://www.jibble.org/jibblewebserver.php&lt;/a&gt; (small sized)&lt;br /&gt;WikiWebServer - &lt;a href="http://www.wikiwebserver.org/"&gt;http://www.wikiwebserver.org&lt;/a&gt; (user editable)&lt;br /&gt;TJWs - &lt;a href="http://tjws.sourceforge.net/"&gt;http://tjws.sourceforge.net&lt;/a&gt; (requires 7beee dependency to build)&lt;br /&gt;WinStone - &lt;a href="http://winstone.sourceforge.net/"&gt;http://winstone.sourceforge.net&lt;/a&gt; (Servlet, looks professional, multiple hosts, lite version is 170Kb)&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-2753585283317828323?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2753585283317828323/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/http-servers-for-java-5.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2753585283317828323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2753585283317828323'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/http-servers-for-java-5.html' title='HTTP servers for Java 5'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/TJH1ajtud6I/AAAAAAAABB8/l4gvW7rxa80/s72-c/image_web_server.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2261680101158420929</id><published>2010-09-14T15:03:00.002Z</published><updated>2010-09-14T15:09:09.815Z</updated><title type='text'></title><content type='html'>I've stumbled at an interesting article about design in a distributed computing environment.&lt;br /&gt;&lt;br /&gt;Looking at the past, it does help to prevent some (common) design errors in the future and it sure is good to keep them in mind (regardless of how many times you hear them..)&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;br /&gt;&lt;strong&gt;KISS. Keep it (the design) simple and stupid.&lt;/strong&gt; Complex    systems tend to fail. They are hard to tune. They tend not to scale as well.    They require smarter people to keep the wheels on the road. In short, they are    a pain in the you-know-what. Conversely, simple systems tend to be easy to tune    and debug and tend to fail less and scale better and are usually easier to operate.    This isn’t news. As I’ve argued before, spreadsheets and SQL and    PHP all succeeded precisely because they are simple and stupid—and forgiving.    Interestingly, standards bodies tend to keep working on standards long after    they should have been frozen. They forget these lessons and add a million bells    and whistles that would, if adopted, undoubtedly cause the systems to fail.    Luckily this doesn’t happen because by then there is a large body of installed    code (and even hardware) out there that assumes the simpler spec and cannot    handle the new bells and whistles. Therefore, no one uses them and we are all    protected.&lt;/blockquote&gt;&lt;br /&gt;Hope you enjoy the reading, you can grab the full article here:&lt;br /&gt;&lt;a href="http://queue.acm.org/detail.cfm?id=1103833"&gt;http://queue.acm.org/detail.cfm?id=1103833&lt;/a&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/57700989516441543-2261680101158420929?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2261680101158420929/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/ive-stumbled-at-interesting-article.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2261680101158420929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2261680101158420929'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/09/ive-stumbled-at-interesting-article.html' title=''/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8256395480384937031</id><published>2010-08-08T20:24:00.003Z</published><updated>2010-08-08T20:39:25.566Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='vacations'/><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>Vacations!</title><content type='html'>And hence start the summer vacations!&lt;br /&gt;&lt;br /&gt;I'm really happy that they have finally arrived. Was getting tired of this last semester and some time out will surely be well used to refill batteries before the final semester begins.&lt;br /&gt;&lt;br /&gt;Just wish it had gone better. At least I'm proud to say that I've learned quite a lot of new things throughout these 12 weeks. Some were good, some were bad and all of them were important to my life in one way or another.&lt;br /&gt;&lt;br /&gt;The most memorable detail is the fact that I no longer stay away from Java. I've always avoided it, don't like eclipse, it's slow as heck compared to native binaries building a user interface is a real shame when compared to compilers for Windows that have been available for almost a decade now.&lt;br /&gt;&lt;br /&gt;However, it does bring some fancy new advantages available nowhere else. We can indeed code once and run everywhere if things are done right. The code that runs on a desktop can also run from a server on the command line.&lt;br /&gt;&lt;br /&gt;And.. using Netbeans as an IDE was indeed a nice touch of fresh air to escape a bulky, buggy and slow code editor.&lt;br /&gt;&lt;br /&gt;Another nice memory from this semester is the independent study. Not only I was able to do a project from a professional perspective as it was also fun and something that I'll continue working through the next months.&lt;br /&gt;&lt;br /&gt;For the vacations, many other projects await. Time will pass really quickly and I also want to rest. From here up to December things will not get simpler.&lt;br /&gt;&lt;br /&gt;Luckily, from a financial perspective I'm finally at ease. Not only have I managed to secure my full payment of the MSE degree and survive the final months, as I'm also increasing my current savings and doing investments for the future.&lt;br /&gt;&lt;br /&gt;Things haven't been easy but they're moving forward.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-8256395480384937031?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8256395480384937031/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/08/vacations.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8256395480384937031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8256395480384937031'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/08/vacations.html' title='Vacations!'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6133177853391311193</id><published>2010-08-01T15:22:00.006Z</published><updated>2010-08-01T17:21:39.106Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='stack overflow'/><title type='text'>Avoiding stackOverflow errors in Java</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/TFWT2eeTR9I/AAAAAAAABAY/OVLRshC928c/s1600/images.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 293px; height: 172px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/TFWT2eeTR9I/AAAAAAAABAY/OVLRshC928c/s400/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5500465084005304274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I have coded a method in Java that will recursively iterate through all folders and respective sub-folders on disk.&lt;br /&gt;&lt;br /&gt;The code seemed to work as expected, but whenever reaching a certain folder it would simply thrown an exception error and complain about stackOverflow.&lt;br /&gt;&lt;br /&gt;Now, what is this stack overflow all about? Googling around it seems to occur whenever you enter into an endless loop situation.&lt;br /&gt;&lt;br /&gt;This occurred while crawling sub-folders, so even thought my hard drive is quite filled up, it's not exactly filed with folders up to infinity.&lt;br /&gt;&lt;br /&gt;So, what is wrong on this picture?&lt;br /&gt;&lt;br /&gt;It turns out that this method is vulnerable to badly formed dynamic links. Meaning that whenever a link is found that points to a folder on lower level - it would just re-bounce back to that lower sub-folder and then loop back again ad eternum.&lt;br /&gt;&lt;br /&gt;I've lost plenty of time trying to avoid dynamic links from being crawled but to no avail. Also reached the point of calling the absolute path of dynamic links and indexing each path on a database to check one by one if they had already been called to avoid these annoying loops (losing a lot of performance in the process).&lt;br /&gt;&lt;br /&gt;Fortunately, found the solution to this riddle on this website - &lt;a href="http://leepoint.net/notes-java/io/10file/20recursivelist.html"&gt;http://leepoint.net/notes-java/io/10file/20recursivelist.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Albeit being a simplistic code, it provides a very efficient way to deal with the "symbolic-link-limbo". All you need to is define a depth level. They mention 20 as the default value and I applied the same concept on my code.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second piece of the puzzle is verifying that each new directory that you want to crawl matches in terms of absolute path and canonical path. I've used the code from the following page as inspiration: &lt;a href="http://www.idiom.com/~zilla/Xfiles/javasymlinks.html"&gt;http://www.idiom.com/~zilla/Xfiles/javasymlinks.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After applying these changes, the code WORKED LIKE A CHARM!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Now the same method is indexing all folders up to 20 levels of depth and working as expected without seeing any more stack overflow messages. Under a MacBookPro it can index over 600 000 files under 16 minutes using less than 10Mb of heap space in RAM.&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/57700989516441543-6133177853391311193?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6133177853391311193/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/08/avoiding-stackoverflow-errors-in-java.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6133177853391311193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6133177853391311193'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/08/avoiding-stackoverflow-errors-in-java.html' title='Avoiding stackOverflow errors in Java'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/TFWT2eeTR9I/AAAAAAAABAY/OVLRshC928c/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1120224482878679214</id><published>2010-07-29T16:46:00.004Z</published><updated>2010-07-29T17:05:52.387Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='app engine'/><category scheme='http://www.blogger.com/atom/ns#' term='netbeans'/><category scheme='http://www.blogger.com/atom/ns#' term='google apps'/><title type='text'>My first Google engine application</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TFG0r8KDZXI/AAAAAAAABAM/TjV6Fy_V9LI/s1600/7806.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 250px; height: 250px;" src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TFG0r8KDZXI/AAAAAAAABAM/TjV6Fy_V9LI/s400/7806.png" alt="" id="BLOGGER_PHOTO_ID_5499375286971753842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Yesterday I've created my first application using Google App Engine.&lt;br /&gt;&lt;br /&gt;I've been thinking about the possibilities of using a cloud computing environment for quite some time now. Google brings the advantage that you can use their services for free up to a given threshold of resources.&lt;br /&gt;&lt;br /&gt;When I first heard about google app engine, it was some years ago and it was only supported on Python. At the time, phyton didn't exactly rock my world so I just walked away and kept on doing other things.&lt;br /&gt;&lt;br /&gt;A few months ago, Java support was announced. My wild guess is that Phyton was not exactly a popular choice amongst many developers but Java is a whole different case.&lt;br /&gt;&lt;br /&gt;So, I went on with my trial of their (free) service.&lt;br /&gt;&lt;br /&gt;The Java environment that is officially supported by Google is based on the Eclipse IDE, since my preferences on coding fall more on the NetBeans side of life, I've "googled" for this alternative.&lt;br /&gt;&lt;br /&gt;It turns out to be a quite simple process of configuration.&lt;br /&gt;&lt;br /&gt;The first step is downloading and unpacking the Google App Engine SDK to some folder inside your disk - &lt;a href="http://code.google.com/intl/en/appengine/downloads.html"&gt;http://code.google.com/intl/en/appengine/downloads.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;No fancy install involved, just unzip and place it somewhere nice.&lt;br /&gt;&lt;br /&gt;-------------------&lt;br /&gt;&lt;br /&gt;Then, we open NetBeans. Google support is added as a plugin for the NetBeans IDE. There is a very good page that details these steps: &lt;a href="http://kenai.com/projects/nbappengine/pages/NBInstall"&gt;http://kenai.com/projects/nbappengine/pages/NBInstall&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;When configuring the google plugin, I didn't selected the Hibernate Support and didn't seemed to matter much in either case.&lt;br /&gt;&lt;br /&gt;After all said and done, you're only missing to add google app engine as a server inside your environment and this is also a simple task.&lt;br /&gt;&lt;br /&gt;Click on the "Services" tab (that is next to "Projects" and "Files" on the right side of the IDE) and right click on the "Servers" item.&lt;br /&gt;&lt;br /&gt;All that is missing is add a new server - select the "Google App Engine".&lt;br /&gt;&lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;You should now have everything set up.&lt;br /&gt;&lt;br /&gt;To start a web project, create a new project and select "Java Web" --&gt; "Web Application". It will create you a template project that will be saying "Hello world!"&lt;br /&gt;&lt;br /&gt;When you're ready to publish the project on the cloud computing environment, just right click on the project and choose "Deploy to google app engine".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Don't forget that you need to have a project already configured on the side of the google app website. After this you should be able to visit your URL and try out the results.&lt;br /&gt;&lt;br /&gt;You can also view a full video of all these steps at the following location: &lt;a href="http://kenai.com/projects/nbappengine/pages/Home"&gt;http://kenai.com/projects/nbappengine/pages/Home&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;---------&lt;br /&gt;&lt;br /&gt;Hope you have fun with cloud computing, this is a really simple and interesting concept at a very affordable cost.&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/57700989516441543-1120224482878679214?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1120224482878679214/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/my-first-google-engine-application.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1120224482878679214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1120224482878679214'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/my-first-google-engine-application.html' title='My first Google engine application'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/TFG0r8KDZXI/AAAAAAAABAM/TjV6Fy_V9LI/s72-c/7806.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3369437578477309646</id><published>2010-07-17T19:35:00.003Z</published><updated>2010-07-17T20:12:31.451Z</updated><title type='text'>Implementing a customized Hot folder tracking with Java 1.5</title><content type='html'>One of the features required for the new project is to track changes made on specific folders.&lt;br /&gt;&lt;br /&gt;This is the commonly called "hot folder". In the newer java versions this feature already comes implemented using the OS API whenever available.&lt;br /&gt;&lt;br /&gt;On my case, being stuck with Java 1.5 there is not other built-in option other than pooling a folder and check for changes.&lt;br /&gt;&lt;br /&gt;However, just checking one folder and not going deeper is still kind of limited so we need to stretch this concept further and use the imagination to check other folders without draining away all of the memory available for the java application nor hogging the CPU resources.&lt;br /&gt;&lt;br /&gt;This was a nice challenge, used some of the learnings from the Models of Software Systems class with Pedro Bizarro, guess he'd be proud to see a finite state machine diagram being used to describe this concept. It was indeed a good tool to work out the details before moving to the implementation.&lt;br /&gt;&lt;br /&gt;I include a small screenshot of the sketch, some changes were made on the final implementation. It's working really fast and indexing all sub-folders at blazing speed with resort to a database to save the precious RAM memory.&lt;br /&gt;&lt;br /&gt;&lt;a target='_blank' href='http://img824.imageshack.us/i/100717julhotfoldertrack.png/'&gt;&lt;img src='http://img824.imageshack.us/img824/584/100717julhotfoldertrack.th.png' border='0'/&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let's move onto the next challenge! :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-3369437578477309646?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3369437578477309646/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/implementing-customized-hot-folder.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3369437578477309646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3369437578477309646'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/implementing-customized-hot-folder.html' title='Implementing a customized Hot folder tracking with Java 1.5'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2557066713983110950</id><published>2010-07-13T23:36:00.004Z</published><updated>2010-07-13T23:56:45.930Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Surviving to java.lang.OutOfMemoryError: Java heap space</title><content type='html'>Memory leaks happen.&lt;br /&gt;&lt;br /&gt;You might be a neat and tidy person that tries to ensure that no waste is made since the start of your project coding but leaks happen.&lt;br /&gt;&lt;br /&gt;I fell into this trap.&lt;br /&gt;&lt;br /&gt;Was feeling nice and comfortable believing that all my code was behaving nice and using a database was keeping the memory consumption low.&lt;br /&gt;&lt;br /&gt;Everything was working perfectly when working with a few hundred files.&lt;br /&gt;&lt;br /&gt;However, when dealing with little over 50 thousand files the picture turned out to be grey and the evil java.lang.OutOfMemoryError:  Java heap space appears.&lt;br /&gt;&lt;br /&gt;I tried my best to pinpoint the evil doers but I couldn't really point my finger at any guilty party since none seemed to blame.&lt;br /&gt;&lt;br /&gt;Looking for solutions, most people recommend increasing the size of the virtual machine to support the stress. But as mentioned on the opcode website: &lt;a href="http://blogs.opcodesolutions.com/roller/java/entry/solve_java_lang_outofmemoryerror_java"&gt;http://blogs.opcodesolutions.com/roller/java/entry/solve_java_lang_outofmemoryerror_java&lt;/a&gt;, adding more memory only hides the problem, doesn't really bring a scalable solution.&lt;br /&gt;&lt;br /&gt;That blog post in particular turned out to be very useful. A good approach is using profiling tools that "police" my application and see how it behaves and which parts are not behaving nicely.&lt;br /&gt;&lt;br /&gt;NetBeans is remarkable in that sense.&lt;br /&gt;&lt;br /&gt;It already comes with a profiling tool that is built-in and quite simple to use.&lt;br /&gt;&lt;br /&gt;Just click on "Profile" --&gt; "Main Project" and follow the directions.&lt;br /&gt;&lt;br /&gt;It will launch your project and allow you to track what is really going on underneath the hood while the program is running.&lt;br /&gt;&lt;br /&gt;Far better than following your program from the external task manager.&lt;br /&gt;&lt;br /&gt;I'm attaching a screenshot so that you can see how it looks like:&lt;br /&gt;&lt;a target="_blank" href="http://img695.imageshack.us/i/snapshot20100714004625.png/"&gt;&lt;img src="http://img695.imageshack.us/img695/6901/snapshot20100714004625.th.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;My application was bursting at 100Mb, with profiling I was able to track down the reason of the leak: the log entries were consuming  too many resources.&lt;br /&gt;&lt;br /&gt;Disabling the log entries you can see on the screenshot how it goes well above the previous limit using less than 10Mb of memory to index 100 000 files.&lt;br /&gt;&lt;br /&gt;Still a lot of things to improve on my code but this nifty tool sure helps to make it possible.&lt;br /&gt;&lt;br /&gt;:)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;&lt;a style="text-decoration: none; color: rgb(106, 106, 106);" href="http://blogs.opcodesolutions.com/roller/java/entry/solve_java_lang_outofmemoryerror_java"&gt;&lt;/a&gt;&lt;/h2&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2557066713983110950?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2557066713983110950/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/surviving-to-javalangoutofmemoryerror.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2557066713983110950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2557066713983110950'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/surviving-to-javalangoutofmemoryerror.html' title='Surviving to java.lang.OutOfMemoryError: Java heap space'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7839725017859549357</id><published>2010-07-12T11:27:00.005Z</published><updated>2010-07-12T11:36:32.738Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='desktop path'/><title type='text'>Java: Getting the localized path to the user's Desktop under Windows</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://masterblog.front.lv/wp-content/uploads/2008/10/windows-desktop-folder-icon.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 117px; height: 121px;" src="http://masterblog.front.lv/wp-content/uploads/2008/10/windows-desktop-folder-icon.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Getting the path to the user's desktop under Windows is tricky if you're not using Java 1.6 and above.&lt;br /&gt;&lt;br /&gt;Looking for a solution around the web, I see many people recommending to use a wrap around the Win32 API using SHGetSpecialFolderPath or reading the value directly from the host registry system as suggested here: &lt;a href="http://stackoverflow.com/questions/1080634/how-to-get-the-desktop-path-in-java"&gt;http://stackoverflow.com/questions/1080634/how-to-get-the-desktop-path-in-java&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But I'm not very fond of these solutions and found one that is simple and seems to work fairly well although it doesn't seem to be documented (yet).&lt;br /&gt;&lt;br /&gt;Just try this snippet under a Windows machine:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;FileSystemView filesys = FileSystemView.getFileSystemView();&lt;br /&gt;File[] roots = filesys.getRoots();&lt;br /&gt;filesys.getHomeDirectory()&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;And you should be able to get the desktop folder as expected. Under my language, this folder is called "Ambiente de trabalho" so it worked like a charm.&lt;br /&gt;&lt;br /&gt;This tip comes from Russ Bradberry: &lt;a href="http://stackoverflow.com/questions/570401/in-java-under-windows-how-do-i-find-a-redirected-desktop-folder"&gt;http://stackoverflow.com/questions/570401/in-java-under-windows-how-do-i-find-a-redirected-desktop-folder&lt;/a&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/57700989516441543-7839725017859549357?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7839725017859549357/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/java-getting-localized-path-to-users.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7839725017859549357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7839725017859549357'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/java-getting-localized-path-to-users.html' title='Java: Getting the localized path to the user&apos;s Desktop under Windows'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1695435084734005874</id><published>2010-07-10T10:46:00.004Z</published><updated>2010-07-10T11:21:16.195Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='PE header'/><title type='text'>Reading the file version from Windows EXE and DLL files.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eCmZQ6ULvRo/TDhVoZfFpqI/AAAAAAAAA_Y/TDUv_Iq3nsQ/s1600/get_image.php.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 400px; height: 283px;" src="http://1.bp.blogspot.com/_eCmZQ6ULvRo/TDhVoZfFpqI/AAAAAAAAA_Y/TDUv_Iq3nsQ/s400/get_image.php.jpg" alt="" id="BLOGGER_PHOTO_ID_5492233898102728354" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;One of my goals for this week was reading the version of Windows executable files. The code should be implemented in Java and avoid resorting to any native calls.&lt;br /&gt;&lt;br /&gt;So, a solution that seemed simple and straightforward would be reading directly the PE header from these files and read the version number for our use.&lt;br /&gt;&lt;br /&gt;As many things in life, it's easier said than done.&lt;br /&gt;&lt;br /&gt;The troubles started with the code required to handle binary files. I'm using Java and had none of my trustworthy code from previous projects to read files using specific x86 sizes for DWORD, WORD and Unicode strings with a limited size.&lt;br /&gt;&lt;br /&gt;To my rescue, I've found the nifty binary file class from Jeff Heaton: &lt;a href="http://www.heatonresearch.com/articles/22/page2.html"&gt;http://www.heatonresearch.com/articles/22/page2.html  &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's simple and perfect. Far better than the code I used in my previous projects. To handle Unicode strings I read each byte of the Unicode string onto a byte buffer and then use a Java command to convert it properly:&lt;br /&gt;&lt;br /&gt;Grabbing the byte sequence of the string:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;          &lt;br /&gt;            rgbData = new byte[Data];&lt;br /&gt;            for (int i = 0; i &lt; rgbData.length; i++){&lt;br /&gt;                rgbData[i] = (byte) bin.readByte();&lt;br /&gt;                if ((rgbData[i]==0)&amp;&amp;(rgbData[i-1]==0))&lt;br /&gt;                    break;&lt;br /&gt;            }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Converting to plain string:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;String output = new String(rgbData, "UTF-8");&lt;/blockquote&gt;&lt;br /&gt;--------------------------&lt;br /&gt;&lt;br /&gt;But my biggest trouble was the fact that the file version was not kept inside the PE header itself. The file version for DLL, EXE, OCX, DRV, SCR and similar files is kept inside a resource on the file. &lt;span style="font-style: italic;"&gt;(Thanks to TheK on boot-land for helping me sort this detail: h&lt;a href="http://www.boot-land.net/forums/index.php?showtopic=11890"&gt;ttp://www.boot-land.net/forums/index.php?showtopic=11890&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, besides implementing the PE header reading part, it was also necessary to implement all the logic to correctly interpret resources inside executables.&lt;br /&gt;&lt;br /&gt;For my luck, this format is extensively documented around the Internet and even MS itself has released official documentation that explains (to some extent) how the structures should be read.&lt;br /&gt;&lt;br /&gt;Nevertheless, it took me far longer than initially expected. I had planned for a full day of work and ended up working 3 days to achieve this goal. The code itself is not optimized for speed but for the moment it will suffice the needs of the prototype.&lt;br /&gt;&lt;br /&gt;I've tested both with DLL's from the Windows kernel and custom executables from other compilers that had inclusively been modified with UPX - the exe compressor.&lt;br /&gt;&lt;br /&gt;It was a good adventure. I've learned far more than what I originally knew about the binary format of windows executable files and this added knowledge might certainly open the "window" for other adventures in the future.&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/57700989516441543-1695435084734005874?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1695435084734005874/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/reading-file-version-from-windows-exe.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1695435084734005874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1695435084734005874'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/07/reading-file-version-from-windows-exe.html' title='Reading the file version from Windows EXE and DLL files.'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eCmZQ6ULvRo/TDhVoZfFpqI/AAAAAAAAA_Y/TDUv_Iq3nsQ/s72-c/get_image.php.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8211150374875980706</id><published>2010-06-13T18:18:00.005Z</published><updated>2010-06-13T18:33:59.228Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='Mac OSX'/><title type='text'>Making Java apps look good in Mac OSX</title><content type='html'>Mac OS comes bundled with Java already installed by default and strives to make the user interface easy for users.&lt;br /&gt;&lt;br /&gt;However, for those that like coding Java applications it might seem like a daunting task to make it look user friendly. If we were coding a platform specific application, we'd just select an icon to include at runtime and be done with it.&lt;br /&gt;&lt;br /&gt;But in java - it's just too complicated and most pages about this topic that I stumbled upon were not really shedding much light on the matter.&lt;br /&gt;&lt;br /&gt;Eventually, I discovered that Mac OS by default also includes some nifty tools to solve this matter.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eCmZQ6ULvRo/TBUkfH1FkZI/AAAAAAAAA-g/-F4nJTu2DRg/s1600/jbbuildinformation.gif"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 400px; height: 355px;" src="http://1.bp.blogspot.com/_eCmZQ6ULvRo/TBUkfH1FkZI/AAAAAAAAA-g/-F4nJTu2DRg/s400/jbbuildinformation.gif" alt="" id="BLOGGER_PHOTO_ID_5482328238489702802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There is a life-saver application called "Jar Bundler" and you can find it inside the /Developer/Applications/Utilities folder within the Mac OS. I've found it on this page: &lt;a href="http://developer.apple.com/mac/library/documentation/Java/Conceptual/Jar_Bundler/Packaging/Packaging.html"&gt;http://developer.apple.com/mac/library/documentation/Java/Conceptual/Jar_Bundler/Packaging/Packaging.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;Using this tool is a snap, open it up, select the Jar file that you intend to run and select an icon.&lt;br /&gt;&lt;br /&gt;Before clicking on "Create application", you will need to choose a folder that will serve as base for your application. My advice is to pick an empty folder inside the desktop.&lt;br /&gt;&lt;br /&gt;-------------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Other tweaks: &lt;/span&gt;&lt;br /&gt;You can click on the "Set working directory to inside application package" to ensure that any files that your jar creates are kept inside the package (to keep it nice and tidy).&lt;br /&gt;&lt;br /&gt;The icon format used by this tool is .icns but don't worry, you can use the online service at &lt;a href="http://iconverticons.com/"&gt;http://iconverticons.com/&lt;/a&gt; to convert the file without any pain. If you want to make your image transparent, just open it on gimp, click on "Colors" --&gt; "Colors to Alpha" and then "Ok". If you save the image as .png then it will be lossless and preserve transparency.&lt;br /&gt;&lt;br /&gt;That's all. Hope this tip help others creating good looking apps with Java for OSX.&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/57700989516441543-8211150374875980706?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8211150374875980706/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/06/making-java-apps-look-good-in-mac-osx.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8211150374875980706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8211150374875980706'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/06/making-java-apps-look-good-in-mac-osx.html' title='Making Java apps look good in Mac OSX'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_eCmZQ6ULvRo/TBUkfH1FkZI/AAAAAAAAA-g/-F4nJTu2DRg/s72-c/jbbuildinformation.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8871215762966215479</id><published>2010-06-02T14:23:00.004Z</published><updated>2010-06-02T14:39:29.827Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='MS'/><title type='text'>http://msubuntu.com</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TAZsvoQL_yI/AAAAAAAAA-Q/MjXAjanRSRw/s1600/Logoubuntu.gif"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 119px; height: 137px;" src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/TAZsvoQL_yI/AAAAAAAAA-Q/MjXAjanRSRw/s200/Logoubuntu.gif" alt="" id="BLOGGER_PHOTO_ID_5478185562257751842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Over the last years I've been a sort of doom's day prophet in claiming that MS will eventually acquire Ubuntu sooner or later.&lt;br /&gt;&lt;br /&gt;The reason why I claim such statement is mostly because Ubuntu is really good at what they do and the desktop/server editions just get better and better at each 6 months.&lt;br /&gt;&lt;br /&gt;Many people think that Microsoft is the all-time enemy of Linux but in reality Microsoft was once the biggest provider of Unix operative systems even before Linux was born.&lt;br /&gt;&lt;br /&gt;This was at the time of Xenix, a licensed Unix version that was leased to other companies for deployment in organizations. In many ways, MS contributed to make Unix better and later went to write their own history with MS-DOS and Windows (all genres).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, Ubuntu seems to pick on the same characteristics that made windows a platform that everyone could use for their daily work along with any other enterprise tasks.&lt;br /&gt;&lt;br /&gt;They're quite different from any of the other Linux flavors in the sense that the focus is given on making a pleasant desktop for users and instead of pleasant users to desktop.&lt;br /&gt;&lt;br /&gt;I can't forget the endless times when I needed to edit a pesky xorg.conf to &lt;span style="font-style: italic;"&gt;try&lt;/span&gt; getting my display to work correctly. In Ubuntu you see no such thing and that can only be a good thing for those who worked with older versions of linux.&lt;br /&gt;&lt;br /&gt;Microsoft cannot compete against an operative system that is provided at free of charge for their users but it can certainly acquire the company and profit from a leading position on the linux platforms as Canonical does at the moment.&lt;br /&gt;&lt;br /&gt;At the moment that a MS Ubuntu version appeared, in true fact I'd see many organizations adopting linux as their default server configuration just because of the MS label posted on the box.&lt;br /&gt;&lt;br /&gt;Inside a big organization, MS knows how to provide outstanding tools but let's face it: many times we need a simple server and paying a costly license is not a good motivator to use MS software.&lt;br /&gt;&lt;br /&gt;Maybe this would even become a good way to refresh MS's image from a monolithic empire that is falling down against other rivals such as Apple and Google to an open company that is embracing the future and human innovation.&lt;br /&gt;&lt;br /&gt;--------------&lt;br /&gt;&lt;br /&gt;So, I'm going one step further with my prophecy and acquired the domain &lt;a href="http://msubuntu.com/"&gt;http://msubuntu.com&lt;/a&gt; to post my thoughts and hopes for this future to occur one day.&lt;br /&gt;&lt;br /&gt;Perhaps more people out there also think this might become a real scenario some day and join me there, would be nice to see this happen.&lt;br /&gt;&lt;br /&gt;Crossing my fingers..&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/57700989516441543-8871215762966215479?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8871215762966215479/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/06/httpmsubuntucom.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8871215762966215479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8871215762966215479'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/06/httpmsubuntucom.html' title='http://msubuntu.com'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/TAZsvoQL_yI/AAAAAAAAA-Q/MjXAjanRSRw/s72-c/Logoubuntu.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5492784429880569764</id><published>2010-06-02T14:15:00.002Z</published><updated>2010-06-02T14:23:15.968Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='yEd'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='UML editor'/><title type='text'>yEd - a hidden gem for those who need a simple and free diagram editor</title><content type='html'>I've been a long time fan of Dia.&lt;br /&gt;&lt;br /&gt;Both the Windows and Ubuntu version worked good enough to suffice my diagram needs.&lt;br /&gt;&lt;br /&gt;I just turn it on and place all the diagrams into position to later paste them onto any document. Some people like Visio better and I'm sure it is, but my interest was in using a freeware tool that didn't required a license for something that I deemed as very simple.&lt;br /&gt;&lt;br /&gt;Well.. there is no Dia for Mac. There is an expensive replacement for Visio on OSX but I'm still interested in good and free solutions.&lt;br /&gt;&lt;br /&gt;Looking around the web I've stumbled on a very neat application: yEd.&lt;a href="http://www.yworks.com/en/products_yed_about.html"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.yworks.com/img/screenshots/yedscreen27_thumb.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 200px; height: 125px;" src="http://www.yworks.com/img/screenshots/yedscreen27_thumb.png" alt="" border="0" /&gt;&lt;/a&gt;This graph editor is simply perfect for my needs. Runs in Java and I could start right away for a try without installing it on my machine. The design is very intuitive and thought there are some things that might take one hour or two to get used - it is very easy to use without the need to read any sort of manual.&lt;br /&gt;&lt;br /&gt;That's the type of program that I like, free and simple.&lt;br /&gt;&lt;br /&gt;This editor can handle UML and a lot of goodies that someone in software development will surely enjoy.&lt;br /&gt;&lt;br /&gt;If you're in need for a simple diagram editor, you find it here:&lt;br /&gt;&lt;a href="http://www.yworks.com/en/products_yed_about.html"&gt;http://www.yworks.com/en/products_yed_about.html&lt;/a&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/57700989516441543-5492784429880569764?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5492784429880569764/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/06/yed-hidden-gem-for-those-who-need.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5492784429880569764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5492784429880569764'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/06/yed-hidden-gem-for-those-who-need.html' title='yEd - a hidden gem for those who need a simple and free diagram editor'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6970472745119616895</id><published>2010-05-25T21:35:00.004Z</published><updated>2010-05-25T21:58:19.146Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>nuno vs the CVS plugin on eclipse</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eCmZQ6ULvRo/S_xHSfSiFCI/AAAAAAAAA-I/CgkrXyDdAco/s1600/eclipse.gif"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 132px;" src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/S_xHSfSiFCI/AAAAAAAAA-I/CgkrXyDdAco/s200/eclipse.gif" border="0" alt="" id="BLOGGER_PHOTO_ID_5475329629938127906" /&gt;&lt;/a&gt;&lt;br /&gt;If you're an Eclipse user, you probably already noticed how CVS comes as a plugin already available on the default package.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This is nice and neat to set up a new install and grab your projects without further worries.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;On my case, that was the nice type of experience that I had when installing eclipse for the first time on my work laptop, a mac.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Things went smoothly, I got online to grab the documents from the CVS and no worries whatsoever. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;However, my nightmare started when after a few days I've started eclipse and the CVS would simply refuse to work for no apparent reason. I know that at this point someone would say: "there is no such thing as no apparent reason" - and in true honesty I agree but have no clues about what changed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This issue started in last February.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've tried to solve this annoyance in numerous ways, first by uninstalling eclipse and reinstalling, then I tried the cocoa version of eclipse to see if it work differently and finally resorted to the world wide web.. to no avail on this case.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Using eclipse started to become a real nuisance. Tried asking some opinions to experts but none would come to the rescue, the most common advice: use a PC.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;It just seemed that I couldn't get eclipse back to factory defaults: darn mac.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Well.. I'd be happy in using an operative system that would make my life simple but I'm also too stubborn by nature to quit from my intent of solving this trouble.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;From February to this part I've reached a stalemate in my quest. I managed to get CVS access from Eclipse but the downside was the fact that I was using a fork from the eclipse project called "EasyEclipse" (&lt;a href="http://www.easyeclipse.org/"&gt;http://www.easyeclipse.org&lt;/a&gt;)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was indeed "easy" to use but it was also seriously outdated from the current stable version of Eclipse. This week become problematic to use an older Eclipse version because my team will all be using the stable version to ensure that everyone has the same environment. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Wish I could complain but it was guy who wrote the default environment documentation and there was simply no other way around other than facing my issue with CVS once for good.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And today: &lt;b&gt;rejoice!&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've discovered how to solve this CVS nuisance. A lot of people know how to install plugins from within Eclipse. But what few people probably know is how we can also uninstall them just as well.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And uninstall I did..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'll share this little secret: Click "Help" -&gt; "Install new software" -&gt; "Already installed" -&gt; select "Eclipse CVS client" -&gt; click "Uninstall"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After this, just restart eclipse and install CVS again from the default eclipse repositories.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So simple to fix and so many headaches to find the solution... &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;:)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&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/57700989516441543-6970472745119616895?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6970472745119616895/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/nuno-vs-cvs-plugin-on-eclipse.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6970472745119616895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6970472745119616895'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/nuno-vs-cvs-plugin-on-eclipse.html' title='nuno vs the CVS plugin on eclipse'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/S_xHSfSiFCI/AAAAAAAAA-I/CgkrXyDdAco/s72-c/eclipse.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3179318330057782397</id><published>2010-05-15T17:50:00.004Z</published><updated>2010-05-15T18:02:46.351Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='virusremoval.pro'/><category scheme='http://www.blogger.com/atom/ns#' term='boot-land.net'/><title type='text'>virusremoval.pro begins</title><content type='html'>Yesterday I've announced the &lt;a href="http://virusremoval.pro/"&gt;virus removal&lt;/a&gt; community forum across the good people of &lt;a href="http://boot-land.net/"&gt;boot land&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The feedback response was surprisingly good. The site had been started little over four weeks ago and counted with an average of 100 daily visitors, yesterday we've peaked at over 1200 unique visitors.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_eCmZQ6ULvRo/S-7gS6593lI/AAAAAAAAAWs/Llw9BXgmnEU/s1600/stat.png"&gt;&lt;br /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img688.imageshack.us/img688/7558/statg.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 633px; height: 262px;" src="http://img688.imageshack.us/img688/7558/statg.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This kind of response is truly motivating. The quality level of the ongoing discussions is also very good, there is a lot to be learned and we do have the conditions to give malware authors a really bad headache.&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/57700989516441543-3179318330057782397?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3179318330057782397/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/virusremovalpro-begins.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3179318330057782397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3179318330057782397'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/virusremovalpro-begins.html' title='virusremoval.pro begins'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1385698299398400256</id><published>2010-05-15T05:06:00.007Z</published><updated>2010-05-15T16:23:37.527Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='free'/><category scheme='http://www.blogger.com/atom/ns#' term='godaddy'/><category scheme='http://www.blogger.com/atom/ns#' term='google apps'/><category scheme='http://www.blogger.com/atom/ns#' term='email redirection'/><title type='text'>Email robustness</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eCmZQ6ULvRo/S-4xIXBQnQI/AAAAAAAAAWc/Qe61zBW-FGY/s1600/images.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 117px; height: 117px;" src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/S-4xIXBQnQI/AAAAAAAAAWc/Qe61zBW-FGY/s200/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5471364616989744386" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Ever since I've first got my own personal domain as http://nunobrito.eu some years ago it became possible to use my official email address as mail@nunobrito.eu&lt;br /&gt;&lt;br /&gt;Instead of having several mailboxes I've decided to concentrate them all at my gmail account using email redirection.&lt;br /&gt;&lt;br /&gt;It's simple, worked well.&lt;br /&gt;&lt;br /&gt;However, the server where my domain is hosted would often become offline for several days in a row due to the sheer amount of people trying to access the other services hosted there.&lt;br /&gt;&lt;br /&gt;This brought me for the first time to a fragile situation because I would no longer be receiving emails while the server remained offline.&lt;br /&gt;&lt;br /&gt;I've devised a manner to provide email robustness at no extra costs and without requiring a server.&lt;br /&gt;&lt;br /&gt;It's very simple.&lt;br /&gt;&lt;br /&gt;- The first step is registering your domain with goddady. If you've already registered with their service then it's fine, otherwise I'd seriously recommend moving to this particular registrar.&lt;br /&gt;&lt;br /&gt;- Then register for google apps standard edition: &lt;a href="http://www.google.com/apps/intl/en/group/index.html"&gt;http://www.google.com/apps/intl/en/group/index.html&lt;/a&gt;&lt;br /&gt;Input your domain as the domain that will host the apps, don't worry because this won't mix with your site in case you already have it developed.&lt;br /&gt;&lt;br /&gt;- After registering your domain with google apps, look on this page regarding how to configure the mx records at godaddy: http://www.google.com/support/a/bin/answer.py?hl=en&amp;amp;answer=33353&lt;br /&gt;&lt;br /&gt;But my favorite part is this automatic tool to do it quickly: &lt;a href="https://www.godaddy.com/gdshop/google/gmail_login.asp"&gt;https://www.godaddy.com/gdshop/google/gmail_login.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The above link will automatically configure your domain to use gmail as the mail service.&lt;br /&gt;&lt;br /&gt;- At this point the email is handled by google apps, let's manage your site:&lt;br /&gt;&lt;a href="https://www.google.com/a/cpanel/example.com"&gt;https://www.google.com/a/cpanel/example.com&lt;/a&gt; (change example.com with your domain)&lt;br /&gt;&lt;br /&gt;- After login, click on "Email"&lt;br /&gt;&lt;br /&gt;- Click on "Change URL" and select the URL that is hosted by google so that you don't need to use your own domain to log onto the webmail service.&lt;br /&gt;&lt;br /&gt;- Click "Email addresses" and then add a user.&lt;br /&gt;&lt;br /&gt;- Select a user listed there and add "nicknames" to the user. This means the possible email addresses that will be used to route the messages.&lt;br /&gt;&lt;br /&gt;- Log onto the webmail service and set the routing of all messages onto anywhere you want, just like you would do with a normal gmail account.&lt;br /&gt;&lt;br /&gt;- Done!&lt;br /&gt;&lt;br /&gt;You are now routing all your messages sent to your official email address onto anywhere else you need.&lt;br /&gt;&lt;br /&gt;Good luck.&lt;br /&gt;&lt;br /&gt;--------------------&lt;br /&gt;&lt;br /&gt;Now my official email is robust and no longer depending on any server.&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/57700989516441543-1385698299398400256?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1385698299398400256/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/email-robustness.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1385698299398400256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1385698299398400256'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/email-robustness.html' title='Email robustness'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/S-4xIXBQnQI/AAAAAAAAAWc/Qe61zBW-FGY/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-965631497128297752</id><published>2010-05-14T02:39:00.006Z</published><updated>2010-05-14T04:47:37.931Z</updated><title type='text'>Back to my roots</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/S-y9CbpUkTI/AAAAAAAAAWQ/aBIpxUOqScU/s1600/k1524369.jpg"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 123px; height: 123px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/S-y9CbpUkTI/AAAAAAAAAWQ/aBIpxUOqScU/s200/k1524369.jpg" alt="" id="BLOGGER_PHOTO_ID_5470955496826769714" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is my final week in Pittsburgh. I've completed the second semester just like all other students from the MSE program.&lt;br /&gt;&lt;br /&gt;Pittsburgh was really nice but now it's time to return onto Portugal where the remaining two semesters will last until December.&lt;br /&gt;&lt;br /&gt;I should be happy now. The most difficult times should have passed and things from here forward should actually be more fun: I'll be coding and creating the studio project that we have been planning for so such a long time now.&lt;br /&gt;&lt;br /&gt;However, I'm not happy. Returning to Portugal means a direct confrontation with the army in my country. From my relatives I can only gather some whispers and rumors. Even my lawyer is mute as the stormy days approach the road ahead.&lt;br /&gt;&lt;br /&gt;Upon the idea of returning to my roots I feel similar to a small kid returning home after doing something wrong and afraid of a reprimand from his father.&lt;br /&gt;&lt;br /&gt;And in fact, the army is still like family to me. They helped me as a teenager when the future was not promising, providing the tools, resources and discipline necessary to survive.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now it's time to discover the world outside my "adopted family" even if it means facing the anger or disappointment of those that expected me to continue in the same career.&lt;br /&gt;&lt;br /&gt;But this path is not easy. Usually I don't get tired, I might get exhaust and need to sleep for a good night or even get a good coffee to start a fresh day, but right now I'm just getting tired of all these obstacles.&lt;br /&gt;&lt;br /&gt;Guess I need to remind myself that we all have a purpose and I'm still defending what I believe to be correct.&lt;br /&gt;&lt;br /&gt;I might not be happy about the future but I'm certainly happy to have reached this far in my goals for life.&lt;br /&gt;&lt;br /&gt;Even if I could go back to the past and be faced with the same decisions, I'd still do them. Wouldn't trade the knowledge, people and memories for anything less than a chance of truly start living with freedom of choice.&lt;br /&gt;&lt;br /&gt;And having a choice really makes me smile.&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/57700989516441543-965631497128297752?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/965631497128297752/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/back-to-my-roots.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/965631497128297752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/965631497128297752'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/back-to-my-roots.html' title='Back to my roots'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/S-y9CbpUkTI/AAAAAAAAAWQ/aBIpxUOqScU/s72-c/k1524369.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6371012648304799938</id><published>2010-05-11T01:13:00.008Z</published><updated>2010-05-11T20:02:14.613Z</updated><title type='text'>Can our legacy outlive us?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_eCmZQ6ULvRo/S-m2Vri0g5I/AAAAAAAAAWA/lKGpOJSsN-E/s1600/time.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 200px; height: 200px;" src="http://2.bp.blogspot.com/_eCmZQ6ULvRo/S-m2Vri0g5I/AAAAAAAAAWA/lKGpOJSsN-E/s200/time.jpg" alt="" id="BLOGGER_PHOTO_ID_5470103706000458642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Thought this is sort of a tabu matter, no software developer or  webmaster likes to wonder about what will happen when they are no longer  around to assure the survival of their legacy works.&lt;br /&gt;&lt;br /&gt;Unfortunately, I'm already forced to think about these matters due to  certain attributes and choices of my life that might shorten my  available time span to take care of them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Over the years, I've done software and helped raising websites with  people that now depend on my direct support to keep things going on  daily basis.&lt;br /&gt;&lt;br /&gt;Every now and then a new situation appears that needs to be solved.  Today one of the subdomains was reported as hosting a malicious page,  meaning that someone from the outside managed to break our perimeter  defenses and use our server for their malicious purposes.&lt;br /&gt;&lt;br /&gt;Our server was automatically shutdown by the hosting provider until I  could talk with them and remove the malicious page.&lt;br /&gt;&lt;br /&gt;I love keeping things tidy and running well but I'm certain that when  I'm no longer around to assure this type of service, few other guys will  be available or willing to carry forward the needed support to provide  the things that we achieved over the years.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It would be unfair to so many that trusted in us as guardians of their  knowledge to fail in this task. Websites like boot-land.net and projects  for winbuilder deserve to endure long after the initial authors and  patricians are long gone.&lt;br /&gt;&lt;br /&gt;My own memories, hosted at nunobrito.eu are also depending on my own  administration to be available.&lt;br /&gt;&lt;br /&gt;This is clearly a solution that cannot last for centuries to come. One  idea would be moving to the platform of a bigger provider like google,  yahoo, microsoft, flickr or facebook.&lt;br /&gt;&lt;br /&gt;But none of them work will likely work like we need. Anything hosted on  their platforms is outside our own management and can be lost at any  given moment.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;How to solve this?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Thought a complete automation and debugging of issues that occur is  never possible to achieve, it is possible to prepare the path and  mechanisms to allow others to follow our steps and also ensure that this  process is simple to keep things moving.&lt;br /&gt;&lt;br /&gt;--------------------&lt;br /&gt;&lt;br /&gt;The first worries are costs that are divided between hosting costs and  domain renewals.&lt;br /&gt;&lt;br /&gt;To support these costs, the publicity gathered from the bigger sites is  currently enough to keep the site self-sufficient.  Revenue from  publicity is directly deposited on a specific paypal account and is  driven from two separate advertising channels to ensure redundancy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The first step to solve the matter of domain renewal is concentrating  all domains on the same registrar (I've chosen godaddy as they are the  leading provider of this service). This is not as simple as it seems,  the most important domains such as winbuilder.net and boot-land.net are  hosted on dominios.pt that are aggressive about domain transfers. Will  try to solve this.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The second step is automating the renewal process. Currently, as paypal  is the standard web payment tool, I can automate the automatic withdraw  of funds to keep registrars happy.&lt;br /&gt;&lt;br /&gt;Once the domain renewals are solved I will focus on the hosting plans.  Currently we have two servers. One of them is directly sponsored by  R1Soft. Unfortunately I'm unable to get in contact with them to transfer  the sponsoring to the second server that has far better conditions than  the first.&lt;br /&gt;&lt;br /&gt;At the current state we are having a server that is expensive (110  USD/month) and barely used along with the new server that costs around  140 USD/month.&lt;br /&gt;&lt;br /&gt;The most problematic situation is the new server. 140 USD/month cannot  be payed from paypal. This bill needs to be settled with a credit card  or direct bank transfer from an account located in Germany. The problem  is that credit cards have a limit date on years that are valid. This is  not a solution that will last for long since we'll always be vulnerable to a lack of payments on the bank account that is used for this purpose.&lt;br /&gt;&lt;br /&gt;Contacting the hosting company to support paypal as revealed itself a  fruitless effort. They are afraid of paypal and will only keep the  traditional payments.&lt;br /&gt;&lt;br /&gt;There's a saying in Portugal: "If maome doesn't go to the mountain then  the mountain will go to maome". Guess the next logical step is opening a  bank account in Germany. Being an european citizen and having good  friends in Germany it shouldn't be too difficult thought I'm not yet  sure if it is possible.&lt;br /&gt;&lt;br /&gt;From this point it would be needed to ensure that paypal transfers  enough revenue onto the german account at each month.&lt;br /&gt;&lt;br /&gt;One thing is certain, without assuring hosting bills to be paid  flawlessly our projects will be vulnerable to extinction.&lt;br /&gt;&lt;br /&gt;--------------------------------------&lt;br /&gt;&lt;br /&gt;Assuring a good flow between expenses and revenues is essential. But  unfortunately this isn't something that a software engineer can code as a  program to be compiled and executed.&lt;br /&gt;&lt;br /&gt;We will always need a human operator to ensure that things keep running  even when something unexpected occurs. So, the challenge is preparing  the management of our financial balance to someone of trust. But how can we  asses if someone is truly trustworthy for this task?&lt;br /&gt;&lt;br /&gt;Too many open variables at this time to properly solve this challenge,  guess we'll need to use a credit card for the next 2~3 years and renew this  value at each year until a new hosting provider is found or otherwise really open a german account to get this settled.&lt;br /&gt;&lt;br /&gt;----------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The second point is server administration. How and where can we find  people capable of managing our servers?&lt;br /&gt;&lt;br /&gt;The technology is fairly standard but none of the servers follows  traditional implementations, they were customized for speed and  performance when subdued to heavy loads or special behaviors by  winbuilder projects.&lt;br /&gt;&lt;br /&gt;I know how to get things working, how can others learn to do the same?&lt;br /&gt;&lt;br /&gt;It would be nice to completely outsource winbuilder projects to run from  other service providers and ease our administration tasks but who would  be willing to support terabytes of demand per month and providing  gigabytes of space on their disks?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Things are not easy for us but none of the folks at boot-land quit when  faced with challenges nor will I quit from finding a decent solution  while I'm still here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When considering all the adversities required to ensure that our legacy can  outlive us in the Internet, most people would say that we are simply  outnumbered.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And perhaps they are right. The odds of ensuring that so many different  services with such complex characteristics survive the endurance of time  is simply nuts.&lt;br /&gt;&lt;br /&gt;But having strong odds against this endeavor doesn't make it impossible  to achieve. With a good strategy we might just be able to use our own  resources to reach the expected results.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There is no way of supporting the costs of renting the services from a cloud computing hosting or hiring specialized support personnel. Given all these constraints we might as well dive into building our own robust cloud and administration solution to allow our legacy survive in years to come.&lt;br /&gt;&lt;br /&gt;We wouldn't just be reinventing the wheel, we'd be redefining a whole new vehicle to take us where we need to go.&lt;br /&gt;&lt;br /&gt;Perhaps this is indeed nuts but a worthy challenge as nobody else seems (yet) be considering this type of issue and we do have a tradition of moving ahead of the game..&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/57700989516441543-6371012648304799938?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6371012648304799938/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/can-our-legacy-outlive-us.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6371012648304799938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6371012648304799938'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/can-our-legacy-outlive-us.html' title='Can our legacy outlive us?'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_eCmZQ6ULvRo/S-m2Vri0g5I/AAAAAAAAAWA/lKGpOJSsN-E/s72-c/time.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3721853660083035372</id><published>2010-05-09T21:54:00.007Z</published><updated>2010-05-09T23:45:44.765Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='romans'/><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>Are we romans?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eCmZQ6ULvRo/S-c49sXTpBI/AAAAAAAAAV0/nPG3f8iYbr0/s1600/imperial-roman-helmet-8112.jpg"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 175px; height: 200px;" src="http://3.bp.blogspot.com/_eCmZQ6ULvRo/S-c49sXTpBI/AAAAAAAAAV0/nPG3f8iYbr0/s200/imperial-roman-helmet-8112.jpg" alt="" id="BLOGGER_PHOTO_ID_5469402904996848658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For a long time, Europe lived under the rules of the Roman republic and later, the Roman empire.&lt;br /&gt;&lt;br /&gt;Throughout this time, roads were built and civilization was brought to places where the people previously had habits not too distant from those on the ice age.&lt;br /&gt;&lt;br /&gt;Roman civilization meant education, health and wealth to those who embraced roman culture as a way of exchanging goods and traveling in security to other provinces.&lt;br /&gt;&lt;br /&gt;However, the West Roman empire where France, Germany, Portugal, Spain and Italy exist today was progressively torn apart across the centuries by successive invasions of barbarians from the Northern parts of Europe until the roman empire in the west ceased to exist, marking the start of the medieval ages as we know them.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This remark in history is a true contrasense. If at one hand we had such an advanced culture in terms of technology, culture and organization - what went wrong to let the barbarians took over?&lt;br /&gt;&lt;br /&gt;The explanation is plain brute force from the barbarians and faulty roman policies in terms of administration.&lt;br /&gt;&lt;br /&gt;We see the roman history filled with heroes that shaped the republic and empire to success and falls across the ages, yet, even the barbarians admired the roman culture and attempted to replicate the same level of culture to no avail most times.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;What can we learn as a lesson of history?&lt;br /&gt;&lt;br /&gt;Civilized cultures are not prepared enough to survive against brute force threats from the outside or even weak management policies.&lt;br /&gt;&lt;br /&gt;We see the same issues plaguing computer systems nowadays. Computer users attempt to secure their own machines from outside threats but are unable (or unwilling) to keep them tidy with effective security policies.&lt;br /&gt;&lt;br /&gt;The barbarians are today's malware authors that use conquered computers as slaves to power monstrously sized botnets that serve as weapons to attack companies and organizations across the globe.&lt;br /&gt;&lt;br /&gt;This is the reality today. We have barbarians and we have civilized citizens trying to work. But we still have little means to fight back the threats and propose truly efficient methods to fight them back, instead, we rely in defense and few actions are taken to go after the wrong doers.&lt;br /&gt;&lt;br /&gt;Looking to where we are headed, will we let history repeat itself with the fall of a civilized Internet?&lt;br /&gt;&lt;br /&gt;I think we should learn from the lessons of the past that we cannot close our eyes to the enemies at the border and expect that our own organization will be able of solving these menaces some day.&lt;br /&gt;&lt;br /&gt;So, I would like to propose a roman-like concept of cooperative defense for the internet world.&lt;br /&gt;&lt;br /&gt;Back in the old days we would see farmers picking up anything at their hand to defend their lands. This reality is not far from today where computer users install antivirus at their machines to keep them protected.&lt;br /&gt;&lt;br /&gt;However, would it sound reasonable for you that a farmer is truly capable of defending himself against an aggressive tribe of barbarians that are professional hackers?&lt;br /&gt;&lt;br /&gt;Something is truly wrong in this picture. Over the next months I will dedicate my effort to prove that we can indeed be romans. Prove that civilized people can fight back the attacks from barbarians and level the weights on each side of fence.&lt;br /&gt;&lt;br /&gt;Let's begin.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-3721853660083035372?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3721853660083035372/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/are-we-romans.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3721853660083035372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3721853660083035372'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/are-we-romans.html' title='Are we romans?'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eCmZQ6ULvRo/S-c49sXTpBI/AAAAAAAAAV0/nPG3f8iYbr0/s72-c/imperial-roman-helmet-8112.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7619356960692979798</id><published>2010-05-03T12:32:00.006Z</published><updated>2010-05-03T12:49:53.057Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMU'/><category scheme='http://www.blogger.com/atom/ns#' term='Pittsburgh'/><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>Finishing up the second semester</title><content type='html'>It's been 4 months since I've arrived to the States and now it's time to go.&lt;br /&gt;&lt;br /&gt;Pittbusrgh was very nice to me. The people, the university and the town were pleasant and welcomed me inside their traditions and culture, making me feel as part of this place instead of an outsider.&lt;br /&gt;&lt;br /&gt;I will soon finish the second semester and head back to Portugal but things won't be easy there.&lt;br /&gt;&lt;br /&gt;From an educational perspective I'll be working to implement our software engineering studio project and will also be doing an independent study proposal on a topic that was self-proposed.&lt;br /&gt;&lt;br /&gt;The tough part for me will be finding a place to stay, where to study and how to manage my situation with the Portuguese army alongside with balancing my financial status to ensure that I can support all these expenses.&lt;br /&gt;&lt;br /&gt;But things are moving forward and a lot of people are helping.  I can't predict what will happen next but at least I'm happy to still be studying and getting closer to complete another step in the MSE challenge.&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/57700989516441543-7619356960692979798?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7619356960692979798/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/finishing-up-second-semester.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7619356960692979798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7619356960692979798'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/finishing-up-second-semester.html' title='Finishing up the second semester'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-851297030713066666</id><published>2010-05-01T22:34:00.005Z</published><updated>2010-05-03T12:51:37.006Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='msfn.org'/><category scheme='http://www.blogger.com/atom/ns#' term='boot-land.net'/><title type='text'>Link exchange with MSFN</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eCmZQ6ULvRo/S9y01td-EAI/AAAAAAAAAUY/m3vQ18ov4z8/s1600/logo.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 200px; height: 77px;" src="http://3.bp.blogspot.com/_eCmZQ6ULvRo/S9y01td-EAI/AAAAAAAAAUY/m3vQ18ov4z8/s200/logo.png" alt="" id="BLOGGER_PHOTO_ID_5466442882552303618" border="0" /&gt;&lt;/a&gt;MSFN is one of the oldest and most respected sites when it comes to Microsoft discussions. It was created in 2002 with the purpose of sharing knowledge regarding how to tweak windows to work how fans intended.&lt;br /&gt;&lt;br /&gt;Over the years it has specialized on the customization of unattended windows installations,  some of the most popular tools that spawn from this forum are nLite and vLite that reached a global scale success.&lt;br /&gt;&lt;br /&gt;Boot Land started in 2006 when MSFN was already a giant in the Windows arena. Over the years we have also grown to the point where we have become giants in our own domain.&lt;br /&gt;&lt;br /&gt;MSFN and Boot Land have mutually exchanged links. To date, we are the only forums recommended on MSFN and we also come a long way to deserve such attention.&lt;br /&gt;&lt;br /&gt;My personal thanks to everyone who supports the boot land community!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-851297030713066666?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/851297030713066666/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/link-exchange-with-msfn.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/851297030713066666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/851297030713066666'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/link-exchange-with-msfn.html' title='Link exchange with MSFN'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eCmZQ6ULvRo/S9y01td-EAI/AAAAAAAAAUY/m3vQ18ov4z8/s72-c/logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6843420168782530418</id><published>2010-05-01T15:08:00.005Z</published><updated>2010-05-01T15:20:24.265Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='virusremoval.pro'/><title type='text'>Virus Removal Pro</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://img255.imageshack.us/img255/7777/virusremovalbutton.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 172px; height: 54px;" src="http://img255.imageshack.us/img255/7777/virusremovalbutton.png" alt="" border="0" /&gt;&lt;/a&gt;I've started a new project last week, it's a new community forum entitled "Virus Removal" that can be found at &lt;a href="http://virusremoval.pro/"&gt;http://virusremoval.pro&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Boot Land was and remains a success in terms of a community focused on the development of boot disks but I've been feeling that it is also time to expand to other themes that are also important and interesting to explore.&lt;br /&gt;&lt;br /&gt;Funny, but I've first started creating boot disks to repair my computer after it was attacked by a virus. So, in a good sense I can say that both activities have also been part of my routine ever since I was a kid.&lt;br /&gt;&lt;br /&gt;This new community has a lot of good things.&lt;br /&gt;&lt;br /&gt;I've used myBB as forum software, the strong point is that it won't require any costs with licenses since it is free, also, I can add plugins in a really easy manner that doesn't require editing any file. In overall it is a very simple and straightforward software to use.&lt;br /&gt;&lt;br /&gt;The domain itself is very easy to remember and straight to the point. Our forums at Boot Land are also being used to help kickstart the forum and bring new visitors.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Last but not least, virusremoval.pro already counts with the participation of valuable experts in this field.&lt;br /&gt;&lt;br /&gt;-------&lt;br /&gt;&lt;br /&gt;So, it seems we have all the right ingredients to start a good community that can actually contribute with something fresh and useful to people around the Internet.&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/57700989516441543-6843420168782530418?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6843420168782530418/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/virus-removal-pro.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6843420168782530418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6843420168782530418'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/virus-removal-pro.html' title='Virus Removal Pro'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6011911835617036746</id><published>2010-05-01T14:54:00.004Z</published><updated>2010-05-01T15:07:43.535Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='flippa.com'/><title type='text'>http://freeflippa.com donated to the owner of http://flippa.com</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.smartblogtips.com/wp-content/uploads/2009/06/flippa-marketplace-for-buying-and-selling-website.JPG"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 280px; height: 113px;" src="http://www.smartblogtips.com/wp-content/uploads/2009/06/flippa-marketplace-for-buying-and-selling-website.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Last year I started a project meant to provide a free alternative to the services provided by &lt;a href="http://flippa.com/"&gt;Flippa&lt;/a&gt;, a website dedicated to "website flipping", the art of selling websites that were just created.&lt;br /&gt;&lt;br /&gt;I've chosen the domain &lt;a href="http://freeflippa.com"&gt;http://freeflippa.com&lt;/a&gt; and shortly after opening the doors for this new site, the owner of flippa.com approached me by email with concerns about trademark assurance.&lt;br /&gt;&lt;br /&gt;Following the european laws, nothing would restrict me from using this specific website domain since it is not a trademark recognized in Europe or the States.&lt;br /&gt;&lt;br /&gt;Nevertheless, I'm not the type of person that enjoys "cybersquatting" and removed any resemblances on the site that would compete against the paid services provided by flippa.com&lt;br /&gt;&lt;br /&gt;Two days ago I've decided to clean up my portfolio of domains and remembered that I still had freeflippa. Decided to send an email to the owner of flippa and I've transferred freeflippa.com to his ownership at zero cost.&lt;br /&gt;&lt;br /&gt;Webmaster projects are very attractive to some extent but I guess that I'm just not cut for them.&lt;br /&gt;&lt;br /&gt;Will rather stick with software development, it was nevertheless another episode on my life to keep in memory.&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/57700989516441543-6011911835617036746?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6011911835617036746/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/httpfreeflippacom-donated-to-owner-of.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6011911835617036746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6011911835617036746'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/05/httpfreeflippacom-donated-to-owner-of.html' title='http://freeflippa.com donated to the owner of http://flippa.com'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5297752066684514420</id><published>2010-04-30T23:50:00.003Z</published><updated>2010-05-01T00:36:00.632Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='dedicated server'/><category scheme='http://www.blogger.com/atom/ns#' term='boot-land.net'/><title type='text'>New server!</title><content type='html'>A new server was added to power up our sites.&lt;br /&gt;&lt;br /&gt;The new machine is a brand new i7 server with 8 CPU cores and a whooping RAM of 24Gb running under Ubuntu x64.&lt;br /&gt;&lt;br /&gt;The configuration was a bit more problematic than expected. The older server had all domains managed with Plesk but this platform was not supported on the new hosting and I simply couldn't afford the added cost for a plesk license at each month.&lt;br /&gt;&lt;br /&gt;So, I've decided to try out the free alternatives to cPanel or Plesk. My attention was first tuned onto webmin and virtualmin since they allow to manage most aspects from a server quite easily.&lt;br /&gt;&lt;br /&gt;However, the management of virtual hosts under Apache soon turned out to be an headache to solve. Some bugs occurred and then it became very difficult to get things working as expected.&lt;br /&gt;&lt;br /&gt;Disappointed with Apache, I've turned my attention to Nginx as a web server. However, the lack of documentation and clear examples also led me to fail using it as expected.&lt;br /&gt;&lt;br /&gt;Last but not least, came lighttpd. It's reputation for performance is well know and I decided to give it a shot. It turns out that this server has reached a very mature and stable level of performance and was only an apt-get away from being installed on the machine.&lt;br /&gt;&lt;br /&gt;Out of the box came the support for PHP just like I needed. Adding a new virtual host is a task as simple as adding a new line on the configuration file and restarting the server.&lt;br /&gt;&lt;br /&gt;As for speed, boot-land.net is now loading at a blazing fast speed. Lighttpd is serving static files at a really great speed on a far faster server than ever before and I'm happy to see it working well.&lt;br /&gt;&lt;br /&gt;I still need to configure some other details. Luckily I didn't had any sites requiring mod_rewrite&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_eCmZQ6ULvRo/S9twAoDHgFI/AAAAAAAAAUQ/jCUXz8gfog0/s1600/Snapshot+2010-04-30+19-54-04.png"&gt;&lt;img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 320px; height: 266px;" src="http://3.bp.blogspot.com/_eCmZQ6ULvRo/S9twAoDHgFI/AAAAAAAAAUQ/jCUXz8gfog0/s320/Snapshot+2010-04-30+19-54-04.png" alt="" id="BLOGGER_PHOTO_ID_5466085728797032530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Attached is a screenshot of the new server in action, feels really good to see all works being distributed amongst the 8 cores with plenty of RAM to go about.&lt;br /&gt;&lt;br /&gt;The monthly costs for this server are really high, especially if we take  into consideration that the older server was fully sponsored by  R1soft for free and that now I'm supporting the new hosting costs on my own.&lt;br /&gt;&lt;br /&gt;But I  was unable to get in contact with them and the boot land sites were in  dire need for better conditions.&lt;br /&gt;&lt;br /&gt;Let the fun begin.&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/57700989516441543-5297752066684514420?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5297752066684514420/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/04/new-server.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5297752066684514420'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5297752066684514420'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/04/new-server.html' title='New server!'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_eCmZQ6ULvRo/S9twAoDHgFI/AAAAAAAAAUQ/jCUXz8gfog0/s72-c/Snapshot+2010-04-30+19-54-04.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7478423621966557940</id><published>2010-01-18T18:27:00.004-01:00</published><updated>2010-01-18T18:47:08.848-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DDOS'/><category scheme='http://www.blogger.com/atom/ns#' term='botnet'/><title type='text'>Bring on the bots..</title><content type='html'>We've been having a lot of fun over the past two weeks in our boot land server.&lt;br /&gt;&lt;br /&gt;It's been a long while since the last time we got offline for such a long period of time (2 years?), at the time it was imposed that we moved from a virtual shared server onto our fully dedicated server.&lt;br /&gt;&lt;br /&gt;At the time, our growth just seemed to keep going up like crazy and suddenly we were having thousands of visitors from all around the world looking for boot disk solutions.&lt;br /&gt;&lt;br /&gt;This was two years ago.&lt;br /&gt;&lt;br /&gt;Currently.. boot land grown onto thousands of daily visitors and terabytes of monthly information being exchanged from the server.&lt;br /&gt;&lt;br /&gt;We've been happy and busy working on the new things that appeared ever since. However, there is still one situation that is challenging our capacity to survive the test of time: bots.&lt;br /&gt;&lt;br /&gt;Given the current position of boot land as a popular site, we are experiencing a massive wave of zombie bot machines that visit our site and associated domains (winbuilder.net et al), causing our resources to be quickly depleted into what people would call as a DDOS. Typically, this is a good way to ensure that a competing site is sent for oblivion.&lt;br /&gt;&lt;br /&gt;And a strong DDOS it was indeed. The server was not prepared and a massive black out was installed for 5 days in a row.&lt;br /&gt;&lt;br /&gt;But.. we're alive. Sometimes slow it's true, but we're winning back our server to the bots that were send our way.&lt;br /&gt;&lt;br /&gt;So, if for any chances the person(s) behind this recent bot incursion wind up reading this blog post then do note one thing in particular about boot land: we're here to stay, bring on the bots.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-7478423621966557940?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7478423621966557940/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/01/bring-on-bots.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7478423621966557940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7478423621966557940'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/01/bring-on-bots.html' title='Bring on the bots..'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2098528398829739173</id><published>2010-01-13T03:27:00.006-01:00</published><updated>2010-01-13T03:42:33.827-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><category scheme='http://www.blogger.com/atom/ns#' term='Pittsburgh.'/><title type='text'>Isn't the snow fun?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/S01MGNdwM1I/AAAAAAAAALU/5Sw4Uw-ABYo/s1600-h/6708555_l_d7f1bc321ce1ea45f311154fabc444b2.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 177px; height: 133px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/S01MGNdwM1I/AAAAAAAAALU/5Sw4Uw-ABYo/s320/6708555_l_d7f1bc321ce1ea45f311154fabc444b2.jpg" alt="" id="BLOGGER_PHOTO_ID_5426076795628696402" border="0" /&gt;&lt;/a&gt;And I've arrived to Pittsburgh.&lt;br /&gt;&lt;br /&gt;The snow is everywhere, the cold as well but life is fresh as it hasn't been for a long while.&lt;br /&gt;&lt;br /&gt;Why? This is the first time that I actually saw real snow inside a city.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Temperatures remain below zero celsius and I've took these free days to visit the city and saw all type of things from America that I had only seen on television.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/S01M068dzKI/AAAAAAAAALc/jhhxkxDtWgM/s1600-h/IMG_4094.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 166px; height: 124px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/S01M068dzKI/AAAAAAAAALc/jhhxkxDtWgM/s320/IMG_4094.JPG" alt="" id="BLOGGER_PHOTO_ID_5426077598111091874" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Pittsburgh is a relatively small town when compared to others, but still sized enough to host the tallest buildings that I ever seen. And while writing this post I can only think: what a simple guy, never moved away from the village before, and in many aspects, it's true: living in small towns does carry some interesting advantages that I truly love.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;It's good to be here. A good time to shape up my English skills and try to see all there is to see around Pitt.&lt;br /&gt;&lt;br /&gt;Money also flies away from your pockets at an incredible speed, life is nowhere as affordable as I'd expect and simple things like lunch, dinner and coffee are pressing a tough toll on my savings.&lt;br /&gt;&lt;br /&gt;But well. I'm still adjusting and thinking a lot about the things back in Portugal. My employment is still an headache to solve, the savings to endure the following months are also a worry and top all this with the constant pressure to think about your work at the MSE program.&lt;br /&gt;&lt;br /&gt;Life is amazing, I seriously wouldn't imagine how it could change so much in less than 12 months and be here today.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2098528398829739173?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2098528398829739173/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2010/01/isnt-snow-fun.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2098528398829739173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2098528398829739173'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2010/01/isnt-snow-fun.html' title='Isn&apos;t the snow fun?'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/S01MGNdwM1I/AAAAAAAAALU/5Sw4Uw-ABYo/s72-c/6708555_l_d7f1bc321ce1ea45f311154fabc444b2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7238053592347543401</id><published>2009-12-24T09:26:00.011-01:00</published><updated>2010-01-13T23:41:57.520-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>The first MSE semester is completed!</title><content type='html'>16 weeks passed since we first began the classes in August.&lt;br /&gt;&lt;br /&gt;My life  took so many spins and turns between these weeks that I can hardly say anymore that I'm still the same person as I was 10 months ago, but, deep inside I don't think that I've really changed that much, what changed radically was the environment, the people and the challenges. The image that people had from "brito" in the past has changed to "nuno" but underneath the hood I'm still the same person.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/SzNOKpfATlI/AAAAAAAAAKg/0EGd6KFMTFo/s1600-h/IMG_4294.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 133px; height: 200px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/SzNOKpfATlI/AAAAAAAAAKg/0EGd6KFMTFo/s200/IMG_4294.JPG" alt="" id="BLOGGER_PHOTO_ID_5418760721498394194" border="0" /&gt;&lt;/a&gt;The course is tiring but for the first time in a long time I'm really having fun.&lt;br /&gt;&lt;br /&gt;Some of things that I enjoyed the most were the long nighters to get assignments done. Working at night in the computer department of Coimbra is simply inspiring, the whole atmosphere brings the right mood for creativity and I'll miss that.&lt;br /&gt;&lt;br /&gt;Contrary to what I believed, the first semester focused so much on communication and solving people related issues that we barely talked about anything programming related - it's interesting that when you learn to talk with others, software development becomes so much easier and you can actually start to focus on the things that really matter.&lt;br /&gt;&lt;br /&gt;It's not easy to live without a salary but costs are nevertheless balanced to some extent since we're in Coimbra and near to the family, contributing to seriously reduce my monthly expenses. My savings are still short but I'm working to improve them, one step at a time and things are still moving forward.&lt;br /&gt;&lt;br /&gt;I still have some free time to enjoy Christmas with my family and then all of our class will  fly to Pittsburgh in order to attend the second semester. A house has already been rented and my main worry for the moment is my job situation with my former employer. Somehow I have the feeling that things will get quite complicated within the next months.&lt;br /&gt;&lt;br /&gt;But things will work out, all it takes is a bit of faith in the future and ourselves.&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/57700989516441543-7238053592347543401?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7238053592347543401/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/12/of-first-mse-semester.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7238053592347543401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7238053592347543401'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/12/of-first-mse-semester.html' title='The first MSE semester is completed!'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/SzNOKpfATlI/AAAAAAAAAKg/0EGd6KFMTFo/s72-c/IMG_4294.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4726408647491936430</id><published>2009-11-22T12:23:00.005-01:00</published><updated>2009-11-22T13:36:20.803-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='winbuilder'/><title type='text'>WinBuilder Case Study 2009</title><content type='html'>I've published a small case study about WinBuilder in early 2009.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://boot-land.net/portal/images/WinBuilder.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 243px; height: 61px;" src="http://boot-land.net/portal/images/WinBuilder.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;It's a report that gives some background about the evolution and state of WinBuilder along with associated projects up to that time.&lt;br /&gt;&lt;br /&gt;This case study is mentioned at another paper report that I'm currently preparing and I think it would be nice to share this with other people interested in what we've doing with boot disks across the latest years.&lt;br /&gt;&lt;br /&gt;Unfortunately, I've been a bit absent from the latest improvements and this might become an issue if I decide to carry forward with a WinBuilder report for 2010 but we'll see how that goes.&lt;br /&gt;&lt;br /&gt;If you're interested in reading this case study, you're welcome to get it at the downloads section of my personal site: &lt;a href="http://nunobrito.eu/download.php?view.12"&gt;http://nunobrito.eu/download.php?view.12&lt;/a&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/57700989516441543-4726408647491936430?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4726408647491936430/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/11/winbuilder-case-study-2009.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4726408647491936430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4726408647491936430'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/11/winbuilder-case-study-2009.html' title='WinBuilder Case Study 2009'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1780514130441976090</id><published>2009-10-03T10:56:00.005Z</published><updated>2009-10-03T11:11:03.086Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='reviews'/><category scheme='http://www.blogger.com/atom/ns#' term='xmarks'/><category scheme='http://www.blogger.com/atom/ns#' term='boot-land.net'/><title type='text'>Show some Boot Land love.</title><content type='html'>The same company that created some years ago the popular foxmarks bookmarks plugin for firefox, has changed it's name to Xmarks and added some interesting services related to these bookmarking activities.&lt;br /&gt;&lt;br /&gt;One of them is the site rank option.&lt;br /&gt;&lt;br /&gt;Boot Land &lt;span style="font-style: italic;"&gt;(at the time of this blog post)&lt;/span&gt; is&lt;a href="http://www.xmarks.com/site/www.boot-land.net"&gt; ranked as #12&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This hardly seemed like a fair position so a message was passed along on the newsletter asking people to write in their words what was their opinion about the site.&lt;br /&gt;&lt;br /&gt;The result was great.&lt;br /&gt;&lt;br /&gt;We raised the number of reviews from 0 to 30 in less than a day, but more important than numbers was the &lt;a href="http://www.boot-land.net/forums/index.php?showtopic=9284"&gt;genuine opinion&lt;/a&gt; of people regarding how they saw this community.&lt;br /&gt;&lt;br /&gt;Here are some:&lt;br /&gt;&lt;span class="ugc"&gt;&lt;/span&gt;&lt;span class="ugc"&gt;&lt;/span&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;span class="ugc"&gt;Best talents around the globe are part of bootland. Bootland is always way ahead of others in terms of technological development in terms of boot disk. This is the only site i refer for any boot disk related issues.&lt;br /&gt;---&lt;br /&gt;&lt;/span&gt;&lt;span class="ugc"&gt;I discovered the Boot Land site only recently and I've been impressed by the comprehensiveness of their content. A worthwhile visit if you personally maintain your PC.&lt;br /&gt;---&lt;br /&gt;&lt;/span&gt;&lt;span class="ugc"&gt;&lt;/span&gt;&lt;span class="ugc"&gt;Bootland is very active with new updates, tools and scripts for keeping your set of rescue CD's up to date. They already have a Windows 7 boot project.&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Reading these reviews is a good motivation to keep working. Sometimes it's sad as I see the quality work of so many good developers pass unnoticed and forgotten but these reviews prove otherwise. It's worth continuing to work and improve the current state of things.&lt;br /&gt;&lt;br /&gt;We might not get a higher ranking than #12 but at the very least I'm sure that we rank #1 in the heart of everyone that is part of our community  and that's the sort of ranking that really matters.&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/57700989516441543-1780514130441976090?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1780514130441976090/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/10/show-some-boot-land-love.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1780514130441976090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1780514130441976090'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/10/show-some-boot-land-love.html' title='Show some Boot Land love.'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7497166183685303914</id><published>2009-09-25T23:38:00.006Z</published><updated>2009-10-17T15:31:54.555Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>5 weeks have passed!</title><content type='html'>Well.. five weeks passed from the expected 16 months of the intensive MSE program.&lt;br /&gt;&lt;br /&gt;And believe me that "intensive" is not even the most appropriate way to describe the stress hidden behind each week.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_pLngJ-mrDT8/SlLaK9dsSII/AAAAAAAAA6E/1qHamFFnTEU/S660/thepressureisgoodforyou_wid.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 269px; height: 126px;" src="http://4.bp.blogspot.com/_pLngJ-mrDT8/SlLaK9dsSII/AAAAAAAAA6E/1qHamFFnTEU/S660/thepressureisgoodforyou_wid.jpg" alt="" border="0" /&gt;&lt;/a&gt;The course is highly demanding. You're left with constant deadlines to deliver homeworks that seem to take forever to understand and complete in a satisfactory manner.&lt;br /&gt;&lt;br /&gt;We need to account the hours spent studying, last week I've passed over 60 hours studying and this doesn't reflect the lost sleep nights to get something done on time under pressure.&lt;br /&gt;&lt;br /&gt;It's been a very interesting experience and I'm nevertheless enjoying it very much.&lt;br /&gt;&lt;br /&gt;Some of the things that I like the most, is the way how students are expected to behave like professionals with some level of experience at any given moment of the program. There is no room to argue that you don't know how to achieve something. If you don't know how, then it's probably due to the lack of the research to learn how to get it done in the first place.&lt;br /&gt;&lt;br /&gt;My biggest difficulty is a class called MSS - Models of Software Systems. It involves a lot of maths &lt;span style="font-style: italic;"&gt;(my personal nemesis)&lt;/span&gt; and even though my performance is somewhat below the average, I'm still working my way to raise the level of efficiency up to the expected level.&lt;br /&gt;&lt;br /&gt;I'm also having some difficulty on other classes, my written evaluation of case studies and replies to reading questions are still not averaging a satisfactory level as well. I'm now spending a lot more hours trying to compose quality replies.&lt;br /&gt;&lt;br /&gt;Guess I'm a slow learner, I like to do things slowly and the fast pace of the course leaves little to breath let alone do things slowly.&lt;br /&gt;&lt;br /&gt;Well.. even the rate of my blog posts is a good sign of this lack of free time.. ;)&lt;br /&gt;&lt;br /&gt;But heck, this is exactly what I was expecting in the first place.&lt;br /&gt;&lt;br /&gt;This is a way of perfectly simulating how people who graduate from the MSE are expected to deal with stress and learn under tough conditions limited by time and constrained by an excess of work.&lt;br /&gt;&lt;br /&gt;I'm loving it and after 5 weeks of work, I'm already clueless regarding what is left to dazzle us during the next 60 weeks..&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/57700989516441543-7497166183685303914?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7497166183685303914/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/09/5-weeks-have-passed.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7497166183685303914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7497166183685303914'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/09/5-weeks-have-passed.html' title='5 weeks have passed!'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_pLngJ-mrDT8/SlLaK9dsSII/AAAAAAAAA6E/1qHamFFnTEU/s72-c/thepressureisgoodforyou_wid.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-8706714542795779654</id><published>2009-08-24T19:50:00.009Z</published><updated>2009-08-24T20:38:45.250Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>The MSE: at last!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/SpL4ae-uIDI/AAAAAAAAAJA/bYXuOC4FgHE/s1600-h/Screenshot-1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px; height: 75px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/SpL4ae-uIDI/AAAAAAAAAJA/bYXuOC4FgHE/s200/Screenshot-1.png" alt="" id="BLOGGER_PHOTO_ID_5373630439282843698" border="0" /&gt;&lt;/a&gt;Today started the official MSE classes. &lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(hooorray!!)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The whole computer department with room for thousands is empty as we're still on the middle of the summer, and we, the proud 14 students along with a few hand picked teachers fill these halls with the classes that will later on build and shape my personal view of the software world.&lt;span style="font-style: italic;"&gt; (crossing my fingers)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So far, so good. Having classes exclusively in english language when all students are portuguese is not something new as I've spent last year passing through a similar experience with the CCNA.&lt;br /&gt;&lt;br /&gt;The biggest difference is the fact that studying become&lt;span style="font-style: italic;"&gt; (finally) &lt;/span&gt;a full time experience to me.&lt;br /&gt;&lt;br /&gt;Over the past decade it wasn't nowhere easy to consolidate new knowledge while fighting with professional constraints or hostile study environments.&lt;br /&gt;&lt;br /&gt;This time I'm really having fun while living a long waited goal and yet quite nervous to some extent about the quality of my work as everyone is reviewed constantly by people that are beyond doubt experts on this craft.&lt;br /&gt;&lt;br /&gt;The MSE is seen as the crown jewel that represents the people who teach computer science in Coimbra's University and they uphold the professionalism and devotion to this goal at an incredibly impressive level. Students are expected no less commitment and I'm really happy to work in this environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;At this moment I'm not so worried about the complexity or costs of this demanding course but my mind is troubled because of my contract work terms with the military.&lt;br /&gt;&lt;br /&gt;If I cut my ties, then I'll breach the permanent staff contract terms that expect a minimum of 8 years under their roof. I still had 3 more years to reach this timeline, and breaking early gives them legal basis to request a compensatory indemnization for the 3 missing years.&lt;br /&gt;&lt;br /&gt;Guess that some negotiation needs to take place or at least a&lt;span style="font-style: italic;"&gt; (significant) &lt;/span&gt;source of income needs to be retrieved as the penalty can easily reach between 10k~20k euros. Perhaps a new bank loan can be drafted or the some distributed payments be agreed but freedom comes with a price.&lt;br /&gt;&lt;br /&gt;The question that bothers my sleep: What is the price tag to gain back my freedom?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-8706714542795779654?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/8706714542795779654/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/mse-at-last.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8706714542795779654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/8706714542795779654'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/mse-at-last.html' title='The MSE: at last!'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/SpL4ae-uIDI/AAAAAAAAAJA/bYXuOC4FgHE/s72-c/Screenshot-1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1773154258624790033</id><published>2009-08-14T19:43:00.005Z</published><updated>2009-08-14T20:06:15.372Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='ninja pendisk'/><title type='text'>Ninja pendisk site update</title><content type='html'>Recently I've began playing more often with Wordpress and it has become a good tool to deploy new websites.&lt;br /&gt;&lt;br /&gt;So, I picked a small popular site that would be easy to play with - ninja - because it is the right tool for simplicity sake and the website should also be made as simple as possible.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://nunobrito.eu/ninja/forum/skins/default/images/logo.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 328px; height: 96px;" src="http://nunobrito.eu/ninja/forum/skins/default/images/logo.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;One of the advantages that I like the most at wordpress is the integrated plugin system. Very neat. You simply look for plugins with particular features and click to install.&lt;br /&gt;&lt;br /&gt;On the ninja site, I've decided to replace the old plain html pages with a wordpress CMS. The transition went smoothly and took less than a day to complete.&lt;br /&gt;&lt;br /&gt;The biggest obstacle was finding a proper new visual theme and then adding back the text present on the old pages. One sad thing that could not be ported are the posts that were made on the old forum system.&lt;br /&gt;&lt;br /&gt;I've decided to use the integrated forum simple:press inside the CMS to ensure that everything fall well together. This new forum system also brings some other neat features that might help make it more appealing for other ninja users.&lt;br /&gt;&lt;br /&gt;For example, it's not necessary to register on the forums as it is using OpenID, people on participate on a given topic get email warnings whenever someone replies to their threads and so on.&lt;br /&gt;&lt;br /&gt;Also, this is a good homework practice for larger projects. My next goal is to also port the &lt;a href="http://nunobrito.eu"&gt;http://nunobrito.eu&lt;/a&gt; from the e107 CMS onto wordpress.&lt;br /&gt;&lt;br /&gt;Next would be turn of &lt;a href="http://winbuilder.net"&gt;http://winbuilder.net&lt;/a&gt; and this would complete the round of site conversions. Why converting to wordpress?&lt;br /&gt;&lt;br /&gt;Well, the main reason is flexibility to change things around. With e107 or static html pages is a real bothersome to add changes on the website or make it look exactly as you want.&lt;br /&gt;&lt;br /&gt;Besides, the available plugins are really cool and I'm just scratching the surface.&lt;br /&gt;&lt;br /&gt;I don't really like the fact that it's dependent to MySQL but for the moment there is still no other alternative.&lt;br /&gt;&lt;br /&gt;If you have the time, don't forget to visit the new ninja site at &lt;a href="http://nunobrito.eu/ninja"&gt;http://nunobrito.eu/ninja&lt;/a&gt; and tell me what you think.&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/57700989516441543-1773154258624790033?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1773154258624790033/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/ninja-pendisk-site-update.html#comment-form' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1773154258624790033'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1773154258624790033'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/ninja-pendisk-site-update.html' title='Ninja pendisk site update'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4462373118864369171</id><published>2009-08-14T13:14:00.007Z</published><updated>2009-08-14T13:45:12.243Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azores'/><title type='text'>Hardware limits</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.techshout.com/images/machines-human-level.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 165px; height: 165px;" src="http://www.techshout.com/images/machines-human-level.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;I'm tired.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Spent the last three days working around the clock to ensure that all my matters with this azorean island were solved. This involved in going back, forth and around the city on foot several times just to get all the required documents and trying to change my new residence whenever possible.&lt;br /&gt;&lt;br /&gt;Also, I needed to return my rented flat back to the owner and you wouldn't believe on the amount of things still missing to pack and bring back to mainland. Many other good things could not fit my luggage and I either gave them to friends or plain left them on the garbage.&lt;br /&gt;&lt;br /&gt;It was somewhat difficult to put our own stuff on the garbage, especially when you paid good money for them and attached some emotional links over the years as you used them and raised happy and good memories.&lt;br /&gt;&lt;br /&gt;Certainly not easy and I'm glad my wife didn't come with me as she wouldn't certainly bear to see some of the things that went out with with trash cleanup - I won't even tell her the details.&lt;br /&gt;&lt;br /&gt;I've spent a lot of money and time repairing small details in the house, fixing electrical light-switches, changing bulbs and other equipment that I had replaced since the originals weren't in good state.&lt;br /&gt;&lt;br /&gt;I'm taking most of this stuff with me and my personal luggage is so, so, so heavy that my only hope is that they'll be nice and don't charge me the extra weight. I can carry 20 kilograms but my bags weight around 60 kilograms and they demand an extra 5 euros per extra kilogram if they're in a bad mood.&lt;br /&gt;&lt;br /&gt;As if my bank account was not already in a bad state, an excess of weight overcharge penalization would only do wonders - but I need to bring these things back home.&lt;br /&gt;&lt;br /&gt;Guess the human limits of my hardware are really starting to show some wear. I've slept too little over these days and gave no rest between the effort of getting things done.&lt;br /&gt;&lt;br /&gt;Mostly due to my fault. I always tend to think that sleep is secondary and prefer to go out see some music concert somewhere and have fun even knowing that I'll have to wake soon in the morning.&lt;br /&gt;&lt;br /&gt;At least things are going on track, with the student's bank loan it should become easier to balance the bank account back into positive state thought I'm still worried about the future but I'm drawing some good plans to keep things running under schedule as expected.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm not worried about life in general, just plain sad at this moment. Leaving the Azores for good was not easy. Life is good around here and I've built a lot a good memories from this place.&lt;br /&gt;&lt;br /&gt;After living for two months in mainland one can note the difference in lifestyle, but this is a new important step and better things will certainly come along.&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/57700989516441543-4462373118864369171?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4462373118864369171/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/hardware-limits.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4462373118864369171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4462373118864369171'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/hardware-limits.html' title='Hardware limits'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1560338740140160036</id><published>2009-08-13T02:40:00.007Z</published><updated>2009-08-13T02:56:35.997Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='bizarre world'/><title type='text'>Just got myself re-baptized</title><content type='html'>Two months ago when I went to the airport to collect my ticket after shipping all my things in the container, I noticed that my identification was missing - it has been mistakenly placed inside the ship container and I had no way to retrieve it.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.dlib.org/dlib/january08/images/cyclists_ID.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 382px; height: 268px;" src="http://www.dlib.org/dlib/january08/images/cyclists_ID.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Being late &lt;span style="font-style: italic;"&gt;(almost 10:00 pm)&lt;/span&gt;, I rushed onto a shopping mall where a citizen's office was still open. 15 minutes later, I had signed a declaration mentioning I had lost my identification and they gave me a temporary citizenship certificate to allow me flight back home.&lt;br /&gt;&lt;br /&gt;I thought things had gone smooth as silk and this was indeed what happened then.&lt;br /&gt;&lt;br /&gt;But today I went to pick the new citizen's card at the mall and a mistake was made - one of my middle names &lt;span style="font-style: italic;"&gt;(Garcia)&lt;/span&gt; was mistakenly placed as one of my first names.&lt;br /&gt;&lt;br /&gt;My mother only gave me one first name as&lt;span style="font-style: italic;"&gt; "Nuno" &lt;/span&gt;but I was instantly re-baptized under a new name as&lt;span style="font-style: italic;"&gt; "Nuno Garcia"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Oh well. I'm too tired today to fight the ID system and I've spent the whole day and night going from one place to another, so, guess I'll have to make some use of my new freshly reassigned first name and get used to it.&lt;br /&gt;&lt;br /&gt;Go ahead and call me either Nuno or Garcia - for some unquestionable reason that I won't even bother to ask, both are now the same on my ID card.&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/57700989516441543-1560338740140160036?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1560338740140160036/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/just-got-myself-re-baptized.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1560338740140160036'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1560338740140160036'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/just-got-myself-re-baptized.html' title='Just got myself re-baptized'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6364027669510179516</id><published>2009-08-12T02:14:00.003Z</published><updated>2009-08-12T02:26:05.145Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azores'/><title type='text'>Back to the Azorean spirit</title><content type='html'>I've returned one last time to the place that I called home for the last 5 years.&lt;br /&gt;&lt;br /&gt;Very strange feeling. I moved out of my house at Coimbra and did everything on the expected schedule to get the bus ticket, the airplane reservation, to arrive on time, to wait the necessary time, to endure the time between trips but something was not the same.&lt;br /&gt;&lt;br /&gt;This was likely the very last time that I see my house the way has it had been for the past few years and will also be the last time I'll probably ever be here.&lt;br /&gt;&lt;br /&gt;And my feelings are crossed. I miss the azores.&lt;br /&gt;&lt;br /&gt;Life around here is indeed different. People talk about quality of life but after some time you kind of forget that there are places where life is not so pleasant.&lt;br /&gt;&lt;br /&gt;Looking back, this seems like another life in a distant time but it has only passed little over two months, guess life in mainland can also change you.&lt;br /&gt;&lt;br /&gt;So, to celebrate a new beginning I started out by going to dinner at one of my favorite spots. I didn't go out at night as I need to get up really early in the morning but I'm afraid that I'm not also being able to catch much sleep as it's 03:00 AM and no rest has yet come my way.&lt;br /&gt;&lt;br /&gt;Well, I'll try to get some work done and perhaps get tired enough to sleep for a couple of hours.&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/57700989516441543-6364027669510179516?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6364027669510179516/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/back-to-azorean-spirit.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6364027669510179516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6364027669510179516'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/back-to-azorean-spirit.html' title='Back to the Azorean spirit'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-598165963382925717</id><published>2009-08-08T21:18:00.005Z</published><updated>2009-08-10T01:09:23.543Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='phpbb'/><category scheme='http://www.blogger.com/atom/ns#' term='wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='google friend connect'/><title type='text'>Google Social Network</title><content type='html'>Maybe old news for some but I've just tried out Google Social Network and it's impressive.&lt;br /&gt;&lt;br /&gt;It allows to literally port a social network onto your website without the need to ask people to re-register themselves on your site.&lt;br /&gt;&lt;br /&gt;One other cool feature is the fact that wordpress and phpbb already come prepared for google connect which means a lot less worries about integration and more free time to work out the gimmicks of the site.&lt;br /&gt;&lt;br /&gt;This is a very approach to the same concept implemented by Microsoft (and others) over a decade ago when Passport was first introduced but with the twist that you have so much more control over the login registrations and are allowed to do a lot more.&lt;br /&gt;&lt;br /&gt;At the moment I don't see myself using often this tool but it's certainly something to keep in memory for future projects.&lt;br /&gt;&lt;br /&gt;Very good google, keep it up.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/friendconnect"&gt;http://www.google.com/friendconnect&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-598165963382925717?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/598165963382925717/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/google-social-network.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/598165963382925717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/598165963382925717'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/google-social-network.html' title='Google Social Network'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2614536643340441279</id><published>2009-08-07T22:02:00.004Z</published><updated>2009-08-08T21:24:25.429Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='wordpress'/><category scheme='http://www.blogger.com/atom/ns#' term='remote posting'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><title type='text'>Remote posting to wordpress using Gmail</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://en.flossmanuals.net/floss/publish/WordPress/rsrc/WordPress/Introduction/icon_big.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 148px; height: 133px;" src="http://en.flossmanuals.net/floss/publish/WordPress/rsrc/WordPress/Introduction/icon_big.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Wordpress is a really cool tool for running blogs but one of my favorite features (remote posting) was not working correctly with gmail.&lt;br /&gt;&lt;br /&gt;This happened because wordpress itself has no support for secure connections. So, after googling for a good while, the solution presented itself in the form of a new script that is capable of handling gmail.&lt;br /&gt;&lt;br /&gt;The article where this approach is explained is available here: &lt;a href="http://www.mattromaine.com/2005/03/07/wordpress-gmail-mobile-blogging/"&gt;http://www.mattromaine.com/2005/03/07/wordpress-gmail-mobile-blogging/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fairly simple approach. Just copy the two files onto the installation folder of wordpress, rename the extension of both files from .phps to .php and you're ready to go.&lt;br /&gt;&lt;br /&gt;As mentioned on the instructions, you still need to automate the calling of the wp-gmail.php script but that is the easy part.&lt;br /&gt;&lt;br /&gt;As for setting up wordpress itself, don't forget that the pop address is "pop.gmail.com" and that it will use port 995.&lt;br /&gt;&lt;br /&gt;Last but not least, the username should be as "example@gmail.com" where "example" is your real username to log inside your gmail account.&lt;br /&gt;&lt;br /&gt;That's it, good luck!&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/57700989516441543-2614536643340441279?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2614536643340441279/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/remote-posting-to-wordpress-using-gmail.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2614536643340441279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2614536643340441279'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/08/remote-posting-to-wordpress-using-gmail.html' title='Remote posting to wordpress using Gmail'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1203136014019221222</id><published>2009-07-21T16:28:00.006Z</published><updated>2009-07-21T16:37:54.368Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='miguel'/><category scheme='http://www.blogger.com/atom/ns#' term='Avatar'/><title type='text'>Updated Avatar</title><content type='html'>Yesterday I've updated my public avatar.&lt;br /&gt;&lt;br /&gt;It had passed quite some time since the last time I had a good reason to do so, and I finally found a good picture that would illustrate my state of mind at this moment.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_eCmZQ6ULvRo/SmXs3RKbjoI/AAAAAAAAAHQ/k4dycdKDHJc/s1600-h/av-2.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 90px; height: 90px;" src="http://4.bp.blogspot.com/_eCmZQ6ULvRo/SmXs3RKbjoI/AAAAAAAAAHQ/k4dycdKDHJc/s200/av-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5360951365698555522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The new avatar features my baby child Miguel and myself during the baptism party of a cousin's newborn baptism that occurred this past weekend. It's also one of those rare situations were I get to wear a tie so the photo itself reminds me that sometimes one needs to set loose from the work ties and give some attention to the family.&lt;br /&gt;&lt;br /&gt;This kid has been a blessing in  my life and I can't avoid making a smile whenever I look on the pictures to remind me of how lucky I am for having this kid and the respective mother on  my life.&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/57700989516441543-1203136014019221222?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1203136014019221222/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/07/updated-avatar.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1203136014019221222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1203136014019221222'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/07/updated-avatar.html' title='Updated Avatar'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_eCmZQ6ULvRo/SmXs3RKbjoI/AAAAAAAAAHQ/k4dycdKDHJc/s72-c/av-2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5095032554321115832</id><published>2009-07-20T20:28:00.003Z</published><updated>2009-07-20T20:43:53.676Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>Step 1 for a new life.</title><content type='html'>Well.. today I've got the confirmation of what I've been waiting for a long time.&lt;br /&gt;&lt;br /&gt;My current employer authorized a prolonged absence from work that will last the next 6 months until the end of January 2010.&lt;br /&gt;&lt;br /&gt;This means the first 6 months of my life without a single salary for the first time in a decade but at the same time I simply couldn't feel happier at this moment as this change also means 6 months living a very desired goal in my life and fight for a chance to improve my work quality as the results are already visible.&lt;br /&gt;&lt;br /&gt;On a financial level, things are sort of stabilized for the moment. I've reached my income saving objectives and gathered enough resources to sponsor my own education costs which will be substantial during the next 2 years.&lt;br /&gt;&lt;br /&gt;Still missing to figure how to provide my own subsistence in the U.S. without spending these savings, guess that a bank loan is in order but I'm leaving this option as the last resort since life after the studies won't be easy either and each saved coin will count to balance the monthly expenses.&lt;br /&gt;&lt;br /&gt;But so far so good.&lt;br /&gt;&lt;br /&gt;It's kind of scary to see everything falling into the correct position as if this is ordered like a huge puzzle. A lot of things are in motion and a lot of things can still go wrong in the future but I'm trying to live with all doors open in order to face any possible obstacles as they come along.&lt;br /&gt;&lt;br /&gt;The last and perhaps most ubiquous decision will be the penalty imposed by my employer in case I decide to move away after the 6 months. But if things really go well&lt;span style="font-style: italic;"&gt; (crossing my fingers here) &lt;/span&gt;then I won't certainly regret my decision.&lt;br /&gt;&lt;br /&gt;As always, time is short for everything but somehow things get balanced.&lt;br /&gt;&lt;br /&gt;Life is fun again.&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/57700989516441543-5095032554321115832?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5095032554321115832/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/07/step-1-for-new-life.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5095032554321115832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5095032554321115832'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/07/step-1-for-new-life.html' title='Step 1 for a new life.'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-3783910471361983673</id><published>2009-07-10T09:59:00.005Z</published><updated>2009-07-16T10:23:50.890Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='PSP'/><category scheme='http://www.blogger.com/atom/ns#' term='LOC counter'/><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>My first LOC counter</title><content type='html'>Yesterday I've completed my first LOC counter.&lt;br /&gt;&lt;br /&gt;LOC stands for "Lines Of Code" and the basic purpose is to count the number of valid lines of code that were written for a specific program.&lt;br /&gt;&lt;br /&gt;First of all, in order to be able to count anything - you will need to specify a coding standard template.&lt;br /&gt;&lt;br /&gt;This template is a small paper with all the rules regarding the way how code should be written for a given task. For example, avoid excessive capitalization, split each logical statement onto it's own line, assign meaningful titles to variables and so on and on.&lt;br /&gt;&lt;br /&gt;My first attempt at designing a LOC was fairly simplistic. It simply stripped away the comments or empty lines be done with it.&lt;br /&gt;&lt;br /&gt;But this wasn't a very realistic view of the true LOC.&lt;br /&gt;&lt;br /&gt;As mentioned by the teacher, adding tags to the code would be more productive &lt;span style="font-style: italic;"&gt;(even thought not mentioned in the task requirements)&lt;/span&gt; and so I did.&lt;br /&gt;&lt;br /&gt;The results couldn't have been better.&lt;br /&gt;&lt;br /&gt;I simply add "//TAG:X" &lt;span style="font-style: italic;"&gt;(where X is replaced by the code of the category where the code belongs)&lt;/span&gt; and it will count all valid lines until the "//finished" tag is found.&lt;br /&gt;&lt;br /&gt;Very simple but also very effective. This way I'm capable of truly counting the lines of quality code between what has been added, modified or recycled.&lt;br /&gt;&lt;br /&gt;The PSP also requires to count deleted lines so I've made another tag "//DELETED,15", where 15 is the number of deleted lines.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This sort of software is really interesting, in the past I'd simply count all lines from top to bottom, most admit that this is a substantial improvement.&lt;br /&gt;&lt;br /&gt;Unfortunately, all these modifications and all the troubles of moving away from the Azores made my fall behind schedule to deliver the assignments. I better start working to get back on track..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-3783910471361983673?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/3783910471361983673/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/07/my-first-loc-counter.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3783910471361983673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/3783910471361983673'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/07/my-first-loc-counter.html' title='My first LOC counter'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5613297746882889339</id><published>2009-06-30T13:06:00.005Z</published><updated>2009-06-30T13:16:10.137Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Coimbra'/><category scheme='http://www.blogger.com/atom/ns#' term='Coffee'/><title type='text'>Living in Coimbra</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.geocities.com/atoleiros/images/UnivCoimbra.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 119px; height: 189px;" src="http://www.geocities.com/atoleiros/images/UnivCoimbra.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;For the first time in a decade I can say that I've moved back to my homeland.&lt;br /&gt;&lt;br /&gt;I'm living back at Coimbra, place where I've spent most of my youth days.&lt;br /&gt;&lt;br /&gt;This was at the time a city with a superb quality of life, still is today.&lt;br /&gt;&lt;br /&gt;At the first days it was all a bit too confusing, many small things changed, family got older, shops closed, new buildings rised and all the usual things you'd expect to change over the years.&lt;br /&gt;&lt;br /&gt;I've spent my free time over the last days to go outside and drink coffee at my favorite places. First debuted the "Cartola", placed at the "Praça da República". A somewhat peaceful place during the morning where a person can drink the coffee while studying.&lt;br /&gt;&lt;br /&gt;Yesterday, I've went to "Celas", very close to where I used to study. Amazing to see the difference. I can still remember how things looked without being urbanized.&lt;br /&gt;&lt;br /&gt;And today I've been at the "Santa Cruz" coffee house, another emblematic place to drink coffee placed right at the middle of the old city. Expensive coffee btw, it costs 80 cents..&lt;br /&gt;&lt;br /&gt;It's been a very entertaining week. Coimbra has good quality of life and plenty of history to walk around. Will certainly be nice to stay here for some time.&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/57700989516441543-5613297746882889339?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5613297746882889339/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/living-in-coimbra.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5613297746882889339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5613297746882889339'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/living-in-coimbra.html' title='Living in Coimbra'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7582245421963852828</id><published>2009-06-26T19:00:00.008Z</published><updated>2009-06-26T19:57:08.278Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Universidade de Coimbra'/><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>The MSE begins</title><content type='html'>And so begins one new step in my life.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://tbn0.google.com/images?q=tbn:UldUkEuc2tiWgM:https://woc.dei.uc.pt/weboncampus/event/logos/MSElogoFBA.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 150px; height: 55px;" src="http://tbn0.google.com/images?q=tbn:UldUkEuc2tiWgM:https://woc.dei.uc.pt/weboncampus/event/logos/MSElogoFBA.png" alt="" border="0" /&gt;&lt;/a&gt;No doubts about the magnitude of this step that is changing my life at so many different levels, let alone even wonder about the way how life will continue from here forward.&lt;/div&gt;&lt;br /&gt;It's a mix of many differences for my life and I'm still feeling a bit outside the crowd thought the other students are all extremely polite and bright. Nevertheles, I should already be used to changes but I guess that leaving the Azores definitively is still tough to accept as a reality for the future.&lt;br /&gt;&lt;br /&gt;I should probably enjoy the course and flavor the things that we are about to experience but in my mind remain all the doubts and uncertainty about my professional future.&lt;br /&gt;&lt;br /&gt;---&lt;br /&gt;&lt;br /&gt;A life without thinking about MSE in the horizon doesn't seem so challenging while the other available courses are nowhere interesting enough to push your own capacities, but now I'm actually living this experience in first hand - where should things go from here?&lt;br /&gt;&lt;br /&gt;Well.. the first thing before thinking on anything else is study. And I mean really STUDY!&lt;br /&gt;&lt;br /&gt;The instructors passed a very clear message that no student will be forgiven if their average grade drops below 3.0 GPA and if any test achieves a B- grade you're immediately signaled with a yellow card and need to work even harder to seriously improve the grades.&lt;br /&gt;&lt;br /&gt;No joking around - study!&lt;br /&gt;&lt;br /&gt;The former MSE student presentation revealed a concept popularized as "Good enough", and this is something that might seem revolting for most perfectionist developers but when you're working under a very tight time-frame then I think "good enough" is all you can do.&lt;br /&gt;&lt;br /&gt;The overall presentation and care demonstrated throughout this process is impressive. This is indeed one course that is regarded as important to the image of the university and they are available to help at any given moment but it is also required to your commitemment and energies focused on the degree are total.&lt;br /&gt;&lt;br /&gt;I liked the instructor presentations, they're all extremelly humble and polite even thought their CV's express a lifetime of work in software/hardware development and research.&lt;br /&gt;&lt;br /&gt;Coming from a military world where discipline is sometimes forced upon people in so many repressive ways to achieve some established results, it's actually fun to work in a environment where no such methods exist and all work is purely motivated by your own struggle to achieve optimum results.&lt;br /&gt;&lt;br /&gt;Between all these talks I couldn't accurately evaluate what my performance will be during the course. I've never coded anything in Java, .NET or Visual Basic - never needed anyways - but now they will become the working tool as other students only seem productive using them and my performance will surely degrade &lt;span style="font-style: italic;"&gt;(especially if the time frame is very tight to present results)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Guess I'll need to adapt in order to survive amongst the other fellows in this tribe - thought my opinion for the moment remains solid that these languages are nowhere near my coding preferences.&lt;br /&gt;&lt;br /&gt;-------------&lt;br /&gt;&lt;br /&gt;For the moment we will begin the PSP (Personal Software Process), this is a remote lecture-style class that will occur during July.&lt;br /&gt;&lt;br /&gt;Excellent opportunity because I'll probably get a lot of time to go outside in the middle of the day to drink coffee while working at the class assignments - no better way to get things done.&lt;br /&gt;&lt;br /&gt;As things move forward, the difficulty bar will surely increase and I won't be having so much tranquility &lt;span style="font-style: italic;"&gt;(or quality time)&lt;/span&gt; to get these objectives completed.&lt;br /&gt;&lt;br /&gt;Also, the army only grants permission to remain absent for six months. After this time period I will have to decide wether to remain or not inside the organization or otherwise be forced to request my removal from the permanent board in case I decide to go forward with the MSE all the way until the end.&lt;br /&gt;&lt;br /&gt;I'm up for the challenge, let's begin!&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/57700989516441543-7582245421963852828?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7582245421963852828/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/mse-begins.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7582245421963852828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7582245421963852828'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/mse-begins.html' title='The MSE begins'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5812489807153461254</id><published>2009-06-13T12:45:00.006Z</published><updated>2009-06-13T13:14:18.548Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='google ads'/><category scheme='http://www.blogger.com/atom/ns#' term='familly'/><category scheme='http://www.blogger.com/atom/ns#' term='minimum wage'/><category scheme='http://www.blogger.com/atom/ns#' term='MSE'/><title type='text'>Publicity, MSE and life</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://computerdealoftheday.com/storage/free_google_ads.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 154px; height: 146px;" src="http://computerdealoftheday.com/storage/free_google_ads.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This week has been hard.&lt;br /&gt;&lt;br /&gt;Why?&lt;br /&gt;&lt;br /&gt;Because ever since the beginning of my online adventures that I've always took good pride in staying far from annoying google ads but this time I'll need to swallow my own pride and use them to survive.&lt;br /&gt;&lt;br /&gt;My life took a very unexpected turn around. I'm leaving the place where I live, the work that provided such good quality of life and also stray away from some of the projects that I care about.&lt;br /&gt;&lt;br /&gt;My goal to justify these measures is also well worthy of my efforts - the MSE from Carneggie Mellon.&lt;br /&gt;&lt;br /&gt;This course is no joke for those that are faint of the heart and for those who have that crazy dream of achieving a somewhat incredible state of nirvana in terms of computer programming &lt;span style="font-style: italic;"&gt;(if they manage to survive during 18 months of intensive stress)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I'm no exception on this group of dreamers and I'm aiming high but will this goal justify the used means?&lt;br /&gt;&lt;br /&gt;On the case of publicity, just wish there was a better solution but I see no other source of income available during the next couple of years since.&lt;br /&gt;&lt;br /&gt;My wife will try to find a job but she'll surely be paid the minimum wage and our child's daycare center will cost half of her earnings.&lt;br /&gt;&lt;br /&gt;It's too much in my conscience to bear the predictable guilt of being such a weight on her shoulders at the expenses of my own goals that will surely prejudice her peaceful tranquility.&lt;br /&gt;&lt;br /&gt;Maybe this way I'll get enough resources to leverage my contribution to the family and afford the internet and transportation costs.&lt;br /&gt;&lt;br /&gt;My apologies to those who I disapoint with this measure, this was not an easy decision.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-5812489807153461254?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5812489807153461254/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/publicity-and-ads.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5812489807153461254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5812489807153461254'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/publicity-and-ads.html' title='Publicity, MSE and life'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6463460873176191310</id><published>2009-06-05T10:32:00.004Z</published><updated>2009-06-05T11:01:19.272Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='razor cms'/><category scheme='http://www.blogger.com/atom/ns#' term='litePHP'/><category scheme='http://www.blogger.com/atom/ns#' term='UPB'/><title type='text'>Flat file web software</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.razorcms.co.uk/datastore/media/razorCMSblade.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 173px; height: 115px;" src="http://www.razorcms.co.uk/datastore/media/razorCMSblade.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Is mySQL really necessary?&lt;br /&gt;&lt;br /&gt;It has all sort of advantages and performance advantages that people so quickly advocate but is a SQL database really needed to power up small websites or web applications?&lt;br /&gt;&lt;br /&gt;My preference goes to fully portable websites that require no external database and keep everything tidy and organized inside the same folder. This makes the task of creating a new site fairly simple and even simpler to move everything onto another server.&lt;br /&gt;&lt;br /&gt;For bigger sites, mySQL is still a tool of the trade but I've learned to look onto smaller alternatives as better option to power up those small sites that don't require a heavy CMS but still need to stretch a bit further than static HTML codings.&lt;br /&gt;&lt;br /&gt;On this blog post I'd like to refer two developments that I've been using for some time.&lt;br /&gt;&lt;br /&gt;The first, is a forum software that runs solely on a flatfile &lt;span style="font-style: italic;"&gt;(no SQL needed)&lt;/span&gt;, the name of this project is "&lt;a href="http://www.myupb.com/"&gt;Ultimate PHP board&lt;/a&gt;", very small sized, free and very easy to customize. This is the forum software that I'm also using to power up the &lt;a href="http://nunobrito.eu/ninja/forum"&gt;ninja forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The second project is called "&lt;a href="http://www.razorcms.co.uk/"&gt;Razor CMS&lt;/a&gt;" &lt;span style="font-style: italic;"&gt;(freeware)&lt;/span&gt; - a name easy to remember and also the type of software that is meant to be easy to work with from the start. This is a good option is you need to start a new website and only require to showcase a few pages.&lt;br /&gt;&lt;br /&gt;It comes with a WYSIWYG editor and you can find additional plugins&lt;span style="font-style: italic;"&gt; (called blade packs)&lt;/span&gt; to add more features and themes.&lt;br /&gt;&lt;br /&gt;I'm using this software to create a standalone PHP powered website that runs from DVD's and USB media to be distributed as gift to guests at a meeting.&lt;br /&gt;&lt;br /&gt;This standalone website is possible using another software that I've made some time ago called &lt;a href="http://nunobrito.eu/download.php?view.11"&gt;litePHP&lt;/a&gt; &lt;span style="font-style: italic;"&gt;(freeware)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Have fun!&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/57700989516441543-6463460873176191310?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6463460873176191310/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/flat-file-web-software.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6463460873176191310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6463460873176191310'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/flat-file-web-software.html' title='Flat file web software'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7544129204232499644</id><published>2009-06-01T09:50:00.005Z</published><updated>2009-06-01T10:39:11.470Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='windpws 7 pwned'/><title type='text'>A few reasons why you should or shouldn't use Windows 7</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.dell.com/images/global/support/product_support/vista_logo_50x50.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 50px; height: 50px;" src="http://i.dell.com/images/global/support/product_support/vista_logo_50x50.jpg" alt="" border="0" /&gt;&lt;/a&gt;In the previous blog post we've covered the basics to get a Windows 7 install going, but what are the possible advantages from this situation?&lt;br /&gt;&lt;br /&gt;Also, with the competition installed for the desktop OS market, what good reasons would keep you away from a Windows machine?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Pros&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - Free until June 2010&lt;br /&gt;2 - Fast&lt;span style="font-style: italic;"&gt; (or perhaps Vista was too much of a slug anyways)&lt;/span&gt;&lt;br /&gt;3 - XP mode - it can run software/drivers meant for older OS versions&lt;br /&gt;4 - Less annoying UAC&lt;br /&gt;5 - Full support for IPv6 - you'll likely understand why this is important within some time&lt;br /&gt;6 - Renewed set of UI controls - those old style menus and graphics with 10 years of existence were all updated&lt;br /&gt;7 - Very cool explorer and orb menu to work with&lt;br /&gt;8 - No more USB/DVD autorun as before&lt;br /&gt;9 - Large hardware support &lt;span style="font-style: italic;"&gt;(really huge with the possibility to get online for fetch missing files)&lt;/span&gt;&lt;br /&gt;10 - More flexible to install - let it be from USB/Network or whatever, it's easier to deploy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Cons&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1 - Free until June 2010 - so after this that you'll have to dump it altogether, buy a license or tamper the install with some piracy method to workaround the timebomb - not nice.&lt;br /&gt;2 - It's fast but still slugs behind XP in terms of performance and any other current desktop OS.&lt;br /&gt;3 - XP mode is not perfect, some drivers will crash&lt;br /&gt;4 - Memory consumption is still huge when compared to other OS&lt;br /&gt;5 - Viruses, Viruses. Be prepared because all the malware that hammered previous releases will soon catch up.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;One of the things that I like the most is the stability of the UI, a bit like OSX this just "feels" solid to work with. They've really smoothed the edges to bring a work OS into life.&lt;br /&gt;&lt;br /&gt;The UI redesign was a very nice touch and the default look is very pleasant to work with.&lt;br /&gt;&lt;br /&gt;But should MS be praised?&lt;br /&gt;&lt;br /&gt;No, it shouldn't.&lt;br /&gt;&lt;br /&gt;These improvements derived from flaws that have been criticized heavily - and even the competition has been ahead of the game for some time while MS keeps playing catch up.&lt;br /&gt;&lt;br /&gt;This is a desktop OS for the masses but I'm a bit disappointed to see such slow rate on exploring new ways of interaction with the desktop like compiz provides for x-window.&lt;br /&gt;&lt;br /&gt;Would be nice to see some of this innovation going mainstream.&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/57700989516441543-7544129204232499644?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7544129204232499644/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/few-reasons-why-you-should-or-shouldnt.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7544129204232499644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7544129204232499644'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/06/few-reasons-why-you-should-or-shouldnt.html' title='A few reasons why you should or shouldn&apos;t use Windows 7'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1656321312889558257</id><published>2009-05-31T21:36:00.008Z</published><updated>2009-05-31T22:29:34.754Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='Acer One'/><category scheme='http://www.blogger.com/atom/ns#' term='windpws 7 pwned'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Installing Windows 7 on Acer One</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://digishop-hn.com/wp-content/uploads/2008/12/acer_one1.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 197px; height: 147px;" src="http://digishop-hn.com/wp-content/uploads/2008/12/acer_one1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Installing Windows 7 inside an Acer One is fun and probably not a waste of your time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Why?&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For two reasons in specific: It's free and it's fast.&lt;br /&gt;&lt;br /&gt;- Free because Microsoft allows you to use Windows 7  until June 2010.&lt;br /&gt;- Fast when compared to it's predecessor Windows Vista.&lt;br /&gt;&lt;br /&gt;Still not as fast as XP and a lot of memory is consumed but we might consider the pros vs cons in a later blog post.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;How?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;My short tutorial is just an example so that people have a better notion about a possible way to install.&lt;br /&gt;&lt;br /&gt;The first step is downloading the Windows 7 ISO, it's available from MS here:&lt;br /&gt;&lt;a href="http://www.microsoft.com/Windows/windows-7/download.aspx"&gt;http://www.microsoft.com/Windows/windows-7/download.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then, using a separate partition to keep both XP and Win7 working is a good idea in case you need to go back some day. There are plenty of tools to split the Acer One partion, I used the one I trusted the most.&lt;br /&gt;&lt;br /&gt;Since I use Ubuntu, there is a USB install tool that creates USB pendisks, one advantage of these pendisks is that they come builtin with a partition editor that resizes NTFS partitions safely &lt;span style="font-style: italic;"&gt;(and as simple as it gets)&lt;/span&gt; -&lt;a href="http://www.ubuntu.com/"&gt; http://www.ubuntu.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the partition is made available, it's time to launch Windows 7 install setup from the original XP. I created a 40Gb partition thought after installed this new Windows it took about 9Gb worth of used space.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-------------------------&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Installing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since there is no incorporated DVD reader, we can fake a drive using a virtual DVD drive to mount the ISO image.&lt;br /&gt;&lt;br /&gt;My favorite tool for this task on Windows is ImDisk &lt;span style="font-style: italic;"&gt;(open source)&lt;/span&gt; - &lt;a href="http://www.ltr-data.se/opencode.html#ImDisk"&gt;http://www.ltr-data.se/opencode.html#ImDisk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="display: block;" id="formatbar_Buttons"&gt;&lt;span class="on down" style="display: block;" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);"&gt;&lt;img src="http://www.blogger.com/img/blank.gif" alt="Link" class="gl_link" border="0" /&gt;&lt;/span&gt;&lt;/span&gt;Just install and reboot the machine. Aftwerwards you can right-click on any ISO image and make it available as a fake drive.&lt;br /&gt;&lt;br /&gt;Mounting the Windows 7 ISO image we get the install started.&lt;br /&gt;&lt;br /&gt;Don't forget to choose a new instalation and select the secondary partition that you have just created and the installation begins.&lt;br /&gt;&lt;br /&gt;The install process is a bit lengthy &lt;span style="font-style: italic;"&gt;(one hour perhaps)&lt;/span&gt; and reboots several times without need for human interaction.&lt;br /&gt;&lt;br /&gt;------------------------&lt;br /&gt;&lt;br /&gt;I was a bit afraid that some drivers wouldn't recognize the Acer One hardware. But there is one good thing about this Windows version - it supports drivers that were created for XP. This is a big plus without doubt.&lt;br /&gt;&lt;br /&gt;All that was left to be done was visiting the Acer download site and grab the latest drivers for the Mouse synaptic software that allowed double tapping to be recognized as left-click.&lt;br /&gt;&lt;br /&gt;Also, the software to control the fan noise also seemed to work only for XP/Vista - it was nice to see Win7 also asking to run the program in "XP mode" so that it work as expected &lt;span style="font-style: italic;"&gt;(and it did)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;In overall&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have very nice words to say about Windows 7 indeed.&lt;br /&gt;&lt;br /&gt;This OS is serious and less cluttered than it's precedent. The visual style is good and they have really made enough improvements to convince me as a worthy replacement for XP.&lt;br /&gt;&lt;br /&gt;In a time that both OSX and Ubuntu are enjoying from a popularity boost given by the awfull performance demonstrated by Windows Vista, it should be no surprise to see Windows rising back into better days within 2010 if all goes well for them.&lt;br /&gt;&lt;br /&gt;It's nice to see some competition.. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-1656321312889558257?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1656321312889558257/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/installing-windows-7-on-acer-one.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1656321312889558257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1656321312889558257'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/installing-windows-7-on-acer-one.html' title='Installing Windows 7 on Acer One'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5480807523236230963</id><published>2009-05-26T11:14:00.006Z</published><updated>2009-05-26T15:04:53.450Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='coffee ninja sponsor'/><title type='text'>Got coffee?</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imagecache2.allposters.com/images/pic/CLASS/186-019%7ECoffee-Posters.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 151px; height: 193px;" src="http://imagecache2.allposters.com/images/pic/CLASS/186-019%7ECoffee-Posters.jpg" alt="" border="0" /&gt;&lt;/a&gt;A few weeks ago I've discontinued working at some of my favorite software projects. The next couple of years will likely be very busy and time always passes too quickly when you're having fun.&lt;br /&gt;&lt;br /&gt;One of these projects was Ninja Pendisk. In contrast to other projects as WinBuilder or the Boot Land community that are well kept by other developers, the ninja was suddenly made orphan.&lt;br /&gt;&lt;br /&gt;It is growing popular but development stagnated.&lt;br /&gt;&lt;br /&gt;To lift up some motivation in order to continue support and improvement, I've placed a small donation box powered by &lt;a href="http://pledgie.com/campaigns/4356"&gt;Pledgie&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is probably the first time that I've ever placed a donation box anywhere but the pledgie service is very nice and given the current state of Ninja, this sounded like a good experience.&lt;br /&gt;&lt;br /&gt;Results arrived today.&lt;br /&gt;&lt;br /&gt;A friendly ninja supporter named Wilson has contributed with 1 euro.&lt;br /&gt;&lt;br /&gt;A small token to some but a meaningful contribution to me.&lt;br /&gt;&lt;br /&gt;After paypal deducted 0,35 cents + 5% of the contribution value, I was left with little over 63 cents on my account - still good to sponsor a coffee.&lt;br /&gt;&lt;br /&gt;Since I drink about 2~3 cups of coffee per day, this is enough to power one half of the morning or even perhaps a whole afternoon working on ninja to update it's functionality.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Let there be coffee!&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/57700989516441543-5480807523236230963?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5480807523236230963/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/got-coffee.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5480807523236230963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5480807523236230963'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/got-coffee.html' title='Got coffee?'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-4471282764987385675</id><published>2009-05-22T11:31:00.002Z</published><updated>2009-05-22T11:45:37.822Z</updated><title type='text'>NoMachine NX - remote network control</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.nomachine.com/img/screenshot/nxclient/img7.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 199px; height: 328px;" src="http://www.nomachine.com/img/screenshot/nxclient/img7.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Guess everyone heard about VNC to control a computer over the network but what about NX?&lt;br /&gt;&lt;br /&gt;In the past I always thought that there were only two good ways to control a computer remotely.&lt;br /&gt;&lt;br /&gt;The first would be using VNC and the second would be Windows Remote connection.&lt;br /&gt;&lt;br /&gt;Thought these two options work fairly well for a LAN or possibly an intranet WAN, the truth is that both are a serious pain to use over the Internet due to their slug performance.&lt;br /&gt;&lt;br /&gt;Meet NX.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is a freeware server/client remote control software strictly for linux/solaris machines.&lt;br /&gt;&lt;br /&gt;The client itself can also be used from Windows or MacOSX environments and this works &lt;span style="font-weight: bold;"&gt;fast!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm not joking about being fast. Their compression algorithm is extremelly efficient. I suspect that both client and server work together to save as much bandwidth as possible and only sending the bare minimal changes to update the client's display in contrast to VNC or RDP that output the full screen.&lt;br /&gt;&lt;br /&gt;So impressive that it still works incredibly quick over the 3G modem dialup connection from my laptop.&lt;br /&gt;&lt;br /&gt;Not that I complain from working remotely using a remote ssh session but it's always nice to work with a desktop to get some things done right.&lt;br /&gt;&lt;br /&gt;Here's the link:&lt;br /&gt;&lt;a href="http://www.nomachine.com"&gt;http://www.nomachine.com&lt;/a&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/57700989516441543-4471282764987385675?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/4471282764987385675/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/nomachine-nx-remote-network-control.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4471282764987385675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/4471282764987385675'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/nomachine-nx-remote-network-control.html' title='NoMachine NX - remote network control'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-5009577274436149815</id><published>2009-05-20T19:34:00.005Z</published><updated>2009-05-20T20:00:48.765Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu virtualbox init.d boot start virtual machine'/><title type='text'>Starting a VirtualBox image on boot up</title><content type='html'>Recently with current hardware, it has become feasible to run windows 2003 machines from within VirtualBox PC emulators (opensource - &lt;a href="http://virtualbox.org/"&gt;http://virtualbox.org&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;One strong point for using an emulated windows server is the relative ease to move this emulated machine onto another physical computer without needing to reinstall everything up.&lt;br /&gt;&lt;br /&gt;VirtualBox is handy because it runs fairly well and is very easy to configure, but one of the missing features is the option to select a virtual machine to start when computer boots up.&lt;br /&gt;&lt;br /&gt;The lack of this feature forces an administrator to manually start the virtual machine everytime a reboot is necessary.&lt;br /&gt;&lt;br /&gt;Looking around the web I've stumbled on this solution: &lt;a href="http://farfewertoes.com/stories/2008-03-09-start-virtualbox-virtual-machines-on-boot/"&gt;http://farfewertoes.com/stories/2008-03-09-start-virtualbox-virtual-machines-on-boot/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But I required something a bit simpler and decided to make a smaller version from the mentioned script that is easier for anyone else to customize as needed.&lt;br /&gt;&lt;br /&gt;One thing I should mention is that this script will first attempt to send an ACPI shutdown to the virtual machine so that it can close by itself and if this machine is not closed within a specified time frame (12 seconds), the script will force the shutdown without further delay.&lt;br /&gt;&lt;br /&gt;Enough talk for today, here's the code:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;# Simple script to start virtual box on boot up&lt;br /&gt;# Credits - http://farfewertoes.com/code/vboxcontrol&lt;br /&gt;&lt;br /&gt;# How is this virtual box called?&lt;br /&gt;emulatedbox="Windows XP"&lt;br /&gt;&lt;br /&gt;# The script will send a soft reset when shutting down,&lt;br /&gt;# how long should it wait before sending a power off? (0 to disable)&lt;br /&gt;until_shutdown=12&lt;br /&gt;&lt;br /&gt;## Start the program ##&lt;br /&gt;&lt;br /&gt;if [  "$1" == "start" ]; then&lt;br /&gt; echo "Starting VirtualBox Image.. ("$emulatedbox")";&lt;br /&gt; VBoxManage startvm "$emulatedbox"&lt;br /&gt; exit 0&lt;br /&gt; fi&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if [  "$1" == "stop" ]; then&lt;br /&gt; echo "Stopping VirtualBox Image.. ("$emulatedbox")";&lt;br /&gt; counter=0;&lt;br /&gt;     RUNNING_MACHINES=`VBoxManage list runningvms | wc -l`&lt;br /&gt;     if [ $RUNNING_MACHINES != 0 ]; then&lt;br /&gt; VBoxManage controlvm "$emulatedbox" acpipowerbutton&lt;br /&gt;     if [ $until_shutdown != 0 ];&lt;br /&gt;       then sleep $until_shutdown; fi;&lt;br /&gt; RUNNING_MACHINES=`VBoxManage list runningvms | wc -l`&lt;br /&gt;    if [ $RUNNING_MACHINES != 0 ]; then&lt;br /&gt;     VBoxManage controlvm "$emulatedbox" poweroff; exit 0; fi&lt;br /&gt;     fi&lt;br /&gt; exit 0&lt;br /&gt; fi&lt;br /&gt;&lt;br /&gt;echo "No parameters specified, exiting."&lt;br /&gt;exit 1&lt;/blockquote&gt;I hope you know how to use this script, if you don't then I'd suggest reading up the suggestions from the link I've suggested on the top of this blog post as it gives some instructions regarding how this should be applied on your server machine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Good luck, hope this helps you.&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/57700989516441543-5009577274436149815?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/5009577274436149815/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/starting-virtualbox-image-on-boot-up.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5009577274436149815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/5009577274436149815'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/starting-virtualbox-image-on-boot-up.html' title='Starting a VirtualBox image on boot up'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7462930230370687637</id><published>2009-05-18T10:37:00.004Z</published><updated>2009-05-18T10:47:43.820Z</updated><title type='text'>Moving out.</title><content type='html'>For the past five years one thing remained constant in my life - living in the azores.&lt;br /&gt;&lt;br /&gt;Now, I will unfortunately retire from my current work location and move back into mainland Portugal.&lt;br /&gt;&lt;br /&gt;I would say that this is great since I'll be living in the same city where the rest of my family lives, but at the same time it's with sadness that I depart from these islands.&lt;br /&gt;&lt;br /&gt;Living here is a surreal experience, after a few years you kind of assume some things to be normal but they're nowhere to be found anywhere else for sure.&lt;br /&gt;&lt;br /&gt;The fact of living stranded in the middle of Atlantic ocean, seeing the green fields that are greener that anything else you'd ever seen and the marvelous chance of breathing such clean air are just a few of the things that I'll surely miss.&lt;br /&gt;&lt;br /&gt;It's also the place where you can go out and take a coffee knowing that you'll stumble on some familiar face to exchange a few words while enjoying the seaside view or attend small rock concerts promoted by your friends at places where everyone knows everybody.&lt;br /&gt;&lt;br /&gt;Really amazing stuff.&lt;br /&gt;&lt;br /&gt;But it's also in the nature of people to move forward and time has come to get back on track and move along to the next challenge.&lt;br /&gt;&lt;br /&gt;Moving out is not easy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-7462930230370687637?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7462930230370687637/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/moving-out.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7462930230370687637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7462930230370687637'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/moving-out.html' title='Moving out.'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-6711770163940243138</id><published>2009-05-05T11:23:00.011Z</published><updated>2009-05-05T12:29:10.736Z</updated><title type='text'>Life and Death</title><content type='html'>Today I've received a sad call on my cellphone.&lt;br /&gt;&lt;br /&gt;It was my mother washed in tears saying that one of our very best friends had committed suicide.&lt;br /&gt;&lt;br /&gt;This is a sad day for me, his name was Pedro Simão.&lt;br /&gt;&lt;br /&gt;He was the sort of person that always seemed disconnected from the traditional way of living. I was lucky to meet him when I was little above 8 years old.&lt;br /&gt;&lt;br /&gt;At the time, he was the chief of the scouts organization where my mother placed me and my younger brother Edgar to learn how to live in the outdoors and also spend more time with other kids.&lt;br /&gt;&lt;br /&gt;Those years were a truly valuable life experience.&lt;br /&gt;&lt;br /&gt;Simão was around 23 years old but treated kids a bit like adults and taught us very early in life the reason why discipline, hard work and a good taste for adventure allow to achieve good results.&lt;br /&gt;&lt;br /&gt;It's probably because of him that I first joined the army. The scout experience really prepared me to face without fear the human limits of exposing myself to stress conditions. He used to say: "Anything is possible if your mind is set on a goal" and I believe him.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;At this last decade after 2000, I just wish that the younger Simão could have talked some sense into the older Simão.&lt;br /&gt;&lt;br /&gt;Things started to collapse after Simão returned from his army mission at Mozambique when he quickly wasted his saved money on all the wrong things. A mix of naive personality with the desire to fulfill some his dreams have lead to the quick depletion of his saved resources and I think this was the turning point that somehow demotivated this once inspiring soul.&lt;br /&gt;&lt;br /&gt;Over the last years, he got himself into an awful amount of debts to pay the car, the house and so many other things that simply couldn't be afforded by his monthly salary.&lt;br /&gt;&lt;br /&gt;He'd frequently drink in excess, most of the times all alone at his home.&lt;br /&gt;&lt;br /&gt;It was sad to see Simão going down like this. Also didn't helped the fact that I was never around Coimbra anymore just like most of our mutual friends that also went to somewhere else and he was left all alone by himself to linger on these sad things of life.&lt;br /&gt;&lt;br /&gt;Now thinking clearer, I feel awful for not spending more time with him after my last visit to Coimbra last month. I saw him so briefly. He was always available to help others and I asked him a lift to the bus station where I could pick the bus that would leave for Lisbon.&lt;br /&gt;&lt;br /&gt;We only talked for less than 10 minutes at the bus coffee house. Then I went for the bus and waived goodbye. Just wish he hadn't gone or at the very least drop a call to talk with me or someone else. Even worse because in a couple of months I'll be living again at Coimbra and would have a chance to talk with him much more often.&lt;br /&gt;&lt;br /&gt;I'm simply too disappointed on myself because I could have done better.&lt;br /&gt;&lt;br /&gt;Things weren't well and I fell that I've disappointed a good friend in this mad pursuit for my own selfish goals in life.  Didn't even took some quality time to look closer at what was happening and ignored all the warning signs.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;He had a bad life in the last years but he also had a very kind heart. Was the sort of person that I would trust wholyhearted knowing that he'd never break this trust.&lt;br /&gt;&lt;br /&gt;Pedro, if you're listening. I'll miss you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-6711770163940243138?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/6711770163940243138/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/life-and-death.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6711770163940243138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/6711770163940243138'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/05/life-and-death.html' title='Life and Death'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-1433654253675673450</id><published>2009-04-25T13:12:00.004Z</published><updated>2009-04-25T13:49:48.184Z</updated><title type='text'>We, the people.</title><content type='html'>My wife went back to her parent's house in early January this year.&lt;br /&gt;&lt;br /&gt;This has become a sort of habit at each year so that she gets an opportunity to spend some quality time with her family. We usually prefer to spend the summer vacations in the Azores where the weather is nicer and we have more fun exploring the other nearby islands.&lt;br /&gt;&lt;br /&gt;This means that during these months I'm left home alone just like in my single days.&lt;br /&gt;&lt;br /&gt;One of the things that bothers me the most is having to stay alone in the house - a silent house is nowhere pleasant so I spend most of my free time going outside to the street and work at the laptop over a nice cup of coffee and dinner in most cases.&lt;br /&gt;&lt;br /&gt;Spending a lot of time at the same places has got me starting to recognize the faces from people that I don't know from anywhere.&lt;br /&gt;&lt;br /&gt;It's a strange feeling to see the years pass and look how people change. Worser yet to notice the behavior patterns for some people and starting to guess what they'll be doing.&lt;br /&gt;&lt;br /&gt;It's a small closed environment where all faces become familiar but yet none of them is your acquaintance.&lt;br /&gt;&lt;br /&gt;There is a folk in particular that grabs my attention, it's a homeless person which notoriously spends even more time than myself wandering around the several city locations where people usually gather.&lt;br /&gt;&lt;br /&gt;He's always alone, never talking to anyone else but always enjoying the somewhat warmth from being close to other people.&lt;br /&gt;&lt;br /&gt;In big cities at mainland it's easy to do exactly like everyone else does - just ignore and move away. Around here it's different.&lt;br /&gt;&lt;br /&gt;You go drink a coffee by the seaside and you'll see him, you go to the mall grab some dinner and he'll probably be there too. You even go out at night and you'll see the same person wandering at the most active parties. It's a small city indeed but you get far more aware of these sort of situations that you'd ever see in a metropolitan city.&lt;br /&gt;&lt;br /&gt;And this bothers me a lot.&lt;br /&gt;&lt;br /&gt;Not the homeless, but rather the exclusion to which we, the people of the society have silently voted to outcast them so subtly.&lt;br /&gt;&lt;br /&gt;Yet, he fights to keep his dignity - to do the things that many of us take as granted on their daily routines.&lt;br /&gt;&lt;br /&gt;Something is wrong but what can we do?&lt;br /&gt;&lt;br /&gt;It's not a matter of money, it's not even a matter of doing community service. It's a question of thinking on solutions for truly integrating people in this unfortunate situation instead of leaving them on the outside.&lt;br /&gt;&lt;br /&gt;Otherwise how can we say that things have evolved for humankind if our kind is not human enough to take of each others?&lt;br /&gt;&lt;br /&gt;No, something really needs to change.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-1433654253675673450?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/1433654253675673450/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/04/we-people.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1433654253675673450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/1433654253675673450'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/04/we-people.html' title='We, the people.'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-2979148703948057077</id><published>2009-03-24T18:21:00.002-01:00</published><updated>2009-03-24T18:54:46.601-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CISCO'/><category scheme='http://www.blogger.com/atom/ns#' term='CCNA'/><title type='text'>CCNA 4/4</title><content type='html'>This is it.&lt;br /&gt;&lt;br /&gt;The last module before the full CCNA certification. I sure would like to think that each module gets easier as time passes but there is no such thing an easy certification and I wouldn't like it any other way.&lt;br /&gt;&lt;br /&gt;This time we've moved outside the LAN world and dived into the WAN galaxy. I never cease to stay completely amazed with the dimension of this big networked universe.&lt;br /&gt;&lt;br /&gt;The technology of this chapter is approaching a lot of history regarding the solutions that were developed during the 60's and 70's. Strangely enough is how one can notice that these concepts are still current when applied to today's standards with the obvious exceptions for bandwidth differences and a few other improvements. A good engineered solution can really last a long time.&lt;br /&gt;&lt;br /&gt;We've just started last week but I've already learned to value the use of a good serial connection and started understanding with some depth the WAN protocols that are used inside frame relays and long distance networking.&lt;br /&gt;&lt;br /&gt;These classes gave me a glimpse of old memories. When I was a small kid, I've once visited a small office where it was possible to start a video-conference with the room next to us.&lt;br /&gt;&lt;br /&gt;The presenter of the tour mentioned that one day it this feature would become an affordable technology for everyone. I just thought "amazing" and look how right he was indeed.&lt;br /&gt;&lt;br /&gt;This CCNA module is certainly not so easy to grasp, it deals with a lot of new concepts that I've never heard about but at the same time I'm really curious to see and learn how people solved some of the issues raised at the time. Funny because I think that nowadays people are getting lazy (including myself).&lt;br /&gt;&lt;br /&gt;When there was no Internet (for everyone), most people would need to think the solutions by themselves or perhaps try, try and try all over again until it's done right. How disappointing it is to google and to find a solution that we consider 100 times better than ours and quit even before engaging into action.&lt;br /&gt;&lt;br /&gt;A lot of competition is demoralized this way - this is good for popular community guided developments but at the same time promotes the stagnation of technology. If a monopoly is raised by any given product then we might be sure to expect that it's evolution will be far slower than it would occur if a competing product presented better features, but I digress and I'd better get back on topic..&lt;br /&gt;&lt;br /&gt;This is the last module and probably the last time that I get a chance to study in the Azores, it's been a very interesting year without doubt - I'll miss it here.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/57700989516441543-2979148703948057077?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/2979148703948057077/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/03/ccna-44.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2979148703948057077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/2979148703948057077'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/03/ccna-44.html' title='CCNA 4/4'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7103379825218048900</id><published>2009-03-16T22:48:00.009-01:00</published><updated>2009-03-16T23:36:22.875-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='life questions'/><category scheme='http://www.blogger.com/atom/ns#' term='slay'/><category scheme='http://www.blogger.com/atom/ns#' term='pocket pc'/><title type='text'>Is life a game?</title><content type='html'>Well.. I've been on vacations for two weeks.&lt;br /&gt;&lt;br /&gt;Went back to the town where I spent most of childhood days and saw a lot of people that I didn't even remembered for half a decade.&lt;br /&gt;&lt;br /&gt;They've changed, I've changed, but the same strange feeling of those memories that passed years ago still remain in the eyes of the persons with whom I crossed.&lt;br /&gt;&lt;br /&gt;One of the things that I "forced" myself to respect was the idea of leaving the laptop and internet back home in the azores. Try to live for two weeks without being online and live only with real people, it's not that I'm not sociable or anything because I usually do spend more time on the street on coffee houses with friends than closed somewhere but the computer always grabs my attention back to work and the point of vacations is to relax for a while.&lt;br /&gt;&lt;br /&gt;Nevertheless, I took my latest cellphone which also doubles as  a PDA equipped with a Pocket PC OS &lt;span style="font-style: italic;"&gt;(an HTC Pharos)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;On this PDA, I've installed one of my all time favorite game for pocket pc - "Slay".&lt;br /&gt;&lt;br /&gt;The name may mislead people to think that it is as a game filled with action and blood but it's not the case. I'd describe it more as a pure strategy game.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.clickgamer.com/products/pid_4089/screenshots/ppc/large/pic_slayCE.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 240px; height: 320px;" src="http://www.clickgamer.com/products/pid_4089/screenshots/ppc/large/pic_slayCE.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically, it consists on a small map subdivided in tiny hexagons with different colors. You get a color for yourself and you control a few of the available villages that are found inside the map.&lt;br /&gt;&lt;br /&gt;The point of the game is to join together all villages &lt;span style="font-style: italic;"&gt;(those that survive) &lt;/span&gt;to form a bigger and stronger group as the days pass.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As opposing groups get bigger, the used weaponry also gets stronger and more resource hungry &lt;span style="font-style: italic;"&gt;(each hexagon is worth a unit of money).&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;----------------&lt;br /&gt;&lt;br /&gt;So, the logic of this game is very simple yet disturbing.&lt;br /&gt;&lt;br /&gt;Maybe it's because I've been playing this simple game all week long but it surely made me wonder a lot about the logic of life itself.&lt;br /&gt;&lt;br /&gt;We all start the same way &lt;span style="font-style: italic;"&gt;(more or less of course)&lt;/span&gt; but basicaly born with limited resources and the need to connect with other people as time passes to increase the odds of survival.&lt;br /&gt;&lt;br /&gt;A careful evaluation of the opponents and succesfull prediction of their actions will give you an advantage and allow to move forward faster than everyone else but slacking off the guard may also cost you greatly.&lt;br /&gt;&lt;br /&gt;The worst difference between a game and real life is perhaps that in a game we can always count on repeating everything from the start to do things right over the next time, but of course that in real life this is not the case and destiny &lt;span style="font-style: italic;"&gt;(or fate?)&lt;/span&gt; will take an important role in the way how the action occurs.&lt;br /&gt;&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;So, life itself can indeed be considered as a sort of game where you, me and many others play on a very big board. We all get some time to play and have fun with it.&lt;br /&gt;&lt;br /&gt;If you're alive then you're lucky. Don't forget to enjoy your life, today!&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/57700989516441543-7103379825218048900?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7103379825218048900/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/03/is-life-game.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7103379825218048900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7103379825218048900'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/03/is-life-game.html' title='Is life a game?'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-267072445940178796</id><published>2009-03-01T23:42:00.005-01:00</published><updated>2009-03-04T22:52:11.391-01:00</updated><title type='text'>Why I develop software</title><content type='html'>A few days ago I received a message which started like this:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Hello Nuno,&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;First of all THANK YOU for the Ninja!&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;In this email I'd like to report a bug and make few suggestions. I hope you don't mind that I'm writing directly to you instead of posting my comments and suggestions on the forum, but I do not have any direct access to internet (see the explanation at the end of this email).&lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;And the message was very complete regarding the reported bug and proposed features, ending with the explanation of why he had no direct access to the internet:&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote style="font-style: italic;"&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;I do not have any direct access to internet. I'm living in Himalayan Heights (23000 feet. altitude) in Northern India at an ashram. To send/receive emails or to get some files/webpages downloaded from the nearest internet cafe a courier from the ashram has to travel 2 hours (1 hour by foot and 1 hour by car).&lt;br /&gt;Here in India at the internet cafes viruses abound - people do not take care of virus prevention, so proper antivirus and programmes like Ninja are a must.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Please let me know when you'll fix the bug I've mentioned and/or implement the above suggestions.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;With best wishes,&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;Marek &lt;/span&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;This message hit me like a slap in the face for several reasons. Can you imagine how life is for someone living at 23 000 feet &lt;span style="font-style: italic;"&gt;(~7000 meters)&lt;/span&gt; of altitude and need to worry about viruses that run around on pendisks?&lt;br /&gt;&lt;br /&gt;Or using a collective email box to where all messages need to have the name of the person at the title so that someone can collect and deliver them by hand just like paper mail?&lt;br /&gt;&lt;br /&gt;These and many other questions filled my mind and sparkled a deep introspective questioning of the reasons why I first began developing software.&lt;br /&gt;&lt;br /&gt;-------------&lt;br /&gt;&lt;br /&gt;When I was young, internet was no option. To solve some trouble with a program you would have to think hard about a programming solution if none was available. Things were not easy but they were "doable" and I always succeeded in finding a way sooner or later &lt;span style="font-style: italic;"&gt;(while learning a lot)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Nowadays, one takes everything for granted. It became too easy to google and find whatever someone might have done.&lt;br /&gt;&lt;br /&gt;This way you save your time and intelectual effort. Marek is against all odds making an effort to improve the tools at his reach and made an effort to contact the author with very valuable feedback instead of resignating to these limitations like many others do.&lt;br /&gt;&lt;br /&gt;Funny, but reading the whole context of his message I somehow remembered a bit like I was some years ago. Working in really difficult conditions to get online using dial up modems connected on top of other VPN's just to see the internet page working.&lt;br /&gt;&lt;br /&gt;And I was happy this way.&lt;br /&gt;&lt;br /&gt;So happy that I finally had a chance to publish my software in the open field, so happy that my goal wasn't money nor personal recognition. It was all about giving back a little of so much knowledge that had been given to me for free by a multitude of other folks in the internet.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Grattitude&lt;/span&gt; was the reason why I began developing software for the internet audience.&lt;br /&gt;&lt;br /&gt;And the idea of making available a software title, carried with me the notion that I should be responsible to improve and make it as adjusted as possible to real life usage.&lt;br /&gt;&lt;br /&gt;Deeply commited to the intention of making software that would somehow help other people without expecting anything in return.&lt;br /&gt;&lt;br /&gt;----------&lt;br /&gt;&lt;br /&gt;These last few years made me proud. Many projects with success, many happy users, many new developments, but, along this way I somehow forgot my own roots and removed from memory the reasons that made me choose this path in the first place.&lt;br /&gt;&lt;br /&gt;This "proud" feeling turned me into a person who barely listens with attention what others have to say &lt;span style="font-style: italic;"&gt;(like jaclaz's opinion about the boot land's visual or PSC's request of a forum for NativeEx)&lt;/span&gt; and quickly forgets things like working on the new site for Kare. Or even letting the Ninja users stuck with a 1.5 version that isn't updated over a year now along many other things.&lt;br /&gt;&lt;br /&gt;I'm nowhere proud of this.&lt;br /&gt;&lt;br /&gt;---------------&lt;br /&gt;&lt;br /&gt;When I was a kid one of my innocent dreams would be creating something capable of changing the world a little bit. This message from India is a wake up call reminding me of how far this dream has reached reality in the present days.&lt;br /&gt;&lt;br /&gt;Let there be Ninja 2.0!&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/57700989516441543-267072445940178796?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/267072445940178796/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/03/why-i-develop-software.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/267072445940178796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/267072445940178796'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/03/why-i-develop-software.html' title='Why I develop software'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-57700989516441543.post-7085485016558356526</id><published>2009-02-24T21:39:00.003-01:00</published><updated>2009-03-01T23:42:21.887-01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web 3.0'/><title type='text'>Web 3.0</title><content type='html'>Are we reaching web 3.0 yet?&lt;br /&gt;&lt;br /&gt;This is a somewhat vague term that defines the next step in internetworking evolution.&lt;br /&gt;&lt;br /&gt;We can all point our fingers at examples from the 1.0 era when Geocities, Altavista, Slashdot and other pioneer sites reached the masses for the first time a little over 10 years ago.&lt;br /&gt;&lt;br /&gt;We can also point our finger to 2.0 timeline crispy examples like Digg, Hi5 and whatever, but what should we expect from 3.0?&lt;br /&gt;&lt;br /&gt;Well.. in my humble opinion I'd say that evolution will allow the powerless users from the 1.0 era that have become major players of the 2.0 age to become the collective owners of 3.0 websites.&lt;br /&gt;&lt;br /&gt;An early example of this situation is already demonstrated by the growth of Wikipedia.&lt;br /&gt;&lt;br /&gt;Shifting the control of insanely popular sites from a regulated control by a company or person onto a collective effort of volunteers that pretty much decide everything which is done and whatnot.&lt;br /&gt;&lt;br /&gt;-----------&lt;br /&gt;&lt;br /&gt;3.0 will bring an era of self-growing sites, which will naturally organize and adapt themselves to survive using the same human behaviour that once allowed the construction of big cities in the past, an instinct that still remains inherent to all of us.&lt;br /&gt;&lt;br /&gt;It's the era of tribes, groups of people from different points of origin and ages struggling for their success in popularity terms when compared to other tribes, regardless the effort this might pose on their individual lives in order to ensure the success of the colective goal.&lt;br /&gt;&lt;br /&gt;Unleashed sites will compose 3.0 and the internet will never be the same again.&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/57700989516441543-7085485016558356526?l=nunobrito1981.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nunobrito1981.blogspot.com/feeds/7085485016558356526/comments/default' title='Enviar comentários'/><link rel='replies' type='text/html' href='http://nunobrito1981.blogspot.com/2009/02/web-30.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7085485016558356526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/57700989516441543/posts/default/7085485016558356526'/><link rel='alternate' type='text/html' href='http://nunobrito1981.blogspot.com/2009/02/web-30.html' title='Web 3.0'/><author><name>Nuno Brito</name><uri>https://profiles.google.com/103402553186575297840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-y6VXSv2moo8/AAAAAAAAAAI/AAAAAAAACpc/MAJtBPMCH5I/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
