<?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-3519207518972324416</id><updated>2011-04-21T14:34:26.090-07:00</updated><category term='Mac OS X'/><category term='eclipse'/><title type='text'>tsoueid's technology musings</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-5752602951858204887</id><published>2009-03-15T03:01:00.000-07:00</published><updated>2009-03-15T03:39:03.673-07:00</updated><title type='text'>Photography technique: flash compensation.</title><content type='html'>&lt;div&gt;Flash compensation is a feature that can be found on some digital cameras that allows you to control the power of the camera's flash unit (&lt;a href="http://www.digicamhelp.com/camera-features/advanced-settings/fc.php"&gt;check here for more details&lt;/a&gt;).&lt;div&gt;When using a fill flash (&lt;a href="http://www.danheller.com/tech-fillflash.html"&gt;check this&lt;/a&gt;) to lighten up a dark foreground subject compared to a bright background, flash compensation may be of utter importance.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Below are two photos I have taken of a subject placed in a relatively bright background.&lt;/div&gt;&lt;div&gt;I was using a Nikon D60 with the following settings kept the same across the two shots:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;focal length: 135 mm&lt;/li&gt;&lt;li&gt;f-stop: 6&lt;/li&gt;&lt;li&gt;shutter speed: 1/80 sec&lt;/li&gt;&lt;li&gt;400 ISO, Matrix metering, auto WB&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;I also used fill flash. Should I have not used fill flash, the foreground subject would have come out way too dark.&lt;/div&gt;&lt;div&gt;In figure 1 I did not use any flash compensation. Notice how some areas of the subject are washed out (overexposed): bottom right corner of each box and the center spot of the blue box.&lt;/div&gt;&lt;div&gt;Figure 2 was taken with a flash compensation of -1.3 EV. Notice how the washed out areas have diminished.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope this proves useful.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D1lEib3bye4/SbzVUN42Q9I/AAAAAAAAAP0/pAf-9eKjv5E/s1600-h/flash_compensation-1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_D1lEib3bye4/SbzVUN42Q9I/AAAAAAAAAP0/pAf-9eKjv5E/s320/flash_compensation-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5313356203692540882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;figure 1: fill flash with 0.0 flash compensation.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D1lEib3bye4/SbzVUNuG36I/AAAAAAAAAP8/NJEU1KsCop0/s1600-h/flash_compensation-2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 214px;" src="http://1.bp.blogspot.com/_D1lEib3bye4/SbzVUNuG36I/AAAAAAAAAP8/NJEU1KsCop0/s320/flash_compensation-2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5313356203647492002" /&gt;&lt;/a&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;figure 2: fill flash with -1.3 flash compensation.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-5752602951858204887?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/5752602951858204887/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=5752602951858204887' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/5752602951858204887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/5752602951858204887'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2009/03/photography-technique-flash.html' title='Photography technique: flash compensation.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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/_D1lEib3bye4/SbzVUN42Q9I/AAAAAAAAAP0/pAf-9eKjv5E/s72-c/flash_compensation-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-2224501462780737194</id><published>2009-02-12T14:39:00.000-08:00</published><updated>2009-02-12T14:52:49.231-08:00</updated><title type='text'>Third Normal Form refresher</title><content type='html'>&lt;div&gt;Database normalization refresher for myself:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First Normal Form (1NF): no repeating groups of elements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Second Normal Form (2NF): each column must depend on the &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;entire&lt;/span&gt; key (in other words, no partial dependencies on a concatenated key).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Third Normal Form (3NF): each column must depend &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;directly&lt;/span&gt; on the key (in other words, no dependencies on non-key attributes).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-2224501462780737194?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/2224501462780737194/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=2224501462780737194' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/2224501462780737194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/2224501462780737194'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2009/02/third-normal-form-refresher.html' title='Third Normal Form refresher'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-9005054625511798020</id><published>2009-01-17T02:13:00.000-08:00</published><updated>2009-01-17T02:27:26.773-08:00</updated><title type='text'>Website design and logo video tutorials.</title><content type='html'>&lt;div&gt;While in my day to day work my window to the computer world is the unix shell, I decided to tackle during some of my free time a more creative aspect of computer usage: websites design and development.&lt;/div&gt;&lt;div&gt;Technologies, tools and approaches in this field are numerous; Therefore the uninitiated soul like mine could easily get lost in this sea of information.&lt;/div&gt;&lt;div&gt;However, I quickly came to the conclusion that the best workflow to follow in designing a website is through the Adobe Creative Suite set of tools i.e. Photoshop, Flash, Dreamweaver.&lt;/div&gt;After extensively searching through the net, I fell on the following website &lt;a href="http://how.todesginyour.com"&gt;how.todesginyour.com&lt;/a&gt;.&lt;div&gt;The guy has a set of video tutorials that go through each of every step of:&lt;/div&gt;&lt;div&gt;  - designing a website in Photoshop.&lt;/div&gt;&lt;div&gt;  - Slicing the design for the Web.&lt;/div&gt;&lt;div&gt;  - Importing in Dreamweaver and coding it in HTML and CSS.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The videos cost around 50$/30€ but they are worth it. I am currently going through these videos and I have come a long way in understanding how to design an build a website.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Who knows maybe I will, one day, use this knowledge to earn money :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-9005054625511798020?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/9005054625511798020/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=9005054625511798020' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/9005054625511798020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/9005054625511798020'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2009/01/website-design-and-logo-video-tutorials.html' title='Website design and logo video tutorials.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-889114724742369269</id><published>2008-11-19T13:24:00.000-08:00</published><updated>2008-11-19T13:40:06.356-08:00</updated><title type='text'>Developing in Eclipse, modelling, reverse engineering and profiling in Netbeans.</title><content type='html'>As the old saying goes, "no size fits all"; even in the Java IDE world. I am a big fan of Eclipse as a development platform especially all the technologies that constitute the platform from SWT/JFace to GMF/EMF and RCP.&lt;div&gt;But not everything in Eclipse is as great as the above technologies and projects. &lt;/div&gt;&lt;div&gt;Lately I had developed an application in Java/SWT/JFace as a tool to analyze performance metrics that are output by the software application that the company I currently work for sells and supports.&lt;/div&gt;&lt;div&gt;As the tool grew more complex and powerful, I had to reverse engineer and profile that application. Naturally in Eclipse one would use UML2Tools for modelling and TPTP for profiling. Problem is that I found UML2Tools to be a not so intuitive and ergonomic tool and that TPTP was a big pain in the neck to make it work once every ten attempts.&lt;/div&gt;&lt;div&gt;While looking at all possible alternatives (mainly free to use) I evaluated the Netbeans modeling and profiling modules. &lt;/div&gt;&lt;div&gt;After some pain in making an SWT application compile and run from within Netbeans, I was impressed by the intuitiveness and easy of use of these two modules.&lt;/div&gt;&lt;div&gt;I think from now both Eclipse and Netbeans will be part of my Java development toolset.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cheers,&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-889114724742369269?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/889114724742369269/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=889114724742369269' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/889114724742369269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/889114724742369269'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/11/developing-in-eclipse-modelling-reverse.html' title='Developing in Eclipse, modelling, reverse engineering and profiling in Netbeans.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-96919740442706763</id><published>2008-11-11T07:24:00.000-08:00</published><updated>2008-11-11T07:49:50.539-08:00</updated><title type='text'>Making my first JFace application work.</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_D1lEib3bye4/SRmnkvpVw1I/AAAAAAAAAOA/C4u9GOVshgc/s1600-h/jface.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 192px;" src="http://3.bp.blogspot.com/_D1lEib3bye4/SRmnkvpVw1I/AAAAAAAAAOA/C4u9GOVshgc/s320/jface.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5267425488893494098" /&gt;&lt;/a&gt;&lt;br /&gt;I spent a few hours trying to make the simple HelloWorld JFace application from the book "The Definitive Guide to SWT and JFace" work. Had to go through a bunch of Internet forums and trial and error in order to make it work. The secret lies in the external jars that should be added to the build path of the project in Eclipse. Without these jars I kept getting the following error when trying to launch the application:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The minimum set I had to include to make the application work is the following:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;org.eclipse.swt.xxx.jar&lt;/li&gt;&lt;li&gt;org.eclipse.jface.xxx.jar&lt;/li&gt;&lt;li&gt;org.eclipse.core.runtime.xxx.jar&lt;/li&gt;&lt;li&gt;org.eclipse.equinox.common.xxx.jar&lt;/li&gt;&lt;li&gt;org.eclipse.core.commands.xxx.jar&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Hoping this will prove helpful to you...&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-96919740442706763?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/96919740442706763/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=96919740442706763' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/96919740442706763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/96919740442706763'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/11/making-my-first-jface-application-work.html' title='Making my first JFace application work.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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/_D1lEib3bye4/SRmnkvpVw1I/AAAAAAAAAOA/C4u9GOVshgc/s72-c/jface.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-2667723422364354597</id><published>2008-10-26T04:18:00.000-07:00</published><updated>2008-10-26T04:19:25.158-07:00</updated><title type='text'>Great, neat and simple Photoshop tutorial.</title><content type='html'>Those wanting to learn Photoshop in an interactive manner can read the tutorial hosted on the following website &lt;a href="http://www.karbosguide.com/books/ap70"&gt;www.karbosguide.com/books/ap70&lt;/a&gt;.&lt;br /&gt;The author of this website has posted an english translation (not perfect english though) of a booklet about Photoshop.&lt;br /&gt;The booklet was targeted at Photoshop 7 but it is still valid for Photoshop CS3.&lt;br /&gt;It contains a set of chapters and practical exercises dealing with all facets of Photoshop wether it's the toolset, layers, filters etc.&lt;br /&gt;I highly recommend you completely read this booklet and do all the exercises in order to grasp the concepts behind Photoshop, concepts necessary in order to master more advanced uses of Photoshop like digital art and digital photography retouching.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-2667723422364354597?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/2667723422364354597/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=2667723422364354597' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/2667723422364354597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/2667723422364354597'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/10/great-neat-and-simple-photoshop.html' title='Great, neat and simple Photoshop tutorial.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-8868760531720563160</id><published>2008-10-26T03:50:00.000-07:00</published><updated>2008-10-26T04:17:46.551-07:00</updated><title type='text'>SWT asyncExec adventures.</title><content type='html'>Lately, I have been writing a SWT GUI application that parses a (relatively large in size) log file and displays the data in a UI Tree.&lt;br /&gt;Since parsing the log file could take up to ten or more seconds, I wanted to add a ProgressBar element to my UI.&lt;br /&gt;I also had to make my long running operation run in its own thread so as to not block the UI. After a few trial and error attempts&lt;br /&gt;and some googling, I figured how things should happen (see below code - with comments).&lt;br /&gt;&lt;br /&gt;Basically, what needs to be kept in mind:&lt;br /&gt;&lt;br /&gt; ✓ the long running operation should run in its own thread concurrently to the UI thread.&lt;br /&gt; ✓ when the non UI thread needs to access UI elements in needs to do so by invoking the asyncExec method of the shell.&lt;br /&gt;Otherwise, SWT illegal thread access exceptions will be thrown.&lt;div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; public void widgetSelected(SelectionEvent event) {&lt;br /&gt;  FileDialog fd = new FileDialog(gui.getShell(), SWT.OPEN);&lt;br /&gt;  ...&lt;br /&gt;  final String filename = fd.open();&lt;br /&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;//My long running operation (parsing a log file in this case) should execute in its own thread.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;  Thread th = new Thread("log file parser") {&lt;br /&gt;    public void run() {&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;   //Before parsing the log file we want to enable a visual indicator in the GUI&lt;br /&gt;    //for instance in our case a (indeterminate) progress bar.&lt;br /&gt;    //since SWT won't let us access UI elements from a non-UI thread we have to&lt;br /&gt;    //use asyncExec. &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;    gui.getDisplay().asyncExec(new Runnable() {&lt;br /&gt;      public void run() {&lt;br /&gt;        gui.enableProgressBar(true);&lt;br /&gt;      }&lt;br /&gt;    });&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;   //we parse the log file. Remember we are still in our new non-UI thread.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;    parser.parseFile(filename);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;    //After parsing the log file, we want to disable the visual indicator (i.e.&lt;br /&gt;    //the progress bar and update other UI elements.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;    gui.getDisplay().asyncExec(new Runnable() {&lt;br /&gt;      public void run() {&lt;br /&gt;        gui.enableProgressBar(false);&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;       //post-parsing work like populating a Tree or a Table.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;        tree.removeAll();&lt;br /&gt;        TreeItem rootTreeItem = new TreeItem(tree, 0);&lt;br /&gt;        rootTreeItem.setText(parser.getRootNode().getName());&lt;br /&gt;        rootTreeItem.setData(parser.getRootNode());&lt;br /&gt;        new TreeItem(rootTreeItem, 0);&lt;br /&gt;      }&lt;br /&gt;      });&lt;br /&gt;    }&lt;br /&gt;  };&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new';"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt; //we kickoff our thread. Remember that the current thread (the one&lt;br /&gt;  //in which our widgetSelected method is executing) is the main UI thread.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;br /&gt;  th.start();&lt;br /&gt;} &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 102, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;//end widgetSelected&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'courier new'; font-size: 10px;"&gt;&lt;br /&gt;&lt;/span&gt;I hope this proves helpful to you when coding SWT apps.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-8868760531720563160?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/8868760531720563160/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=8868760531720563160' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/8868760531720563160'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/8868760531720563160'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/10/swt-asyncexec-adventures.html' title='SWT asyncExec adventures.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-6198567854926511062</id><published>2008-08-19T12:45:00.000-07:00</published><updated>2008-08-19T13:25:56.272-07:00</updated><title type='text'>Trusted Trio Inbox mastering methodology.</title><content type='html'>&lt;div&gt;For the past couple of months, I have been adopting the Inbox emptying workflow known as the trusted trio (see the following &lt;a href="http://lifehacker.com/software/email/empty-your-inbox-with-the-trusted-trio-182318.php"&gt;link&lt;/a&gt;) in order to have a more manageable email inbox at work.&lt;/div&gt;&lt;div&gt;In a nutshell, the trusted trio methodology consists of having three separate folders (FollowUp, OnHold and Archive) in which every email that lands into your inbox should go.&lt;/div&gt;&lt;div&gt;Typically I check my inbox once every hour and follow the following process:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;email does not concern me: delete it immediately.&lt;/li&gt;&lt;li&gt;I can answer the email in under two minutes: reply immediately.&lt;/li&gt;&lt;li&gt;I need to follow up on that email with an action that takes more than 2 minutes: put it in the FollowUp folder.&lt;/li&gt;&lt;li&gt;I'm waiting on someone for that email: put it in OnHold.&lt;/li&gt;&lt;li&gt;I may need this email for future reference: stuff it in Archive folder.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Up until now I have been able to follow this process rather successfully, I leave work with an empty inbox, I have a FollowUp folder that contains between 10 and 40 emails.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I highly recommend mastering your email inbox with this methodology.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-6198567854926511062?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/6198567854926511062/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=6198567854926511062' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/6198567854926511062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/6198567854926511062'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/08/trusted-trio-inbox-mastering.html' title='Trusted Trio Inbox mastering methodology.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-3512490756031003</id><published>2008-07-30T13:31:00.000-07:00</published><updated>2008-07-30T13:43:03.436-07:00</updated><title type='text'>Comic strips with photoshop...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_D1lEib3bye4/SJDRUd1wt_I/AAAAAAAAADY/P4ZY18IWr0I/s1600-h/orig.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp3.blogger.com/_D1lEib3bye4/SJDRUd1wt_I/AAAAAAAAADY/P4ZY18IWr0I/s320/orig.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5228909316914853874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_D1lEib3bye4/SJDRUcHHknI/AAAAAAAAADg/EqtJcbhqvxM/s1600-h/comic3.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://bp2.blogger.com/_D1lEib3bye4/SJDRUcHHknI/AAAAAAAAADg/EqtJcbhqvxM/s320/comic3.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5228909316450783858" /&gt;&lt;/a&gt;&lt;br /&gt;Yesterday I wanted to exercise my creativity through some playing with photoshop. I fell on a tutorial (see this &lt;a href="http://www.macmerc.com/sections.php?op=viewarticle&amp;amp;artid=209"&gt;link&lt;/a&gt;) on MacMerc.com.&lt;div&gt;Really Nice: here is what I could obtain from a photo of mine:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-3512490756031003?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/3512490756031003/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=3512490756031003' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/3512490756031003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/3512490756031003'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/07/comic-strips-with-photoshop.html' title='Comic strips with photoshop...'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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://bp3.blogger.com/_D1lEib3bye4/SJDRUd1wt_I/AAAAAAAAADY/P4ZY18IWr0I/s72-c/orig.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-3889284893526569571</id><published>2008-05-15T15:24:00.000-07:00</published><updated>2008-05-15T15:33:32.555-07:00</updated><title type='text'>Upgrade Your Life book.</title><content type='html'>I've been reading Gina Trapani's book "Upgrade your life". It's a book full of very useful tips and hacks about how to organize your private and work life. This book constitutes a collection of the best hack that have been published on lifehacker.com. I have been experimenting implementing some of the book's hack in my life and this has helped me keep organized and productive. I really recommend this book.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-3889284893526569571?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/3889284893526569571/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=3889284893526569571' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/3889284893526569571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/3889284893526569571'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/05/upgrade-your-life-book.html' title='Upgrade Your Life book.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-4279867254499468692</id><published>2008-04-01T12:42:00.000-07:00</published><updated>2008-04-01T12:55:49.593-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mac OS X'/><title type='text'>I'm a Mac switcher</title><content type='html'>It's done, I'm an official Mac switcher. I've always been fascinated by Apple computers and Mac OS X but I never had the will and time to switch.&lt;div&gt;Two weeks ago I decided to buy myself a gift: a brand new 17" MacBook Pro; my old laptop became too noisy and slow anyway. My wallet is still screaming from pain (2500 € / 3900 dollars is a real pain in the ass) but it's worth every single penny; besides I think this box will server me at least for 5 years.&lt;/div&gt;&lt;div&gt;Right now I am exploring the world of Leopard and Mac OS X diverse applications.&lt;/div&gt;&lt;div&gt;I'f you're a fresh switcher like me I advise you to read articles posted on the following websites:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.myfirstmac.com/"&gt;My First Mac&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://lifehacker.com/tag/mac-os-x/"&gt;LifeHacker Mac OS X section&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;If you're a french speaking person like me, there's a brand new Mac OS X oriented magazine published in France: &lt;a href="http://www.competencemac.com/"&gt;Competence MAC&lt;/a&gt;. Issue 1 is just out and it's all about Leopard. Go ahead and buy it, it's an ideal read in the metro while commuting to work.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Bye bye windows, Linux i'll still use you from time to time :)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-4279867254499468692?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/4279867254499468692/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=4279867254499468692' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4279867254499468692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4279867254499468692'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/04/im-mac-switcher.html' title='I&apos;m a Mac switcher'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-7487304455092360918</id><published>2008-03-12T15:36:00.000-07:00</published><updated>2008-03-12T15:54:46.229-07:00</updated><title type='text'>creating a executable wrapper for a java program.</title><content type='html'>Today I wanted to create a Windows executable wrapper around my java jar files. I find it more handy to create such an executable wrapper for daemon processes I want to add to my Windows "Startup" menu for example.&lt;br /&gt;&lt;br /&gt;For that I used an open source program called launch4j (&lt;a href="http://launch4j.sourceforge.net/"&gt;launch4j.sourceforge.net&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;Here are the steps needed to create your own executable out of java jar files:&lt;br /&gt;&lt;br /&gt;1) Make sure you have your main program jar file, any utility jar and resources files available in the same directory.&lt;br /&gt;&lt;br /&gt;2) Make sure that your main program jar file's MANIFEST.MF file contains the following information:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Class-Path: *.jar&lt;/span&gt;&lt;br /&gt;where *.jar is the list of jar files your main program needs and that should be in your classpath. For example in my case this was: &lt;span style="font-weight: bold;"&gt;Class-Path: nsclient4j.jar&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Main-Class: PathOfClassContainingMainMethod&lt;/span&gt;&lt;br /&gt;where PathOfClassContainingMainMethod is the name of the class that starts your program.&lt;br /&gt;For example in my case this was:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Main-Class: net.sf.rcpperfmon.deamon.HostPerformanceStatsDeamon&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;3)  Start Launch4j and fill these minimally needed information:&lt;br /&gt;- output .exe name.&lt;br /&gt;- main jar file containing the startup class.&lt;br /&gt;- minimum jre version.&lt;br /&gt;&lt;br /&gt;Once you press on the build button you should have your .exe correctly create as per the below figure.&lt;br /&gt;&lt;br /&gt;Happy coding.....and wrapping.....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_D1lEib3bye4/R9hfEg7ltEI/AAAAAAAAACw/zeNJUJyFp0g/s1600-h/launch4j.PNG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_D1lEib3bye4/R9hfEg7ltEI/AAAAAAAAACw/zeNJUJyFp0g/s320/launch4j.PNG" alt="" id="BLOGGER_PHOTO_ID_5176992302826370114" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-7487304455092360918?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/7487304455092360918/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=7487304455092360918' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/7487304455092360918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/7487304455092360918'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/03/creating-executable-wrapper-for-java.html' title='creating a executable wrapper for a java program.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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/_D1lEib3bye4/R9hfEg7ltEI/AAAAAAAAACw/zeNJUJyFp0g/s72-c/launch4j.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-4199151900168442356</id><published>2008-03-09T15:17:00.000-07:00</published><updated>2008-03-09T15:27:27.140-07:00</updated><title type='text'>RCP Performance Monitor</title><content type='html'>During the last couple of months I was intensively reading articles about and learning how to write RCP applications using the Eclipse Rich Client Platform technology.&lt;br /&gt;In the process of learning, I managed to write a simple application (along with its accompanying server side daemon) that can be used to monitor CPU utilization of remote hosts over a network.&lt;br /&gt;&lt;br /&gt;The code is hosted on &lt;a href="http://code.google.com/p/rcpperfmon/"&gt;http://code.google.com/p/rcpperfmon/&lt;/a&gt; and is licensed under the LGPL.&lt;br /&gt;Below is a screenshot of my application. I am very excited and happy that I managed to learn how to write Eclipse RCP apps and I am thinking about making a tutorial out of that application.&lt;br /&gt;&lt;br /&gt;Keep posted...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_D1lEib3bye4/R9RijA7ltDI/AAAAAAAAACo/W3sSXN6jrwE/s1600-h/RcpPerfMon.PNG"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_D1lEib3bye4/R9RijA7ltDI/AAAAAAAAACo/W3sSXN6jrwE/s320/RcpPerfMon.PNG" alt="" id="BLOGGER_PHOTO_ID_5175870225440420914" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-4199151900168442356?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/4199151900168442356/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=4199151900168442356' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4199151900168442356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4199151900168442356'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/03/rcp-performance-monitor.html' title='RCP Performance Monitor'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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://4.bp.blogspot.com/_D1lEib3bye4/R9RijA7ltDI/AAAAAAAAACo/W3sSXN6jrwE/s72-c/RcpPerfMon.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-4171074747796025651</id><published>2008-03-09T01:30:00.000-08:00</published><updated>2008-03-09T01:40:22.483-08:00</updated><title type='text'>Restoring GRUB boot menu from ubuntu live CD.</title><content type='html'>If windows overwrites your MBR you can boot into any ubuntu live CD and do the following from a terminal window. This happened to me today and the steps below solved my problem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;sudo grub&lt;/strong&gt;&lt;br /&gt;this will log you into GRUB, you should get a grub&gt; prompt.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;find /boot/grub/stage1&lt;/strong&gt;&lt;br /&gt;This will search for the location where grub is installed and will return a string of the form hd(?,?) which will be used in the next command.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;root hd(?,?)&lt;/strong&gt;&lt;br /&gt;This will tell GRUB the correct location. Do not forget to replace the ? will the values returned frol the previous comand.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;setup (hd0)&lt;/strong&gt;&lt;br /&gt;This will install GRUB on your MBR.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-4171074747796025651?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/4171074747796025651/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=4171074747796025651' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4171074747796025651'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4171074747796025651'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/03/restoring-grub-boot-menu-from-ubuntu.html' title='Restoring GRUB boot menu from ubuntu live CD.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-191376176846877789</id><published>2008-03-01T10:44:00.000-08:00</published><updated>2008-03-01T10:55:24.867-08:00</updated><title type='text'>My first steps using the GIMP</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;Lately, I have been reading some tutorials about the GIMP (GNU Image Manipulation Program). The tool is really powerful and feature rich. One is only limited by their creativity while creating graphics or editing images with the GIMP.&lt;br /&gt;&lt;br /&gt;Today, I stumbled across the following short tutorial&lt;br /&gt;&lt;br /&gt;&lt;a href="http://binnyva.blogspot.com/2006/12/using-gimp-to-make-web-20-buttons-and.html"&gt;&lt;span style="font-weight: bold;"&gt;Using Gimp to make Web 2.0 Buttons and Graphics&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And I managed to create a simple but really cool buttons for my web page. Below is a sample HTML page I crafted in 2 minutes.&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_D1lEib3bye4/R8mmcA4TlXI/AAAAAAAAACg/O6p3i118rZg/s1600-h/sample_simple_webpage.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_D1lEib3bye4/R8mmcA4TlXI/AAAAAAAAACg/O6p3i118rZg/s320/sample_simple_webpage.png" alt="" id="BLOGGER_PHOTO_ID_5172848647214437746" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;h1 style="color: rgb(0, 0, 0);" class="post-title"&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://binnyva.blogspot.com/2006/12/using-gimp-to-make-web-20-buttons-and.html"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-191376176846877789?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/191376176846877789/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=191376176846877789' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/191376176846877789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/191376176846877789'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/03/my-first-steps-using-gimp.html' title='My first steps using the GIMP'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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/_D1lEib3bye4/R8mmcA4TlXI/AAAAAAAAACg/O6p3i118rZg/s72-c/sample_simple_webpage.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-3027328068160584413</id><published>2008-02-26T13:46:00.000-08:00</published><updated>2008-02-26T14:04:21.949-08:00</updated><title type='text'>Compiz brings dynamic desktop effects to my Unbuntu desktop</title><content type='html'>Lately I've been messing with Ubuntu 8.04 on my desktop PC. I have to say I am really impressed by the usability and feature set of this thing. I has nothing to envy to Mac OS X or Windows Vista.&lt;br /&gt;Today I just installed Compiz and Emerald theme manager on my Ubuntu desktop.&lt;br /&gt;For those who may one day fall on my blog, here are the step I followed in order to install, configure and use Compiz+Emerald:&lt;br /&gt;&lt;br /&gt;1) &lt;a href="http://www.howtoforge.com/compiz-fusion-ubuntu-gutsy-gibbon-nvidia-geforce-fx-5200"&gt;step by step guide to installing Compiz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2) &lt;a href="http://johnnyblogger.wordpress.com/how-to-get-compiz-fusion-working-with-ati-graphics-card/"&gt;Installing a nice OS X like theme for Compiz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3) &lt;a href="http://ulyssesonline.com/2007/10/25/compiz-fusion-keyboard-shortcuts/"&gt;Compiz useful shortcuts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally some screenshots of my Ubuntu/Compiz desktop and I strongly advise you to try it for yourself.&lt;br /&gt;Thumbs up of the developers of this great piece of software.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Mac OS X like theme:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_D1lEib3bye4/R8SMAibSeVI/AAAAAAAAACA/XX0ek6X3F-E/s1600-h/Screenshot1.png"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_D1lEib3bye4/R8SMAibSeVI/AAAAAAAAACA/XX0ek6X3F-E/s320/Screenshot1.png" alt="" id="BLOGGER_PHOTO_ID_5171412212997323090" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Example of a special effect:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D1lEib3bye4/R8SMBCbSeWI/AAAAAAAAACI/1ZRsyfQlSXY/s1600-h/Screenshot2.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_D1lEib3bye4/R8SMBCbSeWI/AAAAAAAAACI/1ZRsyfQlSXY/s320/Screenshot2.png" alt="" id="BLOGGER_PHOTO_ID_5171412221587257698" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Compiz Desktop Cube feature:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_D1lEib3bye4/R8SMBybSeXI/AAAAAAAAACQ/d3eh062QhMo/s1600-h/Screenshot3.png"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_D1lEib3bye4/R8SMBybSeXI/AAAAAAAAACQ/d3eh062QhMo/s320/Screenshot3.png" alt="" id="BLOGGER_PHOTO_ID_5171412234472159602" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;Compiz Expo feature:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_D1lEib3bye4/R8SMCCbSeYI/AAAAAAAAACY/xU8mp_67HLw/s1600-h/Screenshot4.png"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_D1lEib3bye4/R8SMCCbSeYI/AAAAAAAAACY/xU8mp_67HLw/s320/Screenshot4.png" alt="" id="BLOGGER_PHOTO_ID_5171412238767126914" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-3027328068160584413?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/3027328068160584413/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=3027328068160584413' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/3027328068160584413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/3027328068160584413'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/02/compiz-brings-dynamic-desktop-effects.html' title='Compiz brings dynamic desktop effects to my Unbuntu desktop'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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/_D1lEib3bye4/R8SMAibSeVI/AAAAAAAAACA/XX0ek6X3F-E/s72-c/Screenshot1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3519207518972324416.post-6629463343488500414</id><published>2008-02-13T15:06:00.000-08:00</published><updated>2008-02-13T15:14:08.532-08:00</updated><title type='text'>Skype call quality better on (K)Ubuntu</title><content type='html'>Recently, I've been using Skype a lot to talk to my parents and friends abroad. I've used Skype on Windows XP for a while and most of the time my phone call quality used to degrade. I thought it was because my laptop was not a bleeding edge model and that it's CPU was not powerful enough. Until I installed Kubuntu on my laptop and started to use the beta version of Skype on it. To my surprise call quality was much better.&lt;br /&gt;It is either because the sound subsystem of Linux is better than Windows' one or Skype  is better compiled and optimized on Linux than on Windows.&lt;br /&gt;Dual booters, if you use Skype and witness poor quality on Windows consider giving Skype on Linux a try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-6629463343488500414?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/6629463343488500414/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=6629463343488500414' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/6629463343488500414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/6629463343488500414'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/02/skype-call-quality-better-on-kubuntu.html' title='Skype call quality better on (K)Ubuntu'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-657093975059467290</id><published>2008-01-30T04:47:00.002-08:00</published><updated>2008-01-30T11:59:05.879-08:00</updated><title type='text'>VIM editor advanced tips n' tricks.</title><content type='html'>&lt;span style="font-style: italic;"&gt;Vi IMproved&lt;/span&gt; is a powerful text based text editor in the UNIX world. Below are some of the most important tips I rely upon when using this text editor in my everyday work.&lt;br /&gt;These tips are completely uncategorized and appear in the order I added them to this post.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Finding opening and closing curly brackets in a code block: &lt;span style="font-weight: bold; color: rgb(0, 0, 153);font-family:courier new;" &gt;[{&lt;/span&gt; and &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;]}&lt;/span&gt; useful if we want to locate the beginning of a long if block.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Converting a pattern to uppercase. Suppose we want to convert the word "pattern" (without the double quotes) to uppercase. Here is how to do it in vim: &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;:%s/\(pattern\)/\U\1/g&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Auto-completion magic: pressing &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;Ctrl+P&lt;/span&gt; after typing the first letter of a word will auto-complete the word in vim.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Basic indentation support for Java.&lt;br /&gt;In &lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;.vimrc&lt;/span&gt; file put the following:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;set autoindent&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;set si&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;set shiftwidth=4&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;set smarttab&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;inoremap { {&amp;lt;cr&amp;gt;}&amp;lt;left&amp;gt;&amp;lt;cr&amp;gt;&amp;lt;up&amp;gt;&amp;lt;tab&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;inoremap ( ()&amp;lt;left&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;inoremap " ""&amp;lt;left&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;useful links:&lt;br /&gt;&lt;a href="http://www.vim.org/tips"&gt;http://www.vim.org/tips&lt;/a&gt;&lt;br /&gt;&lt;a href="http://vim.wikia.com/wiki"&gt;http://vim.wikia.com/wiki&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-657093975059467290?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/657093975059467290/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=657093975059467290' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/657093975059467290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/657093975059467290'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/01/vim-editor-advanced-tips-n-tricks.html' title='VIM editor advanced tips n&apos; tricks.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-4602792944880466200</id><published>2008-01-20T10:06:00.000-08:00</published><updated>2008-01-20T10:29:47.971-08:00</updated><title type='text'>DTrace is cool</title><content type='html'>Recently, I was faced with a peculiar application performance problem on Linux due to memory allocator inefficiencies. Part of the investigation mandated that I had to figure out what was the application's memory allocation pattern.&lt;br /&gt;Using DTrace on Solaris 10 was the quickest and best choice possible. Within a few minutes, I was able to write a simple script that allowed me to monitor calls to memory allocation functions malloc, calloc, realloc and free.&lt;br /&gt;Below is the script. Simple function entry and return probes along with aggregation functions and timer probes assembled in less than 50 lines of code did the trick.&lt;br /&gt;Just imagine having to write this in C ... besides the code is meant to be disposed after the investigation, so it's the kind of situation where DTrace comes to the rescue.&lt;br /&gt;I am impatiently waiting for SystemTAP (DTrace's equivalent on Linux) to support userland probes because it would allow me to do this kind of observations and investigations natively on Linux without having to resort to using Solaris 10/DTrace.&lt;br /&gt;&lt;br /&gt;Till then, I consider DTrace to be the coolest technology Sun has introduced in Solaris 10.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;#!/usr/sbin/dtrace -s&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: courier new;"&gt; &lt;/div&gt; &lt;div style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;BEGIN&lt;br /&gt;{&lt;br /&gt;     malloc  =  0;&lt;br /&gt;     calloc  = 0;&lt;br /&gt;     realloc =  0;&lt;br /&gt;     free    = 0;&lt;br /&gt;     malloctime =  0;&lt;br /&gt;     printf("|             timestamp |       malloc  |       calloc |       realloc |         free |  avg  malloc duration |");&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: courier new;"&gt; &lt;/div&gt; &lt;div style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;pid$target::malloc:entry&lt;br /&gt;{&lt;br /&gt;       @["malloc"] = quantize(arg0);&lt;br /&gt;      malloc += 1;&lt;br /&gt;      last =  timestamp;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: courier new;"&gt; &lt;/div&gt; &lt;div style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;pid$target::malloc:return&lt;br /&gt;{&lt;br /&gt;       malloctime += (timestamp - last);&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: courier new;"&gt; &lt;/div&gt; &lt;div style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;pid$target::calloc:entry&lt;br /&gt;{&lt;br /&gt;       @["calloc"] = quantize(arg0*arg1);&lt;br /&gt;      calloc +=1;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: courier new;"&gt; &lt;/div&gt; &lt;div style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;pid$target::realloc:entry&lt;br /&gt;{&lt;br /&gt;       @["realloc"] = quantize(arg1);&lt;br /&gt;      realloc += 1;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: courier new;"&gt; &lt;/div&gt; &lt;div style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;pid$target::free:entry&lt;br /&gt;{&lt;br /&gt;      free  += 1;&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt; &lt;div style="font-family: courier new;"&gt; &lt;/div&gt; &lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;tick-60sec&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      avgmalloctime =  malloctime/malloc;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      printf("| %Y | %12d | %12d | %12d | %12d  |         %12d |", walltimestamp,  malloc, calloc, realloc, free,             avgmalloctime);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      malloc  =  0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      calloc  = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      realloc = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       free    = 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;      malloctime =  0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-4602792944880466200?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/4602792944880466200/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=4602792944880466200' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4602792944880466200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4602792944880466200'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/01/dtrace-is-cool.html' title='DTrace is cool'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-4245151884477026675</id><published>2008-01-05T12:44:00.001-08:00</published><updated>2008-01-05T12:51:53.148-08:00</updated><title type='text'>Welcome to my eclipse blog.</title><content type='html'>&lt;span style="font-family: georgia;"&gt;Hello and welcome to my eclipse blog.&lt;br /&gt;In this blog, I will try to post quick notes about eclipse as I learn how to code RCP applications in this superb and rich platform.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-4245151884477026675?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/4245151884477026675/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=4245151884477026675' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4245151884477026675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/4245151884477026675'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/01/welcome-to-my-eclipse-blog.html' title='Welcome to my eclipse blog.'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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-3519207518972324416.post-1023525928444530071</id><published>2008-01-05T12:20:00.000-08:00</published><updated>2008-01-05T12:52:22.637-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Adding menus and coolbar actions to your Eclipse RCP application</title><content type='html'>&lt;span style="font-family:verdana;"&gt;&lt;span style="font-family:georgia;"&gt;In this quick note I show you how to add actions to the menu bar and cool bar of your Eclipse RCP application.&lt;br /&gt;&lt;br /&gt;First you need to create your own class that extends class &lt;span style="color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;ActionBarAdvisor&lt;/span&gt; &lt;/span&gt;- for example:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;public class ApplicationActionBarAdvisor extends ActionBarAdvisor {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Second you need to define a &lt;span style="color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;makeActions&lt;/span&gt; &lt;/span&gt;method in which you define your application's actions - for example the below snippet creates an &lt;span style="color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;exitAction&lt;/span&gt; &lt;/span&gt;which is a workbench supplied action that represents the act of closing the application:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 51, 51);font-family:courier new;" &gt;protected void makeActions(IWorkbenchWindow window) {&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(102, 51, 51);font-family:courier new;" &gt;        exitAction = ActionFactory.QUIT.create(window);&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(102, 51, 51);font-family:courier new;" &gt;        register(exitAction);&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(102, 51, 51);font-family:courier new;" &gt;...&lt;/span&gt; &lt;span style="font-weight: bold; color: rgb(102, 51, 51);font-family:courier new;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Third you need to create your menu bar, add menu items to it and add your newly created actions through the &lt;span style="color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;fillMenuBar&lt;/span&gt;&lt;/span&gt; method - for example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;protected void fillMenuBar(IMenuManager menuBar) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        MenuManager fileMenu = new MenuManager("&amp;amp;File", "file");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        fileMenu.add(exitAction);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        menuBar.add(fileMenu);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Lastly to create a cool bar you need to supply a &lt;span style="color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;fillCoolBar&lt;/span&gt;&lt;/span&gt; method - for example:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 51, 51);font-size:85%;" &gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;protected void fillCoolBar(ICoolBarManager coolBar) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;        IToolBarManager toolBar = new ToolBarManager(coolBar.getStyle());&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;        coolBar.add(toolBar);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;        toolBar.add(exitAction);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is a basic skeleton but I hope you have grabed the idea.&lt;br /&gt;&lt;br /&gt;Until next time...&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3519207518972324416-1023525928444530071?l=tsoueid-tech-musings.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://tsoueid-tech-musings.blogspot.com/feeds/1023525928444530071/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3519207518972324416&amp;postID=1023525928444530071' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/1023525928444530071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3519207518972324416/posts/default/1023525928444530071'/><link rel='alternate' type='text/html' href='http://tsoueid-tech-musings.blogspot.com/2008/01/adding-menus-and-coolbar-actions-to.html' title='Adding menus and coolbar actions to your Eclipse RCP application'/><author><name>tsoueid</name><uri>http://www.blogger.com/profile/05108901393049367530</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>
