Thursday, November 29, 2007

Friendship: that bittersweet cup

Friendship, is a notion that I took so much for granted that frankly, at this point of time, I cannot remember what it should mean. What does friendship mean? What does being a friend entail? Many times the mention of "Friend" leaves me cold, or jaded, or cynical. How many times do we say "friend" to conceal a more particular nature of our relationship with someone (whether it means closer or further)? For me, too many times.

I guess the reason why I wrote this post is that, being in friendship is not easy. Two reasons: expectations and fragility.

I recall with some sadness, several occasions when I had been let down, very much let down, by people whom I thought were friends. Part of this, naturally, has got to do with mismatched expectation. For a certain friend, being friends means you just have to be available 24/7 whenever they need a shoulder to cry on. For others, that's too much to ask even in a close friendship. In my better moments, I thought to myself, that if _that_ much (or rather, that little) is all that person has got to offer me, I'll take it up gladly anyway. "Give until it hurts," Mother Teresa once said, and nowhere do I feel this more keenly than in some friendships.

After all, it's not easy being a good friend! Another thing I associate with friendship, is both always having to, and, being able to say sorry! I have lost count of how many times I have to precede a conversation with "Sorry", simply because life or some other Passing Interest in my life, had taken up so much time that I forget this or that particular friend for many months or even years... So, for each time that I feel disappointed with a friend, I remind myself that there must be many more friends I am disappointing!

Few "self-improvement" atention is paid to developing friendships.. it is as if the world takes it for granted that everyone innately knows how to make and sustain friendships. Magazines publish articles on how to succeed better at your workplace, how to eat better, how to shop better, but hardly anything on how to be better friends. Perhaps it's true that as children we make friends naturally, but adult life definitely takes toll on friendship; and without much attention paid to our friendships, perhaps someday we may literally wake up to find we don't have real friends.

Another reason for this thread of thought, is that our life very much depends on our friendship with God. Even this relationship gets neglected in the same way that I decribe my neglect of mortal friends. How we treat our friendships is a reflection of how we treat our friendship with God. May there not be a day where we meet Our Lord and found that He does not recognize us as His friends!

Monday, November 26, 2007

Waiting in hope

My favorite liturgical season is about to start, we've just celebrated the feast of Christ the King, and there are just a few days before Advent is here. I used to think that Advent 'snucks' up on us, catching us unaware of how fast the year has gone by before Christmas arrives, and a new year follows. Often lost in the pervasive Christmas-y decorations that have gone up in department stores way before Advent is even here, is the idea that Advent is a period of waiting.

From the Old Testament, we learn that our elder brothers in faith, the Jews, are people who knows the meaning of waiting. From Abraham, who waited until his old age to see the Lord's promise of innumerable descendants, to the Isralites under the yoke of Egyptian slavery, to those who wander (and perish) in the desert for 40 years before they set their sight on the promised land, the Jews are People who wait, a People of hope. And so are we, the people who live after our Lord entered time, we are a people who hope to see behold His countenance one day.

In our daily lives, there are many moments when we hope and long for the arrival of something: birth of a child, liberation from tyranny, recovery from a long sickness, or even, an end to a long, arduous project at work. It is in these moments that we labor to bring Christ into the world. In yesterday's feast, we are reminded that Christ is King, and His kingdom, while not of this world, is in this world, and we, His soldiers, need to conquer ourselves to spread His kingdom. It makes no sense to suffer, to sacrifice and to love, if we are not people of Hope. Christ had come to redeem us, and Christ will come again.

Every year Advent comes upon us, reliving the anticipation of the drama of Incarnation, where God truly becomes one of us. Isn't this Truth something that all human heart secretly longs for? Saints lead their entire lives in anticipation, and sometimes they even lead a foretaste of an eternal life with God, where our souls no longer suffer under the yoke of the world's trials, where God wipes every tear from our faces.

Let us contemplate the humility and the majesty of our God who enter into our life as a mere child; He who could appear anywhere, anytime as anyone, chose not to reveal His glory, but to live His own obscure Advent for thirty years! Every Advent we are reminded of the ethereal nature of our lives here on earth, and it is but one lifelong Advent period to prepare for the coming of God into our lives.

(Written for a newsletter)

Wednesday, November 21, 2007

Random Quiz

Though I'm thousands of (genetic) miles away from being European, this quiz is fun, although its outcome is unexpected!

Your Inner European is Russian!

Mysterious and exotic.

You've got a great balance of danger and allure.

Wednesday, November 07, 2007

Windows woes (part 2)

I haven't felt this exasperated in many years. I've never banged my head harder than I did tonight trying to install a little application onto a Windows Mobile smartphone device.

"What does every mobile developer ultimately want to do?" Simple question, simple answer: "To get the application to run on the phone". It took me hours of poring through MSDN's documentations and technical articles to find out just HOW exactly to do that.


Alphabet Soup
"CAB", "INF", ActiveSync, are some of the terms thrown around liberally in the developers' articles. As if everybody knows what they mean. I don't know what a CAB is, I don't know why only a CAB file can install the app on the phone, and I don't know how do I make a CAB out of my executable. The only reason why I started searching for the keyword "CAB" was because I happened to remember that a year ago, that's what a colleague of mine used to run his Windows Mobile app. Now, if only these three simple questions can be answered in the same article, I think MSFT is justified paying good salaries to their technical writers.

Instead, here I am writing in frustration at 4AM in the morning because the documentation is so fragmented and the information design obfuscated! I really don't want to nitpick, but I'd think that since on-device deployment is a common goal for all developers, creating a CAB project would be a highlighted task/feature in Visual Studio 2005. But no, to create a CAB project, you have to add another project into your existing Project, and on top of that, select it from "Other Project Types"!

Frankly I was impressed the first time I saw the collection of documentation and technical articles available at MSDN website, but very soon it's clear quantity certainly does not trump over quality.

The last hop
Getting the app to the device, after a frustrating battle to generate a CAB file, was jumping through another set of hoops. 'Impressive' was my first reaction when I saw how many delivery mechanisms Windows Mobile support for the app installation: SMS/Email/Cab Installer/ActiveSync/Push SMS, you name it. After another wild goose chase trying to find out what is ActiveSync, and whether it ships with the SDK, and whether I really need to install it, it took another half hour to figure out what is the best way of getting the device 'online' and getting it to access the CAB file.

Needless to say, I did manage to install the app and that's why I am writing this now. But the tears of blood may not be worth it.

Tuesday, November 06, 2007

Some tech updates

This blog hits 10,000 visits yesterday! I can't remember when the site traffic meter was first put in, perhaps some 2 years ago, but still... it's a reminder of how long it's been here, since August 2003!

On other news, I've got an announcement that in the tech world may be seen as nothing short of an apostasy: I started developing software on Microsoft .NET! *Gasp* *Choke* Well, to be fair I had evaluated all my choices and it came down to economics. So a potential client came up to us and asked us to do a Windows Mobile client job. The price was good and we said yes.

So I spent the last few days trying to install the various Microsoft animals that are required to get the IDE and the SDK up and running. Let me write here briefly what I had to do (just in case I ever need to do this again... I sure hope I don't have to!)

  1. Install Visual Studio 2005 (15 minutes)
  2. Explore the IDE, find out just what can it do... (20 minutes)
  3. Complete a little application in half hour's time (30 minutes)
  4. Choose the target mobile platform (Smartphone 2003 / PocketPC 2003 / choose your animal) (1 minute)
  5. Build the project, run into a strange error (0.5 minute)
  6. It says .NET 1.1 is required (hmm.. what is that?) (0.5 day gone)
  7. Try to install .NET 1.1 Framework.... run into error! (1 day is gone)
  8. Google search says .NET 1.1 Redistributable Framework needs to be installed
  9. Try to install .NET 1.1 Redistributable framework... run into error! Even worse than before, because it was not a documented known issue (1 day is gone)
  10. Another Google search says that it's a known issue with Vista! (darn.. don't they all come from the same company??!!) and that the workaround is to do the following with .NET 1.1 SP1 (are you telling me .NET Framework needs a Service Pack too???):
    1. Download Microsoft .NET Framework 1.1 Redistributable Package and Microsoft .NET Framework 1.1 Service Pack 1 using links below:
    * Microsoft .NET Framework 1.1 Redistributable Package
    * Microsoft .NET Framework 1.1 Service Pack 1
    2. Save both installations in the same directory
    3. Ensure that the Microsoft .NET Framework 1.1 Redistributable Package is named dotnetfx.exe. If not, change its name to dotnetfx.exe.
    4. Ensure that Microsoft .NET Framework 1.1 Service Pack 1 is named dotnetfxsp1.exe. If not, change its name to dotnetfxsp1.exe.
    5. Open command prompt as Administrator, and change to the directory where the two installations are saved.
    6. Run the following commands using the order shown below
    * dotnetfx.exe /c:"msiexec.exe /a netfx.msi TARGETDIR=C:\dotnet"
    * dotnetfxsp1.exe /Xp:C:\dotnet\netfxsp.msp
    * msiexec.exe /a c:\dotnet\netfx.msi /p c:\dotnet\netfxsp.msp
    7. Install both Microsoft .Net Framework 1.1 and Service Pack 1 by running C:\dotnet\netfx.msi
  11. After a few days of troubleshooting, fully expecting that these animals won't get along, suddenly the same project compiles beautifully! TA-DA!

By this time, I have come to realize that the price quoted was fully justified -- the IDE installation process alone was painful enough. Welcome to Microsoftville *evil cackle*

Sunday, November 04, 2007

Universal widget?

I was not quite convinced when I saw this heading "Universal Widget", but that's what NetVibes claims they were doing with their open widget platform. They claim they support these widget platforms currently:
- netvibes
- Mac dashboard
- iGoogle
- Opera
- Windows Vista
- Windows Live
- (coming soon) Yahoo!

If this is true, it's too good to be true! Prior to making the two widgets, I had deliberated between iGoogle and Yahoo! platforms, because their user demographics seem quite exclusive (non-overlapping). Now it seems it'll be possible to port them for different platforms using similar (if not single), codebase.