It was cold in the computer lab. I finished typing with a flourishing [Enter] and…

A bunch of compilation errors longer than the menu list of McDonald’s poured onto the screen.

What?!? I checked my program again, and found it. A missing semicolon. I typed
cc lab01.c -o lab01
again with a slightly less flourishing [Enter] and…

A blinking cursor on the Unix command prompt. Yes! I was certain it was error-free. Oh right, I had to run the program to check that it’s actually correct… No program is certain till you test it. And even then…

Oh boot camp…

Which reminds me of the time when I was in military boot camp. Everyone was tired. The corporals and sergeants and officers might be bossing you around, but at the end of the week, even they wanted to leave camp on time.

However, leaving the camp on time on Saturday depended on the ranking officer.

There was a saying that when the ranking officer said everybody could leave at 1:30pm on Saturday, it didn’t mean everybody could actually leave at 1:30pm on Saturday. The sergeants advised all of us recruits to keep our hopes down. Then when it actually happened, we could take it as a pleasant surprise.

Maybe it was “Everybody eats lunch at the cookhouse. Inspection of bunk at 1pm. The whole company can leave at 1:30pm if they pass.”.

You know what? Everyone ate with gusto. Everyone rushed back (with impeccably cleaned utensils of course) to the bunk. Buckets of water to wash the floor and walls. Even corridors weren’t spared. Lockers were wiped. Uniforms were tidied. Beds were made and arranged in strict 90 degrees to the walls and in line with the beds on the opposite wall.

Even then, we weren’t certain we could leave at 1:30pm. Which reminds me of a story I read…

Telling weather

There’s a book series called Elenium written by the late David Eddings. In it, there’s a race of people called Elenes. This race was described as being impeccably logical, almost to a fault.

There was a scene where this Elene logic was being made fun of. A character said that it would take an Elene forever to tell you what the weather was like, even if all you needed to do was look out the window. Another character said,

“Ahhh, but when an Elene tells you it’s raining, you’re absolutely certain that it’s raining.”

It didn’t happen, till it happened.

Because I read David Eddings *cough*, I didn’t feel too bad waiting for the go-ahead to leave camp. If it happened at 1:30pm, we were happy. Even if we could only leave at 2:30pm, we counted our blessings.

Back at the lab…

I typed “lab01” at the command prompt to run my program. The bane of my Unix C programming existence happened.

Segmentation fault.

The worst kind of error because it’s one of the hardest to trace and find the bug. And I was doing matrix computations. With malloc here and pointer there.

Nothing is absolutely certain. The best you can do is have a good chance. The only things that are certain are in the past. And you know what they say about history?

History is written by victors.

Go make something happen.

SpreadsheetLight now freely downloadable

Wow, I just mentioned I relaunched SpreadsheetLight, and now it’s free?

Truth be told, it was a hard decision. I spent a lot of time and effort on SpreadsheetLight. There’s an ECMA documentation PDF that’s over 5000 pages long involved. There’s cross-referencing with the Open XML SDK documentation. There’s experimentation with the actual Excel software to make sure the values are correct. I wrote copious amounts of XML documentation (every single public function and property) so that IntelliSense helps the programmer while he’s using the library.

Did you know Excel’s interface takes in values that are different when assigned to certain corresponding properties? SpreadsheetLight functions take in those Excel “approved” values rather than the Open XML recognised ones. Using SpreadsheetLight is as close to using Excel as you can get.

The crucial point came down to this: I want programmers to benefit from the software. It’s of no use to me or any programmer lying forgotten and hidden behind a pay wall.

And so I freed it.

It’s now free, both in gratis and libre. It uses the MIT License. Download it. Do whatever you want. Come back and tell me how easy your life became.

I only ask that you tell anyone who might benefit from the use of a spreadsheet library. Even if you don’t need to create spreadsheets, you can still download it and see how easy it is to create one.

SpreadsheetLight can be found here. Thank you.

What excites you?

Here’s an interesting story (“sickly” would be more appropriate, but that’s not “interesting”). It was a balmy Friday night. The weather had been finicky of late (she’s been listening to Katy Perry’s “Hot N Cold”), alternating between dry heat and cold rain. Even my kitchen floor tiles couldn’t handle it (they blew up like 2 tectonic plates colliding into each other. It’s not pretty…).

Oh yeah, balmy night. So I was sitting at my computer desk working on my new project. But I’ve been pushing myself just a tad too much. And what with the weather and all, my body decided to give me a little warning: a running nose or blocked nose, depending on its mood (my body probably listened to “Hot N Cold” too…).

Being the persistent little bugger I am, I decided to at least come up with a design for my project (It’s a training course, so it’s a design cover for the ebooklets). Man that took forever. Designer I am not… At that point, I was feeling a bit feverish. I was either sniffling or trying to breathe or sneezing (my record was 5 sneezes consecutively without pause).

I finished the design and was ready to call it a night, but I was like “No, I want to do more!”. My brain apparently doesn’t talk to my body. So I opened up an ebook on copywriting by Naomi Dunford from IttyBiz (It’s named Copywriting For People Who Categorically Do Not Want To Be Copywriters When They Grow Up. I think that pretty much sums it up. It’s good by the way).

At that point, my body decided on a running nose and blocked nose at the same time for me. The running nose wasn’t much of a problem, since if you breathe through that nostril, the mucus dries up quickly. My left nostril was blocked though. So I turned to the expedient method of tilting my head to the right while reading the copywriting ebook (yeah, I’m hardcore). Eventually the left nostril would clear (through gravity or whatnot. I’m no doctor…). That allowed me to read while breathing through the right nostril, and allow the left nostril to slowly clear, but it gave me one heck of a neckache because I had to tilt it slightly backwards too so that nasal innards don’t drip down on my nice keyboard.

Finally, I decided to really call it a night and went to bed. It was what you’d expect. I got a fever, a cold and a cough. My back was sore and I tremble uncontrollably.

Saturday came but I didn’t notice it. I was too busy sleeping (my cat still wins me in the sleeping department though).

So in between bouts of lucidity and delirium, there were only 2 things I thought about: trying to breathe and my project. One side effect is that I learnt to focus on my breathing (forced meditation?). So what’s my project? It’s a training course for programmers to decipher an Excel file enough to come up with code to generate that Excel file.

There are numerous resources online teaching you how to do this or that with either straightforward XML-styled version or with the Open XML SDK version. However, they don’t tell you why or when you should do it. It’s like teaching programmers how to do for loops or lambda expressions without explaining why they would ever need to write a for loop or use lambda expressions.

So while I’m lying in bed, trying desperately to breathe properly (through one nostril or ideally two), I’m so excited about my project that even when sick I’m still thinking about it. Of course, I couldn’t do much (I could only think of explaining the various colouring options that Excel has). This is where the Chinese proverb comes in “The mind is willing, but the body can’t” (or some such).

It’s Sunday. It hurts to get up. It hurts to even think about getting up. Food tastes weird. Even plain water tastes weird. What gets me through the day is something that excites me.

Whatever it is that gets you jumping out of bed, hang on to it. *sniff* (I advise against getting sick if you can possibly help it).

Shorter decision cycles

So in the last Barcamp Singapore, there was a guy who talked about the (bleak) future of robotics in our lives. (I read somewhere there’s a bot that washes and massages your hair). He made a point that robots make building stuff faster and easier, for example, a 30-storey building in China could be built in days.

Because building stuff becomes faster and easier, decision making skills become more important.

An audience member commented the opposite, that because building stuff becomes faster and easier, decision making skills are less important (because you can always start over).

As with most complex issues, both answers are correct, under certain conditions.

In the long run, decision making skills are more important because the consequences of those decisions compound over time. If you never learn from your past decision mistakes, then compounding will eventually break you. You can start over, but you’ll never improve the quality of the sum total of your decision consequences.

In the short term, decisions might not be as important, since you can always start over. You either didn’t lose much money or much time.

However, consider the situation where there are 2 billionaires. Both decide to build multiplexes. Half-way through, the 2nd billionaire found out a mistake and decides to abort the project. Then he starts a new one (maybe build somewhere else).

Sure, the 2nd billionaire might be just days behind the 1st billionaire. That might not mean much.

But these are billionaires we’re talking about. If the 1st billionaire is astute, he would have already gained enough of an advantage that the 2nd billionaire would never catch up.

In the hands of the capable, even making just one more good decision is crucial.

The Crotch-Grabber Bully

In which I tell you about the time I was humiliated in front of an entire class by a teacher, was called a female fox, and almost had my nether regions grabbed. Though not at the same time (which would have made an awesome tale).

Untold in the video, is the time when I ran away from a bully. I was in the volleyball team in primary school. There was this big bully who was making fun of me. I think it was about my hair.

I ran away, by giving the teacher in charge an excuse.

Unfortunately, the school started a computer club, which happened to be in the exact time spot of the volleyball practises. Due to the excuse I gave, I couldn’t join the computer club.

What would’ve happened had I dealt with the bully in a different way, such that I was able to join the computer club? Would it have made a great different to me now? I wouldn’t know.

This post title is probably gonna attract all sorts of weird spam…

Are you afraid to start your own business because…

you’re afraid people will ask for refunds, and you don’t make any money at all.

If you have a steady paycheck, the company paying you your salary is not going to ask for your salary back, right?

But if you have your own business, and if your customers ask for a refund? Then you’d have rendered a service or provided a product, but you don’t get paid.

If that’s the case, why are there so many food stalls here in Singapore? Singaporeans are notoriously picky eaters. It can’t be that every single food stall sells delicious food, right?

What are you truly scared of?

$100 Startup bundle

I respect Chris Guillebeau a lot (possibly even a raving fan). His book $100 Startup is going to be on sale soon. But the more important reason is that you can get that together with a bunch of business-y stuff at Only72 right now for $100 total (yes, that’s totally an affiliate link).

Out of all the products in the bundle, I’m interested in the “How To Make iPhone Apps With No Programming Experience” ebook, the small business infrastructure ebook, and guide to publishing ebook.

You want to start a business? This’ll get you started. Hurry, it’s only on sale for 72 hours (hence the name).

Can’t wait to read Chris’s new book. Have I mentioned that’s a hardcover that will be shipped anywhere you live if you buy the bundle now?