Wednesday, August 06, 2008

The return of the prodigal son, Day 42

I jumped a total of 34 days after the last update.  During this period I a. bought a new laptop, b. went to Vancouver for a wedding and spent an weekend there.  c. farewell-ed my summer roommate d.  spent around a week soul-searching of what I'm supposed to do.

Today I finally unpacked the ConcernExtractor... however, just as any kind of software update, CE no longers works on Eclipse 3.4.  However, the plugin did load now :) so the rest is just code defect.

Finally, spending the night on CE also makes me rethink how I need to write my final section - how does CE help to locate and refactor the crosscutting clusters.  I realized that I don't need to try very hard into making sense of the data.  I only need to show that:

1. CE lets us visualize the location of the clusters

2. CE can simplifies the pointcut expression needed.

But now I am having a stomachache so I will stop and resume tomorrow morning perhaps?

Wednesday, July 02, 2008

The return of the prodigal son, Day 8

What was supposed to be light dinner with a friend/colleague turned out to be a ultra-Korean-feast.  My friend went back to work but then I was too full (what an excuse) and went to Barnes & Nobles.  Then went home and researched about Charles Petzold and his new Turing book instead.

But the seafood pancake at Seoul Hot Pot is good... so good that I ate half of it and now still feeling the pancake in my stomach

Moral 1: If I want to accomplish something, then eat quick.

Moral 2: Don't overeat Isaac.  You know the moment you eat the 4th slice that you just won't work after that.

Moral 3: Have a very definite plan of what I need to do at night.  Now I didn't do what I wanted (determined which laptop to buy) and it's like 2 am already.

Goals tomorrow:

  • Buy the laptop
  • Restart the work - cannot let the fire extinguish
  • Eat light

Tuesday, July 01, 2008

The return of the prodigal son, Day 7


Favor asked, favor refused, more questions, then favor (kind of) understood, if not totally granted.

So Thank you.

But as I fear... even I try to avoid as much distraction as possible, there's a big possibility that the resistance is futile.

To conclude my day, it ended up that the biggest distracter is still myself.  I started to think - even if I skip whatever activities that I wanted to go because I want to finish this thing, it just probably won't work out as well as I thought.  I have countless ways of wasting my time in many things, some of which are of no importance, some just bad, that may be I just better of partying.

Alright that's just one silly thought...

Thesis Progress

I wrote today:

-- Thesis content begins ---

  • If the target code snipplet is located at the beginning or the end of a method body, refactoring it into aspect using simple call or execution  pointcut is straight forward.
  • If the target snipplet is located in the middle of a method body, refactoring  into aspects using only a  simple call or execution pointcut is not possible, unless you move the the snipplet to the beginning or the end of the method which is unsafe in most cases.  Refactoring this type of snipplet typically requires a composite  pointcut expression that involves using control flow-based pointcuts.
  • If the target snipplet is located inside a loop, an if block, or a try block, then refactoring the snipplet into an aspect requires a composite pointcut expression that involves using control flow-based pointcuts.

    -- Thesis content ends ---

    The next goal tomorrow is to describe how the distribution of clusters affect the applicability of ConcernExtractor: if we find that all of our refactoring targets that belong to the same group are located at the beginning/end of a method body, CE is really not much use.  If some are located in the middle of the body, then CE can be useful.  If most refactoring target are located in a block, or middle of the method body, then CE is useful because I don't need to create complex pointcut that describes each location of target join point.

    Initially I was stucked at pondering if a try block would catch an exception that is thrown by advice of a join point that the try block wraps around.  Since I know my computer will just blow up if I install AJDT, and I don't have the Java SDK for now, I cannot test it and need to find some documents that talk about that.

    Finally I found the online Aspect J book which explains it.   But then my paragraph (point) starts to balloon as I try to explain how complicated the pointcut will be, if I try to create a pointcut expression that describes code inside a loop; or that how I cannot create a common advices if some of the refactoring target that belongs to the same group are located in a try block: I may need to declare that I'm throwing an exception for in some scenario, but not in others if the containing block re-throws it.  Since I don't have AspectJ installed (yet) it is hard to really visualize what might happen.

    Until I realize that I only need to prove that the Concern Extraction technique will be useful - I don't really need to talk about how complicated the pointcut expression will look for edge cases (at least not for now) and I need to move on first.  So it ended up that I cut around 100 words instead of producing it...

  • Monday, June 30, 2008

    The return of the prodigal son, Day 3, 4, 5, and 6

    Fighting off distraction is a very tough job... and I realized how easy it gets to just start typing (esp now FF and IE have auto-complete) and start time-killing...

    Another tough part is setting up the machines correctly: I remember when I was first starting the thesis writing I started using a combination of Eclipse and TexLipse plugin.  It ran fine on Linux but on Windows I needed to use MikTex and then all hell broke lose.  Because McGill thesis template requires several external packages, it took me several days to find those packages on some obscure, configure them, and make MikTex produce a correct DVI of the thesis sample.

    I remembered when I first came to Seattle and attempted to work on the thesis.  MikTex just had a new version (2.6) but my laptop had an older version and I had tons of troubles using 2.6 to keep working, I had to literally mirrored the whole file system from my laptop to one of the desktop machine so I can work using the desktop as well?

    The main reason I didn't want to use the laptop to write was also because Eclipse 3.2 was taking so much memories and it took forever to generate a DVI layout, and I needed to terminate every essential service manually so the system wouldn't crash.

    So as I am "rebooting" my effort, I decide to go back to the good old Emacs and MikTex.   To my surprise, MikTex 2.7 has this very neat feature that download missing packages on-the-fly!  So as I ran 'latex mythesis.tex' command, it automatically downloaded the packages that I so painstakingly tried to configure before!

    I also go back to Emacs as the primary editor... not that I don't like TexLipse... but my 7 years with Emacs tells me that it's by far the best editor available - no I will rather die than to use Notepad...

    So after a few emacs tweaking, I re-acquaint Emacs again back to my college days!

    Now I can start working!

    Thursday, June 26, 2008

    The journey of the prodigal son, Day 2


    Sometimes when you are determined to accomplish something, the whole world turns to distract you.  Today I still have not started the work; however, my tools are prepared.  Both the IDE and the MikTex are downloaded and ready to be load.

    The remaining things on the list are:

    • Buy a new computer that has enough RAM for programming if necessary - probably the hardest thing to decide cuz of the costs.
    • Make sure that I can generate latex with my MikTex configuration
    • Get the tools ready: 1. the IDE, and 2. the emacs, 3. the latex plugin.

    Work - well I was pulled from the crew work to work on creating branch and unfortunately the branch work is tedious and unchallenging intellectually but fails very often and time/attention sucking.  Thanks to the MyRadio shows, I kept my attention on the task at hand instead of avoiding it.  But tomorrow will be the difficult day.  In order not to suck my energy so I cannot give to anything else, the only solution is to start early.

    For the last hour I was hoping to upload the pictures on FB but it has been failing me... I wish our Microsoft Live has a similar service where I can upload pictures (with good quality) and allow us to tag our MSN contacts on the pictures and share it on the web.  But don't use it on the Spaces... that thing (along the eye-torturing banner ad) is just ridiculous and I don't know about you, but I just hate using it.

    Here are some pictures from Montreal I can share here though...


    My new bags...


    With Billy at his farewell dinner


    The reunion with the kings of Ephesus

    Wednesday, June 25, 2008

    The journey of the prodigal son, Day 1

    The journey of the prodigal son... you may wonder, "What the heck is that"?  Isn't prodigal mean someone who was lost?  Isaac, what's wrong with you...

    To make the long story short, I wrote this as I just returned from Montreal, a town both I consider my home but also a place I struggle to come back to.  Why?  I guess I left many things undone and regrets there. Most important among them: I went to Montreal to complete a Master degree in Computer Science.  Although the journey did help me to find a job and earn my many friends, I was also distracted, so I never completed my thesis when I left for work in August.  I completed the bulk part, but once I arrived at Seattle, I lost faith in myself, and I lost the heart in completing it.

    Although I told both my parents and my supervisor that I will complete, I was avoiding it subconsciously... though many weekends I hid in the library to write it, the progress eventually slowed... to the point that I was deceiving myself, and those who cared for me, while I never intended to complete it anymore.

    Then came the bombshell: as I was struggling how to face this failure, I discovered I wasn't considered one of my supervisor's students anymore.  I was devastated (but at the same time, expected it), so I renewed the contact with him after 6 months of disappearance.  From that point onward, I knew that at the present stage I just couldn't complete it, so I asked for his forgiveness, and at the same time, planned what I was going to do next.

    I was intending to go to UW to attend the 2 yrs Master's program for professionals.  Surely it would cost more but I just didn't want to give it up once again...  As I discovered, I need to paid a lot more and not definitely possible for my current circumstance.  I knew that I tripped myself but I didn't want to fail and give up once more.

    So as I was prepared to go back to Montreal for Caryn's (a dear friend and a person I was deeply in debt to in many things) wedding, I emailed him, and asked if I could meet him 1-on-1 for his advices and also his forgiveness, given his investment in me was wasted.

    So meeting him was the second thing I did when I arrived on Friday morning.  The first thing, however, was a reunion with pastor Terry Young (Yeung Mok), whom was my spiritual mentor during my years in Montreal.  For me, it was tough to face both, because both of them are the ones I consider mentored me, and at the end I was a disappointment to them.

    Anyway, I returned back to Martin's office at 3 pm and talked with him for half around an hour, until I knew that I needed to leave... 

    No, my old mentor didn't reject me... just that I was given a second chance to complete the essay, and he was willing to help me to complete the degree if I finish the thesis.  When I offered to have a drink with him at the Grad Pub, he said, "let's celebrate when you finish your thesis".  I guess I didn't need to say more but plan how I need to complete it.

    McGill was also "nicer" than I initially expected.  After I talked with Martin, I went to see Diti... the secretary/advisor for grad students who would know/control if i remain a McGill student.  It ends up that I forgot/didn't to pay the Winter tuition, but as long as I pay it back and register the course, I remain a McGill student until I submit the first draft of the thesis.  So, I still have two months to complete the draft (until Aug 29, 2008).

    At the end, I left McGill campus that day a happier and more confident man than I was the last few months.  I guess my feeling is not better described as the prodigal son who intended to be the servant of his father's house, yet received the forgiveness and a second chance

    I guess, redemption should be the most sought thing in life... throughout life we committed mistakes after mistakes that we just wished we could redeem and prove that we are redeemable.  We think so undeserving of ourselves that we are willing to aim for something lower to earn a bit of the redemption.  Yet, grace, at the most unexpected place, is given... it all depends if we are willing to seek for repentance and redemption.

    Now I have two months to complete, which is more than enough and at the same time, not enough at all.  I already have plans to weed out distraction (minimize the chances that I can lose focus and time to other things) and the first thing is to blog about my progress daily, so I can remain accountable.  For those who by any chance read this, I hope you keep me accountable.  And if you happen to be my brothers or sisters, please keep me in your prayers.  I was by grace given a chance, I just don't want to blow this once again.

    Anyway, almost immediately after I made the resolutions, distractions arise.  My car's battery died; I was expected to devote my time in an unrelated project at work for the next few days; my 3-yrs old laptop was unusable to the point that I reformatted it; and my old habits still come back to haunt me...  But I made a few things in the "bucket list" that I need to finish:

    • Despite being a "frugal" person, it is time to buy a new computer... I need a reasonable tool to rerun the program if necessary, and 1/2 GB RAM in my laptop is just not enough.  I need to break through my tardiness and my frugalness to invest this money for long term.
    • Completed the remittal letter to Diti saying that I have repented and wanted to continue to stay in McGill.
    • Prepare the new laptop (installing miktex, a very tedious task, and also the ide and the tools for efficient navigation.  so I can write my paper on it nonetheless.
    • Get rid of some very bad habits, like waking up late, browsing the web and multitasking at work.

    I guess, I have a very ambitious goal.  But if it is time to see if I have learned to make sacrifices to achieve my goals...

    Shall continue my reporting in Day 2, the 25th.