A New Long Post

Sorry for the sporadic posts, I’ve been busy, and pretty exhausted.

However, I did grow a year older, and I am at least tall enough to reach a bear’s armpits!

A problem with wanting to blog textually, is that I really have so much to say that I don’t know where to start, and what to leave out, because it is really a big long story!

Anyway, 2010 has been a very interesting year for me – I changed my employer, finally, after 4 years of interning (during college) and 5.5 years of full-time employment. In the interest of self-preservation and continued employment, I will leave certain details out, which can be gotten in person.

Outsourcing is a very interesting phenomenon. In short, my job was made obsolete, and the team I was in was to sit at the vendor’s office and learn the system. Then we were called back, and I quit and joined the vendor instead.

Oh well, 5 years in the same position doesn’t give significant increments, but I absolutely loved the ex-company and its perks (then). Now when I say ex-company – I mean that I had been paid by the same company, never needing to go for another interview, but the stuff I worked on was always changing.

Also I had this fear that I had become unable to learn anything new – ASP.NET was just too much of a pain in the OS to install (Microsoft, please un-f— your Windows Installer system – it’s still broke on my home Windows 7 installation). Hence, I was doing classic ASP 3.0 for pretty much my run of service! We tried to get our foot in ASP.NET, going for courses held by lousy instructors who just tell you to go to Page 3 of Chapter 4 and do the exercise while the instructor sits there and asks if we have any problems retyping the code from the book into the machine.

But then I was thrown into deep water at the vendor’s office, learning XSL (which I quite fancy, since XPath is full of win) and then I soon found myself teaching other colleagues, who were thrown into the water at the same time I was.

I was smart again!

I could learn again!

Several other incidents led me to decide to leave the company, but I was surprised that I made the decision in 2 days!

The Xfresh.com domain was registered on the 18th of August 2000, and the team was formed and I started interning on the 18th of December 2000.

Exactly 10 years later, the domain expired.

That was the same day I had the initial sentiment to move on, although I didn’t know the domain expired until a few days later. What a intergalactic coincidence!

And so, I make my first sweepingly public statement – I am no longer just a classic ASP web programmer! I’m doing XSL, a tiny milligram of PHP (but enough to Tweet as an xAuth user, which I’d say is 1337 enough) and the subject many IT students feared – Java.

Web programming makes you stupid. It’s linear, and when you try to introduce object-oriented and reusable, modular components… you get teammates who don’t get it and write stuff like this:

<select size=1 name=day>
<option value=1 <%if fday=1 then response.write(“selected”)%>>1</option>
<option value=2 <%if fday=2 then response.write(“selected”)%>>2</option>
<option value=3 <%if fday=3 then response.write(“selected”)%>>3</option>
<option value=4 <%if fday=4 then response.write(“selected”)%>>4</option>
<option value=5 <%if fday=5 then response.write(“selected”)%>>5</option>
<option value=6 <%if fday=6 then response.write(“selected”)%>>6</option>
<option value=7 <%if fday=7 then response.write(“selected”)%>>7</option>
<option value=8 <%if fday=8 then response.write(“selected”)%>>8</option>
<option value=9 <%if fday=9 then response.write(“selected”)%>>9</option>
<option value=10 <%if fday=10 then response.write(“selected”)%>>10</option>

What’s worse is when a teammate defends the practice of excessive forking to avoid accidentally corrupting the source. Except, of course, when you need to patch a security hole, you have to find each fork and patch it, because apparently programmers don’t generally know what SQL Injection is! (Or worse, assuming that just because one .NET component is immune, that you don’t have to sanitize your input and output, or worse, applying the input sanitizing filter to the output and vice versa.)

So where was I, besides getting all worked up about some appalling habits I had to bear with back in the day?

Ah, Java. Reason being that having recently adopted an Android phone, I am also now an Android Developer! It’s not out yet, though I have developed my personal Twitter client just to tweet as Glaring Notebook. No, you don’t need to be a programmer to make your own Twitter vanity plate – I leave that to you to Google. 😉

Java is fantastic! Despite having a very steep learning curve, it is also a very, uh, fascinating language.

So how’s “fragmentation”?

Ah, the only 4-syllable word that iPhone fanboys can pronounce. 😀

It’s only a problem if you don’t know how to write your code to be flexible. I remember the people who would complain that this CSS code would not work in IE. Well they were just making it too complex when simpler CSS would do the trick! I’ve never had to use one of those tags which discriminate browsers.

(I am also a supporter of IE’s logical box model. Padding on the inside doesn’t change box dimensions, it only makes sense!)

That said though, it does have some implications – developing on my HTC Desire on Android 2.2, I didn’t know how much was missing in Android 1.5 until we got a HTC Magic running on Android 1.5. No XPATH? The agony! Performance was slower because it didn’t support Just-In-Time compilation, and it was just slower in spawning new asynchronous threads.

So I had to optimize it for 1.5, which is where I should’ve started in the first place.

This would pose a problem for those developers buying Google Nexus S phones, with Android 2.3, which features concurrent garbage collection (for significantly less lag). So it works fine on a 2.3 device, but will be jerky on a 1.5 device.

Oh, and if the application scrolls jerkily and crashes, it is so totally the programmer’s fault, not the phone’s. I’ve seen smooth, responsive applications in 1.5 – and I look at them in awe and respect.

I’d say that fragmentation is much less of an issue for programmers, than it is for customers, since programmers know how to get around it.

I have another confession to make.

I am on stock Android 2.2 with HTC Sense, South-East Asia version, downloaded from over-the-air. I have not rooted my phone.

I can root and underclock/overclock and do other optimizations, but it will not be reflective of the performance of my application on un-rooted phones, which make the majority. And yes, I will keep the HTC Magic torturously caged by 1.5, instead of the 2.2 that it can update to.

Also, rooting allows access of SQLite and private data to other programs who do not own that data. That’s not something I would like, because I know what I could do with it. 😉

Android 1.5/1.6 is to Android 2.1/2.2/2.3 as what Windows Vista is to Windows 7. A far less glamourous, polished product.

I’ve no idea how to end this blog post, but I’m just mentioning my intent to end this blog post so it doesn’t look like I didn’t copy all the text from Notepad. 😀

9 thoughts on “A New Long Post

  1. Dennis Lee Post author

    Uh… sentimentalnya… wah almost 10 years for a company… that’s pretty long!

    So does it mean that you are still working for the same company but different department?

  2. Zhi Shan Post author

    wow. very rare to see someone of the Y generation to stick at a company for more than 3 years, let alone 10!!

    congrats on moving on. =)

  3. Albert Ng Post author

    Dennis Lee: Heh no – I worked in the same company but different department for 10 years. Now, I am in a different company.

    smashpop: Wawaweewa!

    Michael Ch’ng: Insane!

  4. Albert Ng Post author

    Silencers: So do I, so do I! Though, for Java, you have gotta use Eclipse, because the amount of code you have to type to get the syntax right is not worth it in Notepad. I still love Notepad for HTML, but Firebug is quickly becoming the absolute tool for debugging CSS.


Leave a Reply

Your email address will not be published. Required fields are marked *