<?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-1950028186543160992</id><updated>2011-11-28T08:48:51.235+08:00</updated><category term='IBM'/><category term='linux'/><category term='hibernate'/><category term='finance'/><category term='ntfs'/><category term='development'/><category term='interesting'/><category term='microkernel'/><category term='experience'/><category term='streaming'/><category term='links'/><category term='multimedia'/><category term='kde'/><category term='T40'/><category term='minix'/><category term='firefox'/><category term='slackware'/><category term='thinkpad'/><category term='python'/><category term='financial engineering'/><category term='nus'/><category term='network'/><category term='code'/><category term='suspend'/><category term='window manager'/><category term='operating system'/><title type='text'>Journal of Technical Matters</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>34</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-6884996417067811804</id><published>2008-07-18T19:24:00.002+08:00</published><updated>2008-07-18T19:37:15.091+08:00</updated><title type='text'>3d Surface Reconstruction</title><content type='html'>Recent project on 3d surface reconstruction based on calibrated camera and projector using the structured light technique.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_b_960ts6oXg/SICAH4QbKAI/AAAAAAAAAC0/c8fxd2klRqw/s1600-h/warp1.JPG"&gt;&lt;img style="cursor: pointer; width: 291px; height: 320px;" src="http://1.bp.blogspot.com/_b_960ts6oXg/SICAH4QbKAI/AAAAAAAAAC0/c8fxd2klRqw/s320/warp1.JPG" alt="" id="BLOGGER_PHOTO_ID_5224316440598489090" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_b_960ts6oXg/SICAH_1A1SI/AAAAAAAAAC8/9_fKKThhlLs/s1600-h/warp2.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_b_960ts6oXg/SICAH_1A1SI/AAAAAAAAAC8/9_fKKThhlLs/s320/warp2.JPG" alt="" id="BLOGGER_PHOTO_ID_5224316442631001378" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_b_960ts6oXg/SICAIIpvtWI/AAAAAAAAADE/7jDhBmK_uSc/s1600-h/warp3.JPG"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_b_960ts6oXg/SICAIIpvtWI/AAAAAAAAADE/7jDhBmK_uSc/s320/warp3.JPG" alt="" id="BLOGGER_PHOTO_ID_5224316444999660898" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-6884996417067811804?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/6884996417067811804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=6884996417067811804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6884996417067811804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6884996417067811804'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2008/07/3d-surface-reconstruction.html' title='3d Surface Reconstruction'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b_960ts6oXg/SICAH4QbKAI/AAAAAAAAAC0/c8fxd2klRqw/s72-c/warp1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-3827751226628860668</id><published>2007-12-20T14:49:00.000+08:00</published><updated>2007-12-20T14:58:52.189+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='T40'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='thinkpad'/><title type='text'>IBM T40 Internal Modem</title><content type='html'>The driver for the part of internal modem is loadable from snd_intel8x0m module. To create a modem device, download &lt;a href="http://linmodems.technion.ac.il/packages/smartlink/slmodem-2.9.11-20070813.tar.gz"&gt;slmodemd&lt;/a&gt; which creates a node at /dev/ttySL0 for the modem which later can be used for the connection via PPP. Enable alsa mode (README) when installing slmodemd.&lt;br /&gt;To run:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;modprobe snd_intel8x0m&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;slmodemd --alsa hw:1&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-3827751226628860668?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/3827751226628860668/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=3827751226628860668' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3827751226628860668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3827751226628860668'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/12/ibm-t40-internal-modem.html' title='IBM T40 Internal Modem'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-4554804537205862718</id><published>2007-11-24T21:28:00.000+08:00</published><updated>2007-12-03T01:47:33.716+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='financial engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Options delta hedging and volatility arbitrage</title><content type='html'>In &lt;a href="http://en.wikipedia.org/wiki/Option_%28finance%29"&gt;options&lt;/a&gt; theory, delta is one of the &lt;a href="http://en.wikipedia.org/wiki/The_Greeks"&gt;greeks&lt;/a&gt; parameter that defines the sensitivity of the options price to the underlying asset price. Now, if we hold a portfolio consisting of 1 call option and delta number of corresponding stock (underlying asset), we have created a delta neutral portfolio. Theoretically, the price of portfolio is neutral to any small change of the stock price (note, delta is 1st order derivative) and will earn the risk free rate over a very short period of time. This is one of the reasoning that could be used to derive the famous &lt;a href="http://en.wikipedia.org/wiki/Black_Scholes"&gt;Black-Scholes PDE&lt;/a&gt;. The reason that this applies to only small change in both price and time is because there are other parameters that affect the price of the option, namely gamma and theta.Now, gamma is defined as the measure of the rate of change in the delta (2nd order derivative) and theta is the measure of price sensitivity to the passage of time, thereby they explain the small change constraint.&lt;br /&gt;Mathematically, for call option (european in particular), delta is defined as:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_b_960ts6oXg/R0gxM5pYRZI/AAAAAAAAAB8/ADiu8lc5xs0/s1600-h/delta.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136409472718620050" style="" alt="" src="http://2.bp.blogspot.com/_b_960ts6oXg/R0gxM5pYRZI/AAAAAAAAAB8/ADiu8lc5xs0/s320/delta.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;where c is the call option price, and S is the current stock price, N(d1) is the &lt;a href="http://en.wikipedia.org/wiki/Cumulative_distribution_function"&gt;cdf&lt;/a&gt; of standard normal distribution defined within 0 and 1. The figure below will explain the delta concept.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_b_960ts6oXg/R0g5V5pYRbI/AAAAAAAAACM/RAd8K8iwar4/s1600-h/priceanddelta.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136418423430464946" style="" alt="" src="http://2.bp.blogspot.com/_b_960ts6oXg/R0g5V5pYRbI/AAAAAAAAACM/RAd8K8iwar4/s320/priceanddelta.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The figure shows the call price with respect to the corresponding stock price. As we can see, the red line shows the slope of the curve at one particular stock price. This the delta of the call price at that particular stock price. Above that point, the call price increases at a greater rate than the stock price, and below that point the call price decreases at a slower rate. This is defined by the gamma parameter of the option, i.e. the rate of change of delta.&lt;br /&gt;Now, here comes the interesting part, looking at the curve, one might wonder if there is an exploit such that under volatile market, profit could be earned irrespective of the direction of stock price with no initial investment at all (free lunch and/or arbitrage). Well, there is actually, I believe this is the so-called volatility arbitrage. This is done, again, by setting a portfolio consisting of long call and short delta number of stock price, as explained in the beginning.&lt;br /&gt;Now, let's do some matlab simulations. The code for the simulation is given below:&lt;br /&gt;&lt;blockquote&gt;function value = voltrade(S0,X,r,mu,t,sig,steps,NoPaths)&lt;br /&gt;dt = t/steps;&lt;br /&gt;drift = (mu - 0.5 * sig ^ 2) * dt;&lt;br /&gt;vol = sig * sqrt(dt);&lt;br /&gt;[price, delta, gamma] = tri_Eprice(S0, X, r, t, steps, sig, 0, 1);&lt;br /&gt;Z = [zeros(NoPaths, 1) normrnd(drift, vol, NoPaths, steps)];&lt;br /&gt;Z = (cumsum (Z'))';&lt;br /&gt;S = S0*exp(Z);&lt;br /&gt;ttm= [ones(NoPaths, steps) * dt];&lt;br /&gt;ttm = cumsum (ttm')';&lt;br /&gt;flipttm = [fliplr(ttm) (zeros(NoPaths, 1)+0.0000001)];&lt;br /&gt;ttm = [(zeros(NoPaths, 1)+0.0000001) ttm];&lt;br /&gt;callprice = blackscholes(S, X, r, flipttm, sig, 0) .* exp(-r.*ttm);&lt;br /&gt;Sp = S .* exp(-r.*ttm);&lt;br /&gt;value = mean(callprice - callprice(1,1) + (S0 - Sp) * delta);&lt;br /&gt;subplot (2,1,1);&lt;br /&gt;plot (value);&lt;br /&gt;xlabel ('time step');&lt;br /&gt;ylabel ('portfolio return');&lt;br /&gt;subplot (2,1,2);&lt;br /&gt;plot (mean(S));&lt;br /&gt;xlabel ('time step');&lt;br /&gt;ylabel ('stock price');&lt;br /&gt;&lt;/blockquote&gt;Note, the above function will call some external functions that are not defined here. Anyway, the objective of the function is to generate &lt;a href="http://en.wikipedia.org/wiki/Monte_Carlo_method"&gt;Monte Carlo&lt;/a&gt; simulation of stock prices, and at each time step to find the corresponding call option price, and also then to find the return of portfolio based on longing one call option and shorting delta number of stock. The function parameters are : S0 (current stock price), X (call option exercise price), r (risk free rate), mu (expected stock return), t (time to maturity), sig (volatility of stock), steps (number of delta t), and NoPaths (number of paths for Monte Carlo simulation).&lt;br /&gt;Anyway, let's just run the function, first let's see what happen when the expected stock return, mu, is set to 30 % (which is set to be large enough to provide a greater certainty of large positive return, as the simulation doesn't really involve change in volatility parameter in order to explain the concept)&lt;br /&gt;&lt;blockquote&gt;voltrade (50,50,0.05,0.3,0.5,0.4,1000,1000);&lt;br /&gt;&lt;/blockquote&gt;The return of the portfolio would look as below:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_b_960ts6oXg/R0hCbppYRcI/AAAAAAAAACU/sfs3h05XEhE/s1600-h/portfolioPosmu.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136428417819362754" style="" alt="" src="http://1.bp.blogspot.com/_b_960ts6oXg/R0hCbppYRcI/AAAAAAAAACU/sfs3h05XEhE/s320/portfolioPosmu.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see, the portfolio, will generate an "&lt;em&gt;expected"&lt;/em&gt; positive return of approx. $ 0.8 after 6 months with zero initial investment. It is &lt;em&gt;"expected"&lt;/em&gt; because, well, it's only a simulation based on Monte Carlo, which is then based on random numbers generated from certain distribution (lognormal) that is assumed to mimic certain parameters of stock price (there are a lot of assumptions here, this is finance, talking mostly about uncertainty).&lt;br /&gt;Ok, now, let's see what happen if the stock generate an expected negative return (setting mu to -30%):&lt;br /&gt;&lt;blockquote&gt;voltrade (50,50,0.05,-0.3,0.5,0.4,1000,1000);&lt;br /&gt;&lt;/blockquote&gt;The result:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_b_960ts6oXg/R0hD4ppYRdI/AAAAAAAAACc/nDc2X5miMYM/s1600-h/portfolionegmu.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136430015547196882" style="" alt="" src="http://1.bp.blogspot.com/_b_960ts6oXg/R0hD4ppYRdI/AAAAAAAAACc/nDc2X5miMYM/s320/portfolionegmu.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As we can readily see, the &lt;em&gt;expected&lt;/em&gt; portfolio return is positive even when the stock price declines within the period to maturity. Again, this is done with no initial investment at all (well, except the transaction costs).&lt;br /&gt;Now, what if we set the expected stock return to 0:&lt;br /&gt;&lt;blockquote&gt;voltrade (50,50,0.05,0.0,0.5,0.4,1000,1000);&lt;br /&gt;&lt;/blockquote&gt;&lt;a href="http://2.bp.blogspot.com/_b_960ts6oXg/R0hFT5pYRfI/AAAAAAAAACs/kC3FP9c1MdU/s1600-h/portfolio0mu.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5136431583210259954" style="" alt="" src="http://2.bp.blogspot.com/_b_960ts6oXg/R0hFT5pYRfI/AAAAAAAAACs/kC3FP9c1MdU/s320/portfolio0mu.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Well, can't really see anything here but as the expected stock return follows a &lt;a href="http://en.wikipedia.org/wiki/Generalized_Wiener_process"&gt;generalized Wiener process&lt;/a&gt;, there is always a probability of large change in price even though mu is set to zero. We could rerun the simulation over and over again and once in a while (lots of while, depends on volatility) the stock will change drastically, either up or down, and the option price will increase correspondingly (in real life, this is the right time to close the portfolio). This is more easily said than done in real life though (can't redo). Note, the simulation above doesn't really involve changes in volatility parameter. Hence, by incorporating an increase in volatility in between the time steps to maturity, the option price will generally increase, even though we set mu to zero. Hence, this strategy will perform well when the current implied volatility is low, and the investor expects that the volatility will increase considerably in the near future. The consideration for sensitivity of the option price with respect to volatility is set by the option greek parameter &lt;a href="http://en.wikipedia.org/wiki/Greeks_%28finance%29"&gt;vega&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;The above explanation and implementation are flawed, refer to &lt;a href="http://ihedge.wordpress.com/2007/05/16/kontrak-opsi-options-untung-tak-terhingga-rugi-sedikit-pikirkan-lagi/#comment-1914"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-4554804537205862718?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/4554804537205862718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=4554804537205862718' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4554804537205862718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4554804537205862718'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/11/options-delta-hedging-and-volatility.html' title='Options delta hedging and volatility arbitrage'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b_960ts6oXg/R0gxM5pYRZI/AAAAAAAAAB8/ADiu8lc5xs0/s72-c/delta.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-3985053002935011273</id><published>2007-11-18T16:22:00.000+08:00</published><updated>2007-11-18T16:45:42.150+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Remote Desktop via Xming</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;a href="http://en.wikipedia.org/wiki/Xming"&gt;Xming &lt;/a&gt;is a &lt;a title="Porting" href="http://en.wikipedia.org/wiki/Porting"&gt;port&lt;/a&gt; of the &lt;a title="X Window System" href="http://en.wikipedia.org/wiki/X_Window_System"&gt;X Window System&lt;/a&gt; to the &lt;a title="Microsoft Windows" href="http://en.wikipedia.org/wiki/Microsoft_Windows"&gt;Microsoft Windows&lt;/a&gt; operating system. Basically, it runs an X Server on your Windows machine, and client application can be run on the remote Linux machine (LM) and displayed on your Windows machine (WM).&lt;/div&gt;&lt;br /&gt;&lt;div&gt;To use it, you'll have to install Xming and putty on WM. Now run Xming X Server on localhost:0.0. Then, use Putty to connect to LM, and don't forget to enable X11 forwarding as shown below.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/_b_960ts6oXg/Rz_4vZpYRWI/AAAAAAAAABk/hp3Ae5yrG3s/s1600-h/puttyX11forward.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5134095593447638370" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_b_960ts6oXg/Rz_4vZpYRWI/AAAAAAAAABk/hp3Ae5yrG3s/s320/puttyX11forward.JPG" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Most probably, X11 forwarding is not enabled on your LM ssh daemon. So change&lt;strong&gt; /etc/ssh/sshd_config &lt;/strong&gt;to include:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;X11Forwarding yes&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;X11DisplayOffset 10&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;X11UseLocalhost yes&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;And, restart sshd&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;/etc/rc.d/rc.sshd restart&lt;/strong&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;/strong&gt;Now, you'll need to re-ssh to LM using Putty. Check the event log ensure that "X11 forwarding enabled" is there and on the terminal type &lt;strong&gt;&lt;em&gt;echo $DISPLAY&lt;/em&gt;&lt;/strong&gt; whether it's been set by Putty. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;Well, that be it. I ran konqueror, and the result is as shown below. &lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_b_960ts6oXg/Rz_7g5pYRYI/AAAAAAAAAB0/8N1bRy4wn2A/s1600-h/konqueror.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5134098642874418562" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_b_960ts6oXg/Rz_7g5pYRYI/AAAAAAAAAB0/8N1bRy4wn2A/s320/konqueror.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-3985053002935011273?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/3985053002935011273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=3985053002935011273' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3985053002935011273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3985053002935011273'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/11/remote-desktop-via-xming.html' title='Remote Desktop via Xming'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b_960ts6oXg/Rz_4vZpYRWI/AAAAAAAAABk/hp3Ae5yrG3s/s72-c/puttyX11forward.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-7642515852872107059</id><published>2007-11-17T18:39:00.000+08:00</published><updated>2007-11-17T19:10:35.505+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Remote Desktop to your home Linux PC via tightVNC</title><content type='html'>&lt;a href="http://www.tightvnc.com/"&gt;TightVNC&lt;/a&gt; is a free remote control software package derived from the popular &lt;a href="http://www.realvnc.com/"&gt;VNC&lt;/a&gt; software. Download and install in the Linux PC &lt;a href="http://downloads.sourceforge.net/vnc-tight/tightvnc-1.3.9_unixsrc.tar.bz2"&gt;here&lt;/a&gt;. It works in a client server manner where the server is the Linux home PC and the client is the PC from where you want to connect to the server to get the desktop of it. It's insecure as it doesn't contain any encryption apart from the initial user acknowledgment password. Hence, to make it secure we have to use use SSH tunneling. More info &lt;a href="http://www.tjansson.dk/?p=49"&gt;here&lt;/a&gt; and &lt;a href="http://wheatstraw.is-a-geek.org/VNC%20through%20SSH%20Tunneling.html"&gt;here&lt;/a&gt;. If the home server is firewalled or connected to the outside world via a router, don't forget to enable port forwarding.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_b_960ts6oXg/Rz7IdppYRUI/AAAAAAAAABU/UCIj2z1pY0Q/s1600-h/prex2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://3.bp.blogspot.com/_b_960ts6oXg/Rz7IdppYRUI/AAAAAAAAABU/UCIj2z1pY0Q/s320/prex2.jpg" alt="" id="BLOGGER_PHOTO_ID_5133761036970116418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;In the snapshot above, all connection to port 22 on the router is forwarded to the IP address of the server.&lt;br /&gt;To connect from the client PC, we have to connect to the external IP address of the router. Check your router IP &lt;a href="http://whatismyipaddress.com/"&gt;here&lt;/a&gt;. The next step is to download putty and vncviewer client from &lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/download.html"&gt;here&lt;/a&gt; and&lt;a href="http://downloads.sourceforge.net/vnc-tight/tightvnc-1.3.9_x86_viewer.zip"&gt; here&lt;/a&gt;. These are the executables that you want to run from the client PC, and no installation is needed at all. Run Putty with tunneling, and forward client port e.g. 5901 to server port. Next, run the vncviewer client. Sample run would be like below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_b_960ts6oXg/Rz7Kz5pYRVI/AAAAAAAAABc/JGn1uINEclE/s1600-h/prex2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://4.bp.blogspot.com/_b_960ts6oXg/Rz7Kz5pYRVI/AAAAAAAAABc/JGn1uINEclE/s320/prex2.jpg" alt="" id="BLOGGER_PHOTO_ID_5133763618245461330" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Note: ssh tunneling makes the implementation rather slow, as it requires encryption and decryption, thereby bandwidth conservation is required. For example in the server I would run with the command : &lt;span style="font-weight: bold; font-style: italic;"&gt;vncserver -geometry 800x600 depth 16 :01&lt;/span&gt;&lt;br /&gt;and&lt;span style="font-style: italic;"&gt; ~/.vnc/xstartup&lt;/span&gt; would look like below (it's the default actually, note the twm window manager is chosen):&lt;br /&gt;&lt;blockquote&gt;xrdb $HOME/.Xresources&lt;br /&gt;xsetroot -solid grey&lt;br /&gt;xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &amp;amp;&lt;br /&gt;twm &amp;amp;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-7642515852872107059?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/7642515852872107059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=7642515852872107059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/7642515852872107059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/7642515852872107059'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/11/remote-desktop-to-your-home-linux-pc.html' title='Remote Desktop to your home Linux PC via tightVNC'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_b_960ts6oXg/Rz7IdppYRUI/AAAAAAAAABU/UCIj2z1pY0Q/s72-c/prex2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-8878469918270795108</id><published>2007-11-11T21:07:00.000+08:00</published><updated>2007-11-12T00:29:38.225+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Random number challenge</title><content type='html'>I read a blog &lt;a href="http://ariya.blogspot.com/2007/11/random-number-15-to-17.html"&gt;post&lt;/a&gt; by Ariya Hidayat on a challenge to generate discrete integer random number 1..7 given a function that is able to generate random numbers (discrete integer) 1..5. This is my answer from the computer engineering point of view:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;int r,x;&lt;br /&gt;do{&lt;br /&gt;do{&lt;br /&gt;r = rand5(); &lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;&lt;br /&gt;if (r &gt; 2 &amp;amp;&amp;amp; r &lt;= 4) x = rand5() + 5; &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;else if (r &lt;= 2) x = rand5(); &lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;}&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;while (r &gt; 4);&lt;br /&gt;}while (x &gt; 7);&lt;br /&gt;return x; &lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;This answer is actually a bad one, at least compared to Ariya's answer in the sense that the probability that a call to this function will generate the respective random number directly without involving the loop is really low. Huh ?!?!? Okay, basically let me say that the inner loop will generate hit 80 % of the time. Why? Because there are 5 possibilities, and 4 of them are used to generate discrete integer random number 1..10 while 1 is deliberately ignored. Meanwhile, the outer loop will obviously generate 70 % hit. So, in the end the code will be effective 56 % (as in 80 % x 70 %, right ?) of the time without involving any loop. Actually, I think Ariya's answers are some of the most efficient implementations possible, especially the first one, hehe. Had I seen the challenge earlier, I wouldn't have been able to generate an implementation of the same quality, it would be so so like the above :(.&lt;br /&gt;Now, let's take a glimpse from the mathematical point of view. If you've taken at least one math subject in your undergrad, I believe you should have heard of this term called &lt;a href="http://en.wikipedia.org/wiki/Central_limit_theorem"&gt;central limit theorem&lt;/a&gt;. Huh?!? what's that?!? hehe, read &lt;a href="http://en.wikipedia.org/wiki/Central_limit_theorem"&gt;here&lt;/a&gt;. I only know the basic. Basically, if you sum up m random numbers of the same property(mean, variance, etc) you'll end up with a random number with the property of normal distribution with mean m times the original mean and with variance m times the the original mean. So now, you have the ability to generate random number 1..5, and from this you're able to get some normally distributed random numbers, what's next? First, let's see the code to generate rand5 (implemented in matlab for laziness reason).&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;&lt;em&gt;function r = rand5(m,n)&lt;br /&gt;r = floor(5 * rand(m,n) + 1); &lt;/em&gt;&lt;/strong&gt;&lt;/blockquote&gt;This code will generate a matrix of m row and n column of discrete random numbers. Let's see the code to generate rand7.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;strong&gt;&lt;em&gt;function r = rand7(n)&lt;br /&gt;m = 1000;&lt;br /&gt;sig = sqrt(2);&lt;br /&gt;mu = 3;&lt;br /&gt;temp = sum(rand5(m,n));&lt;br /&gt;zn = (temp - m * mu)/(sig * sqrt(m));&lt;br /&gt;x=0.5*erfc(-zn/sqrt(2));&lt;br /&gt;r = floor(mod(x*70,7))+1;&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/blockquote&gt;The code above will generate a vector of n discrete random numbers 1..7.&lt;br /&gt;So, how it works? The sig variable is obviously the &lt;a href="http://en.wikipedia.org/wiki/Standard_deviation"&gt;standard deviation&lt;/a&gt; (sqrt of variance) of the random number generated by rand5, while mu is the mean of it which is 3 (correct? (1 + 2 + 3 + 4 + 5)/5 = ?). Now we call the rand5 to generate m by n matrix of it and sum it column by column, hence we get a vector of m number of rows and put it to variable temp. I put m to 1000 here(I know it s*cks and too large and not practical, but my purpose here is to learn something rite :p) such that it is large enough to generate a normal distribution with mean m * mu and standard deviation sig * sqrt(m). The next step is to convert it to standard normal distribution random number zn with mean 0 and standard deviation 1. Finally, convert it to uniform distribution by virtue of standard normal distribution &lt;a href="http://en.wikipedia.org/wiki/Cumulative_distribution_function"&gt;cumulative distribution function&lt;/a&gt;(cdf). Again, another uncommon name. Well, basically in the program sense, cdf(x) gives the probabilty (from 0 to 1 obviously) that a random number generator will generate random number less or equal than x with some distribution (normal here) property. So here we get a uniform distribution which seems continous from 0 to 1 but actually it's discrete (and depends on m{that's why the larger the better, as I've told you}). The next step is trivial and obvious.&lt;br /&gt;Now, by calling rand7 function so many times, we are able to generate so many random numbers that we could get a histogram of them. First, let's see the histogram of zn.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_b_960ts6oXg/RzcL_UxriGI/AAAAAAAAABE/NL-Ruq4Oc8U/s1600-h/zn.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5131583482948716642" style="" alt="" src="http://2.bp.blogspot.com/_b_960ts6oXg/RzcL_UxriGI/AAAAAAAAABE/NL-Ruq4Oc8U/s320/zn.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As we can see, it is indeed normally distributed with mean 0 (obvious) and variance 1 (unless you're a statistic professor you can't readily see it).&lt;br /&gt; Now, let's check the histogram of rand7.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_b_960ts6oXg/RzcMxExriHI/AAAAAAAAABM/eKq74x1lkIY/s1600-h/rand7.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5131584337647208562" style="" alt="" src="http://1.bp.blogspot.com/_b_960ts6oXg/RzcMxExriHI/AAAAAAAAABM/eKq74x1lkIY/s320/rand7.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;As we can, not so obviously, see, it is indeed uniformly distributed with discrete integer state 1..7. Cool huh !?! Well, that's about it.&lt;br /&gt;Anyway, this method will make you look knowledgeable and yet at the same time stupid and dumb (because of redundancy and not much logic in it) in front of your interviewer and in the end it's not fun at all as you couldn't "tease" your interviewer with it and it's actually not "harmless" if you don't code in matlab as it requires some matrix and vector optimization to speed up your code in such large numbers of array manipulation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-8878469918270795108?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/8878469918270795108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=8878469918270795108' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/8878469918270795108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/8878469918270795108'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/11/random-number-challenge.html' title='Random number challenge'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_b_960ts6oXg/RzcL_UxriGI/AAAAAAAAABE/NL-Ruq4Oc8U/s72-c/zn.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-9151274491914201982</id><published>2007-10-30T23:38:00.000+08:00</published><updated>2007-12-03T01:55:28.503+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Must Watch Movies 2007</title><content type='html'>&lt;a href="http://www.imdb.com/title/tt0427470/"&gt;The Lookout&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0478311/"&gt;Knocked Up&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0490204/"&gt;Reign Over Me&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0425112/"&gt;Hot Fuzz&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0440963/"&gt;Bourne Ultimatum&lt;/a&gt;&lt;br /&gt;&lt;a href="http://imdb.com/title/tt0822854/"&gt;Shooter&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0448134/"&gt;Sunshine&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0795368/"&gt;Death at a Funeral&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0450385/"&gt;1408&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0438315/"&gt;The Peaceful Warrior&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.imdb.com/title/tt0446755/"&gt;The Painted Veil&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-9151274491914201982?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/9151274491914201982/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=9151274491914201982' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/9151274491914201982'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/9151274491914201982'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/must-watch-movies-2007.html' title='Must Watch Movies 2007'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-7793000806524471795</id><published>2007-10-28T22:06:00.000+08:00</published><updated>2007-10-28T22:33:00.164+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Laptop HDD bug</title><content type='html'>There have been issues on broken HDD on laptop with the recent Ubuntu release installed. Basically it's related to APM feature (which might be specific to the BIOS) whereby the head is retracted when it is on idle state. It is solved by setting off the APM: &lt;span style="font-size:85%;"&gt;hdparm -B 255 /dev/hda1&lt;/span&gt;. More infos:&lt;br /&gt;&lt;a href="http://paul.luon.net/journal/hacking/BrokenHDDs.html"&gt;http://paul.luon.net/journal/hacking/BrokenHDDs.html&lt;/a&gt;&lt;br /&gt;&lt;a href="https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695"&gt;https://bugs.launchpad.net/ubuntu/+source/acpi-support/+bug/59695&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ubuntudemon.wordpress.com/2007/10/26/laptop-hardrive-killer-bug/"&gt;http://ubuntudemon.wordpress.com/2007/10/26/laptop-hardrive-killer-bug/&lt;/a&gt;&lt;br /&gt;I've created a script using Python to check the load cycle count of your hdd and whether it has increased by 90 on a daily basis. There is not much comment, apart from the beginning lines and I don't intend to add any more comments on it.&lt;br /&gt;To use it, you'll have to run it at least twice. The first time, it will create a timestamp and save the initial load cycle count of your hard drives. The next time, preferably after several hours (or days), it'll check on whether the load cycle has increased by a significant number (90 cycles on a daily basis) and let you know if it has. That simple, cool (or useless) huh !&lt;br /&gt;&lt;blockquote style="font-family: arial;"&gt;&lt;span style="font-size:85%;"&gt;# The script is used to check whether harddrive load cycle count has increased by 90 cycles&lt;br /&gt;# on a daily basis (24 hour)&lt;br /&gt;# it doesn't run as a daemon&lt;br /&gt;# to run : python hdcheck.py&lt;br /&gt;# it will create 2 files:&lt;br /&gt;# -timestamp.dat is used to check the delta time since the first run&lt;br /&gt;# -lcc.dat is used to check the increase in load cycle count&lt;br /&gt;# The next time you run it, it will check the current load cycle count and do the calculation&lt;br /&gt;# To start anew delete those 2 files, and rerun&lt;br /&gt;# GAH_2007&lt;br /&gt;&lt;br /&gt;import re&lt;br /&gt;import os&lt;br /&gt;import time&lt;br /&gt;import datetime&lt;br /&gt;import cPickle&lt;br /&gt;&lt;br /&gt;put, get = os.popen4("df")&lt;br /&gt;dev = []&lt;br /&gt;current_lcc = {}&lt;br /&gt;for dfout in get.readlines():&lt;br /&gt;    p = re.compile("/dev/\w\w\w[1-9]")&lt;br /&gt;    m = p.match(dfout)&lt;br /&gt;    if m:&lt;br /&gt;        dev.append(m.group())&lt;br /&gt;for ent in dev:&lt;br /&gt;    put, get = os.popen4 ("smartctl -a "+ent+ "| grep Load_Cycle_Count")&lt;br /&gt;    for smartctlout in get.readlines():&lt;br /&gt;        p = re.compile("\d*\n")&lt;br /&gt;        m = p.findall(smartctlout)&lt;br /&gt;        p = re.compile("\d*")&lt;br /&gt;        n = p.match(m[0])&lt;br /&gt;        if n:&lt;br /&gt;            current_lcc[ent] = n.group()       &lt;br /&gt;time = time.mktime(datetime.datetime.now().timetuple())/3600.0&lt;br /&gt;delta_time = 0&lt;br /&gt;try:&lt;br /&gt;    f = open ("timestamp.dat", "r")&lt;br /&gt;    timestamp = cPickle.load(f)&lt;br /&gt;    f.close()&lt;br /&gt;    delta_time = time - timestamp&lt;br /&gt;except:&lt;br /&gt;    timestamp = 0&lt;br /&gt;if (timestamp):&lt;br /&gt;    print "Time since the first run is", delta_time, "hour"&lt;br /&gt;else:&lt;br /&gt;    try:&lt;br /&gt;        f = open ("timestamp.dat", "w")&lt;br /&gt;        cPickle.dump(time, f)&lt;br /&gt;        f.close()&lt;br /&gt;    except:&lt;br /&gt;        print "unable to save timestamp"&lt;br /&gt;       &lt;br /&gt;try:&lt;br /&gt;    f = open ("lcc.dat", "r")&lt;br /&gt;    previous_lcc = cPickle.load(f)&lt;br /&gt;    f.close()&lt;br /&gt;    lcc_increase = {}&lt;br /&gt;except:&lt;br /&gt;    previous_lcc = 0&lt;br /&gt;   &lt;br /&gt;if (previous_lcc):&lt;br /&gt;    for dev in current_lcc.keys():&lt;br /&gt;        lcc_increase[dev] = eval(current_lcc[dev]) - eval(previous_lcc[dev])&lt;br /&gt;else:&lt;br /&gt;    try:&lt;br /&gt;        f = open ("lcc.dat", "w")&lt;br /&gt;        cPickle.dump(current_lcc, f)&lt;br /&gt;        f.close()&lt;br /&gt;    except:&lt;br /&gt;        print "unable to save current load cycle count data"&lt;br /&gt;&lt;br /&gt;if (timestamp and previous_lcc):&lt;br /&gt;    for dev in current_lcc.keys():&lt;br /&gt;        lcc_increase_daily = lcc_increase[dev] * 24.0 / delta_time&lt;br /&gt;        print dev + " load cycle count increases by "+ str(lcc_increase[dev])+ " cycles("+str(lcc_increase_daily)+" on daily basis)"&lt;br /&gt;        if (lcc_increase_daily &gt; 90):&lt;br /&gt;            print "    Load cycle count increase by more than 90 !!"&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-7793000806524471795?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/7793000806524471795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=7793000806524471795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/7793000806524471795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/7793000806524471795'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/laptop-hdd-bug.html' title='Laptop HDD bug'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-899444067841060004</id><published>2007-10-23T08:20:00.000+08:00</published><updated>2007-10-27T17:54:07.487+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Links on OS development</title><content type='html'>Assembly Tutorial on Protected Mode:&lt;br /&gt;&lt;a href="http://my.execpc.com/CE/AC/geezer/os/pm.htm"&gt;http://my.execpc.com/CE/AC/geezer/os/pm.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.faqs.org/faqs/assembly-language/x86/general/part1/section-13.html"&gt;http://www.faqs.org/faqs/assembly-language/x86/general/part1/section-13.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://x86.ddj.com/articles/pmbasics/tspec_a1_doc.htm"&gt;http://x86.ddj.com/articles/pmbasics/tspec_a1_doc.htm&lt;/a&gt;&lt;br /&gt;&lt;a href="http://members.tripod.com/protected_mode/prashant/protmode.html"&gt;http://members.tripod.com/protected_mode/prashant/protmode.html&lt;/a&gt;&lt;br /&gt;OS Development:&lt;br /&gt;&lt;a href="http://www.azillionmonkeys.com/qed/tech.shtml"&gt;http://www.azillionmonkeys.com/qed/tech.shtml&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.osdev.org/osfaq2/"&gt;http://www.osdev.org/osfaq2/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nondot.org/sabre/os/articles"&gt;http://www.nondot.org/sabre/os/articles&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.nondot.org/sabre/os/files/Misc/vade.mecum.2.pdf"&gt;http://www.nondot.org/sabre/os/files/Misc/vade.mecum.2.pdf&lt;/a&gt;&lt;br /&gt;&lt;a href="http://users.evtek.fi/%7Etk/rt_html/TOUR.HTM"&gt;http://users.evtek.fi/~tk/rt_html/TOUR.HTM&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.osdever.net/bkerndev/index.php"&gt;http://www.osdever.net/bkerndev/index.php&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.osdever.net/tutorials/brunmar/tutorial_01.php"&gt;http://www.osdever.net/tutorials/brunmar/tutorial_01.php&lt;/a&gt;&lt;br /&gt;On executable file (ELF):&lt;br /&gt;&lt;a href="http://www.linuxjournal.com/article/1059"&gt;http://www.linuxjournal.com/article/1059&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linuxjournal.com/article/1060"&gt;http://www.linuxjournal.com/article/1060&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linuxforums.org/misc/understanding_elf_using_readelf_and_objdump.html"&gt;http://www.linuxforums.org/misc/understanding_elf_using_readelf_and_objdump.html&lt;/a&gt;&lt;br /&gt;The best FAQ on OS development:&lt;br /&gt;&lt;a href="http://my.execpc.com/%7Egeezer/temp/qna.txt"&gt;http://my.execpc.com/~geezer/temp/qna.txt&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-899444067841060004?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/899444067841060004/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=899444067841060004' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/899444067841060004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/899444067841060004'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/links-on-os-development.html' title='Links on OS development'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-413355201618404342</id><published>2007-10-19T09:14:00.000+08:00</published><updated>2007-10-20T01:24:40.413+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Updating slackware, tips and tricks</title><content type='html'>&lt;a href="http://slackware.wordpress.com/2006/09/26/slackware-changelog-september-26th/"&gt;http://slackware.wordpress.com/2006/09/26/slackware-changelog-september-26th/&lt;/a&gt;&lt;br /&gt;Tips and tricks (actually, more of like some useful information):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Since I'm using tcsh as the default shell, just a reminder, instead of modifying /etc/profile, I should modify /etc/csh.login. Then from the shell, run "tcsh -l".&lt;/li&gt;&lt;li&gt;Azureus is a Java based Bittorrent client. Have been using it for a while as I was unable to install the Bittorrent client. Too much dependencies, I just couldn't resolve the wxPython one (not geeky enough, I guess :P). That's probably one of the problems faced by the user when they try to install Python based program.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;XFCE is a lightweight desktop environment. Some &lt;a href="http://www.xfce.org/about/screenshots"&gt;screenshots&lt;/a&gt;. I find it pretty neat and, indeed, light.&lt;/li&gt;&lt;li&gt;And &lt;a href="http://septi.tumblr.com/post/16091171"&gt;this&lt;/a&gt; is really funny.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-413355201618404342?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/413355201618404342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=413355201618404342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/413355201618404342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/413355201618404342'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/updating-slackware.html' title='Updating slackware, tips and tricks'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-1003662855555418101</id><published>2007-10-18T23:02:00.000+08:00</published><updated>2007-10-18T23:06:29.519+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>Unrar Slackware package</title><content type='html'>&lt;a href="http://www.rarlab.com/rar/unrar-3.7.5-i486-1.tgz"&gt;http://www.rarlab.com/rar/unrar-3.7.5-i486-1.tgz&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-1003662855555418101?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/1003662855555418101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=1003662855555418101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/1003662855555418101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/1003662855555418101'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/unrar-slackware-package.html' title='Unrar Slackware package'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-6743952039958992758</id><published>2007-10-17T08:46:00.000+08:00</published><updated>2007-10-17T08:47:56.998+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nus'/><category scheme='http://www.blogger.com/atom/ns#' term='network'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Connecting to NUS network via openVPN</title><content type='html'>&lt;a href="http://opensource.nus.edu.sg/wiki/index.php/SoCVPN"&gt;http://opensource.nus.edu.sg/wiki/index.php/SoCVPN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-6743952039958992758?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/6743952039958992758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=6743952039958992758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6743952039958992758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6743952039958992758'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/connecting-to-nus-network-via-openvpn.html' title='Connecting to NUS network via openVPN'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-5394513280162680453</id><published>2007-10-15T16:04:00.000+08:00</published><updated>2007-10-15T16:49:20.174+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microkernel'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Prex - Real Time Embedded OS</title><content type='html'>Designed based on micro kernel architecture, &lt;a href="http://prex.sourceforge.net/"&gt;Prex&lt;/a&gt; is targeted for embedded system application. It also follows the POSIX standard, so many applications can be easily ported to the os environment.&lt;br /&gt;I decided to try it on &lt;a href="http://fabrice.bellard.free.fr/qemu/"&gt;qemu&lt;/a&gt;. The latest stable version is &lt;a href="http://prdownloads.sourceforge.net/prex/prex-0.3.0.i386-pc.img.gz?download"&gt;0.3.0&lt;/a&gt; (floppy image), while the current version is &lt;a href="http://prdownloads.sourceforge.net/prex/prex-0.5.0.tar.gz?download"&gt;0.5.0&lt;/a&gt; (source).&lt;br /&gt;Now, build the 0.5.0 source:&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;tar zxvf prex-0.5.0.tar.gz&lt;br /&gt;cd prex-0.5.0/&lt;br /&gt;./configure --target=i386-pc&lt;br /&gt;make&lt;/blockquote&gt;It will generate an image file 'prexos' in the current directory. The image file is not bootable by qemu. In order to run it via qemu, we have to make use the available floppy image, and replace it with the latest version. Basically, the image file consists of bootsector.bin which is located in the first sector and the prexos image in the root directory. Meaning, we have to replace the prexos image from the latest stable 0.3.0 with the recently compiled 0.5.0.&lt;br /&gt;Now, after extracting prex-0.3.0.i386-pc.img.gz, we get prex-0.3.0.i386-pc.img. As a root, we have to modify /etc/mtools.conf, such that we emulate the image as the DOS a drive:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;blockquote&gt;kedit /etc/mtools.conf &amp;amp;&lt;/blockquote&gt;&lt;/span&gt;Replace&lt;br /&gt;&lt;blockquote&gt;drive a: file="/dev/fd0" exclusive&lt;/blockquote&gt;with&lt;br /&gt;&lt;blockquote&gt;drive a: file="&lt;the directory="" of="" the="" image=""&gt;[directory of the floppy image]/prex&lt;/the&gt;&lt;the directory="" of="" the="" image=""&gt;-0.3.0.i386-pc.img" exclusive&lt;/the&gt;&lt;/blockquote&gt;&lt;the directory="" of="" the="" image=""&gt;Now we replace the older 0.3.0 image with the new one using the mcopy command :&lt;/the&gt;&lt;the directory="" of="" the="" image=""&gt;&lt;/the&gt;&lt;blockquote&gt;&lt;the style="font-style: italic;" directory="" of="" the="" image=""&gt;cd prex-0.5.0/&lt;/the&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;mcopy prexos a:&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;Long file name "prexos" already exists.&lt;br /&gt;a)utorename A)utorename-all r)ename R)ename-all o)verwrite O)verwrite-all&lt;br /&gt;s)kip S)kip-all q)uit (aArRoOsSq):&lt;/blockquote&gt;type o (overwrite).&lt;br /&gt;Now, we're ready to boot the image with the latest kernel version.&lt;br /&gt;&lt;blockquote style="font-style: italic;"&gt;qemu -fda prex-0.3.0.i386-pc.img&lt;/blockquote&gt;Here's a screenshot:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_b_960ts6oXg/RxMmr7AUD7I/AAAAAAAAAA8/4hXsEMHc060/s1600-h/prex1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://1.bp.blogspot.com/_b_960ts6oXg/RxMmr7AUD7I/AAAAAAAAAA8/4hXsEMHc060/s320/prex1.jpg" alt="" id="BLOGGER_PHOTO_ID_5121479737265622962" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-5394513280162680453?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/5394513280162680453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=5394513280162680453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/5394513280162680453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/5394513280162680453'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/prex-real-time-embedded-os.html' title='Prex - Real Time Embedded OS'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b_960ts6oXg/RxMmr7AUD7I/AAAAAAAAAA8/4hXsEMHc060/s72-c/prex1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-2061471417201197642</id><published>2007-10-15T02:27:00.000+08:00</published><updated>2007-10-15T02:34:09.902+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microkernel'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><category scheme='http://www.blogger.com/atom/ns#' term='minix'/><title type='text'>Andy Tanenbaum, Presentation and Interview</title><content type='html'>&lt;a href="http://de.sevenload.com/videos/DqzIRi2/Andrew-Tanenbaum-Design-of-microkernel-OS"&gt;http://de.sevenload.com/videos/DqzIRi2/Andrew-Tanenbaum-Design-of-microkernel-OS&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.computerworld.com.au/index.php/id;925218285;fp;16;fpid;1"&gt;http://www.computerworld.com.au/index.php/id;925218285;fp;16;fpid;1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=gFUvDznGwHI"&gt;http://www.youtube.com/watch?v=gFUvDznGwHI&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-2061471417201197642?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/2061471417201197642/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=2061471417201197642' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/2061471417201197642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/2061471417201197642'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/andy-tanenbaum-presentation-and.html' title='Andy Tanenbaum, Presentation and Interview'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-7738906746433037625</id><published>2007-10-14T19:11:00.000+08:00</published><updated>2007-10-14T21:10:50.806+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='T40'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='thinkpad'/><title type='text'>Connecting to wireless network in NUS from your thinkpad</title><content type='html'>I have mentioned about wireless for T40 in linux &lt;a href="http://technical-journal.blogspot.com/2007/10/important-stuffs-in-setting-up-your.html"&gt;here&lt;/a&gt;. Unfortunately, it doesn't inherently support WPA protocol. So, we have to install &lt;a href="http://hostap.epitest.fi/wpa_supplicant/"&gt;wpa_supplicant&lt;/a&gt; which support WPA and WPA2 (IEEE802.11i). The installation is available &lt;a href="http://hostap.epitest.fi/gitweb/gitweb.cgi?p=hostap.git;a=blob_plain;f=wpa_supplicant/README"&gt;here&lt;/a&gt; and &lt;a href="http://www.uninova.pt/%7Epmr/files/WPA/WPA-HOWTO-script.sh"&gt;here&lt;/a&gt;. Basically, after building the source, which creates wpa_supplicant and wpa_cli with 'make' command, the binaries can be installed to /usr/local/bin.&lt;br /&gt;Example commands:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;make&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;cp wpa_cli wpa_supplicant /usr/local/bin&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;/span&gt; Then, we need to make a configuration file, /etc/wpa_supplicant.conf. The entry of the file as provided by &lt;a href="http://opensource.nus.edu.sg/wiki/index.php/Connecting_to_PEAP_in_NUS"&gt;http://opensource.nus.edu.sg/wiki/index.php/Connecting_to_PEAP_in_NUS&lt;/a&gt; and &lt;a href="https://noc.comp.nus.edu.sg/download/ipw2200.pdf"&gt;here&lt;/a&gt;:&lt;span style="font-family:monospace;"&gt;&lt;br /&gt;&lt;blockquote&gt;ctrl_interface=/var/run/wpa_supplicant&lt;br /&gt;network={&lt;br /&gt;ssid="NUS"&lt;br /&gt;scan_ssid=1&lt;br /&gt;key_mgmt=IEEE8021X&lt;br /&gt;eap=PEAP&lt;br /&gt;ca_cert=”/etc/cert/ase1.pem”&lt;br /&gt;phase2=”auth=MSCHAPV2”&lt;br /&gt;}&lt;/blockquote&gt;&lt;/span&gt;The content of ase1.pem is as such :&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;-----BEGIN CERTIFICATE-----&lt;br /&gt;MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx&lt;br /&gt;FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD&lt;br /&gt;VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv&lt;br /&gt;biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy&lt;br /&gt;dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t&lt;br /&gt;MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB&lt;br /&gt;MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG&lt;br /&gt;A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp&lt;br /&gt;b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl&lt;br /&gt;cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv&lt;br /&gt;bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE&lt;br /&gt;VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ&lt;br /&gt;ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR&lt;br /&gt;uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG&lt;br /&gt;9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI&lt;br /&gt;hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM&lt;br /&gt;pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg==&lt;br /&gt;-----END CERTIFICATE-----&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Then, run the wpa_supplicant using :&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;blockquote&gt;wpa_supplicant -i eth1 -c /etc/wpa_supplicant.conf -B     &lt;/blockquote&gt;&lt;/span&gt;Might want to try using -Dwext or -Dipw (deprecated)&lt;br /&gt;Start wpa_gui:&lt;br /&gt;&lt;blockquote style="font-weight: bold; font-style: italic;"&gt;wpa_gui &amp;amp;&lt;/blockquote&gt;Obtain ip address using:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;blockquote&gt;dhclient eth1&lt;/blockquote&gt;&lt;/span&gt;To connect to NUSOPEN (NUS open network), set the essid to NUSOPEN:&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;blockquote&gt;iwconfig eth1 essid "NUSOPEN"&lt;/blockquote&gt;&lt;/span&gt;then obtain the ip address using dhclient as before (or dhcpcd eth1).&lt;br /&gt;&lt;br /&gt;More info are available here:&lt;br /&gt;&lt;a href="http://www.thinkwiki.org/wiki/Wpa_supplicant"&gt;http://www.thinkwiki.org/wiki/Wpa_supplicant&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ipw2100.sourceforge.net/"&gt;http://ipw2100.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Wpa_supplicant"&gt;http://en.wikipedia.org/wiki/Wpa_supplicant&lt;/a&gt;&lt;br /&gt;&lt;a href="http://opensource.nus.edu.sg/wiki/index.php/Main_Page"&gt;http://opensource.nus.edu.sg/wiki/index.php/Main_Page&lt;/a&gt;&lt;br /&gt;&lt;a href="http://linuxnus.org"&gt;http://linuxnus.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-7738906746433037625?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/7738906746433037625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=7738906746433037625' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/7738906746433037625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/7738906746433037625'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/connecting-to-wireless-network-in-nus.html' title='Connecting to wireless network in NUS from your thinkpad'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-5641551528471943727</id><published>2007-10-13T19:10:00.000+08:00</published><updated>2007-10-13T19:18:43.559+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='operating system'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>interesting sites on OS development</title><content type='html'>&lt;a href="http://www.osdev.org/"&gt;http://www.osdev.org/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.osdev.org/osfaq2/"&gt;http://www.osdev.org/osfaq2/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://mikeos.sourceforge.net/handbook.html"&gt;http://mikeos.sourceforge.net/handbook.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.osdever.net/tutorials.php?cat=0&amp;amp;sort=1"&gt;http://www.osdever.net/tutorials.php?cat=0&amp;amp;sort=1&lt;/a&gt;&lt;br /&gt;&lt;a href="http://inglorion.net/documents/tutorials/x86ostut/"&gt;http://inglorion.net/documents/tutorials/x86ostut/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-5641551528471943727?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/5641551528471943727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=5641551528471943727' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/5641551528471943727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/5641551528471943727'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/interesting-sites-on-os-development.html' title='interesting sites on OS development'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-4099397636740101790</id><published>2007-10-11T15:45:00.001+08:00</published><updated>2007-10-11T16:31:41.305+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='suspend'/><title type='text'>Suspending your IBM Thinkpad T40</title><content type='html'>For this I had to upgrade the kernel to the latest, &lt;a href="http://kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2"&gt;2.6.23&lt;/a&gt;, since my previous kernel doesn't inherently support suspend feature unless I patch it with &lt;a href="http://www.tuxonice.net/"&gt;tuxonice&lt;/a&gt;. To check whether your kernel version support suspend:&lt;br /&gt;&lt;blockquote style="font-weight: bold; font-style: italic;"&gt;cd /usr/src/linux&lt;br /&gt;make xconfig&lt;/blockquote&gt;Under "Power management options (ACPI, APM)" tab, check whether "suspend to RAM and standby" exists. If it doesn't, I suppose suspend is not supported by your kernel.&lt;br /&gt;After downloading the kernel and &lt;a href="http://members.cox.net/laitcg/new/kernel.html"&gt;compiling&lt;/a&gt; it, by right, suspend should work.&lt;br /&gt;&lt;blockquote style="font-weight: bold; font-style: italic;"&gt;echo -n "mem" &gt; /sys/power/state&lt;/blockquote&gt;Press Fn button on your thinkpad to resume.&lt;br /&gt;During the compilation process, typically we would want to do make oldconfig, and we should enable all the &lt;a href="http://www.thinkwiki.org/wiki/How_to_make_ACPI_work"&gt;suspend&lt;/a&gt; related features whenever asked. Also we might want to enable &lt;a href="http://ibm-acpi.sourceforge.net/README"&gt;ibm_acpi&lt;/a&gt;&lt;br /&gt;I also needed to install initrd in order to mount root partition using ext3 modules:&lt;br /&gt;&lt;blockquote style="font-weight: bold; font-style: italic;"&gt;cd /boot&lt;br /&gt;mkinitrd -c -k 2.6.23-smp -m ext3 -f ext3 -r /dev/hda2&lt;/blockquote&gt;It will create /boot/initrd.tgz file, that we'll want to load it along with the kernel at boot time. Now edit the /etc/lilo.conf :&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;blockquote&gt;kedit /etc/lilo.conf&lt;/blockquote&gt;&lt;/span&gt;The linux part should look like this :&lt;br /&gt;&lt;blockquote&gt;image = /boot/vmlinuz&lt;br /&gt;initrd = /boot/initrd.gz&lt;br /&gt;root = /dev/hda2&lt;br /&gt;label = newLinux&lt;br /&gt;read-only&lt;br /&gt;image = /boot/vmlinuz-huge-smp-2.6.21.5-smp&lt;br /&gt;root = /dev/hda2&lt;br /&gt;label = oldLinux&lt;br /&gt;read-only&lt;/blockquote&gt;Then, run lilo and reboot to check whether it works.&lt;br /&gt;In order to automate the suspend process whenever we close laptop lid, we have to configure &lt;a href="http://www.thinkwiki.org/wiki/How_to_configure_acpid"&gt;acpid&lt;/a&gt;. Excerpted from the link:&lt;br /&gt;&lt;blockquote&gt;Basically, &lt;a href="http://www.thinkwiki.org/wiki/Acpid" title="Acpid"&gt;acpid&lt;/a&gt; just executes scripts residing in &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;/etc/acpi/actions&lt;/code&gt;. Which script to launch at which event is configured in several files in &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;/etc/acpi/events&lt;/code&gt;. All actions are documented in &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;/var/log/acpid&lt;/code&gt;.&lt;br /&gt;The event script needs to be created within &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;/etc/acpi/events&lt;/code&gt; and can have any name you like. In this case we call it lid because it will trigger the lid event. Do &lt;code style="white-space: nowrap; color: rgb(73, 89, 136); background-color: white;"&gt;# vi /etc/acpi/events/lid&lt;/code&gt; and make it look like this:  &lt;pre&gt;event=button/lid&lt;br /&gt;action=/etc/acpi/actions/sleep.sh %e&lt;br /&gt;&lt;/pre&gt; &lt;p&gt;The "event" line is a regular expression specifying the events we're interested in. You can determine what the event strings are from looking at &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;/var/log/acpid&lt;/code&gt; after trying to suspend, close the lid, etc. . You can find information about the event strings &lt;a href="http://www.thinkwiki.org/wiki/Ibm-acpi" title="Ibm-acpi"&gt;ibm-acpi&lt;/a&gt; generates for certain keys at the &lt;a href="http://www.thinkwiki.org/wiki/How_to_get_special_keys_to_work#ibm-acpi_events" title="How to get special keys to work"&gt; Special Keys HOWTO&lt;/a&gt;.&lt;br /&gt;&lt;/p&gt;The "action" line is the command to be executed when these events are dispatched. In this example we call the &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;sleep.sh&lt;/code&gt; script residing in &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;/etc/acpi/actions&lt;/code&gt; and pass the event description text using the %e placeholder.&lt;br /&gt;Our example &lt;code style="white-space: nowrap; color: rgb(153, 102, 0); background-color: white;"&gt;/etc/acpi/actions/sleep.sh&lt;/code&gt; script looks as follows:&lt;br /&gt;&lt;pre&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;# if launched through a lid event and lid is open, do nothing&lt;br /&gt;echo "$1" | grep "button/lid" &amp;amp;&amp;amp; grep -q open /proc/acpi/button/lid/LID/state &amp;amp;&amp;amp; exit 0&lt;br /&gt;&lt;br /&gt;# remove USB 1.1 driver&lt;br /&gt;rmmod uhci_hcd&lt;br /&gt;&lt;br /&gt;# sync filesystem and clock&lt;br /&gt;sync&lt;br /&gt;/sbin/hwclock --systohc&lt;br /&gt;&lt;br /&gt;# switch to console&lt;br /&gt;FGCONSOLE=`fgconsole`&lt;br /&gt;chvt 6&lt;br /&gt;/usr/sbin/radeontool light off&lt;br /&gt;&lt;br /&gt;# go to sleep&lt;br /&gt;sleep 5 &amp;amp;&amp;amp; echo -n "mem" &gt; /sys/power/state&lt;br /&gt;&lt;br /&gt;# readjust the clock (it might be off a bit after suspend)&lt;br /&gt;/sbin/hwclock --adjust&lt;br /&gt;/sbin/hwclock --hctosys&lt;br /&gt;&lt;br /&gt;# reload USB 1.1 driver&lt;br /&gt;modprobe uhci_hcd&lt;br /&gt;&lt;br /&gt;# turn on the backlight and switch back to X&lt;br /&gt;radeontool light on&lt;br /&gt;chvt $FGCONSOLE&lt;/pre&gt;&lt;/blockquote&gt;&lt;span style="font-size:100%;"&gt;Then reboot, to restart the acpi daemon.&lt;br /&gt;&lt;br /&gt;More information is available at :&lt;br /&gt;&lt;a href="http://www.thinkwiki.org/wiki/How_to_configure_acpid"&gt;http://www.thinkwiki.org/wiki/How_to_configure_acpid&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ibm-acpi.sourceforge.net/README"&gt;http://ibm-acpi.sourceforge.net/README&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thinkwiki.org/wiki/How_to_make_ACPI_work"&gt;http://www.thinkwiki.org/wiki/How_to_make_ACPI_work&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thinkwiki.org/wiki/ThinkWiki"&gt;http://www.thinkwiki.org/wiki/ThinkWiki&lt;/a&gt;&lt;br /&gt;&lt;a href="http://ibm-acpi.sourceforge.net/"&gt;http://ibm-acpi.sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.linux.com/articles/54610"&gt;http://www.linux.com/articles/54610&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-4099397636740101790?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/4099397636740101790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=4099397636740101790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4099397636740101790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4099397636740101790'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/suspending-your-ibm-thinkpad-t40_11.html' title='Suspending your IBM Thinkpad T40'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-6169933200797696259</id><published>2007-10-11T00:50:00.000+08:00</published><updated>2007-10-11T03:47:58.460+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><category scheme='http://www.blogger.com/atom/ns#' term='experience'/><title type='text'>Slackware experience</title><content type='html'>To this day, I can still claim that I'm no expert in these areas, still a noob in his early stage. Nevertheless, here's my story.&lt;br /&gt;Well, to begin with, my experience with Linux started when I installed &lt;a href="http://www.blogger.com/www.redhat.com"&gt;Red Hat&lt;/a&gt; 6 in 1999. Back then, it was hardly useful for day-to-day use, and further, having no internet connection at home made the experience simply lackluster. During my undergraduate days, I had several encounters that in one way or another further developed my interest in Linux. I tried &lt;a href="http://www.blogger.com/www.gentoo.org/"&gt;Gentoo&lt;/a&gt; on my PC which took me 2 days to install it. If I remember it correctly, the installer had to download every single source from the net, and then compiling each to a hardware specific package which made the installation process, well, very time consuming. Some other distros that I had tried are &lt;a href="http://www.novell.com/linux/"&gt;SUSE&lt;/a&gt;, &lt;a href="http://fedoraproject.org/"&gt;Fedora&lt;/a&gt;, &lt;a href="http://www.debian.org/"&gt;Debian&lt;/a&gt;, &lt;a href="http://www.slax.org/"&gt;Slax&lt;/a&gt;, and &lt;a href="http://www.knoppix.org/"&gt;Knoppix&lt;/a&gt;. I also used &lt;a href="http://www.sun.com/software/solaris/"&gt;Solaris&lt;/a&gt; during industrial attachment and in my recent job. I was merely using it to run some ic design applications (Cadence, Synopsys, etc) and no more than that.&lt;br /&gt;Here's the &lt;a href="http://www.slackware.com/"&gt;Slackware&lt;/a&gt; story. During the inter-sem project, I was doing a robotic project on environmental mapping. The idea of environmental mapping (&lt;a href="http://en.wikipedia.org/wiki/Simultaneous_localization_and_mapping"&gt;SLAM&lt;/a&gt;) is simply to use the robot, which is RWI Magellan Pro in this case, to wander around the environment and then to make a map based on several features captured from the environment and on the same time to localize itself in the map.  The RWI Magellan Pro had a pretty old hardware and Red Hat 6.2 installed in it with its own controller system, i.e. rFlex controller. Basically, we could access the robot devices and sensors through the library provided by rFlex controller. I spent couple of weeks to understand the system and also on SLAM. Then, I found this &lt;a href="http://playerstage.sourceforge.net/"&gt;Player/Stage&lt;/a&gt; project which basically provides a simple interface to devices and sensors in the robot. The cool thing is, it acts as a client and server system that communicates over the IP network. When Player is running on the robot, the client control program could be run from other computer (a very fast system that could process algorithms in real time), and connects to it via a standard TCP socket. Another good thing is that Player/Stage could be run on many robotics system, thus code developed in one system can be run on others with very few modifications.&lt;br /&gt;Problem is, Player/Stage needs several libraries that are not provided by Red Hat 6.2, and for some reasons which I can't really recall, I had to install the newer kernel for that. Anyway, I decided to install a newer version of Linux, and I chose Slackware 10.0 for this after trying several other distros like Red Hat 9, Debian, etc. I can't really remember why I ended up with Slackware. Based on the project report, Slackware was chosen due to its small size (the hard disk in Magellan Pro is kinda small) and robustness compared to other system, and more importantly the kernel version 2.4.26 which is compatible with Player/Stage. I think, I also had some problems installing Player/Stage on Red Hat 9. FYI, Magellan Pro doesn't have CD-ROM drive in it, so the installation was done via NFS. Anyway, for obvious reason, I tried to install Player/Stage on PC first in order to determine which Linux distribution to use.&lt;br /&gt;The Slackware installation, as I remember, didn't go really smoothly, but anyway in the end the system worked as intended. Then, I installed (in no particular order): Player, Stage, Pmap, Lodo. Some time was then spent to install &lt;a href="http://www.sick.com/gus/en.html"&gt;Sick LMS&lt;/a&gt; laser sensor which created much hassle, and by this time the 6-week project was near to its end and yet I haven't implemented any single code for the SLAM.&lt;br /&gt;Apparently, Player/Stage has this &lt;a href="http://www-robotics.usc.edu/%7Eahoward/pmap/index.html"&gt;Pmap&lt;/a&gt; package that is used for laser-based mapping, which made the system, or the project for this matter, complete with a few modification on the Pmap source code and calibration on the odometer. Also, I managed to transfer Matlab code on &lt;a href="http://en.wikipedia.org/wiki/Kalman_filter"&gt;Kalman filter&lt;/a&gt; implementation of SLAM to Java that didn't really work on the robot (it somehow worked on Stage). According to my supervisor, the idea of Kalman filter is understandable to some extent however the implementation is rather tedious for my level. He also convinced me that I wouldn't be able to implement the algorithm on the robot at such stage (undergraduate) with very little time left.&lt;br /&gt;Anyway, my supervisor was totally satisfied with my work (since previously the robot had lied there uselessly on the lab) and instead, decided to change the project name to fit the current work. He then offered me to continue the project for my final year project.&lt;br /&gt;To his surprise, I decided not to continue the project as I thought I have done what was really need to be done. Anyway, in my humble opinion, the field of robotics and AI in Singapore is really way behind than that of other countries like Japan, Europe, or USA. While those local polytechnic students are still trying to find out how to win the robot soccer competition, our fellows in Japan have created a system that mimics human being, responds and interacts to us.&lt;br /&gt;So, I then moved to IC design and electronics industry, which was really interesting back then, but no so now, hehe.&lt;br /&gt;Well, to my understanding, I just have some mere surface knowledge on each field, that enables me to work in each industry but not enough for me to start my own company. IC design was really interesting, but I ended up doing analog design which was more to intuition than logic. I managed to produce two local conference papers, not of quality one though.&lt;br /&gt;I guess, I really have to go back to the basic, which is programming, that has excite me since back then in junior high. Anyway, recently I found this operating system, &lt;a href="http://www.minix3.org/"&gt;Minix&lt;/a&gt;, which actually inspired the Linux to the its existence now. While Linux kernel is based on monolithic kernel, the newer version of Minix (Minix 3) is based on &lt;a href="http://en.wikipedia.org/wiki/Microkernel"&gt;micro kernel&lt;/a&gt;, which is more elegant and reliable. I decided to learn more on it, and just borrowed a book from the library: &lt;a href="http://www.amazon.com/Operating-Systems-Implementation-Prentice-Software/dp/0131429388"&gt;"Operating Systems: Design and Implementation"&lt;/a&gt;. Hopefully, I could finish it by the end of the year.&lt;br /&gt;Back to Slackware, I'm still using it up to now on my Thinkpad T40 laptop. Hopefully, it thrives. Well, if it is not, then I hope Minix will thrive and become the most popular OS, which is rather impossible here due to the concept of &lt;a href="http://www.cs.vu.nl/%7East/reliable-os/"&gt;inertia&lt;/a&gt;, as explained by Prof. Tanenbaum.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-6169933200797696259?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/6169933200797696259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=6169933200797696259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6169933200797696259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6169933200797696259'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/slackware-experience.html' title='Slackware experience'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-1354387470218335751</id><published>2007-10-09T08:57:00.000+08:00</published><updated>2007-10-09T09:00:37.043+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='microkernel'/><category scheme='http://www.blogger.com/atom/ns#' term='minix'/><title type='text'>An interesting issue on microkernel vs monolithic</title><content type='html'>&lt;a href="http://www.coyotos.org/docs/misc/linus-rebuttal.html"&gt;http://www.coyotos.org/docs/misc/linus-rebuttal.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.freesoftwaremagazine.com/articles/minix"&gt;http://www.freesoftwaremagazine.com/articles/minix&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.cs.vu.nl/%7East/reliable-os/"&gt;http://www.cs.vu.nl/~ast/reliable-os/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-1354387470218335751?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/1354387470218335751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=1354387470218335751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/1354387470218335751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/1354387470218335751'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/interesting-issue-on-microkernel-vs.html' title='An interesting issue on microkernel vs monolithic'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-2949907119697059485</id><published>2007-10-08T01:42:00.001+08:00</published><updated>2007-10-08T02:04:17.357+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ntfs'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>NTFS on Linux</title><content type='html'>To read and to write to NTFS file system in Linux is possible via &lt;a href="http://www.linux-ntfs.org/doku.php?id=ntfsmount"&gt;ntfsmount&lt;/a&gt; driver. After installing FUSE and ntfsprogs, create these symbolic links:&lt;br /&gt;&lt;blockquote style="font-weight: bold; font-style: italic;"&gt;ln -s /usr/local/lib/libntfs.so.10 libntfs.so.10&lt;br /&gt;ln -s /usr/local/lib/libfuse.so.2 libfuse.so.2&lt;/blockquote&gt;Then in /etc/fstab, add:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;/dev/hda1        /mnt/windows     fuse.ntfs   rw               1   0 locale=be_BY.UTF-8 0 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-2949907119697059485?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/2949907119697059485/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=2949907119697059485' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/2949907119697059485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/2949907119697059485'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/ntfs-on-linux_08.html' title='NTFS on Linux'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-6199930787787743101</id><published>2007-10-07T16:11:00.000+08:00</published><updated>2007-10-07T16:16:13.943+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='links'/><category scheme='http://www.blogger.com/atom/ns#' term='interesting'/><title type='text'>Interesting websites</title><content type='html'>&lt;a href="http://www.webupon.com/Web-Talk/15-Ridiculously-Useful-Websites.50487"&gt;15 Ridiculously Useful Websites&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-6199930787787743101?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/6199930787787743101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=6199930787787743101' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6199930787787743101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6199930787787743101'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/interesting-websites.html' title='Interesting websites'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-2190582962994176463</id><published>2007-10-06T23:32:00.000+08:00</published><updated>2007-10-06T23:37:02.236+08:00</updated><title type='text'>Interview tips</title><content type='html'>&lt;a href="http://www.wisebread.com/how-to-answer-23-of-the-most-common-interview-questions"&gt;http://www.wisebread.com/how-to-answer-23-of-the-most-common-interview-questions&lt;/a&gt;&lt;br /&gt;by Paul Michael&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-2190582962994176463?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/2190582962994176463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=2190582962994176463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/2190582962994176463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/2190582962994176463'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/interview-tips.html' title='Interview tips'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-483694651845245706</id><published>2007-10-05T04:32:00.000+08:00</published><updated>2007-10-05T04:35:17.424+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='window manager'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='kde'/><title type='text'>Changing window manager in KDE</title><content type='html'>By setting environment variables KDEWM to the specific window manager, we could use that window manager under KDE. Example here is to set the window manager to blackbox&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;setenv KDEWM blackbox&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-483694651845245706?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/483694651845245706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=483694651845245706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/483694651845245706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/483694651845245706'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/changing-window-manager-in-kde.html' title='Changing window manager in KDE'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-4007261642109115470</id><published>2007-10-04T03:56:00.000+08:00</published><updated>2007-10-04T04:00:31.706+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>Slackware 12.0 changelogs</title><content type='html'>The changelogs of Slackware 12.0 (stable) is available &lt;a href="ftp://ftp.slackware.com/pub/slackware/slackware-12.0/ChangeLog.txt"&gt;here&lt;/a&gt;. Packages are available &lt;a href="http://slackware.mirrors.tds.net/pub/slackware/slackware-12.0/patches/packages/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-4007261642109115470?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/4007261642109115470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=4007261642109115470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4007261642109115470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4007261642109115470'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/slackware-120-changelogs.html' title='Slackware 12.0 changelogs'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-6398009277226670369</id><published>2007-10-03T04:59:00.000+08:00</published><updated>2007-10-04T03:54:14.582+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IBM'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='T40'/><category scheme='http://www.blogger.com/atom/ns#' term='thinkpad'/><title type='text'>Linux on IBM Thinkpad T40</title><content type='html'>&lt;a href="http://www.cs.utexas.edu/users/walter/geek/linux-t40.html"&gt;http://www.cs.utexas.edu/users/walter/geek/linux-t40.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bellet.info/laptop/t40.html"&gt;http://bellet.info/laptop/t40.html&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.newt.com/debian/thinkpad-t40p/"&gt;http://www.newt.com/debian/thinkpad-t40p/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://tpctl.sourceforge.net/tpctlhome.htm"&gt;http://tpctl.sourceforge.net/tpctlhome.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-6398009277226670369?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/6398009277226670369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=6398009277226670369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6398009277226670369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6398009277226670369'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/linux-on-ibm-thinkpad-t40.html' title='Linux on IBM Thinkpad T40'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-4756624262540956284</id><published>2007-10-03T03:48:00.000+08:00</published><updated>2007-10-03T03:53:48.148+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='financial engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='finance'/><title type='text'>Interesting Article</title><content type='html'>&lt;h1 style="display: inline;"&gt;                         &lt;span style="font-size:100%;"&gt;&lt;a href="http://www.mises.org/story/2728"&gt;&lt;span id="ctl00_ContentPlaceHolder1_lblStoryTitle"&gt;The Worst Recession in 25 years? &lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;By Robert P. Murphy&lt;br /&gt;&lt;h1 style="display: inline;"&gt;                     &lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-4756624262540956284?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/4756624262540956284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=4756624262540956284' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4756624262540956284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4756624262540956284'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/interesting-article.html' title='Interesting Article'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-3348602886430980627</id><published>2007-10-02T23:34:00.000+08:00</published><updated>2007-10-03T00:45:26.601+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='streaming'/><category scheme='http://www.blogger.com/atom/ns#' term='multimedia'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>Mplayer and Sopcast in Slackware 12.0</title><content type='html'>From the &lt;a href="http://www.sopcast.com/"&gt;website,&lt;/a&gt;     SopCast is a  simple, free way to broadcast video and audio or watch the video and listen to  radio on the Internet by adopting P2P technology. It needs media player such as vlc or mplayer on top of it. Basically, from my understanding, it only provides streams of data in a certain format (i.e. wmv3) that is readable, and thus viewable, by the media players. Since vlc doesn't support wmv3 format, we'll have to rely on mplayer for this particular case.&lt;br /&gt;I downloaded the Slackware package for mplayer from &lt;a href="http://www.linuxpackages.net/pkg_details.php?id=11346"&gt;here&lt;/a&gt;.&lt;br /&gt;Then, I downloaded these 2 files for SopCast:&lt;br /&gt;&lt;a href="http://download.sopcast.com/download/sp-auth.tgz"&gt;http://download.sopcast.com/download/sp-auth.tgz&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.sopcast.com/download/libstdcpp5.tgz"&gt;http://www.sopcast.com/download/libstdcpp5.tgz&lt;/a&gt;&lt;br /&gt;From the readme file :&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-size:85%;"&gt;SopCast client version 1.0.2 library dependency&lt;br /&gt;If you don't have stdc++ 5 in your system, please download the libstdcpp5.tgz from&lt;br /&gt;www.sopcast.com, and copy the&lt;br /&gt;libstdc++.so.5&lt;br /&gt;libstdc++.so.5.0.1&lt;br /&gt;to /usr/lib/&lt;br /&gt;&lt;br /&gt;The copy command must be:&lt;br /&gt;cp -a libstdc++.so.5* /usr/lib&lt;br /&gt;With '-a' parameter, and you must login as root.&lt;br /&gt;&lt;br /&gt;1. sp-sc-auth&lt;br /&gt;&lt;br /&gt;A simple example of sp-sc command line.&lt;br /&gt;./sp-sc-auth sop://broker.sopcast.com:3912/6098 3908 8908 &gt; /dev/null &amp;amp;&lt;br /&gt;Start to transfer channel 6098, and you can play it on 8908 with VLC or mplayer&lt;br /&gt;by open the url: http://localhost:8908/tv.asf&lt;/span&gt;&lt;/blockquote&gt;Then, from konsole:&lt;br /&gt;&lt;blockquote&gt;mplayer -zoom http://localhost:8908/tv.asf&lt;/blockquote&gt;What's interesting from the Linux version of vlc is that here we could stream several channels at the same time, which is not possible in that of Windows XP's.&lt;br /&gt;From konsole:&lt;br /&gt;&lt;blockquote&gt;Start streaming channel 1(Channel ID:6001, Port: 8908)&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;./sp-sc-auth sop://broker.sopcast.com:3912/6001 3908 8908 &gt; /dev/null &amp;amp;&lt;/span&gt;&lt;br /&gt;Show the channel at mplayer:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;mplayer http://localhost:8908/tv.asf&lt;/span&gt;&lt;br /&gt;Start streaming channel 2:(Channel ID:6002, Port 8909)&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;./sp-sc-auth sop://broker.sopcast.com:3912/6002 3908 8909 &gt; /dev/null &amp;amp;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;Show the channel at mplayer: (Note, now the TCP port is 8909)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;mplayer http://localhost:8909/tv.asf&lt;br /&gt;&lt;/span&gt;etc&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.sopcast.com/download/libstdcpp5.tgz"&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-3348602886430980627?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/3348602886430980627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=3348602886430980627' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3348602886430980627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3348602886430980627'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/mplayer-and-sopcast-in-slackware-120.html' title='Mplayer and Sopcast in Slackware 12.0'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-8225942225126276250</id><published>2007-10-02T22:41:00.000+08:00</published><updated>2007-10-02T22:44:27.073+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Python IDLE in Linux</title><content type='html'>A bash script to start Python IDLE in Linux :&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote style="color: rgb(0, 0, 153);"&gt;&lt;span style="font-size:85%;"&gt;#!/bin/bash&lt;br /&gt;cd /usr/lib/python2.5/idlelib/&lt;br /&gt;python PyShell.py &amp;amp;&lt;br /&gt;cd ~&lt;/span&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-8225942225126276250?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/8225942225126276250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=8225942225126276250' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/8225942225126276250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/8225942225126276250'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/python-idle-in-linux.html' title='Python IDLE in Linux'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-3153337791967873998</id><published>2007-10-02T00:21:00.000+08:00</published><updated>2007-10-02T01:42:13.268+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>slackbuilds.org</title><content type='html'>I've found this website : &lt;a href="http://www.slackbuilds.org/"&gt;www.slackbuilds.org&lt;/a&gt; that provides packages for Slackware, to be compiled with the SlackBuild scripts. Usage of the slackbuild script can be found &lt;a href="http://www.slackbuilds.org/howto/"&gt;here&lt;/a&gt;. The resulting Slackware official package is then to be installed with installpkg command. Typically, the resulting package will be in /tmp.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Installation of openoffice.org&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;blockquote&gt;&lt;span style="font-weight: normal;"&gt;First download the slackbuild script &lt;/span&gt;&lt;a style="font-weight: normal;" href="http://slackbuilds.org/slackbuilds/12.0/office/openoffice.org.tar.gz"&gt;here&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Untar it. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Download the source from &lt;/span&gt;&lt;a style="font-weight: normal;" href="http://openoffice.osuosl.org/stable/2.3.0/OOo_2.3.0_LinuxIntel_install_en-US.tar.gz"&gt;here&lt;/a&gt;&lt;span style="font-weight: normal;"&gt;. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Copy the source the the slackbuild directory:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: normal;"&gt;cp OOo_2.3.0_LinuxIntel_install_en-US.tar.gz openoffice.org&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;Make the script executable:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;chmod +x openoffice.org.SlackBuild&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;./openoffice.org.SlackBuild&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: normal;"&gt;When done creating the package, install it with installpkg:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;cd /tmp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: normal;"&gt;installpkg openoffice.org-2.3.0_en_US-i586-1_SBo.tgz&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-3153337791967873998?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/3153337791967873998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=3153337791967873998' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3153337791967873998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/3153337791967873998'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/slackbuildsorg.html' title='slackbuilds.org'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-4628478296317872551</id><published>2007-10-01T02:43:00.001+08:00</published><updated>2007-10-07T11:46:31.691+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>Important Stuffs in Setting Up Your Slackware</title><content type='html'>&lt;span style="font-weight: bold;"&gt;USB Flash Drive&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;modprobe usb-storage&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;cd /mnt&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;mkdir usbflash&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;nano /etc/fstab&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/span&gt;add: /dev/sda1        /mnt/usbflash    vfat,ntfs   noauto,owner,user,umask=0 0   0&lt;br /&gt;The sda1 represents the device name that the kernel gives the USB flash when it gets plugged in.&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;mount /mnt/usbflash&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Slocate: &lt;/span&gt;&lt;span&gt;It provides a secure way to index and quickly search  for  all  files  on&lt;br /&gt;   your  system  regardless  of  ownership.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-style: italic;"&gt;slocate -u&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;slocate&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;Wireless LAN: &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;Based on /sbin/lspci, the driver for the system (IBM Thinkpad T40) is Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter. After searching the net, I've got these results: &lt;a href="http://ipw2100.sourceforge.net/"&gt;http://ipw2100.sourceforge.net/&lt;/a&gt;, &lt;a href="http://www.blogger.com/jrblevin.freeshell.org/linux/ipw2100/"&gt;http://jrblevin.freeshell.org/linux/ipw2100/&lt;/a&gt;, &lt;a href="http://ipw2100.sourceforge.net/"&gt;http://ipw2100.sourceforge.net/&lt;/a&gt;. According to the &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;a href="http://ipw2100.sourceforge.net/INSTALL"&gt;installation manual &lt;/a&gt;&lt;/span&gt;&lt;/span&gt;, starting with Linux kernel version 2.6.14, an old stable version of the Intel PRO/Wireless 2100 Network Connection driver is provided in the kernel. All we need to do is to download the firmware from &lt;a href="http://ipw2100.sf.net/firmware.php"&gt;http://ipw2100.sf.net/firmware.php&lt;/a&gt; , untar it, and copy all the files to /lib/firmware. The specific files are :&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:arial;"&gt;ipw2100-(version number).fw  Boot strap image&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;ipw2100-(version number)-i.fw  Used in IBSS mode&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;ipw2100-(version number)-p.fw  Used in monitor mode&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:arial;"&gt;Load the module with:&lt;br /&gt;&lt;blockquote style="font-weight: bold; font-style: italic;"&gt;modprobe ipw2100&lt;/blockquote&gt;check the output of dmesg to see if it is successful:&lt;br /&gt;&lt;blockquote&gt;dmesg | tail&lt;/blockquote&gt;Slackpkg: is a tool to install or upgrade Slackware official packages from a mirror.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-4628478296317872551?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/4628478296317872551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=4628478296317872551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4628478296317872551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4628478296317872551'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/important-stuffs-in-setting-up-your.html' title='Important Stuffs in Setting Up Your Slackware'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-1189740803913288666</id><published>2007-10-01T00:58:00.000+08:00</published><updated>2007-11-06T23:44:18.221+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Firefox plugins</title><content type='html'>Here are the necessary plugins as add-ons on firefox (https://addons.mozilla.org/en-US/firefox/browse/type:7)&lt;br /&gt;1. Adobe Flash Player&lt;br /&gt;&lt;blockquote&gt;Download the tarball&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;  tar zxvf install_flash_player_9_linux.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    cd install_flash_player_9_linux/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    cp libflashplayer.so ~/usr/lib/mozilla/plugins/&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    cp flashplayer.xpt ~/usr/lib/firefox-2.0.0.4/components/&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote style="font-weight: bold;"&gt;&lt;/blockquote&gt;2. Adobe Reader&lt;br /&gt;&lt;blockquote&gt;Download the tarball&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    tar zxvf AdobeReader_enu-7.0.9-1.i386.tar.gz&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;    cd AdobeReader&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;    ./INSTALL&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;all the files are installed at /usr/local/Adobe/Acrobat7.0/&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;acroread&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;expr: syntax error &lt;/span&gt;&lt;/span&gt;message shows, to work it out :&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;nano /usr/local/Adobe/Acrobat7.0/&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;comment the line :  check_gtk_ver_and_set_lib_path  "$MIN_GTK_VERSION"&lt;br /&gt;i.e. # check_gtk_ver_and_set_lib_path  "$MIN_GTK_VERSION"&lt;/blockquote&gt;3. JRE&lt;br /&gt;&lt;blockquote&gt;The Slackware package can be found from the slackware stable repository&lt;br /&gt;&lt;a href="http://plugindoc.mozdev.org/faqs/java.html#Linux"&gt;http://plugindoc.mozdev.org/faqs/java.html#Linux&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ln -s /usr/lib/jre1.6.0_02/plugin/i386/ns7/libjavaplugin_oji.so          /usr/lib/mozilla/libjavaplugin_oji.so&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-1189740803913288666?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/1189740803913288666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=1189740803913288666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/1189740803913288666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/1189740803913288666'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/firefox-plugins.html' title='Firefox plugins'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-4971598248213766554</id><published>2007-10-01T00:00:00.000+08:00</published><updated>2007-10-01T00:32:26.898+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>Slackware 12.0 installation</title><content type='html'>These are the steps encountered during the installation of Slackware 12.0 in my IBM T40 system.&lt;br /&gt;1. When booting from CD1, press enter after &lt;span style="font-weight: bold; font-style: italic;"&gt;boot:&lt;/span&gt; appears.&lt;br /&gt;2. Login as root.&lt;br /&gt;3. cfdisk, this will create the partition layout of the hardisk. Set it as below:&lt;br /&gt;Name        Flags       Type        Fs type             Size&lt;br /&gt;hda1         Boot          Pri            NTFS                29417.48&lt;br /&gt;hda2                                         Pri            Linux             6967.30&lt;br /&gt;hda3                                 Pri         Linux swap   495.446&lt;br /&gt;4. Type setup.&lt;br /&gt;5. Addswap&lt;br /&gt;6. Check swap partition for bad blocks -&gt; No&lt;br /&gt;7. Swap space configured -&gt; OK&lt;br /&gt;8. Select Linux installation partition: /dev/hda2 Linux&lt;br /&gt;9. Format partition /dev/hda2 -&gt; Yes&lt;br /&gt;10. Select filesystem for /dev/hda2 : ext3&lt;br /&gt;11. FAT or NTFS partitions detected, add to /etc/fstab -&gt; Tes&lt;br /&gt;12. Select partition to add to /etc/fstab: /dev/hda1&lt;br /&gt;13. Pick mount point for /dev/hda1 : /mnt/windows&lt;br /&gt;14. Media selection : slackware CD or DVD&lt;br /&gt;15. Package series selection&lt;br /&gt;16. Select prompting mode : full&lt;br /&gt;17. Make USB flash boot : skip&lt;br /&gt;18. Modem configuration : /dev/ttys3&lt;br /&gt;19. Installation of LILO : simple&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_b_960ts6oXg/Rv_OmCnzK-I/AAAAAAAAAAw/J6i1VPtNPpA/s1600-h/snapshot1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_b_960ts6oXg/Rv_OmCnzK-I/AAAAAAAAAAw/J6i1VPtNPpA/s320/snapshot1.jpg" alt="" id="BLOGGER_PHOTO_ID_5116034854650325986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;    1024x768x256&lt;br /&gt;   LILO destination MBR&lt;br /&gt;20. Network config: DHCP&lt;br /&gt;21. Confirm starting services to run&lt;br /&gt;22. Hardware clock set to UTC : no&lt;br /&gt;23. Timezone config : Singapore&lt;br /&gt;24. Default window manager : KDE&lt;br /&gt;25. Set root passwrd: **&lt;br /&gt;26. We're done with the setup, reboot&lt;br /&gt;27. &lt;span style="font-weight: bold; font-style: italic;"&gt;startx&lt;/span&gt;, to start the x environment&lt;br /&gt;&lt;br /&gt;Adding user is performed under KDE environment, &lt;span style="font-weight: bold;"&gt;KUser&lt;/span&gt;:&lt;br /&gt;-Login shell: &lt;span style="font-weight: bold; font-style: italic;"&gt;/bin/tcsh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From &lt;span style="font-weight: bold;"&gt;konsole&lt;/span&gt;: &lt;span style="font-weight: bold; font-style: italic;"&gt;nano /etc/sudoers&lt;/span&gt;, then add the line :&lt;br /&gt;username ALL=(ALL) NOPASSWD: ALL&lt;br /&gt;&lt;br /&gt;From &lt;span style="font-weight: bold;"&gt;konsole&lt;/span&gt;:&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt; /sbin/lspice&lt;/span&gt;:&lt;br /&gt;00:00.0 Host bridge: Intel Corporation 82855PM Processor to I/O Controller (rev 03)&lt;br /&gt;00:01.0 PCI bridge: Intel Corporation 82855PM Processor to AGP Controller (rev 03)&lt;br /&gt;00:1d.0 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 (rev 01)&lt;br /&gt;00:1d.1 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 (rev 01)&lt;br /&gt;00:1d.2 USB Controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 (rev 01)&lt;br /&gt;00:1d.7 USB Controller: Intel Corporation 82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller (rev 01)&lt;br /&gt;00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 81)&lt;br /&gt;00:1f.0 ISA bridge: Intel Corporation 82801DBM (ICH4-M) LPC Interface Bridge (rev 01)&lt;br /&gt;00:1f.1 IDE interface: Intel Corporation 82801DBM (ICH4-M) IDE Controller (rev 01)&lt;br /&gt;00:1f.3 SMBus: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller (rev 01)&lt;br /&gt;00:1f.5 Multimedia audio controller: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller (rev 01)&lt;br /&gt;00:1f.6 Modem: Intel Corporation 82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller (rev 01)&lt;br /&gt;01:00.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility M7 LW [Radeon Mobility 7500]&lt;br /&gt;02:00.0 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)&lt;br /&gt;02:00.1 CardBus bridge: Texas Instruments PCI1520 PC card Cardbus Controller (rev 01)&lt;br /&gt;02:02.0 Network controller: Intel Corporation PRO/Wireless LAN 2100 3B Mini PCI Adapter (rev 04)&lt;br /&gt;02:08.0 Ethernet controller: Intel Corporation 82801DB PRO/100 VE (MOB) Ethernet Controller (rev 81)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-4971598248213766554?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/4971598248213766554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=4971598248213766554' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4971598248213766554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4971598248213766554'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/10/slackware-120-installation.html' title='Slackware 12.0 installation'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_b_960ts6oXg/Rv_OmCnzK-I/AAAAAAAAAAw/J6i1VPtNPpA/s72-c/snapshot1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-4356347650035858742</id><published>2007-09-28T01:57:00.000+08:00</published><updated>2007-09-28T02:47:43.071+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='slackware'/><title type='text'>Slackware 12.0</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_b_960ts6oXg/Rvv6hynzK7I/AAAAAAAAAAU/Skcdkk8BmTA/s1600-h/poweredbyslack.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_b_960ts6oXg/Rvv6hynzK7I/AAAAAAAAAAU/Skcdkk8BmTA/s320/poweredbyslack.gif" alt="" id="BLOGGER_PHOTO_ID_5114957260240661426" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The newest Slackware version 12.0 could be downloaded from &lt;a href="ftp://swtsrv.informatik.uni-mannheim.de/pub/linux/distributions/slackware/slackware-12.0-iso/"&gt;ftp://swtsrv.informatik.uni-mannheim.de/pub/linux/distributions/slackware/slackware-12.0-iso/&lt;/a&gt;&lt;br /&gt;It comes with the latest kernel version 2.6.&lt;br /&gt;&lt;a href="http://www.slackware.com/announce/12.0.php"&gt;http://www.slackware.com/announce/12.0.php&lt;/a&gt; for more information.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://itmanagement.earthweb.com/entdev/article.php/11070_3701421_1"&gt;&lt;span style="font-family:verdana,helvetica,arial;"&gt;&lt;b&gt;The 7 Most Influential GNU/Linux Distributions&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Slackware has been my all time favorite distro. In my opinion, it's simple yet elegant. I can't say much about it though, as I have only tried a few of other distros (Fedora, SUSE, Gentoo).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1950028186543160992-4356347650035858742?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/4356347650035858742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=4356347650035858742' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4356347650035858742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/4356347650035858742'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/09/slackware-120.html' title='Slackware 12.0'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_b_960ts6oXg/Rvv6hynzK7I/AAAAAAAAAAU/Skcdkk8BmTA/s72-c/poweredbyslack.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1950028186543160992.post-6739601563684167080</id><published>2007-09-27T15:13:00.000+08:00</published><updated>2007-09-28T03:12:08.885+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='financial engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Options pricing based on Monte Carlo methods</title><content type='html'>Here is a python code to analyze options price based on Monte Carlo simulations.&lt;br /&gt;From wikipedia: Monte Carlo methods are useful in many areas of computational mathematics, where a &lt;i&gt;lucky choice&lt;/i&gt; can find the correct result. Interesting, huh !!&lt;br /&gt;http://en.wikipedia.org/wiki/Monte_Carlo_methods_in_finance&lt;br /&gt;All the formula in the code are taken from FE5102 notes, chapter 5 on Statistical Methods.&lt;span style="color: rgb(0, 102, 0);font-size:78%;" &gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="color: rgb(0, 102, 0);font-size:78%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 102, 0);font-size:78%;" &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import random&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;import math&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;price = 33&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;exercise = 30&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;expiry = 6.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;vol = 9.0/100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;rate = 5.0/100&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;simNum = 5000000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;mean = math.log (price) + (rate - vol * vol / 2) * expiry / 12.0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;stddev = math.sqrt(vol * vol * expiry / 12.0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;sum = 0&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;for i in range (simNum):&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;ft = math.exp(random.normalvariate(mean,stddev)) - exercise&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;if (ft &lt;= 0): ft = 0 sum = sum + ft average = sum / simNum optionsPrice = average * math.exp(-rate*expiry/12.0) print "The options price based on " + str(simNum) + " observations is " + str(optionsPrice)&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(0, 102, 0);font-size:78%;" &gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 255, 0);"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="color: rgb(255, 255, 0);"&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/1950028186543160992-6739601563684167080?l=technical-journal.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technical-journal.blogspot.com/feeds/6739601563684167080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1950028186543160992&amp;postID=6739601563684167080' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6739601563684167080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1950028186543160992/posts/default/6739601563684167080'/><link rel='alternate' type='text/html' href='http://technical-journal.blogspot.com/2007/09/here-is-python-code-to-analyze-options.html' title='Options pricing based on Monte Carlo methods'/><author><name>adiwena</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
