tag:blogger.com,1999:blog-4844104402928021492024-03-08T07:17:31.221-08:00IMS BlogUnknownnoreply@blogger.comBlogger19125tag:blogger.com,1999:blog-484410440292802149.post-79574284283831474922018-10-26T03:10:00.001-07:002021-05-04T08:06:23.240-07:00Mari kita kasi judul seadanya saja...Jadi ceritanya entah ada angin apa, saya kepikiran untuk membeli lagi domain blog saya yang dulu di imsuryawan.net. Blog ini sudah musnah entah tahun berapa.<div><br /></div><div>Trus, akhirnya menasehati diri sendiri.<br />
<div>
<blockquote class="tr_bq">
"Ketimbang beli domain itu, bikin blog baru lagi, dan akhirnya terbengkalai lagi, mending manfaatkan saja blog yang dulu sudah ada dan digunakan lagi". </blockquote>
<span class="fullpost">
</span>
<br />
<div>
So, here I am... trying to write a post in this blog again.<br />
</div>
<div>
<br />
Sebelum menulis postingan ini, saya iseng-iseng ngecek blog saya di <a href="http://imsuryawan.wordpress.com/" target="_blank">wordpress</a>. Cuman ada 2 postingan di situ, yang intinya berjanji untuk mengaktifkan blog itu lagi (dan janji tinggallah janji... đŁ). </div>
<div>
<br /></div>
<div>
Berusaha login, ga bisa. Males set forgot password. Jadi mainlah saya ke blog saya yang di blogspot ini.</div>
<div>
<br /></div>
<div>
Damn! Tadi jadi malu sendiri setelah melihat postingan jadul di blog ini. Sotoy amat postingannya yak! :D</div>
<div>
<br /></div>
<div>
Saya ingat. Waktu itu saya memutuskan untuk mengulang seluruh konten di blog ini, dan mengganti topik yang saya kuasai... yaitu IT. Ada keinginan juga dulu untuk me-monitize blog ini, makanya ada paid artikel. </div>
<div>
<br /></div>
<div>
Tapi yah, dasarnya saya bukan penulis... Niat untuk meng-update blog ini pun sirna entah ke mana. Semua motivasi yang melandasi pun menghilang begitu saja.</div>
<div>
<br /></div>
<div>
Hal lain juga... waktu itu saya memutuskan to go "offline" for a while. Entah itu medsos, blog, etc. Pokoknya got vanished! Personal reason. </div>
<div>
<br /></div>
<div>
I was not really offline though. Cuman nda jadi user generating content saja. </div>
<div>
<br /></div>
<div>
Sekian lama "offline", saya mulai lagi eksis di jejak online di FB mungkin sekitar tahun 2014an... Kapan tepatnya? Saya lupa! Pokoknya waktu itu saya mulai ikut-ikutan menggunakan Path.</div>
<div>
<br /></div>
<div>
Mungkin tulisan ini akan menjadi awal saya aktif lagi di dunia maya. Mungkin... Kita lihat saja nanti. </div><div><br /></div><div>I am not expecting too much. Sekarang saya cuman menikmati melihat blog ini yang pertama kali saya buat dan bernostalgia jejak-jejak saya di dunia maya.</div>
<div>
<br /></div>
<div>
This time let's do it without trying to become too serious.</div><div><br /></div><div>Or maybe I should start something else but useful... like <a href="http://lanyukinvesting.id" target="_blank">investing</a> maybe? Hmm, we'll see.</div>
</div>
</div>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-28745400044327077122016-07-03T10:03:00.001-07:002016-07-03T10:03:47.850-07:00Prepare your exam with E2LanguageIt's been a while since my last post, and I decided to write on this blog again. This time, I'd like to share the project that I've been involved in: <a href="http://www.e2language.com/">www.e2language.com</a>. As I am one of the core team members, in this post, I will refer myself as we. Oh.. and by the way, sorry... no tech related in this post :D<div>
<br /></div>
<div>
<br /><div>
<br /></div>
<div>
OK... Cut the crap! </div>
<div>
<br /></div>
<div>
So what is E2Language? E2 is an online learning platform focused on English Exam preparation. At the moment, we are focusing on OET and PTE which will soon expand to IELTS and TOEFL as well. </div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://i1.wp.com/blog.e2language.com/wp-content/uploads/2016/05/slider-image-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://i1.wp.com/blog.e2language.com/wp-content/uploads/2016/05/slider-image-3.jpg" width="400" /></a></div>
<div>
<br /></div>
<div>
As an online learning platform, we tried to deliver the best and latest teaching methods to be delivered online - but you will be still guided with our highly experienced teachers. When you signing up for free (yes, totally free), you will get a complete set of General English practice test material. These materials consists of complete Grammar, Reading, Writing, and Listening lessons. Most of the materials has video lessons which will guide you through the lessons (it's really nice, simple, and easy to follow videos - guaranteed), tons of practice tests, and a "real" scored tests. The scoring is designed with gamification approach which will tease (of not motivate) you to try more, more, and more. If you dare, try to compete with the top students and get yourself listed on the top!</div>
<div>
<br /></div>
<div>
While for your exam preparation, we provides you the platform where you could practice as you would do on your real test. Our teachers done a very serious and deep research with this one. See <a href="https://www.linkedin.com/pulse/online-ielts-toefl-oet-training-jarrad-merlo">this post</a> to get the idea.</div>
<div>
<br /></div>
<div>
As many other online services out there, we also tried to promote ourself online via social network. <a href="https://www.youtube.com/channel/UCQsc114NwnobESjk5Tbpjfw">Our youtube channels</a> provides you with a lot of useful video tips that will give you secrets on how to succeed with your exam. Other sources that will benefit you too is our newly launched blog. Check this <a href="https://blog.e2language.com/oet-writing-tips-how-to-get-and-a-sub-test/">tips on how to succeed on your OET Writing exam</a>. It will give you idea that this blog is not just a crap! :) Or maybe you are interested to see what's latest from us, just follow our <a href="https://www.facebook.com/e2language/">Facebook page</a>.</div>
<div>
<br /></div>
<div>
OK that's all for now. I will bring more updates as we go along. :)</div>
<div>
<br /></div>
<div>
<br /></div>
</div>
Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-58635810971223502192010-07-28T02:51:00.000-07:002010-07-28T02:51:44.471-07:00Managing Assembly Version<span class="fullpost">As some of you might have known that we could manage the information about the assembly that we create through AssemblyInfo.cs (in C#) or AssemblyInfo.vb (in VB.NET). When you have a lot of assemblies within of your application, it is not an easy task to manage them, and sometimes it become annoying. Let say that you want to upgrade you version number each time you want to build them, you will face the reality that you need to change all the AssemblyInfo files within your solution. And that is a very boring thing to do.</span><br />
<br />
<span class="fullpost">I found these two articles which suggest us to use single file to maintain information which is generic for all assemblies within our application (such as AssemblyCompany, AssemblyVersion, etc). Very nice articles. Thanks to the writers, it helps me a lot managing my assemblies' version. You can find the articles <a href="http://jebsoft.blogspot.com/2006/04/consistent-version-numbers-across-all.html">here</a>, and <a href="http://ilmatte.wordpress.com/2008/02/10/solutioninfo-and-partitioned-single-solution/">here</a>.</span><br />
<span class="fullpost"> </span><br />
<span class="fullpost">Another good article is <a href="http://www.codeproject.com/kb/dotnet/Auto_Increment_Version.aspx">this one</a>, which explain how to automate the process of giving version number each time we build our application. I haven't try it yet. But, it seems that it will be helpful to manage version of your application, specially if your application is quite large and following complex process (maybe involving step such as creating nightly build), which might require you to sign your assembly each time you build them.</span>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-484410440292802149.post-87925573841427474052010-07-23T07:34:00.000-07:002010-07-23T08:17:15.648-07:00The Killer Robot Case<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.chicagonow.com/blogs/partly-politics/killer-robot.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 317px; height: 254px;" src="http://www.chicagonow.com/blogs/partly-politics/killer-robot.jpg" alt="" border="0" /></a><br />Have you ever read <a href="http://www.onlineethics.org/Resources/Cases/killerrobot/robot.aspx">the killer robot case</a>? Well, just in case you don't, this is a good (and long) story about ethical scenario which occurs in a development of robot. In short, the programmer who wrote the codes for this robot, was mistakenly wrote a wrong formula which cause the robot to perform inappropriately and killed its operator. After a deep investigations held inside the company, it was found that the company also did some unethical actions which responsible direct/indirectly to the death of the operator.<br /><br />Hmm, I guess you need to read it. It's a good case, believe me! You can read the story <a href="http://www.onlineethics.org/Resources/Cases/killerrobot/robot.aspx">here</a>. If you have other links for the same case, I would really thank you for sharing.<br /><br />Now, the case has been assigned as a homework in one of training class that I attended. The training is about Software Quality, and one of the sub topic is about ethics related to Software Engineering. My writing below, was my answer for that homework. I shared it here, because I think it will be helpful for others who work on the same topic, not by giving them direct answer, but to better analyze the case so they can answer better than my answer. If you have worked on the same topic in the past and would like to share anything about this, I would really thank you for sharing it.<br /><br />So, we were asked to identify the top 5 violation of code of ethics in this case, explain why and what should have been done instead.<br /><br />And here is my answer.<br /><br /><span style="font-weight: bold; font-style: italic;">Violation 1</span><br />The quality assurance division was made false claim that they said the software was successfully been tested and error free. They made a fake testing document which said that the. This violation is shown by Cindy Yardley who made fake test document as per request from Ray Johnson. Ray Johnson was also made fake claims that he used to convince Cindy Yardley, that the software is safe that no one will know the test document was a fake. This is violation for the following codes:<br /><ol><li>Code number 1.06 which says âBe fair and avoid deception in all statements, particularly public ones, concerning software or related documents, methods and toolsâ.</li><li>Code number 6.07 which says âBe accurate in stating the characteristics of software on which they work, avoiding not only false claims but also claims that might reasonably be supposed to be speculative, vacuous, deceptive, misleading, or doubtfulâ.</li><li>Code number 6.08 which says âTake responsibility for detecting, correcting, and reporting errors in software and associated documents on which they workâ.</li></ol>Both Cindy Yardley and Ray Johnson should never make deceptive claim regarding the application, since it may lead to serious problem (cause death to the operator).<br /><br /><span style="font-weight: bold; font-style: italic;">Violation 2</span><br />People in Techtronics never inform the operator that the software has exceptional conditions which were clearly stated in the requirements document, as stated by Ruth Whitherspoon that there are exceptional conditions written in the document section 5.2.4.26. This is violation for code number 1.04 which says âDisclose to appropriate persons or authorities any actual or potential danger to the user, the public, or the environment, that they reasonably believe to be associated with software or related documentsâ. According to this code, the people from Techtronics should warn the operator prior to operate the robot, and even give them appropriate training about how to act when such exceptional conditions occur.<br /><br /><span style="font-weight: bold; font-style: italic;">Violation 3</span><br />Some of people involved in the project had no appropriate experience and educational backgrounds. This is a violation for the following codes:<br /><ol><li>Code number 2.01 which says âProvide service in their areas of competence, being honest and forthright about any limitations of their experience and educationâ.</li><li>Code number 3.04 which says âEnsure that they are qualified for any project on which they work or propose to work by an appropriate combination of education and training, and experienceâ.</li><li>Code number 5.04 which says âAssign work only after taking into account appropriate contributions of education and experience tempered with a desire to further that education and experienceâ.<br /></li></ol>The violations were shown by the following acts:<br /><ol><li>Randy Samuels has no educational background in mathematics, statistics and physics. Knowledge on those areas is needed to be able to judge that the business rules, formulas, and logics are correctly implemented within the application. It is true that Randy has experience in programming, but it doesnât make Randy the appropriate person to judge that the code that he wrote has correct logic or not.</li><li>Ray Johnson who leads the Robotic Division had no sufficient experience in software development, since his background is from manufacturing. Therefore his decision was inappropriate for example when he insisted to add developers to speed up the project which is based on his experience in manufacturing field</li><li>The decision that has been made by the management to place Sam Reynolds as the project manager was also violation of the codes above, since Sam has no experience in Robotic software. Instead, Sam was previously experienced in data processing which characteristics of the projects have differences from robotic software. </li></ol>To avoid the violations, the executives or managements should place people who have expertise in area of robotic programming.<br /><br /><span style="font-weight: bold; font-style: italic;">Violation 4</span><br />Ray Johnson was unethically order Cindy Yardley to create fake test document by using his power as Head of Robotics Division. This action was a violation of the code of ethic since Johnson was asking his engineer to do such action that was inconsistent with the code of ethic. This is a violation for the following codes:<br /><ol><li>Code number 5.11 which says âNot ask a software engineer to do anything inconsistent with this Codeâ.</li><li>Code number 8.08 which says âNot influence others to undertake any action that involves a breach of this Codeâ.</li></ol>According to the codes above, Johnson should never use his power to influences his staffs to do any unethical actions. He should let his engineers to work professionally based on their expertise and knowledge.<br /><br /><span style="font-weight: bold; font-style: italic;">Violation 5</span><br />The project was not developed based on a realistic schedule and estimations. Both Ray Johnson and Sam Reynolds realize that it was impossible to deliver the product perfectly within the time constraint provided by the executives (1 January). However, both Johnson and Reynolds were choosing to force their engineers to do the impossible project, instead of trying to convince the executives that their time constraint given to them was inappropriate. This is violation for the following codes:<br /><ol><li>Code number 3.01 which says âStrive for high quality, acceptable cost and a reasonable schedule, ensuring significant tradeoffs are clear to and accepted by the employer and the client, and are available for consideration by the user and the publicâ.</li><li>Code number 5.05 which says âEnsure realistic quantitative estimates of cost, scheduling, personnel, quality and outcomes on any project on which they work or propose to work, and provide an uncertainty assessment of these estimatesâ.<br /><br /></li></ol>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-11014869195853508352009-12-03T17:03:00.000-08:002009-12-03T17:28:01.734-08:00My Notes About .NET Framework<span class="fullpost"><br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NtekUckiv4g/SxhlR8sfDDI/AAAAAAAAASU/MXSVCZLoLMg/s1600-h/dot+net+logo.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 109px;" src="http://1.bp.blogspot.com/_NtekUckiv4g/SxhlR8sfDDI/AAAAAAAAASU/MXSVCZLoLMg/s320/dot+net+logo.png" alt="" id="BLOGGER_PHOTO_ID_5411186311310543922" border="0" /></a><span class="fullpost">These are my notes about .NET. I wrote it here, just to review my </span><span class="fullpost">knowledge about this framework because it's growing very fast. Sometimes, I confused whether WPF was published before the WCF or otherwise. Whether LINQ is built in the framework since it first version, etc. Nothing technical, though. I believe there are millions articles out there that can give a better explanation on specific topic than this article.<br /></span><br /><span class="fullpost">So, my notes are:</span><br /><ul><li>The .NET framework 1.0 was released by Microsoft on 10 July 2002.</li><li>Early .NET framework articles can be found <a href="http://msdn.microsoft.com/en-us/magazine/bb985004.aspx"></a><a href="http://msdn.microsoft.com/en-us/magazine/bb985004.aspx"><span style="text-decoration: underline;">http://msdn.microsoft.com/en-us/magazine/bb985004.aspx</span> </a>and <a href="http://msdn.microsoft.com/en-us/magazine/cc748671.aspx">http://msdn.microsoft.com/en-us/magazine/cc748671.aspx</a><br /></li><li>The conceptual overview of the framework can be found at <a href="http://msdn.microsoft.com/en-us/library/zw4w595w.aspx">http://msdn.microsoft.com/en-us/library/zw4w595w.aspx</a>.</li><li>.NET framework release timeline can be found at <a href="http://en.wikipedia.org/wiki/.NET_Framework#Versions">http://en.wikipedia.org/wiki/.NET_Framework#Versions</a>, more completed list can be found at http://en.wikipedia.org/wiki/.NET_Framework_version_list</li><li>In .NET 3.0, Microsoft introduces four major new components WPF, WCF, WF, and Windows CardSpace.</li><li>Windows Presentation Foundation (WPF), formerly code-named Avalon; a new user interface subsystem and API based on XML and vector graphics, which uses 3D computer graphics hardware and Direct3D technologies. See WPF SDK for developer articles and documentation on WPF.</li><li>Windows Communication Foundation (WCF), formerly code-named Indigo; a service-oriented messaging system which allows programs to interoperate locally or remotely similar to web services.</li><li>Windows Workflow Foundation (WF) allows for building of task automation and integrated transactions using workflows.</li><li>Windows CardSpace, formerly code-named InfoCard; a software component which securely stores a person's digital identities and provides a unified interface for choosing the identity for a particular transaction, such as logging in to a website.<br /></li><li>In .NET 3.5, Microsoft introduces LINQ<br /></li></ul>Unknownnoreply@blogger.com4tag:blogger.com,1999:blog-484410440292802149.post-63906203149419623832008-12-20T04:09:00.000-08:002008-12-20T20:28:04.323-08:00Reading Serial Port with C#<span class="fullpost">C</span><span class="fullpost">ouple days ago </span><span class="fullpost">my junior in college called. He was asking about how to read data from Serial Port. He is currently working with his final project to pursue his Bachelor Degree in Electrical Engineering.<br /><br />In general, his project is creating an RFID reader which can be used to read the RFID tag. The data then will be sent to a PC through RS232 Serial Port. This unique ID then will used as primary key to save data to database.<br /><br />Hmm... this is a kind of a new thing for me, because I'm never done it before. To give you a better overview of the project, you may want to read these sources before continue:<br /></span><ul><li>Read <a href="http://en.wikipedia.org/wiki/RFID">http://en.wikipedia.org/wiki/RFID</a> for an overview of an RFID</li><li>Read <a href="http://instruct1.cit.cornell.edu/Courses/ee476/FinalProjects/s2006/cjr37/Website/index.htm">http://instruct1.cit.cornell.edu/Courses/ee476/FinalProjects/s2006/cjr37/Website/index.htm</a> for an overview of an RFID Reader Circuit.<br /></li><li>Read <a href="http://en.wikipedia.org/wiki/Serial_port">http://en.wikipedia.org/wiki/Serial_port</a> for an overview of Serial Port</li><li>Read <a href="http://en.wikipedia.org/wiki/RS-232">http://en.wikipedia.org/wiki/RS-232</a> for an overview of RS232 Standard</li></ul>Ok, let's get back to our main focus of how to read data from Serial Port.<br /><br />According to MSDN, starting from .NET 2.0, there is a class which can be used to read and write data from Serial Port easily. You can read the documentation <a href="http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx">here</a>. By using this class, working with serial port is no more a nightmare. The class make us able to work with serial port, as if we were working with file. In sort, you just need to specify the port object, instantiate it, open it, and start working with it (read or write data).<br /><br />Specifically to create a port reader, SerialPort has an event which will be trigerred when there is a data being sent to the port. The event handler is called DataReceived. What you need to do is creating a method to be executed when the event raised, and attach the method with a SerialDataReceivedEventHandler delegate to the event handler. Let's look at the class that I've created, I call it PortReader class.<br /><br />This class has three properties which are Name - name of the port which will be read, Error - to hold error occured during the operation (if any), and Message - to hold the message from the port.<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 400px; text-align: left;"><br /><br />private string _name = string.Empty;<br />private string _error = string.Empty;<br />private string _msg = string.Empty;<br /><br />...<br /><br />public string Name<br />{<br />get { return _name; }<br />set { _port.PortName = value; }<br />}<br /><br />public string Message<br />{<br />get { return _msg; }<br />set { _msg = value; }<br />}<br /><br />public string Error<br />{<br />get { return _error; }<br />}<br /><br /></pre><br />You need to specify several attributes of the port such as BaudRate, Parity, DataBits, and StopBits (and other properties as necessary). In this class I specify it in the constructor.<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 180px; text-align: left;"><br /><br />public PortReader()<br />{<br />_port = new SerialPort();<br /><br />_port.BaudRate = 9600;<br />_port.Parity = Parity.None;<br />_port.DataBits = 8;<br />_port.StopBits = StopBits.One;<br />_port.DataReceived += new SerialDataReceivedEventHandler(PortReader_SerialDataReceived);<br /><br />}<br /><br /></pre><br />You may notice that I also specify a new instance of SerialDataReceivedEventHandler which then attached to DataReceived event of the object. I also create a new event for my class which wrap the DataReceived event - EndReadEvent. The codes is as the following:<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 400px; text-align: left;"><br /><br />public delegate void PortReaderEventHandler();<br />public event PortReaderEventHandler EndReadEvent;<br /><br />...<br /><br />private void PortReader_SerialDataReceived(object sender, SerialDataReceivedEventArgs e)<br />{<br />if (!_port.IsOpen)<br />{<br />_error = "Can't read. Port is closed.";<br />return;<br />}<br /><br />_msg = _port.ReadExisting();<br /><br />//raise end read event<br />if (EndReadEvent != null) EndReadEvent();<br /><br />}<br /><br /></pre><br />PortReader_SerialDataReceived is a method which is used to handle the DataReceived event. It's simply read the port data and hold it in _msg variable. The method then raise its own EndReadEvent. This will allow user to do necessary action after the read operation.<br /><br />Other methods are the DoOpen and DoClose method, which are as the following:<br /><br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 400px; text-align: left;"><br /><br />public bool DoOpen()<br />{<br />if (_port.PortName == "")<br />{<br />_error = "Please supply port name!";<br />return false;<br />}<br /><br />if (_port.IsOpen)<br />{<br />_port.Close();<br />}<br /><br />_port.Open();<br />return true;<br />}<br /><br />public bool DoClose()<br />{<br />if (!_port.IsOpen)<br />{<br />_error = "Can't close port that is not in open state.";<br />return false;<br />}<br /><br />_port.Close();<br />return true;<br />}<br /><br /></pre><br />That's it. The complete codes of this class is as the following:<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 400px; text-align: left;"><br /><br />public class PortReader<br />{<br />private SerialPort _port;<br />private string _name = string.Empty;<br />private string _error = string.Empty;<br />private string _msg = string.Empty;<br /><br />public delegate void PortReaderEventHandler();<br />public event PortReaderEventHandler EndReadEvent;<br /><br />public string Name<br />{<br />get { return _name; }<br />set { _port.PortName = value; }<br />}<br /><br />public string Message<br />{<br />get { return _msg; }<br />set { _msg = value; }<br />}<br /><br />public string Error<br />{<br />get { return _error; }<br />}<br /><br />public PortReader()<br />{<br />_port = new SerialPort();<br /><br />_port.BaudRate = 9600;<br />_port.Parity = Parity.None;<br />_port.DataBits = 8;<br />_port.StopBits = StopBits.One;<br />_port.DataReceived += new SerialDataReceivedEventHandler(PortReader_SerialDataReceived);<br /><br />}<br /><br />private void PortReader_SerialDataReceived(object sender, SerialDataReceivedEventArgs e)<br />{<br />if (!_port.IsOpen)<br />{<br /> _error = "Can't read. Port is closed.";<br /> return;<br />}<br /><br />_msg = _port.ReadExisting();<br /><br />//raise end read event<br />if (EndReadEvent != null) EndReadEvent();<br /><br />}<br /><br />public bool DoOpen()<br />{<br />if (_port.PortName == "")<br />{<br /> _error = "Please supply port name!";<br /> return false;<br />}<br /><br />if (_port.IsOpen)<br />{<br /> _port.Close();<br />}<br /><br />_port.Open();<br />return true;<br />}<br /><br />public bool DoClose()<br />{<br />if (!_port.IsOpen)<br />{<br /> _error = "Can't close port that is not in open state.";<br /> return false;<br />}<br /><br />_port.Close();<br />return true;<br />}<br /><br />}<br /><br /></pre><br />Now to use the class, you only need to instantiate the object, specify the port name, open the port, and specifying the action when any read event occurred. Just place your action in OnPortReader_EndRead (you may change it with your own method). A simple example may look like the following:<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 130px; text-align: left;"><br /><br />PortReader myPort = new PortReader();<br />myPort.Name = "COM1";<br />myPort.EndReadEvent += new PortReader.PortReaderEventHandler(OnPortReader_EndRead);<br />myPort.DoOpen();<br /><br /></pre><br />To test the application you might want to use a Virtual Serial Port Emulator. I use <a href="http://www.softpedia.com/progDownload/Free-Virtual-Serial-Ports-Emulator-Download-99061.html">Virtual Serial Port Emulator form Softpedia</a>. It's a nice application - very easy to use, very helpful, and it's free. The application will allow you to create a virtual ports as many as you want up to 255 ports.<br /><br />Ok, that's all. Happy playing with the port. Any input, please welcome. :DUnknownnoreply@blogger.com1tag:blogger.com,1999:blog-484410440292802149.post-2055459105779397092008-12-05T23:08:00.000-08:002008-12-05T23:36:37.580-08:00Even Code Comments, Are Very Important!The story was started by this email:<br /><blockquote style="font-style: italic;">All,<br /><br />Please, allow me to share a little bit.<br /><br />I have just read the Programming Standards.doc, and I found out something interesting in the document about code comments (all of you might have known this). I have highlighted some statements that might important to be concerned when writing our codes.<br /><br />You can find the complete standard in Programming Standards.doc.<br /><br />... Some paragraphs has been deleted...<br /><br />By reading this, I become more realized that even comments in code have a standard for our client. Overall, I think to follow this standard there is no other way except trying to follow them when writing our codes in each task (And I am still trying to do so).<br /><br />Any input, please welcome.<br /><br />Regards,<br /><br />-imsuryawan-</blockquote>Above, was my email a couple days ago to all team members about code comments. Yes, I know this is an old topics for the one who have been involved in Programming for long years. But, still... for a newcomers, this is a very good stuff to know.<br /><br />I remember when I was at the first time involved in a professional team who worked as an outsourced Software Engineers for a well known company in Australia, that code comments is very important. My senior who was being my code reviewer, writes a huge bunch notes about my comments. That time I was thinking, "Man, this is just a comment. The compiler will never care about them! So, what's wrong with this?". Hahaha... Please understand, I was still a Junior SE that time. :D<br /><br />Now, I am a senior programmer in a different outsourced team for the same client. After reading the Programming Standard I become more realized that event code comments are a very important thing to be concerned, so they write them in the document.<br /><br />I am sorry that I can not tell you what the rules in the document are. Overall, most of the item written in the document is a common rule when writing code comment. There are so many articles on the net about how to write a good code comment. <a href="http://www.devtopics.com/13-tips-to-comment-your-code/">This one</a> is a good reference for you. Other source maybe by reading <a href="http://cc2e.com/">Code Complete by Steve McConnel</a> - which discussing how to create a self documenting codes in chapter 32.<br /><br />So, let's start to write a good comments in our codes. :DUnknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-8737413752288605072008-09-23T09:09:00.000-07:002008-09-23T09:21:48.251-07:00Hello Again!<span class="fullpost">Huah... after couple months of hiatus, now I'm back. Yeap... It has been a busy months lately. Some personal stuffs has made me busy. And ofcourse, the project is getting crazy.</span><br /><br />Yeah, whatever!<br /><br />Btw, I just want to update my blog. No particular topic in this post. Because I was too busy to write an article. hahaha... I know, you may call it lazy. Hehehe... It's tight related each other, though!<br /><br />Btw, I was starting to use Linux again. I used to use Fedora last year. But, Fedora is not for a newbie like me - because to many things to do to make it works as smooth as W*****s, so I uninstalled it from my PC! After searching for several opinions from internet, most of the review told me to use Ubuntu! So, this Ubuntu thing is in my PC right now!<br /><br />Oh yeah! About my project, I'm learning new thing right now. It's called Service Oriented Architecture. This thing has made me so busy for a couple of week. I hope I can write something about this architecture lately. Just ask uncle Google if you want to know about this stuff. I guess this <a href="http://en.wikipedia.org/wiki/Service-oriented_architecture">link</a> is a good start! Just check it out.<span class="fullpost"><br /></span><span class="fullpost"><br />Allright then! Enough for now... Hello again all!<br /><br /></span>Unknownnoreply@blogger.com1tag:blogger.com,1999:blog-484410440292802149.post-6569953420491970752008-06-14T00:35:00.000-07:002008-06-14T01:33:07.030-07:00For Delphi's Scanline Property, in .NET We Use LockBits<span class="fullpost">When I was in college, I used Delphi to do my assignment in Digital Image Processing subject. No particular reason though. It just because Delphi is the most popular tools to be used when working with image manipulation. My senior told me that those tools are quite good to use, because we can do an image manipulation in bit level and accessing the pointer. Since Delphi using Pascal as the core language, and Pascal do support pointer, I think the statement is right. CMIIW.<br /><br />The most important one is that Delphi has a very powerful method to work with image. The method called Scanline. For a brief explanation of this method, just read it <a href="http://www.efg2.com/Lab/ImageProcessing/Scanline.htm">here</a>.<br /><br />Once, a friend asked me about how to implement Delphi's ScanLine when working in .NET. Hmm... that's new to me. As far as I now, there is no such method which have same ability with </span><span class="fullpost">Delphi's ScanLine. Common methods used to work with Image (specifically Bitmap) is Bitmap.GetPixel and Bitmap.SetPixel method. But these methods are extremely slow to be used when working with a huge image.<br /><br />After browsing through uncle Google for a while, I found out that there is a method which can be used when we want to work directly accessing image data in memory. The method is Lockbits. Please refer to <a href="http://www.bobpowell.net/lockingbits.htm">this article</a> for the explanation. The writer has just explain the method in very detail and good way, so I believe you'll understand quickly.<br /><br />Here is an example to do a Grayscale operation with </span><span class="fullpost">Bitmap.GetPixel and Bitmap.SetPixel method.<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 400px; text-align: left;"><br />/// <summary><br />/// Grayscale method<br />/// </summary><br />public void Grayscale()<br />{<br /> int width = _bmp.Size.Width;<br /> int height = _bmp.Size.Height;<br /><br /> for (int heightIdx = 0; heightIdx < height; heightIdx++)<br /> {<br /> for (int widthIdx = 0; widthIdx < width; widthIdx++)<br /> {<br /> Color objImgColor;<br /> objImgColor = _bmp.GetPixel(widthIdx, heightIdx);<br /><br /> int grayScaleBase = (int)((objImgColor.R + objImgColor.G + objImgColor.B) / 3);<br /> Color grayScaleColor;<br /> grayScaleColor = Color.FromArgb(grayScaleBase, grayScaleBase, grayScaleBase);<br /><br /> _bmp.SetPixel(widthIdx, heightIdx, grayScaleColor);<br /> }<br /> }<br />}<br /><br /></pre><br /><br /></span><span class="fullpost">When woring with a large image, the method above is extremely slow. Just try it If you don't believe me. And here is how we implement Lockbits method to do a Grayscale operation on image.<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 600px; text-align: left;"><br />/// <summary><br />/// Grayscale method by using pointer access<br />/// </summary><br />public void SpeedGrayscale()<br />{<br /><br /> // Specify width, height, anf pixel format<br /> int imgWidth = _bmp.Width;<br /> int imgHeight = _bmp.Height;<br /> PixelFormat imgPixFormat = _bmp.PixelFormat;<br /> <br /> // Create BitmapData and Rectangle object, which will be used<br /> // in Lockbits method <br /> BitmapData bmpData = null;<br /> Rectangle rct = new Rectangle(0, 0, imgWidth, imgHeight);<br /><br /> try<br /> {<br /> // We use unsafe keyword, because this is a pointer operation<br /> unsafe<br /> {<br /><br /> //Lockbits = lock bitmap data to memory<br /> bmpData = _bmp.LockBits(rct, ImageLockMode.ReadWrite, imgPixFormat);<br /><br /> byte* row; // Pointer for a bitmap row<br /> byte* rowElement; // Pointer for a pixel<br /> int intGrayscaleValue; // grayscale value for one pixel<br /><br /> // Loop based on image height (y)<br /> for (int y = 0; y < bmpData.Height; y++)<br /> {<br /> // Find starting memory pointer address for each row <br /> row = (byte*)bmpData.Scan0 + (y * bmpData.Stride);<br /><br /> // Loop through the row (x)<br /> for (int x = 0; x < bmpData.Width; x++)<br /> {<br /> rowElement = row + (x * 3); // find the pixel pointer address<br /><br /> intGrayscaleValue = (rowElement[0] + rowElement[1] + rowElement[2]) / 3;<br /><br /> // assign grayscale value for each pixel element<br /> rowElement[0] = (byte)intGrayscaleValue; <br /> rowElement[1] = (byte)intGrayscaleValue; <br /> rowElement[2] = (byte)intGrayscaleValue; <br /> }<br /> }<br /><br /> // Unlock the bitmap from memory<br /> _bmp.UnlockBits(bmpData);<br /> }<br /><br /> }<br /> catch (Exception ex)<br /> {<br /> throw ex;<br /> }<br />}<br /><br /></pre>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-484410440292802149.post-2482158544069724922008-05-16T02:41:00.001-07:002008-05-16T02:50:03.253-07:00Other Old Articles Written By Me<span class="fullpost">It's been almost a month, and I haven't updated this blog yet. Huh! There was a busy month. A lot of work in the office with a huge bunch of tasks with complex specification.<br /><br />Btw, I just want to share links from my primary blog. Yeah! I have written some articles, and putted in my primary blog. Nothing important, but they might helpful for some of you. The articles are:<br /></span><ul><li><a href="http://imsuryawan.net/blog/?p=35">Does Java pass by reference or pass by value?</a></li><li><a href="http://imsuryawan.net/blog/?p=31">Why Java is not a 100% Object Oriented Programming Language?</a></li><li><a href="http://imsuryawan.net/blog/?p=21">Pseudocode matrices operations</a></li></ul>I wrote those articles when I was in Induction Training. The topics may not interest you but, for some people who are really need it, I believe it can give a brighter light. Hopefully! hehehe...<br /><br />So please enjoy.<br /><span class="fullpost"><br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-28707254479712942492008-04-27T05:33:00.000-07:002008-04-27T06:47:59.272-07:00Use DateSerial Function To Avoid Regional Settings Problem In VB.NETThis is based on my experience. I used to construct a date type with from string. The sample code is as follow:<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 70px; text-align: left;"><br />Dim dt As Date = CDate("2/3/2008")<br />MessageBox.Show(dt.ToLongDateString)<br /></pre><br />Hell yeah! I realized now that this is not a good way. When you execute the code above by using Regional Options set to English US - which Short date format in this setting is "mm/dd/yyyy" - you'll get a message box with message "Sunday, February 03, 2008". Comparing the result with Regional Options set to English (Australia) - which the format is "dd/mm/yyyy" - we'll get a message box with message "Sunday, 2 March 2008". Whew! So which date do the code means?<br /><br />Oh, I means February 03, 2008! It's just a date, we can fix it just by changing it, it's not a big deal! Hell yeah! You can just simply change it when we are talking about one or two variable, and a simple program like those "Hello World Style" like above. When we're talking about an enterprise application like e-banking which all reports are based on transaction date, believe me that this style of code will bring you to hell.<br /><br />The simple way to avoid this Regional Options problem, is just get yourself used to construct the datetime variable value by define its day, month, and year value specifically. In .NET you can use DateSerial function.<br /><br />According to msdn this function returns a <b>Date</b> value representing a specified year, month, and day, with the time information set to midnight (00:00:00). The format of this function is as follow:<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 100px; text-align: left;"><br />Public Function DateSerial( _<br /> ByVal [Year] As Integer, _<br /> ByVal [Month] As Integer, _<br /> ByVal [Day] As Integer _<br />) As DateTime<br /></pre><br />So, when you means February 03, 2008, the code above will be as follow:<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 70px; text-align: left;"><br />Dim dt As Date = DateSerial(2008, 2, 3)<br />MessageBox.Show(dt.ToLongDateString)<br /></pre><br />The code above will give you February 03, 2008 in any Regional Options you use!<br /><br />This is a very simple thing to do, but not all realized it's effectiveness (including me, was). But, just by using this kind of simple code behavior will avoid you from a lot of problem caused by Regional Options different from miscalculating reports to unpredictable error in your application.Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-2389369353539394172008-04-15T05:53:00.000-07:002008-12-10T08:30:58.169-08:00MozillaCacheView to Sneak Into Your Mozilla Cache FolderIf you are a Mozilla Firefox user, have you ever check the cache directory. Aha... you might asking, why should you check this directory. Well sometimes you might want to get some files (for example a picture) from a website you've visited but you forget the address. You can check the cache folder, because usually the files you've browsed will stay in this folder for a while (as long as you don't delete them).<br /><br />But, when you look at the folder you might surprised (or maybe get confused), because this folder only contain files, without extension on it. And the file name didn't look like a filename. See the screen shot below.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NtekUckiv4g/SASsKEzBVMI/AAAAAAAAALY/zs0oi_z5JcE/s1600-h/cache+folder.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_NtekUckiv4g/SASsKEzBVMI/AAAAAAAAALY/zs0oi_z5JcE/s320/cache+folder.JPG" alt="" id="BLOGGER_PHOTO_ID_5189461959724061890" border="0" /></a>Well, MozillaCacheView might help you to sneak at this folder. By using this tool you can read files located at this cache folder. It''s really simple. Just open the tool, and it'll work for you. Very exciting. You can also, copy file(s) you want into certain location.<br /><br />This is the screen shot of this tool.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_NtekUckiv4g/SASsg0zBVNI/AAAAAAAAALg/sX7sO8fUa0k/s1600-h/MozillaCacheView.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_NtekUckiv4g/SASsg0zBVNI/AAAAAAAAALg/sX7sO8fUa0k/s320/MozillaCacheView.JPG" alt="" id="BLOGGER_PHOTO_ID_5189462350566085842" border="0" /></a>This tool works for Firefox/Mozilla/Netscape Web browsers. <span class="fullpost">And also the great news is this tools is freeware, so you can download it free. I''m sorry I don't remember the location (and also because this is not an ads), but I believe Uncle Google will tell you better than me! :D<br /><br />Btw, this is the location of cache folder for several browser.<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 100px; text-align: left;"><br />The cache folder of Mozilla Firefox is located under C:\Documents and Settings\[User Name]\Local Settings\Application Data\Mozilla\Firefox\Profiles\[Profile Name]\Cache<br /><br />The cache folder of SeaMonkey is located under C:\Documents and Settings\[User Name]\Local Settings\Application Data\Mozilla\Profiles\[Profile Name]\Cache<br /><br />For other variants of Mozilla, you may find the cache folder under C:\Documents and Settings\[User Name]\Application Data\Mozilla\Profiles\[Profile Name]\Cache</pre></span>Unknownnoreply@blogger.com2tag:blogger.com,1999:blog-484410440292802149.post-74109706173837668792008-04-12T04:33:00.000-07:002008-12-10T08:30:58.401-08:00Spock Beta, The People Search Engine<span class="fullpost">Nowday, internet growing so fast. People from around the world are now connected in this virtual world. People can share and gather information each other in internet through a huge number of service. From social networking, blogs, and many others services.<br /><br />Regarding to this situation, there is a need to find people in internet. For this purpose, we need a good <a href="http://www.spock.com/">people search</a> engine which can give us a valid information about person we would like to search.<br /></span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_NtekUckiv4g/SACijfv2KxI/AAAAAAAAAKw/sCqgAmAsqK4/s1600-h/spock.JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_NtekUckiv4g/SACijfv2KxI/AAAAAAAAAKw/sCqgAmAsqK4/s320/spock.JPG" alt="" id="BLOGGER_PHOTO_ID_5188325501432113938" border="0" /></a><br /><span class="fullpost"><a href="http://www.spock.com/">Spock</a> is a new unique search engine where you can search people by adding their name, email, or even a tag which related to the people you search. </span>When you use this <a href="http://www.spock.com/">people search</a> engine, Spock will personalize your results to include information about friends and colleagues. You can also add and modify information that Spock finds about you on the internet.<br /><br />As I visited this <a href="http://www.spock.com/">people search</a> engine, it is still in beta version. The layout of the index page is very simple. It only contain a text box which allow you include your search term in it. Spock also give you ability to advance your search. In advance mode you can specify your search by adding Name or Email, Gender, Age, Tags, and even Location. Very Interesting!<br /><br />So why not visiting this exciting <a href="http://www.spock.com/">people search</a> engine and try it?Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-70801302502557459712008-04-10T02:11:00.000-07:002008-04-10T02:45:26.944-07:00String Manipulation In .NETI've just realized a fact about string manipulation in .NET framework after read "<a border="0"><span class="b24-booktitle">MCTS Self-Paced Training Kit (Exam 70-536): Microsoft .NET Framework 2.0 Application Development Foundation</span></a><span class="fullpost">" by </span><span class="b24-bookauthor">Tony Northrup, Shawn Wildermuth and Bill Ryan.<br /><br />For you who are an expert in .NET, this might look a common stuff. But, this is new to me. Well, I believe programming is not just about logic and algorithm, but also about knowing the boundaries. So you need to wide your boundaries if you want to solve various problem.<br /><br />Back to the topic, the book said that<br /><blockquote>Strings of type <i class="emphasis">System.String</i> are immutable in .NET. That means any change to a string causes the runtime to create a new string and abandon the old one.<br /></blockquote>So when you want to construct a string as follows (this source is taken from the book too):<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 100px; text-align: left;"><br />string s;<br /><br />s = "wombat"; // "wombat"<br />s += " kangaroo"; // "wombat kangaroo"<br />s += " wallaby"; // "wombat kangaroo wallaby"<br />s += " koala"; // "wombat kangaroo wallaby koala"<br /><br />Console.WriteLine(s);<br /></pre><br /><br />In the end you'll get "wombat kangaroo wallaby koala" printed in the console, but in fact the compiler will create the "temporary strings" in memory before give the result string to you.<br /><br />For a application which only a little string manipulation processes this will not give much trouble. But for application which use a bunch of string manipulations in it, this should be a concern because it can affect perfomance.<br /><br />For the solution, the book suggested us to use StringBuilder. So, the code above will be as follow:<br /><br /><pre style="border: 1px inset ; margin: 0px; padding: 3px; overflow: auto; width: 98%; height: 100px; text-align: left;"><br />System.Text.StringBuilder sb = new System.Text.StringBuilder(30);<br /><br />sb.Append("wombat"); // Build string.<br />sb.Append(" kangaroo");<br />sb.Append(" wallaby");<br />sb.Append(" koala");<br /><br />string s = sb.ToString(); // Copy result to string.<br />Console.WriteLine(s);<br /></pre><br />Hmm...<br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-40333742811438878812008-04-07T03:03:00.000-07:002008-12-10T08:30:58.436-08:00Wordpress.com Engine UpdatedToday, I opened my blog at wordpress.com. The blog is my personal blog at wordpress, but I moved it to my personal domain blog. When I logged in, I was very excited with the new look of its dashboard. Very cool design.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NtekUckiv4g/R_n3TG9kN5I/AAAAAAAAAKo/4F4q4ggDVzM/s1600-h/wp-screenshot..JPG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_NtekUckiv4g/R_n3TG9kN5I/AAAAAAAAAKo/4F4q4ggDVzM/s320/wp-screenshot..JPG" alt="" id="BLOGGER_PHOTO_ID_5186448353552250770" border="0" /></a><br />According into various news I found on the internet, the version of this engine is 2.5. For now, I have no comments for any functionalities its has, because I just want to check if my blog in Wordpress still have visitors (and fortunately it still have visitors, and there was a comment left to be moderated). Huhuhuhu...<br /><span class="fullpost"><br />Hmm... now I'm planning to upgrade my WP engine at my primary blog. :D I hope I can review them when I got it updated. Hopefully... :D<br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-50071621843994544612008-04-03T03:42:00.000-07:002008-04-03T21:38:58.320-07:00What is This Code Means?<span class="fullpost">I was trying to update my blogger template and get this kind of error code bX-</span>xxxxxx. the small x is a random alphabets. As I looked for the answer through Google Search there are no specific answer for this code.<br /><br />Any answer I search only referred me to Google groups discussion which has no answer at all. The discussion only show questions from people who get same problem. And there were no answer at all. I very disappointed.<br /><br />Hah... Google is a great search engine for me, the greatest thought! But why did it failed to give me the correct answer of what exactly was happening. No Idea...Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-47792097542659210562008-04-02T07:41:00.000-07:002008-04-02T07:59:04.413-07:00Bookmark this blog at Mister WongI've just add this blog to <a href="http://www.mister-wong.com/user/imsuryawan">mister-wong.com</a>. It's a social bookmarking website. Some people said that we can increase traffic to our blog by adding our blog/website in a social bookmarking website or blog directory.<br /><br />I've registered <a href="http://imsuryawan.net">my primary blog</a> into some blog directories. As my experience, this gave the blog a some traffic. Although it wasn't that significant but for me it was enough. <br /><br />To get your blog registered in blog directory, sometimes they will ask you to give dem a reciprocal link, and usually it's can be done by adding some code which will show small banner in your web. So, if your blog is registered in a lot of this kind of blog directory, your blog will be fulled by these small banners. But, you can hide them in your footer for example. :D<br /><span class="fullpost"><br />Back to mister-wong. This is a nice social bookmarking site. And because this is a social bookmarking so we don't need to add a reciprocal link in our blog. Just registered yourself and bookmark your blog, and it's all done.<br /><br />The site have a good layout. I love it. And the cool think is you can share your bookmarks with others in a group. You can join any group you want. Very excited.<br /><br />Well, I think I'll try another social bookmarking for now. See yaaaa...<br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-13824854237888232882008-03-31T07:08:00.001-07:002008-04-03T03:54:41.203-07:00Bidvertiser Code Can't Be Added To WordpressI've just tried to add an Bidvertiser ads code to my blog in wordpress. But it failed. After googling for I while, I found that WP doesn't accept any ads code on its page. Too bad, since WP is one of most blog engines used widely.<br /><br />I joined bidvertiser about a week ago. Still a newbie. No specific reason why I choose this ads program. Hmm... One reason is I want to try this online earning world. Some people says that we can get an unlimited earning from it. But I'm not too obsessed with this. I think this is a part of blogging, and because I really like any kind activities related to blog, so I thought there will not gonna be a big deal to try it.<br /><span class="fullpost"><br />The most feature which I like most from this program is because of its low limit earning can be transfered. Bidvertiser will transfer your money, when your earning reach a minimum $10. Really interesting, when compared with another program which give a relatively higher boundaries.<br /><br />So if you are interesting with this program why not start to be a publisher with them. Why don't take a chance to <a href="http://www.bidvertiser.com/bdv/bidvertiser/bdv_ref_publisher.dbm?Ref_Option=pub&Ref_PID=126629">Monetize your Website or Blog with BidVertiser</a>, just by visiting their website and get yourself registered.<br /></span>Unknownnoreply@blogger.com0tag:blogger.com,1999:blog-484410440292802149.post-25026104472242894772008-03-26T00:56:00.000-07:002008-03-26T02:10:43.096-07:00Hello World Again!After adding a post indicating this blog is obselete, now I'm come back to my first home. Yup, this is my first home, but I've been far away from home for a long time since last year. Such a long time thought!<br /><div style="text-align: center;"><a href="http://picasaweb.google.com/imsuryawan/AnotherWebLogOfIMadeSuryawan/photo?authkey=d9FFeKMM50U#5181961564426876738"><img src="http://lh5.google.com/imsuryawan/R-oGlm9kN0I/AAAAAAAAAIg/KpckoIwT9eY/s400/2005-09-09_Hello_World.png" /></a><br /><span style="font-size:85%;">Hello world again...<br /></span><br /></div><br /><br /><span class="fullpost"><br />However I have my primary blog at <a href="http://imsuryawan.net/">http://imsuryawan.net</a>. Visit it if have time. But, those is written in Bahasa Indonesia (my mother language), so for you who are not Indonesian it will be difficult to understand the articles.<br /><br />So why do I decided to post here again? Well, the main consideration is because I want to have an english blog, so I can interact with blogger from other country. Another reason? Don't know yet! Hehehehe...<br /><br />Alright then, please just enjoy my blog. Leave your comment if you like it, and give me some backlink. Hehehe...<br /><br />Cheers...<br /></span>Unknownnoreply@blogger.com0