<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3869039756822350482</id><updated>2011-11-27T16:11:26.439-08:00</updated><category term='My Thoughts'/><category term='My Working Life'/><category term='Vista'/><category term='Sample Codes'/><category term='General'/><category term='Troubleshoot'/><category term='My Books'/><category term='Current Issues'/><category term='AJAX'/><category term='XML'/><category term='VB.Net'/><category term='.NET Framework'/><category term='Crystal Report .NET'/><category term='ASP.NET'/><category term='Web Technology'/><category term='Windows 7'/><title type='text'>Programmer's Diary</title><subtitle type='html'>Learning and sharing</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>42</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-4530247726233314660</id><published>2010-02-02T18:05:00.000-08:00</published><updated>2010-02-02T18:22:15.455-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'>The return of VS.NET 2003 ......</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_4q51fS0rFN8/S2jdQxfka9I/AAAAAAAAAKU/UYIukH8W6Dc/s1600-h/vs2003InXPMode.PNG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 445px; DISPLAY: block; HEIGHT: 315px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5433836230655896530" border="0" alt="" src="http://2.bp.blogspot.com/_4q51fS0rFN8/S2jdQxfka9I/AAAAAAAAAKU/UYIukH8W6Dc/s320/vs2003InXPMode.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Announcing....I finally successfully install VS.NET 2003 Professional edition inside Windows XP Mode of Windows 7.......and it happens after one and the half day of try and errors. Why? cause installing from CD didn't give any good result! &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Therefore, I execute below steps:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;0 - As normal, install Prerequisite (.NET framework 1.1, etc) from the CD&lt;/div&gt;&lt;br /&gt;&lt;div&gt;1 - Copy all the data from each CD (I have 2 cd's) into local machine (while i was at winXP mode)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;2 - Merge the data from 2 CDs into one folder. The path inside the folder must follow the CD definition. If the file A inside CD 1 located at subfolder "Win", and file B inside CD 2 located at sub folder "Win", then copy both file A and file B into one single sub folder "Win" in the new folder in local machine.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;3 - Run the autorun.exe from the new folder (autorun.exe is a file located at CD1)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;4 - Wait until the installation completed.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;InsyaAllah, you'll be there!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-4530247726233314660?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/4530247726233314660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=4530247726233314660' title='40 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/4530247726233314660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/4530247726233314660'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2010/02/return-of-vsnet-2003.html' title='The return of VS.NET 2003 ......'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4q51fS0rFN8/S2jdQxfka9I/AAAAAAAAAKU/UYIukH8W6Dc/s72-c/vs2003InXPMode.PNG' height='72' width='72'/><thr:total>40</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2849206862366022265</id><published>2010-01-28T01:31:00.000-08:00</published><updated>2010-01-28T01:39:03.475-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows 7'/><title type='text'></title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_4q51fS0rFN8/S2FabKT6srI/AAAAAAAAAKM/TcSJ_lumbKc/s1600-h/windows7.PNG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 202px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5431722048256389810" border="0" alt="" src="http://2.bp.blogspot.com/_4q51fS0rFN8/S2FabKT6srI/AAAAAAAAAKM/TcSJ_lumbKc/s320/windows7.PNG" /&gt;&lt;/a&gt; After 5 hours ..................finally vista business was successfully transformed to windows 7 professional....!!&lt;br /&gt;&lt;br /&gt;Next....&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Downloading XP mode ...!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2849206862366022265?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2849206862366022265/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2849206862366022265' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2849206862366022265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2849206862366022265'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2010/01/after-5-hours.html' title=''/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_4q51fS0rFN8/S2FabKT6srI/AAAAAAAAAKM/TcSJ_lumbKc/s72-c/windows7.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-7130376687532144259</id><published>2009-10-18T23:51:00.001-07:00</published><updated>2009-10-19T00:04:33.670-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>TIPS: Fastest way to concatenate multiple strings in VB.NET</title><content type='html'>I wonder why my codes a lot more slower than my collegue's. Finally I detect something. It was the way how I concatenate the multiple strings. I always tend to use "&amp;amp;=" operator to concatenate multiple strings. While this way was a bit more faster than using "+=" operator, It's unfortunately 1000 times slower than using StringBuilder class!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://windevblog.blogspot.com/2008/09/concatenate-strings-in-vbnet.html"&gt;Somebody has done comparison&lt;/a&gt; on this and it's really true!&lt;br /&gt;&lt;br /&gt;Always use the StringBuilder when concatenate multiple strings especially when the text length is not small. Remember this!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-7130376687532144259?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/7130376687532144259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=7130376687532144259' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7130376687532144259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7130376687532144259'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/10/tips-fastest-way-to-concatenate.html' title='TIPS: Fastest way to concatenate multiple strings in VB.NET'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-7257767186750375644</id><published>2009-08-07T00:01:00.000-07:00</published><updated>2009-08-13T20:43:00.845-07:00</updated><title type='text'>MCTS 70-620 Exam</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Alhamdulillah, Just come back from the exam. I pass it with quite a good score...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;One good question, am I really a Microsoft Certified Technology Specialist, specialized in Vista Configuration ....ermmm..&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-7257767186750375644?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/7257767186750375644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=7257767186750375644' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7257767186750375644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7257767186750375644'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/08/mcts-70-620-exam.html' title='MCTS 70-620 Exam'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-1870625103649517790</id><published>2009-08-05T20:07:00.000-07:00</published><updated>2009-08-13T20:40:32.402-07:00</updated><title type='text'>VISTA: Top 10 worst things (in my case)</title><content type='html'>&lt;div align="left"&gt;&lt;a href="http://3.bp.blogspot.com/_4q51fS0rFN8/SoTagwSlQ0I/AAAAAAAAAI4/jR30vEyyqEA/s1600-h/WindowsVistaLogo_10.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 214px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5369656911985984322" border="0" alt="" src="http://3.bp.blogspot.com/_4q51fS0rFN8/SoTagwSlQ0I/AAAAAAAAAI4/jR30vEyyqEA/s320/WindowsVistaLogo_10.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Not all the new technology is better its predecessor. Anybody who ever used XP and then forced or 'volunteerily' move to Vista will absolutely understand this very well. I've read from many sources and heard from many people about the worst things vista has 'offered'. I don't really care until finally I myself use it and now experience it deeper and deeper.&lt;br /&gt;&lt;br /&gt;Not everything bad about Vista. There are some good things. Unfortunately, this good things are really really NOTHING compared to bad things Vista can give you!&lt;br /&gt;&lt;br /&gt;What are those bad things? Just keep reading... I'll start with the one that relate much on my daily work...&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;&lt;strong&gt;&lt;span style="font-size:100%;"&gt;1) Less backward compatibility&lt;/span&gt;&lt;/strong&gt;&lt;/u&gt;&lt;br /&gt;1 - You can't use your Visual Studio 2003 in Vista to build application. Ironically you can use Visual Basic 6...what the heck! &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;2- Visual Studio 2005 is not stable in Vista. The application frequently terminated without any cause (don't know what are the causes) So, always save your every 30 seconds so that you won't lost some of your work. This is NO 1 worst problem I'm facing in Vista.  One example ..&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 462px; DISPLAY: block; HEIGHT: 248px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5368500568920575650" border="0" alt="" src="http://3.bp.blogspot.com/_4q51fS0rFN8/SoC-0ur-TqI/AAAAAAAAAIo/T1LsnKPz6kQ/s320/VS2005_BUGS.jpg" /&gt;&lt;/span&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Visual studio has stopped working, now looking for solution..couldn't find any solution anyway&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;3 - How about compatibility mode? It's good feature. Unfortunately good doesn't mean work. Most of the time, doesn't work at all. I think maybe microsoft just want to introduce this feature. Work or not was not a problem. Most importantly people know. (This might be true since the compatibilty mode in windows 7 working very much better according to some)&lt;/span&gt;&lt;/p&gt;&lt;p align="left"&gt;&lt;u&gt;&lt;strong&gt;2: "Where all my hard disk space gone..??"&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The C drive space is shrinking extremely fast. I don't even know where the culprit is. Worse when the result from "Computer" really look different from ctrl-A right-click all folders in folder C. For example, from Computer, I see 95.8 GB used, BUT if I go inside C drive, ctrl-A right click, I got 44.2 GB, it differs more than double!&lt;/span&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="center"&gt;&lt;br /&gt; &lt;/p&gt;&lt;p align="center"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The list will be updated...believe me, there are lots to be updated ...I just can't think so much bacause I feel of killing the Vista developers right now!!!!&lt;br /&gt;&lt;br /&gt;Harggggghhhhhhhhhhhhhh!!!!! &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-1870625103649517790?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/1870625103649517790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=1870625103649517790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1870625103649517790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1870625103649517790'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/08/vista-personal-story.html' title='VISTA: Top 10 worst things (in my case)'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_4q51fS0rFN8/SoTagwSlQ0I/AAAAAAAAAI4/jR30vEyyqEA/s72-c/WindowsVistaLogo_10.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-8196850390157365464</id><published>2009-07-22T01:08:00.000-07:00</published><updated>2009-07-22T01:18:36.382-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>XP, Vista and Windows 7</title><content type='html'>There are so many interesting things happen these few days. Mostly about the OS.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Vista&lt;/strong&gt;&lt;br /&gt;I've completed my Vista course (installation and configuration Vista client, course no 60-720)&lt;br /&gt;Interestingly, a day after I received a Dell Vostro 1520 laptop with Vista Business loaded inside.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;XP&lt;/strong&gt;&lt;br /&gt;Most people are now very sceptical to Vista. Yes, I know. There are  bad things about it, and also a lot of good things. XP still a confort and 'safest' state for most people (might include me).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Windows 7&lt;/strong&gt;&lt;br /&gt;Counting down ... :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-8196850390157365464?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/8196850390157365464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=8196850390157365464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/8196850390157365464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/8196850390157365464'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/07/xp-vista-and-windows-7.html' title='XP, Vista and Windows 7'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2286435679997099542</id><published>2009-06-19T03:42:00.000-07:00</published><updated>2009-06-19T04:09:50.656-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Entering second half</title><content type='html'>Today is my 7th day outstation in KK. I've been here for almost one week . My job - still lots of things to do at my side. I couldn't help others so much. Others also doesn't expect me to help them. The primary reason might be this - my side is so critical until nobody 'dare' to turn 'away' my focus. I knew my side can be considered very critical. It stays in front. This system will be nothing and nothing if my side doesn't work well. No matter how 'canggih' everthing works at the back. Because the user can only see 'me'.&lt;br /&gt;&lt;br /&gt;Only God knew how release I felt when the client boss saying "This is a working version" just after he finished demonstrating to some of his managers and engineers last tuesday.&lt;br /&gt;&lt;br /&gt;Unfortunately still lots of things I should complete before this tuesday. The day I should make my self at home in the night. Kissing my son and his mum.&lt;br /&gt;&lt;br /&gt;This morning we received an email from our boss. After commenting and giving so many suggestions on the project, finally at the last sentence he wrote:&lt;br /&gt;&lt;br /&gt;"This is a happy problem".&lt;br /&gt;&lt;br /&gt;Really?&lt;br /&gt;&lt;br /&gt;Hope so. ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2286435679997099542?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2286435679997099542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2286435679997099542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2286435679997099542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2286435679997099542'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/06/entering-second-half.html' title='Entering second half'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-5767766541925729022</id><published>2009-06-17T05:36:00.000-07:00</published><updated>2009-06-17T08:07:57.304-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Story of a traveller</title><content type='html'>Job travelling or outstation was one of the thing I like most before I got married and still one of the thing I still like when I just got married. But now, looks like it suddenly fall under "10 things I hope not happen to me' list - after being a papa.&lt;br /&gt;&lt;br /&gt;Today was the fifth-day outstation and the thing didn't differ so much as what I expected on the first day. My mind still thinking of my son. At almost everytime I rest from my work, I'll call my wife asking to hear voice of my son. No matter where my wife was. At home or at work!&lt;br /&gt;&lt;br /&gt;I have pieces of my son's picture with me in my bag, also my wife's which I really afraid to take it out and see them clearly. Afraid it will be further interrupting my focus. Then, nothing I can complete! I should have just left 2 days before flying back if yesterday my boss didn't ask me to postpone until next week and next tuesday should be the last day I could be here. Physically and emotionally. I could no more stay any longer.&lt;br /&gt;&lt;br /&gt;At this moment only 3 things that make me up to continue doing my task and lessen that 'interruption'. They are nice foods, wifi and of course the prayer.&lt;br /&gt;&lt;br /&gt;I like foods. That's why my weight never come down after leaving school :-). 2 consecutive nights I attended sea food dinner which prices almost 200 for 3-4 people. Just before I'm writing this entry, my friend, amri took me to eat sate while not more than 2 hours before, I went to pizza hut with my office mates. Too many nice foods. Surely enough, these give me few additional kgs if not many.&lt;br /&gt;&lt;br /&gt;Another good thing, my wifi supposed to be ended on 14 June 2009 7.26 PM, since I was started using it 24 hours before - according to the terms and conditon coz I just sucbscribe for 24-hours package. 'Unfortunately' this didn't happen. Either the tune hotel (the hotel that I'm in) mistakenly do this or they simply didn't care. As long as you pay the minimal amount, you're welcome to use it any time as long as you don't check out from this hotel. Either is true, I really take this oppoturnity to utilize them. I chat a lot with my friends which very long time never even greet when I was back in KL. We discussed a lot of things until midnight.&lt;br /&gt;&lt;br /&gt;Last thing but most important of all. The prayer or specifically the solat. I could feel how I miss the solat jemaah. 5 days have gone I did prayer alone. Luckily, the power of solat still can be felt very clearly. I could feel extraordinary peace of mind, greatly confidence and the feeling of I'm being observed and He always with me as long as I think of HIM. I admit it was not easy for me to have consistent thinking on Him but worst case, at least no matter where am I, I have to communicate with Him 3 times in a day and night. Why 3 times and not 5 times?&lt;br /&gt;&lt;br /&gt;Because I'm outstation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-5767766541925729022?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/5767766541925729022/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=5767766541925729022' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5767766541925729022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5767766541925729022'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/06/outstaion-story.html' title='Story of a traveller'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2177092063838205903</id><published>2009-04-29T09:07:00.001-07:00</published><updated>2009-04-29T09:07:43.026-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'></title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'times new roman'; "&gt;&lt;p align="CENTER" style="text-indent: 2em; "&gt;&lt;u&gt;The Humble Programmer&lt;/u&gt;&lt;br /&gt;by&lt;br /&gt;Edsger W. Dijkstra&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;As a result of a long sequence of coincidences I entered the programming profession officially on the first spring morning of 1952 and as far as I have been able to trace, I was the first Dutchman to do so in my country. In retrospect the most amazing thing was the slowness with which, at least in my part of the world, the programming profession emerged, a slowness which is now hard to believe. But I am grateful for two vivid recollections from that period that establish that slowness beyond any doubt.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;After having programmed for some three years, I had a discussion with A. van Wijngaarden, who was then my boss at the Mathematical Centre in Amsterdam, a discussion for which I shall remain grateful to him as long as I live. The point was that I was supposed to study theoretical physics at the University of Leiden simultaneously, and as I found the two activities harder and harder to combine, I had to make up my mind, either to stop programming and become a real, respectable theoretical physicist, or to carry my study of physics to a formal completion only, with a minimum of effort, and to become....., yes what? A programmer? But was that a respectable profession? For after all, what was programming? Where was the sound body of knowledge that could support it as an intellectually respectable discipline? I remember quite vividly how I envied my hardware colleagues, who, when asked about their professional competence, could at least point out that they knew everything about vacuum tubes, amplifiers and the rest, whereas I felt that, when faced with that question, I would stand empty-handed. Full of misgivings I knocked on van Wijngaarden's office door, asking him whether I could "speak to him for a moment"; when I left his office a number of hours later, I was another person. For after having listened to my problems patiently, he agreed that up till that moment there was not much of a programming discipline, but then he went on to explain quietly that automatic computers were here to stay, that we were just at the beginning and could not I be one of the persons called to make programming a respectable discipline in the years to come? This was a turning point in my life and I completed my study of physics formally as quickly as I could. One moral of the above story is, of course, that we must be very careful when we give advice to younger people; sometimes they follow it!&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Another two years later, in 1957, I married and Dutch marriage rites require you to state your profession and I stated that I was a programmer. But the municipal authorities of the town of Amsterdam did not accept it on the grounds that there was no such profession. And, believe it or not, but under the heading "profession" my marriage act shows the ridiculous entry "theoretical physicist"!&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;So much for the slowness with which I saw the programming profession emerge in my own country. Since then I have seen more of the world, and it is my general impression that in other countries, apart from a possible shift of dates, the growth pattern has been very much the same.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Let me try to capture the situation in those old days in a little bit more detail, in the hope of getting a better understanding of the situation today. While we pursue our analysis, we shall see how many common misunderstandings about the true nature of the programming task can be traced back to that now distant past.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;The first automatic electronic computers were all unique, single-copy machines and they were all to be found in an environment with the exciting flavour of an experimental laboratory. Once the vision of the automatic computer was there, its realisation was a tremendous challenge to the electronic technology then available, and one thing is certain: we cannot deny the courage of the groups that decided to try and build such a fantastic piece of equipment. For fantastic pieces of equipment they were: in retrospect one can only wonder that those first machines worked at all, at least sometimes. The overwhelming problem was to get and keep the machine in working order. The preoccupation with the physical aspects of automatic computing is still reflected in the names of the older scientific societies in the field, such as the Association for Computing Machinery or the British Computer Society, names in which explicit reference is made to the physical equipment.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;What about the poor programmer? Well, to tell the honest truth: he was hardly noticed. For one thing, the first machines were so bulky that you could hardly move them and besides that, they required such extensive maintenance that it was quite natural that the place where people tried to use the machine was the same laboratory where the machine had been developed. Secondly, his somewhat invisible work was without any glamour: you could show the machine to visitors and that was several orders of magnitude more spectacular than some sheets of coding. But most important of all, the programmer himself had a very modest view of his own work: his work derived all its significance from the existence of that wonderful machine. Because that was a unique machine, he knew only too well that his programs had only local significance and also, because it was patently obvious that this machine would have a limited lifetime, he knew that very little of his work would have a lasting value. Finally, there is yet another circumstance that had a profound influence on the programmer's attitude to his work: on the one hand, besides being unreliable, his machine was usually too slow and its memory was usually too small, i.e. he was faced with a pinching shoe, while on the other hand its usually somewhat queer order code would cater for the most unexpected constructions. And in those days many a clever programmer derived an immense intellectual satisfaction from the cunning tricks by means of which he contrived to squeeze the impossible into the constraints of his equipment.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Two opinions about programming date from those days. I mention them now, I shall return to them later. The one opinion was that a really competent programmer should be puzzle-minded and very fond of clever tricks; the other opinon was that programming was nothing more than optimizing the efficiency of the computational process, in one direction or the other.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;The latter opinion was the result of the frequent circumstance that, indeed, the available equipment was a painfully pinching shoe, and in those days one often encountered the naive expectation that, once more powerful machines were available, programming would no longer be a problem, for then the struggle to push the machine to its limits would no longer be necessary and that was all what programming was about, wasn't it? But in the next decades something completely different happened: more powerful machines became available, not just an order of magnitude more powerful, even several orders of magnitude more powerful. But instead of finding ourselves in the state of eternal bliss of all progamming problems solved, we found ourselves up to our necks in the software crisis! How come?&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;There is a minor cause: in one or two respects modern machinery is basically more difficult to handle than the old machinery. Firstly, we have got the I/O interrupts, occurring at unpredictable and irreproducible moments; compared with the old sequential machine that pretended to be a fully deterministic automaton, this has been a dramatic change and many a systems programmer's grey hair bears witness to the fact that we should not talk lightly about the logical problems created by that feature. Secondly, we have got machines equipped with multi-level stores, presenting us problems of management strategy that, in spite of the extensive literature on the subject, still remain rather elusive. So much for the added complication due to structural changes of the actual machines.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;But I called this a minor cause; the major cause is... that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming had become an equally gigantic problem. In this sense the electronic industry has not solved a single problem, it has only created them, it has created the problem of using its products. To put it in another way: as the power of available machines grew by a factor of more than a thousand, society's ambition to apply these machines grew in proportion, and it was the poor programmer who found his job in this exploded field of tension between ends and means. The increased power of the hardware, together with the perhaps even more dramatic increase in its reliability, made solutions feasible that the programmer had not dared to dream about a few years before. And now, a few years later, he &lt;u&gt;had&lt;/u&gt; to dream about them and, even worse, he had to transform such dreams into reality! Is it a wonder that we found ourselves in a software crisis? No, certainly not, and as you may guess, it was even predicted well in advance; but the trouble with minor prophets, of course, is that it is only five years later that you really know that they had been right.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Then, in the mid-sixties, something terrible happened: the computers of the so-called third generation made their appearance. The official literature tells us that their price/performance ratio has been one of the major design objectives. But if you take as "performance" the duty cycle of the machine's various components, little will prevent you from ending up with a design in which the major part of your performance goal is reached by internal housekeeping activities of doubtful necessity. And if your definition of price is the price to be paid for the hardware, little will prevent you from ending up wth a design that is terribly hard to program for: for instance the order code might be such as to enforce, either upon the progrmmer or upon the system, early binding decisions presenting conflicts that really cannot be resolved. And to a large extent these unpleasant possibilities seem to have become reality.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;When these machines were announced and their functional specifications became known, quite a few among us must have become quite miserable; at least I was. It was only reasonable to expect that such machines would flood the computing community, and it was therefore all the more important that their design should be as sound as possible. But the design embodied such serious flaws that I felt that with a single stroke the progress of computing science had been retarded by at least ten years: it was then that I had the blackest week in the whole of my professional life. Perhaps the most saddening thing now is that, even after all those years of frustrating experience, still so many people honestly believe that some law of nature tells us that machines have to be that way. They silence their doubts by observing how many of these machines have been sold, and derive from that observation the false sense of security that, after all, the design cannot have been that bad. But upon closer inspection, that line of defense has the same convincing strength as the argument that cigarette smoking must be healthy because so many people do it.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;It is in this connection that I regret that it is not customary for scientific journals in the computing area to publish reviews of newly announced computers in much the same way as we review scientific publications: to review machines would be at least as important. And here I have a confession to make: in the early sixties I wrote such a review with the intention of submitting it to the CACM, but in spite of the fact that the few colleagues to whom the text was sent for their advice, urged me all to do so, I did not dare to do it, fearing that the difficulties either for myself or for the editorial board would prove to be too great. This suppression was an act of cowardice on my side for which I blame myself more and more. The difficulties I foresaw were a consequence of the absence of generally accepted criteria, and although I was convinced of the validity of the criteria I had chosen to apply, I feared that my review would be refused or discarded as "a matter of personal taste". I still think that such reviews would be extremely useful and I am longing to see them appear, for their accepted appearance would be a sure sign of maturity of the computing community.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;The reason that I have paid the above attention to the hardware scene is because I have the feeling that one of the most important aspects of any computing tool is its influence on the thinking habits of those that try to use it, and because I have reasons to believe that that influence is many times stronger than is commonly assumed. Let us now switch our attention to the software scene.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Here the diversity has been so large that I must confine myself to a few stepping stones. I am painfully aware of the arbitrariness of my choice and I beg you not to draw any conclusions with regard to my appreciation of the many efforts that will remain unmentioned.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;In the beginning there was the EDSAC in Cambridge, England, and I think it quite impressive that right from the start the notion of a subroutine library played a central role in the design of that machine and of the way in which it should be used. It is now nearly 25 years later and the computing scene has changed dramatically, but the notion of basic software is still with us, and the notion of the closed subroutine is still one of the key concepts in programming. We should recognise the closed subroutines as one of the greatest software inventions; it has survived three generations of computers and it will survive a few more, because it caters for the implementation of one of our basic patterns of abstraction. Regrettably enough, its importance has been underestimated in the design of the third generation computers, in which the great number of explicitly named registers of the arithmetic unit implies a large overhead on the subroutine mechanism. But even that did not kill the concept of the subroutine, and we can only pray that the mutation won't prove to be hereditary.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;The second major development on the software scene that I would like to mention is the birth of FORTRAN. At that time this was a project of great temerity and the people responsible for it deserve our great admiration. It would be absolutely unfair to blame them for shortcomings that only became apparent after a decade or so of extensive usage: groups with a successful look-ahead of ten years are quite rare! In retrospect we must rate FORTRAN as a successful coding technique, but with very few effective aids to conception, aids which are now so urgently needed that time has come to consider it out of date. The sooner we can forget that FORTRAN has ever existed, the better, for as a vehicle of thought it is no longer adequate: it wastes our brainpower, is too risky and therefore too expensive to use. FORTRAN's tragic fate has been its wide acceptance, mentally chaining thousands and thousands of programmers to our past mistakes. I pray daily that more of my fellow-programmers may find the means of freeing themselves from the curse of compatibility.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;The third project I would not like to leave unmentioned is LISP, a fascinating enterprise of a completely different nature. With a few very basic principles at its foundation, it has shown a remarkable stability. Besides that, LISP has been the carrier for a considerable number of in a sense our most sophisticated computer applications. LISP has jokingly been described as "the most intelligent way to misuse a computer". I think that description a great compliment because it transmits the full flavour of liberation: it has assisted a number of our most gifted fellow humans in thinking previously impossible thoughts.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;The fourth project to be mentioned is ALGOL 60. While up to the present day FORTRAN programmers still tend to understand their programming language in terms of the specific implementation they are working with —hence the prevalence of octal and hexadecimal dumps—, while the definition of LISP is still a curious mixture of what the language means and how the mechanism works, the famous Report on the Algorithmic Language ALGOL 60 is the fruit of a genuine effort to carry abstraction a vital step further and to define a programming language in an implementation-independent way. One could argue that in this respect its authors have been so successful that they have created serious doubts as to whether it could be implemented at all! The report gloriously demonstrated the power of the formal method BNF, now fairly known as Backus-Naur-Form, and the power of carefully phrased English, a least when used by someone as brilliant as Peter Naur. I think that it is fair to say that only very few documents as short as this have had an equally profound influence on the computing community. The ease with which in later years the names ALGOL and ALGOL-like have been used, as an unprotected trade mark, to lend some of its glory to a number of sometimes hardly related younger projects, is a somewhat shocking compliment to its standing. The strength of BNF as a defining device is responsible for what I regard as one of the weaknesses of the language: an over-elaborate and not too systematic syntax could now be crammed into the confines of very few pages. With a device as powerful as BNF, the Report on the Algorithmic Language ALGOL 60 should have been much shorter. Besides that I am getting very doubtful about ALGOL 60's parameter mechanism: it allows the programmer so much combinatorial freedom, that its confident use requires a strong discipline from the programmer. Besides expensive to implement it seems dangerous to use.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Finally, although the subject is not a pleasant one, I must mention PL/1, a programming language for which the defining documentation is of a frightening size and complexity. Using PL/1 must be like flying a plane with 7000 buttons, switches and handles to manipulate in the cockpit. I absolutely fail to see how we can keep our growing programs firmly within our intellectual grip when by its sheer baroqueness the programming language —our basic tool, mind you!— already escapes our intellectual control. And if I have to describe the influence PL/1 can have on its users, the closest metaphor that comes to my mind is that of a drug. I remember from a symposium on higher level programming language a lecture given in defense of PL/1 by a man who described himself as one of its devoted users. But within a one-hour lecture in praise of PL/1. he managed to ask for the addition of about fifty new "features", little supposing that the main source of his problems could very well be that it contained already far too many "features". The speaker displayed all the depressing symptoms of addiction, reduced as he was to the state of mental stagnation in which he could only ask for more, more, more... When FORTRAN has been called an infantile disorder, full PL/1, with its growth characteristics of a dangerous tumor, could turn out to be a fatal disease.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;So much for the past. But there is no point in making mistakes unless thereafter we are able to learn from them. As a matter of fact, I think that we have learned so much, that within a few years programming can be an activity vastly different from what it has been up till now, so different that we had better prepare ourselves for the shock. Let me sketch for you one of the posssible futures. At first sight, this vision of programming in perhaps already the near future may strike you as utterly fantastic. Let me therefore also add the considerations that might lead one to the conclusion that this vision could be a very real possibility.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;The vision is that, well before the seventies have run to completion, we shall be able to design and implement the kind of systems that are now straining our programming ability, at the expense of only a few percent in man-years of what they cost us now, and that besides that, these systems will be virtually free of bugs. These two improvements go hand in hand. In the latter respect software seems to be different from many other products, where as a rule a higher quality implies a higher price. Those who want really reliable software will discover that they must find means of avoiding the majority of bugs to start with, and as a result the programming process will become cheaper. If you want more effective programmers, you will discover that they should not waste their time debugging, they should not introduce the bugs to start with. In other words: both goals point to the same change.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Such a drastic change in such a short period of time would be a revolution, and to all persons that base their expectations for the future on smooth extrapolation of the recent past —appealing to some unwritten laws of social and cultural inertia— the chance that this drastic change will take place must seem negligible. But we all know that sometimes revolutions do take place! And what are the chances for this one?&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;There seem to be three major conditions that must be fulfilled. The world at large must recognize the need for the change; secondly the economic need for it must be sufficiently strong; and, thirdly, the change must be technically feasible. Let me discuss these three conditions in the above order.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;With respect to the recognition of the need for greater reliability of software, I expect no disagreement anymore. Only a few years ago this was different: to talk about a software crisis was blasphemy. The turning point was the Conference on Software Engineering in Garmisch, October 1968, a conference that created a sensation as there occured the first open admission of the software crisis. And by now it is generally recognized that the design of any large sophisticated system is going to be a very difficult job, and whenever one meets people responsible for such undertakings, one finds them very much concerned about the reliability issue, and rightly so. In short, our first condition seems to be satisfied.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Now for the economic need. Nowadays one often encounters the opinion that in the sixties programming has been an overpaid profession, and that in the coming years programmer salaries may be expected to go down. Usually this opinion is expressed in connection with the recession, but it could be a symptom of something different and quite healthy, viz. that perhaps the programmers of the past decade have not done so good a job as they should have done. Society is getting dissatisfied with the performance of programmers and of their products. But there is another factor of much greater weight. In the present situation it is quite usual that for a specific system, the price to be paid for the development of the software is of the same order of magnitude as the price of the hardware needed, and society more or less accepts that. But hardware manufacturers tell us that in the next decade hardware prices can be expected to drop with a factor of ten. If software development were to continue to be the same clumsy and expensive process as it is now, things would get completely out of balance. You cannot expect society to accept this, and therefore we &lt;u&gt;must&lt;/u&gt; learn to program an order of magnitude more effectively. To put it in another way: as long as machines were the largest item on the budget, the programming profession could get away with its clumsy techniques, but that umbrella will fold rapidly. In short, also our second condition seems to be satisfied.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;And now the third condition: is it technically feasible? I think it might and I shall give you six arguments in support of that opinion.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;A study of program structure had revealed that programs —even alternative programs for the same task and with the same mathematical content— can differ tremendously in their intellectual manageability. A number of rules have been discovered, violation of which will either seriously impair or totally destroy the intellectual manageability of the program. These rules are of two kinds. Those of the first kind are easily imposed mechanically, viz. by a suitably chosen programming language. Examples are the exclusion of goto-statements and of procedures with more than one output parameter. For those of the second kind I at least —but that may be due to lack of competence on my side— see no way of imposing them mechanically, as it seems to need some sort of automatic theorem prover for which I have no existence proof. Therefore, for the time being and perhaps forever, the rules of the second kind present themselves as elements of discipline required from the programmer. Some of the rules I have in mind are so clear that they can be taught and that there never needs to be an argument as to whether a given program violates them or not. Examples are the requirements that no loop should be written down without providing a proof for termination nor without stating the relation whose invariance will not be destroyed by the execution of the repeatable statement.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;I now suggest that we confine ourselves to the design and implementation of intellectually manageable programs. If someone fears that this restriction is so severe that we cannot live with it, I can reassure him: the class of intellectually manageable programs is still sufficiently rich to contain many very realistic programs for any problem capable of algorithmic solution. We must not forget that it is &lt;u&gt;not&lt;/u&gt; our business to make programs, it is our business to design classes of computations that will display a desired behaviour. The suggestion of confining ourselves to intellectually manageable programs is the basis for the first two of my announced six arguments.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Argument one is that, as the programmer only needs to consider intellectually manageable programs, the alternatives he is choosing between are much, much easier to cope with.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Argument two is that, as soon as we have decided to restrict ourselves to the subset of the intellectually manageable programs, we have achieved, once and for all, a drastic reduction of the solution space to be considered. And this argument is distinct from argument one.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Argument three is based on the constructive approach to the problem of program correctness. Today a usual technique is to make a program and then to test it. But: program testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence. The only effective way to raise the confidence level of a program significantly is to give a convincing proof of its correctness. But one should not first make the program and then prove its correctness, because then the requirement of providing the proof would only increase the poor programmer's burden. On the contrary: the programmer should let correctness proof and program grow hand in hand. Argument three is essentially based on the following observation. If one first asks oneself what the structure of a convincing proof would be and, having found this, then constructs a program satisfying this proof's requirements, then these correctness concerns turn out to be a very effective heuristic guidance. By definition this approach is only applicable when we restrict ourselves to intellectually manageable programs, but it provides us with effective means for finding a satisfactory one among these.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Argument four has to do with the way in which the amount of intellectual effort needed to design a program depends on the program length. It has been suggested that there is some kind of law of nature telling us that the amount of intellectual effort needed grows with the square of program length. But, thank goodness, no one has been able to prove this law. And this is because it need not be true. We all know that the only mental tool by means of which a very finite piece of reasoning can cover a myriad cases is called "abstraction"; as a result the effective exploitation of his powers of abstraction must be regarded as one of the most vital activities of a competent programmer. In this connection it might be worth-while to point out that the purpose of abstracting is &lt;u&gt;not&lt;/u&gt; to be vague, but to create a new semantic level in which one can be absolutely precise. Of course I have tried to find a fundamental cause that would prevent our abstraction mechanisms from being sufficiently effective. But no matter how hard I tried, I did not find such a cause. As a result I tend to the assumption —up till now not disproved by experience— that by suitable application of our powers of abstraction, the intellectual effort needed to conceive or to understand a program need not grow more than proportional to program length. But a by-product of these investigations may be of much greater practical significance, and is, in fact, the basis of my fourth argument. The by-product was the identification of a number of patterns of abstraction that play a vital role in the whole process of composing programs. Enough is now known about these patterns of abstraction that you could devote a lecture to about each of them. What the familiarity and conscious knowledge of these patterns of abstraction imply dawned upon me when I realized that, had they been common knowledge fifteen years ago, the step from BNF to syntax-directed compilers, for instance, could have taken a few minutes instead of a few years. Therefore I present our recent knowledge of vital abstraction patterns as the fourth argument.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Now for the fifth argument. It has to do with the influence of the tool we are trying to use upon our own thinking habits. I observe a cultural tradition, which in all probability has its roots in the Renaissance, to ignore this influence, to regard the human mind as the supreme and autonomous master of its artefacts. But if I start to analyse the thinking habits of myself and of my fellow human beings, I come, whether I like it or not, to a completely different conclusion, viz. that the tools we are trying to use and the language or notation we are using to express or record our thoughts, are the major factors determining what we can think or express at all! The analysis of the influence that programming languages have on the thinking habits of its users, and the recognition that, by now, brainpower is by far our scarcest resource, they together give us a new collection of yardsticks for comparing the relative merits of various programming languages. The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague. In the case of a well-known conversational programming language I have been told from various sides that as soon as a programming community is equipped with a terminal for it, a specific phenomenon occurs that even has a well-established name: it is called "the one-liners". It takes one of two different forms: one programmer places a one-line program on the desk of another and either he proudly tells what it does and adds the question "Can you code this in less symbols?" —as if this were of any conceptual relevance!— or he just asks "Guess what it does!". From this observation we must conclude that this language as a tool is an open invitation for clever tricks; and while exactly this may be the explanation for some of its appeal, viz. to those who like to show how clever they are, I am sorry, but I must regard this as one of the most damning things that can be said about a programming language. Another lesson we should have learned from the recent past is that the development of "richer" or "more powerful" programming languages was a mistake in the sense that these baroque monstrosities, these conglomerations of idiosyncrasies, are really unmanageable, both mechanically and mentally. I see a great future for very systematic and very modest programming languages. When I say "modest", I mean that, for instance, not only ALGOL 60's "for clause", but even FORTRAN's "DO loop" may find themselves thrown out as being too baroque. I have run a a little programming experiment with really experienced volunteers, but something quite unintended and quite unexpected turned up. None of my volunteers found the obvious and most elegant solution. Upon closer analysis this turned out to have a common source: their notion of repetition was so tightly connected to the idea of an associated controlled variable to be stepped up, that they were mentally blocked from seeing the obvious. Their solutions were less efficient, needlessly hard to understand, and it took them a very long time to find them. It was a revealing, but also shocking experience for me. Finally, in one respect one hopes that tomorrow's programming languages will differ greatly from what we are used to now: to a much greater extent than hitherto they should invite us to reflect in the structure of what we write down all abstractions needed to cope conceptually with the complexity of what we are designing. So much for the greater adequacy of our future tools, which was the basis of the fifth argument.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;As an aside I would like to insert a warning to those who identify the difficulty of the programming task with the struggle against the inadequacies of our current tools, because they might conclude that, once our tools will be much more adequate, programming will no longer be a problem. Programming will remain very difficult, because once we have freed ourselves from the circumstantial cumbersomeness, we will find ourselves free to tackle the problems that are now well beyond our programming capacity.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;You can quarrel with my sixth argument, for it is not so easy to collect experimental evidence for its support, a fact that will not prevent me from believing in its validity. Up till now I have not mentioned the word "hierarchy", but I think that it is fair to say that this is a key concept for all systems embodying a nicely factored solution. I could even go one step further and make an article of faith out of it, viz. that the only problems we can really solve in a satisfactory manner are those that finally admit a nicely factored solution. At first sight this view of human limitations may strike you as a rather depressing view of our predicament, but I don't feel it that way, on the contrary! The best way to learn to live with our limitations is to know them. By the time that we are sufficiently modest to try factored solutions only, because the other efforts escape our intellectual grip, we shall do our utmost best to avoid all those interfaces impairing our ability to factor the system in a helpful way. And I cannot but expect that this will repeatedly lead to the discovery that an initially untractable problem can be factored after all. Anyone who has seen how the majority of the troubles of the compiling phase called "code generation" can be tracked down to funny properties of the order code, will know a simple example of the kind of things I have in mind. The wider applicability of nicely factored solutions is my sixth and last argument for the technical feasibiilty of the revolution that might take place in the current decade.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;In principle I leave it to you to decide for yourself how much weight you are going to give to my considerations, knowing only too well that I can force no one else to share my beliefs. As each serious revolution, it will provoke violent opposition and one can ask oneself where to expect the conservative forces trying to counteract such a development. I don't expect them primarily in big business, not even in the computer business; I expect them rather in the educational institutions that provide today's training and in those conservative groups of computer users that think their old programs so important that they don't think it worth-while to rewrite and improve them. In this connection it is sad to observe that on many a university campus the choice of the central computing facility has too often been determined by the demands of a few established but expensive applications with a disregard of the question how many thousands of "small users" that are willing to write their own programs were going to suffer from this choice. Too often, for instance, high-energy physics seems to have blackmailed the scientific community with the price of its remaining experimental equipment. The easiest answer, of course, is a flat denial of the technical feasibility, but I am afraid that you need pretty strong arguments for that. No reassurance, alas, can be obtained from the remark that the intellectual ceiling of today's average programmer will prevent the revolution from taking place: with others programming so much more effectively, he is liable to be edged out of the picture anyway.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;There may also be political impediments. Even if we know how to educate tomorrow's professional programmer, it is not certain that the society we are living in will allow us to do so. The first effect of teaching a methodology —rather than disseminating knowledge— is that of enhancing the capacities of the already capable, thus magnifying the difference in intelligence. In a society in which the educational system is used as an instrument for the establishment of a homogenized culture, in which the cream is prevented from rising to the top, the education of competent programmers could be politically impalatable.&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;Let me conclude. Automatic computers have now been with us for a quarter of a century. They have had a great impact on our society in their capacity of tools, but in that capacity their influence will be but a ripple on the surface of our culture, compared with the much more profound influence they will have in their capacity of intellectual challenge without precedent in the cultural history of mankind. Hierarchical systems seem to have the property that something considered as an undivided entity on one level, is considered as a composite object on the next lower level of greater detail; as a result the natural grain of space or time that is applicable at each level decreases by an order of magnitude when we shift our attention from one level to the next lower one. We understand walls in terms of bricks, bricks in terms of crystals, crystals in terms of molecules etc. As a result the number of levels that can be distinguished meaningfully in a hierarchical system is kind of proportional to the logarithm of the ratio between the largest and the smallest grain, and therefore, unless this ratio is very large, we cannot expect many levels. In computer programming our basic building block has an associated time grain of less than a microsecond, but our program may take hours of computation time. I do not know of any other technology covering a ratio of 10&lt;sup&gt;10&lt;/sup&gt; or more: the computer, by virtue of its fantastic speed, seems to be the first to provide us with an environment where highly hierarchical artefacts are both possible and necessary. This challenge, viz. the confrontation with the programming task, is so unique that this novel experience can teach us a lot about ourselves. It should deepen our understanding of the processes of design and creation, it should give us better control over the task of organizing our thoughts. If it did not do so, to my taste we should not deserve the computer at all!&lt;/p&gt;&lt;p style="text-indent: 2em; "&gt;It has already taught us a few lessons, and the one I have chosen to stress in this talk is the following. We shall do a much better programming job, provided that we approach the task with a full appreciation of its tremendous difficulty, provided that we stick to modest and elegant programming languages, provided that we respect the intrinsic limitations of the human mind and approach the task as Very Humble Programmers.&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2177092063838205903?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2177092063838205903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2177092063838205903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2177092063838205903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2177092063838205903'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/04/humble-programmer-by-edsger-w.html' title=''/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-3447000181491900865</id><published>2009-04-29T08:15:00.000-07:00</published><updated>2009-04-29T08:47:32.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Should I request from God... an exclusive 48-hours a day for tomorrow?</title><content type='html'>I just came back from office. It's 11:16 PM night. My wife's health not so good. Luckily, my kid's health is not so bad at least at this moment. Both are sleeping. Both looks damn tired.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It was BOSS to BOSS deal. We have to deliver the BETA version of the application we're supposed to develop in 3 months on next monday. Good news was that, the Beta version will only cover 2 features. And the bad news, one of that two was put under my responsibilty.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After series of weekly discussion, the BETA version is now going to be released. Whether this version deserved to be called "BETA" or not never be my concern. My concern always "Can I deliver my part?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;All the true efforts (I mean coding) to complete the task just began today even it was actually started a week earlier. 60% of the job has been completed today alone.  Should my focus didn't go for less important matters, I should have completed the 40% before today. Now,  I don't know whether or not I can complete the remaining 40%. tomorrow. Tomorrow gonna be my last day before leaving for holiday. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;First morning after holiday, I will present the result. Success or fail is now depend on the day people call "TOMORROW". &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Will I deliver ...?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I've no answer for myself except this..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;"Don't you trust me?"&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-3447000181491900865?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/3447000181491900865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=3447000181491900865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/3447000181491900865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/3447000181491900865'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/04/should-i-request-from-god-exclusive-48.html' title='Should I request from God... an exclusive 48-hours a day for tomorrow?'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-7679167425151791476</id><published>2009-04-26T18:50:00.000-07:00</published><updated>2009-04-26T18:56:20.559-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>XP in Windows 7</title><content type='html'>You don't need to buy 2 OS licenses to get your precious windows XP to run together with Windows 7. Microsoft now has the solution .... &lt;a href="http://www.computerworld.com/action/article.do?command=viewArticleBasic&amp;amp;articleId=9132119"&gt;XP in Windows 7&lt;/a&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-7679167425151791476?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/7679167425151791476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=7679167425151791476' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7679167425151791476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7679167425151791476'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/04/xp-in-windows-7.html' title='XP in Windows 7'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-821595878047535852</id><published>2009-04-26T18:47:00.000-07:00</published><updated>2009-04-26T18:49:09.216-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><title type='text'>Conficker News Update - PLEASE READ!!</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Verdana; font-size: 12px; line-height: 15px; "&gt;&lt;h1 class="articleTitle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 8px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Helvetica, sans-serif; font-weight: bold; color: rgb(51, 51, 51); text-transform: none; font-size: 18px; "&gt;Conficker Virus Starts to Attack PCs, Experts Say&lt;/h1&gt;&lt;div id="summaryData" class="pgArticle" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;p class="articleDate" style="margin-top: 8px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 10px; font-weight: normal; color: rgb(102, 102, 102); font-family: Verdana, Helvetica, sans-serif; "&gt;04.24.09&lt;/p&gt;&lt;p class="articleDeck" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 8px; padding-right: 0px; padding-bottom: 10px; padding-left: 0px; font-weight: bold; "&gt;A malicious software program known as Conficker that many feared would wreak havoc on April 1 is slowly being activated, weeks after being dismissed as a false alarm, security experts said.&lt;/p&gt;&lt;/div&gt;&lt;div id="discussItReview" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; float: none; "&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 59, 176); font-size: 10px; "&gt;&lt;span class="bylineBy" style="font-size: 10px; color: rgb(102, 102, 102); text-transform: capitalize; display: inline; "&gt;By &lt;/span&gt;&lt;a href="http://www.pcmag.com/article2/0,2817,2345917,00.asp#" style="display: inline; text-decoration: none; color: rgb(0, 59, 176); "&gt;&lt;span class="authorsource"&gt;Reuters  &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="articleCopy" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; font-weight: normal; "&gt;&lt;span id="intellitxt" name="intellitxt"&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;BOSTON - A malicious software program known as Conficker that many feared would wreak havoc on April 1 is slowly being activated, weeks after being dismissed as a false alarm, security experts said.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;Conficker, also known as Downadup or Kido, is quietly turning an unknown number of personal computers into servers of e-mail spam, they added.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;The worm started spreading late last year, infecting millions of computers and turning them into "slaves" that respond to commands sent from a remote server that effectively controls an army of computers known as a botnet.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;Its unidentified creators started using those machines for criminal purposes in recent weeks by loading more malicious software onto a small percentage of computers under their control, said Vincent Weafer, a vice president with &lt;a title="Symantec Corporation" href="http://www.pcmag.com/topic/0,2944,t=Symantec%20Corporation&amp;amp;s=1489,00.asp" style="text-decoration: underline; color: rgb(0, 59, 176); "&gt;Symantec&lt;/a&gt; Security Response, the research arm of the world's largest security software maker, Symantec Corp.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;Conficker installs a second virus, known as Waledac, that sends out e-mail spam without knowledge of the PC's owner, along with a fake anti-spyware program, Weafer said.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;The Waledac virus recruits the PCs into a second botnet that has existed for several years and specializes in distributing e-mail spam.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;Conficker also carries a third virus that warns users their PCs are infected and offers them a fake anti-virus program, Spyware Protect 2009 for $49.95, according to Russian-based security researcher Kaspersky Lab. If they buy it, their credit card information is stolen and the virus downloads even more malicious software.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;Weafer said that while he believes the number of infected machines that have become active is relatively small, he expects a consistent stream of attacks to follow, with other types of malware distributed by Conficker's authors.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;"Expect this to be long-term, slowly changing," he said of the worm. "It's not going to be fast, aggressive."&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;Researchers feared the network controlled by the Conficker worm might be deployed on April 1 for the first time since the worm surfaced last year because it was programed to increase communication attempts from that date.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;The security industry formed a task force to fight the worm, bringing widespread attention that experts said probably scared off the criminals who command the slave computers.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;That task force thwarted the worm partially by using the Internet's traffic control system to block access to servers that control the slave computers.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;Viruses that turn PCs into slaves exploit weaknesses in Microsoft's Windows operating system. The Conficker worm is especially tricky because it can evade corporate firewalls by passing from an infected machine onto a USB memory stick, then onto another PC.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;The Conficker botnet is one of many such networks controlled by syndicates that authorities believe are based in eastern Europe, southeast Asia, China and Latin America.&lt;/p&gt;&lt;p style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;&lt;/p&gt;&lt;p class="bodycopysmall" style="margin-top: 0px; margin-right: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 10px; "&gt;©&lt;i&gt; Thomson Reuters 2008. All rights reserved. Users may download and print extracts of content from this website for their own personal and non-commercial use only. Republication or redistribution of Reuters content, including by framing or similar means, is expressly prohibited without the prior written consent of Reuters. Reuters and the Reuters sphere logo are registered trademarks or trademarks of the Reuters group of companies around the world.&lt;/i&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-821595878047535852?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/821595878047535852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=821595878047535852' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/821595878047535852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/821595878047535852'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/04/conficker-news-update-please-read.html' title='Conficker News Update - PLEASE READ!!'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-123748507516920867</id><published>2009-04-14T00:27:00.000-07:00</published><updated>2009-04-14T18:38:31.830-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>XP: Mainstream Support Ends Today, Entended Support till 8 April 2014</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4q51fS0rFN8/SeU4jJNNDOI/AAAAAAAAAGY/HAOGYWq19fI/s1600-h/images.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 127px; height: 89px;" src="http://1.bp.blogspot.com/_4q51fS0rFN8/SeU4jJNNDOI/AAAAAAAAAGY/HAOGYWq19fI/s320/images.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5324724310853356770" /&gt;&lt;/a&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="text-decoration: none;"&gt;Microsoft has ended the mainstream support for XP&lt;/span&gt; and now started the extended support for the OS until 8 April 2014, about 5 years from now.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mainstream support which was normally ended 5 years everytime any of its product been released seems not really work for XP. MS finally took 8 years to end the support.  Besides the lag of Vista release, too relying on the XP by corporate and personal users was 2 main factors contributing to this longer support. The 'too relying on XP' factor doesn't seem to stop even until windows 7 being released.  MS will enable users who buy the PC with preinstalled windows 7 to downgrade to XP.&lt;/div&gt;&lt;div&gt;See how big the XP influence!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For those buying new PC and still wondering to go for Vista and XP. Again, it's up to you to choose. If you still  don't trust Vista, it's okay to go for XP. Remember, the extended support is still there. Once your install genuine XP, you still can get any security updates from MS (until April 2014 - quite long enough for a PC) . However, while giving free security updates, you now need to pay certain amount to get non-security hotfix ... it's just fine for me.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span"   style="  ;font-family:'trebuchet ms';font-size:13px;"&gt;&lt;table width="90%" cellspacing="2" cellpadding="2" align="center"  style="text-align: center; color: rgb(255, 255, 255);  font-size:9pt;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bg=""  style="color:#616b94;"&gt;&lt;span style=" ;font-size:1em;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;Support provided&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td bg="" align="center"  style="color:#616b94;"&gt;&lt;span style=" ;font-size:1em;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;Mainstream support&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;td bg=""  style="color:#616b94;"&gt;&lt;span style=" ;font-size:1em;color:#f8f8b1;"&gt;&lt;strong&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;Extended support&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;Paid support (per-incident, per hour, and others)&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt;x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;Security update support&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt;x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;Non-security hotfix support&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt;Requires extended hotfix agreement, purchased within 90 days of mainstream support ending.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;No-charge incident support&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;Warranty claims&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;Design changes and feature requests&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt; &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;Product-specific information that is available by using the online Microsoft Knowledge Base&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt;x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="#515c8c"&gt;Product-specific information that is available by using the Support site at Microsoft Help and Support to find answers to technical questions&lt;/td&gt;&lt;td bgcolor="#515c8c" align="center"&gt;x&lt;/td&gt;&lt;td bgcolor="#515c8c"&gt;x&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;P/S - Whether or not MS extended the support, I now enjoy working with Vista despite of all bad perceptions I received earlier. :-)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-123748507516920867?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/123748507516920867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=123748507516920867' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/123748507516920867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/123748507516920867'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/04/xp-mainstream-support-ends-today.html' title='XP: Mainstream Support Ends Today, Entended Support till 8 April 2014'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4q51fS0rFN8/SeU4jJNNDOI/AAAAAAAAAGY/HAOGYWq19fI/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2696187632709629745</id><published>2009-04-09T07:35:00.000-07:00</published><updated>2009-04-09T07:49:49.201-07:00</updated><title type='text'>Politics Everywhere ...</title><content type='html'>I like to read political issues. BUT I really don't like 'politicking' issues. Unfortunately, you sometime have to know how to play some politics. Else, forever and ever you'll be the one be victimised by 'politicians'. The politicians don't have to come from national politician such as from PAS,UMNO, PKR, DAP (as what we're aware of in Malaysia), they can be also around you most of the time ...&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lower class people always ask "What we are going to eat today?"&lt;/div&gt;&lt;div&gt;Middle class people always ask "Where we are going to eat today?"&lt;/div&gt;&lt;div&gt;Politician always ask "Who we are going to eat today?"&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It's really true!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2696187632709629745?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2696187632709629745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2696187632709629745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2696187632709629745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2696187632709629745'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/04/politics-everywhere.html' title='Politics Everywhere ...'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-5457832504213549292</id><published>2009-03-26T02:25:00.000-07:00</published><updated>2009-03-26T03:08:23.680-07:00</updated><title type='text'>Hello....is there anybody?? hello....</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Yesterday one of our server was so slow. Initially I thought the hard disk was fully loaded and jammed the system. I couldn't even open the My Computer and see my C drive space - anyway this server's running on windows server 2003 with only one partition. Once the OS corrupt, finish! who's finishied? Back to the story, after clean up everything and restart the server (using restart button). Once the windows was finally loading, I quickly open up the task manager to see if any abnormal process exist...and yes!! looks like some unidentified process are using the processing time and unfortunately I can't end the process. After trying and trying...nothing works..&lt;/span&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Today ...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;I was strongly thinking there must be some trojans or viruses running inside the server. This morning I prepared one CD fully loaded with few anti virus programs..AVG, Avast..among others.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;To cut short the story, after scanning the server for at least 3 times (diff methods used) - and I was sure the Anti Virus was the latest, finally I got the number of threats are simply zero. No threats, no tojans, no viruses, no malware were detected. The server was clean and running very very well! &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Now ..&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Until I came across one story that give a little bit concern of what was hapenning yesterday. The story of "univited guess" called "Conficker C".&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Just to quote few lines &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);  font-style: italic; "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Much has been written about the Conficker worm's next big day. On April 1, the worm is expected to evolve yet again, when it blasts out requests to 500 of the 50,000 domains it generates daily in search of an update.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 51);  "&gt;&lt;p style=""&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Just what that update will do isn't known;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a rel="nofollow" href="http://www.eweek.com/c/a/c/a/Security/Cleaning-Conficker-Keeping-Your-Network-Safe-From-Windows-Worm/" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;what is known is that Conficker &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;—aka Downadup—has proven to be an impressive piece of malware as such things go. Version C, the &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a rel="nofollow" href="http://www.microsoft.com/protect/computer/viruses/worms/conficker.mspx#ELD" target="_blank" title="" style="text-decoration: none; "&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;latest iteration of the Conficker worm,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt; added peer-to-peer communication between infected systems and a new domain-generation algorithm.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=" ;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Was it caused by this worm? What happen if the worm was already there and the anti virus was not able to detect it's presence?Are they waiting for April 1st to boom?..and thats why the server's still running well since the date has not arrived...&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style=""&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);  "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;Wait and see ....&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=" ;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);   font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=" ;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);  "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=" ;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0); "&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=" ;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=" ;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p size="12px" style=" ;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p  style=" ;font-size:12px;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 0);"&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: medium;"&gt;&lt;span class="Apple-style-span" style="font-family: 'times new roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-5457832504213549292?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/5457832504213549292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=5457832504213549292' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5457832504213549292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5457832504213549292'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/03/hellois-there-anybody-hello.html' title='Hello....is there anybody?? hello....'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-5059645505721513222</id><published>2009-03-22T23:31:00.000-07:00</published><updated>2009-03-23T00:52:41.371-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>What's hot this month</title><content type='html'>iPhone 3.0, Internet Explorer 8 Beta release, Windows 7, IBM deals with Sun and recession related topic are among the hot news that most IT and Computer-related magazines are covered.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;1 - iPhone 3.0&lt;/span&gt;&lt;/div&gt;&lt;div&gt;I don't like to comment anything on the stuff I can only dream for at this moment..&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;2- Internet Explorer 8&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Is spite of popular claim by Microsoft that the browser is one of the best version ever release. Outsiders are still at doubt whether this browser able to place itself on top, pushing out Mozilla Firefox version 3.5 which will be released sooner.  Being hacked at the first day of &lt;a href="http://dvlabs.tippingpoint.com/blog/2009/02/25/pwn2own-2009"&gt;Pwn20wn&lt;/a&gt; has nothing but to show how vulnerable IE8 is as their previous version was. Luckily, the counterpart mozilla firefox faced same fate. On the other hand, it was surprised to know 'l&lt;a href="http://blogs.zdnet.com/hardware/?p=4003"&gt;ight-weight contender' Google Chrome was the only browser remains unhacked until the end of the first day&lt;/a&gt;. As a result, now I'm writing this blog under Chrome. Back to IE8, this version will be made available inside windows 7 and those who hate IE now have chance to remove it from add/remove program list unlike before.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;3- Windows 7&lt;/span&gt;&lt;/div&gt;&lt;div&gt;This is the first ever operating system which was fully developed  without Bill Gates's final say.  This is also the first OS to be launched after Gates totally off from Microsoft July last year. According to CEO Steve Ballmer, this is really Microsoft team's product compared to the previous product where most of them was the result of Gates's thinking. Initial plan, windows 7 will be shipped 3 years after release of Vista (Vista was released on 2006). However, with the current economic situation, I doubt it will be postponed to the  next year mid.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;4- IBM's 7billion deal with Sun&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Whatever it is, there must be some advantages and disadvantages if the IBM deal of bought over Sun is closed. Generally, both will gain benefits. Sun will have enough money to run the business without changing any of it's traditional culture on R&amp;amp;D where has helped the technology industry evolved a lot. IBM on the other hand will now have more to be proud off by having more market share and owns quite a number of technology  they need years to develope if not decades.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;5 - Recession related topics.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;There are a lot of &lt;a href="http://www.cioinsight.com/"&gt;articles, tips and advice&lt;/a&gt; of how to survive recession subject to those who has already been laid off from the job to the action CIO should take during the recession time. I would advise everybody regardless of  his/her confortable level with the current job to read some of these stuffs. Who knows, one day your day will come, if not as someone to be laid off, may be as someone to decide who's going to be laid off. Anyway, It works for both.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-5059645505721513222?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/5059645505721513222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=5059645505721513222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5059645505721513222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5059645505721513222'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/03/whats-hot-this-month.html' title='What&apos;s hot this month'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-1615071560401530173</id><published>2009-03-18T20:05:00.000-07:00</published><updated>2009-03-18T20:34:42.063-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><title type='text'>Bypassing Vista for Windows 7</title><content type='html'>Windows 7 is now released for it's Beta version. I don't know quite well how good it is compared to Vista. Never have time to dirt my hand into it except some information telling by others who've tried it. Many of them admit that the coming version is far better than current Vista especially on handling network and hardware stuff which were according to some was the worst part in Vista.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4q51fS0rFN8/ScG6TQq79hI/AAAAAAAAAF8/_W88sRdVhuM/s1600-h/images.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 275px; height: 209px;" src="http://4.bp.blogspot.com/_4q51fS0rFN8/ScG6TQq79hI/AAAAAAAAAF8/_W88sRdVhuM/s320/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5314733875329234450" border="0" /&gt;&lt;/a&gt;Some people who's trying windows 7 considered it as best windows&lt;br /&gt;OS since Windows 3.1&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Again, I'm not sure how true it is. Wait and see. Some people might ask whether buying the PC with Vista is a right decision right now or wait after Windows 7 being released. Some might suggest to wait. But some said, it's okay to buy now, since Microsoft will provide the upgrade, you'll only have to pay for the upgrade fees and some even hope that Microsoft will give free upgrade to those who do buying since 12 months before the release.(Risky dream?). But for me, if you are not depressed enough and can wait for &lt;span name="intellitxt" id="intellitxt"&gt;at least two more quarters of economic pain before shipping, why not?&lt;br /&gt;&lt;br /&gt;It is good to always have some&lt;a href="http://www.pcmag.com/category2/0,2806,2314431,00.asp"&gt; good info&lt;/a&gt; so that you won't make any costly decision.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-1615071560401530173?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/1615071560401530173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=1615071560401530173' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1615071560401530173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1615071560401530173'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/03/bypassing-vista-for-windows-7.html' title='Bypassing Vista for Windows 7'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_4q51fS0rFN8/ScG6TQq79hI/AAAAAAAAAF8/_W88sRdVhuM/s72-c/images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-6024284073980112301</id><published>2009-03-15T20:10:00.000-07:00</published><updated>2009-03-16T21:19:26.956-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Backup Your Data: Looking for the best solution</title><content type='html'>&lt;span style="font-style: italic;"&gt;Some information written here was based on my working experience and some are the information given by many others on the net. Since servers and networking was not my expertise (at least at the time this article was written), I always welcome any comments and feedbacks from readers.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;*******************************************************************&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Data is important. Private data is even more. Either personal or commercial. No disputes on this.&lt;br /&gt;When talking about data backup, THREE things are always highly focused on which are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1- Cost&lt;/span&gt;&lt;br /&gt;How expensive is the solution to be implemented.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2 - Reliability and Security&lt;/span&gt;&lt;br /&gt;How reliable and secure the data once backup. Any security loop holes which can expose to any malicious attacks? virus? natural disaster? etc&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3- Speed&lt;/span&gt;&lt;br /&gt;How fast can we backup and restore the data.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Scenario to consider&lt;/span&gt;&lt;br /&gt;------------------------&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Now, consider we've large amount of sensitive data (200 - 300 Gb) to be periodically backup in a monthly basis. Restore will be done any time, depend on the request. Meaning that, the media must be large enough, the speed must be fast enough for restore process, and should not compromise in security factor. Let we consider solutions below.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;1) CD &lt;/span&gt;is out of the consideration! Next please ..&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;2) DVD&lt;/span&gt;&lt;br /&gt;Still limited in storage. While the dual layer DVD normally below 10 GB and single layer  below 5GB, You still need a lot of pieces to complete your monthly backup.&lt;br /&gt;Result: Reject!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3) Tape Drive&lt;/span&gt;&lt;br /&gt;Good storage size. We need 1 to 2 tapes to backup 300Gb. Have to wait at least half to almost whole day to restore 1 tape data. In term of cost, we need USD1000 0r (MYR3000 -  MYR4000) to buy the tape drive and 40USD (MYR 200 - RM300) for individual tapes.  Not so good at speed and expensive at cost.&lt;br /&gt;Result: Reject&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;4) External Hard Disk&lt;/span&gt;&lt;br /&gt;The speed is much better than tape. A bit slower than internal. Not so costly compared to it ability. Not much security holes since you won't expose it to the network. However, it doesn't allow multiple accesses.  One single client or server can access it in a time. Therefore not suit for server backup where the data is normaly shared by multiple users. Fortunately, this already satisfed above requirements.&lt;br /&gt;Result: Just nice.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;5) Storage Area Network (SAN)&lt;/span&gt;&lt;br /&gt;Unlike the previous. This is more as architecture technology then a media technology. A single dedicated server is required plus few storage nodes will be connected to the network in order to implement the technology. Due to it highly advance technology, it is seldom used by personal and small company. The main benefit that a SAN network brings a company is speed with data transfer plus the ability to connect large data networks that span thousands of miles- and the devices on that network can still communicate effectively. By organizing these devices on a data device-only network, faster data transfers can occur. Very helpful to system administrator since it can backup data from multiple sources at any time.&lt;br /&gt;Do we really need this?&lt;br /&gt;&lt;br /&gt;Result: Acceptable for multiple access and highly scalable solution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;6) Network Attached Storage Server&lt;/span&gt; &lt;span style="font-weight: bold;"&gt;(NAS)&lt;/span&gt;&lt;br /&gt;A NAS server is essentially a server that is set aside strictly for distributing files to other servers, and client computers. Instead of doing any processing, this server only act as a storage to other servers or clients therefore reducing risk of file corruption and most OS-related issues and very good at speed. Standard servers typically run server-class Operating Systems, which can become corrupted, or otherwise damaged. NAS, however, store their Operating System on flash memory which can only be overwritten in an upgrade. Due to that, it is normally more expensive. Moreover, this is not end stage of backup due to the physical disaster which can be potentially crashed the whole storage and leave no single data once occurs.  That's why technology such as &lt;span style="font-weight: bold;"&gt;clustering&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;RAID&lt;/span&gt; should be implemented as well.  (Wikipedia: &lt;span style="font-style: italic;"&gt;It should be noted that NAS is effectively a server in itself, with all major components of a typical PC – a CPU, motherboard, RAM, etc. – and its reliability is a function of how well it is designed internally. A NAS without redundant data access paths, redundant controllers, redundant power supplies, is probably less reliable than &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Direct_Attached_Storage" title="Direct Attached Storage" class="mw-redirect"&gt;Direct Attached Storage&lt;/a&gt;&lt;span style="font-style: italic;"&gt; (DAS) &lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;Finally, In most cases, you'll still need to do backup for this server and bring us back to the original question  "where and how to backup the data?"&lt;br /&gt;&lt;br /&gt;Result: Acceptable for data storage not a data backup. Full Stop.&lt;br /&gt;&lt;br /&gt;Besides these solutions, there are other solution we can implement.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;7) Optical Jukebox.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;From Wikipedia: Optical Jukebox is a robotic &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Data_storage_device" title="Data storage device"&gt;data storage device&lt;/a&gt;&lt;span style="font-style: italic;"&gt; that can automatically load and unload &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Optical_disc" title="Optical disc"&gt;optical discs&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, such as &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Compact_Disc" title="Compact Disc"&gt;Compact Disc&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/DVD" title="DVD"&gt;DVD&lt;/a&gt;&lt;span style="font-style: italic;"&gt;, &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Ultra_Density_Optical" title="Ultra Density Optical"&gt;Ultra Density Optical&lt;/a&gt;&lt;span style="font-style: italic;"&gt; or &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Blu-ray_disc" title="Blu-ray disc" class="mw-redirect"&gt;Blu-ray disc&lt;/a&gt;&lt;span style="font-style: italic;"&gt; and can provide &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Terabyte" title="Terabyte"&gt;terabytes&lt;/a&gt;&lt;span style="font-style: italic;"&gt; of &lt;/span&gt;&lt;a style="font-style: italic;" href="http://en.wikipedia.org/wiki/Tertiary_storage" title="Tertiary storage" class="mw-redirect"&gt;tertiary storage&lt;/a&gt;&lt;span style="font-style: italic;"&gt;.  Jukebox capacities have greatly increased with the release of the 50GB dual layer Blu-ray (BD) format, with a road-map to increase to eight layers and 200GB per disc. The current format allows 35TB of storage from a single 700 disc jukebox&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;I might miss out some advantages or disadvantages at every single data backup solution I disucssed in this article.  However, this overview might give you some introductory concept and idea on the data backup solution which might help you deciding the best solution and most importantly BEST AFFORDABLE SOLUTION as most people might concern.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-6024284073980112301?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/6024284073980112301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=6024284073980112301' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/6024284073980112301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/6024284073980112301'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/03/backup-your-data-media-and-mechanism.html' title='Backup Your Data: Looking for the best solution'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-3281093435966172374</id><published>2009-01-12T20:52:00.000-08:00</published><updated>2009-01-12T21:27:26.409-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>FTP using VB.NET</title><content type='html'>It was not my initial intention to share how to code FTP library. Initially, I thought .NET has already supplied complete library for ftp. However, I got a big "NOT!".&lt;br /&gt;&lt;br /&gt;While you are able to do download and upload files via FTP using System.Net.FtpWebRequest -creating, renaming and deleting folder was not so straight forward. You still have to go back to the basic ftp command such as MKD, RNFR, RMD, etc.&lt;br /&gt;&lt;br /&gt;I finally came across a library that did this &lt;a href="http://www.csharphelp.com/archives/archive9.html"&gt;library in C# codes &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This library will enable you to do few important actions such as:&lt;br /&gt;1 - Connect to FTP server (for sure!)&lt;br /&gt;2 - upload file&lt;br /&gt;3 - download file&lt;br /&gt;4 - delete remote file&lt;br /&gt;4 - create remote folder&lt;br /&gt;5 - delete remote folder&lt;br /&gt;6 - rename remote folder&lt;br /&gt;7 - list down all the files in the remote path&lt;br /&gt;8 - get remote file size&lt;br /&gt;&lt;br /&gt;All these functions should be enough to develop one powerful FTP client.&lt;br /&gt;&lt;br /&gt;I've spent couple of hours to translate this code into VB.NET and done some modifications to make this library works for me, then this is the result. (quite a long code)&lt;br /&gt;&lt;br /&gt;**********************************************************************************&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#6633ff;"&gt;Imports System&lt;br /&gt;Imports System.Net&lt;br /&gt;Imports System.IO&lt;br /&gt;Imports System.Text&lt;br /&gt;Imports System.Net.Sockets&lt;br /&gt;&lt;br /&gt;Public Class FTPClass&lt;br /&gt;Private remoteHost As String, remotePath As String, remoteUser As String, remotePass As String, mes As String&lt;br /&gt;Private remotePort As Integer, bytes As Integer&lt;br /&gt;Private clientSocket As Socket&lt;br /&gt;Private retValue As Integer&lt;br /&gt;Private debug As Boolean&lt;br /&gt;Private logined As Boolean&lt;br /&gt;Private reply As String&lt;br /&gt;Private Shared BLOCK_SIZE As Integer = 512&lt;br /&gt;Private buffer As Byte() = New Byte(BLOCK_SIZE - 1) {}&lt;br /&gt;Private ASCII As Encoding = Encoding.ASCII&lt;br /&gt;Public Sub New()&lt;br /&gt;remoteHost = "192.168.1.62"&lt;br /&gt;remotePath = "."&lt;br /&gt;remoteUser = "sofigis"&lt;br /&gt;remotePass = "sofi"&lt;br /&gt;remotePort = 21&lt;br /&gt;debug = False&lt;br /&gt;logined = False&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Set the name of the FTP server to connect to.&lt;br /&gt;'''&lt;br /&gt;''' Server name&lt;br /&gt;Public Sub setRemoteHost(ByVal remoteHost As String)&lt;br /&gt;Me.remoteHost = remoteHost&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Return the name of the current FTP server.&lt;br /&gt;'''&lt;br /&gt;''' Server name&lt;br /&gt;Public Function getRemoteHost() As String&lt;br /&gt;Return remoteHost&lt;br /&gt;End Function&lt;br /&gt;'''&lt;br /&gt;''' Set the port number to use for FTP.&lt;br /&gt;'''&lt;br /&gt;''' Port number&lt;br /&gt;Public Sub setRemotePort(ByVal remotePort As Integer)&lt;br /&gt;Me.remotePort = remotePort&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Return the current port number.&lt;br /&gt;'''&lt;br /&gt;''' Current port number&lt;br /&gt;Public Function getRemotePort() As Integer&lt;br /&gt;Return remotePort&lt;br /&gt;End Function&lt;br /&gt;'''&lt;br /&gt;''' Set the remote directory path.&lt;br /&gt;'''&lt;br /&gt;''' The remote directory path&lt;br /&gt;Public Sub setRemotePath(ByVal remotePath As String)&lt;br /&gt;Me.remotePath = remotePath&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Return the current remote directory path.&lt;br /&gt;'''&lt;br /&gt;''' The current remote directory path.&lt;br /&gt;Public Function getRemotePath() As String&lt;br /&gt;Return remotePath&lt;br /&gt;End Function&lt;br /&gt;'''&lt;br /&gt;''' Set the user name to use for logging into the remote server.&lt;br /&gt;'''&lt;br /&gt;''' Username&lt;br /&gt;Public Sub setRemoteUser(ByVal remoteUser As String)&lt;br /&gt;Me.remoteUser = remoteUser&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Set the password to user for logging into the remote server.&lt;br /&gt;'''&lt;br /&gt;''' Password&lt;br /&gt;Public Sub setRemotePass(ByVal remotePass As String)&lt;br /&gt;Me.remotePass = remotePass&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Return a string array containing the remote directory's file list.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Function getFileList(ByVal mask As String) As String()&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;Dim cSocket As Socket = createDataSocket()&lt;br /&gt;sendCommand("NLST " &amp;amp; mask)&lt;br /&gt;If Not (retValue = 150 OrElse retValue = 125) Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;mes = ""&lt;br /&gt;While True&lt;br /&gt;Dim bytes As Integer = cSocket.Receive(buffer, buffer.Length, 0)&lt;br /&gt;mes += ASCII.GetString(buffer, 0, bytes)&lt;br /&gt;If bytes &lt; buffer.Length Then&lt;br /&gt;Exit While&lt;br /&gt;End If&lt;br /&gt;End While&lt;br /&gt;Dim seperator As Char() = {ControlChars.Lf}&lt;br /&gt;Dim mess As String() = mes.Split(seperator)&lt;br /&gt;cSocket.Close()&lt;br /&gt;readReply()&lt;br /&gt;If retValue &lt;&gt; 226 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;Return mess&lt;br /&gt;End Function&lt;br /&gt;'''&lt;br /&gt;''' Return the size of a file.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Function getFileSize(ByVal fileName As String) As Long&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;sendCommand("SIZE " &amp;amp; fileName)&lt;br /&gt;Dim size As Long = 0&lt;br /&gt;If retValue = 213 Then&lt;br /&gt;size = Int64.Parse(reply.Substring(4))&lt;br /&gt;Else&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;Return size&lt;br /&gt;End Function&lt;br /&gt;'''&lt;br /&gt;''' Login to the remote server.&lt;br /&gt;'''&lt;br /&gt;Public Sub login()&lt;br /&gt;clientSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)&lt;br /&gt;Dim ep As New IPEndPoint(Dns.Resolve(remoteHost).AddressList(0), remotePort)&lt;br /&gt;Try&lt;br /&gt;clientSocket.Connect(ep)&lt;br /&gt;Catch generatedExceptionName As Exception&lt;br /&gt;Throw New IOException("Couldn't connect to remote server")&lt;br /&gt;End Try&lt;br /&gt;readReply()&lt;br /&gt;If retValue &lt;&gt; 220 Then&lt;br /&gt;close()&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;If debug Then&lt;br /&gt;Console.WriteLine("USER " &amp;amp; remoteUser)&lt;br /&gt;End If&lt;br /&gt;sendCommand("USER " &amp;amp; remoteUser)&lt;br /&gt;If Not (retValue = 331 OrElse retValue = 230) Then&lt;br /&gt;cleanup()&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;If retValue &lt;&gt; 230 Then&lt;br /&gt;If debug Then&lt;br /&gt;Console.WriteLine("PASS xxx")&lt;br /&gt;End If&lt;br /&gt;sendCommand("PASS " &amp;amp; remotePass)&lt;br /&gt;If Not (retValue = 230 OrElse retValue = 202) Then&lt;br /&gt;cleanup()&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;logined = True&lt;br /&gt;Console.WriteLine("Connected to " &amp;amp; remoteHost)&lt;br /&gt;chdir(remotePath)&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' If the value of mode is true, set binary mode for downloads.&lt;br /&gt;''' Else, set Ascii mode.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub setBinaryMode(ByVal mode As Boolean)&lt;br /&gt;If mode Then&lt;br /&gt;sendCommand("TYPE I")&lt;br /&gt;Else&lt;br /&gt;sendCommand("TYPE A")&lt;br /&gt;End If&lt;br /&gt;If retValue &lt;&gt; 200 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Download a file to the Assembly's local directory,&lt;br /&gt;''' keeping the same file name.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub download(ByVal remFileName As String)&lt;br /&gt;download(remFileName, "", False)&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Download a remote file to the Assembly's local directory,&lt;br /&gt;''' keeping the same file name, and set the resume flag.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub download(ByVal remFileName As String, ByVal [resume] As Boolean)&lt;br /&gt;download(remFileName, "", [resume])&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Download a remote file to a local file name which can include&lt;br /&gt;''' a path. The local file name will be created or overwritten,&lt;br /&gt;''' but the path must exist.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub download(ByVal remFileName As String, ByVal locFileName As String)&lt;br /&gt;download(remFileName, locFileName, False)&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Download a remote file to a local file name which can include&lt;br /&gt;''' a path, and set the resume flag. The local file name will be&lt;br /&gt;''' created or overwritten, but the path must exist.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub download(ByVal remFileName As String, ByVal locFileName As String, ByVal [resume] As Boolean)&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;setBinaryMode(True)&lt;br /&gt;Console.WriteLine((("Downloading file " &amp;amp; remFileName &amp;amp; " from ") + remoteHost &amp;amp; "/") + remotePath)&lt;br /&gt;If locFileName.Equals("") Then&lt;br /&gt;locFileName = remFileName&lt;br /&gt;End If&lt;br /&gt;If Not File.Exists(locFileName) Then&lt;br /&gt;Dim st As Stream = File.Create(locFileName)&lt;br /&gt;st.Close()&lt;br /&gt;End If&lt;br /&gt;Dim output As New FileStream(locFileName, FileMode.Open)&lt;br /&gt;Dim cSocket As Socket = createDataSocket()&lt;br /&gt;Dim offset As Long = 0&lt;br /&gt;If [resume] Then&lt;br /&gt;offset = output.Length&lt;br /&gt;If offset &gt; 0 Then&lt;br /&gt;sendCommand("REST " &amp;amp; offset)&lt;br /&gt;If retValue &lt;&gt; 350 Then&lt;br /&gt;'throw new IOException(reply.Substring(4));&lt;br /&gt;'Some servers may not support resuming.&lt;br /&gt;offset = 0&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;If offset &gt; 0 Then&lt;br /&gt;If debug Then&lt;br /&gt;Console.WriteLine("seeking to " &amp;amp; offset)&lt;br /&gt;End If&lt;br /&gt;Dim npos As Long = output.Seek(offset, SeekOrigin.Begin)&lt;br /&gt;Console.WriteLine("new pos=" &amp;amp; npos)&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;sendCommand("RETR " &amp;amp; remFileName)&lt;br /&gt;If Not (retValue = 150 OrElse retValue = 125) Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;While True&lt;br /&gt;bytes = cSocket.Receive(buffer, buffer.Length, 0)&lt;br /&gt;output.Write(buffer, 0, bytes)&lt;br /&gt;If bytes &lt;= 0 Then&lt;br /&gt;Exit While&lt;br /&gt;End If&lt;br /&gt;End While&lt;br /&gt;output.Close()&lt;br /&gt;If cSocket.Connected Then&lt;br /&gt;cSocket.Close()&lt;br /&gt;End If&lt;br /&gt;Console.WriteLine("")&lt;br /&gt;readReply()&lt;br /&gt;If Not (retValue = 226 OrElse retValue = 250) Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Upload a file.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub upload(ByVal fileName As String)&lt;br /&gt;upload(fileName, False)&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Upload a file and set the resume flag.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub upload(ByVal fileName As String, ByVal [resume] As Boolean)&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;Dim cSocket As Socket = createDataSocket()&lt;br /&gt;Dim offset As Long = 0&lt;br /&gt;If [resume] Then&lt;br /&gt;Try&lt;br /&gt;setBinaryMode(True)&lt;br /&gt;offset = getFileSize(fileName)&lt;br /&gt;Catch generatedExceptionName As Exception&lt;br /&gt;offset = 0&lt;br /&gt;End Try&lt;br /&gt;End If&lt;br /&gt;If offset &gt; 0 Then&lt;br /&gt;sendCommand("REST " &amp;amp; offset)&lt;br /&gt;If retValue &lt;&gt; 350 Then&lt;br /&gt;'throw new IOException(reply.Substring(4));&lt;br /&gt;'Remote server may not support resuming.&lt;br /&gt;offset = 0&lt;br /&gt;End If&lt;br /&gt;End If&lt;br /&gt;sendCommand("STOR " &amp;amp; Path.GetFileName(fileName))&lt;br /&gt;If Not (retValue = 125 OrElse retValue = 150) Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;' open input stream to read source file&lt;br /&gt;Dim input As New FileStream(fileName, FileMode.Open)&lt;br /&gt;If offset &lt;&gt; 0 Then&lt;br /&gt;If debug Then&lt;br /&gt;Console.WriteLine("seeking to " &amp;amp; offset)&lt;br /&gt;End If&lt;br /&gt;input.Seek(offset, SeekOrigin.Begin)&lt;br /&gt;End If&lt;br /&gt;Console.WriteLine(("Uploading file " &amp;amp; fileName &amp;amp; " to ") + remotePath)&lt;br /&gt;While (InlineAssignHelper(bytes, input.Read(buffer, 0, buffer.Length))) &gt; 0&lt;br /&gt;cSocket.Send(buffer, bytes, 0)&lt;br /&gt;End While&lt;br /&gt;input.Close()&lt;br /&gt;Console.WriteLine("")&lt;br /&gt;If cSocket.Connected Then&lt;br /&gt;cSocket.Close()&lt;br /&gt;End If&lt;br /&gt;readReply()&lt;br /&gt;If Not (retValue = 226 OrElse retValue = 250) Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Delete a file from the remote FTP server.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub deleteRemoteFile(ByVal fileName As String)&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;sendCommand("DELE " &amp;amp; fileName)&lt;br /&gt;If retValue &lt;&gt; 250 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Rename a file on the remote FTP server.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub renameRemoteFile(ByVal oldFileName As String, ByVal newFileName As String)&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;sendCommand("RNFR " &amp;amp; oldFileName)&lt;br /&gt;If retValue &lt;&gt; 350 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;' known problem&lt;br /&gt;' rnto will not take care of existing file.&lt;br /&gt;' i.e. It will overwrite if newFileName exist&lt;br /&gt;sendCommand("RNTO " &amp;amp; newFileName)&lt;br /&gt;If retValue &lt;&gt; 250 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Create a directory on the remote FTP server.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub mkdir(ByVal dirName As String)&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;sendCommand("MKD " &amp;amp; dirName)&lt;br /&gt;If retValue &gt; 400 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Delete a directory on the remote FTP server.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub rmdir(ByVal dirName As String)&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;sendCommand("RMD " &amp;amp; dirName)&lt;br /&gt;If retValue &lt;&gt; 250 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Change the current working directory on the remote FTP server.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub chdir(ByVal dirName As String)&lt;br /&gt;If dirName.Equals(".") Then&lt;br /&gt;Exit Sub&lt;br /&gt;End If&lt;br /&gt;If Not logined Then&lt;br /&gt;login()&lt;br /&gt;End If&lt;br /&gt;sendCommand("CWD " &amp;amp; dirName)&lt;br /&gt;If retValue &lt;&gt; 250 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;Me.remotePath = dirName&lt;br /&gt;Console.WriteLine("Current directory is " &amp;amp; remotePath)&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Close the FTP connection.&lt;br /&gt;'''&lt;br /&gt;Public Sub close()&lt;br /&gt;If clientSocket IsNot Nothing Then&lt;br /&gt;sendCommand("QUIT")&lt;br /&gt;End If&lt;br /&gt;cleanup()&lt;br /&gt;Console.WriteLine("Closing...")&lt;br /&gt;End Sub&lt;br /&gt;'''&lt;br /&gt;''' Set debug mode.&lt;br /&gt;'''&lt;br /&gt;'''&lt;br /&gt;Public Sub setDebug(ByVal debug As Boolean)&lt;br /&gt;Me.debug = debug&lt;br /&gt;End Sub&lt;br /&gt;Private Sub readReply()&lt;br /&gt;mes = ""&lt;br /&gt;reply = readLine()&lt;br /&gt;retValue = Int32.Parse(reply.Substring(0, 3))&lt;br /&gt;End Sub&lt;br /&gt;Private Sub cleanup()&lt;br /&gt;If clientSocket IsNot Nothing Then&lt;br /&gt;clientSocket.Close()&lt;br /&gt;clientSocket = Nothing&lt;br /&gt;End If&lt;br /&gt;logined = False&lt;br /&gt;End Sub&lt;br /&gt;Private Function readLine() As String&lt;br /&gt;While True&lt;br /&gt;bytes = clientSocket.Receive(buffer, buffer.Length, 0)&lt;br /&gt;mes += ASCII.GetString(buffer, 0, bytes)&lt;br /&gt;If bytes &lt; buffer.Length Then&lt;br /&gt;Exit While&lt;br /&gt;End If&lt;br /&gt;End While&lt;br /&gt;Dim seperator As Char() = {ControlChars.Lf}&lt;br /&gt;Dim mess As String() = mes.Split(seperator)&lt;br /&gt;If mes.Length &gt; 2 Then&lt;br /&gt;mes = mess(mess.Length - 2)&lt;br /&gt;Else&lt;br /&gt;mes = mess(0)&lt;br /&gt;End If&lt;br /&gt;If Not mes.Substring(3, 1).Equals(" ") Then&lt;br /&gt;Return readLine()&lt;br /&gt;End If&lt;br /&gt;If debug Then&lt;br /&gt;For k As Integer = 0 To mess.Length - 2&lt;br /&gt;Console.WriteLine(mess(k))&lt;br /&gt;Next&lt;br /&gt;End If&lt;br /&gt;Return mes&lt;br /&gt;End Function&lt;br /&gt;Private Sub sendCommand(ByVal command As String)&lt;br /&gt;Dim cmdBytes As Byte() = Encoding.ASCII.GetBytes((command &amp;amp; vbCr &amp;amp; vbLf).ToCharArray())&lt;br /&gt;clientSocket.Send(cmdBytes, cmdBytes.Length, 0)&lt;br /&gt;readReply()&lt;br /&gt;End Sub&lt;br /&gt;Private Function createDataSocket() As Socket&lt;br /&gt;sendCommand("PASV")&lt;br /&gt;If retValue &lt;&gt; 227 Then&lt;br /&gt;Throw New IOException(reply.Substring(4))&lt;br /&gt;End If&lt;br /&gt;Dim index1 As Integer = reply.IndexOf("("c)&lt;br /&gt;Dim index2 As Integer = reply.IndexOf(")"c)&lt;br /&gt;Dim ipData As String = reply.Substring(index1 + 1, index2 - index1 - 1)&lt;br /&gt;Dim parts As Integer() = New Integer(5) {}&lt;br /&gt;Dim len As Integer = ipData.Length&lt;br /&gt;Dim partCount As Integer = -1&lt;br /&gt;Dim buf As String = ""&lt;br /&gt;Dim i As Integer = 0&lt;br /&gt;While i &lt; len AndAlso partCount &lt;= 6&lt;br /&gt;Dim ch As Char = [Char].Parse(ipData.Substring(i, 1))&lt;br /&gt;If [Char].IsDigit(ch) Then&lt;br /&gt;buf += ch&lt;br /&gt;ElseIf ch &lt;&gt; ","c Then&lt;br /&gt;Throw New IOException("Malformed PASV reply: " &amp;amp; reply)&lt;br /&gt;End If&lt;br /&gt;If ch = ","c OrElse i + 1 = len Then&lt;br /&gt;Try&lt;br /&gt;parts(System.Math.Max(System.Threading.Interlocked.Increment(partCount), partCount - 1)) = Int32.Parse(buf)&lt;br /&gt;buf = ""&lt;br /&gt;Catch generatedExceptionName As Exception&lt;br /&gt;Throw New IOException("Malformed PASV reply: " &amp;amp; reply)&lt;br /&gt;End Try&lt;br /&gt;End If&lt;br /&gt;i += 1&lt;br /&gt;End While&lt;br /&gt;Dim ipAddress As String = (((CStr(parts(0)) &amp;amp; ".") + CStr(parts(1)) &amp;amp; ".") + CStr(parts(2)) &amp;amp; ".") + CStr(parts(3))&lt;br /&gt;Dim port As Integer = (parts(4) &lt;&lt; 8) + parts(5)&lt;br /&gt;Dim s As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)&lt;br /&gt;Dim ep As New IPEndPoint(Dns.Resolve(ipAddress).AddressList(0), port)&lt;br /&gt;Try&lt;br /&gt;s.Connect(ep)&lt;br /&gt;Catch generatedExceptionName As Exception&lt;br /&gt;Throw New IOException("Can't connect to remote server")&lt;br /&gt;End Try&lt;br /&gt;Return s&lt;br /&gt;End Function&lt;br /&gt;Private Shared Function InlineAssignHelper(Of T)(ByRef target As T, ByVal value As T) As T&lt;br /&gt;target = value&lt;br /&gt;Return value&lt;br /&gt;End Function&lt;br /&gt;End Class&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;To call this class, you can do like this:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;Private Function UploadFile() As Boolean&lt;br /&gt;&lt;br /&gt;Dim ft As New FTPClass&lt;br /&gt;Try&lt;br /&gt;ft.setDebug(True)&lt;br /&gt;ft.setRemoteHost("192.168.1.87")&lt;br /&gt;ft.setRemoteUser("user")&lt;br /&gt;ft.setRemotePass("123456")&lt;br /&gt;ft.setRemotePath("Root/")&lt;br /&gt;ft.setRemotePort(21)&lt;br /&gt;&lt;br /&gt;ft.login()&lt;br /&gt;Try&lt;br /&gt;ft.chdir("Test")&lt;br /&gt;Catch ex As Exception&lt;br /&gt;Finally&lt;br /&gt;ft.mkdir("Test")&lt;br /&gt;End Try&lt;br /&gt;ft.chdir("Test")&lt;br /&gt;&lt;br /&gt;ft.setRemotePath("test.txt")&lt;br /&gt;ft.setBinaryMode(True)&lt;br /&gt;ft.upload("C:\test.txt")&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;font-size:85%;color:#3333ff;"&gt;ft.close()&lt;br /&gt;Catch ex As Exception&lt;br /&gt;ft.close()&lt;br /&gt;MsgBox(ex.Message)&lt;br /&gt;Return False&lt;br /&gt;End Try&lt;br /&gt;MsgBox("Upload success!")&lt;br /&gt;Return True&lt;br /&gt;End Function&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#3333ff;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#3333ff;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#3333ff;"&gt;****&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; &lt;/p&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;br /&gt;&lt;br /&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-3281093435966172374?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/3281093435966172374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=3281093435966172374' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/3281093435966172374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/3281093435966172374'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/01/ftp-using-vbnet.html' title='FTP using VB.NET'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-7244077289556706023</id><published>2009-01-05T23:29:00.000-08:00</published><updated>2009-01-05T23:51:24.152-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>How to totally remove a virus from pendrive</title><content type='html'>Removing virus from pendrive normally requires 2 steps:&lt;br /&gt;&lt;br /&gt;Step 1: Scan the pendrive using Antivirus software.&lt;br /&gt;Step 2: Remove the hidden file autorun.inf&lt;br /&gt;&lt;br /&gt;***********************&lt;br /&gt;&lt;br /&gt;Step 1: should be handled by the antivirus software. So I won't talk on this. As suggested by some people on the net, you can always refer to below link.&lt;br /&gt;&lt;br /&gt;1) Superantispywhere&lt;br /&gt;&lt;a href="http://www.superantispyware.com/superantispywarefreevspro.html" rel="nofollow"&gt;http://www.superantispyware.com/superant...&lt;/a&gt;&lt;br /&gt;it will possible detect and get rid of the Trojan. It gets rid of some of the toughest problems.&lt;br /&gt;&lt;br /&gt;2)Smitfraudfix&lt;br /&gt;&lt;a href="http://siri.geekstogo.com/SmitfraudFix.php" rel="nofollow"&gt;http://siri.geekstogo.com/SmitfraudFix.p...&lt;/a&gt;&lt;br /&gt;this tool should be launched in safemode. To learn how to do that look here&lt;br /&gt;&lt;a href="http://www.pchell.com/support/safemode.shtml" rel="nofollow"&gt;http://www.pchell.com/support/safemode.s...&lt;/a&gt;&lt;br /&gt;run this tool and choose to clean. it will get rid of pop-ups trying to sell you fake things&lt;br /&gt;&lt;br /&gt;3)Vundofix&lt;br /&gt;&lt;a href="http://www.atribune.org/content/view/24/2/" rel="nofollow"&gt;http://www.atribune.org/content/view/24/...&lt;/a&gt;&lt;br /&gt;this tool gets rid of Vundo trojans and more.&lt;br /&gt;the site shows how to use it.&lt;br /&gt;&lt;br /&gt;4)Combofix&lt;br /&gt;&lt;a href="http://download.bleepingcomputer.com/sUBs/ComboFix.exe" rel="nofollow"&gt;http://download.bleepingcomputer.com/sUB...&lt;/a&gt;&lt;br /&gt;this is a last resort&lt;br /&gt;Combofix is a general tool that helps the helper cleaning up a Hijackthis log.&lt;br /&gt;It is able to remove some common infections and helps a user detect files that general scanners cannot find. It also lists registry keys such as the key keys, the desktop keys, and other areas where malware hide. The tool has some rootkit detectors too, allowing a helper to see if a rootkit is present on the PCsmi&lt;br /&gt;&lt;br /&gt;**********************&lt;br /&gt;&lt;br /&gt;2) Step 2: However, you normally have to perform step 2 manually since antivirus will not remove autorun.inf since there is nothing wrong with the file in the first place since the bad thing actually the script written into the file, not the file itself.&lt;br /&gt;&lt;br /&gt;Now, follow this steps.&lt;br /&gt;&lt;br /&gt;1 - Start windows command prompt. If you use XP, type "cmd" in the Run textbox in Start &gt; Run to start the program.&lt;br /&gt;&lt;br /&gt;2 - While in the command prompt, type your pendrive drive letter such as "E:" and press Enter&lt;br /&gt;3 - &lt;strong&gt;&lt;span&gt;&lt;span style="font-weight: normal;"&gt;type&lt;/span&gt; attrib -r -h -s &lt;span class="IL_SPAN"&gt;&lt;input name="IL_MARKER" type="hidden"&gt;autorun&lt;/span&gt;.inf&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;(Now, if you type &lt;span style="font-weight: bold;"&gt;dir&lt;/span&gt; you will able to see the file. I normally,  open this file as notepad to see what is actually written inside. Actually, the content here is the script that will automatically execute once you double click your pendrive.)&lt;br /&gt;5 - type &lt;span style="font-weight: bold;"&gt;del autorun.inf&lt;/span&gt; to delete the file permanently.&lt;br /&gt;6 - Eject and Plug in back your pendrive.&lt;br /&gt;&lt;br /&gt;Your pendrive should now work fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-7244077289556706023?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/7244077289556706023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=7244077289556706023' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7244077289556706023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7244077289556706023'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/01/how-to-totally-remove-virus-from.html' title='How to totally remove a virus from pendrive'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-5353210782784828490</id><published>2009-01-05T01:46:00.000-08:00</published><updated>2009-01-05T02:25:39.343-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>War on Virus</title><content type='html'>I have a nice 4Gb Kingston USB pendrive that I used to backup most of my data, officially and personally.&lt;br /&gt;&lt;br /&gt;If you knew me, I was the person that can hardly put trust on the machine. I never believed that the machines can work long lasting well (correct term?) as we want it to work.&lt;br /&gt;Manufacturer might give you warranty on your hardware but nobody will give warranty on your data.  Therefore I always do few levels of backup in order to make sure my things always safe and available. This behaviour is becoming more critical since I'm the one that do backup for the whole company data. If the media A fails, look for media B, if B fails, then look for C and so on. Therefore at the end of the day especially when I take long leave, my mind would be more peaceful. Nothing to worry about. Comes to worst, I won't be so regret cause I knew, I have done many things already to avoid the disaster. Sometimes later, I would like to talk about this in more details.&lt;br /&gt;&lt;br /&gt;Back to my pendrive. it's one of the media used by me as backup. But now, I haven't use my pendrive for weeks already. Know why?....yes! it's a virus inside. The virus is now inside my pendrive sitting 'peacefully' and 'happily' with all my critical data. (The data is so critical until it gives me some fears to fix it, what a dillema!!). However, I hope they're all sitting together peacefully until I really get ready to declare war against them. All these few weeks, I don't really have time to look for good weapon which I can use to go against them. I'll find the time and maybe now is the time. Listen here Mr. V! We now declare war on you!&lt;br /&gt;&lt;br /&gt;This week also might be a good time for me to do some research on how to avoid viruses from infecting my things especially the pendrive as they are extremely vulnerable and frequently made me sick!&lt;br /&gt;&lt;br /&gt;It's my to do list for this week.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-5353210782784828490?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/5353210782784828490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=5353210782784828490' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5353210782784828490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5353210782784828490'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2009/01/war-on-virus.html' title='War on Virus'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-3967209476573869779</id><published>2008-12-22T01:41:00.000-08:00</published><updated>2008-12-22T02:04:48.337-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Oracle</title><content type='html'>I've spent almost 2 weeks trying to download oracle 9i and after more than 4 times trial and still fail due to connection failure, today I start downloading it via uTorrent. Actually, I've few ways to do it before  decide for 'torrent'ing - I can download it through RapidShare in which I don't have an account. Maybe I need to ask for my friend's account already.&lt;br /&gt;&lt;br /&gt;Whatever it was or would be, Oracle has already given me a tough start! But, this also indicates some challenges that hopefully brings some joy later!&lt;br /&gt;&lt;br /&gt;Ermmm........ Dot NET in Oracle.&lt;br /&gt;&lt;br /&gt;......simply irresistible!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-3967209476573869779?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/3967209476573869779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=3967209476573869779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/3967209476573869779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/3967209476573869779'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/12/oracle.html' title='Oracle'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2770533558144509665</id><published>2008-12-10T19:06:00.000-08:00</published><updated>2008-12-11T01:20:00.846-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='My Books'/><title type='text'>Art Of War</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4q51fS0rFN8/SUCEIGNWxWI/AAAAAAAAAD8/xUFmdcsY-Nc/s1600-h/images.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 115px; height: 130px;" src="http://1.bp.blogspot.com/_4q51fS0rFN8/SUCEIGNWxWI/AAAAAAAAAD8/xUFmdcsY-Nc/s320/images.jpg" alt="" id="BLOGGER_PHOTO_ID_5278364037918672226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;"Know yourself, know your enemy the victory will be certain. Know heaven, know earth the victory will be complete".&lt;br /&gt;&lt;br /&gt;This is a famous quote from this book. Nice to remember. However, the best part is the idea inside is priceless. Some&lt;a href="http://en.wikipedia.org/wiki/The_Art_of_War"&gt; military leaders, corporate leaders, nations leaders, sports coach and even high level mafia read this book&lt;/a&gt;. This book has been made compulsory by Japanes company to be read by their young executives. This itself conclude the usefulness of its contents.&lt;br /&gt;&lt;br /&gt;After reading this book for the second time (13 chapters, 3 pages or less in every chapter considered very brief BUT the idea inside is extemely rich and compact!) , I'm getting more interested in knowing how actually I can identify the 'enemy' in my life.  Maybe I'm  not really involved in a war which can give physical destruction to myself. But, each of us actually at war in our daily life. Worse, we're actually at war against one part of ourself, which islam always refer to nafs or hawa'. The evil side of our soul.&lt;br /&gt;&lt;br /&gt;This is the enemy that stop us from doing any good thing. Wakeup late, too much eat, less motivated to do good things, procrastinating from doing right thing, stingy, wasting time, hot-tampered are among the army of this enemy.&lt;br /&gt;&lt;br /&gt;This is enemy no #1, that every people has to confront continuosly before any other enemy is his life. This book, give me some idea on how to defeat him.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2770533558144509665?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2770533558144509665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2770533558144509665' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2770533558144509665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2770533558144509665'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/12/art-of-war.html' title='Art Of War'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4q51fS0rFN8/SUCEIGNWxWI/AAAAAAAAAD8/xUFmdcsY-Nc/s72-c/images.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2648019849836566393</id><published>2008-12-08T22:56:00.001-08:00</published><updated>2008-12-08T23:17:14.272-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Alert using SMTP</title><content type='html'>There are so many reasons why people send email but the reasons are not so vary why machines send email. One of the most popular reason is to give an alert of some particular events. As in my case I used to create a vb.net program to send an email to alert me on some events happen in the server I'm currently in charged. For instance, I will be able to know how much free space of the C: drive of the server left at the moment I received the alert. This will help me a lot so that the server won't hang once it reach the maximum size, since I can take some actions long before it happens.&lt;br /&gt;&lt;br /&gt;To make your vb.net application to send email is not so hard. Maybe below codes might help.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   &lt;span style="color: rgb(51, 51, 255);"&gt; Public g_EMAIL_SMTP As String = "smtp.bizmail.yahoo.com"&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    Public g_EMAIL_Port As String = "587"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    Public g_EMAIL_Sender As String = "alert@mail.com"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    Public g_EMAIL_Desc As String = ""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    Public g_EMAIL_User As String = "nasrul@mail.com.my"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    Public g_EMAIL_Pwd As String = "abc1234"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    Public Function Send_EMAIL(ByVal strEmailaddr As String, ByVal strSubject As    String, ByVal strBody As String) As Boolean&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         Dim oMessage As New MailMessage()&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         oMessage.Subject = g_EMAIL_Desc + " - " + strSubject&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         oMessage.Body = strBody + " on " + Now().ToString()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         oMessage.IsBodyHtml = False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         oMessage.ReplyTo = New MailAddress(g_EMAIL_Sender)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         oMessage.From = New MailAddress(g_EMAIL_Sender)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         Dim arrRcpt() As String&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         Dim i As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         arrRcpt = Split(strEmailaddr, ",")&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         For i = 0 To UBound(arrRcpt)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;              If arrRcpt(i) &lt;&gt; "" Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;                   oMessage.To.Add(New MailAddress(arrRcpt(i)))&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;   End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;  Next&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         oMessage.Priority = MailPriority.High&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         Try&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;              Dim client As New SmtpClient(g_EMAIL_SMTP, g_EMAIL_Port)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;              If g_EMAIL_User.Trim &lt;&gt; "-" And g_EMAIL_Pwd.Trim &lt;&gt; "-" Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;              client.Credentials = New Net.NetworkCredential(g_EMAIL_User.Trim, g_EMAIL_Pwd.Trim)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;  End If&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;               client.Send(oMessage)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         Catch ex As Exception&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;              Return False&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         End Try&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;         Return True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;    End Function&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;From anywhere of you codes, you just call this function, and if all the SMTP settings are correct, the email will be successfully sent to the recipient!&lt;br /&gt;&lt;br /&gt;If you're going to send an alert email, remember to set the filter, so that the application won't simply send the email which might flood your inbox. As in my case where the apps alert me the server hard drive free space, the email will only be sent once the application notice that the free space left is less than 80 GB.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt; Dim FreeSpace As String = My.Computer.FileSystem.Drives.Item(0).AvailableFreeSpace.ToString&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Dim fspaceInMB As Double = Math.Round((CDbl(FreeSpace) / 1000000), 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Dim fspaceInGB As Double = Math.Round((CDbl(FreeSpace) / 1000000000), 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Dim strBody As String = ""&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        fspaceInMB = fspaceInMB - 1000&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        fspaceInGB = fspaceInGB - 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        If CDbl(fspaceInGB) &lt;&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;          Send_EMAIL("helangtimuran@gmail.com", "WARNING: Hard disk almost full", "")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        End If&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;In this way, the apps. not only give you an alert but it gives you an alert in an efficient way.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2648019849836566393?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2648019849836566393/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2648019849836566393' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2648019849836566393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2648019849836566393'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/12/alert-using-smtp.html' title='Alert using SMTP'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-6907396062769883807</id><published>2008-11-30T18:21:00.000-08:00</published><updated>2008-11-30T18:36:18.933-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>The world is flat</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_4q51fS0rFN8/STNKbbveaNI/AAAAAAAAADQ/nCpNBsHhlng/s1600-h/the_world_is_flat_cover.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 96px; height: 147px;" src="http://1.bp.blogspot.com/_4q51fS0rFN8/STNKbbveaNI/AAAAAAAAADQ/nCpNBsHhlng/s320/the_world_is_flat_cover.jpg" alt="" id="BLOGGER_PHOTO_ID_5274641423744788690" border="0" /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;What the hell on earth are you saying the world is flat. After so many proofs brought by so many scientists around the world plus all the holy proofs from God, the world was never be flat. Are you living at different century friedman?&lt;br /&gt;&lt;br /&gt;I have a lot to say on this Friedman's The World is Flat. However I won't give any comment before I complete my reading. Just 30 more pages to go. If I can give so called 'pre-comment' - This book has allowed me to see the world at different angles which was beyond my perspective before. Yes, the world was never be flat and will never be flat -  physically, no one denies that. But, physical perception matter less here! Anyway, I can't wait to give some comments in this 'new theory'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-6907396062769883807?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/6907396062769883807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=6907396062769883807' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/6907396062769883807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/6907396062769883807'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/world-is-flat.html' title='The world is flat'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_4q51fS0rFN8/STNKbbveaNI/AAAAAAAAADQ/nCpNBsHhlng/s72-c/the_world_is_flat_cover.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-5914863085514741825</id><published>2008-11-25T18:04:00.000-08:00</published><updated>2008-11-30T18:36:54.022-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>"Better" Formula</title><content type='html'>What means to be better?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Charity Story&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In charity for example, if you own rm10  yesterday, you give away rm2 for charity and keep rm8 for yourself. However, today you want to do better in charity, so you give away rm8 for charity and keep the remaining rm2 for yourself. Does it mean better? Yes if you look at one side. The charity get more. But, you get less in your side. If talking about selft-sacrifice, then that it is. I once agree with this simple idea, but now no more.&lt;br /&gt;&lt;br /&gt;To be better in charity, what you need to do is not by simply focusing on self sacrifice. There are much better ways to do. Now consider this - if yesterday you own rm10, and the next day you want to donate more, so you work much harder so that at the end of the day you get double. Does it seem better if you get rm20, and then donate rm12 but still keep for yourself another rm8,  just like what you got when you own rm10. The only difference now is you can give more.&lt;br /&gt;&lt;br /&gt;This is what we call to do better things,  you need to work on another things better. This is first requirement, better system. But it is not everything. Do you really trust at yourself, once you have rm20, you can give away your money just like that? I don't really think so. That comes the second requirement which is the purpose or some might call strong intention. Strong intention to work harder and get more money so that you can DONATE more instead of self saving.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The formula is ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Better system + Purpose(strong intention) = Better Output&lt;br /&gt;&lt;br /&gt;In order to start adapting this formula, start it step by step as below:&lt;br /&gt;&lt;br /&gt;1 - Identify the thing you want it to be better&lt;br /&gt;2 - What are the system you're needed so that you can improve it.&lt;br /&gt;3 - Remember your purpose.&lt;br /&gt;&lt;br /&gt;Let's adapt this now!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-5914863085514741825?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/5914863085514741825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=5914863085514741825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5914863085514741825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5914863085514741825'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/better-formula.html' title='&quot;Better&quot; Formula'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-4354272910051719869</id><published>2008-11-24T17:21:00.000-08:00</published><updated>2008-12-08T23:17:59.519-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Meeting: to motivate or to demotivate</title><content type='html'>Yesterday, monday evening was our project meeting. This meeting sometimes was so irritated once you're busy solving some issues (especially those you don't want people to know more. I'm not going to elaborate more on what I quite always refer to as 'those you don't want people to know more'. Sometimes sooner or later, I'll talk about it). However, sometimes I like meetings. There in the meeting, I'll get informed on the current or coming project status, any raising matters that every people was currently busy on when I was not around, what's the company's direction and of course the company current status (especially in the downturn time like these days).&lt;br /&gt;&lt;br /&gt;The best part of the meeting which was the worst part for me during my early days as software developer was to answer question such as "When you think you can complete this task?".&lt;br /&gt;This question made my mind suddenly extraordinarily thinking a lot of possible challenges which I'm gonna go through plus how I'm gonna manage my schedule to suit the date actually 'expected' by my boss (every boss want anything to be completed earliest possible, everybody in the office knew this). This thinking time didn't take so much time as I always practice this long time ago. It took me few seconds before answering the question and of course ending my aswer with some words like  "I'm gonna complete this as fast as I can". Just to make your boss feel better :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The best part was not at answering the question. The best part was after I answer the question. I felt like burning someting inside me and it was the desire that I burnt. Desire to make things I've commited in saying to a result that every people can see and say "Congratulation, you have done it well!". This might be my only extreme imagination. But this kind of thinking really works for me in the past as it'll work in the future.&lt;br /&gt;&lt;br /&gt;Finally, when the meeting was over, I was so energetic and so eager to do what I've commited in the meeting. Surely this kind of meeting is always the one that I'm waiting for.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-4354272910051719869?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/4354272910051719869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=4354272910051719869' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/4354272910051719869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/4354272910051719869'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/meeting-to-motivate-or-to-demotivate.html' title='Meeting: to motivate or to demotivate'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-9169850534626691658</id><published>2008-11-23T19:28:00.000-08:00</published><updated>2008-11-23T19:43:40.929-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>Sample Codes: Sort an array incrementally</title><content type='html'>Today, I came forward to solve one tricky problem, by the way it's very common problems, get an array of unsorted numbers to be sorted incrementally.&lt;br /&gt;&lt;br /&gt;It just a few lines of codes:&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Public Function SortArrayIncrement(ByVal ArrNum As ArrayList) As ArrayList&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        For i As Integer = 0 To ArrNum.Count - 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            For j As Integer = i To ArrNum.Count - 1&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                If ArrNum(i) &gt; ArrNum(j) Then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                    Dim NewLowest As Integer = ArrNum(j)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                    ArrNum(j) = ArrNum(i)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                    ArrNum(i) = NewLowest&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                End If&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            Next&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Return ArrNum&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    End Function&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From anywhere of your the project file, you can call this function such as&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Dim m_arrNumSorted as ArrayLIst = SortArrayIncrement(m_arrNum)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To try out this function, follow this:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;span style="font-family:courier new;"&gt;Private Sub btnSort_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSort.Click&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        m_arrNum.Add("9")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        m_arrNum.Add("5")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        m_arrNum.Add("4")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        m_arrNum.Add("7")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        m_arrNum.Add("3")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        m_arrNum.Add("1")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-family:courier new;font-size:85%;"  &gt;        Dim m_arrNumSorted as ArrayLIst = SortArrayIncrement(m_arrNum)&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;br /&gt;                    Dim strNumSorted as String = ""&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        For k As Integer = 0 To m_arrNumSorted.Count - 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            If k = 0 Then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                strNumSorted = m_arrNumSorted(k)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                Me.txtArraySort.Text = strNumSorted&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            Else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                strNumSorted = strNumSorted &amp;amp; ", " &amp;amp; m_arrNumSorted(k)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                Me.txtArraySort.Text = strNumSorted&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;            End If&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;End Sub&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once, you click the btnSort, you will see a sorted array of numbers in the textbox called txtArraySort.&lt;br /&gt;&lt;br /&gt;Just sharing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-9169850534626691658?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/9169850534626691658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=9169850534626691658' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/9169850534626691658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/9169850534626691658'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/sample-codes-sort-array-incrementally.html' title='Sample Codes: Sort an array incrementally'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-9000441678938562537</id><published>2008-11-23T17:33:00.000-08:00</published><updated>2008-11-23T17:47:41.344-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Planning for a better morning</title><content type='html'>Last night I spent almost one hour planning for this week as what I did before I married. Almost ONE whole year I lived my life without weekly planning. So bad.&lt;br /&gt;&lt;br /&gt;Now, it is a wonderful morning so far. Wake up a bit early, go to work, taking my favourite meal for breakfast (2 half cooked egg + cow's milk), read my favourite book but yet still left few pages to go. Now, I'm sitting in front of my pc to start my work.&lt;br /&gt;&lt;br /&gt;Most people say, you'll know whether your day will be good or bad by looking at your morning.&lt;br /&gt;Now, it looks like my day will be a great day and hopefully a nice week as what I planned to be!&lt;br /&gt;&lt;br /&gt;Of course challenges are one of the thing I expect for in this week, so that it would be much more meaningful for me and not just 'another' week in my life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-9000441678938562537?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/9000441678938562537/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=9000441678938562537' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/9000441678938562537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/9000441678938562537'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/planning-for-better-morning.html' title='Planning for a better morning'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-7599732098500444505</id><published>2008-11-19T22:30:00.000-08:00</published><updated>2008-12-08T22:59:28.509-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Have you ever found .NET Application in Macintosh?</title><content type='html'>&lt;span style="font-style: italic;"&gt;This article was written based on my rough idea related to my observation as a software engineer. No serious studies has been made. Therefore, some of the facts might not be accurate. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I'm just coming back from kick-off project meeting in ***. We spent almost 1.5 hours discussing on the project. As usual, I just listened to the conversation cause  most topics doesn't seem relevant for any interruption especially from technical person like us (me and my supervisor of course).  However, it was after the meeting (during makan time) that suddenly give me some interests. Somebody was talking about how cheaper it is to go for Apple Mac rather than Microsoft. There were other arguments there, but those were not involve my interest so much.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Macintosh VS Windows&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Most people know both Apple and Microsoft was, is and will be rival forever unless, one of them switch their core business into other field as what has happened to rolls-royce (they are in Jet industry instead of automative if you don't aware). As long as they are building and selling software and particularly Operating System, these two giants will never be good friend. The reason for war between these two is actually more compared to their war with others, Linux distro for example, since their target user was not so much different. However, here in Malaysia, the money might be the reason no 1 why Apple doesn't seems to be better choice for Malaysians. However, once there are arguments saying that, it is a lot more cheaper going for Apple Macintosh rather than Microsoft Windows when you sum up the price with the hardware cost, then I'm now thinking that the future might be different for Microsoft. Of course the effect is not an independence effect where only effecting Microsoft profit and loss but it is also effect any other parties who are depending so much on the Microsoft technology such as product distributor, technology supplier including the software company (software engineer of course).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Going for Platform-Independence?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Yesterday, this question is sometimes sounds more commercial rather than technical. However, today, it looks like both. Here comes the reason why the sofware company has to be dynamic enough to face the challenge. They must get ready to invest on time and money any time from now. I'm not saying this is an urgent process. But, what I really mean, a local software company cannot be so rigid on providing the solution. Yes, most markets in Malaysia are still using Microsoft technology and will use it few years down the road. How about the world market, have we ever think about it? is it impossible to the local market to be shrinking so much until we can't get any single project  in a year. Or, are we waiting for the worst case to happen only we gonna crash our head thinking about the market in China or United Kingdom while never have information on what  platform the majority are using in United States or Saudi Arabia?&lt;br /&gt;&lt;br /&gt;This is the time for us to get ready. This might sound good for the company that already applied Platform-independence technology in their development. It's good, really good. But, did you really take this oppoturnity to really explore bigger market? If the answer is yes, why not take this oppoturnity to really go in front and leave all the close-minded local software company far behind. Stop depending so much on the local market.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Facing Challenge&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The future for software companies is always a challenge. Greater challenge would be faced by them 5 years from now compared to now. This might required them to have 'foretune teller' in the company that can predict what the challenge will. I, a poor little software engineer, really believe that the next challenge will be the &lt;span style="font-weight: bold;"&gt;demand on platform-independence technology&lt;/span&gt; as the monopoly will be wiped out in this world in a day that is becoming closer by now. The reasons for this to happen is now clearer than ever!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Nasrul Muhaimin b Mohd Zain&lt;br /&gt;November 20, 2008&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-7599732098500444505?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/7599732098500444505/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=7599732098500444505' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7599732098500444505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7599732098500444505'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/have-you-ever-found-net-application-in.html' title='Have you ever found .NET Application in Macintosh?'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-5943881554521940731</id><published>2008-11-19T16:58:00.000-08:00</published><updated>2008-11-24T07:00:30.657-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Codes'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><title type='text'>Reading XML file using XmlDocument</title><content type='html'>&lt;div style="text-align: left;"&gt;Extensible Markup Language or pupularly known XML is  one of the latest  standard to share data across different platforms. You can write your application in VB.NET under Windows  which pass the data to be read by C++ application done in Linux using this method. Does it sounds great?&lt;br /&gt;&lt;br /&gt;To make this happen, .NET framework since 1.0 version has introduced several classes and functions to be used for XML. One of the frequently used class is XMLDocument. In this example I'll show how you can read the XML file using XMLDocument class.&lt;br /&gt;&lt;br /&gt;Given this xml file called Customer.xml&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_4q51fS0rFN8/SSS7WZpAy1I/AAAAAAAAAB8/HD6oc5L1Rxg/s1600-h/CustomerXML.JPG"&gt;&lt;img style="cursor: pointer; width: 296px; height: 188px;" src="http://4.bp.blogspot.com/_4q51fS0rFN8/SSS7WZpAy1I/AAAAAAAAAB8/HD6oc5L1Rxg/s320/CustomerXML.JPG" alt="" id="BLOGGER_PHOTO_ID_5270543457444744018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Customer.xml&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);font-family:courier new;font-size:85%;"  &gt;&lt;firstname&gt;&lt;/firstname&gt;&lt;/span&gt;Now, we gonna use XmlDocument class to read the file.&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);font-size:85%;" &gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        Dim xDoc As New XmlDocument&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        xDoc.Load("C:\Temp\Customer.xml)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;Dim nodes As XmlNodeList = xDoc.SelectNodes("Report/Customer")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   &lt;br /&gt;For Each node As XmlNode In nodes&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;  Dim strFirstName As String = node("FirstName").InnerXml.Trim&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Dim strLastName As String = node("LastName").InnerXml.Trim&lt;br /&gt;MsgBox("First Name:" &amp;amp; strFirstName)&lt;br /&gt;MsgBox("Last Name:" &amp;amp; strLastName)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Next&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Actually there are several ways to read the xml file, but for me,  XmlDocument method is still the best way that always satisfy me.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-5943881554521940731?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/5943881554521940731/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=5943881554521940731' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5943881554521940731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/5943881554521940731'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/reading-xml-files-using-xmldocument.html' title='Reading XML file using XmlDocument'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_4q51fS0rFN8/SSS7WZpAy1I/AAAAAAAAAB8/HD6oc5L1Rxg/s72-c/CustomerXML.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-513753546596825024</id><published>2008-11-19T01:02:00.000-08:00</published><updated>2008-11-19T01:28:03.432-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>A burden, A Hope</title><content type='html'>"If we fail in this project, this would become the great loss to us. Failure in this project will not be compromised!"&lt;br /&gt;&lt;br /&gt;A task to complete a project is a responsibilty you can never escape. It is a burden in a glance, but also a good chance that could change your life. The burden would be a lot heavier if the task to be completed is done by fewer people. Especially when the dateline doesn't seem so helpful. In my 4 years of experience as a software engineer, I have been so 'lucky' to have this kind of burden. Almost 80% of the project I involved done by maximum of 2 persons. My supervisor and me.&lt;br /&gt;&lt;br /&gt;Despite of all the difficulties and hardships, there is always one thing that make us moving forward no matter what. It was (it is and it will) a HOPE. The HOPE to be better equipped with soft skill and hard skill. The HOPE to have better way to handle emotion in the hardest time. The HOPE to gain better way to solve critical problem in the limited time.  It is the HOPE to be better in life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-513753546596825024?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/513753546596825024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=513753546596825024' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/513753546596825024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/513753546596825024'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/burden-hope.html' title='A burden, A Hope'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-8608504095673019076</id><published>2008-11-17T19:03:00.000-08:00</published><updated>2008-11-19T00:59:10.614-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Handling problem in stress state</title><content type='html'>Earlier this morning as always, I rushed up to solve groups of pending task which was not purposely left pended in the first place. You know, once you're thinking that you've completed the task, sometimes your boss doesn't really think that it was completed. This kind of 'dilemma' always haunted my mind. The reason  sometimes comes from you yourself didn't communicate well with your clients BUT it was not always the reason.&lt;br /&gt;&lt;br /&gt;People sometimes saying something different from what they think. Worse, if the thing they said was actually opposite from what they were thinking. Unfortunately, you can't do much on that. You won't be able to prepare any voice recorder stuff so that everytime your clients 'change' their mind and keep saying something like "I've said this and  that earlier", then you can always replay what they were really saying in that earlier time.&lt;br /&gt;&lt;br /&gt;That is one of thousands or maybe millions issues once you deal with people....so just be patient&lt;br /&gt;and remember what robinson said "Keep Moving Forward!"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-8608504095673019076?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/8608504095673019076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=8608504095673019076' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/8608504095673019076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/8608504095673019076'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/handling-problem-in-stress-state.html' title='Handling problem in stress state'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-4053030783137358416</id><published>2008-11-17T08:04:00.000-08:00</published><updated>2008-12-08T23:10:15.792-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Unforgiven mistake</title><content type='html'>Today my application log file  show an error was happening since last friday (14th Nov). It was a simple error - regarding error on data type conversion, unhandled integer conversion from string - which is a very typical and kind of beginner mistake and also something that u don't want people to know about it (especially your boss and your 'bossy' client).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;This mistake again!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;One whole day I was sitting and figuring out what was the real problem..&lt;br /&gt;One whole day I was wondering, why this error suddenly came out after quite number of months this system was deployed.&lt;br /&gt;&lt;br /&gt;8 hours of figuring, searching, wandering, praying and finally.....again a 'complex'-like problem which was actually required an extremely easy solution.  One column in a table of SQL server database was left 'null' while it was supposed to be some integer input inside.  That was the root cause. Actually, It was a record of my testing few weeks ogo. I should have deleted this record in the first place at least. But I didn't.&lt;br /&gt;&lt;br /&gt;I might have experienced this before (sure I have), but the point is, why I kept on doing same simple mistake which required simple solution. But in the middle wasting so much time that I can do so many useful things such as upgrading the system, or learning the better way to design the system or,  start planning for the future project which is just around the corner (which actually  the start date fall on today). Then, what was the real issue?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Start it with planning&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Few weeks before I've faced a problem on this system.  Something bad happened to the system. It was a bad timing since I was busy with other project. Straightly rushing into server room, log in to the server and quickly start troubleshooting on the basis so-called self-instinct. No proper planning was written on paper or indeed not even in my mind. The goal was to solve the problem as soon as possible so that I can jumped into the project at hand. The good thing was I finally solved the problem. While the bad thing was hidden to me until ..... this morning.  This problem won't appear if proper planning was made just few minutes before I started troubleshooting. If the problem still arise, at least I can always refer to it for the next troubleshooting because if you're familiar with coding, it always happen that, most recent modification have major possibility of introducing new bugs. Therefore, with a proper write up, I could have saved a lot of resources (time + energy + money + peace of mind).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Never  give excuses!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So, if you're facing problem  while at the same time busy with some other things. Never ever started troubleshooting it without planning. Don't give excuse such as "I don't have time to plan, I have to finish this very soon so that I can jump into that sooner..". Indeed your time will be more likely to be waste if you didn't plan. Remember, 5 minutes of planing can save you hours or days if it is properly done.&lt;br /&gt;&lt;br /&gt;Just sharing!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-4053030783137358416?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/4053030783137358416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=4053030783137358416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/4053030783137358416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/4053030783137358416'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/11/this-is-simple-mistake-but-why.html' title='Unforgiven mistake'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-7829746995433101662</id><published>2008-10-30T23:16:00.000-07:00</published><updated>2008-11-19T01:00:02.229-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>IQ or EQ, which one matter most?</title><content type='html'>Hi all,&lt;br /&gt;&lt;br /&gt;This morning, I tried out one IQ test from a website and got the score 145..&lt;br /&gt;&lt;br /&gt;Referring to the normal curve chart, looks like abu umar falls under 145 - 159 group which is GENIUS :-)  alhamdulillah.&lt;br /&gt;&lt;br /&gt;Whatever it is, please don't take it so seriously since, other xQ (EQ and SQ) sometimes matter more than just an IQ itself! click at the "Some IQ geniuses" link in the website if u don't believe me, guess how many person u know or at least ever heard his/her name...&lt;br /&gt;&lt;br /&gt;please try out the test and let me know how many of us can beat up einstein and other world geniuses...&lt;br /&gt;&lt;br /&gt;&lt;a title="Free IQ Tests" href="http://www.free-iqtest.net/"&gt;&lt;img alt="Free IQ Tests" src="http://www.free-iqtest.net/images/badges2/l145.gif" border="0" height="100" width="200" /&gt;&lt;/a&gt;&lt;br /&gt;Free-IQTest.net - &lt;a title="Free IQ Tests" href="http://www.free-iqtest.net/"&gt;Free IQ Tests&lt;/a&gt;&lt;img style="visibility: hidden; width: 0px; height: 0px;" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyMjQ*NzMzOTMyNTAmcHQ9MTIyNDQ3MzQwNDQzNyZwPTEwOTE5MSZkPUZJUSZnPTEmdD*mbz1jZWY5ZmQ3ODdkOTM*NTBhOWQ2MzM5OTA5MmQ2NDdhMA==.gif" border="0" height="0" width="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_4q51fS0rFN8/SPv8Mv44jGI/AAAAAAAAAB0/ivBbFifHRlM/s1600-h/iq-bell-curve.gif"&gt;&lt;img id="BLOGGER_PHOTO_ID_5259074285828869218" style="" alt="" src="http://4.bp.blogspot.com/_4q51fS0rFN8/SPv8Mv44jGI/AAAAAAAAAB0/ivBbFifHRlM/s320/iq-bell-curve.gif" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Intelligence Interval Cognitive Designation&lt;br /&gt;40 - 54 Severely challenged (Less than 1% of test takers)&lt;br /&gt;55 - 69 Challenged (2.3% of test takers)&lt;br /&gt;70 - 84 Below average&lt;br /&gt;85 - 114 Average (68% of test takers)&lt;br /&gt;115 - 129 Above average&lt;br /&gt;130 - 144 Gifted (2.3% of test takers)&lt;br /&gt;&lt;strong&gt;145 - 159 Genius (Less than 1% of test takers)&lt;/strong&gt;&lt;br /&gt;160 - 175 Extraordinary genius&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-7829746995433101662?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/7829746995433101662/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=7829746995433101662' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7829746995433101662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/7829746995433101662'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/10/iq-or-eq-which-one-matter-most.html' title='IQ or EQ, which one matter most?'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_4q51fS0rFN8/SPv8Mv44jGI/AAAAAAAAAB0/ivBbFifHRlM/s72-c/iq-bell-curve.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-8198850776490047509</id><published>2008-07-28T03:41:00.000-07:00</published><updated>2008-07-28T04:29:56.638-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='VB.Net'/><title type='text'>.NET talk: Visual Basic VS Visual Basic.NET</title><content type='html'>This is quite and old topic but you lose nothing for reading it. Since this due to my understanding based on my working experieance and some readings, I always welcome any response, whether to add or to correct the facts.&lt;br /&gt;&lt;br /&gt;**************************************************************************************&lt;br /&gt;&lt;br /&gt;Quite a number of friends keep asking me what are the differences between VB and VB.NET especially those who have some experiences on using Visual Basic. (VB6 or lower).&lt;br /&gt;&lt;br /&gt;In this posting, I'll just focus on ONE difference.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Visual Basic is compiled language while Visual Basic.NET is interpreted language&lt;/span&gt;&lt;br /&gt;Okay, if you first time heard "interpreted language" or "compiled language" maybe you want to &lt;a href="http://en.wikipedia.org/wiki/Interpreted_language"&gt;read this&lt;/a&gt;. Briefly speaking, interpreted language is referred to the programming language which is interpreted line by line during runtime by an interpreter. Some other interpreted language which is very common today are PHP, PERL, JAVA and so on. &lt;br /&gt;&lt;br /&gt;On the other hand, compiled language is a programming which is initially compiled to a native code also called machine code and object code. This program will later be run by the CPU directly without any further interpretation, C and C++ fall in this group. Some peaple might not really agree if I said VB.Net is interpreted instead of compiled. This reason might due to the fact that VB.Net itself actually compiled before executed (remember build and rebuild button in Visual Studio). You are correct - but the code is compiled to some intermediate code which microsoft call it CIL (stands for Common Intermediate Language, initially being called MSIL - stands for Microsoft Intermediate Language). This CIL works as similar as bytecodes for JAVA. Once, the code has been transferred to CIL. It will be later executed by Just In Time interpreter. That's one of two reason why before you can run any .NET application, it is a MUST to pre-install .NET Framework. &lt;br /&gt;&lt;br /&gt;Now back to Visual Basic, after compiling the code to EXE, do you need to further install any translator? I don't think so (Please correct me if I'm wrong).&lt;br /&gt;&lt;br /&gt;Next post, I'll talk about why VB.Net is running as interpreted instead of compiled.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-8198850776490047509?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/8198850776490047509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=8198850776490047509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/8198850776490047509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/8198850776490047509'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/07/net-talk-visual-basic-vs-visual.html' title='.NET talk: Visual Basic VS Visual Basic.NET'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-1614865652469599818</id><published>2008-07-27T19:35:00.000-07:00</published><updated>2009-03-13T02:24:30.141-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='Crystal Report .NET'/><title type='text'>Troubleshooting: [CrystalReport + ASP.NET]: Cannot deploy Crystal Report with ASP.NET in target machine</title><content type='html'>Building report using Crystal Report in ASP.NET website is quite straight forward. Maybe you would do these steps:&lt;br /&gt;1 - Add new Crystal Report page&lt;br /&gt;2 - Specify the data source of the report in Crystal Report page&lt;br /&gt;3 - Drag and drop Crystal Viewer on the web page.&lt;br /&gt;4 - Specify the report source&lt;br /&gt;5 - Put a few line of code if needed.&lt;br /&gt;6 - Run the program from Visual Studio 2005, and there your ASP.Net report come out.&lt;br /&gt;&lt;br /&gt;These are the steps you see working in the development machine. Now, copy the webpage files to your target machine (any server without Visual Studio 2005 installed). Run it in the localhost. Can you see similar thing happen again OR another new mystery to be figured out? If the latter you see, then keep on reading...&lt;br /&gt;&lt;br /&gt;ENVIRONMENT&lt;br /&gt;=============&lt;br /&gt;VS 2005&lt;br /&gt;Crystal Report for VS 2005&lt;br /&gt;ASP.NET 2.0&lt;br /&gt;Win XP Service Pack 2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SYMPTONS&lt;br /&gt;==========&lt;br /&gt;1 - When open browser you've an error message " Could not load file or Assembly "CrystalDecisions.****" (The message is vary based one what kind of CrystalDecision DLL or Assembly files is missing)&lt;br /&gt;&lt;br /&gt;REASON&lt;br /&gt;=======&lt;br /&gt;Some DLL or Assembly files are missing. Normally DLL files should appear under application root folder name "Bin" while the assembly must appear&lt;br /&gt;in C:\WINDOWS\Assembly\&lt;br /&gt;&lt;br /&gt;SOLUTION&lt;br /&gt;=========&lt;br /&gt;step 1) Copy DLL files to Bin folder.&lt;br /&gt;&lt;br /&gt;crystaldecisions.crystalreports.engine.dll.&lt;br /&gt;crystaldecisions.reportsource.dll&lt;br /&gt;crystaldecisions.shared.dll&lt;br /&gt;crystaldecisions.web.dll&lt;br /&gt;&lt;br /&gt;COPY above DLL from "C:\Program Files\Common Files\Business Objects\2.7\Managed\" and PASTE them to "Visual Studio 2005\WebSites\[YourWebsiteName]\Bin\" (this path might vary depend on your initial chosen path)&lt;br /&gt;&lt;br /&gt;Once, you've done this, you might have probably able to browse your website up to the page where the crystalreport document appears, here you'll face another problem saying&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;"Could not load file or assembly CrystalDecisions.ReportAppserver.*** ..."&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;This problem is caused by MISSING ASSEMBLY FILES which is located inside c:\windows\assembly\.&lt;br /&gt;&lt;br /&gt;for details instruction, go to step 2.&lt;br /&gt;&lt;br /&gt;==================================================&lt;br /&gt;&lt;br /&gt;step 2) Install CrystalReports Assembly files&lt;br /&gt;&lt;br /&gt;a) for 64-bit server:&lt;br /&gt; COPY installation program called "CRRedist2005_x64.msi" from "C:\Program Files\Microsoft Visual Studio 8\Crystal Reports\CRRedist\X64" from development machine and paste into target machine. Then, double click on it to start the installation.&lt;br /&gt;&lt;br /&gt;b)for 32-bit server&lt;br /&gt;Donwload CRRedist2005_x86.msi from  &lt;a href="http://www.filewatcher.com/m/CRRedist2005_x86.msi.16971776.0.0.html"&gt;http://www.filewatcher.com/m/CRRedist2005_x86.msi.16971776.0.0.html&lt;/a&gt;&lt;br /&gt;After download,  double click on it to start the installation.&lt;br /&gt;&lt;br /&gt;Once the installation process completed. Browse your website. Here you will be able to view the page with crystal report.  You may need to restart the server or IIS if the problem still persist.&lt;br /&gt;&lt;br /&gt;==================================================&lt;br /&gt;&lt;br /&gt;InsyaAllah, this solution will work seamlessly!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-1614865652469599818?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/1614865652469599818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=1614865652469599818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1614865652469599818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1614865652469599818'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/07/crystalreport-aspnet-cannot-deploy.html' title='Troubleshooting: [CrystalReport + ASP.NET]: Cannot deploy Crystal Report with ASP.NET in target machine'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-1489453880333384899</id><published>2008-07-27T19:13:00.000-07:00</published><updated>2008-07-30T03:18:47.836-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Troubleshoot'/><category scheme='http://www.blogger.com/atom/ns#' term='Crystal Report .NET'/><title type='text'>Troubleshoot: [CrystalReport .NET] Database Logon Dialog Keep On Apppearing</title><content type='html'>For those who are heavily involved with CrystalReport especially CrystalReport .NET version might notice some 'unwanted' things happen sometimes after deployment of a project. I involve a lot on VB.NET programming which used CrystalReport as its reporting services and one of the regular thing I face was a problem in which Database Logon dialog keep on appear itself asking you to enter username, password, server, etc. However, this dialog keep coming out even after you fill in the required field.  In most cases, this problem does occur in certain machine only.&lt;br /&gt;&lt;br /&gt;After trying and trying few ways (and this is always the way you'll finally solve the prob), finally I come to this solution and maybe conclusion. I couldn't guarantee this solution may apply to all. But maybe for those having similar trouble, can put this on try...&lt;br /&gt;&lt;br /&gt;ENVIRONMENT&lt;br /&gt;============&lt;br /&gt;VS .NET 2003&lt;br /&gt;Crystal Report for .NET 2003&lt;br /&gt;Win XP Service Pack 2&lt;br /&gt;&lt;br /&gt;SYMPTONS&lt;br /&gt;==========&lt;br /&gt;generate a report, suddenly "Database Login" dialog appear, whatever things you write on (server, username, pwd, etc)you'll still get this error message. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;REASON&lt;br /&gt;=======&lt;br /&gt;Absoulue reason of this problem is still unknows, but one of the reason is bacause dll file used to read XML Schema (*.xsd) is corrupted or unable to do intented job. &lt;br /&gt;&lt;br /&gt;SOLUTION&lt;br /&gt;=========&lt;br /&gt;Easiest way is by copying the whole files from folder "C:\Program Files\Common Files\CrystalDecision\1.0\bin" FROM (PC which doesn't have this problem)  TO the same location at the 'problem' PC.&lt;br /&gt;&lt;br /&gt;If GOD permits, everything works fine later!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-1489453880333384899?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/1489453880333384899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=1489453880333384899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1489453880333384899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/1489453880333384899'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/07/troubleshooting-crystalreport-database.html' title='Troubleshoot: [CrystalReport .NET] Database Logon Dialog Keep On Apppearing'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-243294102773070052</id><published>2008-07-25T01:38:00.000-07:00</published><updated>2008-07-30T03:17:23.567-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Current Issues'/><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>XP Fans won't migrate to Vista</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.misfitgeek.com/blogfiles/ReactOSWhatsthepoint_BEFC/ros_033_qemu_fun.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px;" src="http://www.misfitgeek.com/blogfiles/ReactOSWhatsthepoint_BEFC/ros_033_qemu_fun.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's just yesterday when I wondered if I've ability to develop my own operating system which can work perfectly with all other software and hardware drivers just like Windows XP does. This hard-to-achieve dream(still can achieve I believe) was actually triggered by the few months back bad news regarding possibilities that Microsoft will stop supporting Windows XP after somewhere on 2009.&lt;br /&gt;&lt;br /&gt;Less than 24 hours later I found that there one open source team on the net has just launched their alpha version of 'WinXP'-like OS called &lt;a href="http://www.reactos.org/en/index.html"&gt;ReactOS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Claiming that their XP-version is just similar with the existing Microsoft Windows XP on the market. It's gonna work just like the WinXP and sure it's not another LINUX Windows GUI distro as claimed by them "This is not a Linux based system, and shares none of the unix architecture" &lt;br /&gt;&lt;br /&gt;Okay, this could be another good news collection to all XP users a.k.a Vista haters after &lt;a href="http://www.engadget.com/2008/06/24/microsoft-promises-to-support-windows-xp-until-2014/ "&gt;June news.&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;p/s - Looks like most XP-users is buying time for at least until Windows 7 is launced.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-243294102773070052?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/243294102773070052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=243294102773070052' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/243294102773070052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/243294102773070052'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/07/xp-fans-wont-migrate-to-vista.html' title='XP Fans won&apos;t migrate to Vista'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-246158575946291615</id><published>2008-07-25T00:51:00.000-07:00</published><updated>2008-07-30T03:14:54.683-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web Technology'/><category scheme='http://www.blogger.com/atom/ns#' term='AJAX'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>AJAX, CSS and Learning Videos</title><content type='html'>Almost this whole week, I spent my time watching and listening to few series of ASP.NET AJAX videos provided by Microsoft ASP.NET team. Thanks to them for making my life alot easier these days. For those sharing similar interest can  go to &lt;a href="http://www.asp.net/learn/"&gt;this site&lt;/a&gt;. Take your time to watch as much as videos you want. These would give you some idea on what AJAX can do and how it does the thing. Some people said this is another new technology. Actually not really. The idea and concept is quite old but has recently been commercialized once Microsoft added XMLHttpRequest to IE5. ASP.NET AJAX itself is one of the best example.&lt;br /&gt;&lt;br /&gt;Enough talk about AJAX. Still long way to go. Hopefully I'll have chance to apply it in my coming project.&lt;br /&gt; &lt;br /&gt;Considering myself as a newbie in Web Programming, I feel a bit left behind - actually  already quite far behind :-), need to learn a lot of new things. Let alone talk about ASP family - AJAX, MVC, etc. &lt;br /&gt;&lt;br /&gt;Talking about web, designing comes into play. Time is another thing. Now CSS gives me headache this whole day. Any videos I can see?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-246158575946291615?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/246158575946291615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=246158575946291615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/246158575946291615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/246158575946291615'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/07/ajax-and-css.html' title='AJAX, CSS and Learning Videos'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2619094608323183108</id><published>2008-07-24T16:23:00.000-07:00</published><updated>2008-11-19T01:01:10.435-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><category scheme='http://www.blogger.com/atom/ns#' term='My Working Life'/><title type='text'>Are you a programmer?</title><content type='html'>When I was an IT student, I once heard one of my friend (actually I heard this from quite a few of them) saying "I hate programming...". and everybody knows what he tried to say was he hate LEARNING programming. Full stop.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;                                                                                                     ********&lt;br /&gt;&lt;br /&gt;Okay, now let do a little bit analysis on why there so many people out there especially those who're taking IT course in University not really 'love' to do programming. Actually worse, since all these people don't have any interest to learn programming. There are few possibilities why, one of them should be the the one that I would like to call king of all the root cause which is the ATTITUDE.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Attitude that matter&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is not a rocket science to prove that how attitude has shape people's life. I don't want to talk about Covey's 7 habit or Ziglar's Over the top  or whatever books - let simply see ourselves. What we are today is actually the result of our attitude we posses yesterday. Sorry, no more beautiful words, come back to the programming issues just now. That's the attitude that build barrier to all these people to start learning programming (even they've already sat for number  of programming exams, unfortunately they actually yet to start learning the thing - or at least open their mind for learning it). Why this thing happen? Here comes quite number of arguments.&lt;br /&gt;One of them is "I can't see the benefit of learning this!". Ermm...so why you take this IT course at the first place? Maybe we got this in reply (maybe this quite obselete but at least it was happening to me :-0 ) ".....I know IT is about doing something with computers, but.."...okay done! that's your attitude, you're doing something that would shape your future without any prior information so that you can do the thing in much strategic ways and better ways and most importantly right ways. So because of this fault, now you're spending 4 years into something you don't have interest in it. How expensive it cost! What I'm trying to say is some of the IT students take the couse without any prior information that they are going to learn programming. It's like a person who want to be carpenter but don't know that he's gonna use hammer and nail.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;It's just a tool&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Good news that programming languages are just a tool to create a system. Just like hammer and nail to build a house.  But tool is important. Without them, nothing will be produced. Since they are  tools. So we're always welcome to use them. Keep on using them will give you expertise on handling them.&lt;br /&gt;&lt;br /&gt;What we've to do now is to identify the tool we're gonna use. Of course, know it function always comes first so that we won't accidentally use wrong tool which produce bad result end up blaming that tool. There were Cobol, Pascal, C, C++ at the old days (they're still useful today) and new generation of JAVA and .NET at the present. Their goal is always one - to provide right tool for the right product.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2619094608323183108?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2619094608323183108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2619094608323183108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2619094608323183108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2619094608323183108'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/07/are-you-programmer.html' title='Are you a programmer?'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3869039756822350482.post-2555651568924535222</id><published>2008-07-24T09:09:00.000-07:00</published><updated>2008-07-30T03:13:18.299-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='General'/><title type='text'>Sharing a hope</title><content type='html'>Welcome to all visitors,&lt;br /&gt;&lt;br /&gt;This blog has been created on 25th July 2008, 12.14 AM. It is my purpose to make this blog as  a mean to share my thoughts on any issues. Ooops...! did I say 'any'? Sorry NOT really, there must be certain issues I'll talk most and that'd be the reason why I initially started this blog :-)&lt;br /&gt;&lt;br /&gt;I'm gonna talk much on something related to my work and OF COURSE the industry that i'm in. Finally, let me tell you, what motivate me most is indeed the response which I'm gonna get from you guys!&lt;br /&gt;&lt;br /&gt;By then, lets the learning and sharing begin..&lt;br /&gt;&lt;br /&gt;Bye.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3869039756822350482-2555651568924535222?l=learningthensharing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://learningthensharing.blogspot.com/feeds/2555651568924535222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3869039756822350482&amp;postID=2555651568924535222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2555651568924535222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3869039756822350482/posts/default/2555651568924535222'/><link rel='alternate' type='text/html' href='http://learningthensharing.blogspot.com/2008/07/welcome-to-all-visitors-this-blog-has.html' title='Sharing a hope'/><author><name>Abu Umar</name><uri>http://www.blogger.com/profile/06498262509025537908</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://3.bp.blogspot.com/_4q51fS0rFN8/StwQgcdXkPI/AAAAAAAAAJo/Ja6ZW7mbC4o/S220/150825.jpg'/></author><thr:total>0</thr:total></entry></feed>
