<?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-1678809174759658177</id><updated>2012-01-16T12:56:47.499Z</updated><category term='functional mapping'/><category term='development'/><category term='latex'/><category term='network manager'/><category term='asus'/><category term='maven'/><category term='recognition'/><category term='linkedin'/><category term='eclipse application'/><category term='mind blowing'/><category term='AS/400'/><category term='chrome'/><category term='data migration'/><category term='motivation'/><category term='module'/><category term='iseries'/><category term='configuration'/><category term='printer'/><category term='hard disk'/><category term='video'/><category term='traceroute'/><category term='6th sense'/><category term='s4'/><category term='.htaccess'/><category term='mambo'/><category term='optical fiber'/><category term='c++'/><category term='computation'/><category term='i18n'/><category term='java'/><category term='i5/OS'/><category term='Xorg'/><category term='theme'/><category term='example'/><category term='automatic'/><category term='data cleaning'/><category term='django'/><category term='tinn-r'/><category term='ideas'/><category term='ebcdic'/><category term='pdf'/><category term='interview'/><category term='problems'/><category term='build'/><category term='dns'/><category term='innovation'/><category term='saas'/><category term='worm'/><category term='marketing'/><category term='design'/><category term='sp3'/><category term='waterfall'/><category term='framework'/><category term='ubuntu'/><category term='j2ee'/><category term='store procedure'/><category term='anti-virus'/><category term='svn'/><category term='subversion'/><category term='google'/><category term='education'/><category term='reflection'/><category term='technology'/><category term='packaging'/><category term='wg500g Premium'/><category term='drive'/><category term='zx'/><category term='zon'/><category term='customers'/><category term='critial system'/><category term='tag'/><category term='cm3s'/><category term='stupid idea'/><category term='48k'/><category term='it'/><category term='internationalization'/><category term='ios'/><category term='speach'/><category term='jtopen'/><category term='gimp'/><category term='virtual machine'/><category term='wli'/><category term='productivity'/><category term='code'/><category term='clients'/><category term='ubercart'/><category term='menu'/><category term='driver'/><category term='screen'/><category term='router'/><category term='knowledge'/><category term='math'/><category term='speed'/><category term='connect'/><category term='engine'/><category term='startup'/><category term='lie'/><category term='kde'/><category term='gps'/><category term='rcp'/><category term='open studio'/><category term='mjpegtools'/><category term='kettle'/><category term='online business'/><category term='talend'/><category term='eps'/><category term='sql'/><category term='unix'/><category term='open xml'/><category term='administration'/><category term='virus'/><category term='source code'/><category term='mathematics'/><category term='sucess'/><category term='ftp'/><category term='management'/><category term='install'/><category term='ideas worth spreading'/><category term='solr'/><category term='automatic update'/><category term='pentaho'/><category term='OS/400'/><category term='branch'/><category term='avatar'/><category term='etl'/><category term='gwt'/><category term='open source'/><category term='ghostscript'/><category term='db2'/><category term='fiber'/><category term='presentation'/><category term='c#'/><category term='firefox'/><category term='dbvisualizer'/><category term='ejb'/><category term='ati'/><category term='r commander'/><category term='sales'/><category term='grep'/><category term='.net'/><category term='performance'/><category term='x700'/><category term='eclipse'/><category term='text-to-speach'/><category term='babel'/><category term='xp'/><category term='charlantry'/><category term='humor'/><category term='wysiwyg'/><category term='xml'/><category term='business'/><category term='entrepreneur'/><category term='rpc'/><category term='mysql'/><category term='squirrel'/><category term='jdev'/><category term='spectrum'/><category term='security'/><category term='msys'/><category term='mistakes'/><category term='geek'/><category term='ted'/><category term='dyndns'/><category term='gui'/><category term='swt'/><category term='oracle'/><category term='adf'/><category term='forensic'/><category term='isp'/><category term='radeon'/><category term='idrive'/><category term='android'/><category term='integration'/><category term='software'/><category term='speech'/><category term='weblogic'/><category term='fun'/><category term='detector'/><category term='amarok'/><category term='cat'/><category term='capture'/><category term='web design'/><category term='hospital'/><category term='trunk'/><category term='setup'/><category term='media'/><category term='jdbc'/><category term='grub'/><category term='joomla'/><category term='organization'/><category term='tvtel'/><category term='jdeveloper'/><category term='data visualization'/><category term='agile'/><category term='python'/><category term='cms'/><category term='metrics'/><category term='consulting'/><category term='windows'/><category term='workbench'/><category term='bea'/><category term='science'/><category term='database'/><category term='operating system'/><category term='car'/><category term='apache'/><category term='linux'/><category term='portuguese'/><category term='debug'/><category term='crash'/><category term='cvs'/><category term='data quality'/><category term='opensuse'/><category term='translation'/><category term='php'/><category term='kubuntu'/><category term='patterns'/><category term='tutorial'/><category term='conceptronic'/><category term='objects'/><category term='r'/><category term='q dvd-author'/><category term='games'/><category term='jface'/><category term='devede'/><category term='blog'/><category term='chart'/><category term='sheffield'/><category term='versioning'/><category term='ftth'/><category term='fuzzy'/><category term='delevopment'/><category term='hard drive'/><category term='virtual reality'/><category term='structure'/><category term='drupal'/><category term='search'/><category term='microsoft'/><category term='amd'/><category term='jgr'/><category term='digital'/><category term='mozilla'/><category term='model'/><category term='metadata'/><category term='fdisk'/><title type='text'>M6 on Software</title><subtitle type='html'>Software related information one might find useful.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default?start-index=101&amp;max-results=100'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>132</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3513438073523839741</id><published>2012-01-03T09:06:00.000Z</published><updated>2012-01-03T09:06:59.391Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='mathematics'/><category scheme='http://www.blogger.com/atom/ns#' term='translation'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>Translating Math Into Code</title><content type='html'>&lt;p&gt;"Discrete mathematical structures form the foundation of computer science."&lt;/p&gt;&lt;p&gt;This opening sentence resumes the article about: &lt;a href="http://matt.might.net/articles/discrete-math-and-code/"&gt;Translating math into code with examples in Java, Racket, Haskell and Python&lt;/a&gt;, that show how math is translated into code.&lt;/p&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3513438073523839741?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3513438073523839741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2012/01/translating-math-into-code.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3513438073523839741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3513438073523839741'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2012/01/translating-math-into-code.html' title='Translating Math Into Code'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6166660665436801755</id><published>2011-12-28T20:42:00.001Z</published><updated>2011-12-28T20:48:35.733Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Value Proposition</title><content type='html'>While reading about marketing and web site design if found this interesting small post about value propositionThis is business centric, since it states why should customers choose you instead of your competition, and every business people should have that clear on their head.&lt;br /&gt;&lt;br /&gt;Here it is: &lt;a href="http://www.marketingexperiments.com/blog/general/value-proposition-worksheet.html"&gt;Value Proposition: A free worksheet to help you win arguments in any meeting&lt;/a&gt;. Don't forget to check the related links. ./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6166660665436801755?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6166660665436801755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/12/value-proposition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6166660665436801755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6166660665436801755'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/12/value-proposition.html' title='Value Proposition'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2263262078419668954</id><published>2011-12-07T09:46:00.001Z</published><updated>2011-12-07T10:15:19.498Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='reflection'/><category scheme='http://www.blogger.com/atom/ns#' term='debug'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>.Net Reflector</title><content type='html'>&lt;p&gt;During a set of web systems migration, things went very wrong and a customer requested me help in setting the systems up again.&lt;br /&gt;One of the systems was developed in the &lt;a href="http://www.microsoft.com/net"&gt;.Net&lt;/a&gt; platform, not one of my strongest technologies, and &lt;a href="http://en.wikipedia.org/wiki/C_Sharp_(programming_language)"&gt;C#&lt;/a&gt;. &lt;br /&gt;He was getting really desperate when I started helping, because there was already one technical person looking at it for almost two months...&lt;/p&gt;&lt;/p&gt;We performed "pair debugging" in the production environment, since there was no development nor quality environment available.&lt;br /&gt;One of the first things I've detected was that the application that did not work referenced another application, which was not available. Fortunately, that project was available as an assembly, so all that was required was to include the assembly in the configuration file and we were ready for the next challenge.&lt;/p&gt;&lt;p&gt;The next challenge was not easier to detect, since the errors reported mentioned a missing log directory. The problem, though, was not caused by the missing directory. Any error that occurred was logged, but since the log was not working, it reported a directory not found.&lt;br /&gt;Scanning the configuration for the debug location, we tried "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;./debug&lt;/span&gt;", expecting that the debug directory to be relative to project. Unfortunately, that was not the case!&lt;br /&gt;The debug was managed by the previously stated external project, so I needed to see the what the debug code was doing in order to understand how to solve the problem.&lt;br /&gt;The solution came from &lt;a href="http://www.reflector.net/"&gt;.Net Reflector&lt;/a&gt;, a great tool that allows one to open a library and navigate through its source code.&lt;br /&gt;After a while I was able to understand how the debug file was being written. The programmer that coded the open debug file function was lazy, in a pejorative sense, was did not account for a relative path, forcing one to configure the debug file location with a full path statement, which is not straightforward when one is using a common web hosting service...&lt;/p&gt;&lt;p&gt;Fortunately, soon after, I was able to discover the full path for the application, so we specified the debug path as "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;c:\...&lt;/span&gt;" and things start rolling.&lt;/p&gt;&lt;p&gt;If it wasn't for .Net Reflector, I would have taken a lot more time to find out why the "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;./debug&lt;/span&gt;" value was being ignored and the debug file was trying to be written in "&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;c:\windows\...&lt;/span&gt;".&lt;br /&gt;It's a great tool for all serious .Net developers, I truly recommend it. &lt;/p&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2263262078419668954?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2263262078419668954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/12/net-reflector.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2263262078419668954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2263262078419668954'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/12/net-reflector.html' title='.Net Reflector'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4725701567300012731</id><published>2011-10-28T12:34:00.000+01:00</published><updated>2011-10-28T12:34:14.522+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Django Inline Forms</title><content type='html'>Here's how to implement an inline display of a form in &lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt;:&lt;a href="http://blog.hexonio.com/2011/10/28/django-inline-forms/"&gt; Django Inline Forms&lt;/a&gt;../M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4725701567300012731?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4725701567300012731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/django-inline-forms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4725701567300012731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4725701567300012731'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/django-inline-forms.html' title='Django Inline Forms'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2665127750058308384</id><published>2011-10-28T12:01:00.001+01:00</published><updated>2011-10-28T12:01:14.370+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='virtual reality'/><category scheme='http://www.blogger.com/atom/ns#' term='gui'/><title type='text'>HoloDesk - Direct 3D Interactions with a Situated See-Through Display</title><content type='html'>A technology that allows &lt;a href="http://en.wikipedia.org/wiki/Minority_Report_(film)"&gt;Minority Report&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/GUI"&gt;GUI&lt;/a&gt;s:&lt;iframe width="560" height="315" src="http://www.youtube.com/embed/JHL5tJ9ja_w" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2665127750058308384?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2665127750058308384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/holodesk-direct-3d-interactions-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2665127750058308384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2665127750058308384'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/holodesk-direct-3d-interactions-with.html' title='HoloDesk - Direct 3D Interactions with a Situated See-Through Display'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/JHL5tJ9ja_w/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-720523122552836486</id><published>2011-10-12T18:32:00.000+01:00</published><updated>2011-10-12T18:32:41.090+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>PDF generation in Django</title><content type='html'>Working with &lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; is very easy. And when it comes to output an &lt;a href="http://en.wikipedia.org/wiki/Portable_Document_Format"&gt;PDF&lt;/a&gt; instead of an &lt;a href="http://en.wikipedia.org/wiki/Html"&gt;HTML&lt;/a&gt; page, simplicity still applies.Check this post: &lt;a href="http://www.20seven.org/journal/2008/11/pdf-generation-with-pisa-in-django.html"&gt;PDF generation with PISA in Django&lt;/a&gt; ./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-720523122552836486?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/720523122552836486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/pdf-generation-in-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/720523122552836486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/720523122552836486'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/pdf-generation-in-django.html' title='PDF generation in Django'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3648858134577739053</id><published>2011-10-06T19:18:00.000+01:00</published><updated>2011-10-06T19:18:32.992+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solr'/><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>Solr for Latin Languages</title><content type='html'>Here's how to configure &lt;a href="http://blog.hexonio.com/2011/10/06/solr-for-latin-languages/"&gt;Solr for Latin Languages&lt;/a&gt;../M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3648858134577739053?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3648858134577739053/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/solr-for-latin-languages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3648858134577739053'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3648858134577739053'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/10/solr-for-latin-languages.html' title='Solr for Latin Languages'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5385427390729111271</id><published>2011-09-23T09:33:00.001+01:00</published><updated>2011-09-23T09:33:13.581+01:00</updated><title type='text'>Eclipse Application Export Error</title><content type='html'>Wierd Eclipse export error dependency satisfaction conflict generated by the “Generate metadata repository” option: &lt;a href="http://blog.hexonio.com/2011/09/22/eclipse-application-export-error/"&gt;Eclipse Application Export Error&lt;/a&gt;../M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5385427390729111271?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5385427390729111271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/eclipse-application-export-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5385427390729111271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5385427390729111271'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/eclipse-application-export-error.html' title='Eclipse Application Export Error'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6842504232279511090</id><published>2011-09-12T12:43:00.003+01:00</published><updated>2011-09-12T15:34:22.078+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><category scheme='http://www.blogger.com/atom/ns#' term='ios'/><title type='text'>iOS Frameworks</title><content type='html'>A curated catalog of iOS frameworks and classes for the pragmatic iOS developer: &lt;a href="http://iosframeworks.com/frameworks"&gt;iOS Frameworks&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6842504232279511090?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6842504232279511090/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/ios-frameworks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6842504232279511090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6842504232279511090'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/ios-frameworks.html' title='iOS Frameworks'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3627642588284353007</id><published>2011-09-12T09:56:00.008+01:00</published><updated>2011-09-12T10:02:38.251+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='organization'/><category scheme='http://www.blogger.com/atom/ns#' term='chart'/><title type='text'>Organizational Chart</title><content type='html'>I've come across with this funny, sarcastic, yet, realistic, organizational chart from &lt;a href="http://www.bonkersworld.net/2011/06/27/organizational-charts/"&gt;Manu&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.bonkersworld.net/images/2011.06.27_organizational_charts.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 500px; height: 500px;" src="http://www.bonkersworld.net/images/2011.06.27_organizational_charts.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;What's your organization charted?&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3627642588284353007?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3627642588284353007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/organizational-chat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3627642588284353007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3627642588284353007'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/organizational-chat.html' title='Organizational Chart'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4212661329587963471</id><published>2011-09-08T12:46:00.003+01:00</published><updated>2011-09-08T12:52:02.370+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='django'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Painless Django Kickoff</title><content type='html'>I'm learning &lt;a href="https://www.djangoproject.com/"&gt;Django&lt;/a&gt; and, so far, I'm enjoying it.&lt;br /&gt;But putting it to work, as a simple development environment on my laptop, was harder than I expected. Specially when it came to install the &lt;a href="http://pypi.python.org/pypi/MySQL-python"&gt;MySQL-Python connector&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you're starting with Django, or are having trouble setting &lt;a href="http://python.org/"&gt;Python&lt;/a&gt; with &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt;, maybe this will help: &lt;a href="http://blog.hexonio.com/2011/09/08/painless-django-with-mysql-install/"&gt;Painless Django with MySQL Install&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4212661329587963471?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4212661329587963471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/painless-django-kickoff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4212661329587963471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4212661329587963471'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/09/painless-django-kickoff.html' title='Painless Django Kickoff'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4904265533497910863</id><published>2011-08-30T11:08:00.003+01:00</published><updated>2011-08-30T11:19:20.321+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='customers'/><category scheme='http://www.blogger.com/atom/ns#' term='clients'/><category scheme='http://www.blogger.com/atom/ns#' term='sales'/><title type='text'>Three Things Clients and Customers Want</title><content type='html'>Here's three things an entrepreneur should always have in mind while developing and selling: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. Results.&lt;/span&gt; If you can offer a return on investment, an engineering solution, more sales, no tax audits, a cute haircut, the fastest rollercoaster, a pristine beach, reliable insurance payouts at the best price, peace of mind, productive consulting or any other measurable result, this is a great place to start.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. Thrills.&lt;/span&gt; More difficult to quantify but often as important, partners and customers respond to heroism. We are amazed and drawn to over the top effort, incredible risk taking on our behalf, the blood, sweat and tears that (rarely) comes from a great partner. A smart person working harder on your behalf than you'd be willing to work--that's pretty compelling.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. Ego.&lt;/span&gt; Is it nice to feel important? You bet. When you greet us at the door with a glass of white wine, put our name in the lobby of the hotel, actually treat us better than anyone else does (not just promise it, but do it)... This can get old really fast if you industrialize and systemize it, though.&lt;br /&gt;&lt;br /&gt;The full original post, by &lt;a href="http://www.sethgodin.com"&gt;Seth Godin&lt;/a&gt;: &lt;a href="http://feedproxy.google.com/~r/typepad/sethsmainblog/~3/nTVQYlXtV0s/three-things-clients-and-customers-want.html"&gt;Three things clients and customers want&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4904265533497910863?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4904265533497910863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/08/three-things-clients-and-customers-want.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4904265533497910863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4904265533497910863'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/08/three-things-clients-and-customers-want.html' title='Three Things Clients and Customers Want'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1571149273363434693</id><published>2011-08-30T09:49:00.002+01:00</published><updated>2011-08-30T09:53:09.253+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='ideas'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>How To Find Ideas For a Startup</title><content type='html'>A small, but good, text describing &lt;a href="http://onstartups.com//tabid/3339/bid/64782/how-to-pick-the-right-idea-for-your-startup.aspx?source=Blog_Email_[How%20To%20Pick%20The%20Righ]"&gt;How To Pick The Right Idea For Your Startup&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1571149273363434693?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1571149273363434693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/08/how-to-find-ideas-for-startup.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1571149273363434693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1571149273363434693'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/08/how-to-find-ideas-for-startup.html' title='How To Find Ideas For a Startup'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2610842721579698921</id><published>2011-08-12T14:37:00.004+01:00</published><updated>2011-08-12T14:39:57.556+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='waterfall'/><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='productivity'/><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>Waterfall vs. Agile</title><content type='html'>A simple description about both methods and when to choose one over the other: &lt;a href="http://dumaslab.com/2011/08/waterfall-v-agile/"&gt;Waterfall v Agile: How Should I Approach My Software Development Project?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2610842721579698921?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2610842721579698921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/08/waterfall-vs-agile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2610842721579698921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2610842721579698921'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/08/waterfall-vs-agile.html' title='Waterfall vs. Agile'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6555865700034792248</id><published>2011-07-12T13:26:00.007+01:00</published><updated>2011-07-12T14:02:29.476+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kettle'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='data cleaning'/><category scheme='http://www.blogger.com/atom/ns#' term='etl'/><category scheme='http://www.blogger.com/atom/ns#' term='fuzzy'/><category scheme='http://www.blogger.com/atom/ns#' term='data migration'/><category scheme='http://www.blogger.com/atom/ns#' term='functional mapping'/><category scheme='http://www.blogger.com/atom/ns#' term='pentaho'/><category scheme='http://www.blogger.com/atom/ns#' term='j2ee'/><title type='text'>Pentaho first impressions</title><content type='html'>I've just went to a &lt;a href="http://www.pentaho.com/"&gt;Pentaho&lt;/a&gt; presentation performed by &lt;a href="http://www.xpand-it.com/"&gt;Xpand IT&lt;/a&gt;.&lt;br /&gt;It was the first opportunity I had to get some answers from someone close to the project and I must say, in general, it is what I was expecting.&lt;br /&gt;&lt;br /&gt;The presentation was a bit technical, but I think it could not be otherwise since Pentaho is technical. What I mean is that it does not address one of the most important issues on an &lt;a href="http://en.wikipedia.org/wiki/Extract,_transform,_load"&gt;ETL&lt;/a&gt; project: funcional mapping.&lt;br /&gt;Technically, it's all there, but I do feel the transformations could, and should, be easier to define and implement. Point and click is cool when one wishes to sell the product to management, but to do real work, it slows down the development process.&lt;br /&gt;There are just too many clicks involved even for the simplest task, some could be avoided with a GUI revision focused on the user productivity. For instance, recording previous user tree filters, instead of writing the word every time one wishes to filter something, would save a lot of time to the end user.&lt;br /&gt;&lt;br /&gt;Another weak point is the lack of rule mapping management and documentation. It does not have a clean nor fast way to see field mappings. If one wishes to see which fields are mapped or what transformation rules are implemented, one has to manually search all the transformations and click on its graphical representation in order to find them.&lt;br /&gt;It's a lot of click when one has hundreds of tables, and thousands of transformation rules defined.&lt;br /&gt;And, obviously, this lack of management reflects on the project documentation because one cannot generate access nor generate rule mapping reports.&lt;br /&gt;This is a serious issue Pentaho should solve. Rule definition is the core of an ETL process and it is totally unacceptable that one cannot access it is a simple, fast and clear way.&lt;br /&gt;&lt;br /&gt;On the strong side, Pentaho has a lot of connectors and operators already available. It's entirely written in Java, supports scripting languages and it's open source, through the &lt;a href="http://kettle.pentaho.com/"&gt;Kettle&lt;/a&gt; project. All this means that it can be easily expanded, either through customization of its core or through the development of plugins.&lt;br /&gt;It can work from the command line, which is excellent because it can be included a shell script, and it has it's own &lt;a href="http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition"&gt;J2EE&lt;/a&gt; server, also excellent because it provides out of the box integration solutions. For instance, one can write a transformation that starts when a &lt;a href="http://en.wikipedia.org/wiki/Webservice"&gt;web service&lt;/a&gt; is called or a &lt;a href="http://en.wikipedia.org/wiki/Java_Message_Service"&gt;JMS&lt;/a&gt; receives a message.&lt;br /&gt;It comes with some simple, fuzzy, functions that helps to clean data, but don't expect too much out of it. &lt;br /&gt;It seems to scale well, mainly through parallelization, but orchestration can only be achieved manually.&lt;br /&gt;&lt;br /&gt;In short, Pentaho can evolve a lot. Specially when it comes to the funcional part of the ETL. But even technically, it misses an orchestrator to help jobs orchestration.&lt;br /&gt;Currently, as a data migration expert, I'm still not convinced that Pentaho can be used on "hard core ETL" projects where the functional mapping management, the development time and the data migration time window are critical points.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6555865700034792248?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6555865700034792248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/07/pentaho-first-impressions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6555865700034792248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6555865700034792248'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/07/pentaho-first-impressions.html' title='Pentaho first impressions'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6135596956600294800</id><published>2011-07-11T17:08:00.008+01:00</published><updated>2011-07-11T17:32:19.745+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='joomla'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='mistakes'/><title type='text'>Drupal makes people life harder.</title><content type='html'>Out of the box &lt;a href="http://drupal.org"&gt;Drupal&lt;/a&gt; is not very good. &lt;br /&gt;Actually, it is quite over simplistic...&lt;br /&gt;&lt;br /&gt;When I see a piece of software, I instantly assume that it will be helpful to some people, but Drupal philosophy is quite the oposite, it deliberately makes people life harder.&lt;br /&gt;When one installs a Drupal site, most people will not get a solution, they'll just get more problems to solve.&lt;br /&gt;Drupal states to be, and I quote, "&lt;span style="font-style:italic;"&gt;an open source content management&lt;/span&gt;", but after it has been installed, it's totally useless since no one can really manage any content except text. And let's be fair, in the 21st century, supporting only text is extremely limited.&lt;br /&gt;So, in order to support other types of content, one has to install plugins, the same plugins that should already come in the Drupal core system.&lt;br /&gt;&lt;br /&gt;Another mistake Drupal makes is it's lack of support for common &lt;a href="http://en.wikipedia.org/wiki/Search_engine_optimization"&gt;SEO&lt;/a&gt; stuff. In such a competitive world, it's a total fail not to support meta tags out of the box, again, &lt;a href="http://drupal.org/project/metatags"&gt;another plugin is required&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Only after a considerable set of plugins has been installed, activated and configured, Drupal starts to be useful.&lt;br /&gt;I consider such philosophy a real mistake because Drupal misses the whole point of software making people life easier. With such a plug-in world, Drupal makes people life harder. &lt;br /&gt;Sometimes it actually states "go and use &lt;a href="http://www.joomla.org"&gt;Joomla!&lt;/a&gt;".&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6135596956600294800?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6135596956600294800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/07/drupal-makes-people-life-harder.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6135596956600294800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6135596956600294800'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/07/drupal-makes-people-life-harder.html' title='Drupal makes people life harder.'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2258540971929905348</id><published>2011-06-16T10:58:00.004+01:00</published><updated>2011-06-16T11:03:51.375+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='avatar'/><category scheme='http://www.blogger.com/atom/ns#' term='speach'/><category scheme='http://www.blogger.com/atom/ns#' term='text-to-speach'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>Speaking Avatars</title><content type='html'>&lt;div&gt;I've found &lt;a href="http://www.sitepal.com/"&gt;SitePal&lt;/a&gt;, a speaking avatar solution.&lt;/div&gt;&lt;div&gt;The text-to-speech option itself is great for demos, videos and presentations.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2258540971929905348?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2258540971929905348/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/06/speaking-avatars.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2258540971929905348'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2258540971929905348'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/06/speaking-avatars.html' title='Speaking Avatars'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3642453787284844617</id><published>2011-06-14T11:34:00.001+01:00</published><updated>2011-06-14T11:38:09.511+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>No Capital? No Problem. What You Get For Free Is Priceless</title><content type='html'>A small post about bootstrapping a business idea without money: &lt;a href="http://onstartups.com/tabid/3339/bid/54498/No-Capital-No-Problem-What-You-Get-For-Free-Is-Priceless.aspx"&gt;No Capital? No Problem. What You Get For Free Is Priceless&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3642453787284844617?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3642453787284844617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/06/no-capital-no-problem-what-you-get-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3642453787284844617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3642453787284844617'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/06/no-capital-no-problem-what-you-get-for.html' title='No Capital? No Problem. What You Get For Free Is Priceless'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3800028209945255917</id><published>2011-06-10T11:34:00.007+01:00</published><updated>2011-06-14T12:54:31.493+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='.htaccess'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Drupal shows only front page</title><content type='html'>&lt;a href="http://www.trocaqui.net/"&gt;Trocaqui&lt;/a&gt; has gone "mad".&lt;br /&gt;It was working fine and, suddenly, it started to show the front page, no matter what link I selected nor what address I inserted in the address bar...&lt;br /&gt;This was so critical that I could't even login into the system to put the system on maintenance mode while fixing the problem...&lt;br /&gt;&lt;br /&gt;I've researched and it look to be an &lt;a href="http://drupal.org/node/249228"&gt;Apache mod_rewrite&lt;/a&gt; problem.&lt;br /&gt;It started to look like a &lt;a href="http://drupal.org/getting-started/clean-urls"&gt;clean URL&lt;/a&gt; problem so I decided to try the non-clean URL format and &lt;span style="font-style:italic;"&gt;voilá&lt;/span&gt;, &lt;a href="http://drupal.org/"&gt;Drupal&lt;/a&gt; started to responde correctly...&lt;br /&gt;Using the /?q= format I was able to login, set the system in maintenance mode and disable the clean URL format.&lt;br /&gt;By now, I was at least able to manage it.&lt;br /&gt;&lt;br /&gt;When in a similar situation, just change the clean URL with the standard Drupal format, it's actually quite easy. Just insert a &lt;span class="Apple-style-span"&gt;?q=&lt;/span&gt; between the first / and the following character.&lt;br /&gt;Here's an example: &lt;a href="http://www.trocaqui.net/forum"&gt;http://www.trocaqui.net/forum&lt;/a&gt; is equivalent to &lt;a href="http://www.trocaqui.net/?q=forum"&gt;http://www.trocaqui.net/?q=forum&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;While this was good enough as a starting point, it was not the best solution, thus I continued the quest for the real solution.&lt;br /&gt;&lt;br /&gt;I cloned the production site on my testing environment and was able to reproduce the problem, which is a great first step.&lt;br /&gt;While analyzing the problem, I've found out that my .htaccess was broke and tried to fixed it following the steps of others that had &lt;a href="http://drupal.org/node/15958"&gt;.htaccess and Clean URLs&lt;/a&gt; problems.&lt;br /&gt;Once the clean URLs were disables, I was unable to set them on again since Drupal tests clean URLs and only allows them to be activated if they will work.&lt;br /&gt;&lt;br /&gt;Here's what worked for me, I edited the .htaccess and fixed things by setting the following:&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;RewriteEngine ON&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;RewriteRule "(^|/)\." - [F]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;RewriteBase /&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;RewriteCond %{REQUEST_FILENAME} !-f&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;RewriteCond %{REQUEST_FILENAME} !-d&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; "&gt;RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Have special attention to the RewriteEngine ON, it may be case sensitive.&lt;br /&gt;&lt;br /&gt;I hope this is helpful for others with a similar problem.&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3800028209945255917?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3800028209945255917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/06/drupal-shows-only-front-page.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3800028209945255917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3800028209945255917'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/06/drupal-shows-only-front-page.html' title='Drupal shows only front page'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1737832645642198654</id><published>2011-05-10T17:38:00.001+01:00</published><updated>2011-05-10T17:39:50.407+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><title type='text'>10 Web Based Project Management Software</title><content type='html'>Here's a useful set of project management software: &lt;a href="http://www.ilovefreesoftware.com/27/webware/10-web-based-project-management-software.html"&gt;10 Web Based Project Management Software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1737832645642198654?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1737832645642198654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/05/10-web-based-project-management.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1737832645642198654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1737832645642198654'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/05/10-web-based-project-management.html' title='10 Web Based Project Management Software'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4890497821389276311</id><published>2011-05-02T11:29:00.001+01:00</published><updated>2011-05-02T11:31:00.853+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><title type='text'>Codified startup advice</title><content type='html'>&lt;a href="http://www.gabrielweinberg.com"&gt;Gabriel Weinberg&lt;/a&gt; has a great flowchart about startup advice: &lt;a href="http://www.gabrielweinberg.com/blog/2011/03/codified-advice.html"&gt;Codified startup advice&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4890497821389276311?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4890497821389276311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/05/codified-startup-advice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4890497821389276311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4890497821389276311'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/05/codified-startup-advice.html' title='Codified startup advice'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8605076565577201529</id><published>2011-05-02T11:19:00.002+01:00</published><updated>2011-05-02T11:22:02.591+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='online business'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Steve's story- Googler 13</title><content type='html'>A small but inspiring story about &lt;a href="http://www.google.com/"&gt;Google&lt;/a&gt; employee number 13: &lt;a href="http://googler13.blogspot.com/2011/01/steves-story-googler-13.html"&gt;Steve's story- Googler 13&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8605076565577201529?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8605076565577201529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/05/steves-story-googler-13.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8605076565577201529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8605076565577201529'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/05/steves-story-googler-13.html' title='Steve&apos;s story- Googler 13'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2193401715056858158</id><published>2011-04-13T19:29:00.000+01:00</published><updated>2011-04-13T19:30:36.677+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><title type='text'>10 Books Every Entrepreneur Must Read From 2010</title><content type='html'>Here's a list of books from 2010 that every entrepreneur must read: &lt;a href="http://under30ceo.com/10-books-every-entrepreneur-must-read-from-2010/?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed%3A+Under30CEOAll+%28Under30CEO%29"&gt;10 Books Every Entrepreneur Must Read From 2010&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2193401715056858158?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2193401715056858158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/10-books-every-entrepreneur-must-read.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2193401715056858158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2193401715056858158'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/10-books-every-entrepreneur-must-read.html' title='10 Books Every Entrepreneur Must Read From 2010'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6390475125431547077</id><published>2011-04-12T17:25:00.001+01:00</published><updated>2011-04-12T17:26:46.428+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web design'/><title type='text'>10 Rock Solid Website Layout Examples</title><content type='html'>Here's some nice simple and clean web desing layouts: &lt;a href="http://designshack.co.uk/articles/layouts/10-rock-solid-website-layout-examples"&gt;10 Rock Solid Website Layout Examples.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6390475125431547077?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6390475125431547077/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/10-rock-solid-website-layout-examples.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6390475125431547077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6390475125431547077'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/10-rock-solid-website-layout-examples.html' title='10 Rock Solid Website Layout Examples'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8991363550182311558</id><published>2011-04-02T17:18:00.002+01:00</published><updated>2011-04-02T17:20:55.231+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><title type='text'>Starting Up: What I Wish Someone Had Told Me 4 Years Ago</title><content type='html'>Great post about starting up. &lt;br /&gt;Core message: focus and do it. Need some inspiration? Just think you're Milton from &lt;a href="http://www.imdb.com/title/tt0151804/"&gt;Office Space&lt;/a&gt;, tucked in the corner cubicle of Innotech, staring at the red stapler, and waiting for your next pay check.&lt;br /&gt;&lt;a href="http://blog.amirkhella.com/2011/02/23/what-i-wish-someone-had-told-me-5-years-ago/"&gt;What I Wish Someone Had Told Me 4 Years Ago&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8991363550182311558?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8991363550182311558/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/starting-up-what-i-wish-someone-had.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8991363550182311558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8991363550182311558'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/starting-up-what-i-wish-someone-had.html' title='Starting Up: What I Wish Someone Had Told Me 4 Years Ago'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4425439744984566563</id><published>2011-04-01T04:56:00.000+01:00</published><updated>2011-04-01T04:57:09.504+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='car'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='drive'/><title type='text'>Google's driverless car</title><content type='html'>&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talk/stream/2011/Blank/SebastianThrun_2011-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SebastianThrun_2011-embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=1109&amp;lang=eng&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=sebastian_thrun_google_s_driverless_car;year=2011;theme=what_s_next_in_tech;theme=tales_of_invention;theme=new_on_ted_com;theme=a_taste_of_ted2011;theme=design_like_you_give_a_damn;event=TED2011;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talk/stream/2011/Blank/SebastianThrun_2011-320k.mp4&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/SebastianThrun_2011-embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=1109&amp;lang=eng&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=sebastian_thrun_google_s_driverless_car;year=2011;theme=what_s_next_in_tech;theme=tales_of_invention;theme=new_on_ted_com;theme=a_taste_of_ted2011;theme=design_like_you_give_a_damn;event=TED2011;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4425439744984566563?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4425439744984566563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/googles-driverless-car.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4425439744984566563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4425439744984566563'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/04/googles-driverless-car.html' title='Google&apos;s driverless car'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6801644182619124758</id><published>2011-03-02T09:52:00.001Z</published><updated>2011-03-02T09:54:58.576Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>How to write a simple operating system</title><content type='html'>I was reading &lt;a href="http://hackermonthly.com"&gt;Hacker Montly&lt;/a&gt; and found this interesting step-by-step article in &lt;a href="http://hackermonthly.com/issue-10.html"&gt;issue 10&lt;/a&gt; about &lt;a href="http://mikeos.berlios.de/write-your-own-os.html"&gt;How to write a simple operating system&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6801644182619124758?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6801644182619124758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/03/how-to-write-simple-operating-system.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6801644182619124758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6801644182619124758'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/03/how-to-write-simple-operating-system.html' title='How to write a simple operating system'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2464065469531751792</id><published>2011-02-14T19:12:00.001Z</published><updated>2011-02-14T19:14:20.843Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='marketing'/><title type='text'>Startup Marketing by Hacker Monthly</title><content type='html'>&lt;a href="http://hackermonthly.com"&gt;Hacker Monthly&lt;/a&gt; has a special, free, edition about &lt;a href="http://hackermonthly.com/startup-marketing.html"&gt;Startup Marketing&lt;/a&gt;.&lt;br /&gt;I trully recomend it for all entrepreneurs.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2464065469531751792?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2464065469531751792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/startup-marketing-by-hacker-monthly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2464065469531751792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2464065469531751792'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/startup-marketing-by-hacker-monthly.html' title='Startup Marketing by Hacker Monthly'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-894079049348372360</id><published>2011-02-10T14:18:00.002Z</published><updated>2011-02-10T14:37:18.940Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ftp'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='automatic'/><title type='text'>Automatic FTP</title><content type='html'>I currently need to upload of some text files via &lt;a href="http://en.wikipedia.org/wiki/Ftp"&gt;FTP&lt;/a&gt;, but since some files are big, over 5Gb, I get a lot timeouts, which stops me from using the FTP mput command.&lt;br /&gt;So, I've developed a small &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; script to automate this task and avoid the timeouts.&lt;br /&gt;It has the following features:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;can be scheduled;&lt;/li&gt;&lt;li&gt;accepts file masks;&lt;/li&gt;&lt;li&gt;assumes a default local directory where the files to be uploaded are located;&lt;/li&gt;&lt;li&gt;supports text files only;&lt;/li&gt;&lt;li&gt;opens the connection for each file transfer in order to avoid timeout problems;&lt;/li&gt;&lt;/ul&gt;Here it is:&lt;br /&gt;&lt;pre name="code" class="python"&gt;&lt;br /&gt;# -*- coding: iso-8859-15 -*-&lt;br /&gt;'''&lt;br /&gt;Automatic FTP&lt;br /&gt;'''&lt;br /&gt;&lt;br /&gt;import sys&lt;br /&gt;import string&lt;br /&gt;import ftplib&lt;br /&gt;import os&lt;br /&gt;import glob&lt;br /&gt;import datetime&lt;br /&gt;&lt;br /&gt;# Server name or IP address&lt;br /&gt;__SERVER = "server.com"&lt;br /&gt;# FTP username&lt;br /&gt;__USER = "username"&lt;br /&gt;# FTP password&lt;br /&gt;__PASSWORD = "password"&lt;br /&gt;# Default local directory were files are located to be uploaded&lt;br /&gt;__DEFAULT_LOCATION = "C:\\ftp\\upload"&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Shows the time difference.&lt;br /&gt;#&lt;br /&gt;def showTimeDifference(init):&lt;br /&gt;td = datetime.datetime.now()-init&lt;br /&gt;print "in",td.seconds,"seconds (",td.seconds/60," minutes )."&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Transfers the files&lt;br /&gt;#&lt;br /&gt;def transferFile(ftpFile):&lt;br /&gt;ftpInit = datetime.datetime.now()&lt;br /&gt;file = os.path.basename(ftpFile)&lt;br /&gt;&lt;br /&gt;print "\tTransfering:",file,&lt;br /&gt;&lt;br /&gt;ftp = ftplib.FTP(__SERVER)&lt;br /&gt;ftp.login(__USER, __PASSWORD)&lt;br /&gt;&lt;br /&gt;ftp.storlines("STOR " + str(file).upper(), open(ftpFile))&lt;br /&gt;&lt;br /&gt;ftp.close()&lt;br /&gt;&lt;br /&gt;showTimeDifference(ftpInit)&lt;br /&gt;&lt;br /&gt;print ""&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Get the files to transfer&lt;br /&gt;#&lt;br /&gt;def getTransferFiles(location, mask):&lt;br /&gt;result = []&lt;br /&gt;for file in glob.glob1(location, mask):&lt;br /&gt;result.append(os.path.join(location, file))&lt;br /&gt;&lt;br /&gt;return result&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Main&lt;br /&gt;#&lt;br /&gt;def main(args):&lt;br /&gt;fileMask = ""&lt;br /&gt;fileLocation = __DEFAULT_LOCATION&lt;br /&gt;if len(args) == 2:&lt;br /&gt;fileMask = sys.argv[1]&lt;br /&gt;elif len(args) == 3:&lt;br /&gt;fileMask = args[1]&lt;br /&gt;fileLocation = args[2]&lt;br /&gt;else:&lt;br /&gt;print "autoFTP filemask [location]"&lt;br /&gt;sys.exit(0)&lt;br /&gt;&lt;br /&gt;print "Transfer files from",fileLocation,"to", __SERVER,"..."&lt;br /&gt;ftpInit = datetime.datetime.now()&lt;br /&gt;for file in getTransferFiles(fileLocation, fileMask):&lt;br /&gt;transferFile(file)&lt;br /&gt;&lt;br /&gt;print "Transfer competed",&lt;br /&gt;showTimeDifference(ftpInit)&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# Main&lt;br /&gt;#&lt;br /&gt;main(sys.argv)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;After setting things up for one's needs, it's quite easy to use.&lt;br /&gt;To transfer all  .txt files starting with "A" from the default local directory, just:&lt;br /&gt;&lt;pre&gt;python autoFTP A*.txt&lt;/pre&gt;&lt;br /&gt;To transfer all .xml files from a specific directory "Z:\test", just:&lt;br /&gt;&lt;pre&gt;python autoFTP *.xml Z:\test&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;If one needs to adapt this to either get file, i.e. download, or to support binary file, just check the Python &lt;a href="http://www.python.org/doc//current/library/ftplib.html"&gt;ftplib&lt;/a&gt; documentation, it's quite easy.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-894079049348372360?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/894079049348372360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/automatic-ftp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/894079049348372360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/894079049348372360'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/automatic-ftp.html' title='Automatic FTP'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6768169966994726647</id><published>2011-02-08T15:51:00.003Z</published><updated>2011-02-08T15:58:13.445Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='zx'/><category scheme='http://www.blogger.com/atom/ns#' term='spectrum'/><category scheme='http://www.blogger.com/atom/ns#' term='48k'/><title type='text'>ZX Spectrum Relaunch!</title><content type='html'>I belong to the ZX Spectrum generation.&lt;br /&gt;I grew up with a rubber keyboard on the tip of my fingers and I've spent too much hours in a row in front of a black and white small television...&lt;br /&gt;&lt;br /&gt;This revolutionary machine is almost 30 years old and to celebrate that there will be a &lt;a href="http://www.telegraph.co.uk/technology/video-games/8304237/ZX-Spectrum-relaunch-gaming-goes-back-to-the-future.html"&gt;brand new ZX Spectrum 48K&lt;/a&gt;, with the same old games and some innovations... &lt;br /&gt;&lt;br /&gt;48K rocks! :)&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6768169966994726647?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6768169966994726647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/zx-spectrum-relaunch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6768169966994726647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6768169966994726647'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/zx-spectrum-relaunch.html' title='ZX Spectrum Relaunch!'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8942065088278028827</id><published>2011-02-07T16:42:00.002Z</published><updated>2011-02-07T17:05:09.186Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='consulting'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>The Math Behind Consulting Companies</title><content type='html'>An &lt;a href="http://pt.linkedin.com/in/pedrocatalao"&gt;entrepreur friend&lt;/a&gt; pointed me to this very interesting post about the math behind consulting companies.&lt;br /&gt;Here it is: &lt;a href="http://blog.asmartbear.com/consulting-company-accounting.html"&gt;The unfortunate math behind consulting companies&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8942065088278028827?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8942065088278028827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/math-behind-consulting-companies.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8942065088278028827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8942065088278028827'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/02/math-behind-consulting-companies.html' title='The Math Behind Consulting Companies'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8434161541873247734</id><published>2011-01-25T15:22:00.005Z</published><updated>2011-01-25T18:28:53.826Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='msys'/><category scheme='http://www.blogger.com/atom/ns#' term='cat'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><title type='text'>Fetching Lines From Big Files</title><content type='html'>Today I had a &lt;a href="http://en.wikipedia.org/wiki/IBM_DB2"&gt;DB2&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Bulk_insert"&gt;bulk loading&lt;/a&gt; problem. I got a couple of rejected records on a 2G+ file. These kind of files are too big to be manipulated with conventional text editors, and even text editors that can handle such files are, usually, not very fast.&lt;br /&gt;Since I was in &lt;a href="http://en.wikipedia.org/wiki/Windows_2003_server"&gt;Windows&lt;/a&gt;, I've open th &lt;a href="http://en.wikipedia.org/wiki/MSYS"&gt;MSYS&lt;/a&gt; shell, changed into the correct directory and typed&lt;br /&gt;&lt;pre name="code" class="sh"&gt;cat -n STPRRIMH.S.ULD.U110115.UN | grep 1943664 &gt; MH.txt&lt;/pre&gt;This is an instantiation of a more generic command &lt;pre name="code" class="sh"&gt;&lt;a href="http://www.computerhope.com/unix/ucat.htm"&gt;cat&lt;/a&gt; -n &lt; file &gt; | &lt;a href="http://www.computerhope.com/unix/ugrep.htm"&gt;grep&lt;/a&gt; &lt; line &gt;&lt;/pre&gt;In a few seconds I had a new file containing exactly the information I needed.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Serious developers can't really live without &lt;a href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt;/&lt;a href="http://en.wikipedia.org/wiki/Linux"&gt;Linux&lt;/a&gt; tools on their machines...&lt;br /&gt;&lt;br /&gt;./M6&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8434161541873247734?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8434161541873247734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/01/fetching-lines-from-big-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8434161541873247734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8434161541873247734'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/01/fetching-lines-from-big-files.html' title='Fetching Lines From Big Files'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1834337634972697988</id><published>2011-01-05T14:44:00.002Z</published><updated>2011-01-05T14:47:59.360Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><title type='text'>Haiku - BeOS Lives</title><content type='html'>It seems &lt;a href="http://en.wikipedia.org/wiki/BeOS"&gt;BeOS&lt;/a&gt; is still alive and truying to kick. &lt;br /&gt;A new open source project named &lt;a href="http://haiku-os.org/"&gt;Haiku&lt;/a&gt; is BeOS compatible multimedia oriented as the original project.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1834337634972697988?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1834337634972697988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/01/haiku-beos-lives.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1834337634972697988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1834337634972697988'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/01/haiku-beos-lives.html' title='Haiku - BeOS Lives'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1245460254091410881</id><published>2011-01-04T17:14:00.001Z</published><updated>2011-01-04T17:17:34.950Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='recognition'/><category scheme='http://www.blogger.com/atom/ns#' term='data visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Google Goggles Visual Search</title><content type='html'>Visual search from &lt;a href="http://en.wikipedia.org/wiki/Google"&gt;Google&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Android_(operating_system)"&gt;Andoid&lt;/a&gt;:&lt;br /&gt;&lt;object width="640" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Hhgfz0zPmH4?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Hhgfz0zPmH4?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1245460254091410881?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1245460254091410881/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2011/01/google-goggles-visual-search.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1245460254091410881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1245460254091410881'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2011/01/google-goggles-visual-search.html' title='Google Goggles Visual Search'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7092527335944373422</id><published>2010-12-30T11:30:00.001Z</published><updated>2010-12-30T11:32:15.221Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Never Steal a Hacker Machine</title><content type='html'>Here's what happens when you steal a hackers computer:&lt;br /&gt;&lt;iframe width="480" height="295" src="http://www.youtube.com/embed/U4oB28ksiIo?fs=1" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7092527335944373422?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7092527335944373422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/never-steal-hacker-machine.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7092527335944373422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7092527335944373422'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/never-steal-hacker-machine.html' title='Never Steal a Hacker Machine'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/U4oB28ksiIo/default.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7268754103288921282</id><published>2010-12-30T09:18:00.001Z</published><updated>2010-12-30T09:19:13.010Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='geek'/><title type='text'>Geek and Gamer Girls Song</title><content type='html'>&lt;iframe width="480" height="295" src="http://www.youtube.com/embed/_eJmYKN_1QE?fs=1" frameborder="0"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7268754103288921282?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7268754103288921282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/geek-and-gamer-girls-song.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7268754103288921282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7268754103288921282'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/geek-and-gamer-girls-song.html' title='Geek and Gamer Girls Song'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/_eJmYKN_1QE/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-488645968911666369</id><published>2010-12-28T14:51:00.003Z</published><updated>2010-12-28T15:07:10.633Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><title type='text'>GWT Tutorial</title><content type='html'>I'm starting to develop a &lt;a href="http://en.wikipedia.org/wiki/Software_as_a_service"&gt;SaaS&lt;/a&gt; application and I'm evaluating &lt;a href="http://code.google.com/webtoolkit/"&gt;GWT&lt;/a&gt;.&lt;br /&gt;Here's a simple tutorial for starters: &lt;a href="http://developerlife.com/tutorials/?p=80"&gt;GWT Tutorial – Introduction to GWT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-488645968911666369?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/488645968911666369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/gwt-tutorial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/488645968911666369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/488645968911666369'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/gwt-tutorial.html' title='GWT Tutorial'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5932063318083521953</id><published>2010-12-27T11:38:00.001Z</published><updated>2010-12-27T11:41:15.666Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='online business'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>The Business of Software</title><content type='html'>Here's a great post from &lt;a href="http://sethgodin.typepad.com/"&gt;Seth Godin&lt;/a&gt; about &lt;a href="http://sethgodin.typepad.com/seths_blog/2010/10/the-business-of-software.html?utm_source=feedburner&amp;utm_medium=feed&amp;utm_campaign=Feed:+typepad/sethsmainblog+(Seth's+Blog)"&gt;The Business of Software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5932063318083521953?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5932063318083521953/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/business-of-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5932063318083521953'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5932063318083521953'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/12/business-of-software.html' title='The Business of Software'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6882806608839794924</id><published>2010-11-05T15:47:00.003Z</published><updated>2010-11-05T15:51:30.706Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='startup'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Why PHP Is Fun and Easy But Python Is Marriage Material</title><content type='html'>&lt;a href="http://onstartups.com/About/AboutDharmeshShah/tabid/4147/Default.aspx"&gt;Dharmesh Shah&lt;/a&gt; has a great article about hard decisions, startups and technology.&lt;br /&gt;A must read for all tech startups: &lt;a href="http://onstartups.com/tabid/3339/bid/20493/Why-PHP-Is-Fun-and-Easy-But-Python-Is-Marriage-Material.aspx?source=Blog_Email_[Why+PHP+Is+Fun+and+E]"&gt;Why PHP Is Fun and Easy But Python Is Marriage Material&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6882806608839794924?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6882806608839794924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/11/why-php-is-fun-and-easy-but-python-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6882806608839794924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6882806608839794924'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/11/why-php-is-fun-and-easy-but-python-is.html' title='Why PHP Is Fun and Easy But Python Is Marriage Material'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1550475221899655474</id><published>2010-11-04T16:01:00.002Z</published><updated>2010-11-04T16:03:36.115Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='entrepreneur'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='motivation'/><title type='text'>Life =  Risk, Embrace it Naturally</title><content type='html'>A great motivational video for all that believe in themselves&lt;br /&gt;&lt;br /&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/_tjYoKCBYag?fs=1&amp;amp;hl=en_US"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/_tjYoKCBYag?fs=1&amp;amp;hl=en_US" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1550475221899655474?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1550475221899655474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/11/life-risk-embrace-it-naturally.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1550475221899655474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1550475221899655474'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/11/life-risk-embrace-it-naturally.html' title='Life =  Risk, Embrace it Naturally'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7310599202128563288</id><published>2010-09-21T11:46:00.001+01:00</published><updated>2010-09-21T11:50:39.261+01:00</updated><title type='text'>Chris Anderson: How web video powers global innovation</title><content type='html'>Has &lt;a href="http://www.feedblitz.com/t2.asp?/198516/12077667/3891622/http://feedproxy.google.com/~r/typepad/sethsmainblog/~3/wsNllonuP_c/beyond-crowdsourcing.html"&gt;Seth's Godin&lt;/a&gt; states:&lt;br /&gt;"Online video radically changes the reach and speed of the improvement cycle. Things like dance, snowboarding and TED talks keep getting better, and faster, because artists see the best and improve on it. Even more than that, it requires you to top what's out there, or you'll be ignored."&lt;br /&gt;&lt;br /&gt;&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always"/&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/ChrisAnderson_2010G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/ChrisAnderson-2010G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=955&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=chris_anderson_how_web_video_powers_global_innovation;year=2010;theme=media_that_matters;theme=bold_predictions_stern_warnings;theme=a_taste_of_tedglobal_2010;theme=how_we_learn;theme=not_business_as_usual;theme=the_rise_of_collaboration;theme=technology_history_and_destiny;theme=what_s_next_in_tech;event=TEDGlobal+2010;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" allowScriptAccess="always" flashvars="vu=http://video.ted.com/talks/dynamic/ChrisAnderson_2010G-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/ChrisAnderson-2010G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=955&amp;introDuration=15330&amp;adDuration=4000&amp;postAdDuration=830&amp;adKeys=talk=chris_anderson_how_web_video_powers_global_innovation;year=2010;theme=media_that_matters;theme=bold_predictions_stern_warnings;theme=a_taste_of_tedglobal_2010;theme=how_we_learn;theme=not_business_as_usual;theme=the_rise_of_collaboration;theme=technology_history_and_destiny;theme=what_s_next_in_tech;event=TEDGlobal+2010;"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7310599202128563288?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7310599202128563288/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/09/chris-anderson-how-web-video-powers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7310599202128563288'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7310599202128563288'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/09/chris-anderson-how-web-video-powers.html' title='Chris Anderson: How web video powers global innovation'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-9209044518342551429</id><published>2010-09-21T11:38:00.001+01:00</published><updated>2010-09-21T11:44:35.229+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><title type='text'>Hug a Developer</title><content type='html'>&lt;embed src="http://blip.tv/play/gYwjwZJqAg" type="application/x-shockwave-flash" width="480" height="300" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-9209044518342551429?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/9209044518342551429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/09/hug-developer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/9209044518342551429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/9209044518342551429'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/09/hug-developer.html' title='Hug a Developer'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5345824136205257777</id><published>2010-09-08T11:18:00.009+01:00</published><updated>2010-09-09T13:38:31.138+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AS/400'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='jdbc'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><title type='text'>Interpreting DB2 JDBC error messages</title><content type='html'>Every time I use &lt;a href="http://en.wikipedia.org/wiki/IBM_DB2"&gt;DB2&lt;/a&gt; on a &lt;a href="http://datamigrationdiary.blogspot.com/"&gt;data migration project&lt;/a&gt; I get awkward DB2/&lt;a href="http://en.wikipedia.org/wiki/Java_Database_Connectivity"&gt;JDBC&lt;/a&gt; errors, no matter if I'm using DB2 on &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Windows&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Unix"&gt;Unix&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/IBM_System_i"&gt;iSeries&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/AS/400"&gt;AS/400&lt;/a&gt;.&lt;br /&gt;Part of the problem is that the error messages come in Portuguese, making the debug task a lot harder since it's almost impossible to find decent help by searching through the error messages. The other part of the problem is that this leaves me the &lt;a href="http://en.wikipedia.org/wiki/SQL"&gt;SQL&lt;/a&gt; error codes, which sometimes are unclear and makes me waste time.&lt;br /&gt;Here's an example of a common problem that I usually have:&lt;br /&gt;&lt;pre name="code" class="java"&gt;com.ibm.db2.jcc.b.rg: [jcc][t4][102][10040][3.50.152] Non-atomic batch failure. The batch was submitted, but at least one exception occurred &lt;br /&gt;on an individual member of the batch. &lt;br /&gt;Use getNextException() to retrieve the exceptions for specific batched elements.&lt;br /&gt;&lt;br /&gt;com.ibm.db2.jcc.b.pm: Error for batch element #1: The current &lt;br /&gt;transaction was rolled back because of error "-289".. SQLCODE=-1476, &lt;br /&gt;SQLSTATE=40506, DRIVER=3.50.152&lt;br /&gt;&lt;br /&gt;com.ibm.db2.jcc.b.SqlException: [jcc][103][10843][3.50.152]&lt;br /&gt;[...] ERRORCODE=-4225, SQLSTATE=null&lt;br /&gt;&lt;/pre&gt;Following DB2 official documentation:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.msg.doc/doc/sql1476.htm"&gt;SQLCODE=-1476&lt;/a&gt; means that the current transaction was rolled back because of error.&lt;/li&gt;&lt;li&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/core/r0sttmsg.htm"&gt;SQLSTATE=40506&lt;/a&gt; means that the current transaction was rolled back because of an SQL error, which is basically the same as the SQLCODE above.&lt;/li&gt;&lt;li&gt;&lt;a href="http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.java/com.ibm.db2.luw.apdv.java.doc/doc/rjvjcsqc.htm"&gt;ERRORCODE=-4225&lt;/a&gt; means an error occurred when data was sent to a server or received from a server, which is totally useless.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;The real useful information is hidden in the second error message, in the '&lt;span style="font-style:italic;"&gt;transaction was rolled back because of error "-289"&lt;/span&gt;' message. The key here is &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/index.jsp?topic=/com.ibm.db2.luw.messages.sql.doc/doc/msql00289n.html"&gt;the -289 error&lt;/a&gt;.&lt;br /&gt;This error means "&lt;span style="font-style:italic;"&gt;Unable to allocate new pages in table space&lt;/span&gt;", and this is the real cause for such a big fuss.&lt;br /&gt;&lt;br /&gt;One of my DB2 table spaces run out of space and all I get is a lot of fuss about a rollback that happened because of an error but the error itself is kind of hidden in the middle of the stack trace, all that is shown is a loose error code...&lt;br /&gt;&lt;a href="http://www.ibm.com/"&gt;IBM&lt;/a&gt; has done it again, the cause of the error should be highlighted and perfectly visible and understood in order to  know what really happened and fix the problem, but making the life easier for its users seems not to be IBM way.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5345824136205257777?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5345824136205257777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/09/interpreting-db2-jdbc-error-messages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5345824136205257777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5345824136205257777'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/09/interpreting-db2-jdbc-error-messages.html' title='Interpreting DB2 JDBC error messages'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4583232335295295618</id><published>2010-08-31T09:15:00.003+01:00</published><updated>2010-08-31T09:31:30.057+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='interview'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><title type='text'>Isaac Asimov on Bill Moyers World of Ideas</title><content type='html'>1988 Interview with Isaac Asimov by Bill Moyers about learning, computers, religion, population growth, the universe.&lt;br /&gt;&lt;br /&gt;It's fantastic how Asimov previewed the usage and impact of internet in 1988&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part One&lt;/span&gt;&lt;br /&gt;&lt;object style="background-image:url(http://i2.ytimg.com/vi/1CwUuU6C4pk/hqdefault.jpg)" height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/1CwUuU6C4pk?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/1CwUuU6C4pk?fs=1&amp;amp;hl=en_US" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Part Two&lt;/span&gt;&lt;br /&gt;&lt;object style="background-image:url(http://i4.ytimg.com/vi/CJAIERgWhZQ/hqdefault.jpg)" height="344" width="425"&gt;&lt;param name="movie" value="http://www.youtube.com/v/CJAIERgWhZQ?fs=1&amp;amp;hl=en_US"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;embed src="http://www.youtube.com/v/CJAIERgWhZQ?fs=1&amp;amp;hl=en_US" allowscriptaccess="never" allowfullscreen="true" wmode="transparent" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4583232335295295618?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4583232335295295618/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/08/isaac-asimov-on-bill-moyers-world-of.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4583232335295295618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4583232335295295618'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/08/isaac-asimov-on-bill-moyers-world-of.html' title='Isaac Asimov on Bill Moyers World of Ideas'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-581045609869562816</id><published>2010-07-29T17:20:00.001+01:00</published><updated>2010-07-29T17:21:43.836+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='traceroute'/><title type='text'>Writing your own traceroute in Python through 8 easy steps</title><content type='html'>Great post in &lt;a href="http://blog.ksplice.com/"&gt;Kslice&lt;/a&gt; on implementing &lt;a href="http://en.wikipedia.org/wiki/Traceroute"&gt;traceroute&lt;/a&gt; in &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://blog.ksplice.com/2010/07/learning-by-doing-writing-your-own-traceroute-in-8-easy-steps/"&gt;Learning by doing: Writing your own traceroute in 8 easy steps&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-581045609869562816?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/581045609869562816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/07/writing-your-own-traceroute-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/581045609869562816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/581045609869562816'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/07/writing-your-own-traceroute-in-python.html' title='Writing your own traceroute in Python through 8 easy steps'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8774927983969554486</id><published>2010-06-24T14:02:00.003+01:00</published><updated>2010-06-24T14:14:58.488+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>MySQL Partitioning</title><content type='html'>I was researching about MySQL performance for a new web project when I came across whit &lt;a href="http://dev.mysql.com/doc/refman/5.5/en/partitioning.html"&gt;partitioning&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;After reading &lt;a href="http://dev.mysql.com/tech-resources/articles/performance-partitioning.html"&gt;Improving Database Performance with Partitioning&lt;/a&gt; and &lt;a href="http://www.scribd.com/doc/2085418/MySQL-Partitioning"&gt;MySQL Partitioning&lt;/a&gt;, I thought "&lt;span style="font-style: italic;"&gt;this is great, I'll use it&lt;/span&gt;", but after reading &lt;a href="http://www.slideshare.net/datacharmer/mysql-partitions-tutorial"&gt;MySQL partitions tutorial&lt;/a&gt;, and since I'm using &lt;a href="http://en.wikipedia.org/wiki/InnoDB"&gt;InnoDB&lt;/a&gt;, I though "maybe this is not such a good idea since storage may be a problem and the performance boost may not be that significant for this project".&lt;br /&gt;&lt;br /&gt;In short, one has to perform some tests in order to decide.&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8774927983969554486?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8774927983969554486/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/06/mysql-partitioning.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8774927983969554486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8774927983969554486'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/06/mysql-partitioning.html' title='MySQL Partitioning'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-995568192004172635</id><published>2010-05-26T23:07:00.004+01:00</published><updated>2010-05-26T23:10:19.321+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>List of Free and Open Source Software Packages</title><content type='html'>I was searching for a Linux application server when I came across with this useful&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_free_and_open_source_software_packages"&gt;list of free and open source software packages&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It's a great starting point when one knows what one needs but doesn't really have a reference.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-995568192004172635?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/995568192004172635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/05/list-of-free-and-open-source-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/995568192004172635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/995568192004172635'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/05/list-of-free-and-open-source-software.html' title='List of Free and Open Source Software Packages'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5060740987597136785</id><published>2010-05-21T22:29:00.002+01:00</published><updated>2010-05-21T22:36:56.412+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amd'/><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>ATI Mobility Radeon X700 on openSUSE</title><content type='html'>As I've &lt;a href="http://m6onsoftware.blogspot.com/2009/12/opensuse.html"&gt;previously posted&lt;/a&gt;, I'm now using  &lt;a href="http://www.opensuse.org/"&gt;openSUSE&lt;/a&gt; and my &lt;a href="http://ati.amd.com/products/mobilityradeonx700/index.html"&gt;ATI Mobility Radeon X700&lt;/a&gt; was not fully functional.&lt;br /&gt;&lt;br /&gt;After some investigation, I've found out that &lt;a href="http://support.amd.com/us/gpudownload/linux/Legacy/Pages/radeon_linux.aspx?type=2.4.1&amp;amp;product=2.4.1.3.19&amp;amp;lang=English"&gt;AMD no longer supports old ATI video cards&lt;/a&gt; for Linux.&lt;br /&gt;I've even tried &lt;a href="http://wiki.opensuse.org/SDB:ATI_drivers"&gt;http://wiki.opensuse.org/SDB:ATI_drivers&lt;/a&gt; but with no luck.&lt;br /&gt;&lt;br /&gt;Definitely this is one extra point for nVidia. When I replace my current laptop, it will have an nVidia card, that's for sure.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5060740987597136785?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5060740987597136785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/05/ati-mobility-radeon-x700-on-opensuse.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5060740987597136785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5060740987597136785'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/05/ati-mobility-radeon-x700-on-opensuse.html' title='ATI Mobility Radeon X700 on openSUSE'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3038168739920729163</id><published>2010-05-06T15:35:00.001+01:00</published><updated>2010-05-06T15:35:30.480+01:00</updated><title type='text'>Drupal vs Joomla!</title><content type='html'>I've launched a new free item exchange service for the Portuguese speaking  community: &lt;a href="http://www.trocaqui.net/"&gt;Trocaqui&lt;/a&gt;.&lt;br /&gt;I've implemented it using &lt;a href="http://drupal.org/"&gt;Drupal&lt;/a&gt;, for the user front-end, and that raised a lot of questions. Many people asked me, "why Drupal and not &lt;a href="http://www.joomla.org/"&gt;Joomla!&lt;/a&gt;" and "you're using a CMS, what's the difference between Drupal and the others".&lt;br /&gt;So, I've decided to write a bit about the Trocaqui project and why Drupal.&lt;br /&gt;&lt;br /&gt;When I started the project, I've (obviously) evaluated some options, writing from scratch, using a framework, using a CMS, etc.. I did not wish to code it from scratch nor to use some framework that would left all the hard work to me. I already knew &lt;a href="http://www.mamboserver.com/"&gt;Mambo&lt;/a&gt;, Joomla! and Drupal. From those I've used Mambo, which I've dropped in favor of Joomla!, since it is like the natural evolution of Mambo.&lt;br /&gt;&lt;br /&gt;After some analysis, I've came to the point where it was either Joomla! or Drupal. I grabbed them both and perform some tests to see which would respond best to my main requirements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Translatable (i18n for Portuguese)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Easy to use for the end user&lt;/li&gt;&lt;li&gt;Extensible&lt;/li&gt;&lt;li&gt;Expandable&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Forum support&lt;/li&gt;&lt;li&gt;Image management support&lt;/li&gt;&lt;li&gt;Flexible and easy user access configuration setup&lt;/li&gt;&lt;li&gt;Easily costumizable&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I've begun the tests by setting up the systems which was an easy task for both of them.&lt;br /&gt;&lt;br /&gt;Joomla! is ready to be used just out-of-the-box. It allows one to manage text and images, it comes with a WYSIWYG text editor and is quite easy to understand. Almost everything is where one expects it to be. So, finding an option and using it is straightforward.&lt;br /&gt;On the other hand, Drupal is not so usable out-of-the-box. It just supports text and doesn't came with an WYSIWYG editor.&lt;br /&gt;&lt;br /&gt;So, some additional modules were necessary in order to expand Drupal to support my needs.&lt;br /&gt;&lt;br /&gt;When it comes to module/plugin installation, in Drupal it is totally manual, so are the upgrades.&lt;br /&gt;One has to uncompressed the file contents into a specific directory, the go to the modules section in the administration menu to activate it. Then one has to configure it.&lt;br /&gt;Sometimes this is not as easy as it seems and some technical background is required in order to setup things correctly.&lt;br /&gt;&lt;br /&gt;Drupal does not come with a WYSIWYG text editor.&lt;br /&gt;Since I needed a rich text  editor, I had to test editors before selecting one that  worked as I needed. It was a bit painful because I had to test some and that took more time than I was initially expecting.&lt;br /&gt;&lt;br /&gt;Drupal does not come with an image module.&lt;br /&gt;A content management that cannot manage much beside text is not very useful.&lt;br /&gt;Thus, the quest of an image module began. I've found Drupal has many modules that support images. And I've also found out that the reason for this proliferation of image modules is that because they all suck. There's not one good image module for Drupal, so it seems that everyone that needs one, develops one.&lt;br /&gt;After some digging and testing, I've finally found an image module that suited half my needs. After some more digging, I've found another module that was suited for the other half of my needs.&lt;br /&gt;Everyone that needs images on their CMS should check if Drupal modules fit their needs before going for Drupal.&lt;br /&gt;&lt;br /&gt;Drupal working philosophy is not straightforward.&lt;br /&gt;In Drupal, things are not were one expects it to be. It works with a organization and, to me, it complicates things, making it far more complicated that it should and needed to be.&lt;br /&gt;Even today sometimes I take 10 or 15 seconds looking around for a specific option. It is not administrator friendly, specially if you don't work with it often.&lt;br /&gt;&lt;br /&gt;None came with a forum solution, so I had to install one on each of the  systems.&lt;br /&gt;&lt;br /&gt;Finally I've finished setting up the systems.&lt;br /&gt;Drupal had been painful so far, and I was loosing some consideration about it. But people do refer to it as a great CMS, so I decide to continue according to my plan.&lt;br /&gt;&lt;br /&gt;It was time to evaluate things regarding my functional needs.&lt;br /&gt;An here's the turning point favoring Drupal.&lt;br /&gt;&lt;br /&gt;Joomla! does not come with flexible user parameters. But Drupal does.&lt;br /&gt;In Drupal, the core user module allows one to defined specific parameters and corresponding value types in a very easy way. Probably Joomla! allows it to, but I didn't invest much time searching for such a module/plugin.&lt;br /&gt;&lt;br /&gt;Joomla! does not allow drag-and-drop.&lt;br /&gt;In Drupal, it is easy to move things using the mouse, just drag that menu option and drop it where you want it, do this option as many times as needed and the push the save button. This seems a minor issue, even from me (I'm a less &lt;a href="http://en.wikipedia.org/wiki/WIMP_%28computing%29"&gt;WIMP&lt;/a&gt; than the average), but the amount of work that I was performing with such easiness allowed me to be far more productive than doing the same similar task in Joomla!.&lt;br /&gt;&lt;br /&gt;Everything was going fine until I found a show stopper bug. I had so many exchange categories that Drupal stop ignoring the exchange category order I was specifying.&lt;br /&gt;Not even the weights were working. I even tried banging directly on the database, but even though the items were not showing up in the correct order.&lt;br /&gt;This forced me to stop the project for some weeks while finding the solution.&lt;br /&gt;I did found out that I was not the only one complaining about this bug, it is know for years but yet, Drupal seems to be ignoring it.&lt;br /&gt;I had &lt;a href="http://drupal.org/node/649538"&gt;posted this problem in Drupal forum&lt;/a&gt; but was starting to think in abandon Drupal because it seemed that there was no solution .&lt;br /&gt;But suddenly a specific module for my problem came from &lt;a href="http://drupal.org/user/70688"&gt;Ben&lt;/a&gt;. He was just fantastic in helping me with this problem, he developed a small module, with a few lines of code, that solved the problem. I was on the move again.&lt;br /&gt;&lt;br /&gt;I needed to create a template for the user to use when posting a new exchange item.&lt;br /&gt;This revealed the true power of Drupal and why technical people love it. In Joomla! I needed to bang the forum module source code and use that modified module and, when a new version came out, do the same.&lt;br /&gt;In Drupal I only needed to create a hook. A hook is like a handler that overrides the original code. You just say, when this event happens, I wish to do such and such. It was not easy to find out the correct data in the data structure that I needed to modify, I was new to Drupal programming. But once I've found the data I needed to modify, it revealed simple, easy and clean. I was dazzled with such simplicity and by then I had no doubts whatsoever that Drupal was the way to go.&lt;br /&gt;&lt;br /&gt;Translating things to Portuguese also revealed much easier in Drupal. Both systems do have translation files for their modules, but Drupal allows one to translate things on the fly. Drupal has a translation interface that does not require the user to edit the translation file and upload it into the server.&lt;br /&gt;&lt;br /&gt;Permission configuration also revealed a bit simpler in Drupal. I've just configured the read, write and administer accesses of each module for registered and non-registered users.&lt;br /&gt;&lt;br /&gt;Finally I wanted to create a specific home page to show to everyone that landed on the site.&lt;br /&gt;I've never done such thing in Joomla! and frankly, by then, I did not bothered to see what solutions were out there for this.&lt;br /&gt;In Drupal there's a specific front page module that is just fantastic. I've created a specific home page for non authenticated users and another to authenticated users. It was just simple.&lt;br /&gt;&lt;br /&gt;After all this quest here's what I've learned:&lt;br /&gt;I recommend Joomla! for non-technical people and for web sites that do not require awkward requirements. It's great out-of-the-box and much easier to work with. But when things get though, you'll need a technical guy and you'll want Drupal supporting your site, even if it costs you a lot of time to learn how to use it.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3038168739920729163?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3038168739920729163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/05/drupal-vs-joomla.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3038168739920729163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3038168739920729163'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/05/drupal-vs-joomla.html' title='Drupal vs Joomla!'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7142201920654010560</id><published>2010-04-19T14:59:00.002+01:00</published><updated>2010-04-19T15:41:02.843+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='mysql'/><title type='text'>Common MySQL Queries</title><content type='html'>While looking for a MySQL Rank function, which does not currently exist, I've found this useful&lt;a href="http://www.artfulsoftware.com/infotree/mysqlquerytree.php"&gt; Common MySQL Queries&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7142201920654010560?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7142201920654010560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/04/common-mysql-queries.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7142201920654010560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7142201920654010560'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/04/common-mysql-queries.html' title='Common MySQL Queries'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3290573474781434986</id><published>2010-04-06T13:55:00.003+01:00</published><updated>2010-04-06T14:19:04.403+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cms'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><title type='text'>Drupal contact limitation</title><content type='html'>I've just set up a Portuguese speaking item exchange free service, named &lt;a href="http://www.trocaqui.net/"&gt;Trocaqui&lt;/a&gt;, based on &lt;a href="http://www.drupal.org/"&gt;Drupal&lt;/a&gt;. And I'm, obliviously, the website administrator.&lt;br /&gt;&lt;br /&gt;I was contacting some of the earliest registered users when Drupal showed the following message:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;Não pode contactar mais do que 3 utilizadores por hora. Por favor, tente novamente mais tarde. &lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;It means "&lt;span style="font-style: italic;"&gt;You cannot contact more than 3 users per hour. Please try again later.&lt;/span&gt;".&lt;br /&gt;What kind of stupid limitation is this? I do understand this limitation when applied to common users, but the administrator?&lt;br /&gt;Seriously, why can't the administrator use his own system without artificial limitations?&lt;br /&gt;&lt;br /&gt;I've searched the subject and found out that, obviously, I was not the only one complaining about this for years, and there is no real workaround for it. So, I've just increased the number of messages per hour and will have to reconfigure it back when I finish the user contact task.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3290573474781434986?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3290573474781434986/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/04/drupal-contact-limitation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3290573474781434986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3290573474781434986'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/04/drupal-contact-limitation.html' title='Drupal contact limitation'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6726190784738239680</id><published>2010-03-19T13:31:00.003Z</published><updated>2010-03-19T13:36:44.374Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='model'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><title type='text'>Database Models Library</title><content type='html'>I've just found this &lt;a href="http://www.databaseanswers.org/data_models/"&gt;library of database models&lt;/a&gt;. It is a big collection of database models useful for faster kick-offs.&lt;br /&gt;It is hosted by &lt;a href="http://www.databaseanswers.org/"&gt;Database Answers&lt;/a&gt; and there are far more useful information there. It's a great resource.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6726190784738239680?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6726190784738239680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/03/database-models-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6726190784738239680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6726190784738239680'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/03/database-models-library.html' title='Database Models Library'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1494995917475819048</id><published>2010-03-15T17:23:00.006Z</published><updated>2010-03-15T17:51:41.997Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse application'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='jface'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='swt'/><title type='text'>SWT File Dialog</title><content type='html'>During the development of an &lt;a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform"&gt;Rich Client Platform&lt;/a&gt; (RCP) I needed to perform a file browse, here's how to show a file dialog in &lt;a href="http://en.wikipedia.org/wiki/Standard_Widget_Toolkit"&gt;SWT&lt;/a&gt;:&lt;br /&gt;&lt;pre name="code" class="java"&gt;&lt;br /&gt;import org.eclipse.swt.widgets.FileDialog;&lt;br /&gt;&lt;br /&gt;FileDialog dialog = new FileDialog(this.getShell(), SWT.NULL);&lt;br /&gt;dialog.setFilterExtensions(new String[] { "*.txt", "*.*" });&lt;br /&gt;dialog.setFilterNames(new String[] { "Text files", "All files" });&lt;br /&gt;String path = dialog.open();&lt;br /&gt;if (path != null) {&lt;br /&gt; File file = new File(path);&lt;br /&gt; if (file.isFile()) {&lt;br /&gt;  System.out.println(file.toString());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The snippet above filters by text files (*.txt) and all files (*.*) only, and it can be easily applied to any button or file menu option click event.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1494995917475819048?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1494995917475819048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/03/swt-file-dialog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1494995917475819048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1494995917475819048'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/03/swt-file-dialog.html' title='SWT File Dialog'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7173513718812525148</id><published>2010-02-24T15:15:00.003Z</published><updated>2010-02-24T15:20:41.019Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java Virtual Machine Process Status Tool</title><content type='html'>Do your know &lt;a href="http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html"&gt;jps&lt;/a&gt;?&lt;br /&gt;It's the &lt;a href="http://en.wikipedia.org/wiki/Java_virtual_machine"&gt;Java Virtual Machine&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Process_%28computing%29"&gt;Process&lt;/a&gt; Status Tool, which means it will show the status of your java processes.&lt;br /&gt;Ever had the need to kill a Java process from an endless list of Java processes running on a server?&lt;br /&gt;Just type &lt;span style="font-size:95%;"&gt;&lt;span style="font-family: courier new;"&gt;jps -m&lt;/span&gt;&lt;/span&gt; to discover the &lt;a href="http://en.wikipedia.org/wiki/Process_identifier"&gt;PID&lt;/a&gt; of the process you wish to kill...&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7173513718812525148?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7173513718812525148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/java-virtual-machine-process-status.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7173513718812525148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7173513718812525148'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/java-virtual-machine-process-status.html' title='Java Virtual Machine Process Status Tool'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-662327134638991927</id><published>2010-02-22T14:08:00.002Z</published><updated>2010-02-22T14:15:02.795Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='engine'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Panjiva</title><content type='html'>&lt;a href="http://panjiva.com/"&gt;Panjiva&lt;/a&gt; is an interesting search engine dedicated to company business.&lt;br /&gt;It has interesting business and marketing features for markets and companies.&lt;br /&gt;The search/index algorithm seems to need some tuning, some searches result non-relevant results in top places.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-662327134638991927?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/662327134638991927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/panjiva.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/662327134638991927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/662327134638991927'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/panjiva.html' title='Panjiva'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2596816398147760329</id><published>2010-02-19T17:01:00.002Z</published><updated>2010-02-19T17:05:34.936Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='metrics'/><category scheme='http://www.blogger.com/atom/ns#' term='online business'/><category scheme='http://www.blogger.com/atom/ns#' term='saas'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>SaaS Metrics – A Guide to Measuring and Improving What Matters</title><content type='html'>I've came across with this great post about Software as a Service metrics aimed to improve what matters, essentially cash, profitability and growth.&lt;br /&gt;&lt;br /&gt;Here it is: &lt;a href="http://venturefizz.com/blog/saas-metrics-%E2%80%93-guide-measuring-and-improving-what-matters"&gt;SaaS Metrics – A Guide to Measuring and Improving What Matters&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2596816398147760329?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2596816398147760329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/saas-metrics-guide-to-measuring-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2596816398147760329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2596816398147760329'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/saas-metrics-guide-to-measuring-and.html' title='SaaS Metrics – A Guide to Measuring and Improving What Matters'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4490079779989297718</id><published>2010-02-15T10:14:00.002Z</published><updated>2010-02-15T10:17:57.997Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Sunny Bates on Passion, Fear and Balance</title><content type='html'>&lt;object width="400" height="225"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=9401903&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=9401903&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;I'm not afraid to fail. It's not trying that scares me...&lt;br /&gt;&lt;br /&gt;Via &lt;a href="http://vimeo.com/user2522025"&gt;Seth Godin&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4490079779989297718?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4490079779989297718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/sunny-bates-on-passion-fear-and-balance.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4490079779989297718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4490079779989297718'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/sunny-bates-on-passion-fear-and-balance.html' title='Sunny Bates on Passion, Fear and Balance'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3815454130856647158</id><published>2010-02-09T10:57:00.002Z</published><updated>2010-02-09T11:10:53.729Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='store procedure'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><title type='text'>Execute Commands Inside DB2 Procedures</title><content type='html'>I was looking for a way to call &lt;a href="http://en.wikipedia.org/wiki/IBM_DB2"&gt;DB2&lt;/a&gt; &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/topic/com.ibm.db2.udb.doc/core/r0001980.htm?resultof=%22%72%75%6e%73%74%61%74%73%22%20%22%72%75%6e%73%74%61%74%22%20"&gt;runstats&lt;/a&gt;, a non-&lt;a href="http://en.wikipedia.org/wiki/SQL"&gt;SQL&lt;/a&gt; command, from inside a store procedure.&lt;br /&gt;It turns out that it is actually quite easy. All one has to do is to use the &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0012547.htm"&gt;ADMIN_CMD&lt;/a&gt; procedure from the SYSPROC schema.&lt;br /&gt;&lt;br /&gt;ADMIN_CMD is used by applications to run DB2 command line processor administrative commands using the SQL CALL statement.&lt;br /&gt;&lt;br /&gt;Here's how to do it: &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0012547.htm"&gt;ADMIN_CMD&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3815454130856647158?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3815454130856647158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/execute-commands-inside-db2-procedures.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3815454130856647158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3815454130856647158'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/execute-commands-inside-db2-procedures.html' title='Execute Commands Inside DB2 Procedures'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3108928950206572635</id><published>2010-02-03T11:08:00.005Z</published><updated>2010-02-03T11:32:27.610Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>How Technology Can Screw Business</title><content type='html'>I'm searching for an automatic &lt;a href="http://en.wikipedia.org/wiki/SMS"&gt;SMS&lt;/a&gt; send service, something sending a SMS via a web service.&lt;br /&gt;Somehow two of the biggest Portuguese mobile operators, &lt;a href="http://www.tmn.pt/"&gt;TMN&lt;/a&gt; and &lt;a href="http://www.optimus.pt/"&gt;Optimus&lt;/a&gt;, don't provide this information on their web site, contrary to &lt;a href="http://www.vodafone.pt/"&gt;Vodafone&lt;/a&gt; that &lt;a href="http://www.empresas.vodafone.pt/solucoesescritorio/Messaging/"&gt;explains all their solutions and provides the corresponding prices and conditions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This has forced me to contact the operators personally, so that their sales team can engage in a conversation with me and try their sales techniques that I'm already immune to.&lt;br /&gt;For TMN I've requested that they call me back "immediately" as their form option said, but no phone call came from them. Maybe its because I'm competitor customer and they don't wish to make business with me. Or maybe it's just the form submission that didn't work. Whatever has happened, TMN did not called me back.&lt;br /&gt;For Optimus, I've sent them an email to a specific email address that they provide in their web site. Here's the response:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Delivery has failed to these recipients or distribution lists:&lt;br /&gt;&lt;br /&gt;16939@optimusnegocios.pt&lt;br /&gt;The recipient's mailbox is full and can't accept messages now.&lt;br /&gt;Microsoft Exchange will not try to redeliver this message for you.&lt;br /&gt;Please try resending this message later, or contact the recipient direct&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Isn't it great when technology screws your business big time?&lt;br /&gt;&lt;br /&gt;I don't know what happened with TMN, but clearly something went totally wrong. It may have not been a technical problem, but in that case my contacts were loaded in their call center database and they've should have called me by now.&lt;br /&gt;&lt;br /&gt;When it comes to Optimus, well, the answer is clear. Someone forgot to delete some old mails, haven't they? Or someone goofed big time with &lt;a href="http://en.wikipedia.org/wiki/Microsoft_Exchange_Server"&gt;Microsoft Exchange Server&lt;/a&gt;, why is it configured to ignore customers? (Side Note: I love the last sentence where I should "contact the recipient direct", what am I doing by sending the recipient a direct email? I'm not contacting it through a middle man...)&lt;br /&gt;&lt;br /&gt;Whatever the problem was, I'm almost positive that it was technical and that is how technology can screw business: by pushing them to competitors. What would their shareholders react if they knew this?&lt;br /&gt;Good work Vodafone, it seems you're the one and only Portuguese mobile company that truly cares about your customers, at least you don't ignore them.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3108928950206572635?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3108928950206572635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/how-technology-can-screw-business.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3108928950206572635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3108928950206572635'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/02/how-technology-can-screw-business.html' title='How Technology Can Screw Business'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5817621224450350476</id><published>2010-01-12T13:25:00.002Z</published><updated>2010-01-12T13:27:47.627Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='data visualization'/><title type='text'>Data Visualization</title><content type='html'>Data visualization changes the way people capture, understand, and even recall information.&lt;br /&gt;&lt;br /&gt;Here's a five minutes presentation on the subject:&lt;br /&gt;&lt;embed src="http://blip.tv/play/g9M1gbi4eQI%2Em4v" type="application/x-shockwave-flash" width="480" height="300" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt; &lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5817621224450350476?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5817621224450350476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/01/data-visualization.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5817621224450350476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5817621224450350476'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/01/data-visualization.html' title='Data Visualization'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-233528110456972237</id><published>2010-01-05T17:09:00.003Z</published><updated>2010-01-05T17:16:48.085Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='open xml'/><title type='text'>Open XML: The Markup Explained</title><content type='html'>I've just found an ebook that technically explains the &lt;a href="http://en.wikipedia.org/wiki/Office_Open_XML"&gt;Open XML&lt;/a&gt; format in a simple way with some examples. It's great for all that wish to start using this format.&lt;br /&gt;&lt;br /&gt;Here it is: &lt;a href="http://www.e-booksdirectory.com/details.php?ebook=1181"&gt;Open XML - The markup explained&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;And for more information, check out the &lt;a href="http://openxmldeveloper.org/"&gt;OpenXML Developer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-233528110456972237?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/233528110456972237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2010/01/open-xml-markup-explained.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/233528110456972237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/233528110456972237'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2010/01/open-xml-markup-explained.html' title='Open XML: The Markup Explained'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6154955032005037782</id><published>2009-12-22T11:19:00.008Z</published><updated>2009-12-22T12:12:07.866Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ftth'/><category scheme='http://www.blogger.com/atom/ns#' term='zon'/><category scheme='http://www.blogger.com/atom/ns#' term='tvtel'/><category scheme='http://www.blogger.com/atom/ns#' term='speed'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='optical fiber'/><category scheme='http://www.blogger.com/atom/ns#' term='fiber'/><category scheme='http://www.blogger.com/atom/ns#' term='isp'/><category scheme='http://www.blogger.com/atom/ns#' term='connect'/><title type='text'>ZON ISP (Bad) as Usual</title><content type='html'>I'm considering changing my &lt;a href="http://en.wikipedia.org/wiki/Internet_Service_Provider"&gt;Internet Service Provider&lt;/a&gt; (ISP).&lt;br /&gt;&lt;br /&gt;I currently have a optical fiber connection, fiber to the home (&lt;a href="http://en.wikipedia.org/wiki/Fiber_to_the_x"&gt;FTTH&lt;/a&gt;), from &lt;a href="http://www.zon.pt/tvtel/"&gt;TVTel&lt;/a&gt; at 30Mbit/s.&lt;br /&gt;But TVTel was acquired by &lt;a href="http://www.zon.pt/"&gt;ZON&lt;/a&gt; and so I'm considered migrating to it, since the value for money seems better, at approximately the same cost I can get a 50Mbit/s optical fiber connection.&lt;br /&gt;&lt;br /&gt;But ZON has three major problems:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Extremely bad reputation when it comes to ISP;&lt;/li&gt;&lt;li&gt;Lousy customer service;&lt;/li&gt;&lt;li&gt;the ZON optical fiber solution is not  FTTH.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;They are fighting the first couple of problems and the fact is that the number of complaints against them has seen a serious decrease.&lt;br /&gt;But all this made me delay the decision for some months, to see if there were other ISPs that would provide me FTTH.&lt;br /&gt;Unfortunately no one else provides FTTH on the area, and since ZON seems to be discontinuing the TVTel infrastructure that they bought, that leaves the optical fiber to the local node and coaxial cable solution.&lt;br /&gt;&lt;br /&gt;So, I decided to give it a try, specially because there is a one month trial period were one can cancel the service if one is not satisfied.&lt;br /&gt;And currently, I'm not a satisfied customer. The 50Mbit/s connection on the signed contract is actually working at less than 10% of the speed.&lt;br /&gt;Here is this morning speed measure from the organization responsible for the internet in Portugal, &lt;a href="http://www.fccn.pt/"&gt;Fundação para a Computação Científica Nacional&lt;/a&gt;&lt;br /&gt;(FCCN), where it says that this morning I almost got an "astonishing" 5Mbit/s connection:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GeVl3XPGXfk/SzCuBluasOI/AAAAAAAAAC0/UgQUTTBmXOA/s1600-h/speed-zon-01-geral.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 260px;" src="http://3.bp.blogspot.com/_GeVl3XPGXfk/SzCuBluasOI/AAAAAAAAAC0/UgQUTTBmXOA/s400/speed-zon-01-geral.jpg" alt="" id="BLOGGER_PHOTO_ID_5418021694056607970" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;ZON internet connection speed meter.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Look at the red graph speed on the right of the picture. Yes, it says that if we were in 2002 and using an &lt;a href="http://en.wikipedia.org/wiki/Adsl"&gt;ADSL&lt;/a&gt; 4Mbit/s connect that would be great. Unfortunately this we're on the end of the first decade of the 21st Century and I have a signed contract for 50Mbit/s.&lt;br /&gt;For details, check the numbers on the left, the first number is the maximum download speed, the second is the average download speed, the third is the maximum upload speed and the fourth is the average upload speed.&lt;br /&gt;There's no doubt what so ever, ZON optical fiber connection is easily beaten by a 8Mbit/s ADSL connection.&lt;br /&gt;&lt;br /&gt;Here's the download information detail&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GeVl3XPGXfk/SzCv5tBoCvI/AAAAAAAAAC8/Qi22AHAZnK4/s1600-h/speed-zon-02-download.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 260px;" src="http://1.bp.blogspot.com/_GeVl3XPGXfk/SzCv5tBoCvI/AAAAAAAAAC8/Qi22AHAZnK4/s400/speed-zon-02-download.jpg" alt="" id="BLOGGER_PHOTO_ID_5418023757600525042" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;ZON internet download speed.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Check the graphs on the bottom. It not even gets close to 5Mbit/s and the average speed is just above 1.2Mbit/s and the speed is just not constant, it jumps up and down.&lt;br /&gt;Remember that this is an optical fiber 50Mbits/s connection.&lt;br /&gt;&lt;br /&gt;And here is my current TV Tel 30Mbit/s download speed data, taken immediately after I got the lousy speed from ZON.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GeVl3XPGXfk/SzCxDPCq6AI/AAAAAAAAADE/cGo4qq3rnDQ/s1600-h/speed-tvtel-02-download.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 260px;" src="http://1.bp.blogspot.com/_GeVl3XPGXfk/SzCxDPCq6AI/AAAAAAAAADE/cGo4qq3rnDQ/s400/speed-tvtel-02-download.jpg" alt="" id="BLOGGER_PHOTO_ID_5418025020862162946" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;TVTel internet download speed.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;The average speed is just below 22MBit/s, the first value on the left. The maximum speed is just above 22MBit/s and the minimum speed is just above 20Mbit/s. The connection is stable, regular, linear, smooth and, above all, fast!&lt;br /&gt;&lt;br /&gt;Let me correct my first sentence on this post: "I was considering changing my ISP", because with a service like this one, ZON will definitely not get a contract with me.&lt;br /&gt;But the first ISP that provides me FTTH will probably.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6154955032005037782?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6154955032005037782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/zon-isp-bad-as-usual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6154955032005037782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6154955032005037782'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/zon-isp-bad-as-usual.html' title='ZON ISP (Bad) as Usual'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_GeVl3XPGXfk/SzCuBluasOI/AAAAAAAAAC0/UgQUTTBmXOA/s72-c/speed-zon-01-geral.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5546768288049259958</id><published>2009-12-16T16:52:00.004Z</published><updated>2009-12-16T17:37:17.270Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='grub'/><category scheme='http://www.blogger.com/atom/ns#' term='opensuse'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='hard disk'/><category scheme='http://www.blogger.com/atom/ns#' term='hard drive'/><category scheme='http://www.blogger.com/atom/ns#' term='fdisk'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='crash'/><title type='text'>Recovering from a bad Hard Disk Crash</title><content type='html'>Last time I've used my computer I burned a DVD Video with &lt;a href="http://k3b.plainblack.com/"&gt;K3B&lt;/a&gt; and shutdown &lt;a href="http://www.opensuse.org/"&gt;openSUSE&lt;/a&gt; as usual.&lt;br /&gt;&lt;br /&gt;Yesterday, when I turned the computer on, it went directly into &lt;a href="http://www.gnu.org/software/grub/"&gt;GRUB&lt;/a&gt; shell which allowed me to execute some commands with no real use to me.&lt;br /&gt;&lt;br /&gt;Obviously something was wrong, and I though that it was the &lt;a href="http://en.wikipedia.org/wiki/Master_boot_record"&gt;Master Boot Record&lt;/a&gt; (MBR) that got corrupted, as I've already have experienced before.&lt;br /&gt;So I got the openSUSE installation disk and boot with it in order to fix the problem.  I've requested the fix option from the menu but then something weird happened.&lt;br /&gt;When scanning the hard disk, it displayed a message that there was something wrong and I would not be able to edit the disk partitions. I checked the partitions and the information seems to show that everything was OK.&lt;br /&gt;I needed something else to see what was wrong with the hard disk and to fix it.&lt;br /&gt;&lt;br /&gt;I grabbed an old &lt;a href="http://www.knoppix.net/"&gt;Knoppix&lt;/a&gt; CD, version 3.3, the only one that I know that loads correctly on my &lt;a href="http://www.acer.com/"&gt;Acer&lt;/a&gt; laptop (by the way, don't by an Accer if you wish to have Linux on a laptop), and checked the disks. This is not the first time I use Knoppix to save a system, it's actually one of my companion disks.&lt;br /&gt;Knoppix automatically mounted both windows partitions correctly but the Linux &lt;a href="http://en.wikipedia.org/wiki/Ext4"&gt;EXT4&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Swap_partition"&gt;Swap&lt;/a&gt; partitions were missing.&lt;br /&gt;Now I start to get worried...&lt;br /&gt;&lt;br /&gt;I got into a shell and checked the partitions with &lt;a href="http://linux.about.com/od/commands/l/blcmdl8_fdisk.htm"&gt;fdisk&lt;/a&gt;.&lt;br /&gt;I detected the problem immediately: I had two partitions starting at the same cylinder! I even recall its number, 2086.&lt;br /&gt;The second partition had an Id of &lt;span style="font-family: courier new; font-weight: bold;"&gt;f&lt;/span&gt;, which is awkward since the Id is a numeric value, and was marked as the boot partition. &lt;a href="http://www.faqs.org/docs/Linux-mini/Partition.html"&gt;Using fdisk&lt;/a&gt; to see what my chances were of correcting this I realized that a drastic solution would probably be the only solution. When I deleted that second weird partition, the following partitions were gone to.&lt;br /&gt;&lt;br /&gt;So, before I do something that I could regret latter, I checked the content of the Windows partitions to find out that if anything would go wrong I already had a backup of everything.&lt;br /&gt;The data on the Linux partition seemed already lost, so I would have to settle for the backups.&lt;br /&gt;On the other hand, I was still able to save everything from the Windows partitions, but that would be unecessary.&lt;br /&gt;&lt;br /&gt;I finally decided what to do and how to do it.&lt;br /&gt;I've deleted that second weird partition, defined the first partition as boot and saved the partition table.&lt;br /&gt;I could have tried to recreate the partition table with fdisk, but since I had backups of everything, I just went for the full disaster scenario.&lt;br /&gt;&lt;br /&gt;I then rebooted with the openSUSE installation disk, created a second partition, that I reserved to replace the lost second partition for Windows, and created a third one for Linux, where I installed openSUSE.&lt;br /&gt;&lt;br /&gt;When openSUSE installation finished I've reboot and started Windows, which loaded just fine from the saved first partition. When Windows loaded, it was time to format that previous reserved second partition as &lt;a href="http://en.wikipedia.org/wiki/NTFS"&gt;NTFS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The whole thing took me a couple of hours but I got both Windows and openSUSE up and running again. Today I'll restore the backups, which will probably take a couple hours more.&lt;br /&gt;&lt;br /&gt;Moral of the story:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Always have a Knoppix disk at hand.&lt;/li&gt;&lt;li&gt;Backups are a tech best friend.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5546768288049259958?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5546768288049259958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/recovering-from-bad-hard-disk-crash.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5546768288049259958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5546768288049259958'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/recovering-from-bad-hard-disk-crash.html' title='Recovering from a bad Hard Disk Crash'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3458770305998015847</id><published>2009-12-11T13:30:00.003Z</published><updated>2009-12-11T13:34:13.053Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='build'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Distribute Python Applications on Windows</title><content type='html'>How to distribute &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; applications on Windows with &lt;a href="http://www.py2exe.org/"&gt;py2exe&lt;/a&gt; and &lt;a href="http://www.jrsoftware.org/isinfo.php"&gt;InnoSetup&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://blip.tv/play/g4Vi_84JAg" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="350"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3458770305998015847?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3458770305998015847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/distribute-python-applications-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3458770305998015847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3458770305998015847'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/distribute-python-applications-on.html' title='Distribute Python Applications on Windows'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4551740749504428606</id><published>2009-12-10T16:18:00.002Z</published><updated>2009-12-10T16:20:46.874Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='blog'/><category scheme='http://www.blogger.com/atom/ns#' term='source code'/><title type='text'>Source Code Format in Blogger</title><content type='html'>Here's a simple tutorial to post formatted source code on Blogger:&lt;br /&gt;&lt;a href="http://codeblog.kello.se/2009/01/07/getting-code-formatting-with-syntax-highlighting-to-work-on-blogger/"&gt;Getting code formatting with syntax highlighting to work on blogger&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4551740749504428606?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4551740749504428606/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/source-code-format-in-blogger.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4551740749504428606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4551740749504428606'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/source-code-format-in-blogger.html' title='Source Code Format in Blogger'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3850003959103747616</id><published>2009-12-08T22:26:00.006Z</published><updated>2009-12-08T22:56:27.409Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='network manager'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><category scheme='http://www.blogger.com/atom/ns#' term='administration'/><category scheme='http://www.blogger.com/atom/ns#' term='x700'/><category scheme='http://www.blogger.com/atom/ns#' term='devede'/><category scheme='http://www.blogger.com/atom/ns#' term='install'/><category scheme='http://www.blogger.com/atom/ns#' term='mjpegtools'/><category scheme='http://www.blogger.com/atom/ns#' term='radeon'/><category scheme='http://www.blogger.com/atom/ns#' term='ati'/><category scheme='http://www.blogger.com/atom/ns#' term='opensuse'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='q dvd-author'/><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><title type='text'>openSUSE</title><content type='html'>I've just moved from &lt;a href="http://www.kubuntu.org/"&gt;Kubuntu&lt;/a&gt; to &lt;a href="http://www.opensuse.org/"&gt;openSUSE&lt;/a&gt;.&lt;br /&gt;The reason is simple, Kububtu 9.10 revealed too unstable for me. In just a couple of months I had to reinstall once and when troubles reappear for the second time, I talked with a friend and decided to give a try to openSUSE.&lt;br /&gt;&lt;br /&gt;So far, so good. It's a lot more stable and my hardware seems to be better supported, even my &lt;a href="http://ati.amd.com/products/mobilityradeonx700/index.html"&gt;ATI Mobility Radeon X700&lt;/a&gt; that always gave me headaches in Linux works fine. Unfortunately the 3D support seems not be be fully working, but that is not a issue, at least for now.&lt;br /&gt;&lt;br /&gt;I kept &lt;a href="http://www.kde.org/"&gt;KDE&lt;/a&gt; as my window manager, it suits better my needs. The first look and feel at it was very pleasant. Even the desktop wallpaper is very good.&lt;br /&gt;One of the first things I've learn was to &lt;a href="http://opensuse-community.org/Package_Sources/Packman"&gt;add the Packman repository&lt;/a&gt;, since the default  official repositories does not have some software for "some legal uncertainties". For instance, it does not have the mpeg2enc from &lt;a href="http://www.bombono.org/cgi-bin/wiki/Useful_Links"&gt;mjpegtools&lt;/a&gt;, one has to remove the mjpegtools, add the Packman repository and add the mjpegtools again in order to have the Packman mjpegtools package installed, which does have the mpeg2enc.&lt;br /&gt;Other great software, like &lt;a href="http://qdvdauthor.sourceforge.net/"&gt;'Q' DVD-Author&lt;/a&gt; and &lt;a href="http://www.rastersoft.com/programas/devede.html"&gt;DeVeDe&lt;/a&gt;, also comes from the Packman repository, so it is critical to include it.&lt;br /&gt;&lt;br /&gt;Some things are different, specially when it comes to the administration part. Maybe it is because openSUSE has so much affinity with &lt;a href="http://www.novell.com/linux/"&gt;SUSE&lt;/a&gt; servers, it has a lot of easy administration tools right out-of-the-box.&lt;br /&gt;But some things seem the same. The &lt;a href="http://projects.gnome.org/NetworkManager/"&gt;Network Manager&lt;/a&gt; still sucks. Why is it so hard to use, specially when its flag is "Pain-Free Networking"? Since Network Manager appeared, all it gave me was problems. In Kubuntu it simply did not connect via wifi, and now I can't enable it, even after I defined it to be my network manager and enabled it!...&lt;br /&gt;&lt;br /&gt;Anyway, everything seems to work just fine and I'll keep openSUSE for a while, specially because it seems very stable.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3850003959103747616?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3850003959103747616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/opensuse.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3850003959103747616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3850003959103747616'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/opensuse.html' title='openSUSE'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1605005658759717241</id><published>2009-12-07T14:07:00.002Z</published><updated>2009-12-07T14:10:24.038Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='administration'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><title type='text'>DB2 How To</title><content type='html'>While I was searching for the loading method that accepted a dynamic query from inside a stored procedure, I found a simple and very useful &lt;a href="http://en.wikipedia.org/wiki/IBM_DB2"&gt;DB2&lt;/a&gt; How To.&lt;br /&gt;&lt;br /&gt;Here it is: &lt;a href="http://users.sdsc.edu/%7Ejrowley/db2/howto.html"&gt;DB2 How Tos&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1605005658759717241?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1605005658759717241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/db2-how-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1605005658759717241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1605005658759717241'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/db2-how-to.html' title='DB2 How To'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5327178761592132580</id><published>2009-12-03T16:24:00.004Z</published><updated>2009-12-07T14:10:45.503Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='administration'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><title type='text'>DB2 Copy Schema With Tables</title><content type='html'>Recently I needed to automate a &lt;a href="http://en.wikipedia.org/wiki/IBM_DB2"&gt;DB2&lt;/a&gt; schema backup.&lt;br /&gt;My requirements were quite easy, just create a new schema and copy the tables and their content into the new schema.&lt;br /&gt;&lt;br /&gt;What initially started as a simple task reveled to be a hard task and resulted in a quite simple script.&lt;br /&gt;&lt;br /&gt;The first problem was to execute several commands in the DB2 &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.admin.gui.doc/doc/c0017033.html"&gt;Command Editor&lt;/a&gt;. I was getting syntax errors because the &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.db2.luw.admin.gui.doc/doc/t0021859.html"&gt;statement termination character&lt;/a&gt; was set to be the same as the SQL end statement character &lt;span style="font-family:courier new;"&gt;;&lt;/span&gt;.&lt;br /&gt;Setting it to &lt;span style="font-family:courier new;"&gt;#&lt;/span&gt; solved my problem, but I did waste some time with this so keep in mind to change the statement termination character to avoid such problem.&lt;br /&gt;&lt;br /&gt;I've created a specific schema for this automation task &lt;span style="font-family:courier new;"&gt;COPY_DATABASE_SCHEMA&lt;/span&gt;, so all the procedures will be created there.&lt;br /&gt;&lt;br /&gt;Here is the procedure that will copy a table content:&lt;br /&gt;&lt;pre name="code" class="SQL"&gt;&lt;br /&gt;/**&lt;br /&gt;* Copies, with replacement, the content from the source table&lt;br /&gt;* into the target table.&lt;br /&gt;* It will not check for success, i.e. no loading validation&lt;br /&gt;* will be performed.&lt;br /&gt;*&lt;br /&gt;* @sourceTable: the full qualified source table name&lt;br /&gt;* @targetTable: the full qualified target table name&lt;br /&gt;*/&lt;br /&gt;create procedure COPY_DATABASE_SCHEMA.COPY_TABLE(&lt;br /&gt;sourceTable VARCHAR(128),&lt;br /&gt;targetTable VARCHAR(128))&lt;br /&gt;LANGUAGE SQL&lt;br /&gt;begin&lt;br /&gt;declare v_version_number INTEGER default 1;&lt;br /&gt;declare v_cursor_statement VARCHAR(32672);&lt;br /&gt;declare v_load_command VARCHAR(32672);&lt;br /&gt;declare v_sqlcode INTEGER default -1;&lt;br /&gt;declare v_sqlmessage VARCHAR(2048) default '';&lt;br /&gt;declare v_rows_read BIGINT default -1 ;&lt;br /&gt;declare v_rows_skipped BIGINT default -1;&lt;br /&gt;declare v_rows_loaded BIGINT default -1;&lt;br /&gt;declare v_rows_rejected BIGINT default -1;&lt;br /&gt;declare v_rows_deleted BIGINT default -1;&lt;br /&gt;declare v_rows_committed BIGINT default -1;&lt;br /&gt;declare v_rows_part_read BIGINT default -1;&lt;br /&gt;declare v_rows_part_rejected BIGINT default -1;&lt;br /&gt;declare v_rows_part_partitioned BIGINT default -1;&lt;br /&gt;declare v_mpp_load_summary VARCHAR(32672) default NULL;&lt;br /&gt;&lt;br /&gt;set v_cursor_statement =&lt;br /&gt;    'DECLARE C1 CURSOR FOR SELECT * from ' || sourceTable;&lt;br /&gt;set v_load_command =&lt;br /&gt;    'load from C1 of cursor insert into ' || targetTable;&lt;br /&gt;&lt;br /&gt;call db2load(1, v_cursor_statement, v_load_command, v_sqlcode,&lt;br /&gt;          v_sqlmessage, v_rows_read, v_rows_skipped,&lt;br /&gt;          v_rows_loaded, v_rows_rejected, v_rows_deleted,&lt;br /&gt;          v_rows_committed, v_rows_part_read,&lt;br /&gt;          v_rows_part_rejected, v_rows_part_partitioned,&lt;br /&gt;          v_mpp_load_summary) ;&lt;br /&gt;end#&lt;br /&gt;&lt;/pre&gt;Please note that the target table must already be created in order for this procedure to work.&lt;br /&gt;This procedure was the hard part. Copying the contents of any table requires a dynamic prepared query statement to use as a &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0000937.htm"&gt;cursor&lt;/a&gt;, and the &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/t0004590.htm"&gt;load&lt;/a&gt; command is not available inside a procedure, so the &lt;a href="http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.admin.doc/doc/r0008704.htm"&gt;db2load&lt;/a&gt; procedure from &lt;span style="font-family:courier new;"&gt;SYSPROC&lt;/span&gt; must be used.&lt;br /&gt;&lt;br /&gt;Here is the procedure that will create a schema, create the tables on it and copy the contents:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="SQL"&gt;&lt;br /&gt;/**&lt;br /&gt;* Copies an entire schema into a new schema named with the current date.&lt;br /&gt;* @sourceSchema: the source schema name&lt;br /&gt;* @targetSchema: the target schema name&lt;br /&gt;* @tableNameSelection: the tables name to include ('%' for all tables)&lt;br /&gt;*/&lt;br /&gt;CREATE PROCEDURE COPY_DATABASE_SCHEMA.COPY_DATABASE(&lt;br /&gt;sourceSchema VARCHAR(50),&lt;br /&gt;targetSchema VARCHAR(50),&lt;br /&gt;tableNameSelection VARCHAR(150)&lt;br /&gt;)&lt;br /&gt;LANGUAGE SQL&lt;br /&gt;BEGIN&lt;br /&gt;-- Variables&lt;br /&gt;DECLARE stmtSchema VARCHAR(250);&lt;br /&gt;DECLARE stmtTableStructure VARCHAR(200);&lt;br /&gt;DECLARE stmtTableContents VARCHAR(250);&lt;br /&gt;DECLARE stmtAlias VARCHAR(250);&lt;br /&gt;DECLARE tableName VARCHAR(128);&lt;br /&gt;DECLARE numPages BIGINT;&lt;br /&gt;DECLARE nError INTEGER DEFAULT 0;&lt;br /&gt;DECLARE at_end SMALLINT DEFAULT 0;&lt;br /&gt;DECLARE not_found CONDITION FOR SQLSTATE '02000';&lt;br /&gt;DECLARE V_SQL VARCHAR(200);&lt;br /&gt;DECLARE V_STMT STATEMENT;&lt;br /&gt;DECLARE V_LOAD_STMT STATEMENT;&lt;br /&gt;DECLARE TGT_TABLE_CUR CURSOR WITH HOLD WITH RETURN FOR V_STMT;&lt;br /&gt;DECLARE LOAD_CUR CURSOR FOR V_LOAD_STMT;&lt;br /&gt;DECLARE CONTINUE HANDLER for not_found SET at_end = 1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Create schema&lt;br /&gt;SET stmtSchema = char('CREATE SCHEMA ' concat char(targetSchema));&lt;br /&gt;EXECUTE IMMEDIATE stmtSchema;&lt;br /&gt;SET CURRENT SCHEMA targetSchema;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-- Copy tables and views&lt;br /&gt;SET V_SQL = 'SELECT name, npages FROM SYSIBM.SYSTABLES&lt;br /&gt;        WHERE CREATOR = ''' || trim(sourceSchema) || '''&lt;br /&gt;        AND NAME LIKE ''' || trim(tableNameSelection) || '''&lt;br /&gt;        order by name';&lt;br /&gt;PREPARE V_STMT FROM V_SQL;&lt;br /&gt;OPEN TGT_TABLE_CUR;&lt;br /&gt;&lt;br /&gt;fetch_loop:&lt;br /&gt;LOOP&lt;br /&gt;FETCH TGT_TABLE_CUR INTO tableName, numPages;&lt;br /&gt;IF at_end &lt;&gt; 0 THEN&lt;br /&gt;   LEAVE fetch_loop;&lt;br /&gt;ELSE   &lt;br /&gt;   SET stmtTableStructure = 'CREATE TABLE ' ||&lt;br /&gt;       targetSchema || '.' || tableName || ' LIKE ' ||&lt;br /&gt;       sourceSchema || '.' || tableName ;&lt;br /&gt;   EXECUTE IMMEDIATE stmtTableStructure;&lt;br /&gt;&lt;br /&gt;   IF numPages &gt; 0 THEN&lt;br /&gt;      call COPY_DATABASE_SCHEMA.copy_table(&lt;br /&gt;              sourceSchema || '.' || tableName,&lt;br /&gt;              targetSchema || '.' || tableName);&lt;br /&gt;   END IF;&lt;br /&gt;END IF;&lt;br /&gt;END LOOP fetch_loop;&lt;br /&gt;&lt;br /&gt;CLOSE TGT_TABLE_CUR;&lt;br /&gt;END#&lt;/pre&gt;It dynamically issues DB2 SQL commands to create the schema and the tables structure and makes use of the previously created &lt;span style="font-family:courier new;"&gt;COPY_TABLE&lt;/span&gt; to copy the tables content. See the code comments for more information.&lt;br /&gt;&lt;br /&gt;To use this just&lt;br /&gt;&lt;pre name="code" class="SQL"&gt;call COPY_DATABASE_SCHEMA.COPY_DATABASE('originalSchemaName',&lt;br /&gt;          'newBackupSchemaName', '%');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Since I also need to discard old copies, I have created a procedure to drop a schema, including all the tables on it.&lt;br /&gt;&lt;pre name="code" class="SQL"&gt;/**&lt;br /&gt;*  Drops an entire schema even if it has tables.&lt;br /&gt;*  Views are not supported.&lt;br /&gt;*  @schemaName: the name of the schema to drop&lt;br /&gt;*/&lt;br /&gt;CREATE PROCEDURE COPY_DATABASE_SCHEMA.DROP_SCHEMA(&lt;br /&gt;schemaName VARCHAR(50)&lt;br /&gt;)&lt;br /&gt;LANGUAGE SQL&lt;br /&gt;BEGIN&lt;br /&gt;-- Variables&lt;br /&gt;DECLARE stmtDropSchema VARCHAR(250);&lt;br /&gt;DECLARE stmtDropTable VARCHAR(250);&lt;br /&gt;DECLARE tableName VARCHAR(128);&lt;br /&gt;DECLARE at_end SMALLINT DEFAULT 0;&lt;br /&gt;DECLARE not_found CONDITION FOR SQLSTATE '02000';&lt;br /&gt;DECLARE V_SQL VARCHAR(200);&lt;br /&gt;DECLARE V_STMT STATEMENT;&lt;br /&gt;DECLARE TGT_TABLE_CUR CURSOR WITH RETURN FOR V_STMT;&lt;br /&gt;DECLARE CONTINUE HANDLER for not_found SET at_end = 1;&lt;br /&gt;&lt;br /&gt;-- Copy tables and views&lt;br /&gt;SET V_SQL = 'SELECT name FROM SYSIBM.SYSTABLES&lt;br /&gt;   WHERE CREATOR = ''' || trim(schemaName) || '''&lt;br /&gt;   AND CREATOR NOT LIKE ''SYS%''';&lt;br /&gt;PREPARE V_STMT FROM V_SQL;&lt;br /&gt;OPEN TGT_TABLE_CUR;&lt;br /&gt;&lt;br /&gt;fetch_loop:&lt;br /&gt;LOOP&lt;br /&gt;    FETCH TGT_TABLE_CUR INTO tableName;&lt;br /&gt;    IF at_end &lt;&gt; 0 THEN LEAVE fetch_loop;&lt;br /&gt;    ELSE&lt;br /&gt;       SET stmtDropTable = 'DROP TABLE ' ||&lt;br /&gt;                   schemaName || '.' || tableName;&lt;br /&gt;       EXECUTE IMMEDIATE stmtDropTable;&lt;br /&gt;    END IF;&lt;br /&gt;END LOOP fetch_loop;&lt;br /&gt;&lt;br /&gt;CLOSE TGT_TABLE_CUR;&lt;br /&gt;&lt;br /&gt;-- Drop schema&lt;br /&gt;SET stmtDropSchema = char('DROP SCHEMA ' concat&lt;br /&gt;             char(schemaName) concat ' RESTRICT');&lt;br /&gt;EXECUTE IMMEDIATE stmtDropSchema;&lt;br /&gt;END#&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This procedures have some limitations, for instance views are not supported.&lt;br /&gt;Nevertheless, it is a good start to all that need to clone a schema or a table.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5327178761592132580?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5327178761592132580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/db2-copy-schema-with-tables.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5327178761592132580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5327178761592132580'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/12/db2-copy-schema-with-tables.html' title='DB2 Copy Schema With Tables'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-458157438381434758</id><published>2009-11-23T13:48:00.011Z</published><updated>2009-11-23T14:22:35.687Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='iseries'/><category scheme='http://www.blogger.com/atom/ns#' term='critial system'/><category scheme='http://www.blogger.com/atom/ns#' term='administration'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='jdbc'/><category scheme='http://www.blogger.com/atom/ns#' term='db2'/><category scheme='http://www.blogger.com/atom/ns#' term='jtopen'/><title type='text'>Layer Intromission</title><content type='html'>I'm using &lt;a href="http://jt400.sourceforge.net/"&gt;JTOpen&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Java_Database_Connectivity"&gt;JDBC&lt;/a&gt; driver to access &lt;a href="http://en.wikipedia.org/wiki/AS/400"&gt;AS/400&lt;/a&gt; via &lt;a href="http://en.wikipedia.org/wiki/IBM_DB2"&gt;DB2&lt;/a&gt;.&lt;br /&gt;It works pretty well, but unfortunately it tries to be more than it should be, a JDBC driver that allows a &lt;a href="http://en.wikipedia.org/wiki/Java_%28programming_language%29"&gt;Java&lt;/a&gt; application to access a DB2 database.&lt;br /&gt;&lt;br /&gt;It interacts with the AS/400 system in a way it should not. For instance, when it's time to change the password, the driver pops-up a notification window stating that it's time to change the password and asks the user if he wishes to do it now.&lt;br /&gt;If this feature seems nice, let me tell you that it is totally wrong!&lt;br /&gt;First, it is a JDBC driver, not an AS/400 system administration application.&lt;br /&gt;Second, this kind of promiscuity among layers has disastrous results.&lt;br /&gt;&lt;br /&gt;When one uses a JDBC driver one expects that it operates with the database and nothing else.&lt;br /&gt;When JTOpen starts getting "smart" by interacting with the system, awkward things happen.&lt;br /&gt;For instance, an entire critical system can fail because the driver hang on a "password will expire soon, do you wish to change it now" message and waits for user action instead of doing what it is suppose to do: database work.&lt;br /&gt;Please not that this is not a "password expired" message but a "you must change your password within x days, do you wish to do it now" question.&lt;br /&gt;&lt;br /&gt;Here is a real example of such problem: I executed a command line batch which was hold by the JTOpen driver "would you like to change your password now" question.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GeVl3XPGXfk/SwqaRYH3fvI/AAAAAAAAACo/o1H4Ty4_MuE/s1600/jtopen-pwd-change.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 150px;" src="http://1.bp.blogspot.com/_GeVl3XPGXfk/SwqaRYH3fvI/AAAAAAAAACo/o1H4Ty4_MuE/s400/jtopen-pwd-change.jpg" alt="" id="BLOGGER_PHOTO_ID_5407303925935603442" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;JTOpen "Would you like to change your password now" User Dialog Box Question.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;I got lucky because the command was issued by me, but what if it was issued by a scheduler on a Saturday morning? It would only be noticed Monday morning and a critical job would not have been performed because the JDBC driver messed up.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-458157438381434758?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/458157438381434758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/11/layer-intromission.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/458157438381434758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/458157438381434758'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/11/layer-intromission.html' title='Layer Intromission'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GeVl3XPGXfk/SwqaRYH3fvI/AAAAAAAAACo/o1H4Ty4_MuE/s72-c/jtopen-pwd-change.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3320763138998544028</id><published>2009-11-19T11:36:00.006Z</published><updated>2012-01-16T12:56:47.503Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='AS/400'/><category scheme='http://www.blogger.com/atom/ns#' term='iseries'/><title type='text'>iSeries AS/400 Cheat Sheet</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;I am using IBM &lt;a href="http://en.wikipedia.org/wiki/IBM_System_i"&gt;iSeries&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/AS/400"&gt;AS/400&lt;/a&gt; a lot these days. Since I am not a specialist on such system, I've gathered some simple commands to help me to understand what's going on with my jobs and act on them when necessary.&lt;br /&gt;&lt;br /&gt;Here's a simple list of some commands:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Working Active Jobs&lt;/span&gt;&lt;br /&gt;Description: shows working active jobs.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;wrkactjob&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Working Submitted Jobs&lt;/span&gt;&lt;br /&gt;Description: shows the list of the working submitted jobs&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;wrksbmjob&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Working Object Lock&lt;/span&gt;&lt;br /&gt;Description: shows the locks on an object, like a file.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;wrkobjlck (library/object)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CPU Usage Statistics&lt;/span&gt;&lt;br /&gt;Description: shows CPU usage statistics, usually filtered to show only resource usages above 2%.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;who&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Working System Status&lt;/span&gt;&lt;br /&gt;Description: shows system overview usagestatus.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;wrksyssts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Working Disks Statistics&lt;/span&gt;&lt;br /&gt;Description: shows disk usage statistics.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;wrkdsksts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Display Message Descriptions&lt;/span&gt;&lt;br /&gt;Description: shows detailed information about the messages in a message file.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;dspmsgd range(messageId) msgf(library/file)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Display File&lt;/span&gt;&lt;br /&gt;Description: shows the contents of a file.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;df library/file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Work with Objects&lt;/span&gt;&lt;br /&gt;Description: shows a list of names and attributes of specified objects in specified libraries.&lt;br /&gt;Command: &lt;span style="font-family: 'courier new';"&gt;wrkobj file&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3320763138998544028?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3320763138998544028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/11/iseries-as400-cheat-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3320763138998544028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3320763138998544028'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/11/iseries-as400-cheat-sheet.html' title='iSeries AS/400 Cheat Sheet'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3121317873686512466</id><published>2009-11-05T12:23:00.003Z</published><updated>2009-11-05T12:31:41.416Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>Hide Warnings in R</title><content type='html'>I've made a presentation about &lt;a href="http://stat.ethz.ch/CRAN/web/packages/frbf/index.html"&gt;FRBF&lt;/a&gt;, an algorithm that I've just implemented in &lt;a href="http://www.r-project.org/"&gt;R&lt;/a&gt;, and I've used a small trick: I've hidden the warnings.&lt;br /&gt;&lt;br /&gt;This is useful for demos and presentations because this way people are not distracted by non-relevant information and they can focus on what is really important.&lt;br /&gt;&lt;br /&gt;All that is required is to use &lt;span style="font-family: courier new;"&gt;options(warn=-1)&lt;/span&gt;  in the beginning of the script.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3121317873686512466?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3121317873686512466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/11/hide-warnings-in-r.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3121317873686512466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3121317873686512466'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/11/hide-warnings-in-r.html' title='Hide Warnings in R'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3585180419126200018</id><published>2009-10-31T10:25:00.002Z</published><updated>2009-10-31T10:30:02.946Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>Clear R Console</title><content type='html'>I've been searching for a way to clear the R console, something like a cls() function.&lt;br /&gt;But it seems R does not provide one.&lt;br /&gt;I've found and tried a solution for Windows that emulated the CTRL+L command, which clears the console, but it simply did not work.&lt;br /&gt;&lt;br /&gt;So, after some more research I've found this extremely easy, quick and dirty solution: &lt;span style="font-family:courier new;"&gt;cat(rep("\n",128))&lt;/span&gt;.&lt;br /&gt;It does precisely what I need and is system independent.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3585180419126200018?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3585180419126200018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/10/clear-r-console.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3585180419126200018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3585180419126200018'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/10/clear-r-console.html' title='Clear R Console'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8754872523982348238</id><published>2009-10-19T21:46:00.003+01:00</published><updated>2009-10-19T21:50:45.088+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='administration'/><title type='text'>Reset Windows and Linux Passwords</title><content type='html'>I've just came across a fantastic tool for system administration.&lt;br /&gt;Ever used a system that no one recalls the administration password?&lt;br /&gt;Or have you ever inherited a system that the only person who administrated it retired?&lt;br /&gt;&lt;br /&gt;This tool will certainly ease the trouble of resetting the administration password: &lt;a href="http://www.darknet.org.uk/2009/06/kon-boot-reset-windows-linux-passwords/"&gt;Kon-Boot&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8754872523982348238?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8754872523982348238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/10/reset-windows-and-linux-passwords.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8754872523982348238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8754872523982348238'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/10/reset-windows-and-linux-passwords.html' title='Reset Windows and Linux Passwords'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5103069842453922641</id><published>2009-09-25T11:24:00.005+01:00</published><updated>2009-09-25T11:37:17.942+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='screen'/><category scheme='http://www.blogger.com/atom/ns#' term='capture'/><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><title type='text'>Tutorial and Presentation Creation Software</title><content type='html'>I've just came across with the best - so far - solution between functionality, quality, export formats and price for tutorial and presentation creation software, including desktop video capture.&lt;br /&gt;&lt;br /&gt;This great solution is &lt;a href="http://www.debugmode.com/wink/"&gt;Wink&lt;/a&gt;.&lt;br /&gt;I've tested several solutions like this one before, all usually they all do the same:&lt;br /&gt; capture the screen, compose the frames with some tags or highlight rectangles and export it to a &lt;a href="http://en.wikipedia.org/wiki/Adobe_Flash"&gt;Flash&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/SWF"&gt;SWF&lt;/a&gt; video.&lt;br /&gt;But Wink is different. It does not capture the screen as a simple bitmap, it also captures the objects, like the mouse pointer, and allows to freely specify the frames per second for screen capture and video export. &lt;br /&gt;This allows a much more flexible frame composition, like positioning the mouse cursor on any part of the screen, change its pointer and export the video with comfortable frame per second ratio where the mouse cursor is automatically moved even if it has been positioned on a different location from where it was captured.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5103069842453922641?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5103069842453922641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/tutorial-and-presentation-creation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5103069842453922641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5103069842453922641'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/tutorial-and-presentation-creation.html' title='Tutorial and Presentation Creation Software'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6654688493349653324</id><published>2009-09-15T09:31:00.003+01:00</published><updated>2009-09-15T09:35:24.142+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><title type='text'>Unix/Linux Cheat Sheets</title><content type='html'>I've just found a great collection of several Unix and Linux cheat sheets.&lt;br /&gt;It covers system commands and tools like &lt;a href="http://en.wikipedia.org/wiki/AWK"&gt;AWK&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Sed"&gt;SED&lt;/a&gt;.&lt;br /&gt;It's the &lt;a href="http://www.scottklarr.com/topic/115/linux-unix-cheat-sheets-the-ultimate-collection/"&gt;Linux-Unix cheat sheets - The ultimate collection&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6654688493349653324?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6654688493349653324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/unixlinux-cheat-sheets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6654688493349653324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6654688493349653324'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/unixlinux-cheat-sheets.html' title='Unix/Linux Cheat Sheets'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5379071728623324645</id><published>2009-09-08T17:34:00.003+01:00</published><updated>2009-09-08T17:45:01.351+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='ghostscript'/><category scheme='http://www.blogger.com/atom/ns#' term='pdf'/><title type='text'>How to Create PDF from LaTeX</title><content type='html'>I was using &lt;a href="http://pages.cs.wisc.edu/~ghost/"&gt;Ghostscript&lt;/a&gt; to generate a &lt;a href="http://en.wikipedia.org/wiki/Portable_Document_Format"&gt;PDF&lt;/a&gt; document written in &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt;, and I was getting the default red boxes links around the text, which are really ugly.&lt;br /&gt;&lt;br /&gt;The search for information about how to remove those red box links returned a very useful document, &lt;a href="http://had.fmf.uni-lj.si/~horvat/publishing/latex/general/latex2pdf.pdf"&gt;How to Create PDF from LaTeX&lt;/a&gt;.&lt;br /&gt;As the title implies, it is a document that teaches how to create a PDF file from LaTeX, but it covers topics like how to configure the links, which was precisely what I was looking for.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5379071728623324645?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5379071728623324645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/how-to-create-pdf-from-latex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5379071728623324645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5379071728623324645'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/how-to-create-pdf-from-latex.html' title='How to Create PDF from LaTeX'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6521988911398983205</id><published>2009-09-03T16:14:00.006+01:00</published><updated>2009-09-08T17:45:39.907+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><title type='text'>Algorithms in LaTeX</title><content type='html'>I've found this great easy to follow document about algorithms in &lt;a href="http://www.latex-project.org/"&gt;LaTeX&lt;/a&gt;:&lt;br /&gt;&lt;a href="http://www.tex.ac.uk/tex-archive/macros/latex/contrib/algorithms/algorithms.pdf"&gt;The algorithms bundle&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It covers the &lt;span style="font-style:italic;"&gt;algorithm&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;algorithmic&lt;/span&gt; environments, the state, comment, loops, conditions and even its customizations.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6521988911398983205?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6521988911398983205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/algorithms-in-latex.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6521988911398983205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6521988911398983205'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/09/algorithms-in-latex.html' title='Algorithms in LaTeX'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6141730438899105245</id><published>2009-08-26T16:58:00.005+01:00</published><updated>2009-08-26T17:20:19.532+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><title type='text'>Detexify - LaTeX symbol classifier</title><content type='html'>I was looking for a LaTeX symbol code when I faced, once more, the problem of taking too much time to find the code for a certain symbol.&lt;br /&gt;LaTeX usually has what one needs, but finding it can take a while.&lt;br /&gt;&lt;br /&gt;But this time I got luck. I found &lt;a href="http://detexify.kirelabs.org/classify.html"&gt;Detexify2 - LaTeX symbol classifier&lt;/a&gt; which will recognize a handwritten symbol and show the LaTeX corresponding matches.&lt;br /&gt;&lt;br /&gt;It worked great for me, and this is now one great tool to have nearby whenever I'm using LaTeX.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6141730438899105245?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6141730438899105245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/08/detexify-latex-symbol-classifier.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6141730438899105245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6141730438899105245'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/08/detexify-latex-symbol-classifier.html' title='Detexify - LaTeX symbol classifier'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7515822442091686889</id><published>2009-08-13T21:17:00.006+01:00</published><updated>2009-08-14T11:00:40.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='amarok'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><title type='text'>KDE on Windows</title><content type='html'>I've just installed the &lt;a href="http://windows.kde.org/"&gt;KDE on Windows&lt;/a&gt; and my XP is now a happier operating system.&lt;br /&gt;&lt;br /&gt;I was looking for &lt;a href="http://amarok.kde.org/"&gt;Amarok&lt;/a&gt;, since that's by far the player I love most, but the release I'm using, 4.3.00, seems not to have it yet.&lt;br /&gt;Nevertheless, I've setup some packages and now I'm able to run things like Kate, Dolphin and KMahjongg .&lt;br /&gt;I love Dolphin as a file manager, since it's philosophy is suited to my needs and usage.&lt;br /&gt;Too bad the Shift+F4 in Dolphin and the terminal command in Kate does not call the DOS box like it calls a terminal in Linux.&lt;br /&gt;&lt;br /&gt;This project is not in the final state, so there's not many applications and it can be unsuitable for daily use.&lt;br /&gt;But this is a very cool project and I'll keep an eye on it and, when possible, I'll try to make some changes like using Dolphin, Amarok, Kate and other applications that I prefer to Windows alternatives.&lt;br /&gt;&lt;br /&gt;Here's some pictures of some application running on my XP:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GeVl3XPGXfk/SoU09mQD35I/AAAAAAAAAB4/vbCBW2FGJTg/s1600-h/dolphin.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 199px;" src="http://1.bp.blogspot.com/_GeVl3XPGXfk/SoU09mQD35I/AAAAAAAAAB4/vbCBW2FGJTg/s400/dolphin.jpg" alt="" id="BLOGGER_PHOTO_ID_5369756363553759122" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Dolphin running on Windows XP&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GeVl3XPGXfk/SoU1Nd-5pcI/AAAAAAAAACA/vIovFi8IpX4/s1600-h/konqueror.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 261px;" src="http://2.bp.blogspot.com/_GeVl3XPGXfk/SoU1Nd-5pcI/AAAAAAAAACA/vIovFi8IpX4/s400/konqueror.jpg" alt="" id="BLOGGER_PHOTO_ID_5369756636212209090" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;Konqueror running on Windows XP&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GeVl3XPGXfk/SoU1W3g4auI/AAAAAAAAACI/wjAxnc5V-Ds/s1600-h/kwrite.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 282px;" src="http://3.bp.blogspot.com/_GeVl3XPGXfk/SoU1W3g4auI/AAAAAAAAACI/wjAxnc5V-Ds/s400/kwrite.jpg" alt="" id="BLOGGER_PHOTO_ID_5369756797684443874" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;KWrite running on Windows XP&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_GeVl3XPGXfk/SoU1f72K-jI/AAAAAAAAACQ/i8BOQJiFaE8/s1600-h/settings.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 264px;" src="http://1.bp.blogspot.com/_GeVl3XPGXfk/SoU1f72K-jI/AAAAAAAAACQ/i8BOQJiFaE8/s400/settings.jpg" alt="" id="BLOGGER_PHOTO_ID_5369756953466305074" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;font-size:85%;" &gt;KDE system settings running on Windows XP&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7515822442091686889?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7515822442091686889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/08/kde-on-windows.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7515822442091686889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7515822442091686889'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/08/kde-on-windows.html' title='KDE on Windows'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_GeVl3XPGXfk/SoU09mQD35I/AAAAAAAAAB4/vbCBW2FGJTg/s72-c/dolphin.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7870618843484134477</id><published>2009-07-24T23:36:00.003+01:00</published><updated>2009-07-24T23:43:01.649+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>Reorder columns in R</title><content type='html'>I got the need to reorder the column order or a data frame in R and after searching a little, I've found a very easy way to do it.&lt;br /&gt;&lt;br /&gt;Having a data frame named &lt;span style="font-family: courier new;"&gt;test &lt;/span&gt;like&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    a  b  c  d  e&lt;br /&gt;[1,] 1 11 21 31 41&lt;br /&gt;[2,] 2 12 22 32 42&lt;br /&gt;[3,] 3 13 23 33 43&lt;br /&gt;[4,] 4 14 24 34 44&lt;br /&gt;[5,] 5 15 25 35 45&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;all that is required is to reassign the data frame using a new column order, like&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;new_column_order &lt;- c("b", "c", "a", "e", "d")&lt;br/&gt;&lt;br /&gt;test &lt;- test[,new_column_order] &lt;/pre&gt;&lt;br /&gt;And that solves the problem.&lt;br /&gt;&lt;br /&gt;This seems to work both with a data frame and a matrix.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7870618843484134477?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7870618843484134477/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/reorder-columns-in-r.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7870618843484134477'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7870618843484134477'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/reorder-columns-in-r.html' title='Reorder columns in R'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3690566120386434867</id><published>2009-07-24T11:24:00.002+01:00</published><updated>2009-07-24T11:27:04.967+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><title type='text'>MVC vs. MVP</title><content type='html'>I've found an interesting description about Model-View-Presenter and Model-View-Controler and how they differ in &lt;a href="http://stackoverflow.com/"&gt;StackOverflow&lt;/a&gt;: &lt;a href="http://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference#101561"&gt;What are MVP and MVC and what is the difference?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3690566120386434867?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3690566120386434867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/mvc-vs-mvp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3690566120386434867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3690566120386434867'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/mvc-vs-mvp.html' title='MVC vs. MVP'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8225831284318746707</id><published>2009-07-21T15:53:00.001+01:00</published><updated>2009-07-21T15:55:34.395+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='open source'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><title type='text'>Apollo 11 Source Code on Google Code</title><content type='html'>Check &lt;a href="http://googlecode.blogspot.com/2009/07/apollo-11-missions-40th-anniversary-one.html"&gt;Google Code Blog&lt;/a&gt; for more info on this.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8225831284318746707?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8225831284318746707/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/apollo-11-source-code-on-google-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8225831284318746707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8225831284318746707'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/apollo-11-source-code-on-google-code.html' title='Apollo 11 Source Code on Google Code'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5218721344153087300</id><published>2009-07-21T14:40:00.002+01:00</published><updated>2009-07-21T14:43:09.893+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='innovation'/><title type='text'>10 Apollo-era technologies used today</title><content type='html'>The coolest technologies that the moon landing gave us.&lt;br /&gt;See it in &lt;a href="http://www.computerworld.com/s/article/9135700/Image_gallery_10_Apollo_era_technologies_used_today_?pageNumber=1"&gt;Computerworld&lt;/a&gt;.&lt;br /&gt; &lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5218721344153087300?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5218721344153087300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/10-apollo-era-technologies-used-today.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5218721344153087300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5218721344153087300'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/10-apollo-era-technologies-used-today.html' title='10 Apollo-era technologies used today'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5692338742389869735</id><published>2009-07-17T17:50:00.002+01:00</published><updated>2009-07-17T17:53:39.730+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Free Cheat Sheets for Developers</title><content type='html'>Here's a set of free cheat sheets for developers: http://refcardz.dzone.com/&lt;br /&gt;There's lot of information about Drupal, Java Concurrency, Java Server Pages, Maven, JavaFX and a many more.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5692338742389869735?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5692338742389869735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/free-cheat-sheets-for-developers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5692338742389869735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5692338742389869735'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/free-cheat-sheets-for-developers.html' title='Free Cheat Sheets for Developers'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2947114783129416910</id><published>2009-07-15T10:22:00.002+01:00</published><updated>2009-07-15T10:29:55.421+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='online business'/><category scheme='http://www.blogger.com/atom/ns#' term='media'/><category scheme='http://www.blogger.com/atom/ns#' term='digital'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Morgan Stanley Report about How Teenagers Consume Media</title><content type='html'>&lt;a href="http://www.google.pt/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=4&amp;amp;url=http%3A%2F%2Fwww.morganstanley.com%2F&amp;amp;ei=H6BdSvXjJeaZjAfIvcXjDQ&amp;amp;usg=AFQjCNG5bSnstVdlb3zder40jNabWB7DQQ&amp;amp;sig2=Qd7gyf3ixp0ZF4FrAiaphw"&gt;Morgan Stanley&lt;/a&gt; has released a study made by a 15 year old summer intern, Matthew Robson. Matthew researched about his friends and colleagues habits of media consumption and the results are very interesting, in particular when compared with adult people habits.&lt;br /&gt;&lt;br /&gt;&lt;a title="View How Teenagers Consume Media on Scribd" href="http://www.scribd.com/doc/17319794/How-Teenagers-Consume-Media" style="margin: 12px auto 6px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;"&gt;How Teenagers Consume Media&lt;/a&gt; &lt;object codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="doc_754737262586762" name="doc_754737262586762" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" align="middle" height="500" width="100%"&gt;  &lt;param name="movie" value="http://d.scribd.com/ScribdViewer.swf?document_id=17319794&amp;amp;access_key=key-qe49gzcjq71069l26uq&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode="&gt;   &lt;param name="quality" value="high"&gt;   &lt;param name="play" value="true"&gt;  &lt;param name="loop" value="true"&gt;   &lt;param name="scale" value="showall"&gt;  &lt;param name="wmode" value="opaque"&gt;   &lt;param name="devicefont" value="false"&gt;  &lt;param name="bgcolor" value="#ffffff"&gt;   &lt;param name="menu" value="true"&gt;  &lt;param name="allowFullScreen" value="true"&gt;   &lt;param name="allowScriptAccess" value="always"&gt;   &lt;param name="salign" value=""&gt;        &lt;embed src="http://d.scribd.com/ScribdViewer.swf?document_id=17319794&amp;amp;access_key=key-qe49gzcjq71069l26uq&amp;amp;page=1&amp;amp;version=1&amp;amp;viewMode=" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" play="true" loop="true" scale="showall" wmode="opaque" devicefont="false" bgcolor="#ffffff" name="doc_754737262586762_object" menu="true" allowfullscreen="true" allowscriptaccess="always" salign="" type="application/x-shockwave-flash" align="middle" height="500" width="100%"&gt;&lt;/embed&gt; &lt;/object&gt; &lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2947114783129416910?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2947114783129416910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/morgan-stanley-report-about-how.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2947114783129416910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2947114783129416910'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/morgan-stanley-report-about-how.html' title='Morgan Stanley Report about How Teenagers Consume Media'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-2018895719839875502</id><published>2009-07-14T16:34:00.003+01:00</published><updated>2009-07-14T16:38:26.431+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>Introduction to the R Programming Environment</title><content type='html'>I've found an easy to follow and understand &lt;a href="http://cran.r-project.org/"&gt;R&lt;/a&gt; introduction: &lt;a href="http://www.apsnet.org/Education/AdvancedPlantPath/Topics/RModules/Doc0/"&gt;An Introduction to the R Programming Environment&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-2018895719839875502?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/2018895719839875502/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/introduction-to-r-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2018895719839875502'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/2018895719839875502'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/introduction-to-r-programming.html' title='Introduction to the R Programming Environment'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4504028839857288218</id><published>2009-07-13T10:08:00.011+01:00</published><updated>2009-07-13T11:41:41.387+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data cleaning'/><category scheme='http://www.blogger.com/atom/ns#' term='search'/><category scheme='http://www.blogger.com/atom/ns#' term='gps'/><title type='text'>TomTom Maps are not that Good.</title><content type='html'>I have a &lt;a href="http://www.tomtom.com/"&gt;TomTom&lt;/a&gt; &lt;a href="http://www.tomtom.com/products/product.php?ID=409&amp;amp;Category=0&amp;amp;Lid=4"&gt;One XL&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Global_Positioning_System"&gt;GPS&lt;/a&gt;. It was a gift, so I did not choose it myself.&lt;br /&gt;It was a great gift and one of the first things I did was to update its map.&lt;br /&gt;After doing it I tried it out.&lt;br /&gt;To my disappointment, it didn't had the street where I live. It just had part of the surrounding neighborhood, so it look like I was in the middle of nowhere, like doing off-road with my car...&lt;br /&gt;&lt;br /&gt;TomTom says there's an average of 15% of roads and streets changing every year. The neighborhood where I live was finished in 2001, meaning it has already 8 years.&lt;br /&gt;There were a couple, or so, new TomTom maps that came out but none had my street. Finally, the current version, 8.25, has my street but it comes with an error on its name...&lt;br /&gt;&lt;br /&gt;8 years of delay and it came out with an error!...&lt;br /&gt;Unbelievable...&lt;br /&gt;&lt;br /&gt;I do know TomTom buys the maps, it does not make them themselves, they get them from &lt;a href="http://www.teleatlas.com/"&gt;Tele Atlas&lt;/a&gt; if I'm not mistaken, but I have nothing to do with it. I have a TomTom product, not a Tele Atlas, so it is TomTom who's responsible for the products they sell, even if it includes technology they get from others.&lt;br /&gt;&lt;br /&gt;TomTom states it &lt;a href="http://www.tomtom.com/whytomtom/subject.php?subject=2"&gt;works hard to deliver the ultimate naviagtion experience&lt;/a&gt;. The problem is that TomTom fails in the basics: the maps.&lt;br /&gt;And it's not the problem it took 8 years to include my street on its maps, its the fact that the maps need to be cleaned up and you need to know extra information about your destination before you're actually be able to search for your destination:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The street names have errors and are totally unnormalized. For instance, if you're looking for an avenue, you don't know if it starts with "Avenue", "Av." or "Av". Needless to say that if you're looking for street ABC but it's registered in the system as ABB, you'll have trouble to find it. You have to look for all possible combinations and watch out for typos.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It does not allow you to search for middle strings, you always have to search for the beginning of the string. If you're looking for X, and you don't know if it's an avenue, a street or a town square, you're unable to simply search for X, and you fail to find it.&lt;/li&gt;&lt;li&gt;You must know extra information about your destination. For instance, if you need to find destination X on city A, you must provide the X zip code or the civil parish. Needless to say that in many countries, Portugal included, the zip codes have mistakes and people don't always know the name of the civil parish where X is located. If people knew this kind of information, probably they also knew X and would not require TomTom to guide them.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;All this combined, I feel frustrated using my TomTom GPS because it does not have, or I'm unable to find, around 20% of my destinations... Talking about "the ultimate navigation experience": do it the hard way, see on a paper map, watch the stars, or stop and ask for directions...&lt;br /&gt;&lt;br /&gt;I don't need a search engine running on my TomTom, though it would be extremely helpful, but &lt;a href="http://en.wikipedia.org/wiki/Data_cleaning"&gt;name normalization&lt;/a&gt; and reducing all these search barriers would result on much better search results for the user.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4504028839857288218?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4504028839857288218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/tomtom-maps-are-not-that-good.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4504028839857288218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4504028839857288218'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/tomtom-maps-are-not-that-good.html' title='TomTom Maps are not that Good.'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-1893534858475472163</id><published>2009-07-09T15:06:00.004+01:00</published><updated>2009-07-10T11:09:48.299+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='subversion'/><title type='text'>Subversion Merge Tracking</title><content type='html'>If you've been using &lt;a href="http://subversion.tigris.org/"&gt;Subversion&lt;/a&gt; (Svn) with branches and had to perform a merge, than you've already screamed in despair just like I've just done.&lt;br /&gt;Svn, up to version 1.5, was unable to perform merge tracking correctly, a major functionality to everyone who has to work with several versions of the same application.&lt;br /&gt;&lt;br /&gt;But fortunately, &lt;a href="http://subversion.tigris.org/svn_1.6_releasenotes.html"&gt;version 1.6&lt;/a&gt; already has merge tracking working correctly.&lt;br /&gt;I already had Svn 1.6 client installed, so all I need to do was upgrade the &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt; server to Lenny and the manually upgrade the Svn server to version 1.6.&lt;br /&gt;Everything went well, and there weren't many dependencies needed to be installed manually, so it was even easier than I expected.&lt;br /&gt;&lt;br /&gt;Having everything in place, it was time to perform the merge. The merge consisted in including the maintenance branch into the development branch.&lt;br /&gt;This was the second time this kind of merge was going to be performed. Since the previous merge was done without merge tracking, the logs and the graph was kind of useless to know the files history.&lt;br /&gt;Even worst, when the merge was tested, it looked like the first merge had to be repeated. I did not understood this Svn weird behavior and found no reason for it, but there were files that were selected to be merged twice. The first merge was going to happen to the file contained up to revision 2636 and the other merge from revision 2637 up to the Head revision.&lt;br /&gt;&lt;br /&gt;It had to be done carefully, but 8 hours later, the merge was done with no problems.&lt;br /&gt;&lt;br /&gt;Since this merge was performed with the merge tracking functionality working, now it is possible to automatically track the file evolution. I'm hopping to have a faster, and with less stress, merge in the future.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-1893534858475472163?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/1893534858475472163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/subversion-merge-tracking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1893534858475472163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/1893534858475472163'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/subversion-merge-tracking.html' title='Subversion Merge Tracking'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8910448706938745333</id><published>2009-07-03T13:13:00.007+01:00</published><updated>2009-07-03T16:27:34.377+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='management'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Once Accenture. Always Accenture.</title><content type='html'>Yesterday I attended to &lt;a href="https://www.accenturealumni.com/"&gt;Accenture Alumni&lt;/a&gt; cocktail party.&lt;br /&gt;It was an event exclusively for former &lt;a href="https://www.accenture.com/"&gt;Accenture&lt;/a&gt; employees and, obviously, for Accenture Senior Managers and above.&lt;br /&gt;&lt;br /&gt;I've been with Accenture twice, and loved it both times.&lt;br /&gt;I always felt that Accenture really care about its people. The proof is in such meetings, Accenture cares about you even if you're no longer with them.&lt;br /&gt;The event itself was very nice and allowed us to chat with people that we haven't seen for awhile. Many of us updated the mobile numbers between two drinks, sushi and ice cream.&lt;br /&gt;&lt;br /&gt;Obviously such events have a business return. There were a lot of business cards changing hands, contacts updated and new contacts made.&lt;br /&gt;There's also the marketing part of it, people that attended surely chatted about it with current coworkers or write about it in their blogs.&lt;br /&gt;And precisely how many companies do you know that invite former employees for a cocktail?&lt;br /&gt;&lt;br /&gt;On the way out, everybody got a Bonsai with a "thank you" card for helping Accenture to be the company that it is.&lt;br /&gt;&lt;br /&gt;Well, tank you Accenture for the cocktail and for the challenges that I was given and that allowed me to be a better professional.&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8910448706938745333?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8910448706938745333/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/once-accenture-always-accenture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8910448706938745333'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8910448706938745333'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/07/once-accenture-always-accenture.html' title='Once Accenture. Always Accenture.'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6360798679498168716</id><published>2009-06-29T21:52:00.002+01:00</published><updated>2009-06-29T22:00:11.525+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gimp'/><category scheme='http://www.blogger.com/atom/ns#' term='eps'/><category scheme='http://www.blogger.com/atom/ns#' term='ghostscript'/><title type='text'>Gimp and .eps Files</title><content type='html'>I use &lt;a href="http://www.gimp.org/"&gt;Gimp&lt;/a&gt; on all systems and I've some &lt;a href="http://en.wikipedia.org/wiki/Encapsulated_PostScript"&gt;Encapsulated PostScript&lt;/a&gt; (.eps) files on Windows that I need to open and edit. In order to Gimp on Windows open .eps files, it requires &lt;a href="http://pages.cs.wisc.edu/%7Eghost/"&gt;Ghostscript&lt;/a&gt; to be in your system.&lt;br /&gt;&lt;br /&gt;Here's how to do it:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download and install Gimp;&lt;/li&gt;&lt;li&gt;Download and install Ghostscript&lt;/li&gt;&lt;li&gt;Setup the environment variable &lt;span style="font-family:courier new;"&gt;GS_PROG&lt;/span&gt; to the Ghostscript executable file, like &lt;span style="font-family:courier new;"&gt;C:\Program Files\gs\gs8.64\bin\gswin32.exe&lt;/span&gt;.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Now Gimp should be abble to open EPS files.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6360798679498168716?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6360798679498168716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/gimp-and-eps-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6360798679498168716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6360798679498168716'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/gimp-and-eps-files.html' title='Gimp and .eps Files'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-8823647543882291179</id><published>2009-06-29T18:07:00.015+01:00</published><updated>2009-06-30T09:19:05.406+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse application'/><category scheme='http://www.blogger.com/atom/ns#' term='jface'/><category scheme='http://www.blogger.com/atom/ns#' term='rpc'/><category scheme='http://www.blogger.com/atom/ns#' term='swt'/><title type='text'>JFace TreeView with Manual Expand of TreeItems</title><content type='html'>I have a &lt;a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/dialogs/FilteredTree.html"&gt;FilteredTree&lt;/a&gt; with check items and I was trying to expand the tree whenever the user checks an item on it. By default, the tree does only expand a &lt;a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/widgets/TreeItem.html"&gt;TreeItem&lt;/a&gt; when the user clicks on the + icon and retracts when the user clicks on the - icon.&lt;br /&gt;Since this tree has check items, I wanted the tree to expand when the user clicks on the check box.&lt;br /&gt;&lt;br /&gt;This proved to be a lot harder than I expected, partially because I was using the wrong object, partially because it is lazy, and partially because it was hard to find an answer for what I was doing wrong.&lt;br /&gt;So, I'm posting here how to manually expand a &lt;a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/jface/viewers/TreeViewer.html"&gt;TreeView&lt;/a&gt;, which is part of a FilteredTree.&lt;br /&gt;&lt;br /&gt;To begin with, the TreeView requires the following classes to be defined:&lt;br /&gt;&lt;br /&gt;1. Your tree node that will hold the data of each tree item:&lt;br /&gt;&lt;pre&gt;private class Node {&lt;br /&gt;&lt;br /&gt;private final Node parent;&lt;br /&gt;private final String word;&lt;br /&gt;private List&lt;node&gt; children = new ArrayList&lt;node&gt;();&lt;br /&gt;&lt;br /&gt;Node(Node parent, String word) {&lt;br /&gt;this.parent = parent;&lt;br /&gt;this.word = word;&lt;br /&gt;if(parent != null) {&lt;br /&gt;  parent.children.add(this);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Node getParent() {&lt;br /&gt;return parent;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Collection&lt;node&gt; getChildren() {&lt;br /&gt;return new ArrayList&lt;node&gt;(children);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public boolean hasChildren() {&lt;br /&gt;return children.size() &gt; 0;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void setChildren(Collection&lt;node&gt; newChildren) {&lt;br /&gt;if(newChildren != null) {&lt;br /&gt;  children = new ArrayList&lt;node&gt;(newChildren);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public String getWord() {&lt;br /&gt;return word;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/node&gt;&lt;/node&gt;&lt;/node&gt;&lt;/node&gt;&lt;/node&gt;&lt;/node&gt;&lt;/pre&gt;Please note that this class can be whatever class you require, this is only an example.&lt;br /&gt;&lt;br /&gt;2. A tree content provider that will provide the content for the tree:&lt;br /&gt;&lt;pre&gt;private class NodeContentProvider implements ITreeContentProvider {&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public Object[] getChildren(Object element) {&lt;br /&gt;return ((Node)element).getChildren().toArray();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public Object getParent(Object element) {&lt;br /&gt;return ((Node)element).getParent();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public boolean hasChildren(Object element) {&lt;br /&gt;return ((Node)element).hasChildren();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public Object[] getElements(Object inputElement) {&lt;br /&gt;return (Object[]) inputElement;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void dispose() {&lt;br /&gt;// unused&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public void inputChanged(Viewer viewer, Object oldInput,&lt;br /&gt;Object newInput) {&lt;br /&gt;// unused&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3. The label provider that will provide the label for each item in the tree:&lt;br /&gt;&lt;pre&gt;private class NodeLabelProvider extends LabelProvider {&lt;br /&gt;&lt;br /&gt;private final TreeViewer viewer;&lt;br /&gt;&lt;br /&gt;NodeLabelProvider(TreeViewer viewer) {&lt;br /&gt;this.viewer = viewer;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@Override&lt;br /&gt;public String getText(Object element) {&lt;br /&gt;Node node = (Node) element;&lt;br /&gt;return node.getWord();&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;I'll create a FilteredTree, but since it makes use of TreeView, using only a TreeView is trivial:&lt;pre&gt;&lt;br /&gt;PatternFilter patternFilter = new PatternFilter();&lt;br /&gt;FilteredTree filteredTree = new FilteredTree(cTree,&lt;br /&gt;   SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL | SWT.CHECK,&lt;br /&gt;   this.patternFilter);&lt;br /&gt;filteredTree.setInitialText("type your filter text here");&lt;br /&gt;TreeViewer treeViewer = filteredTree.getViewer();&lt;br /&gt;&lt;br /&gt;// Assign the label provider&lt;br /&gt;treeViewer.setLabelProvider(new NodeLabelProvider());&lt;br /&gt;&lt;br /&gt;// Assign the content provider&lt;br /&gt;treeViewer.setContentProvider(new NodeContentProvider());&lt;br /&gt;&lt;br /&gt;// Populate the tree with elements&lt;br /&gt;Node ex1= new Node(null, "Example 1");&lt;br /&gt;new Node(ex1, "Example 1.1");&lt;br /&gt;new Node(ex1, "Example 1.2");&lt;br /&gt;new Node(ex1, "Example 1.3");&lt;br /&gt;Node ex2= new Node(null, "Example 2");&lt;br /&gt;new Node(ex2, "Example 2.1");&lt;br /&gt;Node[] nodes = Node[] {ex1, ex2}&lt;br /&gt;viewer.setInput(nodes);&lt;br /&gt;&lt;br /&gt;// Event for item selection&lt;br /&gt;treeViewer.getTree().addListener(SWT.Selection, new Listener() {&lt;br /&gt;public void handleEvent(Event event) {&lt;br /&gt;  TreeItem item = (TreeItem) event.item;&lt;br /&gt;  Node node = (Node)item.getData();&lt;br /&gt;  // Manually Expand&lt;br /&gt;  treeViewer.expandToLevel(node, 1);&lt;br /&gt;  treeViewer.update(node, null);&lt;br /&gt;}&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Please note that the tree selection event always expands the selected node, you may wish to retract it or do another operation, like check all its descendants.&lt;br /&gt;This is actually quite simple, but I was calling &lt;span style="font-family:courier new;"&gt;treeViewer.expandToLevel&lt;/span&gt; with the &lt;span style="font-family:courier new;"&gt;TreeItem&lt;/span&gt; instead of using the &lt;span style="font-family:courier new;"&gt;Node&lt;/span&gt; object, and that was the cause of my problems.&lt;br /&gt;&lt;br /&gt;If you're looking for a similar example but using custom images, check &lt;a href="http://eclipsenuggets.blogspot.com/2008/07/showing-different-images-for-expanded_1942.html"&gt;Eclipse Nuggets&lt;/a&gt;.&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-8823647543882291179?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/8823647543882291179/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/jface-treeview-with-manual-expand-of.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8823647543882291179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/8823647543882291179'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/jface-treeview-with-manual-expand-of.html' title='JFace TreeView with Manual Expand of TreeItems'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-9128917060670654161</id><published>2009-06-20T15:26:00.003+01:00</published><updated>2009-06-20T15:32:08.473+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sucess'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Mediocrity is a choice</title><content type='html'>As &lt;a href="http://sethgodin.com/"&gt;Seth Godin&lt;/a&gt; states on a small post, quality is the result of choices one get to make every day.&lt;br /&gt;Here's the full post: &lt;a href="http://sethgodin.typepad.com/seths_blog/2009/06/on-the-road-to-mediocrity.html"&gt;On the road to mediocrity&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-9128917060670654161?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/9128917060670654161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/mediocrity-is-choice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/9128917060670654161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/9128917060670654161'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/mediocrity-is-choice.html' title='Mediocrity is a choice'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4933612761459615054</id><published>2009-06-17T15:36:00.004+01:00</published><updated>2009-06-20T15:32:22.687+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sucess'/><category scheme='http://www.blogger.com/atom/ns#' term='business'/><title type='text'>Success is a Continuous Journey</title><content type='html'>Business success is a continuous journey, not a destination. I've learned this long ago, but I couldn't say it better than &lt;a href="http://www.ted.com/speakers/richard_st_john.html"&gt;Richard St. John&lt;/a&gt;: &lt;br /&gt;&lt;br /&gt;&lt;object width="446" height="326"&gt;&lt;param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;param name="bgColor" value="#ffffff"&gt;&lt;/param&gt; &lt;param name="flashvars" value="vu=http://video.ted.com/talks/embed/RichardStJohn_2009U-embed_high.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/RichardStJohn-2009U.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=572" /&gt;&lt;embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" flashvars="vu=http://video.ted.com/talks/embed/RichardStJohn_2009U-embed_high.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/RichardStJohn-2009U.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=572"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;It's not about falling, it's about getting up again...&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4933612761459615054?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4933612761459615054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/success-is-continuous-journey.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4933612761459615054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4933612761459615054'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/success-is-continuous-journey.html' title='Success is a Continuous Journey'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7751194485163889778</id><published>2009-06-16T18:06:00.004+01:00</published><updated>2009-06-16T18:16:30.433+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse application'/><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='workbench'/><title type='text'>RCP save workbench status</title><content type='html'>In &lt;a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform"&gt;Rich Client Platform&lt;/a&gt; (RCP) application, the workbench status can be easily saved and restored by simply including the snippet bellow in the ApplicationWorkbenchAdvisor class, that extends &lt;a href="http://help.eclipse.org/stable/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/application/WorkbenchAdvisor.html"&gt;WorkbenchAdvisor&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;@Override&lt;br /&gt;public void initialize(IWorkbenchConfigurer configurer) {&lt;br /&gt;super.initialize(configurer);&lt;br /&gt;&lt;br /&gt;// tell eclipse to save workbench state when it quits&lt;br /&gt;// (things like window size, view layout, etc.)&lt;br /&gt;configurer.setSaveAndRestore(true);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This will automatically save the status of the workbench when the application is closed and will automatically restore that status when the application is executed again. The settings are saved on the &lt;span style="font-family: courier new;"&gt;[runtime-{your-product}]/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml&lt;/span&gt; file.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7751194485163889778?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7751194485163889778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/rcp-save-workbench-status.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7751194485163889778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7751194485163889778'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/rcp-save-workbench-status.html' title='RCP save workbench status'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4152312298234675716</id><published>2009-06-16T11:23:00.007+01:00</published><updated>2009-06-16T11:54:19.257+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse application'/><category scheme='http://www.blogger.com/atom/ns#' term='rcp'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='swt'/><title type='text'>Selecting a value from a SWT CCombo on RCP</title><content type='html'>It looks like the &lt;a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/custom/CCombo.html"&gt;CCombo&lt;/a&gt; custom &lt;a href="http://en.wikipedia.org/wiki/Standard_Widget_Toolkit"&gt;SWT&lt;/a&gt; object lacks some selection functionality. I'm using a CCombo as a table cell editor on my &lt;a href="http://wiki.eclipse.org/index.php/Rich_Client_Platform"&gt;Rich Client Platform&lt;/a&gt; (RCP)  application and I've found out that it is (almost) impossible to detect the user selection with both the keyboard and the mouse.&lt;br /&gt;&lt;br /&gt;The selection listener does not work as expected. &lt;a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/events/SelectionListener.html"&gt;Documentation&lt;/a&gt; says:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the widgetSelected method is triggered whenever a selection occurs in the control, i.e. when the user browses the option list this event is triggered;&lt;/li&gt;&lt;li&gt;the widgetDefaultSelected method is triggered when default selection occurs in the control, i.e. when the user selects an option from the list this event is triggered.&lt;/li&gt;&lt;/ul&gt;One might think, as I thought, that all one has to do is to catch the widgetDefaultSelected event and one would know which option the user has selected from the list.&lt;br /&gt;This is only true when the user performs the selection using the keyboard, i.e. after browsing through the options list the Enter/Return key is pressed.&lt;br /&gt;If the user decides to use the mouse, the widgetDefaultSelected  event is not triggered at all, but widgetSelected is.&lt;br /&gt;&lt;br /&gt;I though I could detect the user selection with the mouse listener. I was wrong. After trying a couple more possibilities, it turns out there's no (easy) way to detect if the user has performed a selection using the mouse...&lt;br /&gt;&lt;br /&gt;So I had to do a workaround for it. Since the widgetSelected is triggered by the mouse clicks, I tried to use that event. Unfortunately the &lt;a href="http://help.eclipse.org/stable/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/swt/events/SelectionEvent.html"&gt;event&lt;/a&gt; has no real useful information, like if it was triggered by a right button mouse click. But fortunately, the CCombo object does have a couple of methods that allowed to infer that a selection has been made. In particular, it has a method to check if the options list is visible or not. Since a selection with the mouse makes the options list disappear, I've used it.&lt;br /&gt;&lt;br /&gt;Here's the snippet:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// Selections events&lt;br /&gt;combo.addSelectionListener(new SelectionAdapter() {&lt;br /&gt; // Selection changed, check if the options are still visible&lt;br /&gt; public void widgetSelected(SelectionEvent e) {&lt;br /&gt;   // If list is not visible assume that the user has&lt;br /&gt;   // performed selection with the mouse&lt;br /&gt;   if (!combo.getListVisible()) {&lt;br /&gt;       setEditionValue(combo);&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; // Option selected&lt;br /&gt; public void widgetDefaultSelected(SelectionEvent e) {&lt;br /&gt;   // User performed a selection with the keyboard&lt;br /&gt;   setEditionValue(combo);&lt;br /&gt; }&lt;br /&gt;});&lt;br /&gt;&lt;/pre&gt;This is not a perfect solution, it's a workaround, but it's working just fine for me.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4152312298234675716?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4152312298234675716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/selecting-value-from-swt-ccombo-on-rcp.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4152312298234675716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4152312298234675716'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/selecting-value-from-swt-ccombo-on-rcp.html' title='Selecting a value from a SWT CCombo on RCP'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-6116915325599934864</id><published>2009-06-13T14:22:00.003+01:00</published><updated>2009-06-13T14:30:03.320+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>Current time as numeric value in R</title><content type='html'>To get the current time, just use the &lt;span style="font-family:courier new;"&gt;Sys.time()&lt;/span&gt; function, see the &lt;span style="font-family:courier new;"&gt;Sys&lt;/span&gt; package for more information.&lt;br /&gt;To get the current time as a numeric value in R, just use &lt;span style="font-family:courier new;"&gt;unclass(Sys.time())&lt;/span&gt;.&lt;br /&gt;This seems to be higher accurate, 0.01 seconds.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-6116915325599934864?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/6116915325599934864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/current-time-as-numeric-value-in-r.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6116915325599934864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/6116915325599934864'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/current-time-as-numeric-value-in-r.html' title='Current time as numeric value in R'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-5523342736127559842</id><published>2009-06-13T12:12:00.004+01:00</published><updated>2009-06-13T13:49:16.558+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kubuntu'/><title type='text'>tofrodos package</title><content type='html'>&lt;a href="http://www.kubuntu.org/%20"&gt;Kubuntu&lt;/a&gt; does no longer has the "old" DOS tools. I needed to use the &lt;a href="http://en.wikipedia.org/wiki/Unix2dos"&gt;dos2unix&lt;/a&gt; command and I found out it was no longer part of the standard core installation. Obviously it's still available, so all I had to do was install the tofrodos package, just &lt;span style="font-family: courier new;"&gt;sudo apt-get install tofrodos&lt;/span&gt; and the problem is solved.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-5523342736127559842?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/5523342736127559842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/tofrodos-package.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5523342736127559842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/5523342736127559842'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/tofrodos-package.html' title='tofrodos package'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-7277317214530938338</id><published>2009-06-03T15:05:00.015+01:00</published><updated>2009-06-04T11:59:47.811+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='delevopment'/><category scheme='http://www.blogger.com/atom/ns#' term='packaging'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='s4'/><category scheme='http://www.blogger.com/atom/ns#' term='objects'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='r'/><title type='text'>R Package with S4 Objects</title><content type='html'>I've finished the development of the (beta version) clustering algorithm on  &lt;a href="http://cran.r-project.org/"&gt;R&lt;/a&gt; for my MSc thesis and I'm releasing it for tests.&lt;br /&gt;&lt;br /&gt;I've developed it mainly in  Windows, but when it comes to the packaging part, I've switched to Linux. This is mainly because R packaging in Windows implies to install a lot of base Linux applications and tools on Windows. For those that wish to go that road, here's what you have to do: read &lt;a href="http://www.blogger.com/faculty.chicagobooth.edu/peter.rossi/research/bayes%20book/bayesm/Making%20R%20Packages%20Under%20Windows.pdf"&gt;Making tutorial about R Packages Under Windows: A Tutorial&lt;/a&gt; by &lt;a href="http://www.blogger.com/faculty.chicagobooth.edu/peter.rossi/research/bayes%20book/bayesm/Making%20R%20Packages%20Under%20Windows.pdf"&gt;Peter Rossi&lt;/a&gt;.&lt;br /&gt;For everyone else, just boot your Linux.&lt;br /&gt;&lt;br /&gt;Before I start, I took a look at &lt;a href="http://cran.r-project.org/doc/manuals/R-exts.html"&gt;Writting R Extensions&lt;/a&gt;. This is the first step for all that wish to build an R extension. A fast and easy way to know how to pack, is to read the &lt;a href="http://www.biostat.harvard.edu/courses/individual/bio271/lectures/L6/Rpkg.pdf"&gt;An Introduction to the R package mechanism&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My implementation uses &lt;a href="http://cran.r-project.org/doc/manuals/R-ints.html#S4-objects"&gt;S4 objects&lt;/a&gt;, and that was a problem, since I had all kinds of warnings and errors during the package tests and installation. Here's the transcriptions of the post I've sent to the &lt;a href="https://stat.ethz.ch/mailman/options/r-help"&gt;R-Help list&lt;/a&gt; asking for help:&lt;br /&gt;&lt;pre&gt;Here's what I do:&lt;br /&gt;&lt;br /&gt;*1.* in R console, I do and get:&lt;br /&gt;&gt; package.skeleton(name='remora')remora-package&lt;br /&gt;Creating directories ...&lt;br /&gt;Creating DESCRIPTION ...&lt;br /&gt;Creating Read-and-delete-me ...&lt;br /&gt;Saving functions and data ...&lt;br /&gt;Making help files ...&lt;br /&gt;Done.&lt;br /&gt;Further steps are described in './remora/Read-and-delete-me'.&lt;br /&gt;Warning messages:&lt;br /&gt;1: In dump(internalObjs, file = file.path(code_dir,&lt;br /&gt;sprintf("%s-internal.R",  :&lt;br /&gt;deparse of an S4 object will not be&lt;br /&gt;source()able&lt;br /&gt;2: In dump(internalObjs, file = file.path(code_dir,&lt;br /&gt;sprintf("%s-internal.R",  :&lt;br /&gt;deparse of an S4 object will not be&lt;br /&gt;source()able&lt;br /&gt;3: In dump(internalObjs, file = file.path(code_dir,&lt;br /&gt;sprintf("%s-internal.R",  :&lt;br /&gt;deparse of an S4 object will not be&lt;br /&gt;source()able&lt;br /&gt;4: In dump(internalObjs, file = file.path(code_dir,&lt;br /&gt;sprintf("%s-internal.R",  :&lt;br /&gt;deparse of an S4 object will not be source()able&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I don't know why I get these warnings. I've followed R&lt;br /&gt;implementation rules and the S4 objects work fine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*2.* Performing the 'R CMD build remora' command I get:&lt;br /&gt;&lt;br /&gt;* checking for file 'remora/DESCRIPTION' ... OK&lt;br /&gt;* preparing 'remora':&lt;br /&gt;* checking DESCRIPTION meta-information ... OK&lt;br /&gt;* removing junk files&lt;br /&gt;* checking for LF line-endings in source and make files&lt;br /&gt;* checking for empty or unneeded directories&lt;br /&gt;* building 'remora_1.0.tar.gz'&lt;br /&gt;&lt;br /&gt;And the remora_1.0.tar.gz file seems ok.&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;3.* Performing the 'R CMD check remora' command I get:&lt;br /&gt;&lt;br /&gt;* checking for working pdflatex ...sh: pdflatex: not found&lt;br /&gt;NO&lt;br /&gt;* checking for working latex ...sh: latex: not found&lt;br /&gt;NO&lt;br /&gt;* using log directory '/home/fmm/thesis/R/src/remora.Rcheck'&lt;br /&gt;* using R version 2.8.1 (2008-12-22)&lt;br /&gt;* using session charset: UTF-8&lt;br /&gt;* checking for file 'remora/DESCRIPTION' ... OK&lt;br /&gt;* checking extension type ... Package&lt;br /&gt;* this is package 'remora' version '1.0'&lt;br /&gt;* checking package dependencies ... OK&lt;br /&gt;* checking if this is a source package ... OK&lt;br /&gt;* checking for executable files ... OK&lt;br /&gt;* checking whether package 'remora' can be installed ...&lt;br /&gt;ERROR&lt;br /&gt;Installation failed.&lt;br /&gt;See '/home/fmm/thesis/R/src/remora.Rcheck/00install.out'&lt;br /&gt;for details.&lt;br /&gt;&lt;br /&gt;*4.* the log file contains:&lt;br /&gt;&lt;br /&gt;* Installing *source* package 'remora'&lt;br /&gt;...&lt;br /&gt;**&lt;br /&gt;R&lt;br /&gt;&lt;br /&gt;**&lt;br /&gt;data&lt;br /&gt;&lt;br /&gt;** preparing package for lazy&lt;br /&gt;loading&lt;br /&gt;Error in parse(n = -1, file = file) : unexpected '&lt;' at 745:&lt;br /&gt;`.__C__remoraConfiguration` &lt;- 746: &lt;&gt; -&gt; code2LazyLoadDB&lt;br /&gt;-&gt; sys.source -&gt; parse Execution halted&lt;br /&gt;ERROR: lazy loading failed for package&lt;br /&gt;'remora'&lt;br /&gt;** Removing&lt;br /&gt;'/home/fmm/thesis/R/src/remora.Rcheck/remora'&lt;br /&gt;fmm@Darkmaster:~/thesis/R/src$ grep -i __C__remoraConfiguration *&lt;br /&gt;fmm@Darkmaster:~/thesis/R/src$ grep -i __C__remoraConfiguration */*&lt;br /&gt;remora.Rcheck/00install.out:745: `.__C__remoraConfiguration`&lt;br /&gt;&lt;- remoraConfiguration is a constructor for the&lt;br /&gt;remoraConfiguration S4 object.  &lt;br /&gt;# # Class configuration definition.&lt;br /&gt;# CLASS_REMORA_CONFIGURATION &lt;- "remoraConfiguration" class_configuration&lt;br /&gt;&lt;- setClass(CLASS_REMORA_CONFIGURATION, representation(&lt;br /&gt;number_clusters = "numeric", class_name = "character",&lt;br /&gt;weighting_function="character", scale_variance="logical", s="numeric",&lt;br /&gt;d="numeric", alfa="numeric", eta = "numeric", niter="numeric",&lt;br /&gt;niter_changes="numeric", perform_sum="logical", verbose="logical"),&lt;br /&gt;prototype = list(number_clusters=numeric(), class_name=character(),&lt;br /&gt;weighting_function=character(),    scale_variance=logical(),&lt;br /&gt;s=numeric(), d=numeric(), alfa=numeric(), eta=numeric(), niter=numeric(),&lt;br /&gt;niter_changes=numeric(), perform_sum=logical(), verbose=logical())) &lt;br /&gt;# # Builds a Remora configuration object.&lt;br /&gt;# # [...]&lt;br /&gt;# remoraConfiguration &lt;- function(number_clusters, class_name,&lt;br /&gt;weighting_function = FUNCTION_REMORA_EUCLIDEAN,&lt;br /&gt;scale_variance=TRUE, s_value = 0.001, d = 0.3, alfa = 0.9, eta = 0.01,&lt;br /&gt;niter=-1, niter_changes=5, perform_sum = TRUE, verbose=FALSE)&lt;br /&gt;{  &lt;br /&gt; result_configuration &lt;- new(CLASS_REMORA_CONFIGURATION) &lt;br /&gt; [...]  &lt;br /&gt; result_configuration&lt;br /&gt;} &lt;/pre&gt;&lt;br /&gt;But, unfortunately, no help came from there...&lt;br /&gt;I've never stopped the search for the answer, and I've finally found it. It's actually quite easy.&lt;br /&gt;Instead of packing it from the current environment, I've just passed the package.skeleton the list of source files to build the package. Here's the small R script I've done to automate the packaging procedure for my "Remora" package:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;cat('\nPacking Remora...\n')&lt;br /&gt;&lt;br /&gt;file_lst &lt;- character(5)&lt;br /&gt;file_lst[1] &lt;- '/home/m6/thesis/R/src/1_classes.r'&lt;br /&gt;file_lst[2] &lt;- '/home/m6/thesis/R/src/2_common.r'&lt;br /&gt;file_lst[3] &lt;- '/home/m6/thesis/R/src/3_model.r'&lt;br /&gt;file_lst[4] &lt;- '/home/m6/thesis/R/src/4_predict.r'&lt;br /&gt;file_lst[5] &lt;- '/home/m6/thesis/R/src/5_main.r'   &lt;br /&gt;&lt;br /&gt;package.skeleton(name = "remora", force = TRUE, namespace = TRUE,&lt;br /&gt;code_files = file_lst)   &lt;br /&gt;&lt;br /&gt;cat('\nDone.\n') &lt;/pre&gt;Now it's time to go to the directory created, with the name of the package,&lt;span style="font-family:courier new;"&gt; &lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package&gt;&lt;/package&gt; &lt;package&gt; from now on &lt;span style="font-family: courier new;"&gt;{package}&lt;/span&gt;, and edit the following files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package&gt;&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;/DESCRIPTION&lt;/package&gt;&lt;/span&gt;, the description of the package;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package style="font-family: courier new;"&gt;&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;/NAMESPACE&lt;/package&gt;&lt;/span&gt;, the list of functions and classes to export to the user;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package style="font-family: courier new;"&gt;&lt;/package&gt;&lt;package style="font-family: courier new;"&gt;/&lt;/package&gt;&lt;package style="font-family: courier new;"&gt;man/&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;&lt;package&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package&gt;&lt;span style="font-family:courier new;"&gt;-package.Rd&lt;/span&gt;, the package help file, the &lt;span style="font-family:courier new;"&gt;\examples&lt;/span&gt; section must provide executable code, since R check command will execute this code;&lt;/package&gt;&lt;/package&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package style="font-family: courier new;"&gt;&lt;/package&gt;&lt;package style="font-family: courier new;"&gt;/man/&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;{class_name}&lt;/span&gt;&lt;package&gt;&lt;span style="font-family:courier new;"&gt;&lt;class_name&gt;&lt;/class_name&gt;&lt;/span&gt;&lt;package&gt;&lt;span style="font-family:courier new;"&gt;-class.Rd&lt;/span&gt;, the classes help files;&lt;/package&gt;&lt;/package&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package style="font-family: courier new;"&gt;&lt;/package&gt;&lt;package style="font-family: courier new;"&gt;/man/&lt;function_name&gt;&lt;/function_name&gt;&lt;package&gt;&lt;/package&gt;&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;{function_name}&lt;/span&gt;&lt;package&gt;&lt;package&gt;&lt;span style="font-family:courier new;"&gt;.Rd&lt;/span&gt;, the functions help files;&lt;/package&gt;&lt;/package&gt;&lt;/li&gt;&lt;/ul&gt;All files under &lt;/package&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;&lt;/package&gt;&lt;/span&gt;&lt;package&gt;&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;/man/&lt;/span&gt;&lt;package&gt; are &lt;a href="http://en.wikipedia.org/wiki/TeX"&gt;tex&lt;/a&gt; files and will be compiled to provide the functions help when invoked by the user.&lt;br /&gt;It's only necessary to document the classes and functions that will be exported, i. e. exported in the &lt;/package&gt;&lt;span style="font-family:courier new;"&gt;&lt;package&gt;NAMESPACE&lt;/package&gt;&lt;/span&gt;&lt;package&gt; file, since all the others will not be visible to the user. All the other &lt;span style="font-family:courier new;"&gt;.Rd&lt;/span&gt; files may be deleted.&lt;br /&gt;&lt;br /&gt;After the package has been created, I've tested with the "&lt;span style="font-family:courier new;"&gt;R CMD check {package}&lt;/span&gt;&lt;/package&gt;"&lt;package&gt; command.  My package name is "remora", so my command was "&lt;/package&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;sudo R CMD check remora&lt;/span&gt;"&lt;package&gt;.&lt;br /&gt;I had to run this command with the administration role, so I prefixed it with the &lt;/package&gt;"&lt;package style="font-family: courier new;"&gt;sudo&lt;/package&gt;"&lt;package&gt; command. I believe this is a characteristic of the Kubuntu distribution.&lt;br /&gt;&lt;br /&gt;Finally I've build the package with the &lt;/package&gt;"&lt;package&gt;&lt;span style="font-family:courier new;"&gt;R CMD build &lt;/span&gt;&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;"&lt;package&gt; command that created the &lt;span style="font-family:courier new;"&gt;tar.gz&lt;/span&gt; file for distribution.&lt;br /&gt;&lt;br /&gt;To install it, just use the &lt;/package&gt;"&lt;package style="font-family: courier new;"&gt;R CMD INSTALL &lt;/package&gt;&lt;span style="font-family: courier new;font-family:courier new;" &gt;{package}&lt;/span&gt;"&lt;package&gt; command. I've entered R and  it worked fine.&lt;br /&gt;To uninstall just execute &lt;/package&gt;"&lt;package&gt;&lt;span style="font-family:courier new;"&gt;R CMD REMOVE &lt;/span&gt;&lt;/package&gt;&lt;span style="font-family:courier new;"&gt;{package}&lt;/span&gt;"&lt;package&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;/package&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-7277317214530938338?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/7277317214530938338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/r-package-with-s4-objects.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7277317214530938338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/7277317214530938338'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/r-package-with-s4-objects.html' title='R Package with S4 Objects'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-3666848816914537662</id><published>2009-06-01T11:56:00.007+01:00</published><updated>2009-06-01T20:34:26.771+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Bing</title><content type='html'>&lt;em&gt;But It's Not Google.&lt;/em&gt;&lt;br /&gt;That's Bing, the Microsoft rebranded and reformated search engine.&lt;br /&gt;&lt;br /&gt;Bing has a nice background picture and allows me to search in English or Portuguese, but when there's a tie, the Portuguese result shows up first.&lt;br /&gt;&lt;br /&gt;For what I could tell, it's definitely  not Google.&lt;br /&gt;Google is currently more than a search engine.&lt;br /&gt;On Google I can ask simple questions like "&lt;a href="http://www.google.com/search?q=4+times+5&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;4 times 5&lt;/a&gt;" or "&lt;a href="http://www.google.com/search?hl=en&amp;amp;client=firefox-a&amp;amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;amp;hs=bXQ&amp;amp;q=1+euro+in+usd&amp;amp;btnG=Search&amp;amp;aq=f&amp;amp;oq=&amp;amp;aqi=g5"&gt;1 euro in usd&lt;/a&gt;" and I get "4 times 5 = 20" and "1 Euro = 1.4225 U.S. dollars", this one depending on near real time&lt;br /&gt;In Bing I only get regular search engine results.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GeVl3XPGXfk/SiQtEHAni4I/AAAAAAAAABQ/NVUa3aj33V0/s1600-h/bing-4-times-5.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 380px;" src="http://2.bp.blogspot.com/_GeVl3XPGXfk/SiQtEHAni4I/AAAAAAAAABQ/NVUa3aj33V0/s400/bing-4-times-5.jpg" alt="" id="BLOGGER_PHOTO_ID_5342444606592617346" border="0" /&gt;&lt;/a&gt;&lt;span style="font-style: italic;"&gt;Bing answer for 4 times 5.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;When trying to search information in news group "linux.debian.laptop", I can do it in Google and since Bing knows it, Bing shows the Google Groups for "linux.debian.laptop".&lt;br /&gt;&lt;br /&gt;As &lt;a href="http://www.feedblitz.com/t.asp?/198516/12077667/http://feedproxy.google.com/%7Er/typepad/sethsmainblog/%7E3/2p5zP5URlDg/the-next-google.html"&gt;Seth Godin&lt;/a&gt; puts it, looks like Microsoft is trying to be the next Google, but currently here's already a next Google: Google.&lt;br /&gt;&lt;br /&gt;Why should people change for something that works well to something that seems not to have a real distinguishing factor? At least for now, it's still, as alomost in Google, a Beta version. Even if Microsoft adds a few cool features, how much time it Google take to clone it and improve it?&lt;br /&gt;&lt;br /&gt;I don't really know why Microsoft is investing so much time, money and effort in such a battle when they could be doing something remarkable.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update&lt;/span&gt;&lt;br /&gt;I've just discovered that actually Bing does some math and it knows how to answer &lt;a href="http://www.bing.com/search?q=4+times+5&amp;amp;setmkt=en-US&amp;amp;setlang=SET_NULL&amp;amp;uid=45460255&amp;amp;FORM=W5WA"&gt;4 times 5&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What I also discovered is that, like many Microsoft applications, it thinks it knows what is best for me and, as always, it thinks &lt;span style="font-style: italic;"&gt;wrong&lt;/span&gt;!&lt;br /&gt;I've specifically have told Bing that I wanted results in English, but it ignored me and gave me results in Portuguese and looks like in Portuguese it was unable to compute 4 times 5.&lt;br /&gt;Looks like Bing thinks that since I'm located in Portugal, I cannot ask questions in English! Is this stupid or what?&lt;br /&gt;If it thinks it's smart enough to know what's best for me, I've asked the same question in Portuguese, "4 vezes 5" and, as I expected, it failed to answer the question.&lt;br /&gt;Not very smart, Bing...&lt;br /&gt;&lt;br /&gt;Bing is not Google, and they can say that again!&lt;br /&gt;Keep up like that and definitely it will continue to live obfuscated by Google, like the "eternal wanna be"...&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-3666848816914537662?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/3666848816914537662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/bing.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3666848816914537662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/3666848816914537662'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/06/bing.html' title='Bing'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GeVl3XPGXfk/SiQtEHAni4I/AAAAAAAAABQ/NVUa3aj33V0/s72-c/bing-4-times-5.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1678809174759658177.post-4000177402794957975</id><published>2009-05-28T15:41:00.004+01:00</published><updated>2009-05-28T15:52:26.499+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='example'/><category scheme='http://www.blogger.com/atom/ns#' term='jface'/><category scheme='http://www.blogger.com/atom/ns#' term='ejb'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='database'/><category scheme='http://www.blogger.com/atom/ns#' term='swt'/><title type='text'>Java by API examples</title><content type='html'>I was seeking information for the &lt;a href="http://help.eclipse.org/help32/topic/org.eclipse.platform.doc.isv/reference/api/org/eclipse/ui/dialogs/FilteredTree.html"&gt;FilteredTree&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/JFace"&gt;Jface &lt;/a&gt;object and I've found a great knowledge repository for &lt;a href="http://www.blogger.com/%7Ehttp://www.java.com/"&gt;Java&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Standard_Widget_Toolkit"&gt;SWT&lt;/a&gt;, JFace &lt;a href="http://en.wikipedia.org/wiki/Ejb"&gt;EJB&lt;/a&gt;, and other technologies, like &lt;a href="http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29"&gt;C#&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/C%2B%2B"&gt;C++&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Python_%28programming_language%29"&gt;Python&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Microsoft_SQL_Server"&gt;SQL Server&lt;/a&gt;, and many more.&lt;br /&gt;&lt;br /&gt;In the &lt;a href="http://www.java2s.com/Code/JavaAPI/CatalogJavaAPI.htm"&gt;Java By API examples&lt;/a&gt;, everything is by example and it's hierarchically organized, which helps a lot when one's exploring Java packages, for instance.&lt;br /&gt;&lt;br /&gt;You can take a look at it in &lt;a href="http://www.java2s.com/"&gt;http://www.java2s.com/&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;./M6&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1678809174759658177-4000177402794957975?l=m6onsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://m6onsoftware.blogspot.com/feeds/4000177402794957975/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://m6onsoftware.blogspot.com/2009/05/java-by-api-examples.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4000177402794957975'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1678809174759658177/posts/default/4000177402794957975'/><link rel='alternate' type='text/html' href='http://m6onsoftware.blogspot.com/2009/05/java-by-api-examples.html' title='Java by API examples'/><author><name>M6</name><uri>http://www.blogger.com/profile/00619052817958724211</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
