Nov
14
2008

Dojo is off my list

I have been having fun with jQuery for a while and found it a truly state-of-art Javascript library. It’s got many good non-intrusive designs and incredible behaviour predictability. I figured one day that I was reluctant to do DOM manipulation when I was asked to do some SIMPLE proof-of-concept javascript hacks. I certainly hate jQuery in a way that it makes me so lazy, you know, people sometimes feel more secure with better knowledge of the underlying mechanisms but I just can’t help forgetting them.

Anyway, while I am lovin’ jQuery, I always thought I had an reliable omnipotent library, the mighty Dojo Toolkit (”Hallelujah“!) , and that really made me feel secure as if I am backed with it so that if I ever found something can’t be tackled by “lightweight” libraries like jQuery, I can go and grab Dojo and attack the problems with Dijits and Dojox.

“…Maybe the team lead is travelling in a space shuttle between galaxies…”

However, as the title of the article suggests, it doesn’t seem to be the case any more. I haven’t looked into Dojo for a year, but last time I used it it still had one of world’s most promising cross browser dynamic graphic feature, with a lot buzz on a higher level charting engine as well. Yet after year, I figured the current chart engine doesn’t even support custom labelling meaning it will only show 1 - oo on the x axis. What can you achieve with such a limitation? Is it really hard to add a feature simple as that in?  I didn’t give up right away but rather googled for related discussions, and I did, cool, you may think just like I did. Well I found too very similar ones, both of which one of Dojo’s team lead had replied to promising the issue will be written in a few weeks, doesn’t sound too bad eh? The posts were 1 year apart in time, i.e. the first one was in 2007 with the promise that it was going to be done in a few years yet it’s still not there by now. Maybe the team lead is travelling in a space shuttle between galaxies so the time he sees is slower. That’s fine and cool but I certainly won’t be able to live to the pointer when he returns.

Okay, so I can’t use Dojox charting now, but I did some low level dojox.gfx before. How about we go and check that out? Go to the API tool, it’s got a much better interface now with eye-comforting dark gray and nice gradients. It also lists class properties, methods and namespaces in separate sections prefixed by type specific icons. Nice. Yet for most of the classes, there weren’t a single line of words describing what do the functions do or how they should be used, basically in the same state as years ago. Dojo had been behind in documentation since the beginning however it’s not improved after ages. Even the Ajax bubble is about to break yet they still haven’t done their job.

I also checked out Dojo Spotlight, a showcase of projects which adopt Dojo to implement front-end effects. I see few really inspiring ones and many had terrible look and feels.

I am not so sure about what happened to the organization of Dojo but I was pretty disappointed. I felt kind of lost because it doesn’t back me up that well as it used to be so I think I shall take it off my list and hopefully it can hit back sometime later.

Nov
1
2008

Peppy - CSS3 Selector

This blog is more about reflection of realization of how I think I can keep up with the world technologies rather than Peppy itself.

When I first read about Peppy, yet another CSS selector, I was very reluctant to accept it. I’ve just become a fan of jQuery and now there is something new. Nowadays everyone is trying to impress others and nobody can tell immediately whose work will last for a long time. However with a bunch serious unit test the author provided and solid benchmark results, certainly some great work is done here. So I’d like to check out how to integrate this new selector with some of my other JS frameworks and will use it in my next project.

I am always easily fed up by having too many options, but this is the case more and more often in nowadays technologies world. And this trend will continue for sure because of the massive buzz and evolution of SOA. CTOs, Software Architects, and Software Engineers all need to wade through that software jungle to find out which meet the needs of the company, the product, and the component respectively. I have to give up my satisfaction with current technologies and software I am now comfortable with, and embrace whatever I find to be promising along the way. I may be wrong sometimes by passing on the best solution and choosing another, but at least I won’t be trying to stay in my comfort zone with the software I use from a decade ago.

So I’d like to write to myself, don’t hold any prejudice on new stuff.

Aug
14
2008

Settled in Boston (Partly)

Boston is GREAT!

Simplified Story, Moving Fast Makes Time Goes Slower

I’ve been so busy interviewing in the last month that the time passed by completely unnoticed by me. All I remembered was interview with company 1 on Monday, company 2 on Tuesday, company 3 & 4 on Thursday and next rounds of interviews started on the following Monday, then the very last interview was on a Friday. Until all the ashes eventually fell on the ground have I figured my hair has grown to 2cm from 0.5cm, a pair of new leather shoes got worn out, and bills totaled $1,000 spent on traveling, dining in, grocery, and places I could not remember.

Sanctuary in Job Hunting

But overall it was a great experience. During the many trips to Newton from downtown, I was sitting on the green line train, listening to my iPod, OSTs from movies of Hayao Miyazaki (宮崎 駿), and watching the green forest along the sides. Sunshine made ways between leaves and casted light spots on soil and trunks. Occasionally the train stops at some old, quiet, and rural rail stations. Everything was so peaceful and as my ears were filled with the relaxing music, I felt I was in a neverland just like the ones depicted in Hayao’s movies.

boston laputa

Frustrations Shall Go Away

There were still some frustrations though. I had a tough time finding a good apartment and I felt it was harder than finding a job. Then I remember before I left Toronto, I said to myself I’d like to try a different life style, one in which I don’t plan ahead of time but rely purely on how things naturally come out. I wanted stress my durability so that I can stay calm and concentrated even if I won’t have a place to live the next day or won’t have enough cash to buy a meal and have no where to refill my pocket. I just can’t believe how closely the things came out as I wished. But it turns out I am simply not quite that type of person. Just be myself and make plans early as I always do should get me the best result.

Forecast

Next Post:The tough offer selection process

Feb
27
2007

Coin-osophy: a coin to help you make decisions

One of the main sources of confusion and anxiety in our lives is having choices. If life could be just a linear path with no branches, we’d be follow our faith with less of the pain appears when we’re given too many options. Knowing that choosing one of the paths may lose the benefits of the others, we often hesitate, and always want a prediction of the results, either by logical analysis of the conditions or superstitious methods such as card readings, palm readings etc.

But sometimes, when the choices given are seemingly equivalent or the results wouldn’t really matter a lot, such as whether you should have fried chicken or sushi for lunch, here is something can help you get out of the “dilemma” if you feel you badly want them both.

The magic

Get a coin from your pocket, tell your self what each side of the coin would represent, say head for sushi and reverse for chicken. Toss it to the air and let it drop on the ground freely. And then go for the choice represented by the side facing up. There is nothing special, right? Read on. The key point is below.

“the coin help you identify what you really want, rather than let the odd determines what you should do”

So you’ve just toss the coin once. You’re probably know where you’re going. BUT, if, after the first toss, you still hesitate and feel want to toss it two more times to get a 2/3 ratio, go ahead with the OTHER option. Because this means you really like the other one better, even just slightly which makes you reluctant to accept the result. The key is tossing it ONLY once, if you feel even a little unsatisfied with the result, follow your heart from here.

The main theory behind this method is to let the coin help you identify what you really want, rather than let the odd determines what you should do. It could also be extended to situations such as considering where to go for holidays. But for more serious issues, rational thoughts should take precedence.

Feb
22
2007

Dealing with the world (2) - The imperfect world

…Continued from Dealing with the world (0) - The problem,

As I am browsing on ImagineCup forum today, I came across with a post in which a user complained how he failed the Test Suites on the server while his “calendar program runs all of the NUnit tests (Local Version) provided flawlessly“, and that he believes that he “has no errors in my (his) code“. He is also “curious about … why the two people who have perfect scores on the leader board didn’t report the bug…”.

As being one of the “two people”, I would need to first assure people that I didn’t sneak into the current position because of the Test Suites back then was different than the current. I had the exact same problem but figured out the work around in less than 10 minutes. It’s not really a “work around” that people usually use to cheat. It’s more about guessing/analyzing what the judges really wanted when there are inconsistencies between the document and the judging test cases.

“I will implement whatever you need me to implement precisely regardless whether you told me wrong”

What does “flawless” really mean?

It’s not necessarily wrong with an ambitious and strong statement like this, but a lot of considerations must have been taken into account to make such statements. If we can assume the local tests are correct, then his code can be in fact “flawless”. Unfortunately, the local tests is not a reliable source either. When an assumption is false, you cannot get any reliable information out of it, for any implication derived from it is true.

In this competition, there are four ways to get information on a problem: the specification document, the local test suites if provided, the test suites on server, and the support forum. Out of the four, only the latter two can be considered reliable and official. In this respect, the program is not really flawless since the “truth” here is the online test cases. Even though the they may contain errors themselves, they are the ultimate tests against which competitors programs will be checked. So being adaptive to them should be the goal. Moreover, competitors should not feel uncomfortable with these inconsistencies either because the point is more about meeting the requirements, not criticizing how the problems are loosely specified. The oath shall be “I will implement whatever you need me to implement precisely regardless whether you told me wrong”.

In fact, these kind of inconsistencies are more than just common in the real world production environment. When many people work as a group, lots of tiny flaws can occur, leading to misunderstandings among the members. Therefore people should be able to calibrate information received from others in order to damp the error accumulation, especially when supervision is not always available. It’s impossible to have a 100% accurate specification bearing none unclear/vague/ambiguous descriptions, and if a development team insists to wait for a 100% accurate specification to start, it’s going to take forever.

The world is never perfect, yet human race still evolves, because perfection is not a necessary factor. Now think in the other way, if we’ve reached perfection, there will be nothing else we can work on - and that’s probably the end of the universe.