tag:blogger.com,1999:blog-87302132272222369622024-02-07T14:51:04.873-08:00(E/m)^-2 =Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.comBlogger90125tag:blogger.com,1999:blog-8730213227222236962.post-36652761186063770772015-07-25T19:13:00.002-07:002015-07-26T10:59:15.597-07:00THE BUTTERFLY EFFECT 2.0<div class="separator" style="clear: both; text-align: center;"><a href="http://orig02.deviantart.net/b9f6/f/2015/187/a/5/the_butterfly_effect_2_0_by_seelenwald-d906uso.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" src="http://orig02.deviantart.net/b9f6/f/2015/187/a/5/the_butterfly_effect_2_0_by_seelenwald-d906uso.jpg" /></a></div>The final state is determined by the initial state. A singularity has only one initial state by definition, therefore the outcome of the Universe is constant.
Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-49754372729390999782012-03-14T21:47:00.003-07:002012-03-14T21:49:53.482-07:00BC Teacher's StrikeHere's 2 points to ponder before considering what side of the BC Teacher's union you're on, and if you're willing to pay more taxes to fund a teachers salary increase or not:<br />
<br />
1. You don't need a teaching degree to figure out that teachers only work part time jobs: thinking back to my kids school calendar, I recall that there are between 162~185 days of school per year. School days are 6 hours long. That's an average of 1041 hours per year. The real world works an average of 2080 hours per year...<br />
<br />
2. The starting salary of a BC teacher with a bachelors degree therefore works out to about $36 per hour maxing out at ~$56 per hour. Teachers can earn up to ~$68 per hour if they hold a masters degree...Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-55896995596194959532011-09-10T19:59:00.001-07:002011-09-10T19:59:19.153-07:00Give Me Classic Google Search<div>I hate the new Google Search page. It reminds me of when they brought out the new, 'improved' coke. Maybe Google is just looking for more free publicity by purposely ruining their own #1 product... Meanwhile they are creating chaos in my life. Here's why.</div> <div><br></div><div>I use netbooks and mobile interfaces exclusively. The screen is small, I'm a tech freak and dont use a mouse and rely very little on the trackpad. When I open a page, I need lots of white space to click on so that the page is selected and not a form field or some other element so that I can use the cursor keys to scroll. Secondly, I tab a lot and Google Instant forces me to tab through dozens of main links entries and their tertiary, 'jump-to' sub links whatever their called I forget.</div> <div><br></div><div>Web designers hear me please: Activate the DOCUMENT on load so that I can scroll with the cursor keys!</div><div><br></div><div>Anyway, I was trying Google Instant when it was in Google Labs but found it sucked so I turned it off.</div> <div><br></div><div>Now <a href="http://google.com/preferences">http://google.com/preferences</a> and Google Chrome preferences will not save changes when I try to disable Google Instant.</div><div><br></div><div>I've found two simple work arounds:</div> <div><br></div><div>1: Disable JavaScript for your Google search domain and use another browser or Google domain to access services which need JavaScript like gmail, etc.</div><div><br></div><div>2. For the time being at least, Google Instant is still beta and can be disabled in mobile view. So use this path for google search:</div> <div><br></div><div><font class="Apple-style-span" size="6"><br></font></div><div><font class="Apple-style-span" size="6">Use this page to avoid being forced to use Google's STUPID Instant Search. </font></div><div><br> </div><div><font class="Apple-style-span" size="6"><b><a href="http://google.com/m">http://google.com/m</a></b></font></div><div><br></div><div><br></div><div>Actually, the mobile interface works pretty well, and ironically, Google Instant is kinda nice on the iPhone...</div> <div><br></div><div>Google, please allow users to disable this feature again - it's a usability nightmare.</div><div><br></div><div><br></div><div><br></div><div><br></div> Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com1tag:blogger.com,1999:blog-8730213227222236962.post-27831512904680397252011-09-08T13:58:00.001-07:002011-09-08T20:16:08.994-07:00Git Automatic Ignore Exe, Blobs for Linux<div class="mobile-photo"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkjvZacb4PML95cm5H7D35awJh2hJ0FYEyisDkYiIYsB7Iq4g46_JYOPaVU8i8ygSL4cBUlpMltM7RzlAhCl1bxf_s_a9HgAddtHqb2hnmbYGbtal4PAK-XGGAIrlW_GncBVsT-uEfIJfe/s1600/photo-713263.JPG" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5650096110496383362" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkjvZacb4PML95cm5H7D35awJh2hJ0FYEyisDkYiIYsB7Iq4g46_JYOPaVU8i8ygSL4cBUlpMltM7RzlAhCl1bxf_s_a9HgAddtHqb2hnmbYGbtal4PAK-XGGAIrlW_GncBVsT-uEfIJfe/s320/photo-713263.JPG" /></a></div>In my opinion, Git is a programmers program. It is fast, feature-rich yet intuitive, kind of like Google...there's a new treasure waiting to be found around every corner. The philosophy behind Git appeals to me; there's sure to be a lot to learn by appreciating it's architecture and studying its internals.<br />
<br />
One of the few things that bugs me about Git is what happens when you finally realize that you have been committing unnecessary -massive- binaries such as database files and executables -especially if they are modified frequently.<br />
<br />
The problem here is that if any single bit changes, the repository must make a new, albeit compressed copy of the whole mess, while of course keeping all previous copies archived for future reference... This situation sees the repository size quickly bloat. While there are (Git) methods to undo such mistakes, it's by no means easy or fun to do. At least for myself, I am not proficient enough with Git to fully understand the entire process.<br />
<br />
I've been doing a fair bit of compiling lately and have found the output binaries are getting in the way of my workflow -sure there are means to avoid this such as having make files output to /bin directories and then explicitly reference them in a .gitignore file, but that's not practical in my situation.<br />
<br />
In Windows environments things are actually a little easier as file extensions are almost always employed and they make filtering a snap. In Linux, however, things are a little trickier...<br />
<br />
As such, I've put together a script that employs the <i>file </i> utility in order to identify file MIME types, filter and then automatically add to them to .gitignore. It can run from within any directory of the repo in order to create per-directory .gitignore files, however executing it from the repo's root to create a top level .gitignore is probably good enough, and more maintainable.<br />
<br />
If there's a need, I might implement a recursive maintenance utility, but for now it only deals with a single gitignore within the current working directory.<br />
<br />
AutoGit -automatically filter files by their MIME type to avoid binary files, databases and other undesired content types.<br />
<br />
Here's a direct link to the <a href="https://raw.github.com/wdoucette/wayne/autogit/autogit">AutoGit</a> bash script on GitHub.<br />
<br />
$ Save it as a text file named autogit or something else flavorful.<br />
$ chmod +x autogit<br />
$ put it in the root of your git repo OR even better, place it in your PATH somewhere like /usr/share/bin<br />
$ cd /your/git/repo<br />
$ do autogit or ./autogit as appropriate<br />
$ autogit will append the filepaths it found that have been identified and dump a report + git status<br />
$ By default, the MIME types application/x-executable and application/octet-stream are enabled. Edit the script to add/modify desired MIME types.<br />
<br />
Picture is of marshland adjacent to <a href="http://en.wikipedia.org/wiki/Pitt_Lake">Pitt Lake</a> near my place... I originally emailed this post in from my iPhone 4 which looked OK in the mobile version of Blogger, but had weird line breaking going on that I had to later undo from a browser...Just me testing.Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-68649456295465157802011-05-27T03:36:00.000-07:002011-05-27T03:36:54.898-07:00SQLITE Ternary OperatorWhile SQLITE provides the same functionally as the traditional result = (condition) ? value-if-true : value-if-false, it does not support such syntax. The general syntax is:<br />
<br />
<script type="syntaxhighlighter" class="brush:php">
result = CASE WHEN some-condition THEN val-if-true ELSE val-if-false END
</script><br />
<br />
For example, here's the correct SQLITE ternary syntax to check for a NULL value before incrementing it:<br />
<br />
<script type="syntaxhighlighter" class="brush:php">
UPDATE myTable SET myValue = CASE WHEN myValue then myValue + 1 ELSE 1 END WHERE id=1234
</script><br />
<br />
If myValue is not NULL, set myValue to myValue +1, ELSE initialize it to 1.Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-29287628321688507172011-05-15T14:02:00.000-07:002011-05-16T18:47:59.950-07:00Google Single Sign-on OpenID | PHPThe example below uses Google's OpenID API to request and validate the user's GMail address. The visitor is first directed to Google's sign-in page in order to verify your request to access their email. Once approved, the visitor is sent back to this page along with the necessary OpenID id's and signatures required to validate the user's credentials directly with Google. <br />
<br />
<script class="brush: php" type="syntaxhighlighter">
<?php
$email =$_GET['openid_ext1_value_email'];
// Service Discovery.
$url="https://www.google.com/accounts/o8/id";
$xml = simplexml_load_file( $url);
$baseurl= $xml->XRD->Service->URI[0];
//$baseurl="https://accounts.google.com/o/openid2/auth?";
$openid_return_to = "http://YourSite.com/ThisPageName.php";
// Google OpenID Parameters
// OpenID.
$openid_ns = "http://specs.openid.net/auth/2.0";
$openid_mode="checkid_setup";//immediate";//;
$openid_claimed_id="http://specs.openid.net/auth/2.0/identifier_select";
$openid_identity="http://specs.openid.net/auth/2.0/identifier_select";
//$openid_assoc_handle="";
//$openid_realm="";
// Sum openid paramaters.
$openid="openid.ns=$openid_ns&openid.claimed_id=$openid_claimed_id&openid.identity=$openid_identity&openid.return_to=$openid_return_to&openid.mode=$openid_mode&$openid_mode=checkid_setup";
// OpenID AX.
$openid_ns_ax="http://openid.net/srv/ax/1.0";
$openid_ax_required="email";
$openid_ax_type_email="http://schema.openid.net/contact/email";
$openid_ax_mode="fetch_request";
// Sum openid.ax
$openid_ax="openid.ax.required=$openid_ax_required&openid.ns.ax=$openid_ns_ax&openid.ax.type.email=$openid_ax_type_email&openid.ax.mode=$openid_ax_mode";
// OpenID UI.
$openid_ui_mode="popup";
$openid_ns_ui="http://specs.openid.net/extensions/ui/1.0";
$openid_ui ="openid.ui.mode=$openid_ui_mode&openid.ns.ui=$openid_ns_ui";
// No GET received start openID authorization.
if(empty($email)){
// Sum all parameters -we want basic openid plus access to email (openid.ax) & popup styling (openid.ui).
$params ="$openid&$openid_ax&$openid_ui";
// Take the browser to Google's authorization & sign in.
echo "<script>window.location='".$baseurl.'?'.$params."<script>";
///// END Discovery & OpenID Request
else{
// Verify GET paramters received.
// All signed field must be sent back to google along with id's, sig & nonce fields.
// echo "Received $_GET['openid_signed') fields";
$verifyParameters="
openid.op_endpoint=".$_GET['openid_op_endpoint']."&
openid.claimed_id=".$_GET['openid_claimed_id']."&
openid.mode=check_authentication&
openid.identity=".$_GET['openid_identity']."&
openid.return_to=".$_GET['openid_return_to']."&
openid.response_nonce=".$_GET['openid_response_nonce']."&
openid.assoc_handle=".$_GET['openid_assoc_handle']."&
openid.ns.ext1=".$_GET['openid_ns_ext1']."&
openid.ext1.mode=".$_GET['openid_ext1_mode']."&
openid.ext1.type.email=".$_GET['openid_ext1_type_email']."&
openid.ext1.value.email=".$_GET['openid_ext1_value_email']."&
openid.signed=".$_GET['openid_signed']."&
openid.ns=".$_GET['openid_ns']."&
openid.sig=".$_GET['openid_sig'];
$url = ($baseurl."?".$verifyParameters);
$file=file_get_contents($url);
// Response from Goolge looks like this:
// ns:http://specs.openid.net/auth/2.0 is_valid:true
// Look for 'is_valid:true'.
if(!preg_match("/is_valid:true/", $file)){
// Code to handle validation failure.
die("Validation failed. $file $url");
//TODO let's take the user home.
}
echo "$email - authorized. Signing in now.");
echo "<script>setTimeout(function(){window.location='/'}, 3000);<script>";
}
?>
</script>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-66823127372911799432011-05-14T16:05:00.000-07:002011-05-15T01:49:35.406-07:00Facebook Single Sign-on OAuth | PHPFurther to my <a href="http://wayne-doucette.blogspot.com/2011/05/single-sign-on-with-facebook-linkedin.html"> Single Sign-on with Facebook LinkedIn GMail</a> post, below is a single page example of how to authenticate, authorize and obtain user data such as an email address with Facebook's OAuth API written in PHP.<br />
<br />
<br />
<pre class="brush:php" type="syntaxhighlighter">
<?php
$app_id = "YOUR FACEBOOK APP ID";
$app_secret = "YOUR FACEBOOK APP SECRET";
$my_url = "http://www.yoursite.com/nameOfThisFile.php";
$scope="email";
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)."&scope=".$scope;
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&client_secret="
. $app_secret . "&code=" . $code;
$access_token = file_get_contents($token_url);
$graph_url = "https://graph.facebook.com/me?" .$access_token;
$user = json_decode(file_get_contents($graph_url));
if($user->email) {
// Code to handle successful authentication.
echo("
$user->name: - $user->email - authorized
-signing in now...");
// Take user to main page.
echo "<script> setTimeout(function(){window.location='/'}, 3000);</script>";
}
else {
// Code to handle failure or refusal.
echo "Something went wrong while trying to authorize your account with Facebook.";
}
?>
</pre>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-78858807799886308352011-05-14T14:39:00.000-07:002011-05-16T00:36:36.403-07:00Single Sign-on with Facebook LinkedIn GMail<div style="text-align: justify;">One of the greatest improvements in online usability and user experience since the adoption of AJAX techniques that provide functionality such as <a href="http://www.google.com/support/websearch/bin/answer.py?answer=106230">Google Suggest</a>, is the standardization of single sign-on. <a href="http://openid.net/">OpenID</a> has been around for a long time and has helped pave the way to robust, secure 3rd party information exchange frameworks such as <a href="http://oauth.net/">OAuth</a>.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">The purpose of these services is to allow sites to authenticate end users and optionally access their information such as email address, photo stream, Facebook profile, LinkedIn contacts or any other information the site may request and the user agrees to share.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">For example, a few simple clicks and your visitor can sign-up to your site and provide you with a validated email address without completing yet another subscription form, without replying to yet another email confirmation message and without memorizing yet another password... All this is thanks to the fact that everyone already has an account with a large, trusted service provider such as GMail, Facebook, LinkedIn, Yahoo!, or even a Blogger account. These 3rd party service implement standardized protocols such as OpenID and OAuth to offerer decentralized, user-centric, authentication and authorization service that any site can leverage to enhance their user's experience.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Lets say your visitor is already signed into Facebook. If they are then presented with the option of signing in to your site using their Facebook account, all the user has to do is click a button to approve your site's request with Facebook. Assuming your visitor approves this access, Facebook then returns the requested information and provides you with a method to authenticate the details with Facebook directly to ensure that the visitor is who they say they are. That is, they are legitimate as far as Facebook is concerned and at a minimum they have an active Facebook account with an associated previously validate email address.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">The more information you require the less inclined the user will be to approve your request. In fact, research indicates that an <a href="http://sites.google.com/site/oauthgoog/UXFedLogin/summary">inverse correlation in user acceptance with information requested</a> exists. So, unless your site provides some form of integration with the visitor's social data, then there is no need to request anything more than their email address, which is the norm.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">The factor against widespread adoption of single sign-on and user information interchange has been the implementation complexity, which has limited deployments in large part to competent system admins with above-average server-side programming capabilities. While specific implementations have become more straight forward to undertake, at the same time, there is a large amount of change occurring with the underlying standards and volumes of mostly technical literature that follow -This can make implementation at a practical level tough.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Facebook by far has done the best job implementing their solution with working examples that fit on a single page. See my <a href="http://wayne-doucette.blogspot.com/2011/05/facebook-single-sign-on-oauth-php.html">Facebook Single Sign-on Example</a> article. LinkedIn, on the other hand seems to have gone out of their way to make the process as obscure as possible. Google is somewhere in-between. While on the one hand Google is advancing standards development and providing proprietary enhancements with loads of examples and technical documentation, on they lack simple examples to facilitate practical implementations. In short, they simply offer too much choice.<br />
<br />
Third parties are more interested in having their user data shared and embedded than they are with merely providing a free authentication service. This is why service providers such as LinkedIn make embeddeding user content easier than authenticating. Goole's OAuth implementation for example is a two step process -Approve request, share data. You have to do both. While most site admins are mainly interested in authentication and a valid email address, LinkedIn will not allow users to share it. Facebook on the other hand implements the more robust OAuth standard but permits you to do what you want - authenticate user/get email and optionally share share data.<br />
<br />
</div><div style="text-align: justify;">In a nutshell, if you only want authentication/email OpenID is all you need. If you want to access user social data, OAuth is the more robust way to go. The problem is that each provider has different limitations and proprietary extensions -change is the only constant.<br />
<br />
</div><div style="text-align: justify;">Deciding which technique to use depends mainly on what you require from the 3rd party service and to a lesser degree your architecture and administration capabilities and security level requirement.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">My recent experience comes from implementing these authentication and authorization techniques on a service providing <a href="http://www.in2qr.com/">dynamic QR codes</a> that I am currently designing.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">I will create links to Single Sign-in Howto's for several different scenarios below:</div><div style="text-align: justify;"><br />
<span class="Apple-style-span" style="color: red; font-size: large;">Instructions for <a href="http://wayne-doucette.blogspot.com/2011/05/facebook-single-sign-on-oauth-php.html">Single Sign-on using Facebook</a></span><br />
<br />
<span class="Apple-style-span" style="color: red; font-size: large;">Instructions for <a href="http://wayne-doucette.blogspot.com/2011/05/google-single-sign-on-openid-php.html">Single Sing-on with Google</a> </span> </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>Server-Side Solutions - Most Flexible, Powerful and Secure:</b></div><div style="text-align: justify;"><b><br />
</b></div><div style="text-align: justify;">Even if only a basic level of security is required your server must somehow know that the 3rd party service provider can vouch for the identity of the user. While this can be achieved in several different ways, all of these methods require some sort of server-side administration capability. You will need to place some code on the server for example, in order to process and validate the authentication and authorization process.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Things can get complicated because it is possible to only partly implement a solution which can leave your site susceptible to spoofing attacks (bad people pretending to be a trusted 3rd party) and each provider implements things a little differently, which only adds to the complexity and odds of someone making a mistake...</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>Web Browser Solutions - Easy, Fast but Least Powerful: </b></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Here 3rd party JavaScript APIs allow anyone that can add a <script></div><div style="text-align: justify;">tag to their site or even blog to 'authenticate' visitors and authorize their data to appear on your page.<br />
<br />
These client side techniques simplify user data integration but make secure authentication more challenging...More on this later.</div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-32024779710021865412011-05-14T01:52:00.000-07:002011-05-14T23:23:26.884-07:00Lexicographical (Ordinal) Byte Sort | PHP OAuth<p />One requirement of the OAuth spec is the "Lexicographical Byte Value Ordering" of request parameters. The term Lexicographical is misleading as it implies a form of case-insensitive dictionary sorting whereas in practice, the spec implements an Ordinal sort. Specifically and more simply put -all the spec requires is sorting by ASCII character value. In case two parameters share the same name, then the ordering convention applies to both the parameter's name and value -i.e., concatenate key+value before sorting and call it a day. <br />
<br />
To keep things simple, I found that expanding the parameter key/value pairs into strings of ASCII codes represented in hexadecimal format allows a simple asort($myByteArray, SORT_STRING) PHP builtin function to do the trick.<br />
<br />
Pass in a delimited string of key=value pairs and this function will return a string with the parameters urlencoded, sorted Ordinally by ASCII values as per the OAuth spec:<br />
<br />
<script type="syntaxhighlighter" class="brush: php"><?php
//OAuth Lexicographical (Ordinal) Byte Value Ordering.
function ordByteSort($params, $delimiter="&"){
// Delimit params: key1=value1,key2=value2...OR key1=value1&key2=value2 etc.
$params = explode($delimiter, $params);
$array = array();
foreach($params as $index => $param){
$keyval = explode("=", $param);
// URL Encode params.
array_push($array, array( 'key' => rawurlencode(trim($keyval[0])),'val' => rawurlencode(trim($keyval[1]) )));
}
// Unsorted array of strings to hold ASCII byte encodings.
$ordBytes = array();
foreach($array as $param) {
$bytes_str ="";
// Concatenate key+val pairs and expand to array of char bytes.
$chars = str_split($param['key'].$param['value'],1);
// Convert chars to string of ASCII in hex format.
foreach($chars as $chr) {
$bytes_str .= dechex(ord($chr));
}
// Now holds string of key+value in ASCII hex.
array_push($ordBytes, $bytes_str);
}
// Sort hex strings, keep index.
asort($ordBytes ,SORT_STRING);
$retval = "";
$len = count($array)-1;
foreach($ordBytes as $index=>$value){
// Build return string using the reordered index.
$retval .= $array[$index]['key']."=".$array[$index]['val'];
if($len--) $retval .= "&";
}
// Return key/value pairs with amazingly fresh indexing.
return $retval;
}
?>
</script><br />
<br />
<br />
Params in:<br />
Msg=Hello World!, MSg=Hello World!, 1=one ,za=1, a= 2>1, B= 2 , c= hi there,f=50, f=25 , f=a, test=z, test=z1, test=z12, test= <br />
<br />
Outputs:<br />
<br />
1=one&B=2&MSg=Hello World!&Msg=Hello World!&a=2>1&c=hi there&f=25&f=a&f=50&test=&test=z12&test=z&test=z1&za=1<br />
<br />
<br />
(Actual output with urlencoding)<br />
<br />
1=one&B=2&MSg=Hello%20World%21&Msg=Hello%20World%21&a=2%3E1&c=hi%20there&f=25&f=a&f=50&test=&test=z12&test=z&test=z1&za=1Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com2tag:blogger.com,1999:blog-8730213227222236962.post-53300509395913789742011-04-28T14:03:00.000-07:002011-04-28T14:12:53.720-07:00Random URL Path Generator | PHPCreating randomized valid file paths is a common requirement for many applications such as the case of short url redirects. The Goo.gl url shortening service produces a random Alphanumeric file path 5 characters long. This allows letters A~z and decimal numbers 0~9. Five alphanumeric character ought to be enough in practice for most applications as this equates to 62^5 = 1 Billion (916,132,832) unique url combinations before you need to revisit the situation or run into a y2k wall of sorts.<br />
<br />
For example, a short url may look something like this:<br />
<br />
<a href="http://goo.gl/XMoug">http://goo.gl/XMoug</a><br />
<br />
Behind the scenes, this url is then redirected by the service to its proper destination such as http://wayne-doucette.blogspot.com/<br />
<br />
Here's a function in PHP that returns an ASCII character array, defaulting to 5 characters in length. -Although the forward slash is a permissible character, I have not allowed it in my application as I do not wish the generated paths to represent file directories.<br />
<br />
getHash() first loads a decimal array representing ASCII codes of the permissible character set, seeds the PHP random number generator, then finally builds and returns a random array of ASCII characters.<br />
<br />
<script class="brush: xhtml" type="syntaxhighlighter">
function getHash($len=5){
$chars = Array();
//0~9
$offset =48;
for($i=0;$i<10;$i++){
array_push($chars, ($i + $offset));
}
//az
$offset =97;
for($i=0;$i<26;$i++){
array_push($chars, ($i + $offset));
}
//AZ
$offset =65;
for($i=0;$i<26;$i++){
array_push($chars, ($i + $offset));
}
srand(make_seed());
$retval = Array();
// Load chars
for($i=0;$i<$len;$i++){
array_push($retval, chr($chars[rand(0, count($chars)-1)]));
}
return $retval;
}
function make_seed()
{
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
</script>
To implement the method, simply do something like this:
<script class="brush: xhtml" type="syntaxhighlighter">
$hash =getHash();
foreach($hash as $c){
echo $c;
}
</script>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-10757589560109731642011-01-16T05:37:00.000-08:002011-01-16T05:37:18.496-08:00Dynamic QR Code Generator | jQuery Google ChartsIf you're interested in placing QR tags dynamically on your site, here's how I did it in less than 5 minutes thanks to Google's Chart API and jQuery...<br />
<br />
Simply create an img element, setting it's src attribute to the Google Chart API appending your desired URL and image size to the query as follows:<br />
<br />
<script class="brush: xhtml" title="Dynamic QR Code Generator with jQuery and Google Chart API" type="syntaxhighlighter">
//Begin Code
<img height="240" id="QRImage" width="240" />
$("#QRImage").attr("src", "http://chart.apis.google.com/chart?cht=qr&chl=" + location.href + "&chs=240x240");
//End Code
</script><br />
<br />
This dynamically creates a 240x240 QR image, encoding the URL of the current page.<br />
<br />
<br />
Try it out here for yourself:<br />
<br />
<form action="javascript:updateQRImage()"><input id="inputURL" type="text" /><input type="submit" /></form><br />
<div id="output"><span id="qrStatus"><br />
</span><br />
<img border="0" height="240" id="qrOutputImage" width="240" /></div><br />
<script>
function updateQRImage(){
url=$("#inputURL").val();
$("#qrOutputImage").attr("src", "http://chart.apis.google.com/chart?cht=qr&chl=" + escape(url) + "&chs=240x240");
$("#qrStatus").text("Dynamic QR Encoding of: " + url);
$('#qrStatus').effect('highlight');
}
</script><br />
<br />
Drag this bookmarklet to your bookmarks then click it whenever you want to dynamically generate a QR code of sites you visit:<br />
<br />
<a href="javascript:window.open("http://chart.apis.google.com/chart?cht=qr&chs=240x240&chl="+escape(location.href),"QR Image","height=240, width=240");">Make QR Code</a><br />
<br />
<script>
$("#inputURL").val(location.href);
$("#qrOutputImage").attr("src", "http://chart.apis.google.com/chart?cht=qr&chl=" + escape(location.href)+"&chs=240x240");
$("#qrStatus").text("Dynamic QR Encoding of: " + location.href);
</script>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com4tag:blogger.com,1999:blog-8730213227222236962.post-90712735013832448452010-09-30T04:38:00.000-07:002010-09-30T06:27:39.874-07:00URLs to jQueryUI CSS Themes on GoogleHere's the URL path locations of jQueryUI themes as hosted on Google's Code Distribution Network:<br />
<br />
<div id="pathlist" style="float: left;">Base <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/base/jquery-ui.css">source</a><br />
Black Tie - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/black-tie/jquery-ui.css">source</a><br />
Blitzer - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/blitzer/jquery-ui.css">source</a><br />
Cupertino - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/cupertino/jquery-ui.css">source</a><br />
Dark Hive - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/dark-hive/jquery-ui.css">source</a><br />
Dot Luv - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/dot-luv/jquery-ui.css">source</a><br />
Eggplant - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/eggplant/jquery-ui.css">source</a><br />
Excite Bike - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/excite-bike/jquery-ui.css">source</a><br />
Flick - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/flick/jquery-ui.css">source</a><br />
Hot sneaks - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/hot-sneaks/jquery-ui.css">source</a><br />
Humanity - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/humanity/jquery-ui.css">source</a><br />
Le Frog - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/le-frog/jquery-ui.css">source</a><br />
Mint Choc - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/mint-choc/jquery-ui.css">source</a><br />
Overcast - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/overcast/jquery-ui.css">source</a><br />
Pepper Grinder - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/pepper-grinder/jquery-ui.css">source</a><br />
Redmond - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/redmond/jquery-ui.css">source</a><br />
Smoothness - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/smoothness/jquery-ui.css">source</a><br />
South Street - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/south-street/jquery-ui.css">source</a><br />
Start - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/start/jquery-ui.css">source</a><br />
Sunny - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/sunny/jquery-ui.css">source</a><br />
Swanky Purse - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/swanky-purse/jquery-ui.css">source</a><br />
Trontastic - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/trontastic/jquery-ui.css">source</a><br />
UI Darkness - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/ui-darkness/jquery-ui.css">source</a><br />
UI Lightness - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/ui-lightness/jquery-ui.css">source</a><br />
Vader - <a href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.5/themes/vader/jquery-ui.css">source</a></div><div style="float: right;"><div id="datepicker"></div></div><br />
<br />
<pre class="brush: js">//
//Code to make it work:
//
<script>
$("#datepicker").datepicker();
//Element containing the anchor list
$("#pathlist").children("a").hover(function(e){
//Change href of stylesheet element
$("#jQueryUI").attr("href", this);
});
</script>
</pre>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-45139835100797942732010-09-29T02:16:00.000-07:002011-01-02T07:39:07.888-08:00jQuery on Google CloudOne of the downsides to distributed cloud computing is the increased number of HTTP requests that are required in order to pull together a given web page. Each time an externally located resource is needed, the web browser must resolve the hostname and create a discrete HTTP socket in order to fetch it. <br />
<br />
The client realizes this as an increasing performance penalty -a slow site.<br />
<br />
Ideally in terms of performance, a single HTTP request would fetch a single resource that contained a complete HTML document. This can be helped along by embedding CSS style sheets and JavaScript along with the HTML document as appose to referencing them externally. In reality however, the fetched page more likely instructs the client browser to fetch several other linked resources in order to assemble the final document.<br />
<br />
The prevalence of the increasing number of external resources is being driven by the rapid development and popularity of third-party libraries such as JQuery. <br />
<br />
<a href="http://code.google.com/apis/libraries/">Google Libries API</a> offers managed distributed code serving via google.load() along with their own search and other open-source APIs. By offloading this to Google's code distribution in the cloud, version control, file size and caching of third-party APIs can be optimized. Google Libraries API currently hosts the following resources:<br />
<ul><li>Chrome Frame</li>
<li>Dojo</li>
<li>Ext Core</li>
<li>jQuery</li>
<li>jQuery UI</li>
<li>MooTools</li>
<li>Prototype</li>
<li>script.aculo.us</li>
<li>SWFObject</li>
<li>Yahoo! User Interface Library (YUI)</li>
<li>WebFont Loader</li>
</ul><br />
<br />
<pre type="syntaxhighlighter" class="brush: js">/*
* Place the following code between <head></head> tags
* of your blogger template.
*
*/
<script src="http://www.google.com/jsapi" >
</script>
<script >
google.load("jquery", "1.4.2"); // google.load("jquery", "1") if a specific version is not required
google.load("jqueryui", "1.8");
</script>
</pre><br />
Google requires an API key to use methods such as google.load() on non-Google domains. You can link directly to the libraries like this:<br />
<br />
<pre class="brush: html"><script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript">
</script>
</pre><br />
Paths to each <a href="http://code.google.com/apis/libraries/devguide.html">Google Library API</a> can be found here.<br />
<br />
<br />
Or load JSAPI with an API key as follows:<br />
<br />
<pre class="brush: js"><script src="http://www.google.com/jsapi?KEY=yourAPIKeyHere">
</script>
</pre><br />
<br />
Sign up for a <a href="http://code.google.com/apis/ajaxsearch/signup.html">Google API key</a> here.Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-28438434936080094552010-09-29T00:14:00.000-07:002010-09-30T03:32:50.676-07:00Online HTML Entity Encoder/Decoder | JQuery<textarea rows="10" cols="20" style="border:1px solid;" class="prettycode prettycodeinput" id="taInput">Decoded HTML</textarea><br />
<br />
<br />
<textarea rows="10" cols="20" style="border:1px solid;" class="prettycode prettycodeoutput" id="taOutput">Encoded HTML Entities</textarea><br />
<br />
<script>
$('#taInput').blur(function (){toHtmlEntities();
});
$('#taOutput').blur(function (){toHtml();
});
function toHtmlEntities(){
var htmlStr = $('#taInput').val();
$('#taOutput').val($('<div/>').text(htmlStr).html());
$('#taOutput').effect('pulsate');
$('#taOutput').select();
}
function toHtml(){
var entitiesStr = $('#taOutput').val();//$('<div/>').text(entitiesStr).html());
$('#taInput').val($('<div/>').html(entitiesStr).text());
$('#taInput').effect('pulsate');
$('#taInput').select();
}
</script><br />
<br />
<pre class="brush: javascript; ruler: true; first-line: 10;">/**
* Encode HTML tags as HTML Entities
* using jQuery
*
* Code takes raw HTML from first Textarea tag and
* places HTML entities into a second Textarea tag.
*/
function htmlEntities(){
var htmlStr = $('#taInput').val();
$('#taOutput').val($('<div/>').text(htmlStr).html());
$('#taOutput').effect('pulsate');
}
</pre>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com1tag:blogger.com,1999:blog-8730213227222236962.post-52951282494113699262010-09-23T18:16:00.000-07:002010-09-23T18:16:37.870-07:00Shared Data Access for Telecommuters<div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"><span style="color: black;"><span style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial;"><span class="Apple-style-span" style="font-family: Arial; font-size: small;"><span class="Apple-style-span" style="font-size: 13px;"><br />
</span></span><span style="font-family: 'Times New Roman'; text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;">Providing a user-friendly, secure and reliable remote shared data access solution is an essential IT service that will effect the day-to-day productivity and satisfaction of your staff. Whether you have a need to support one remote account or 10 thousand, one such solution that facilitates a user-friendly experience while minimizing complexity for Systems Administrators is Microsoft’s Remote Desktop Connection. This method allows personnel to log-in to their own personalized desktop from any remote location just as if they were sitting at their own PC in the office. As a type of “thin-client”, the remote PC only relays the keyboard, mouse and screen display while the work of processing application software and managing shared file storage remain with the corporate server. All that is required by the telecommuter is a basic PC and a high-speed Internet connection.</span></span></span></span></span></div><div align="JUSTIFY" style="margin-bottom: 0cm; orphans: 2; widows: 2;"><span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;"><br />
</span></span></span></span></span><span style="color: black;"><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">Every Microsoft Windows operating system includes the RDC client software and every Windows PC (except the Windows “Home” version) is capable of hosting at least one Remote Desktop connection. This means that even if your company does not have a full Microsoft sever it is still possible to implement a basic RDC solution with no additional software costs. </span></span></span></span></span></span></span><span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;"><br />
</span></span></span></span></span><span style="color: black;"><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">The underpinnings to RDC are provided by Microsoft’s Terminal Services. Entry-level Microsoft server operating systems allow for a maximum of two simultaneous connections beyond which additional Terminal Services licenses are required.</span></span></span></span></span></span></span></div><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <br />
</div><div align="JUSTIFY" style="font-style: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: small;"><b><span style="background: transparent;">BENEFITS</span></b></span></span></span></div><ol><li><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: arial, sans-serif;"><span style="font-size: small;"><span style="background: transparent;">Remote personnel are provided with the same, familiar desktop and applications that they see while working from within the office</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: arial, sans-serif;"><span style="font-size: small;"><span style="background: transparent;">A single-point of administration for security, user privileges and application software reduces cost and complexity for Systems Administrators.</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="background: transparent;"><span style="text-decoration: none;"><span style="font-family: arial, sans-serif;"><span style="font-size: small;">Th</span></span></span><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;">e office PC can be accessed from anywhere that an Internet connection is available.</span></span></span></span></span></span></div><div align="JUSTIFY" style="margin-bottom: 0cm; orphans: 2; widows: 2;"><span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;"><br />
</span></span></span></span></span>CONFIGURATION<span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;"><br />
</span></span></span></span></span><span style="color: black;"><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">The most difficult aspect involves configuring the corporate network appliance such as an Internet router or firewall. A rule must be created that will forward inbound requests received on the public Internet Protocol (IP) address to the appropriate internal, private IP address of the Terminal Server or dedicated workstation.</span></span></span></span></span></span></span></div></li>
</ol><ol start="2"><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="background: transparent;">
<span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;"><b>EXAMPLE CONFIGURATION</b></span></span></span></span></span></span></div><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="background: transparent;"><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;">RDC utilizes IP port number 3389 by default. For example, if the private IP address of the Terminal Server or dedicate workstation you want to connect to is 192.168.1.10, and the public IP address of the office is 70.68.47.137, then the following firewall/router rule is required: </span></span></span>
<span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;">TCP Inbound 70.68.47.137:3389 --> 192.168.1.10</span></span></span></span></span></span></div><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="background: transparent;">
<span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;">This type of rule is commonly assigned under the “Port Forwarding” or “Applications” section of Internet firewalls.</span></span></span></span></span></span></div><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="font-family: arial, sans-serif;"><span style="background: transparent;">
</span></span></span>
</div></ol><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <br />
</div><ol start="2"><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> </div><div align="JUSTIFY" style="margin-bottom: 0cm; orphans: 2; widows: 2;"><span style="font-family: arial, sans-serif;"><span style="color: black;"><span style="text-decoration: none;"><span style="font-size: small;"><span style="font-style: normal;"><b><span style="background: transparent;">TESTING</span></b></span></span></span></span><span style="color: black;"><span style="font-style: normal;"><b><span style="background: transparent;">
</span></b></span></span><span style="color: black;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">Ensure Terminal Services is running and accessible from within the office by opening a </span></span></span></span><span style="color: black;"><span style="text-decoration: none;"><span style="font-size: small;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">Remote Desktop Connection on an available PC and enter the PRIVATE IP address of the Terminal Server in the “Computer” field and click “Connect”. </span></span></span></span></span></span></span> </div><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> </div><div align="JUSTIFY" style="margin-bottom: 0cm; orphans: 2; widows: 2;"><span style="font-family: arial, sans-serif;"><span style="color: black;"><span style="text-decoration: none;"><span style="font-size: small;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">To test remotely, the forwarding rule must be in place. Open Remote Desktop Connection on the remote client PC and enter the PUBLIC IP address of the office in the “Computer” field and click “Connect”.</span></span></span></span></span></span></span></div><div align="JUSTIFY" style="font-style: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> </div><div align="JUSTIFY" style="font-style: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: arial, sans-serif;"><span style="font-size: small;"><b><span style="background: transparent;">SECURITY AND USABILITY</span></b></span></span></span></div><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="background: transparent;"><span style="text-decoration: none;"><span style="font-family: arial, sans-serif;"><span style="font-size: small;">Sometimes port 3389 can be blocked by Internet Service Providers. An alternative is to use Terminal Services Web (see TSWeb note 4) or a Virtual Private Network (see VPN note 5 ). A VPN solution in conjunction with a firewall provides more robust security and protection against denial-of-servic</span></span></span><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;">e and other attacks.</span></span></span></span></span></span></div><div align="JUSTIFY" style="font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="font-family: 'Times New Roman';"><span style="background: transparent;">
<span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: x-small;"><b>NOTES</b></span></span></span></span></span></span></div></ol><ol><li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">To determine the public IP of the office: </span></span></span></span> </div><ol><li><div align="JUSTIFY" style="background: transparent; margin-bottom: 0cm; orphans: 2; widows: 2;"> <span style="color: black;"><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;">from the office, visit </span></span></span></span></span></span></span><a href="http://whatismyip.org/"><span style="color: #000099;"><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="font-style: normal;"><u><span style="font-weight: normal;"><span style="background: transparent;">http://whatismyip.org/</span></span></u></span></span></span></span></span></a><span style="color: black;"><span style="text-decoration: none;"><span style="font-family: Arial;"><span style="font-size: small;"><span style="font-style: normal;"><span style="font-weight: normal;"><span style="background: transparent;"> </span></span></span></span></span></span></span> </div></li>
</ol></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">To display the private IP of the Terminal Server/Workstation:</span></span></span></span></div><ol><li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Click Start-->Run</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Type cmd [ press enter]</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Type ipconfig [press enter].</span></span></span></span></div></li>
</ol></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">To enable Remote Desktop on a Windows workstation (unavailable on MS Windows “Home” versions):</span></span></span></span></div><ol><li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Right-click “My Computer”</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Click “Properties”</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Click “Remote” tab</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Place a check in the “Allow Remote Connections” box</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">Click “OK”</span></span></span></span></div></li>
</ol></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">TSWeb is an Active-X plug in for Internet Explorer that acts as a gateway to Terminal Services. This allows RDC to be carried over HTTP on port 80 rather than port 3389 (which can sometimes be blocked by ISPs). With a TSWeb solution, all the client requires is Internet Explorer rather than the Remote Desktop Connection client.</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">When connecting over a VPN, the private IP of the Terminal Server/Workstation should be used in the “Computer” field when starting Remote Desktop Connection.</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">IP addresses on the office side should be statically assigned so that they never change.</span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">In order for remote users to see the same desktop as they do when they log in locally, each user account must have the Terminal Services user profile path set in Active Directory to the same UNC path as their local profile. </span></span></span></span></div></li>
<li><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;">RDC client software is also available for non-Windows clients such as Linux/Mac</span></span></span></span></div></li>
</ol><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <br />
</div><div align="JUSTIFY" style="background: transparent; font-style: normal; font-weight: normal; margin-bottom: 0cm; orphans: 2; text-decoration: none; widows: 2;"> <span style="color: black;"><span style="font-family: Arial;"><span style="font-size: x-small;"><span style="background: transparent;"><span style="font-family: 'DejaVu Sans', sans-serif;">©</span> WAYNE DOUCETTE SEPTEMBER 2010</span></span></span></span></div><div align="JUSTIFY" style="margin-bottom: 0cm;"><br />
</div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-90447572029157557972010-09-14T02:29:00.000-07:002010-09-14T02:43:41.228-07:00Ground Zero Mosque | A Compromise<div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Applause to Solodad O'Brian and Imam Feisal Abdual Rauf for the solid, enlightening, interview on CNN September 11. The Imam, while appearing to be a sincere and dedicated man, failed to impress me on several points. Firstly, his main arguments suppose that America at large would somehow be responsible for the outrage and subsequent violent backlash, both domestically and abroad, should the American people decide to relocate the proposed mosque -sounds like a simplistic world view; the undisciplined child in need of a spanking... </div><div><div style="text-align: justify;"><br />
</div></div><div><div style="text-align: justify;">Secondly, Imam Rauf stated that "...devout Muslims consider the Quran to be the word of God..." "To burn it would be considered a sacrilegious act akin in the eyes of Christians to ...burning the Sistine Chapel." I'm not sure why the Imam chose to draw a distinction between two holy texts -the Bible and the Quran.In fact, burning the Quran is not akin to burning the Sistine Chapel -it's akin to burning the Bible. It's obvious he is delicately choosing his words in catering to an obscene audience rather than get to the heart of the issue at hand -peace, which requires tolerance which in turn requires maturity.</div></div><div><div style="text-align: justify;"><br />
</div></div><div><div style="text-align: justify;">Read between the lines -American's are tolerant to a fault. Why does the Muslim world fail to condemn violence in the name of religion. Failing to do so is bringing a war -a war that they want- against Islam. Radicals alone are not singly to blame as the silence of supposed moderates makes them equally culpable. </div></div><div><div style="text-align: justify;"><br />
</div></div><div><div style="text-align: justify;">If the Imam's sentiments are true, then he will agree that the only compromise is to build an inclusive, multi-denominational spiritual and community center -not an exclusive club.</div></div><div><div style="text-align: justify;"><br />
</div></div><div><div style="text-align: justify;">How many Quran's were burned during the 9/11 attacks? -Perhaps security officials should consider placing a Quran on the top floor of every building to stave-off future terror attacks lest any be burned.<br />
<br />
This issue has absolutely NOTHING to do with religion and everything to do with FEAR mongering on both sides. </div></div><div><div style="text-align: justify;"><br />
</div></div><div><div style="text-align: justify;">God bless America and its tolerance.</div></div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-18656066917345450472010-09-11T14:10:00.000-07:002010-09-11T14:10:23.243-07:00How to Make a Conspiracy Video | Maniac Muslim<object height="385" width="640"><param name="movie" value="http://www.youtube.com/v/JINlv7_VXdc&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://www.youtube.com/v/JINlv7_VXdc&color1=0xb1b1b1&color2=0xd0d0d0&hl=en_US&feature=player_embedded&fs=1" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="385"></embed></object>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-20636006427574796892010-08-19T06:12:00.000-07:002010-08-19T06:12:55.258-07:00Dr Laura's N-Word FiascoDr. Laura committed PR suicide on CNN as she tried backpedaling -baldy- her way out. It was like watching a train wreck in slow motion. Instead of standing by her failed attempt to underscore the fact that racial sensitivities and tension are still alive and well by her use of the 'N-Word' 11 times during her radio broadcast, she now wants to quit radio to spare what little's left of her 1st amendment rights to say stupid shit.<br />
<br />
Dr Laura should have plead the 5th instead of fulling the fire with a completely empty, meaningless apology. Now she looks like a racist doing damage control instead of a frank, outspoken professional.<br />
<br />
Whoever advises this woman must be short-selling Dr Laura shares.Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-59688416729945596802010-08-17T10:18:00.000-07:002010-08-17T10:28:20.391-07:00Why are People so Stupid?<b>Is there a scientific reason that can explain Why People are So stupid? </b>It's not surprising that so many people take advantage of being dumb seeing as it's very easy to accomplish. At least they are doing what they're good at. What is surprising is how good otherwise smart people can, on occasion, excel in the act of blind stupidity.<br />
<div><br />
</div><div>I was once told that critical thinking ought to be taught in school, which while appealing to the ear, is upon further reflection at least somewhat counter-intuitive. If after all, critical thinking needs to be taught in order to be learned, then where did the teacher learn from? In fact, critical thinking is an innate attribute found in all of us if we wish to employ it. </div><div><br />
</div><div>Rationally speaking, if everyone has the ability to think critically then there ought not to be any serious obstacle that would prevent otherwise sane people from reaching consensus. While in reality, there exist many such encumbrances. </div><div><br />
<b>Faulty Logic</b></div><div><div>The main reason why people are so stupid is that it's easy to apply faulty logic during the decision making process. In this scenario, logical decisions are base on either faulty or misinterpreted input data. For example, if your facts are that 1 + 2 = 4 then logically 4 - 2 = 1. The logic follows but the result does not; as the input data were faulty to begin with..</div><div><br />
</div><div><b>Faulty World View</b><br />
Taking this to a further layer of abstraction, faulty logic can also also be identified as the root cause of decision making failures where an accurate world view is necessary. Having suffered no real adversity, or the perils of corruption or political persecution, it is impossible for the average developed world citizen to articulate informed decisions to rationalize their own position or make judgement. Again, their faulty input data results in an unbalanced equation.<br />
<br />
The prevalence of underdeveloped Moral Age, where most adults fall into <a href="http://wayne-doucette.blogspot.com/2010/08/kohlbergs-stages-of-moral-development.html">Kohlberg's Stage 4</a>, or what I call the 'rules for fools' category, also speaks to the simplistic self-centered nature of the majority, i.e., Stupid People.</div><div><br />
<b>The Science of Morality</b><br />
Sam Harris gives a talk about how <a href="http://www.ted.com/talks/sam_harris_science_can_show_what_s_right.html">science can answer moral questions</a>. His view is that anything that detracts from collective human prosperity and development is scientifically wrong. Morality - right and wrong - are not exclusively dogmatic viewpoints. Evil does not pass logical scientific tests.<br />
<br />
In summary, to answer the question, "Why are People so Stupid?", is that most of us fail to recognize faulty logic, suffer from an underdeveloped moral age and possess a short-sighted world view.</div></div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com24tag:blogger.com,1999:blog-8730213227222236962.post-72705484498287507482010-08-15T17:00:00.000-07:002010-09-28T21:52:07.873-07:00Mosque at Ground ZeroThe outcry against the proposed construction of a Muslim mosque near ground zero is classic misplaced hostility. In this case, it's against the Muslim community. The terrorists responsible for the loss of innocent lives in the 911 attack represent no more the Muslim faith than Timothy McVeigh or Adolf Hiltler represented Christians.<br />
<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: small; line-height: 15px;"><br />
</span><br />
<span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: small; line-height: 15px;"></span>I was dismayed Obama feared popular opinion when he neglected the opportunity to uphold his duty to be outspoken in the support of the US Constitution. He had a chance to take a firm stance in support of First Amendment rights but failed to do so. So now the rules and basic tenets of the Constitution only apply when it's convenient or popular... Be careful; it's a slippery slope that can easily degrade into what America fears the most.<br />
<br />
Muslims didn't attack the twin towers -evil, misguided mad men did.<br />
<br />
<pre class="brush: js"> /**
* SyntaxHighlighter
*/
function foo()
{
if (counter <= 10)
return;
// it works!
}
</pre>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-81684735497434090402010-08-11T18:05:00.000-07:002010-08-14T04:47:34.674-07:00Protect Your Ideas - Do Nothing<div style="text-align: justify;">Over on Seth Godden's blog, Seth talks about the number one reason that people give him for giving up on a good idea is that "somebody's else is already doing it." </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">I've found that people express an excessive need to maintaining the secrecy of their idea -a catch all in order to avoid ever having to put their idea to the test. I believe that on a subconscious level, they don't feel the idea is a winner but their fear of losing the dream prevents them in finding out. To appease their ego, they let the idea stew -permanently- on the back burner.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">My advice is this: </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">1. Hope for competition: If your idea is good then someone else is likely doing it allready -and that's a good thing because it adds to the legitimacy of your idea as Seth Godden discussed here about the <a href="http://sethgodin.typepad.com/seths_blog/2010/08/competition.html">benefits of competition</a>.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">2. Become well known: If your idea were really good you would want the whole world to know about it.. Keeping it a secret therefore is counter intuitive.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">3. Take action: On majority, people have more to lose by not taking action than anything else. You should not marry a single idea. The sooner you learn weather your idea is a winner or not, the sooner you can focus your energies on the next step. </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Discussing your idea will force you to do one of two things: abandon it or make it happen.</div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-27496072975178113012010-08-10T21:36:00.000-07:002010-08-10T21:36:48.298-07:00Fresher Resume Sample<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOlVKjVZ4uJ5EINRQOwIGmnml5GFhBI0xIbJWGy_3qQA-GpI0It4LcR9h4xvZFxNj7c-Ap8T94fI_UKdS0blp0adWGsrhUNtWmbNaJjYbvkJJeB0V_YNFZwq6aoI0RsHPoV9zScnAqpSuJ/s1600/fresher.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="Fresher Resume Sample" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiOlVKjVZ4uJ5EINRQOwIGmnml5GFhBI0xIbJWGy_3qQA-GpI0It4LcR9h4xvZFxNj7c-Ap8T94fI_UKdS0blp0adWGsrhUNtWmbNaJjYbvkJJeB0V_YNFZwq6aoI0RsHPoV9zScnAqpSuJ/s320/fresher.png" /></a></div><br />
<div style="text-align: justify;"><br />
<br />
This <b>Fresher Resume Sample</b> is designed to highlight the skills and abilities of recent graduates. One thing most of you share is a lack of directly related job experience. This is a major catch-22 obstacle as you first have to be given the opportunity to perform a job before you can begin to build experience. Follow this Fresher Resume Sample to build a winning resume!</div><div style="text-align: justify;"><br />
<br />
<br />
<br />
A positive way to approach this situation is by first recognizing that you have in fact developed meaningful experience -indirectly- performing related roles. The trick to keep in mind is that you must clearly articulate how your experience -even if gained in an unpaid capacity - have allowed you to gain the combined experience necessary to successfully perform a specific job.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>It's all in the presentation:</b></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">On paper, a nice way for a fresher to sell themselves is by constructing what is known as a <i>functional resume.</i> A functional resume highlights your functionality - your employable skills and abilities - that you have acquired through experience -formal or not. Your specific past employment history and your roles are relegated towards the end of the resume.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">As an example you may be a fantastic typist, writer and editor. In college, perhaps you had a lot of thankful friends that recognized you for your abilities and they often asked of your help and input to write papers and essays. This is an employable skill. -A functional resume highlights that skill regardless of where you gained it. </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Another example would be function skills you gained by contributing to a faculty research project. You may have gained interviewing, fact finding and valuable project management skills along the way. </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>Fresher Resume Sample:</b></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>Objective:</b> To leverage my successful track record as a team builder together with my [4 year B.Sc. degree] in a junior biotechnology research role.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>Roles</b><br />
<b><br />
</b><br />
<b>Research Assistant:</b> Conduct client interviews, documented findings, administered tests and prepared briefing reports for consumption of senior faculty and stakeholders.<br />
<br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><br />
</b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Writer/Editor:</b> Report writing and editing. Developed research papers, briefing notes and reports. </div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><br />
</b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Office Assistant:</b> General administration duties including administering filing systems, receiving calls and making appointments.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><br />
</b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Education</b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">ABC University College - B.Sc Biology 2010</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Brooklyn Highschool Grade 12 Graduation 2004</div></div><div> </div></div><div style="text-align: justify;"><b>Employment History</b><br />
<br />
Labs-r-us 2009 - 13 week practicum.</div><div style="text-align: justify;">XYZ Warehousing - 2008 ~ 2009 summer employment. Warehouse stocking.<br />
Dr. RJ Smith - 2007 ~ 2008 summer employment. General Office Assistant<br />
Sunnyvale Care Home 2006~2007 summer employment ~ Assisted living volunteer.<br />
<b><span class="Apple-style-span" style="font-weight: normal;"><br />
</span></b><br />
<br />
</div><div style="text-align: justify;">In summary, a functional resume will underscore your skills and abilities which demonstrates how, together with your education, makes you a perfect candidate.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Use this or another Fresher Resume Sample in preparation of your winning resume.</div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-67097193085638095322010-08-07T17:45:00.000-07:002010-08-07T17:45:15.250-07:00Kohlberg's Stages of Moral Development | Special Interest's EQ<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Kohlberg's Stages of Moral Development | Special Interest's EQ</b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><br />
</b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">I'll refer to this moral development scale in rating special interests:</div><div style="text-align: justify;"><blockquote id="s38s"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span id="j6ji"><i id="x4z_">"If you have an understanding of the normal</i><a href="http://home.lbcc.cc.ca.us/~mlawrence/Phil%207/Kohlberg.htm" id="yroa"><i id="wp9p"> stages of moral development</i></a><i id="s8jd">, it should help you to develop or improve upon your own morals or values. This is especially true if the characteristics of highly moral people are clearly described. The following six stages are taken mostly from Piaget (1932), Kohlberg (1975), and Rosen (1980)."</i></span></div></blockquote></div><hr id="oma9" style="height: 2px; width: 659px;" /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547#Stage1" id="syo2" title="Childish">Stage 1 - 1 to 5 years</a> <a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547#Stage2" id="o_r9">Stage 2 - 5 to 10 years</a> <a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547#Stage3" id="opwm" title="Stage 3 - 10 to 16 years">Stage 3 - 10 to 16 years</a> <span id="udbu"><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547#Stage4" id="gwca" title="Stage 4 - 16+ years">Stage 4 - Immature Adult 16+ years</a> <a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547#Stage5" id="rwh5" title="Stage 5 - Mature Adult">Stage 5 - Mature Adult (less than 25% population reach this stage)</a> <span style="text-decoration: underline;"></span><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547#Stage6" id="pydc" title="Stage 6 - Higher Moral Reasoning">Stage 6 - Higher Moral Reasoning</a></span></div><hr id="de9-" style="height: 2px; width: 659px;" /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span id="udbu"><b id="imkg">The Motto: "Might makes right"</b></span></div><blockquote><div style="text-align: justify;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">A young child decides what to do--what is right--according to what he/shewants to do and can do without getting into trouble. To be right, you must be obedient to the people in power and, thus, avoid punishment.</div></div></blockquote><div id="anhn"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span id="i2x1"><b id="yf73">Conclusion:</b></span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span id="i2x1"><b>Moral Development:</b> </span><i>Stage</i><span id="i2x1"><span id="hoso"><i>1</i></span></span></div><ul id="krgx"><li id="sncl">Respects power</li>
<li id="cqo_">Fears punishment</li>
</ul><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span id="h8iu">Moral age:</span> Child 1 to 5 years old</div><hr id="oma9" style="height: 2px; width: 659px;" /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547" id="d_n:" name="Stage2"></a><b id="raiw">The Motto: "What's in it for me?"</b></div><div style="text-align: justify;"><blockquote id="v0sk"><div id="u1.s" style="text-align: justify;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Self-serving, they tend to lack respect for the rights of others but may give to others on the assumption that they will get as much or more in return. It is more a matter of "you scratch my back and I'll scratch yours," instead of loyalty, gratitude, or justice.</div></div></blockquote></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b id="o-2t">Conclusion:</b></div><div id="s7nm"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Moral Development:</b> <i>Stage 2</i></div></div><ul id="pu8n"><li id="bik.">Looking out for #1</li>
</ul><div id="s7nm"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Moral Age: Child aged 5 to 10 years</div></div><hr id="y-ca" style="height: 2px; width: 659px;" /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547" id="y_ec" name="Stage3"></a><b>Motto: "I want to be nice."</b></div><div style="text-align: justify;"><blockquote id="wush"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">People at this stage have shifted from pleasing themselves to pleasing important others, often parents, teachers, or friends. They seek approval and conform to someone else's expectations. When they are accused of doing something wrong, their behavior is likely to be justified by saying "everyone else is doing it" or "I didn't intend to hurt anyone."</div></blockquote></div><div id="yrhs"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Conclusion:</b></div></div><div id="yrhs"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span id="tz1e"><b>Moral Development:</b> <i>Stage 3</i></span></div></div><ul id="x.al"><li id="d4kt">Being a "Good Boy" or "Nice Girl."</li>
</ul><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Moral Age: Child 8~16 years old</div><hr id="k-5w" style="height: 2px; width: 659px;" /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547" id="o-ws" name="Stage4"></a><b>The Motto: "I'll do my duty."</b></div><div id="hpoh" style="text-align: justify;"></div><div style="text-align: justify;"><blockquote><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">The majority of people 16 years old and older have internalized society's rules about how to behave. They feel obligated to conform, not any longer to just family and friends, but also to society's laws and customs. They see it as important to do one's duty to maintain social order. Leaders are assumed to be right; individuals adopt social rules without considering the underlying ethical principles involved. Social control is, therefore, exercised through guilt associated with breaking a rule; the guilt in this case is an automatic emotional response, not a rational reaction of conscience based on moral principles (as in stage 6). People at this stage believe that anyone breaking the rules deserves to be punished and "pay their debt to society.</div></blockquote></div><div id="ljdk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Conclusion:</b></div></div><div id="ljdk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Moral Development:</b> <i>Stage 4</i></div></div><ul id="pf-u"><li id="eses">Law and order thinking</li>
</ul><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Moral age: Young adults 16 years or over</div><hr id="ksup" style="height: 2px; width: 659px;" /><div id="ljdk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547" id="rbtf" name="Stage5"></a><b>The Motto: "I'll live by the rules or try to change them."</b></div></div><blockquote id="atai"><div id="vrtx" style="text-align: justify;"></div></blockquote><blockquote><div style="text-align: justify;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">People at this stage recognize the underlying moral purposes that are supposed to be served by laws and social customs; thus, if a law ceases to serve a good purpose, they feel the people in a democracy should get active and change the law. Thought of in his way, democracy becomes a social contract whereby everyone tries continually to create a set of laws that best serves the most people, while protecting the basic rights of everyone. There is respect for the law and a sense of obligation to live by the rules, as long as they were established in a fair manner and fulfill an ethical purpose. Only about 20-25% of today's adults ever reach this stage and most of those that do supposedly only get there after their mid-twenties.</div></div><div id="h2lk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b></b></div></div></blockquote><div id="h2lk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Conclusion:</b> </div></div><div id="h2lk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div id="h2lk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Moral Development:</b> <i>Stage 5</i></div></div><ul id="hbae"><li id="x886">Justice through democracy</li>
<li id="x886">Use judgment to gage fairness and ethic</li>
</ul><div id="h2lk"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Moral Age: <i>Adult</i></div></div><hr id="ksmg" style="height: 2px; width: 659px;" /><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span id="d.b1"><a href="http://www.blogger.com/post-edit.g?blogID=8730213227222236962&postID=7861453154224602547" id="xphc" name="Stage6"></a><b>The Motto: "I'm true to my values."</b></span></div><div style="text-align: justify;"><blockquote id="f31q"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">These rather rare people have considered many values and have decided on a philosophy of life that truly guides their life. They do not automatically conform to tradition or others' beliefs or even to their own emotions,intuition, or impulsive notions about right and wrong. They carefully choose basic principles to follow, such as caring for and respecting every living thing, feeling that we are all equal and deserve equal opportunities, or,stated differently, the Golden Rule. They are strong enough to act on their values even if others may think they are odd or if their beliefs are against the law, such as refusing to fight in a war.</div></blockquote></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Conclusion:</b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Moral Development:</b> <i>Stage 6</i></div><ul id="lf45"><li id="maqf">The Golden Rule</li>
<li id="maqf">Makes judgments based on basic moral principles</li>
</ul><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">Moral Age: <i>Wise Adult</i></div><hr id="vh-g" style="height: 2px; width: 659px;" /><div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b>Kohlberg's Stages of Moral Development | Special Interest's EQ</b></div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com4tag:blogger.com,1999:blog-8730213227222236962.post-10085762341952452010-08-05T19:58:00.000-07:002010-08-06T13:30:58.473-07:00Count on Americans | Random Quotes<div style="color: #111717; font-family: Arial, Helvetica, sans-serif;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAK33W1pFohyphenhyphenfjFPSxj1FFRYVrg7ZWLviBUSaVdcRSWbwNwwsI6Aa-WPiYnpJzetVYB0PZTXN-fRwYAkEjUTrQ1wm14rhiQlSHhPQbTSJWGFW3n8ygFsjfWYa-YbLtAM966_H5qRRoyqoz/s1600/unclesam.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="uncle sam's legs showing from under a large top hat" border="0" height="199" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAK33W1pFohyphenhyphenfjFPSxj1FFRYVrg7ZWLviBUSaVdcRSWbwNwwsI6Aa-WPiYnpJzetVYB0PZTXN-fRwYAkEjUTrQ1wm14rhiQlSHhPQbTSJWGFW3n8ygFsjfWYa-YbLtAM966_H5qRRoyqoz/s200/unclesam.png" width="200" /></a></div></div><div style="color: #111717; font-family: Arial, Helvetica, sans-serif;"><br />
<br />
<br />
“You can always <b>count on Americans</b> to do the right thing - after they've tried everything else. “</div><div style="color: #111717; font-family: Arial, Helvetica, sans-serif;"><b><i>-Winston Churchill</i></b></div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0tag:blogger.com,1999:blog-8730213227222236962.post-7631515400262283142010-08-05T19:29:00.000-07:002010-08-06T13:22:45.279-07:00Can you tell me how to get to Sesame Street?<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj572mUEbGjpH-wwmD_Wu-8WSdQ9oIgK_HyDBb0q6YiBbpuoCSv-digwhh0wJUGmNxa4gF9HbntHPynCLcmGnoUmNQEL-yG1hP6GZBHs_-tr_clk2PjuWUAd64j3ss7sEcpjgRn4svTeOKV/s1600/a-apple-flashcard.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="simple a is for apple flash card" border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj572mUEbGjpH-wwmD_Wu-8WSdQ9oIgK_HyDBb0q6YiBbpuoCSv-digwhh0wJUGmNxa4gF9HbntHPynCLcmGnoUmNQEL-yG1hP6GZBHs_-tr_clk2PjuWUAd64j3ss7sEcpjgRn4svTeOKV/s200/a-apple-flashcard.jpg" width="150" /></a></div>We spent at least 4 hours trying to find simple "A is-for-apple" flash cards to teach our 2 and a half year old son the alphabet. Apparently, those aren't mainstream enough anymore to find on the shelf because they're not branded by the latest NickJR character.<br />
<div><br />
</div><div>Sesame Street was able to balanced entertainment with education perfectly. In order to learn, sure the content has to be engaging, but modern 'educational' media goes over-the-top with the entertainment component at the expense of substance. Kid's TV has attention-getting down to a pure science, but they are teaching nothing apart from how to zone out, sit back and be entertained.<br />
<br />
As for the flash cards -we didn't find any -ironically, I had to resort to making my own PowerPoint presentation -a high-tech solution I know- in order to escape from the empty complexity offered in what I used to know simply as 'flash cards'.<br />
<div><div><b><br />
</b><br />
<div><b>Can you tell me how to get to Sesame Street?</b></div><div><pre>Sunny day
Sweeping the clouds away
On my way
To where the air is sweet
Can you tell me how to get
How to get to Sesame Street
How to get to Sesame Street</pre><pre></pre><pre></pre><pre><span class="Apple-style-span" style="font-family: 'Times New Roman'; white-space: normal;">
<pre>Come and play
Everything's A-OK
Friendly neighbors there
That's where we meet
Can you tell me how to get
How to get to Sesame Street
How to get to Sesame Street
It's a magic carpet ride
And your door will open wide
To happy people like you
Happy people like
What a beautiful</pre></span></pre><div><br />
</div></div></div></div></div>Waynehttp://www.blogger.com/profile/09362579603715401298noreply@blogger.com0