How this started
I think it was late 2005, my wife used to work really late during those days, 8, 9 even 10pm at night, I have experienced a few even longer wait until 1 or 2 am, literally the next day. Sometimes I use this spare time to finish up my works, but I was still quite junior then, there aren’t much work that I can’t finish in normal working hour.
As a system administrator for the department, one of the tasks that I dratted most is to update a long list of computer inventory. Physically go to a computer, check on serial number, OS installed, computer name, application installed, etc etc. If the user was not around and the screen locked, then I am out of luck and have to find another time for a check. So I punched in words like “hack”,”hack remotely to check hardware specification” into google, hope it will yield some useful dos-prompt command that let me remotely checking out the hardware specification. Instead, I came across Eric Steven Raymond epic article “How to become a Hacker”. One thing lead to another, soon I find myself reading every Paul Graham’s essay feverishly, Great Hackers, Hackers and Painter, The Word Hacker, How to do what you love, Python paradox , the list go on.
Reading “How to become a Hacker” and most of the PG’s essays is mind blowing, like open up a whole new world, at a time when hacker normally carried a negative connotation in the mainstream; suddenly I was shown the true meaning of a hacker.
“Hackers solve problems and build things, and they believe in freedom and voluntary mutual help”
“hacker” connotes mastery in the most literal sense: someone who can make a computer do what he wants.
You do something so clever that you somehow beat the system, that’s called a hack
Wow, that sounds cool. First thing in the basic hacking skills listed in “How to be a Hacker” is to learn how to program. As a Computer Science Graduate, sadly all I have learned during my study was some asp for coursework, html and really tiny bit of java. I still remember when we learn html, I put up a page with <marquee> tag showing off a blinking words moving across screen then proudly showoff to my classmate. Serious.
So I have to pick up a language and brush up my programming skills again. Since both Eric Steven Raymond and Paul Graham touted Python as one of the language to go for, that was what I did. Learning python with A Byte of Python, Dive into Python and The Python Tutorial in IDLE make those waiting hours gone past so much easier.
Feeling excited with the new found world, I continue to play with django, ruby on rails, Processing, Fedora Core, Ubuntu, wordpress, radiantcms, to name a few. I was fascinated with the newer shinny things churning out from the web. It is always the same pattern, I started out really eager, then either something happen in real life, change job, married, have kid, etc, or some newer toys show up, then I shift my attention. I spent a lot of time learning, but with no end result to show. It is a cycle that dragged for a few years and brings me to nowhere.
Until a casual chat with my childhood friend some time last year, we rant about the meaningless job that we are doing, how I really long for works that require my creativity, be in coding or design. That must be the hundredth time we went thru the same rants. But this time, my friend said, “You are in your thirties, your life is almost fixed. You are done. You can forget about your bloody hacker’s dream and just think about your son’s future instead.”
The thinking that my life is done, and I can’t do anything about my future, that I am gonna be the same mindless working robot in corporate working life until I retire suddenly strike me.
Is that what I really want? Admit defeat without even try hard enough? Then what is the lesson I am teaching my son here? How am I supposed to tell him that you can be all that you want to be as long as you work hard enough? What kind of example I am setting for him?
Being in my thirties is exactly the reason I should really buck up and deliver; I have no time to waste. So to force myself to deliver, I looks for excuse to rollout Ruby on Rails application to the department, eventually I find two, and commit a date that I don’t really feel comfortable with, then push myself to build it, sometime even drop my job on hand totally to make sure I delivered the features and meet the rollout date. It took me about 6 weeks working on and off, eventually I delivered both applications to about 50 users. Railscast, stackoverflow, AWDWR 4th Edition were my most frequently used references throughout the development. You really learn a lot more building up real things compare to just reading tutorial or books and creating bogus websites.
I enjoy every minutes of it, coding in rails, solving problem, changing layout, adding in a bit of jQuery. Everything. But then every minute that I have to perform my normal task become so much more unbearable. I really need to do more real works in rails.
So I search almost every job sites. There are not a lot of rails opening in my area (Penang, Malaysia), and even if there is, it might be difficult for me to find a permanent job in ruby on rails that could pay my current salary. After all I am experienced (7 years) in my current field as a system admin, but in term of rolling out rails apps, I have only the experience of developed two rather small rails apps for 50 users to show, as for rails apps that facing the real world …none.
So when I saw a remote rails developer job opening, I just have to give it a shot. There is a test project as a prerequisite for the job. I thought it could be completed over a weekend, but it took a little bit longer than I wished, end up I decided to take a day off from my work to complete it. Don’t want to regret for not trying hard enough. I learn something even with this small little test project, deploying to engineyard, brush up my regex, pick up some jquery.
After completing the test project, although the employer commending on the effort I put on, he couldn’t take me as he is looking for a permanent fulltime remote employee, not a part-timer. And he doesn’t have the budget to match my current fulltime salary.
I tell him frankly I might not have a lot of real world rails experience, but I really like web development and would love to have the opportunity to work on the project. So we discussed about the possibility of a part time arrangement on hourly rate. We come to a rate that is much lower than if I were to divide my fulltime salary by the hour. But heck, I am starting out and just glad to get my first freelance rails gig.
So far I have been in it for about 2 months, I work on the project by waking up early at 4 or 5 a.m. before going to work on weekday, then a total of 8-10 hours on weekend. Learn a lot of things like version controlling in git, deploying to heroku, which I wouldn’t have pick it up as fast if I am not developing a real apps. Really love every minute of it, and ya, that make going back to my fulltime work even more difficult, just wish to spend more time on the project.
It is tough for me to make a sudden switch of career with all the commitment I have, as I need a stable income. But I intend to keep pushing and not submit to the ideas that my life is done at thirties. Now I am just looking for ways to add experiences and repertoire to my web development skills, while pilling up my github profile. I believe the best way to do that is by doing real work. Hopefully that will open up more doors for me. I know this must be cliché to quote this words now, but still,
“Stay hungry, stay foolish. Keep looking, don’t settle”.