Put your message here! Contact me for more information
 
 







 

Archive for the ‘Random Walk’ Category


 

Money Post

It’s been a while since the last post. Personally I’ve been through a lot of pain, growing pains mostly. I was struggling with myself and the different thoughts and questions that keep on popping up in my head: who I am and what I am here for. I’m atheist, I can’t rely on a “God” person to come and show me the meaning of life. May be 42 is the answer (on a sad note, Douglas Adam passed away in 2000 so we won’t have his answer to the “42″ question either). Life sometimes is a puzzle that each person has to go through and find his or her own calling.

What’s been troubled me the most is … money. Truth is, I am always fond of money. The thought of making it and having it sit in my pocket (or bank accounts) make my eyes popped wide open and my adrenaline rushing to head. I’m not too crazy about spending my money though, except on books, investments, and the occasional travelings. For as long as I remember, I have always had the entrepreneurship spirit in me. I remembered when I was young, probably 2nd grade, my grandmom was in the PTA (should be GpTA - Grandparents Teacher Association). It was the end of the school year and the school would reward students with good academic standings with gifts. I was among those students, and my Grandmom was in charge of preparing the gifts for my class. The PTA bought tons of blank notebooks, probably because notebooks would make the most practical gifts at the time, besides they were cheap. Each pack of notebooks would come with the a bundle of paper labels (not even sticker labels — it was that long ago, say 18 years at least). I collected all the labels and had myself a decent amount of them. My next brilliant idea was to make a market of high-demand for cheap notebook labels. I managed to sell some of the inventory for a grand sum of 1500$ VND (roughly 7-10 US cents, depends on the exchange rate). That was my first venture, ever. It was a successfuly, considered the inventory was free and how cheaply I sold the labels.

In the next few years, since the entrepreneur blood was always bugging me, I started selling or trading stuff whenever I could. I once sold exam prep notes which I typed and financed the printing cost myself from my weekly allowance. However, in the end only I found myself giving away the print-outs to my friends for I felt that the *need* something to study better. Not all businesses are profitable (a.k.a. execution matters). Later I began to doodle, drawing Dragonball-Z characters and coloring them. My only customer was the neighbor kid. He bought my drawings for a total sum of 50,000$VND (~ $3 dollars). I was proud and kept the money to myself without telling anyone. Later on, it turned out that the little kid stole his parent’s money. Luckily for me I didn’t have to pay the money back. Not all clients are paying with clean, legal money.

It’s always fun remembering about the childhood time when I was one little boy. But my point is that I’ve always been money-oriented, e.g., always finding a way to make money. I understood vaguely that money is powerful, and I really do enjoying making it. I am just never big into spending, except my last 2 years of college when I found out about the plastic and spent my way on reckless forex and other investment services.

Money is important, evil, necessary, constrained, and liberating at the same time. Without money it would be hard to maintain my comfortable lifestyle. It is so evil that everybody are trying to win it over from the next person, only to find most of them failed and enslaved to the Money god. Money puts up this constraint that everyone has to work towards every single day to make enough so that they can put food on the table, or spend recklessly on the luxuries and self-indulgence, trying to justify why they are working so hard. Yet, enough money is a total liberation from this 9-5, 365-day cycle, and allows one to pursue anything his or her heart’s desire.

I found myself struggling with money. Financially I’m doing much better than me 2 years ago. No more credit card debts, even with a spotty credit history due to the many late payments after graduation when I was without a job. I am paying my car in cash. I helped my mom pay down a portion of the loan she had taken out for my education. I did a lot of things with my paychecks, most of which were beneficial (e.g., no wasteful spending on shopping and compulsive buying). Still, I feel I am still lacking something. My entrepreneur spirit tells me that there’s gotta be more to life than a 9-5 job with a regular fat paycheck. No matter how fat the checks are, they won’t never be enough.

I want to be retired when I’m 30. I still have less than 6 more years to achieve this, financially. I have lots of plans for investments, my own startups. Nonetheless, I increasingly find myself trapped in the 24-hour race between my fulltime job, my part time job, my freelance gig, and my own startup. On a regular basis I work for 10 to 12 hours a day. I found myself got burnt out, my health (especially my eyes) not as good as before. But I know I have to keep moving on. Still, each step forward is a step of self-reliance and self-struggle. Reading other people’s personal finance blogs, I feel the urge that one day, I will be able to share my story as well.

I don’t want to turn my blog into a personal finance blog, away from my root of geekery. But I do want to have a more candid conversation about money. I want to see the light, the liberation that money can bring at the end of the dark and winding tunnel. After working on my own startups many hours into the night, I realized that I won’t have enough courage and commitment if I don’t take my time and reflect what I am experiencing, internally and externally. Too much of a good thing is a bad thing — working too much for my own good may end up costing me more emotionally and physically. I still have tons on interesting things to write and share with the world so I might as well stop once in a while and tell my story. Head down coding may make me rich one day, but I won’t be as rich if I don’t enjoy life and give some back.
My goals for the blog are to

  1. Revise and Upgrade WordPress to the newest version with my own design and template.
  2. Start monetizing my Blog more. For example, my small question about Primerica turns out to be hugely successful. Since my goal is to be financially independent, I want to capture similar opportunities to make money.
  3. Write more high quality technical articles about different technologies that I’ve been using. It’s been amazing working with Ruby on Rails and AJAX so it’s time to share.
  4. Make my personal finance more public so that I can see it as a goal to achieve my financial dream. I will write more about the different investments as well as my portfolio gets bigger. It will be a shame for me to share my nest egg now (probably it’s only a quail egg, not the typical grade-A supermarket one) , but soon things will definitely change for the better.
  5. Share my own story about life.
view comments
 

AutoHotKeyI guess my relationship with the Lenovo 3000 N100 laptop is a complicated one: as much as I hated the Home/End/Page up/Page down combo madness, I truely missed that 2 extra buttons that my Dell D830 doesn’t have. Now instead of just flicking my finger to hit Home or End, I have to move my entire arm to reach for either End or Home. Even though now I won’t make any mistakes with Home/End jumping as with the Lenovo, I have to slow down the typing with the Dell…. NO! Only if Dell put the 2 extra home/end button next to their Arrow buttons… Why can’t we just live happily with each other? Is it really that hard to design a good working keyboard, or is it me that just being picky about laptop keyboard?

“Good news everyone…”, as the Professor Farnsworth would say in his quite-mischevious voice, I have the fix for my crave for the Home/End buttons. AutoHotKey allows me to map custom shortcut to the keyboard, especially the Windows key. I mostly use the Windows key as the … boss key to quickly hide my stuff on the screen (Window + D), or run command (Window + R), or start Explorer (Window + E), even though these days I prefer xplorer2. With AutoHotKey, I was able to map Window + A to the Home Button, and Window + S to the End button, saving me from wiggling my arm around.

So if you are not satisfied with your laptop keyboard, give AutoHotKey a try. Maybe it will save you some aggravation.

Here is the small script to remap your Home and End button: AutoHotKey.ahk

view comments
 

Dell Latitude D830 I had to order a new replacement for my new Dell Latitude D830. I thought that there was something wrong with my particular D830’s battery compartment since there is a gap between the memory and the rest of the laptop body. I have a 9-Cell battery and it was not fully tight-fit. The gap wasn’t that big but I could actually wiggle the battery and had it making some clicking noise. So I had Dell send me a new replacement. An exact D830 was sent to me. It’s so exact that the same issue happens, again! 2 brand new D830, same wiggling battery compartment! Anyhow, I think I just live with it since I can fix the issue by putting a small peace of folded paper between the battery and the compartment wall to nudge-fit it. I think that the issue is specific to the 9-Cell battery and the D830. Buyer beware!

SystemRescueCDEnough of my rant. I actually want to talk how I transfered the image of the first D830 to the other one using the SystemRescueCD. SystemRescueCD is a Linux-bootable image that contains all the utilities for disk imaging, partitioning, and other utilities. The ISO is about 160MB. All I had to do was burning it to a blank CD and grabbing my external USB drive to store my image files.

While waiting for my replacement D830, I installed everything I want to the “defective” laptop: Launchy, FireFox, Office, VisualStudio 2005, Rails, e-texteditor, Notepadd++, Cropper, FileZilla, Xplorer2, Xampp, Cygwin, MySQL GUI toolkit, etc.. Everything was about 10GB of data.

I booted the laptop using the SystemRescue CD with my 500GB Seagate FreeAgent external USB Drive (man, I feel like I’m doing free-advertisements now). The linux distro booted up and successfully recognized my USB drive. Next I went into the GUI with startx since I’m not too hot about the command line, plus I can have multiple XTerm’s side-by-side in X. Now it’s time to get down to the cloning business.

Mounting and Imaging the external USB drive

  • First of all, my Seagate FreeAgent drive was NTFS-formatted by the manufacture. Secondly, I wasn’t sure where the device was mapped inside the /dev. Digging around, I found these commands:
    • # lsusb (to list all USB devices)
  • I saw that my Seagate drive was detected properly with an entry in the list. Further more, running dmesg, I confirmed that the Linux LiveCD recognized my drive:
    • # dmesg | grep -i “SCSI” (this command is to grep the boot-up kernel messages for the word “SCSI” to make sure the kernel detected the device when it was booting)
  • Cool, but now I thought to myself, “how am I supposed to know which device in the /dev folder is my USB?” Actually I made an educated guess here and got lucky. The USB drive was mapped to the /dev/sdb1. I guess with some greppings through the lsub/ other cryptic linux commands/ blind guesses/ beginner’s luck, you’ll find which entry in the /dev folder is your USB drive. Nonetheless, try /dev/sdb1 first, you never know.
  • With my newly gained knowledge (and power), I was ready to mount my drive and start a mini cloning factory:
    • # mkdir /seagate (to create a new mount folder placeholder)
    • # mount -t ntfs /dev/sdb1 /seagate (to mount the NTFS-formatted USB drive to the /seagate folder)
  • I was able to mount the USB drive to the /seagate folder using the above command. However, it was read-only since the LiveCD OS did not know the linux permission of the drive. I found out about this when the imaging utility partimage failed to write the image file to the drive. The correct mount command to enable Linux permission is
    • # mount -t ntfs-3g /dev/sdb1 /seagate (notice the ntfs-3g param)

    Afterwards I was able to write a test file to my USB drive ( #echo “test” > /seagate/test.txt ) and seeing all the Linux permissions on the files ( # ll /seagate )

  • I then started partimage. I selected my partition to be imaged, put in the filename in the “Image path” box (/seagate/d830). I didn’t bother with the gzip since I really just image this one time. For my laptop, imaging 10GB took 7 minutes. The files on the USB drive was spillted into files like “d830.000“, “d830.001“, etc.
  • I then unmount the USB drive with
    • # umount -f /seagate

    I remember the LiveCD complained about some other processes were also accessing the device. To find out which process was using the resource, I did a

    • lsof | grep /seagate (list all processes that are opening the /seagate folder)

    Ah, I had a XTerm which I had CD’ed into the /seagate folder. Silly me! I cd to another folder and afterwards, umount was able to finish its job.

Restoring the image

  • Since the replacement one is an exact duplicate, I didn’t have to pay much attention to the partition image. I popped the SystemRescueCD in, switched the USB drive to connect to the replacement laptop, and booted it up with the CD.
  • I went through almost the exact same steps as above: mount the drive using the -ntfs-3g param, then start partimage. Only this time I chose “Restore” instead of creating image and the file name was “/seagate/d830.000“. Partimage automatically picked up the rest.
  • The entire restoring process took another 7 minutes.

I restarted the laptop and crossed my fingers. To my delight, my Windows XP Pro was up and running, even my fingerprints profile was loaded correctly. I swiped my finger, smiled to myself, and thought that it wasn’t too bad, at least I didn’t have to use Norton Ghost — everything was open-source. Just have to love it!

Final Words

I hope you enjoy this post and find it useful. Now I have to finish up posting this blog, pack the original laptop to send it back to Dell, and get busy finding a piece of paper to fix the battery issue for the replacement laptop. Then I can resume doing Rails and Wars of Earth…

Links & References

view comments
 

I have to keep reminding myself that I’m almost done with this freaking Lenovo notebook. It’s gonna be the end of a series of my daily frustration and cursing at whoever designed this god forbid keyboard. I’m using a Lenovo 3000 N100 and guess what: the FN key and Ctrl key are switched. Even worse: there is no direct way to use the HOME/ END buttons. I have to use a combo of FN and Page Up for HOME and FN + Page Down for END. Sometimes I missed the FN key, the cursor would jump up or down one page since I was then hitting Page Up/Down instead. Imagine when you are focusing on the screen, and bam, your code is gone no where in sight. Your line of thought is disrupted, you suddenly become disoriented. Not only do I feel the anger and hatred on a daily basis, my buddy who happens to have the same exact Lenovo model also share the frustration with me: whoever at Lenovo/IBM approved the keyboard design to get through QA should be hang, or brutally beaten to dead and got beaten some more.

Lenovo 3000 N100

To save myself from committing such a hideous crime (I still want to do it), I got myself a Dell Latitude D830. So far I find myself really enjoying the normal keyboard layout of the Dell 830. I can’t stress the “normal” part well enough. The Ctrl button is there at a corner for a reason and no sane people would combine FN + Page Up/Down for the frequently used Home/End buttons. It’s such a silly thing about keyboard design that Lenovo/IBM whimsically decide to switch keys around (ha ha, you buy our laptop, pwned!). I should seriously consider suing Lenovo for the amount of frustration and loss of productivity causing by their laptop, making a case of “Lenovo vs. the People”
To sum up: if you want to get the Lenovo 3000 N100: DON’T! Spend money on something else that would bring you happiness, like buying your loved ones dinners, or rather send me some money for this advice.

view comments
 

PrototypeJs LogoThe recent release of Prototype 1.60RC1 inadvertently breaks the drag and drop effect of Scriptaculous in IE6 (and 7). I don’t know about the exact cause of the error but according to sources around the internet, it’s because Prototype always returns false for the leftClick event in IE6. Luckily, the trunk version of Prototype has this bug patched (since revision 7954).

To fix the draggable, just patch your prototype.js file, replacing the code block “Event.method” around line 3686 with the newer code block from “event.js” in the prototype main trunk.

For your convenience, here is the patched prototype.js (release 1.60RC1) with fix from Event.js (rev 8037)

  • Download: the patched prototype.js for Scriptaculous Draggable
view comments