Showing posts with label random. Show all posts
Showing posts with label random. Show all posts

Tuesday, February 24, 2009

One ID to rule them all!

Having an OpenID is a cool thing. In theory, I wouldn't have needed to register for any other account ever. Alas, most ideals are just that: ideals. No, I'm not saying anything bad against OpenID; I'm only saying that even with the best intention we still frequently are unable to realize the full potential of the idea's ideals.

Take SourceForge.Net for example, it's one of sites I frequented. Sure it does take my OpenID to authenticate me when I logged into the site, but it still requires me to bind to a local SourceForge account if I want to use it to access certain things such as its CVS repositories. C'est la vie.

The OpenID provider I chose for my use is MyOpenID.com. I like MyOpenID.com because it is one of only a few (as of this writing) strong authentication providers who uses SSL certificates and Windows CardSpace/InfoCards which enables auto-authentication. This is so that while I do have a password for my OpenID account, I won't need to really memorize it or use it to sign into any sites using my OpenID account.

To demonstrate:

  1. Go to MyOpenID.com
  2. Sign in (if you already have an OpenID account)
    Type in your OpenID account
  3. Choose a sign-in method
    Sign in using SSL P12 certificate
    Or
    Sign in using InfoCard
  4. You'll be presented with a certificate you've previously created and install in your browser
    SSL P12 certificate
    Or be prompted to send your Microsoft Windows InfoCard you've previously linked to your OpenID
    Microsoft Windows CardSpace - InfoCard
  5. Click sign-in
    OpenID sign in
  6. And swweeet!! I'm in... quick & easy.

Tuesday, February 17, 2009

How to write clean website layout using CSS (Part 2)

The pure <div/> approach: Positions

Creating web page layout using CSS positioning really is a very simple thing to do. All we need to remember is that an XHTML element's absolute position is always relative to its container. That is the one thing we usually forget. We are so caught up in the semantic definition of the word absolute position we forget that it isn't absolute only in the context of the web page itself (<body/>).

For a similar simple markup we wrote in Listing 2 of our previous notes, we now have the following Listing 1.

Listing 1: <body id="doc"> <div id="d11" class="d1"> <div id="d11-sub1"> <div id="d11-21" class="d11-2"> </div> <div id="d11-22" class="d11-2"> </div> </div> <div id="d11-sub2"> <div id="d11-23" class="d11-2"> </div> <div id="d11-24" class="d11-2"> </div> </div> </div> <div id="d12" class="d1"> <div id="d12-21" class="d12-2"> </div> <div id="d12-22" class="d12-2"> </div> <div id="d12-23" class="d12-2"> </div> <div id="d12-24" class="d12-2"> </div> <br style="clear: both" /> </div> <br style="clear: both" /> </body>

The styling commands we needed in Listing 2 felt simpler to do and easier to understand from the perspective of having to think about how the browser layout engine will interpret the commands we write.

Listing 2: /* Section: Content specific **********************************************************************/ body, #doc { border: 5px double rgb(255,0,0); width: auto; /* Use // to give a specific instruction to IE browser only **********************************************************************/ //padding-bottom: 100px; } #d11, #d12 { height: 100%; width: 920px; border: 5px solid rgb(0,255,0); margin: 100px; /* Set margin-{left, right} to &quot;auto&quot; to center the div box because * setting text-align to &quot;center&quot; at the container level only works * with IE but not with other browsers, in addition to having the * unintended effect of having the container's text actually centered * that is if we simply just want the layouts centered, not its text. **********************************************************************/ margin-left: auto; margin-right: auto; } div.d11-2 { border: 5px solid rgb(0,0,255); margin: 50px; } #d11-sub1, #d11-sub2 { width: 900px; height: 100%; border: 1px solid red; margin: 10px; position: relative; } #d11-21, #d11-22, #d11-23, #d11-24 { width: 100px; padding: 25px; } #d11-22 { position: absolute; top: 0px; right: 0px; } #d11-24 { position: absolute; top: 0px; right: 0px; } #d12 { border: 5px solid rgb(0,150,50); } div.d12-2 { border: 5px solid rgb(0,0,255); margin: 50px; } #d12-21, #d12-22, #d12-23, #d12-24 { padding: 10px; width: 100px; float: left; } /* End Section **********************************************************************/

I'd say it looks pretty straightforward without having spent lots of hours tweaking the style attributes to get the desired results.

I was pretty happy this turned out to be easy. But then just for kicks I wanted to find out "What if I did the other way around, strictly with floats and kept all the elements' positions at its default relative value?" "Would it be just as simple?" "Would it be just as quick to do?"

The pure <div/> approach: Floats

With the same base structural template as Listing 1 above, I found that achievement the desired result using float method is considerably longer. Sure if you look at the last CSS code-block of Listing 2, you'll see that I actually cheated by using floats because well... that was actually the simplest way to order the <div/>'s in simple column formation. But then, to figure out which of the <div/>'s in square formation need to be floated the right way took quite a bit of trial and error in the order of magnitude of 5. Yes. Five. Listing 2 took me only a couple of minutes to write and get right. Listing 3 took me almost 15 minutes to do due to tinkering with the float and clear attribute combinations.

Listing 3: /* Section: Content specific **********************************************************************/ body, #doc { border: 5px double rgb(255,0,0); //padding-bottom: 0; } #d11, #d12 { width: 920px; border: 5px solid rgb(0,255,0); margin: 100px; /* Set margin-{left, right} to &quot;auto&quot; to center the div box because * setting text-align to &quot;center&quot; at the container level only works * with IE but not with other browsers, in addition to having the * unintended effect of having the container's text actually centered * that is if we simply just want the layouts centered, not its text. **********************************************************************/ margin-left: auto; margin-right: auto; } div.d11-2, div.d12-2 { border: 5px solid rgb(0,0,255); margin: 50px; } #d11-21, #d11-22, #d11-23, #d11-24 { width: 100px; padding: 25px; } #d11-sub1, #d11-sub2 { border: 1px solid red; margin: 10px; //padding-bottom: 50px; } #d11-21, #d11-23 { float: left; clear: left; } #d11-22, #d11-24 { float: right; clear: right; } #d11-23 {clear: left;} #d12 { border: 5px solid rgb(0,150,50); } #d12-21, #d12-22, #d12-23, #d12-24 { padding: 10px; width: 100px; float: left; } #d12-21 {clear: left;} #d12-24 {clear: right;} /* End Section **********************************************************************/

How to write clean website layout using CSS (Part 1)

There are three well-known techniques in creating a website layout using CSS:

  1. The <table/> approach.
  2. The <table/> + <div/> hybrid approach.
  3. The pure <div/> approach.
    1. The positioning approach of absolutists v. relativists; and,
    2. The clearing float (or is it the floating clear? <smile/>).

There are others of course; very advanced CSS masters like to further enhance the cleanliness of their XHTML code without using a single <div/> or <span/>.

As I jumped into refresher exercises, I wondered: "How easily would it be for me to do this (ref: screen)?" Or, "Is it even possible to easily do it for the four popular browsers today?"

layout-div1


Warning: At the time of writing, the following materials were only proofed on:

  • Internet Explorer 7.0.6001.18000
  • Firefox 3.0.6
  • Safari 3.2.2 (525.28.1)
  • Chrome 1.0.154.48

This article merely documents these variations and choices. We do not advocate one approach versus another as these choices are left to each of our individual circumstances and reasons. Although <grin/> I would soon give up doing the first approach.

The base skeletal structure for each of the tested approaches is the following Listing 1(with slight differences):

Listing 1: <!--xml version="1.0" encoding="UTF-8"?--> <!--DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml1-transitional.dtd"--> <html> <head> <title>DIV</title> <style type="text/css" media="all"> /* Section: Initialization **********************************************************************/ * { margin: 0px auto; padding: 0px; outline: 0 border: 0 none; font-family: cambria, georgia, "Times New Roman", times, serif; font-size: 11pt; font-style: inherit; font-weight: inherit; vertical-align: baseline; text-decoration: none; /* Set min-height to "100%" and overflow to "auto" in order to set * the div box to stretch to the height of its children elements. This * setting bears no effect whatsoever on IE. **********************************************************************/ min-height: 100%; /* Use // to give a specific instruction to IE browser only **********************************************************************/ } } body { padding: 10px; } h1, h2, h3, h4, h5, h6, p, pre, blockquote, form, ul, ol, dl { margin: 20px 0; } ul, ol, dl {list-style: none;} table, tr, td { border-spacing: 0; } a img, :link img, :visited img, { border: 0 none; vertical-align: bottom; } code, .code{ padding: 10px; padding-left: 15px; font-family: consolas, monaco, "Courier New", courier, monospace; font-size: 9pt; color: rgb(100,100,100); white-space: pre; text-align: left; } /* End Section </style> </head> <body> ... </body> </html>

The <table/> approach

If we search the Internet for arguments against using <table/> tags for layout purposes, we will find them in abundance. They are all valid arguments and we should heed them. I simply could not bring myself to nest <table/> tags like it's 1999.

The <table/> + <div/> approach

For the following simple layout in Listing 2:

Listing 2: <body> <table> <tr> <td id="t11-21"> <div id="d11-21" class="d11-2"> </div> </td> <td id="t11-22"> <div id="d11-22" class="d11-2"> </div> </td> </tr> <tr> <td id="t11-23"> <div id="d11-23" class="d11-2"> </div> </td> <td id="t11-24"> <div id="d11-24" class="d11-2"> </div> </td> </tr> </table> <table> <tr> <td id="t12-21"> <div id="d12-21" class="d12-2"> </div> </td> <td id="t12-22"> <div id="d12-22" class="d12-2"> </div> </td> <td id="t12-23"> <div id="d12-23" class="d12-2"> </div> </td> <td id="t12-24"> <div id="d12-24" class="d12-2"> </div> </td> </tr> </table> </body>

We still had the following styling code in Listing 3

Listing 3: /* Section: Content specific **********************************************************************/ body, #doc { width: 100%; border: 5px double rgb(255,0,0); //padding-bottom: 100px; } table { width: 948px; border: 5px solid rgb(0,255,0); margin: 100px; /* Set margin-{left, right} to &quot;auto&quot; to center the div box because * setting text-align to &quot;center&quot; at the container level only works * with IE but not with other browsers, in addition to having the * unintended effect of having the container's text actually centered * that is if we simply just want the layouts centered, not its text. **********************************************************************/ margin-left: auto; margin-right: auto; table-layout: fixed; } /* TR styling doesn't work on IE ************************************************************************/ tr { width: 928px; border: 5px solid red; display: block; } td { vertical-align: top; } #t11-21, #t11-23 {width: 100%;} #t11-22, #t11-24 {text-align: right;} #t11-21, #t11-22, #t11-23, #t11-24 { //width: 50%; border: 1px solid blue; } #t12-21, #t12-22, #t12-23, #t12-24 { width: 25%; text-align: center; border: 1px solid blue; } div.d11-2, div.d12-2 { border: 5px solid rgb(0,0,255); margin: 50px; } #d11-21, #d11-22, #d11-23, #d11-24 , #d12-21, #d12-22, #d12-23, #d12-24 { text-align: left; width: 100px; padding: 25px; overflow: visible; } #d12-21, #d12-22, #d12-23, #d12-24 { padding: 10px; //margin-left: 0px; //margin-right: 0px; } /* End Section ************************************************************************/

Yes, this approach yields a slightly cleaner code result than only the <table/> based approach. But it isn't without its own problems. There's that <tr/> rendering issue in IE. And of course, I found that the CSS implementation differences between the various browsers render this approach virtually indefensible, as in saying: "If we have to resort to using various CSS tricks/hacks anyway, why not simply do a Table-less Layout with its pros and cons already weighed by the web design community at large, especially when we already have ample samples written by masters such as those from A LIST apart and Zen Garden—two sources of my favorites reading materials where I found a wealth of knowledge shared to us all common netizens."

Need I say more?

Up next: The pure <div/> approach (Part 2).

Thursday, February 12, 2009

How to create a new Blogger template (Part 2)

Blogger's Layout Data Tags

As of this writing, a Blogger's template document requires at least a skin declaration, usually placed in the document header as seen in Listing 1 below.Listing 1: <b:skin><!--[CDATA[ /* Blogger only allows exactly one (1) <b:skin/--> element be defined * in the template document. * Although this is essentially where we place our global CSS code, * we can still declare style blocks or inline style attributes as * usual just like the example below. */ .globalStyleClass { definitions; } ]]></b:skin> <style type="text/css"> .standardstyleclass { definitions; } </style>

For details on why tag is required read this Blogger Help article—that is, if you want to integrate your customized template to Blogger's WYSIWYG layout editor.

That's pretty much it. The rest, we can just drop widget definitions following this Blogger Widget article and regular X/HTML web-design exercises.

The following is the result of this new Blogger template exercise.

Before:
image


To what we're seeing now.

How to create a new Blogger template (Part 1)

  1. Start with a Blogger's basic default template and dissect it.
  2. Understand basic X/HTML coding.
  3. Understand Blogger's Layouts Data Tags
  4. Know where to find help for customizing Blogger's template.

Dissecting a Blogger's basic default template

Leave the first two lines alone.

Listing 1:
<?xml version="1.0" ...?>
<!DOCTYPE html PUBLIC "... XHTML 1.0 Strict//EN"... >

After the first two lines of code, a Blogger's template is essentially just a regular X/HTML document (according to the specified DOCTYPE in code line #2).

Side notes: Personally, I use XHTML 1.0 Transition for reasons we'll experience when we exercise the coding style I wrote in here: How to write clean X/HTML document. For this reason, in the remaining content of this study assumes and follows the transitional document type declaration.

Basic X/HTML coding

An X/HTML document essentially consists of simple structural tags as seen in Listing 2 below.

Listing 2: <html> <head> <style></style> <script></script> </head> <body> </body> </html>

Despite all of the content we see when view an X/HTML document on the web, that's really all there is to it. A Blogger's template is no exception. The some differences we see in the basic template we've downloaded usually has to do with what Blogger labels "Layout Data Tags" or, for those used to using Blogger's WYSIWYG layout editing tool, "Widgets" (regardless of whether or not they're displayed on the resulting browser screen).

In Blogger's document template case, there are extra namespaces declared as attributes of the <html> tag as shown in Listing 3 below.

Listing 3: <html xmlns="http://www.w3.org/1999/xhtml" xmlns:b="http://www.google.com/2005/gml/b" xmlns:data="http://www.google.com/2005/gml/data" xmlns:expr="http://www.google.com/2005/gml/expr" expr:dir="data:blog.languageDirection"> ... </html>

We should do the same.

Tuesday, February 10, 2009

How to write clean X/HTML document


Warning: XMP tag is an officially deprecated tag as of HTML specification 3.02. So follow this advise at your own risk.


Use <xmp/> tag instead of the using many <br/> tags to pre-format ourmultiline texts inside a <p> tag. We should use <xmp/> tag for plain text and demonstrated code listings instead of using escaped stuff (entities) such as &lt; and &gt; Escaping characters are such tedious chores and we are all better off with using <xmp/> tag. If we want to have the HTML content of our tags still interpreted as HTML content then we choose to use the <pre/> tag instead of <xmp/> tag (ref: Listing 1) Listing 1: <pre> <b><u>HI THERE!</u></b> XMP is sweet. I don't know why such as useful tag is deprecated. </pre> Listing 1 will still be interpreted as HTML content and render as the following: (notice how the rendered text includes the invisible 'tab' characters). Let's compare it to what we would have to do in Listing 2 below if we don't use <xmp/> Listing 2: &nbsp;&nbsp;&nbsp;&nbsp;<b><u>HI THERE!</u></b><br/> &nbsp;&nbsp;&nbsp;&nbsp;XMP is sweet.<br/> &nbsp;&nbsp;&nbsp;&nbsp;I don't know why such as useful tag is deprecated.<br/> Which codeblock is easier to work with? Just for writing:
	HI THERE!
	XMP is sweet.
	I don't know why such as useful tag is deprecated.
We could alternatively use CSS to control our content like the following: Listing 3: <p style="white-space: pre;"> My multi line content inside a paragraph &lt;p/&gt; tag </p> to render the following:

My multi line content inside a paragraph <p/> tag

Although the sample in Listing 3 takes the white-space character and carriage-return/line-feed character, it does not take the tab character and other invisible characters that may be inside our text content-not to mention more typing compared to using <pre/> tag. If it is still chosen, IE will fault us (if we are reading this using IE, we will see the above example above as a single-line, instead of what it should be). Using the <xmp/> tag and/or <pre/> tag helps us reduce the mess that other developers would see when they view the source of our program. What mess am I talking about? Think about this: How often do we use &nbsp; like the above example? Yep, that's what I'm talking about :) So what if we want to stylize an <xmp/> content?
All we have to do is use a CSS class as we would in any other case:
For example: we could do the following:
Listing 4:
<xmp style="color: blue; font-weight: bold;">Content</xmp>
Such that the result renders as the following: Content We should be careful and test the use of <xmp/> tag carefully since this tag has been officially deprecated as of HTML standard 3.02 and is replaced by the <pre/> tag (see: WARNING at the top of this page), despite the fact that the <pre/> tag is available, it doesn't completely offer all the simple escaping facilities offered by the <xmp/> tag.

Saturday, September 06, 2008

Confidence == Self.Comfort in {Knowns, Unknowns}

Confidence != Perfection;

Confidence != Arrogance.Hide(Inferiority);

What do we do when a user asks for a facility for a matter of convenience and where the cost of providing such convenience far outweighs the value of the time saved from the convenience?

There's a dictum that states: "Customer is King." If we want to be responsible subjects to our king, it is our duties to say to the King: "Your Majesty, if you wear this 'clothes' you will be naked; is that what you really want?" and instead of: "Yes Your Majesty, we will use the finest invisible silk thread to match the invisible royal garb you ordered."

Friday, April 11, 2008

Joy is...

A smile in spite of what's around.

You know... these days I sensed a lot of unhappiness around me—not from me, mind you—around me. So I took a few minutes out of my day and scoured the Internet to see if I could find some quick, inspirational statements people say about how we can reach happiness since I don't seem to be doing well in inspiring happiness for others.

Here's what I found:

From Dennis Wholey:
Quote #1: Happy people plan actions, they don't plan results.
Quote #2: Expecting the world to treat you fairly because you are a good person is a little like expecting a bull not to attack you because you are a vegetarian.

Here's another from our favorite genius, Albert Einstein:
Quote #3: If you want to live a happy life, tie it to a goal, not to people or things.

From an unknown smartie:
Quote #4: Happiness is not the absence of problems but the ability to deal with them.
Quote #5: Some pursue happiness; others create it.

How are these useful for me? Eeh, they aren't new to me, really; they're what I already naturally use for me. And I'm happy in a happy-go-lucky-sort-of-way-kind-of-guy; see if these could be as useful for you as they have been for me.

Thursday, March 27, 2008

To be gainfully employed is...

A rather challenging act to perform.

It's not just about having a job nor about the money that the job brings.

It is a constant juggle to balance our personal and professional lives.

I've shared with many people I encounter in my careers a personal attitude that may help reduce one's own stress in a work setting and be able to feel secure on and of our own: that work is just a vehicle for us to meet new friends and earn income to support our family.

Professionally, the level of quality of my output and my team's output is much less driven by our individual talents, but more about the principles we go by and use in our teamwork:

  • Kanban: Just-in time (classic production understanding in manufacturing industry of what's now called Agile in the software industry).
  • Kaizen: Continuous improvement; our work is never done, even when the output has shipped. This translates personally to set a goal where we can pace ourselves according to our health and ability and professionally to always understand that the best we deliver today should hopefully be better tomorrow.
  • Gandhi engineering: A combination of irreverence toward established way with a scarcity mentality that spurns superfluities while at the same time maintaining consistency of applying the principles in play.
  • Einstein tolerance: That can't be paraphrased, but simply understood in what Albert Einstein himself said: "Great spirits have always found violent opposition from mediocre minds. The latter cannot understand it when a man does not thoughtlessly submit to hereditary prejudices but honestly and courageously uses his intelligence and fulfills the duty to express the results of his thoughts in clear form", to help us maintain composure in an adversarial environment. This also relates to what I wrote earlier in my post: The 道 of Writing, the sublime of Work Ethics...

Thursday, March 20, 2008

A customer is NOT always right

1. If he is belligerent and makes my team and employees unhappy.

2. If a customer makes me choose between unreasonably serving his business or my relationship with good colleagues and employees. My employees come first. (This is along the line of: "If an employer makes me choose between unreasonably serving his business or my devotion to my family. My family comes first.)

3. If his business is bad for my business: we all have a finite amount of resources serving a customer that does not further our own goal. For example, serving a bad customer who takes so much more time and efforts where consequently we are unable to provide an equal or better time and service for a good customer, we'll have to say goodbye to the bad customer.

4. If he is unreasonable despite our best effort to serve him/his company with a good service, and that they have been receiving good attention and services.

5. If we happen to get a glimpse, somehow, that he doesn't treat {another person | his own employees | general public} fairly and with dignity as it is a telltale of what is to come for us as an outside vendor.

Friday, February 01, 2008

Holy chocolate fudge!!! Quick! Show the window pronto!

The first month of 2008 came and went.

We've gone through 31 days of a new year so quickly, we barely had a chance to reflect on the past year due to piles of backlog tasks that seems to increase faster than we can keep up. It's a blessing and a curse.

Speaking of a curse, I was in the middle of debugging an application last night and was unable to find the Immediate Window in my VS2005 IDE. It had been there before; I sought for it in all of the menu and sub-menu items and couldn't find it. I still don't know what caused its disappearance. Perhaps it was a recent VS2008 IDE installation that might've affected the 2005 environment settings; perhaps others unknown reasons.

Suddenly, a simple thought sprang to mind bulb : go to Tools/Customize/Debug and simply add it back-in to the menu bar and my shortcut toolbar. Et voilà! My indispensable Immediate Window returns; and all is well.

Thursday, January 17, 2008

What a great {insert a nerdy title here} feels:

  • I don't need to prove I'm 1337 to know I am one.
  • I don't understand the end-user, but I'll always try to.
  • My end-user is the reason I have a job.
  • Patience really is a virtue.
  • Nobody likes complicated stuff.
  • It's better to be perceived as inexperienced but a quick study, than experienced but a slow poke.
  • Knowing the subject well is better than knowing how to code well.
  • If I don't know how to code it well, give it to someone who does, then learn from it.
  • $1/day for 365 days is better than $10 for only 30 days. Long term builds trust, character and wealth; short one brings false sense of confidence.
  • Each new job feels like my first job; done with great excitement, else it could be my last one.
  • Get completely in or get out, capiche?

Friday, January 04, 2008

2008

A few days into the new year, a sleeping sick baby and an offline HQ—I found a few moments of peace.

So here's a piece of advice: When trouble brews, be calm and proceed to the nearest exit, brew a cup of hot cocoa, lounge, and read.

If your trouble is specifically of the message:

"The current identity (NT AUTHORITY NETWORK SERVICE) does not have write access to 'C:\WINDOWS\Microsoft.NET\Framework\V2.0.50727\Temporary ASP.NET Files'. This error may be cause by having installed visual studio C# or by group policy settings."

Please, oh please don't manually assign the permission to the folder through the folder property; you should instead run the following from a command prompt to wish your trouble away:

prompt:>c:
prompt:>cd \windows\micro*\frame*\v2.0*\
prompt:>aspnet_regiis -i -enable

Happy New Year!

Thursday, September 20, 2007

The 道 of Writing, the sublime of Work Ethics...

Be it software, technical documents or emails.

If any man wish to write in clear style, let him be first clear in his thoughts; and if any would write in a noble style, let him first possess a noble soul.
~ Johann Wolfgang von Goethe

Learn as much by writing as by reading.
~ Lord Acton

I too am an apprentice, always—learning as much by failing as by succeeding, as much by following as by leading.
~ antonius

So don't despair that no one agrees with you and point your mistakes, for "... when you're screwing up and nobody's saying anything to you anymore, that means they've given up on you."
~ Randy Pausch

Wednesday, July 25, 2007

Software Entropy

Software entropy refers to the amount of disorder present in a system.

Entropy usually creeps in by way of logical inconsistencies at the thought-level, even before any tangible work begins to implement said system. As the system and its parts are developed, these logical inconsistencies manifest themselves in various forms of errors of all sizes. The smallest ones considered negligible are typically the clichéd primordial stew of chaos in software systems.

When coupled with what's frequently unfortunate timing of most software development schedules, the hacks we are forced to place into the system here and there by necessity of meeting some established deadline further exacerbate the condition.

Now plagued with such level of anomalies any additional issues encountered are prevented from meeting their resolutions simply because it's no longer feasible.

They say, only two things are certain in life: Death and taxes; well... in software Chaos reigns supreme if unchecked and snipped in the bud. Entropy is contagious.

What's the moral of the story kids?

 

冰冻三尺,非一日之寒
Three-feet of ice didn't result from one day of freezing weather.

 

Do the job right the first time or don't do it at all.
Better yet, get out of the way of anyone who's trying to do the job right the first time.

Wednesday, March 14, 2007

Doing the right thing to do

It's easy to say; it's hard to understand.

The right thing for a relativist unreliably varies from context to context.
For an absolutist with an extremist mentality, the right thing may turn out to be just the opposite.

It's complex, yet so simple.
For when one's inhibition is gone;
when one's civility is in ruin;
when one's regards for morality, law and politics vanished; and,
when one's regards of relationships discharged,
the right thing will still be there down in the heart of heart.

It is the faintest voice that keeps one awake at night when the world is deep in its slumber.
It is the voice of conscience in one's subconscience.

That is the right thing.

Wednesday, November 22, 2006

State of the consulting industry

Jane Doe and Richard Roe are a couple of consultants discussing and sharing their experiences in the consulting business from their viewpoint.

Jane: "Consulting is not at all what I thought it would be when I started in the field eight years ago."

Richard: "What and how do you think it would be?"

Jane: "My vision was that we would be called in as helpful experts, work with business stakeholders to help them overcome their business problems or get the business to the next level. We would be trusted to analyze every bit of details about their business, uncover the problems and provide recommendations to resolve the problems."

Richard (laughed): "If only it were that easy. I had one like that once, but just once long ago."

"We have to realize that clients call us in for a lot of different reasons only some of which they fully disclose. There were often internal power struggles we may not be aware of. There are also clients who may have heard how wonderful the solutions we had for a different company, and they wanted us to come up with the same solution for them while disregarding the potential adverse effects a similar type of solution may be for their business."

Jane: "So why do consultants have such bad reputations? Many consultants seem to continue to have uphill battles with their clients, where it should have been collaborative. Ideally, we would have the client's good faith trust. After all, we are here to help them succeed in their business and objectives."

Richard: "I think it's because we do the job we think we were hired to do, and maybe that isn't what the client wanted, yet the client may not or does not, for whatever reasons, share in-full their complete objectives in hiring us as their consultants. Even when we find clients who do want us to succeed in helping them, but if no one else in their organizations really cares then we'll find they won't work with us. Sometimes they feel threatened and actually work against us."

Jane said, "Sure, but are we ever the cause of the problem?"

Richard: "Sure."

"It's all simply because consultants are usually seen as outsiders. And the fact as business cost factor, we are pricier than employees—never mind that we are also often better, specialized helps."

"Moreover, we do make mistakes just like anyone else. Unfortunately, once we make mistakes, no matter how trivial it may be, the odds are stacked against us much heavier than even when there had been no mistake. It takes an astronomic remedial effort and outstanding result just to get back to the original standing we had to begin with the client."