<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;Ak4GQncyeCp7ImA9WhRVE0g.&quot;"><id>tag:blogger.com,1999:blog-5742695</id><updated>2012-01-12T16:02:03.990+07:00</updated><category term="visual studio" /><category term="meta" /><category term="system" /><category term="miscellaneous" /><category term="agile" /><category term="freeplane for wm" /><category term="effectivity" /><category term="programming" /><category term="coding" /><category term="deployment" /><category term="server" /><category term="application" /><category term="IDE" /><category term="library" /><title>Hafiz [Pariabi]</title><subtitle type="html">Mindful Coding/Living</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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>99</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/Hafizpariabi" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="hafizpariabi" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;DE4MSHsyfyp7ImA9WhdWE0g.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-8094239014048050639</id><published>2011-09-07T07:55:00.001+07:00</published><updated>2011-09-07T07:56:29.597+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-07T07:56:29.597+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="server" /><title>A stuck and hang VM on Xenserver</title><content type="html">Yesterday I found our development server can not be accessed. It's a VM under Xenserver and trying to fix things through XenCenter is quite a deadend. The console can not be accessed from XenCenter, there's only blank whitescreen and when the VM was being forced to shutdown it complained "&lt;i&gt;Another&lt;wbr&gt;&lt;/wbr&gt; operation involving the object is currently in progress &lt;/i&gt;&lt;i&gt;class: VM&lt;/i&gt;".&lt;br /&gt;
&lt;br /&gt;
There's some discussion and proposed solution from &lt;a href="http://forums.citrix.com/thread.jspa?threadID=274697&amp;amp;tstart=0#1499848"&gt;this &lt;/a&gt;and &lt;a href="http://forums.citrix.com/thread.jspa?messageID=1567174&amp;amp;#1567174"&gt;this &lt;/a&gt;thread forum. Here's quote from one of the post that&amp;nbsp; finally fix it for me (you need to login to server's shell to execute the below command) :&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;1 - "xe vm-list" to get the uuid of the VM that is hung&lt;br /&gt;
2 - "list_domains" to list the domain uuid's so you can determine the domain # of the VM above by matching the uuids from this output with the uuid for your VM from the previous command.&lt;br /&gt;
3 - "/opt/xensource/debug/destroy_domain -domid XX" where XX is the domain number from the previous command&lt;br /&gt;
4 - "xe vm-reboot uuid=XXXX --force" where XXXX is the uuid from the first vm-list command for your VM. (name-label may work but didn't work this time for me so I used the uuid)&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-8094239014048050639?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/8094239014048050639/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=8094239014048050639" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/8094239014048050639?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/8094239014048050639?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/09/unable-to-shutdown-hang-vm-on-xenserver.html" title="A stuck and hang VM on Xenserver" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;A0IBQH0-eSp7ImA9WhdQGU0.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-1939487108710382080</id><published>2011-08-21T13:52:00.000+07:00</published><updated>2011-08-21T13:52:31.351+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-21T13:52:31.351+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="system" /><title>Install Kubuntu 11.04 on Samsung N150</title><content type="html">I had a Samsung N150 from the office and installed it with Kubuntu 11.04 not long ago. Below are some notes to get it working acceptably. It's more of a high level notes/todos on setting things up for guides and reminder and not meant for the detailed to-the-letter instructions (read : familiarity with ubuntu/linux is assumed). &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;b&gt;The basic installation&lt;/b&gt;. There is nothing special here as it went quite straightforward.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Changing the network-manager with wicd&lt;/b&gt;. My wifi can not be connected with the defallt-installed network-manager. Removing network-manager and replacing it with wicd (together with it's kde integration) solve the problem.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Add xorg-edgers to apt-source&lt;/b&gt; and do updates to get video driver hardware acceleration (http://ppa.launchpad.net/xorg-edgers/ppa/ubuntu natty main). This way, the 3d efffects on kde will run smoothly.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Fix the brightness setting&lt;/b&gt; : https://bugs.launchpad.net/ubuntu/+source/udev/+bug/574250. Installing &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;samsung-backlight&lt;/span&gt; and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;samsung-tools&lt;/span&gt; mentioned on the article does not help in my case (only working once after install and the brightness setting fail to work again after resboot).&amp;nbsp; The solution I end up settling in is making script to encapsulate the solution using &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;setpci&lt;/span&gt; as referred on the article. It is not user friendly but good enough for me and since I don't change brightness too often it i not really a big deal.&lt;/li&gt;
&lt;/ul&gt;Despite it needs some research and tweak to get it working to a usable state, it is interesting to use when it is finally working. The kubuntu netbook-style desktop need sometime to get used to but after it I can appreciate how it makes the work on the netbook and and it's utilization become more efficient, most notably the screen real estate.&amp;nbsp; It does that without compromising the usability too much. Also, having the application menu integrated to desktop in a popup/vertical way is very cool too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-1939487108710382080?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/1939487108710382080/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=1939487108710382080" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/1939487108710382080?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/1939487108710382080?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/08/install-kubuntu-1104-on-samsung-n150.html" title="Install Kubuntu 11.04 on Samsung N150" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;C04DQ3w8fSp7ImA9WhZaE0w.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-7486352474217203727</id><published>2011-06-29T08:46:00.000+07:00</published><updated>2011-06-29T08:46:12.275+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-29T08:46:12.275+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="IDE" /><title>The Return of Help Viewer, Visual Studio 2010 Service Pack 1</title><content type="html">I recently install Visual Studio 2010 Service Pack 1. It surprised me when opening the Help a familiar-looking Help Viewer popup (although from the looks of it, it seems now rewritten in WPF following the visual studio itself).&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-V_5ph6dazbs/TgqBaaS5DNI/AAAAAAAAAkI/6s9h3QUuCjk/s1600/vs2010_help_viewer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="213" src="http://2.bp.blogspot.com/-V_5ph6dazbs/TgqBaaS5DNI/AAAAAAAAAkI/6s9h3QUuCjk/s320/vs2010_help_viewer.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
I was a bit uncomfortable using the previous browser-based help initially, although overtime I am starting to get used to it and appreciate some of the benefits e.g: easier saving, simpler navigation. However, now that the desktop-based one came back, I am happy again :).&lt;br /&gt;
&lt;br /&gt;
The main problem with me with browser-based one is that it got closed often and getting mixed up with other stuff opened in browser. It makes switching to it slower than desktop one since my mind seems to need additional work to get to it&amp;nbsp; i.e: find the browser and select the one that open the help, compare to just open the application directly. The reason is quite similar to why I still prefer using thunderbird for opening mail no matter how improved gmail web-based email client currently i.e: desktop-based still feels more native and direct.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-7486352474217203727?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/7486352474217203727/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=7486352474217203727" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/7486352474217203727?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/7486352474217203727?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/return-of-help-viewer-visual-studio.html" title="The Return of Help Viewer, Visual Studio 2010 Service Pack 1" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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/-V_5ph6dazbs/TgqBaaS5DNI/AAAAAAAAAkI/6s9h3QUuCjk/s72-c/vs2010_help_viewer.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkQHSXg4eCp7ImA9WhZaEU4.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-5093719873183620643</id><published>2011-06-27T08:32:00.000+07:00</published><updated>2011-06-27T08:32:18.630+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-27T08:32:18.630+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>Trace Registry Activity using Process Monitor</title><content type="html">I have some problem with interoperability with certain executables that seems to behave somewhat randomly. Along the way, I stumble upon &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645"&gt;Process Monitor&lt;/a&gt;. From it's descriptions on the site :&amp;nbsp; &lt;br /&gt;
&lt;blockquote&gt;"&lt;em&gt;Process Monitor&lt;/em&gt; is an advanced monitoring tool for Windows that shows real-time file system, Registry and process/thread activity". &lt;/blockquote&gt;It proves very useful in my case. It shows that somehow there is registry activity that explain the cause of the previously random behavior.&lt;br /&gt;
&lt;br /&gt;
It's another useful addition to the toolbox along with other utilities from &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default"&gt;Sysinternals&lt;/a&gt; that I have been using so far, most notably &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896647"&gt;DebugView &lt;/a&gt;and &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653"&gt;ProcessExplorer&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-5093719873183620643?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/5093719873183620643/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=5093719873183620643" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5093719873183620643?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5093719873183620643?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/trace-registry-activity-using-process.html" title="Trace Registry Activity using Process Monitor" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;C0MGSXs8eyp7ImA9WhZbF0Q.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-61708704814015175</id><published>2011-06-23T08:10:00.000+07:00</published><updated>2011-06-23T08:10:28.573+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T08:10:28.573+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="freeplane for wm" /><title>Adding Note Support, Freeplane for Windows Mobile</title><content type="html">I have added note support to Freeplane for Windows Mobile. I ported the note support form PocketFreemind with some changes mostly in simplifying node edit/save cycle and dialog. It is still on the repository right now and will be on the next release.&lt;br /&gt;
&lt;br /&gt;
Here's some screenshot :&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-yAKKug3ze74/TgKQm1dezQI/AAAAAAAAAkA/UETfuVZXxAo/s1600/freeplanewm_note_panel.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-yAKKug3ze74/TgKQm1dezQI/AAAAAAAAAkA/UETfuVZXxAo/s320/freeplanewm_note_panel.jpg" width="240" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Note view panel&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-ZTW1V9hcsOo/TgKSFpTGPJI/AAAAAAAAAkE/36zI571n7rc/s1600/freeplanewm_note_editing.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-ZTW1V9hcsOo/TgKSFpTGPJI/AAAAAAAAAkE/36zI571n7rc/s320/freeplanewm_note_editing.jpg" width="240" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Note editing with tag helper&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-61708704814015175?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/61708704814015175/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=61708704814015175" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/61708704814015175?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/61708704814015175?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/adding-note-support-freeplane-for.html" title="Adding Note Support, Freeplane for Windows Mobile" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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/-yAKKug3ze74/TgKQm1dezQI/AAAAAAAAAkA/UETfuVZXxAo/s72-c/freeplanewm_note_panel.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkcHR3s8fip7ImA9WhZbFks.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-4210031948468654434</id><published>2011-06-21T20:38:00.001+07:00</published><updated>2011-06-21T20:47:16.576+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-21T20:47:16.576+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="deployment" /><title>Make Single Executable Installer using IExpress</title><content type="html">Visual studio deployment project produce two file when built i.e: setup.exe and the .msi file. I need to make them into single-file executable installer. &lt;a href="http://www.itscodingtime.com/post/Combine-Setup-MSI-and-EXE-into-a-single-package-with-IExpress.aspx"&gt;This reference&lt;/a&gt; is really useful. It turns out there's already a tool that exist in windows itself to combine several file installer into one : It is called IExpress.exe and reside on C:\Windows\System32.&lt;br /&gt;
&lt;br /&gt;
I had some notes in following the above references (and it's various links) :&lt;br /&gt;
&lt;br /&gt;
As the entry said, using setup.exe as an entry point does not work due to the "bug" introduced since visual studio 2008 (it was working in visual studio 2005).&amp;nbsp; I currently use visual studio 2010 and it still not working too. However, the given solution using batch file did not directly working either when I tried. When executed by resulting exe the .bat file seems to have trouble with long file name while it is working when I tested the .bat file directly.&lt;br /&gt;
&lt;br /&gt;
Some trial and error later, it turns out that somehow the resulting .exe executed the .bat file using command.com and causing problems with file path. When I tested directly .bat, and working, it is executed by cmd.exe, that's why it behave differently. So in "Install Program to Launch" dialog, to ensure cmd.exe is used instead of command.com,&amp;nbsp; instead of entering setup.bat, I called the command&amp;nbsp; "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cmd.exe /c setup.bat" &lt;/span&gt;as illustrated on the screenshot below.&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wXzZUy9xTME/TgCa1JL2jeI/AAAAAAAAAj4/rwFrYjrSwSA/s1600/iexpress_program_to_launch.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="246" src="http://4.bp.blogspot.com/-wXzZUy9xTME/TgCa1JL2jeI/AAAAAAAAAj4/rwFrYjrSwSA/s320/iexpress_program_to_launch.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-X4ltcyoabes/TgCajXLVL6I/AAAAAAAAAj0/XHuQfNY3LEc/s1600/iexpress_program_to_launch.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Also, for the cleanups, instead of using the &lt;a href="http://www.codeproject.com/KB/install/Installation.aspx"&gt;refered codeproject reference&lt;/a&gt; that relatively complex,&amp;nbsp; I used script that act as a pair of the setup.bat refered on the post and has content as below&amp;nbsp; :&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RMDIR /S /Q "%Tmp%\[UNIQUE PRODUCT NAME]"&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
and put it in Post Install Command field (using the same "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cmd.exe /c&lt;/span&gt;" call as stated above). It is much simpler that way and utilize what's already provided by IExpress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-4210031948468654434?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/4210031948468654434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=4210031948468654434" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/4210031948468654434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/4210031948468654434?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/make-single-executable-installer-using.html" title="Make Single Executable Installer using IExpress" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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/-wXzZUy9xTME/TgCa1JL2jeI/AAAAAAAAAj4/rwFrYjrSwSA/s72-c/iexpress_program_to_launch.jpg" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C08FRX47eSp7ImA9WhZbE0w.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-4136790708033720119</id><published>2011-06-17T18:39:00.004+07:00</published><updated>2011-06-17T18:56:54.001+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-17T18:56:54.001+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><title>Light Use of XPlanner</title><content type="html">I use &lt;a href="http://hafizpariabi.blogspot.com/2008/02/combining-trac-and-xplanner.html"&gt;XPlanner&lt;/a&gt; to track development process. However, in many cases e.g: very small team, small scale software,  I don't use many of it's feature and use it as a very light project management tools that feels more like an extended todo list (which is good since it is simpler and does not get in the way of the development more).&lt;br /&gt;&lt;br /&gt;Here's how I used XPlanner lightly :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I filled mainly only text and description for stories and tasks, other fields are left in default&lt;/li&gt;&lt;li&gt;No timesheet entry, just click "complete" when task is complete and change the stories to status to "implemented" when all it's task is done&lt;/li&gt;&lt;li&gt;I monitor only what task is done and what stories is implemented&lt;/li&gt;&lt;/ul&gt;So, when it is used like this it's basically just an"over-featured" todo list, but it still has some advantage over generic todo list and that is the built in iteration concept. I can still feel that I am within development iteration. Also, when in other iteration I decided to use more of it e.g: timesheet, it is still there, ready to be used.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-4136790708033720119?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/4136790708033720119/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=4136790708033720119" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/4136790708033720119?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/4136790708033720119?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/light-use-of-xplanner.html" title="Light Use of XPlanner" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;A0cHQn89fip7ImA9WhZbEUU.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-6076380888004925750</id><published>2011-06-16T08:28:00.003+07:00</published><updated>2011-06-16T08:50:33.166+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-16T08:50:33.166+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>UML for Reverse Engineering</title><content type="html">There's an &lt;a href="http://martinfowler.com/bliki/UmlAsNotes.html"&gt;entry on Martin Fowler's blog&lt;/a&gt; that I find interesting. I talks about using UML as a tool to understand the existing code. It resonates with me since that is how I find myself using UML lately i.e: more as a reverse engineering helper than as a top down development design tool.&lt;br /&gt;&lt;br /&gt;I still use UML in a top down fashion sometime, usually when trying to solve certain mechanism directly in the code seems to spawn too much options/thoughts. This is the time that I usually fire up UML tool (I use &lt;a href="http://astah.change-vision.com/en/index.html"&gt;Astah&lt;/a&gt;, BTW) and do some mockup of classes, association and interations until it's clearer what I need to do next in the code. However, this is not frequently happening since many coding tasks have a clear next-actions (to borrow GTD term).&lt;br /&gt;&lt;br /&gt;On the other hand, reading existing code usually require the understanding of the base code structure first before I could do the tracing and debugging. It's like try to get a map first of the are so I know  where the location of certain things and how I can get from there to somewhere. This is where the UML come in, to help get the understanding of the big picture of the code. And like the above article said, I find using our own modelling is much more useful in getting the understanding of the code than using automated reverse-engineering typically exist in CASE Tool.&lt;br /&gt;&lt;br /&gt;I usually keep the file/diagram for future references/re-use but not neccessarily keeping it updated as it's already done it's purpose i.e: helping to drive the development process and keep moving it forward. I could always refresh the model when needed, for example when trying to understand part of the code that I haven't been working on for a long while.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-6076380888004925750?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/6076380888004925750/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=6076380888004925750" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/6076380888004925750?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/6076380888004925750?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/uml-for-reverse-engineering.html" title="UML for Reverse Engineering" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;D0cGQXo8fip7ImA9WhZbEU4.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-5786904401833574331</id><published>2011-06-15T17:28:00.005+07:00</published><updated>2011-06-15T17:50:20.476+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-15T17:50:20.476+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="freeplane for wm" /><title>Freeplane for Windows Mobile</title><content type="html">I am a long time user of &lt;a href="http://eringal.com/pocketfreemind/"&gt;PocketFreemind&lt;/a&gt; on which I am one of the programmer too. It is working fine while I still in qvga device. However, when I switched to wvga device it started to show many issues that I feel the rewrite was needed. So, there comes FreeplaneWM which later become &lt;a href="http://freeplane.sourceforge.net/wiki/index.php/Freeplane_for_Windows_Mobile"&gt;Freeplane for Windows Mobile&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here are some note on the changes/differences of the rewrites from PocketFreemind :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The domain model is now just a thin wrapper over .Net's XML-related classes&lt;/span&gt;. Any changes done directly to those XML classes through the wrapper without additional data structure in the between. This simplify the code and improve performance.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The layers/module are simplified&lt;/span&gt;. There are basically just application layer (gui related matters) and domain model (xml plus wrapper classes)&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;Attention to vga/wvga visual consistency and behavior&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;In a nutshell, the changes is driven by the goal that so it can be used in wvga/vga devices well and keeping the codebase fun to code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-5786904401833574331?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/5786904401833574331/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=5786904401833574331" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5786904401833574331?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5786904401833574331?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/freeplane-for-windows-mobile.html" title="Freeplane for Windows Mobile" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;D0cCSHg_eSp7ImA9WhZbEU4.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-3883693522861963377</id><published>2011-06-14T09:27:00.006+07:00</published><updated>2011-06-15T17:51:09.641+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-15T17:51:09.641+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="system" /><title>Base Setup : HTC Touch Pro 2</title><content type="html">I own HTC Touch Pro 2 for more than half a year now (replacing my previous HP iPaq 912c). It takes some time for the various apps and setting to settle in. For me personally, it's not just about using of the gadget itself but  more about how  it integrates with my personal workflow. That is also why I still stick to Windows Mobile currently as many things that I use still not yet available in other platform.&lt;br /&gt;&lt;br /&gt;Here's a brief overview of the setup of the essentials :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Shell and Core App&lt;/span&gt; : SPB Mobile Shell+PocketBreeze+PocketInformant. These are the basics and I probably won't use a gadget if I can not setup a comparable feature on it&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Desktop Sync&lt;/span&gt; : BirdieSync + Windows Mobile Device Center (WMDC). Having complete and reliable synching to desktop is essential otherwise it will be a pain to have to sync manually or having a gap in data between mobile and desktop. Birdiesync (event, tasks, contacts, etc..) and wmdc (files, notes, etc..) does all that I need&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Outliner&lt;/span&gt; : Freeplane for Windows Mobile. I wrote this app myself (branching from PocketFreemind project on which I am one of the developer too). I used Freeplane a lot, especially for things that can not be captured by the structured information manager. This allow me to have access to it on the go&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Spredsheets&lt;/span&gt; : Excel Mobile. Spreadsheet are great for certain type of data and I have some main personal files on this form that makes the existence of it on the gadget is very important. Windows Mobile comes with it out-of-the-box so it's already well-covered right from the start&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Those are the essentials that makes up the base of my mobile setup. There are other apps that I use frequently but they are functionality specific while the above are has more of a dashboard/control-center/base-system feel to them.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-3883693522861963377?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/3883693522861963377/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=3883693522861963377" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3883693522861963377?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3883693522861963377?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2011/06/setting-up-htc-touch-pro-2.html" title="Base Setup : HTC Touch Pro 2" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;Ck8MQ389fSp7ImA9WxBTEUg.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-2563415175391421914</id><published>2009-12-07T08:19:00.003+07:00</published><updated>2009-12-07T08:54:42.165+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-12-07T08:54:42.165+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="visual studio" /><category scheme="http://www.blogger.com/atom/ns#" term="IDE" /><category scheme="http://www.blogger.com/atom/ns#" term="deployment" /><title>Variable (a.k.a Properties) in Visual Studio's Deployment Project</title><content type="html">I use &lt;a href="http://msdn.microsoft.com/en-us/library/2kt85ked%28VS.80%29.aspx"&gt;Windows Installer Deployment&lt;/a&gt; in Visual Studio. It's simple to use and make quite a decent installer and it's good enough. It is basically wrappers and helper-tools around the native &lt;a href="http://msdn.microsoft.com/en-us/library/cc185688%28VS.85%29.aspx"&gt;Windows Installer&lt;/a&gt; service in Windows. However, having start directly using the helper instead of the native one makes me occasionally wondering how to do certain things in the IDE tools which is quite obvious in the native ones. I guess, it's the usual case of convenience versus completeness of using helpers/wrappers/tools versus the native support.&lt;br /&gt;&lt;br /&gt;One of the important case of this  is when I wanted to write to the registry using some dynamic value (e.g: Destination Path which will be decided by user later) instead of the hardcoded one.  I can't find an info on this on the visual studio help on the IDE part and only after some searching around that I got into reading the native Windows Installer service documentation on the "Wind32 and COM Development" part of MSDN. There's a thing called Properties that I could use for this kind of problem. In this case I would need to use "[TARGETDIR]" which later would be substituted on runtime with the installation path.&lt;br /&gt;&lt;br /&gt;So, I guess the lesson is when something not clear on the tools/wrapper level try looking on the native/lower level.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-2563415175391421914?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/2563415175391421914/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=2563415175391421914" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/2563415175391421914?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/2563415175391421914?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/12/variable-aka-properties-in-visual.html" title="Variable (a.k.a Properties) in Visual Studio's Deployment Project" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;CU4EQn48fCp7ImA9WxNaEk0.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-1727847304215921280</id><published>2009-11-26T07:24:00.005+07:00</published><updated>2009-11-26T09:51:43.074+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-11-26T09:51:43.074+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>Building and Customizing ff-activex-host Browser Plugin</title><content type="html">I need to use &lt;a style="font-family: courier new;" href="http://code.google.com/p/ff-activex-host/"&gt;ff-activex-host&lt;/a&gt;, "&lt;i&gt;&lt;a id="project_summary_link" href="http://code.google.com/p/ff-activex-host/" style="text-decoration: none; color: rgb(0, 0, 0);"&gt;An NPAPI based plugin for Firefox that enables the use of ActiveX controls&lt;/a&gt;&lt;/i&gt;", to enable me to build firefox's browser plugin using activex (for simplicity reason).  It's a very helpful bridge without which we need to write different code for different browser.&lt;br /&gt;&lt;br /&gt;We need to customize and build the plugin ourselves to be able to use it in a secure way i.e: avoiding any arbitrary activex can be run. &lt;a href="http://code.google.com/p/ff-activex-host/wiki/CompilingThePlugin"&gt;Here's&lt;/a&gt; the main documentation on building. I find it still too general and requires us to build firefox source which takes a long time. After collecting some infos on the project site, forums and after some "fun" trial and error (including building the firefox source which is a bit painful and still not work in the end :) ) I finally able to build it in a less painful way. So, here's the summary of the steps that got me to it :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://code.google.com/p/ff-activex-host/source/checkout"&gt;Checkout&lt;/a&gt; &lt;span style="font-family:courier new;"&gt;ff-activex-host&lt;/span&gt; source&lt;/li&gt;&lt;li&gt;Get the latest firefox source from &lt;a href="https://developer.mozilla.org/en/Mozilla_Source_Code_%28HTTP%2f%2fFTP%29"&gt;here&lt;/a&gt;. Follow the instruction there to get the path to the latest source, in my case it's : ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/3.5.5/source/firefox-3.5.5.source.tar.bz2&lt;/li&gt;&lt;li&gt;Get &lt;span style="font-family:courier new;"&gt;xulrunner-sdk&lt;/span&gt; from &lt;a href="https://developer.mozilla.org/En/Gecko_SDK"&gt;here&lt;/a&gt;. I downloaded the one titled "&lt;span style="font-family:courier new;"&gt;Gecko 1.9.1 (Firefox 3.5)&lt;/span&gt;"&lt;/li&gt;&lt;li&gt;I used Visual Studio 2005, so I need to update the &lt;span style="font-family:courier new;"&gt;.sln&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;.vcproj&lt;/span&gt; file of the original source of ff-activex-host which is a Visual Studio 2008 ones. &lt;a href="http://www.west-wind.com/Weblog/posts/122975.aspx"&gt;Here's&lt;/a&gt; the article on how to convert vs2008 solution and projec file to vs2005. In my case, I only changed "&lt;span style="font-family:courier new;"&gt;Version="9,00"&lt;/span&gt;" entry to "&lt;span style="font-family:courier new;"&gt;Version="8,00"&lt;/span&gt;" in the &lt;span style="font-family:courier new;"&gt;.vcproj&lt;/span&gt; file, make a new blank &lt;span style="font-family:courier new;"&gt;.sln&lt;/span&gt; file and mount the updated &lt;span style="font-family:courier new;"&gt;.vcproj&lt;/span&gt; file and it works straight away&lt;/li&gt;&lt;li&gt;Change the additional include directories in &lt;span style="font-family:courier new;"&gt;ffactivex&lt;/span&gt; project as follow : change any "&lt;span style="font-family:courier new;"&gt;c:\src\mozilla\objdir\dist&lt;/span&gt;" to your &lt;span style="font-family:courier new;"&gt;xulrunner-sdk&lt;/span&gt; path, change the rest of "&lt;span style="font-family:courier new;"&gt;c:\src\mozilla&lt;/span&gt;" to firefox's source path. Here's the &lt;a href="http://www.west-wind.com/Weblog/posts/122975.aspx"&gt;discussion&lt;/a&gt; that mention it somewhere in the middle, if you're interested.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Build the solution&lt;/li&gt;&lt;/ul&gt;To make an installer for the plugin, here's the summary :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Install Inno Setup (&lt;span style="font-family:courier new;"&gt;isetup-5.3.6.exe&lt;/span&gt; as of this writing) and it's QuickStart Pack (ispack-5.3.6.exe as of this writing). You can download them &lt;a href="http://www.jrsoftware.org/isdl.php"&gt;here&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Use ISTool to open "install\ffactivex.iss" and update the line&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;#define xbasepath "c:\src\ff-activex-host\ff-activex-host\"&lt;/span&gt;&lt;br /&gt;to the directory where your solution file reside&lt;/li&gt;&lt;li&gt;Compile and run the installer script&lt;/li&gt;&lt;/ul&gt;You should now see the "Activex hosting plugin for Firefox" on your browser's plugin list.&lt;br /&gt;&lt;br /&gt;This path is basically just replace the step of compiling the firefox's source in the formal documentation with using xulrunner-sdk, adding some technical details and stuff specific to my situation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-1727847304215921280?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/1727847304215921280/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=1727847304215921280" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/1727847304215921280?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/1727847304215921280?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/11/building-and-customizing-ff-activex.html" title="Building and Customizing ff-activex-host Browser Plugin" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;CEEBRnYyeSp7ImA9WxVWEEw.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-407567327469359965</id><published>2009-02-19T08:56:00.006+07:00</published><updated>2009-02-19T10:04:17.891+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-19T10:04:17.891+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>To Flip or not to Flip, Image Orientation in Directshow</title><content type="html">Here's &lt;a href="http://www.microsoft.com/whdc/archive/biheight.mspx"&gt;a good insights&lt;/a&gt; regarding the cases where you need image flipping when coding filter in Directshow. There's quite lengthy narration on the history and the details on the article, but here's some important point :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Some Color Format use top-down orientation (the start of the image is on upper-left corner, e.g: RGB) other use bottom-up (start from lower-right corner, e.g: YUV)&lt;/li&gt;&lt;li&gt; The given height value show whether the image follow the orientation. Positive means the data follow the orientation, negative means it is inverted&lt;/li&gt;&lt;/ul&gt;With that two point in mind you could decide when to flip it or not. For example, if you need image with top-down orientation and got RGB with positive height value (means it's bottom-up oriented) you need to do the flipping while if the height value is negative (RGB but with top-down orientation) you don't need to.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-407567327469359965?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/407567327469359965/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=407567327469359965" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/407567327469359965?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/407567327469359965?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/to-flip-or-not-to-flip-image.html" title="To Flip or not to Flip, Image Orientation in Directshow" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;C0AFSXw8cSp7ImA9WxVXFEQ.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-3444598718010644562</id><published>2009-02-12T13:15:00.008+07:00</published><updated>2009-02-13T09:21:58.279+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-13T09:21:58.279+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="application" /><title>Using Workrave</title><content type="html">I am a user of a &lt;a href="http://www.workrave.org/welcome/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;Workrave&lt;/span&gt;&lt;/a&gt; for sometime now. I was once having a quite disturbing eye-strain that made me need to rest from computer activity several days. I decided to avoid to have to gone through it again and it was the time &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;workrave&lt;/span&gt; starting to be on my desktop (with &lt;a href="http://www.rsibreak.org/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;RSIBreak&lt;/span&gt; &lt;/a&gt;as it's &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_3"&gt;counterpart&lt;/span&gt; in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;KDE&lt;/span&gt; one).&lt;br /&gt;&lt;br /&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;Workrave&lt;/span&gt; is the kind of the application that you need to tweak a lot to be really effective. It tends to break my flow in my early use. I am quite used to it now and the break has become more natural and less distracting. Here's the current setup and convention that I use currently (note : I do mainly programming/software/research work) :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;per 15 minutes &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;microbreak&lt;/span&gt;&lt;/span&gt;. This correlate nicely to one simple &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;microtask&lt;/span&gt;, so when it hit it usually near the end of the task or start of the new one. This way,  the break can also be used for retrospecting on what currently being done or the next thing to do. &lt;span style="font-weight: bold;"&gt;The trick with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;microbreak&lt;/span&gt; is not to treat it as a break where you put everything down, but as a short pause&lt;/span&gt; where you still hold your current memory on your mind but let your eyes, breathing, brain and muscle rest and stretch&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;per 1 hour &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;reast&lt;/span&gt; break&lt;/span&gt;. One small task is usually within 1-hour boundary and even for 2 hour or more task, 1 hour break and evaluation is a good way to keep it focused. For this kind of break, I walk around, do some stretching or just get outside&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;no daily limit set&lt;/span&gt; :)&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;skip break button is active but not to be pressed&lt;/span&gt;. I was once doing skipping a lot that it become a &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_10"&gt;habit. This kind of usage&lt;/span&gt; is really missing the point of using it at all, so I deactivated skip button after it. However, after sometime, think it's better to have it available for emergencies. I activated it again but with a stricter use this time&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;postpone button is active, set to three-strike rule&lt;/span&gt;. I don't think postponing break should be disable if you want to have minimum distraction to your working flow. I rarely postpone on &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;microbreak&lt;/span&gt; alarm but quite often on rest-break. The reason is that you need to &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_12"&gt;align&lt;/span&gt; task completion and/or setup &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_13"&gt;necessary&lt;/span&gt; context-switching to be able to have effective long break which is quite useless if your mind is not cleared yet&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;idle-detection is on&lt;/span&gt;. I find that if idle-detection is off the break is really distracting and could hurt productivity and flow. The reminder would popup while I am thinking and doing nothing on screen.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Using break-reminder application is not as simple as I first think but it's quite worth it. The above list has been stable for quite some time now. I find it quite suitable for my work-style and I haven't had eye-strain incidents lately so I guess it's on the right area of balance. You might find it suitable with yours or you might not, but the bottom line is to search the one really suitable for yourself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-3444598718010644562?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/3444598718010644562/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=3444598718010644562" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3444598718010644562?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3444598718010644562?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/using-workrave.html" title="Using Workrave" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;CkUBSHczfSp7ImA9WxVXEks.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-8538418688991477623</id><published>2009-02-10T16:24:00.004+07:00</published><updated>2009-02-10T17:04:19.985+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-10T17:04:19.985+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>Use Personal/Manual Clipboard while Coding</title><content type="html">Coding involve lots of copy/cut and pasting and many of those are hard or confusing to do if you are relying only on unseen standard clipboard buffer. You need more powerful clipboard function that only full text editor can provide.&lt;br /&gt;&lt;br /&gt;I find it helpful to use text editor as "manual" clipboard when coding and only relying on standard clipboard for only the tiniest need. I personally use JEdit for that, as it is also my all-purpose text-editor, but any text-editor will do. I use it liberally to put everything that has transient existence there. Here's some example when it can helo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;changing system's environment variable like PATH&lt;/span&gt;. I copy paste the current one to JEdit twice and edit and paste back the second one (much easier than to have to edit it on the dialog box like on Windows), the first one is for backup when something goes wrong&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;edit critical code&lt;/span&gt;. I copy paste the existing one to JEdit before editing the one on the IDE. I do this for relatively long code piece while for short ones, I do my &lt;a href="http://hafizpariabi.blogspot.com/2007/11/safe-coding-with-coding-marker.html"&gt;safe-coding&lt;/a&gt; on it. &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;store frequently-referenced code&lt;/span&gt;. There are part of code that you frequently need to refer to while you code on several places e.g: important struct that being passed around everywhere. I copy it to JEdit for convinient referring. You will need to have dual-monitor setup to have this felt really useful although switching between JEdit and IDE still a bit faster then switching back and forth within one IDE&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;copying several piece of code on several places and not exactly the same everytime&lt;/span&gt;. I wouldn't want to do it without having text editor to buffer code pieces for this. This kind of coding task is probably the fastest way to confuse your mind and ruin your day :), you need strategy and buffers to do it safely and, hopefully, fun&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;editing build config&lt;/span&gt;. Build config usually needs a lot of copy and paste and although you could do it using system's clipboard you will find that editing and storing related part on the text editor first will ease the task a lot. It will minimize jumping and recopying that will almost certainly happen often&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;cutting code that you are not really sure you want to see that part you cut is gone forever&lt;/span&gt; (beyond the recovery-limit of undo)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;That's just some of what I can think of right now, there will be lots of other cases you will find much easier to do if you remember you can always buffer it to text editor first.&lt;br /&gt;&lt;br /&gt;The more powerful text editor will help you even more relative to less powerful one, you will have all the leverage that the text editor have as the leverage of your "manual" clipboard too like syntax-coloring, structure parsing e.g: SideKick in JEdit, autosave.&lt;br /&gt;&lt;br /&gt;You could think your text editor as a side kick of your IDE, it shares the burden and make coding less burdensome.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-8538418688991477623?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/8538418688991477623/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=8538418688991477623" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/8538418688991477623?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/8538418688991477623?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/use-personalmanual-clipboard-while.html" title="Use Personal/Manual Clipboard while Coding" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;DUcFQH45fip7ImA9WxVQGU0.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-3910273724008897049</id><published>2009-02-06T13:40:00.007+07:00</published><updated>2009-02-06T14:56:51.026+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-06T14:56:51.026+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="library" /><title>Boost's program_options versus TCLAP</title><content type="html">I have upgraded Boost to 1.37 and I feel like trying the &lt;a href="http://www.boost.org/doc/libs/1_37_0/doc/html/program_options.html"&gt;&lt;span style="font-family:courier new;"&gt;program_options&lt;/span&gt; (po)&lt;/a&gt; part. I wrote about &lt;a href="http://hafizpariabi.blogspot.com/2007/12/tclap-for-developing-cli-program-in-c.html"&gt;TCLAP&lt;/a&gt; sometime ago and pretty happy with it so far, so I would like to see how this boost's one compare with it. If it works well, I will consider replacing tclap with it and have less scattered dependencies since it is part of boost.&lt;br /&gt;&lt;br /&gt;However, after the first compile, I don't feel like it's going to replace tclap for me, at least not for simple-to-middle argument parsing needs.  Here's the comparison.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Adding Arguments&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's in boost's :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;po&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;::&lt;/strong&gt;&lt;/span&gt;options_description &lt;span style="color: rgb(153, 102, 255);"&gt;desc&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;Allowed&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;options&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;desc&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 255);"&gt;add_options&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;help&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;produce&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;help&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;message&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;compression&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; po&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;::&lt;/strong&gt;&lt;/span&gt;value&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 255);"&gt;&lt;strong&gt;int&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;compression&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;level&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;and here's adding option in tclap :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;CmdLine &lt;span style="color: rgb(153, 102, 255);"&gt;cmd&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;myProgram&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 204);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; VERSION&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;ValueArg&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 255);"&gt;&lt;strong&gt;int&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&gt;&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(153, 102, 255);"&gt;arg0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;arg0&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;Description&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 0, 204);"&gt;true&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;Type&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt; &lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;Description&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;cmd&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 255);"&gt;add&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt; arg0 &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;which is more comfortable to me. The boost's one look a little counter-intuitive (in standard C++/OOP way). Here's from the documentation  on why it has the form like that :&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;The add_options method of that class returns a special proxy object that defines operator(). Calls to that operator actually declare options.&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;I could live with a little hackery and magically-looking code, in fact sometime I like this kind of thing,  so I could tolerate it a bit, but the next difference put me off.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Parsing and Accessing Arguments&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here's how you parse and use the arguments in boost's :&lt;br /&gt;&lt;pre&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;po&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;::&lt;/strong&gt;&lt;/span&gt;variables_map vm&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;po&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;::&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 255);"&gt;store&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;po&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;::&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 255);"&gt;parse_command_line&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;ac&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; av&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; desc&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; vm&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;po&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;::&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 255);"&gt;notify&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;vm&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;cout &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;&lt;/strong&gt;&lt;/span&gt; vm&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;[&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;compression&lt;/span&gt;&lt;span style="color: rgb(255, 0, 204);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;]&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;as&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&lt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 153, 255);"&gt;&lt;strong&gt;int&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;and in tclap  :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;cmd&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 102, 255);"&gt;parse&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt; argc&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;,&lt;/strong&gt;&lt;/span&gt; argv &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;);&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;cout &lt;&lt; arg.&lt;span style="color: rgb(153, 102, 255);"&gt;getValue&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;(&lt;/strong&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;strong&gt;)&lt;/strong&gt;&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;I doubt that I need to explain why the second one looks better, but here it goes anyway:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the type info is no longer needed to be typed since it is aumatically resolved&lt;/li&gt;&lt;li&gt;I have direct access to the arguments instead of having to access it through argument map data structure&lt;br /&gt;&lt;/li&gt;&lt;li&gt;overall easier syntax&lt;/li&gt;&lt;/ul&gt;Of course, if you look into it more thoroughly, boost's po is a much more robust and powerful argument parser. If you make something like compiler or a program with tons of tweakable configurations, it will be a very handy tool in your hand while tclap might probably push you to make workarounds and compromises.  Still, in general case, I would use tclap by default unless there's a hint that I need to use boost's po instead.&lt;br /&gt;&lt;br /&gt;Some note on code snippet :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I don't use exact one-to-one variable naming,  just conviniently and lazily copy-paste them, but the general idea is more or less the same&lt;/li&gt;&lt;li&gt;no error/exception handling shown, but both use quite similar try-catch scheme &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/5742695-3910273724008897049?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/3910273724008897049/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=3910273724008897049" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3910273724008897049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3910273724008897049?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/boosts-programoptions-versus-tclap.html" title="Boost's program_options versus TCLAP" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;C0ABQnY9cCp7ImA9WxVQGE0.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-5936917884105861352</id><published>2009-02-05T09:26:00.003+07:00</published><updated>2009-02-05T09:42:33.868+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-05T09:42:33.868+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="application" /><title>Multipanel in AllinOne Sidebar Extension in Firefox</title><content type="html">&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_MC1ghX55jCA/SYpRjW7o3wI/AAAAAAAAAYI/WExZxVtuJRA/s1600-h/multipanel2.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 300px; height: 264px;" src="http://2.bp.blogspot.com/_MC1ghX55jCA/SYpRjW7o3wI/AAAAAAAAAYI/WExZxVtuJRA/s400/multipanel2.png" alt="" id="BLOGGER_PHOTO_ID_5299137579447803650" border="0" /&gt;&lt;/a&gt;I find Multipanel when I installed Firefox's&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1027"&gt; All-in-One Sidebar&lt;/a&gt; extension. It opens up the page what you currently viewing right now on the sidebar in single column view by default. It is very useful when you want to have certain page to be sticky like when the page is in a referential nature.&lt;br /&gt;&lt;br /&gt;However, the very good thing about it is that &lt;span style="font-weight: bold;"&gt;it opens up any link that you click on that sidebar on your current main tab instead on itself&lt;/span&gt;. One really major use that I find for it is when opening a page with some kind of table of content on top that has links to anchors within the same page or links to other page. Without it, I have to switch back and forth within the same page or switching between tabs which is distracting and break the focus. With Multipanel, I just load the page on the side and click the links from there, very handy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-5936917884105861352?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/5936917884105861352/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=5936917884105861352" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5936917884105861352?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5936917884105861352?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/multipanel-in-allinone-sidebar.html" title="Multipanel in AllinOne Sidebar Extension in Firefox" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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/_MC1ghX55jCA/SYpRjW7o3wI/AAAAAAAAAYI/WExZxVtuJRA/s72-c/multipanel2.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DEQBQX8-fCp7ImA9WxVQF0w.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-3810699474098897331</id><published>2009-02-04T09:35:00.006+07:00</published><updated>2009-02-04T09:59:10.154+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-04T09:59:10.154+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>What does Visual Means in Visual C++</title><content type="html">Visual in Visual C++ does not neccessarily means because you can do your programming by manipulating graphical symbol ala Model-Driven stuff or design GUI using designer (although now you could much more conviniently than on the age of Visual C++ 6.0).  It seems to me it means more that :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;You can not do development with it (at least not conviniently) without mouse.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;I do my early work  using gcc and vi, console/xterm (it's kterm in KDE). With that as a background I don't question much the "visuality" of Visual C++.  To me, it basically means visual in the way that it is a graphical IDE  as oppose to a console/terminal-based one. I think that will put our expectation in a more apropriate place.&lt;br /&gt;&lt;br /&gt;The confusion probably comes from the fact that it is bundled within Visual Studio where you have Visual Basic/C#/J#  in it that have more "visual" feel to it i.e: start new windows forms project, add buton, double click the button, add code within event handling skeleton, add more widgets, add more event handlings and so on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-3810699474098897331?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/3810699474098897331/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=3810699474098897331" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3810699474098897331?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/3810699474098897331?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/what-does-visual-means-in-visual-c.html" title="What does Visual Means in Visual C++" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;Dk8DRXw9eCp7ImA9WxVQFUU.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-6662448291918886687</id><published>2009-02-02T20:33:00.003+07:00</published><updated>2009-02-02T21:27:54.260+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-02T21:27:54.260+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>To Use or Not to Use Libraries</title><content type="html">My work lately reminds me of a comment on Slashdot long ago about the use of library. I did not keep the link of it but it goes something like this :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;When you make a code that will be (re)used by other developers e.g: libraries, components, avoid using third party library/framework whenever possible&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When you make an application that will be used by the end-user, do use libraries freely as you needed as long as you bundle them in your installer/package&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I think it's a good guideline.&lt;br /&gt;&lt;br /&gt;The first item make the second one possible. If library developers use third party libraries liberally, the application developer would have to bring all those burden along with him including potential conflict  with other included libraries, and it's dependencies, and it's dependencies of dependencies. Well, you get the idea.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-6662448291918886687?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/6662448291918886687/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=6662448291918886687" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/6662448291918886687?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/6662448291918886687?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/to-use-or-not-to-use-libraries.html" title="To Use or Not to Use Libraries" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;C0YHSX86cCp7ImA9WxVQGUU.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-7202217083402308047</id><published>2009-02-01T16:36:00.006+07:00</published><updated>2009-02-07T11:32:18.118+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-07T11:32:18.118+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="library" /><title>Setting up Environment for Directshow Development</title><content type="html">We were upgrading our Directshow SDK since it is felt a little outdated now. We were still using the one from the age where it is still under DirectX SDK. There's currenlty nothing felt wrong or there were errors, we just would like to have it not too far from the latest release available to avoid the code stuck too long in the past.&lt;br /&gt;&lt;br /&gt;The needs :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Multimedia Application Development : need standard Directshow library&lt;/li&gt;&lt;li&gt;Filter Development : Directshow Baseclasses would need to compile&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;To fulfill those, The current state of available SDKs from Microsoft require me to install two separate (and large) package, that is :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Microsoft Windows SDK&lt;/span&gt; : to access what is considered to be standard feature available in Windows. Apparently, now Directshow is considered standard so it is included in this base SDK while it used to be under Directx SDK.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;DirectX SDK&lt;/span&gt; : you could only do straightforward Directshow development like file playing using Windows SDK, you need another package (below) if you want to access the complete API in Directshow since some headers from DirectX is still needed when accessing more complex part of the Directshow API. You'll see why it is needed below.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;My existing setup is Visual Studio (VS) 2005 Professional SP1 on Vista. I have also Visual C++ 2008 Express installed.&lt;br /&gt;&lt;br /&gt;A good page for all things Windows SDK can be seen &lt;a href="http://msdn.microsoft.com/id-id/windowsserver/bb980924%28en-us%29.aspx"&gt;here&lt;/a&gt;. It contains a list of existing downloads, the latest available together with the previous ones, and there's also links to supportive materials i.e: forums, related SDKs and downloads.&lt;br /&gt;&lt;br /&gt;I started with installing &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=a91dc12a-fc94-4027-b67e-46bab7c5226c&amp;amp;DisplayLang=en"&gt;Windows SDK 7&lt;/a&gt; since it's on the top of the download list (It is cutely-named "Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1: BETA"). The download took a while, and you better have something else to do rather than waiting for it. The installation went long also but finish well. I checked the VS and it seems it's not registered yet despite the release notes say that if you install the SDK after you have the VS installed it should register itself. Simple enough, there's Visual Studio registration tool on the Program Menu to do it semi-manually.&lt;br /&gt;&lt;br /&gt;It does not work, however, at least not with VS 2005. When I try to build a simple player, it complained about &lt;span style="font-weight: bold;font-family:courier new;" &gt;Strmiids.lib&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; debugging information corrupt&lt;/span&gt;. Testing with Visual C++ 2008 Express prooved succesful. After googling around, it seems the error usually come when &lt;a href="http://www.eggheadcafe.com/forumarchives/win32programmerdirectxsdk/Feb2006/post26105235.asp"&gt;the SDK no longer support certain compiler&lt;/a&gt;. So, I get the next SDK on the list (&lt;span style="font-weight: bold;"&gt;6.1&lt;/span&gt;, a.k.a "Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5") and do some more waiting...&lt;br /&gt;&lt;br /&gt;Long story short, it fixed the problem, I could build the simple Directshow application with it. But to make something more complex you'll get into trouble with &lt;span style="font-weight: bold;font-family:courier new;" &gt;dxtrans.h&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; not found&lt;/span&gt;. So, according to &lt;a href="http://social.msdn.microsoft.com/forums/en-US/windowssdk/thread/ed097d2c-3d68-4f48-8448-277eaaf68252/"&gt;this&lt;/a&gt;, I need to download and install DirectX-SDK-August-2007. So, time to download and wait some more...&lt;br /&gt;&lt;br /&gt;After the install (it automatically register itself to VS), It directly fixes the problem  and unlike being said on the webpage linked above, no manual copying of files needed.&lt;br /&gt;&lt;br /&gt;Now the development environment ready for some "fun" time with Directshow. Hopefully, no more waiting for SDK downloads needed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-7202217083402308047?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/7202217083402308047/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=7202217083402308047" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/7202217083402308047?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/7202217083402308047?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2009/02/setting-up-environment-for-directshow.html" title="Setting up Environment for Directshow Development" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;C04DSHcyfCp7ImA9WxRUF0g.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-2077678064506217604</id><published>2008-11-26T14:03:00.013+07:00</published><updated>2008-11-27T09:12:59.994+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-11-27T09:12:59.994+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>The Need to "Catch" Emerging Task While Coding</title><content type="html">Coding is a thought-consuming task and that makes the utilization of the brain very high which leaves little space for anything else including other coding task. So, if programmer has another task that come up in the middle of doing a coding task, it is most likely that he will get overwhelmed.&lt;br /&gt;&lt;br /&gt;I think this is where the perception that programming is hard comes from, at least one from many other reason. There are just so many things that should be put in the brain's RAM. There are lots of abstraction and associations to keep in mind at the same time. However, knowing this we could make it less hard by not putting too much of it in our brain.&lt;br /&gt;&lt;br /&gt;Let's illustrate a little. Let's say thought capacity of our brain is a 100. If a thought-consuming task takes 80 then we only have 20 left, so there's no way another 80 point task could fit in there or anything not under 20 for that matter. To make things flowing, just keep the brain from being too occupied. Keep what's in it within manageable (and fun) amount. In short, keep it sustainable.&lt;br /&gt;&lt;br /&gt;We then need to put the surplus aside first and this is why programmer need system and discipline to do this in effective manner. &lt;span style="font-weight: bold;"&gt;I don't think we can do middle to large programming task without some kind of checklist to keep the subtask in order and cath the emerging tasks along the way&lt;/span&gt;. We need to only allow stuff related to current "theme" in our head and push others out of it immediately to other system before our brain start the chain reaction of spawning the emerging thought (or distraction) into someting that disrupt or flow of thinking. We could revisit this buffer afterwards, prioritize and pick the next task.&lt;br /&gt;&lt;br /&gt;The system could be pencil and paper, text editor or, in my case, &lt;a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page"&gt;mind mapping&lt;/a&gt; application. It doesn't matter as long as you can depend on it as thought-catcher i.e: simple, instant entry and keep your mind clear on one single task.&lt;br /&gt;&lt;br /&gt;There's one "sacred" principle here : &lt;span style="font-weight: bold;"&gt;There should always be task. &lt;/span&gt;If the task, when you work on it, proven to be insignificant or false or you find that it should be something else, do something about it first before doing something else. Cross it, rename it, whatever as long as you don't just uncounsciously forget it. One forgetting could lead your mind to wandering state and after some unproductive time you end up with "mmhh, what am I trying to do just now?". Don't let our mind do the thinking just for the fun of it. We are not maintaning our mind, give it good food and rest, just so it can have fun by itself aren't we :).&lt;br /&gt;&lt;br /&gt;I find that being really strict to just doing one, relatively small, very concrete, well-defined thing at one time help in get more programming task done (meaing more feature added, bug fixed, etc... as oppose to more mess :) ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-2077678064506217604?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/2077678064506217604/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=2077678064506217604" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/2077678064506217604?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/2077678064506217604?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2008/11/need-to-catch-emerging-task-while.html" title="The Need to &quot;Catch&quot; Emerging Task While Coding" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;D0EAQHgzcSp7ImA9WxdbGUg.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-971974488656844650</id><published>2008-08-17T12:44:00.007+07:00</published><updated>2008-08-17T13:47:21.689+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-17T13:47:21.689+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>Pocket Freemind, Continuing After 0.5 Release</title><content type="html">Below are my updates on Pocket Freemind project, after the last 0.5 release. I just code away for a while, seeking to see how some ideas will be in concrete form. Now it seems apropriate to take a break and write some notes and update about it.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;The extraction of &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;libPocketFreemind &lt;/span&gt;&lt;span style="font-weight: bold;"&gt;and new-more-modularized GUI&lt;/span&gt;.  I've extraced the object model  and start a new GUI on top of it to allow more flexibility to enhance more the user interface. The original GUI is still intact sharing the same libPocketFreemind (which extracted from it relatively painless) .&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Soft-key menu is back, complemented with custom toolbar&lt;/span&gt;. Standard .NET CF toolbar makes the standard soft-key unusable so I make the custom toolbar that does not interfere with it. I use picture box, panel, imagelist and a little hack. Hopefully user would still feel it as a toolbar :). &lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Individual color picking instead of predefines set of style&lt;/span&gt;. There is now color picker for node's font and background color. Thanks to &lt;a href="http://tamsppc.tamoggemon.com/2007/11/14/a-color-picker-for-net-cf/"&gt;TamPPC&lt;/a&gt; for the code. Node style would be revisit later with editable style list.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Dialogless note window&lt;/span&gt;. It use splitter to share screen with the map's View. It is now looks more like Freemind on the desktop. I think this way the note can be more useful and more comfortbable to enter&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Icon dialog updated&lt;/span&gt;. It now has (emulated) upper right close window button&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;More align with the desktop version&lt;/span&gt;. The menu, term, bahavior use the desktop version for reference as long as it still makes sense. The special case of pocketpc should be considered too of course.&lt;/li&gt;&lt;/ul&gt;I guess that's it for now. Now, to close, it's time for some mandatory screenshot. Here we go :&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MC1ghX55jCA/SKfB7Dal3-I/AAAAAAAAALI/drudMhFLPiw/s1600-h/pocket_freemind_2.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_MC1ghX55jCA/SKfB7Dal3-I/AAAAAAAAALI/drudMhFLPiw/s400/pocket_freemind_2.png" alt="" id="BLOGGER_PHOTO_ID_5235366312114773986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The new note view with resizable splitter. It synched as the node is navigated. There is the node with individual color and background too.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MC1ghX55jCA/SKfB7VfRkmI/AAAAAAAAALQ/7JUTA1hTorA/s1600-h/pocket_freemind_2_icon_dialog.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_MC1ghX55jCA/SKfB7VfRkmI/AAAAAAAAALQ/7JUTA1hTorA/s400/pocket_freemind_2_icon_dialog.png" alt="" id="BLOGGER_PHOTO_ID_5235366316966253154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The above is the new look of icon dialog.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MC1ghX55jCA/SKfB7XO5EbI/AAAAAAAAALY/8o2UIuFS1t4/s1600-h/pocket_freemind_2_colorpicker.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_MC1ghX55jCA/SKfB7XO5EbI/AAAAAAAAALY/8o2UIuFS1t4/s400/pocket_freemind_2_colorpicker.png" alt="" id="BLOGGER_PHOTO_ID_5235366317434409394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;And here is the new color picker. The base code is in vb. I wrapped the code relatively as it is in user control (adding an event handler), put it in a dialog, add a preview, and use it in c# project (the benefit of multilanguageness of .net :) ).&lt;br /&gt;&lt;br /&gt;Thankfully, it came at the right time, there used to be only commercial color picker component around.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-971974488656844650?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/971974488656844650/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=971974488656844650" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/971974488656844650?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/971974488656844650?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2008/08/pocket-freemind-continuing-after-05.html" title="Pocket Freemind, Continuing After 0.5 Release" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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/_MC1ghX55jCA/SKfB7Dal3-I/AAAAAAAAALI/drudMhFLPiw/s72-c/pocket_freemind_2.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DU4NQX4_fCp7ImA9WxdVEUQ.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-258100024259627761</id><published>2008-07-16T15:33:00.004+07:00</published><updated>2008-07-16T15:46:30.044+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-16T15:46:30.044+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="application" /><title>Using JEdit for AutoIt Development</title><content type="html">I work with &lt;a href="http://www.autoitscript.com/autoit3/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;AutoIt&lt;/span&gt; &lt;/a&gt;today and as a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;JEdit&lt;/span&gt; user, I feel reluctant to install another Text Editor just for it. So, I searched around for &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;JEdit&lt;/span&gt;-based solution. Some searching around later, got me this &lt;a href="http://www.thorsten-willert.de/Themen/jEdit/jEdit4AutoIt/index.php"&gt;link&lt;/a&gt;. It is actually a frame from this &lt;a href="http://www.thorsten-willert.de/"&gt;site&lt;/a&gt;, I shortcut it here since it's not that obvious if you go from the main page.&lt;br /&gt;&lt;br /&gt;It took time to follow all the instruction, even to the point I doubt whether this is all worth it :). Hopefully it will be integrated with &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;JEdit's&lt;/span&gt; built-in &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;plugin&lt;/span&gt; manager later for seamless installation. However, it works nicely in the end and my &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;JEdit&lt;/span&gt; setup now very comfortable to work for the task.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-258100024259627761?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/258100024259627761/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=258100024259627761" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/258100024259627761?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/258100024259627761?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2008/07/using-jedit-for-autoit-development.html" title="Using JEdit for AutoIt Development" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;Ck4NQ3o9cSp7ImA9WxdVF04.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-5793701018525999908</id><published>2008-07-16T15:11:00.007+07:00</published><updated>2008-07-22T19:49:52.469+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-22T19:49:52.469+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>Using Custom Action in Visual Studio 2005 Deployment Project (under Vista)</title><content type="html">There are some quirk using Custom Action in Visual Studio 2005 and if your development machine is Vista you have even more trouble to sort. Here are what I faced recently :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Unhelpful error message&lt;/span&gt;.  See : &lt;a href="http://blogs.msdn.com/mshneer/archive/2007/03/02/windows-installer-fails-on-vista-with-2869-error-code.aspx"&gt;"Windows Installer fails on Vista with 2869 error code."&lt;/a&gt;. In my case, I just run the resulting installer in an XP machine to get more informative message.&lt;a href="http://blogs.msdn.com/mshneer/archive/2007/03/02/windows-installer-fails-on-vista-with-2869-error-code.aspx"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;When you add Custom Action for Commit phase &lt;span style="font-weight: bold;"&gt;you need to include your Custom Action Library to Install phase although you don't do anything on&lt;/span&gt; it e.g: override it. If you don't do this it you will have error can not save state or something.  More about it &lt;a href="http://dotnetjunkies.com/WebLog/saarc/comments/23340.aspx"&gt;here&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;Thanks to google, the solutions are only one (or several) search away.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-5793701018525999908?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/5793701018525999908/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=5793701018525999908" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5793701018525999908?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/5793701018525999908?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2008/07/using-custom-action-in-visual-studio.html" title="Using Custom Action in Visual Studio 2005 Deployment Project (under Vista)" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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 gd:etag="W/&quot;CU4BRH49eyp7ImA9WxdWFkU.&quot;"><id>tag:blogger.com,1999:blog-5742695.post-4065465187780046066</id><published>2008-07-10T15:11:00.004+07:00</published><updated>2008-07-10T16:59:15.063+07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-07-10T16:59:15.063+07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="coding" /><title>Using Directshow in .Net : DirectshowNet vs. C++/CLI</title><content type="html">There are two usable option for using Directshow in .Net so far (excluding the abandoned-managed-directshow) :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Purely in .Net using &lt;a href="http://directshownet.sourceforge.net/"&gt;&lt;span style="font-weight: bold;"&gt;DirectshowNet &lt;/span&gt;&lt;/a&gt;: code -&gt; directshownet&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Get a little bit dirty using &lt;span style="font-weight: bold;"&gt;C++/CLI&lt;/span&gt; : code -&gt; c++/cli bridge-&gt; directshow&lt;/li&gt;&lt;/ol&gt;Having tried both, I prefer using the second one for several reason :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;You&lt;span style="font-weight: bold;"&gt; don't need to translate&lt;/span&gt; between what's on the directshow manual with what you need to write. On many cases you could just paste and code many boiler plate code as is and it just run. Using directshownet you have to do some mental gymnastic to do it.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Debugging &lt;/span&gt;would be more comfortable in native language.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;You can&lt;span style="font-weight: bold;"&gt; hide the complexities of Directshow/COM exclusively in native code&lt;/span&gt; and have your managed code stay clean. You'll most likely end up with three layer modularisation : .net code -&gt; c++/cli -&gt; native c++ that access &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;directshow&lt;/span&gt;. In the middle layer (c++/cli) you could provide your managed code with clean interfaces using native .net construct e.g: Properties, Event Handler.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;However, the downside is quite obvious : you need to be comfortable with C++.&lt;br /&gt;&lt;br /&gt;To sum up :  You'll do better using C++/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;CLI&lt;/span&gt; when :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;You already familiar with C++&lt;/li&gt;&lt;li&gt;Want to make application rapidly utilizing .Net&lt;/li&gt;&lt;/ul&gt;Although for those who still does not like to bother with C++/C quirks and overhead/headaches e.g: builds, linking, compilations, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;DirectshowNet&lt;/span&gt; route can provide more &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;convinience&lt;/span&gt; with a "little" cost of translation and more "shady" debugging.&lt;br /&gt;&lt;br /&gt;The better option from all these would be a .Net library that encapsulate &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;Directshow&lt;/span&gt; in a more .Net-friendly way, not just a collection of "&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;typedef&lt;/span&gt;"s. An even better one would be a much friendlier multimedia framework (assuming &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;currently&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;directshow's&lt;/span&gt; existing &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;codecs&lt;/span&gt; and filters ported there too :) ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5742695-4065465187780046066?l=hafizpariabi.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://hafizpariabi.blogspot.com/feeds/4065465187780046066/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=5742695&amp;postID=4065465187780046066" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/4065465187780046066?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5742695/posts/default/4065465187780046066?v=2" /><link rel="alternate" type="text/html" href="http://hafizpariabi.blogspot.com/2008/07/using-directshow-in-net-directshownet.html" title="Using Directshow in .Net : DirectshowNet vs. C++/CLI" /><author><name>Hafiz Pariabi</name><uri>http://www.blogger.com/profile/16477203515374059845</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></feed>

