Doing some thinking

There’s no deep thought or idea in this article. Or maybe there is for you. I don’t know. This June 2008 is special to me. How special? You’ll have to wait a couple of weeks before I tell… *smile*

I’m also in a sort of transitional period. So I’ve been thinking and reflecting. And I’m going to tell you a little story…

[referral links present]
I actually hate to have to say that. You’re a big boy (or girl). You’re an intelligent person. You’re a programmer for crying out loud! Can’t you hover over a link and decide if that link is an affiliate or referral link without clicking on it? Are you that pressed for time?

The seminars

It started with 2 back-to-back seminars (2-day-4-day). The first was a wealth seminar. It’s an event where some wealthy people go up on stage and teach, inspire and generally make the audience feel good about themselves. The presenters told their own stories of how they overcame their own fears, doubts and poverty (to a certain extent). In the end, there’s a sales pitch. If the audience liked what they’ve heard, and they wanted to continue learning from the presenter, they signed up for a package, or bought a product, or joined a membership.

I’m usually relatively inert to such tactics. As an experiment, I gave in, and bought a product, a set of CDs containing recordings of a workshop conducted by the presenter. It cost me slightly less than 500 Singapore dollars. I actually thought it contained a video recording, not audio. Well, I listened to the first 2 CDs, and then decided I had better things to do.

It wasn’t a complete loss, since I learnt how sales pitches worked, what a wealthy person’s mindset was, and how innocent and naive I was about the Internet marketing world. Besides, the seminar was uplifting. And an investment in a business education.

The second seminar was the World Internet Summit. This one seemed a bit more up my alley. It’s still like the first one, but with an emphasis on online businesses. There were some flaky tactics presented that I didn’t quite approve of. But I was there to learn, so I kept my mind open.

That was where I learnt about Adsense, pay per click and pay per lead. That was where I got to know about affiliate marketing, copy writing and selling digital products (eBooks). That was where I found article directories, Technorati and blogging. It was a lot to take in.

I was in the mood to create my own business. Somehow. I remembered something from the Summit.

The Internet is the cheapest place to fail.

Agreed, up to a point. If I made a phenomenally stupid mistake, it could also be an expensive place to fail. AdWords could eat up thousands of dollars if careless.

So I started my own business. You’re reading it. I started blogging. I’ll be honest with you. When I started writing, it was mostly to make some money online. The original idea was a combination of affiliate sales, advertisements (Adsense primarily) and possibly a product of my own (eBooks were the hottest and easiest to create. Supposingly…). Now, I write to make a difference in the world. I still desire making a living online somehow, but it’s now shunted down my list of priorities.

Studying again

My chosen blog topic wasn’t the make money online ones (thankfully on hindsight). I was still floundering around. I disliked writing essays when schooling and had to accept that I had to write stuff regularly *urgh*. I was just browsing around doing research, when I happened on this Australian blogger Yaro Starak. He was starting a blog mentoring program, Blog Mastermind, teaching people how to blog and earn enough for a comfortable lifestyle.

One of the good points I learnt from the seminars was, I needed to invest in my education. After the $500 product purchase, Yaro’s program looked cheap in comparison. So I joined. Not before reading his long sales page though. If I was going to learn anything, I might as well have a look at how sales pages were written.

His program is great! I learnt loads from that program. I’m a beginning blogger and businessman, remember? A couple of weeks in, I finally decided on my focus: programming. It’s not the most profitable niche, but it’s the topic I’m really good at and passionate about.

From the seminars, WordPress was strongly recommended as a blogging platform. Yaro recommended it too. Luckily, I was already using it. If you’re not on WordPress, or considering a move, take a look at Injader. It’s written by Ben Barden, and it’s got lots of easy to use features. It’s also free! You can’t beat this price…

So from Yaro’s program, I learnt about marketing myself and my blog. Which was hard, considering I’m generally an introvert. Many things require me to sell myself anyway (asking for raise, promoting proposals), so this was practice. Blog carnivals? No programming related ones. Start one? Too much effort, too little time. Blog networks? None of significant repute willing to take me in, a small time blog (although now I’m in Alltop). But I plodded on. I learnt more about creating online businesses, which was fun.

Join and participate in discussion forums? Hmm… and I found Dream In Code. Very awesome, great programmers, fun people. Check it out. I was itching to help with programming questions anyway. My handle is orcasquall.

RSS out of hand

I read more blogs, and started subscribing to blogs. Blogs related to programming, such as The Daily WTF, Coding Horror, Joel On Software and The Old New Thing (Raymond Chen). Funny thing about Raymond’s blog. He writes about Windows development, I don’t do any Windows development yet I continue to read. I think it’s his style of writing, and his sometimes resigned tone of voice as in “why do people do such egregious coding?”. I can so totally relate…

I also thought maybe I’d try out technological blogs too, since it’s sort of related to my field. So I subscribed to TechCrunch. Big mistake. I caved after my unread RSS feed items climbed above 50 within a day (including my existing ones). I thought Lifehacker, a self improvement site might be ok. Another gargantuan mistake. I unsubscribed after scrolling through the items without reading for the umpteenth time.

Then came BlogRush. That seemed interesting and effortless. It eventually didn’t quite live up to it’s promised results, but it was fine. Another lesson learnt.

Then came Entrecard. I get to play with being an advertiser and take on advertisers? Cool, even if it’s with play credits. I might as well learn to deal with advertisers, hopefully practising for the real deal.

For some reason, I couldn’t find any programming blogs with, shall we say, a lower priority on the make money online part. In the Blog Mastermind lessons, I was instructed to approach bloggers on a similar level to mine. Basically a blogger with a huge following would generally ignore a fly blogger like me. Where was I to find programmers with a blog of similar size to mine? That was a challenge.

Still, with Entrecard, I found lots of interesting sites and people, some of whom were even passionate about their non-make-money-online topic. Shocking I know. Slowly, I found interesting people, much more and much faster than I would in real life. I don’t know, I start on Gaussian elimination or the finer points of string manipulation and people start nodding their heads. In stupor.

Anyway, there’s

Ever since I started blogging, I am even more supportive of some sites. Please go download Paint.NET, and put away Photoshop or even Paint *urgh*. Please also go visit demoscene resources pouet, and Nectarine (demoscene music).

Ultimately, blogging made me a better programmer, because I’m forced to challenge some of my internal understanding. I had to think about the concept before I could write about it. Helping with programming questions in forums forced me to explain concepts and terms in easier to understand language. Plus blogging related activities are fun sometimes.

I’ve also decided in this most special of months to join … Twitter. I know, I can’t believe it either. How would I ever squeeze my thoughts into 140 characters? *smile* Follow me on Social media and software is going to be important. If I’m to understand it, I’d better be part of it too.

So if you’re a programmer, or you know someone who’s a programmer, please ask that person to start writing. The best ideas in the world are useless if they’re kept locked up in that genius mind.

Path of a Polymath Programmer Part 7

I’ve covered diverse topics on my path to becoming a polymath programmer.

  • I went sleuthing with Encyclopedia Brown.
  • I’ve been a warrior, a mystic, a knight, a mutant, a thief, a superhero and many more in role playing games.
  • I went on adventures with computer super spy Orion.
  • I was (and still am hohoho…) phenomenal at typing.
  • I taught myself the Japanese katakana and translated them into English equivalents (whenever possible).
  • I’m well versed in 3D graphics theory and appreciates the beauty in art.
  • I studied computer virus behaviour.
  • I did game development and researched on related topics.
  • I came into contact with the demoscene and appreciates the art and programming involved.

Notice that most of the above had very little to do with programming itself, yet contributed significantly to my development as a programmer. Read up the previous articles at

Your path is most probably very different from mine. The important thing is that you experience, understand and appreciate the many different fields involved. Programming is just a skill. Your ability to understand concepts and translate that into code is the most important thing you’ll ever have.

Joining the workforce

So my malleability and ability to learn fast was tested when I left school. I had to learn how to write resumes and go through interviews. For seven months (yes, I kept track) I was unemployed.

My big break finally came and my recruitment agent called me up one fine afternoon to tell me I’m granted an interview with a local big company. I had just collected my paycheck from my part-time stint as a data entry personnel. Unemployed again, I was wondering what to do next. That call was a lifesaver.

On the day of the interview, I had to call and say I’ll be late. Bad, bad, bad. It was none of my fault, really. The (Mass Rapid Transit) train I was going to take to reach the company had some trouble, and I was stuck at the train station for a while. Still, I was worried out of my skin.

When I reached the company, I found they rescheduled the person after me to get interviewed first. Determined to make the best of the current situation, I calmed myself in preparation for when it’s my turn. The interview turned out ok, and the interviewer seemed impressed by my qualifications in applied mathematics (cool!). I was eventually hired, and on hindsight, I think the interviewer hired me because he believed I’d be a more well rounded addition to his team. His team members were mainly from the computer science and/or computer engineering background.

[short digression]
So, in the interview, his last question turned out to be an IQ question. You were given a cube, and then had it painted on all 6 sides. Then you cut it with 2 parallel and equally spaced slices from the top. Then another 2 parallel and equally spaced slices perpendicular to the 2 from before. And then you cut it horizontally with 2 parallel and equally spaced slices from the side. Basically you’re left with something that looks like a Rubik’s cube. The question? Give a breakdown of the number of smaller cubes thus cut with the respective number of faces painted on those smaller cubes. I’ll give the answer at the end of this post.
[end of digression]

I finally got a programming-related job! My first two weeks turned out to be nothing like what I imagined. I only knew C and Matlab from university. I picked up a little C++ and Windows programming and OpenGL and DirectX on my own. Only the C language turned out to be useful.

The backend programs were written in C. Fine. They connected to the Sybase database. The what? Thus began my first crash course in the language of databases: Structured Query Language (SQL). I learned how to create tables, run select queries, do inserts and updates and deletes.

Then I had to deal with Delphi components. The Windows interface was coded in Delphi and I didn’t know anything about it. Another crash course from a fellow colleague since I’m to support the program.

The .NET phenomenon was still in effect, so the web application interface was written in VB.NET with Visual Studio 2002 (subsequently upgraded to 2003). Didn’t know VB nor VB.NET. Didn’t know Javascript. Didn’t know VBScript. Didn’t know Crystal Reports. It was terrible… and I haven’t even touched on all the business logic and systems and documents I had to go through.

The job changes

Well, after 2 years as a contract staff at the company, I decided it was time to move on. Due to my expertise in the team’s system and business logic, I was too valuable to use for programming, yet not valuable enough to be included in higher profile meetings. I was basically juggling Excel spreadsheets for the users and acting as the helpdesk.

I love programming, and I didn’t like being stuck with mainly administrative and system support work. So I left. I joined a startup company as a C# programmer. I learned first-hand the day-to-day tasks involved with getting the first software product out.

It was also unimaginably unbearable. The stress involved with producing a profitable software application, on the first try, at a startup, overwhelmed me. I prefer a more conducive environment for thinking. So I left, again.

I got hired next as a C# programmer with a software agency. I was then sent to work at another company with the agency’s team that’s already stationed there. The job was to create an enterprise system software (yes your warning bells should be ringing right about now) for the company’s workflow processes.

Despite some of the flaws I encountered, I still learned tons of stuff. I learned about custom web controls, really separating the business logic (like, onto a different web server from the application server) and handling language resources (for an international audience). I learned to work with people from many countries and in a big software team too.

When I reached the end of my 4 month contract, I was actually offered a renewal. But I had other plans. The pay left a little to be desired, and I really wanted to feed myself better. I asked around and got my job from the first company back! I’d be in a different team but still close to my original team. Cool! I’d be experiencing a different work team dynamic.

So at the new team, I was tasked with creating a .NET web application from scratch. There were tons more project deadlines to meet, though the projects were smaller in size. I even got to do some public speaking, presenting (web) applications and training users. And I’m still here as of this writing.

Getting to the blogging

I’ve amassed a ton of experience, both programming and non-programming. And I wanted to share them. I wanted to express my ideas and let people know about them so they can learn from my experience and mistakes. Then I found this site by Yaro about entrepreneurship. He’s also a blogger.

I read through his blog posts and found them really informative. So when he announced that he’s going to teach people how to blog, I signed up right away for his Blog Mastermind program. I mean, a blog is a fantastic vehicle to share my knowledge and experience. Compared with my previous web site creation attempts, a blog is probably easier to maintain.

Well I’ve wanted to be more actively involved in online communities, particular the programming ones. Since Yaro also talks about forums and communities, I figured it’s about time to start. And found Dream In Code. The site offers programming help, has great people and I love the dynamics happening there.

The last word?

So, there you have it, my path of learning and becoming a polymath programmer up till now. It’s by no means complete, because I will continue to learn new things and as a result, be a better person and ultimately be a better programmer.

Share your thoughts!

*The answer to the IQ question above is 1 with 0 sides painted, 6 with 1 side painted, 12 with 2 sides painted, and 8 with 3 sides painted.