text:
In the past six months, since I wrote the first series of articles (see Resources) on the jQuery JavaScript library, a lot has happened in the jQuery space. Perhaps most exciting for those of us who have embraced jQuery is that Microsoft® has chosen to use jQuery in its Visual Studio suite, and has decided to make it the only JavaScript library included at this time. This is a tremendous show of support, one that can only help to solidify jQuery's position as the leading JavaScript library for Web applications. Another convincing point of jQuery's growing popularity is the updated Google Trends chart. The chart I featured in the previous articles showed that jQuery was beginning to pull away from alternative JavaScript libraries. Well, six months later, and the separation has become even more pronounced, as you can see from the updated Google trends charts shown in Figure 1 and Figure 2 (ignoring the stock market-like dip in December).
Figure 1. June 2008 Google trends of common JavaScript libraries
Figure 2. January 2009 Google trends of common JavaScript libraries
In this series of five articles, I'm looking to 'step it up a notch,' and take on some of the more intermediate-level topics in working with jQuery. This series touches upon plug-ins and plug-in development, the jQuery UI package, more advanced topics in creating jQuery widgets, more advanced Asynchronous JavaScript + XML (Ajax) techniques, and finally, looks at the performance of jQuery compared to JavaScript and other libraries.
This first article in the series discusses the plug-in structure used in jQuery. Plug-ins are likely the main reason jQuery has grown so much quicker than the other JavaScript libraries. Because they have been embraced by third-party developers, hundreds of plug-ins have been developed to add to the jQuery functionality. Plug-ins, as their names suggest, are widgets or code modules that literally "plug-in" to jQuery and extend the functions that are built into the jQuery core download. The plug-in community has produced hundreds of plug-ins, and that's not even an exaggeration. Whatever issue you may face on your Web site, whatever widget you might be looking for (or your client is asking for), there is likely to be an existing solution in the jQuery plug-in library. Best of all, all of the plug-ins are free to download and use on your own Web site.
Plug-ins aren't just limited to user interface widgets, but they can
include extensions to the jQuery syntax, additional Ajax functions, and other creative things that people might need to improve
their development process. One of the cooler things is that people have
translated several of the built-in JavaScript features (for example, the threading features,
setTimeout() and
setInterval()) into jQuery syntax.
This lets developers have a completely jQuery environment, making things easier to work with and easier to maintain.
The jQuery plug-in structure has many benefits. First, it allows you to use only the widgets and functions you want to use outside of the jQuery core. This is important in Web applications because each additional plug-in is an additional download, and additional traffic. By allowing you to only use the plug-ins you want to use, you can better manage your Web traffic. Second, it lets eager and ambitious third-party developers create interesting widgets and improve the jQuery functions by creating their own plug-ins, rather than attempting to put their ideas into the jQuery core code. This enables the collective creative juices of everyone who uses jQuery to expand the library, creating a nearly limitless growth of new ideas and new widgets. This is the opposite of the closed-end structure, which would require the jQuery team to review and approve each plug-in, which would create a real creative bottleneck. Third, this plug-in architecture created by the jQuery team is very easy to use, both for developers creating the plug-ins, and the developers using the plug-ins, which has factored greatly into the explosive growth of the plug-ins. However, all these benefits have one negative aspect: the fact that the plug-ins have no formal testing structure outside of peer reviews. So, while you can be assured that the jQuery core is thoroughly tested, by choosing to use a plug-in, you are placing your trust in a third-party to test them. For a mission critical Web application, this drawback should always be considered.
To use a plug-in, you simply have to include it on your page, much as you do any JavaScript file (including the jQuery file itself). So, if you need to use a plug-in on your page, you can add it right after the jQuery itself, as shown in Listing 1.
Listing 1. How to include a plug-in

This article doesn't go into the details of how to write a plug-in or the specifics of how they work. Those details will all be in a future article, in which you write your own new plug-in and place it into the actual jQuery plug-in repository. Instead, this article goes through several of my favorite plug-ins. The goal is not only to show you the plug-ins that I tend to use every day, but also to give you a taste of what is available on the jQuery plug-in repository. Hopefully, you'll get interested enough in plug-ins to check them all out for yourself.
So, onward with my favorite plug-ins.
RightClick, ExtendedClick, and Wheel
One of the biggest goals of any Web application is to "fool" the users into thinking they are working on an actual desktop application. When I say "fool," I really mean that the Web application is trying to mimic the look and feel of a desktop application as closely as possible. Therefore, if a user typically expects a toolbar to appear in a certain place on their desktop application, the Web application should attempt to place the toolbar in the same spot. This eases the transition for users from the desktop application to the Web application, and therefore, makes the chances of success of the Web application greater.
For the most part, however, one area of Web applications that has not closely matched desktop applications is the response to mouse events. Some of you may be asking what I mean, because your Web application works just fine when you click the mouse on it. Sure, for the most part, every Web application handles the left mouse click perfectly fine. In fact, so many people have become accustomed to using only their left mouse button on a Web site, that a Web application is like an Apple application, using only one button. But, all your Windows® applications use two mouse buttons (sometimes even a third). The left mouse button activates commands, and the right mouse button presents options. People are very accustomed to this usage, so why are so many Web applications ignoring the right mouse button? Taken a step further, Web applications are also ignoring the CTRL+click and the Shift+click, as well as the mouse wheel. How can a Web application truly mimic the desktop application if it ignores so many of the mouse's actions. A true Web application would take full advantage of all the uses a mouse can provide.
To truly see the difference between a Web application that ignores the right mouse click and one that doesn't, and to see how a Web site's functions can be enhanced by the extra mouse button, take a look at GMail versus Yahoo Mail. Sorry to say for all you GMail fans, but in my opinion, Yahoo Mail is better in this respect. In GMail, the right mouse click is not treated differently than it is on any other Web page. So, when you right click on a message in GMail, it presents you with options like "Back," "Inspect Element," or "Select All." How are these actions even relevant to working with your messages? Well, they aren't of course, which really means the right mouse button is useless on this page. Contrast that with Yahoo Mail, and how it deals with the right mouse click. When I right click on a message in Yahoo Mail, I am presented with options "Open," "Print," "Reply," and "Delete," These are actions that normally go with a mail application. These choices make a complete Web application, one that mimics the type of mail application you'd see on the desktop (try right clicking on a message in Outlook, and see which Web application more closely matches the choices). Figure 3 and Figure 4 show the differences in the right click options.
Figure 3. Right clicking in Yahoo Mail
Figure 4. Rick clicking in GMail
The first jQuery plug-in to help solve the mouse-click problems in Web apps is the appropriately named rightClick plug-in. It captures both a right mouse-click, and also a right mouse-down and a right mouse-up. Finally, the last thing it does is let you turn off the browser-specific right-click context menu. So, the right-click menu that appears in FireFox (Figure 4), will not appear if you turn it off, allowing you to create your own custom right-click menu without competing with the browser's default behavior.
Listing 2. rightClick plug-in
// set up the div that will capture our events

 // when the right mouse is clicked on this div, increase the width // by 10 pixels. Also, do not show the browser-specific pop-up // menu // This, of course, should be in the $(document).ready function $("#rightClickSample").rightClick(function(e){ $(this).width($(this).width()+10); }); $("#rightClickSample").noContext();
Now, let's examine the next plug-in that can extend the mouse in Web applications. This plug-in adds the ability to capture the Ctrl, Alt, and Shift buttons. Some applications make regular use of these buttons (Adobe Photoshop, for example), so some people are rather comfortable with these buttons when using their mouse. However, using these buttons with the jQuery core code is difficult and requires extra coding. Why not use the premade, and pretested plug-in?
The extendedClick plug-in offers different functions that represent the combination of different helper keys you can press with a mouse. As expected, the functions include
altshiftclick(), and
ctrlaltshiftclick(). Unfortunately,
these can only be attached to the left mouse-click button, and as
you've seen from the
right-click examples, it would be foolish to ignore half of the mouse. However, a plug-in to attach helper keys to the right-click doesn't exist (yet), so I leave that up to the ambitious out there to
merge the two of them together and create a new plug-in.
Let's change the example from the right-click, and make the
div grow 10 pixels when you press a Shift+left click and shrink 10
pixels when you press a Ctrl+left click.
Listing 3. extendedClick plug-in
// set up the div that will capture our events

 // when the left mouse is clicked with the shift key held down, // grow the div by 10 pixels $("#extendedClickSample").shiftclick(function(e){ $(this).width($(this).width()+10); }); // when the left mouse is clicked with the ctrl key held down, // shrink the div by 10 pixels $("#extendedClickSample").ctrlclick(function(e){ $(this).width($(this).width()-10); });
Finally, the last plug-in to bridge the gap between desktop application and Web application is the plug-in that handles the mouse wheel. I would wager a bet that most people have never even visited a Web site that allowed you to use your mouse wheel (excluding an HTML input element). However, that doesn't mean it's impossible to use the mouse wheel in an application. One use for a mouse wheel in an application is in Web sites that let you upload photos, to let you zoom in and out with the mouse wheel. Yes, you can do that on desktop applications now, but can you do that on most Web applications? Probably not.
For the mouse wheel example, let's use the same growing/shrinking
div and let the mouse wheel control its size. So, when you move the mouse wheel up, it will grow the div, and if you move the mouse wheel
down, you will shrink the
div. And, if you don't have a mouse wheel, then you can just assume this is working perfectly.
Listing 4. Mouse wheel plug-in
// set up the div that will capture our events

 // attach an event handler for the wheel to this div // notice that we use the e.delta to determine how many "notches" the wheel // was moved. One notch is either 1 (if up), or -1 (if down). So, as // a result, we can simply add it to the current width, letting the // sign of the delta grow or shrink the div. $("#wheelSample").wheel(function(e){ $(this).width($(this).width()+10*(e.delta)); });
These three plug-ins, I feel, are very important in making a Web application look and feel like a desktop application. Instead of being limited to the left mouse-click when interacting with a Web application, a limitation for sure, these plug-ins allow the Web application to capture all forms of mouse interaction, just as a typical desktop application would do. Additionally, as will become increasingly common over the next few years, developers will be tasked with converting existing desktop applications into Web applications. These plug-ins will make that transition much easier, by supplying all the mouse interaction on the Web that users have had on the desktop.
The blockUI is one of several plug-ins that offer the ability to create modal dialogs. Wait, you're thinking, JavaScript already offers some really cool modal dialogs like
alert() and
confirm(). Yes, I
can't deny how awesome those modal dialogs are for developers, and how
much users love them. They just look so good on a well-designed Web site. However, there's an even better option
available to developers, one that actually lets you collect
information from a user, and one that actually lets you make the modal
dialog look like it belongs on your Web application. Note, alert/confirm fans
can feel free to skip ahead to the next section.
All sarcasm aside, the alert/confirm functions have major drawbacks in terms of modal dialogs. First and foremost, they can only present information and can't collect any information, outside of an OK or Cancel on the confirm function. It would be ideal if there was a dialog window pop-up that offered more flexibility, and one that lets you add any elements you wanted to the dialog. In other words, a dialog window like you are used to in other programming languages. BlockUI is my favorite plug-in for this problem, as I find it easy to work with, and extremely flexible for working with many dialogs on the same Web application. Not only that, it offers many different types of dialogs to work with.
In the sample code included with this article (see Downloads), I create a modal dialog using blockUI, and you can see what it looks like before I delve into the code and options.
Figure 5. blockUI example
As you can see in Figure 5, there is a modal dialog on the page. The input to the rest of the page is blocked by the semi-transparent layer beneath the dialog, effectively blocking the user from interacting with the Web application, except the dialog itself. The code accomplishes this blocking with an IFrame, but it doesn't really matter, because the plug-in author is the one that tested it on all the different browsers and ensured it worked.
The first step in creating the dialog is to specify its message. A
message can be anything from the text you want to display to the user
(replicating the
alert() function), to
displaying HTML
to the user, to creating a marked-up message (with bolds colors, and so
on). However, I find this plug-in most valuable by letting you supply
divs as the message, effectively letting you create your own
dialog, with any layout you want, and with any number of inputs, buttons, and information you need.
Listing 5. blockUI plug-in
// this will create a dialog with our default text, // effectively replicating the // alert() function $.blockUI({message: "This is a sample dialog"}); // however, we can add any HTML we want to the message, making it look closer // to our own Web site // $.blockUI({message: "
Sample Dialog

 This is our message
"}); // perhaps most importantly, we can add a div to the message, allowing // us to create our own dialog, with the look, feel, message, and input we want

Login

Username: <input type=text id=user>
Password: <input type=text id=pass>
<input type=button value="OK" id=ok> <input type=button value="Cancel" id=cancel>
 // and the jQuery code to show this is pretty much the same $.blockUI({ message:$("#loginMessage")});
There's just two small issues remaining to discuss on the blockUI before you rush off to put it on your own site. First of all, I haven't closed the dialog yet. That's a minor issue, right? Second, all of the dialogs I created in the code snippet in Listing 5 have the default blockUI look/feel, which isn't desirable, because one of the big selling points of the plug-in was to create my own look and feel for the dialogs. Well, the blockUI comes with a snippet of CSS code, which you can take and throw in your own CSS file and customize any way you want, giving you back the ability to make the dialogs look the way you want them to. However, before you can override the CSS attributes of the blockUI, you must tell the plug-in to look in the CSS file rather than using its own defaults. In the code snippet shown in Listing 6, I display the code I have in the example code, which will show you how to close the dialog, how to use your own CSS, and what options in the CSS you have.
Listing 6. More blockUI plug-in
// These two functions tell the BlockUI that // you want to use your own CSS // code to define how the dialogs will work. The first line // tells it you want to use your own CSS for the dialog, // the second line tells it you want your own CSS // for the semi-transparent // layer between the page and the dialog. $.blockUI.defaults.css = {}; $.blockUI.defaults.overlayCSS = {}; // when the show button is pressed, we'll display the dialog. // we want to display our own custom DIV. However, note here // that we want to override the CSS-defined height and width. // After all, it would be difficult for an entire site to have // predefined widths and heights if every dialog is slightly // different. $("#show").click(function(){ $.blockUI({ message:$("#waitMessage"), css: {width:'500px', height:'160px'} }); }); // When the cancel button is pressed on the DIV dialog, // we can close the dialog $("#cancel").click(function(){ $.unblockUI(); }); // the CSS you can override to make it look good on your site div.blockOverlay { -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=50); -moz-opacity:.70; opacity:.70; background-color: #228518; } div.blockMsg { width: 20%; top: 20%; left: 30%; text-align: center; background-color: #fff; border: 3px solid #044600; -moz-border-radius: 10px; -webkit-border-radius: 10px; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); -moz-opacity:1; opacity:1; padding: 15px; color: #000; }
In my experience, this plug-in comes in handy in my situations. I have found it very quick to implement when I want to replace the
confirm() function in JavaScript, not to mention how much
nicer it looks. I have also used it in more involved situations, using it as a dialog to upload files on an e-mail application, or as a photo lightbox in a picture viewing application. Combining
it with Ajax calls can save a lot of page reloading, by presenting information that's not immediately available by getting the information and overlaying it on the screen. Effectively, it enlarges
the screen area with which to display information. Finally, it
removes the alert/confirm function limitations and lets you
design your software with dialogs in mind, just as you would a desktop application.
The printArea plug-in fills a nice niche in Web applications, and
I've found it to be quite useful. At its core, it simply lets you
print a specific HTML element. This is a real bonus over the
alternatives to printing on a Web application, which is simply to call
window.print() button and hope for the
best. As anyone who has ever worked with Internet browsers can
tell you, you're unlikely to have two pages print out exactly the
same on different browsers. Also, a problem arises when you want to print out all the text
inside of a text area and nothing else. Until now, this was very difficult.
As I said, this plug-in lets you print specific elements on a page, and not print the rest of them. Examples where I have used this plug-in are in an e-mail application, where you allow a user to print a message that's contained in a text area. I also have used it on pages that display reports, where I don't want the various buttons and graphics on the page to be printed with the report. An example people are probably also familiar with is printing airline tickets. The ticket on the Web page usually has lots of information and graphics, whereas the one that gets printed just contains a bar code and basic boarding information.
Listing 7. printArea plug-in

An advertisement that you don't want printed out.
Another advertisement that you don't want printed out.

Name	Age	Height

John Q	23	6'1"

Jane Q	23	5'1"

Jimmy R	23	5'6"

<input type=button id=printButton value="Print">
All the annoying disclaimer text you don't want printed out. // Capture the click on the "Print" button. Then, you can call the printArea() // function on the "printable" div we used to wrap the portion of the page we want // printed. The only thing that will get printed to the printer will // be the table, and all the annoying text won't be. $("#printButton").click(function(){ $("#printable").printArea(); });
This plug-in offers a really easy and straightforward way to control the printing of elements on a page. As an added bonus it works equally well on Internet Explorer and Firefox, and can be used to control how your page gets printed in both browsers, saving you some major headaches. The only drawback is that it relies on the user to press your Print buttons, or other areas of the page that you can control. If the user presses the browser's Print button, it will revert to the old problematic printing. Doubly troublesome, you can't stop that print button from executing, or even issue a warning about using it. So, you have to rely on your users being smart enough to press your own Print button. The other alternative, of course, is to simply print it automatically under certain conditions, taking the user out of the equation.
It is common in user interface design to code for lower user assumptions. A good example of lowering your user assumptions is when working with text fields on a form. You have a field set up to capture phone numbers, but you know someone will enter letters.
You can prevent this incorrect input in three places. The first is checking for bad input on the server, before it gets entered into the database. So, some Java™ code or PHP code can be written that will check all the input fields and decide which ones have valid input and which ones don't and then send a message back to the client if they aren't valid. The second level of error checking is to check on the client side, using JavaScript. By checking these conditions on the client side, you can save on network traffic and get quicker responses to the user. The final level of error checking takes full advantage of the "lower user assumption" design pattern, which is to not even let them enter bad information in the first place. In the example discussed here, why send letters to the server for a phone number, or why have JavaScript check for letters before submitting the form. The best solution is to simply not let them type any letters in at all.
This plug-in is built on that idea, that the Web application's text fields should only accept the input that I deem appropriate. So, for a field that should only have numbers, I want my text field to only accept numbers. If I want it to only have letters, it should only accept letters. You can see where I'm going with this.
Listing 8. AlphaNumeric plug-in

Alpha-only: <input type=text width=20 id=alphaOnly>
Numeric-only: <input type=text width=20 id=numericOnly> // This code will prevent unworthy characters from being entered // into our text fields, assuring valid input $("#alphaOnly").alpha(); $("#numericOnly").numeric();
The standard AlphaNumeric plug-in ends there, though I took it and expanded it for my own purposes, so I will discuss those additions here (they are included in the download). I thought that if I could control when only letters or numbers were entered, I could also expand it to include special characters like $, %, or &. And assuming that, I could attach certain rules to text fields depending on their use in the form. For example, a text field that is being used for e-mail addresses should allow all the characters that are valid in an e-mail address beyond the standard numbers and letters. So, an e-mail address field could accept _, -, @, and ".". All the other special characters are invalid and would cause an error if used in an e-mail, so we block those from being typed. Are we 100% guaranteed that this will be a valid e-mail address? No, the user could still type something ridiculous like "a@a@.com," but it's a first step.
The additions that I've made to the standard AlphaNumeric plug-in deal with decimals, currency, e-mail, phone, clocks, and dates. Listing 9 shows my code.
Listing 9. AlphaNumericPlus plug-in
// will only allow numerals and the . // and , characters (because I'm thinking international // here, and some countries use a , for a decimal) $("#decimalOnly").decimal(); // same as the above, but it adds support for the "%" $("#percentOnly").percent(); // as described above, only allows valid e-mail characters $("#emailOnly").email(); // allows only numbers and the ( and ) and - characters $("#phoneOnly").phone(); // allows only numbers and the : character $("#clockOnly").clock(); // allows only numbers and the / and - characters $("#dateOnly").date(); // this is the only one that's slightly different, in that // it requires you to pass in the valid currency symbol, so you can // pass in a pound sign or euro if you're using this overseas $("#currencyOnly").currency("$");
This AlphaNumericPlus plug-in is the first level of defense against invalid input from users. By not allowing invalid characters in certain instances, it not only minimizes the chance of errors, it also offers immediate reinforcement to the user that they are not entering valid information. So, if a user attempts to enter a letter in a phone number field and nothing appears, the user is immediately notified that they have an error. This quick response is often appreciated by users, rather than making them wait until the end of the process to fix all the errors.
The second level of defense is the client-side check upon form submission. In this case, you can check that the data is all in a valid format; for example, checking that the phone number has the correct number of digits. Finally, the last level is the server-side check, where you can double-check that the format is valid, and also check the information against anything already in the database. A successful three-pronged attack is the best solution, with this plug-in serving as that first line. Though not perfect (you can still enter an invalid format, although all the characters are valid), it presents immediate feedback for users.
Another plug-in that I have found useful in certain situations is the Calculation plug-in. Like most good plug-ins, it does only a few things, but it does them well. Like its name implies, it calculates numbers in fields and lets you find the sum, the average, the maximum, or the minimum of them. It also lets you parse a number from a field. The part that gives this plug-in its greatest flexibility is its ability to sum numbers from any type of element. So, if you pass it an array of elements that includes a DIV, an INPUT TEXT, and a SPAN, it will find the numbers within those fields, convert them to numbers, and return the sum. This can be useful in certain situations, and can save you from a lot of headaches trying to error-check every mathematical function.
One warning about this plug-in, though, is that it breaks the standard plug-in decree that all plug-ins return the jQuery object itself. In every other plug-in discussed in this article, and every other plug-in I've worked with, the function returns the jQuery object, meaning it doesn't "break the chain." This does not adhere to that. By returning numbers, it breaks the chain, so that you can't daisy-chain jQuery functions together after calling it.
Let's look at a slightly more extended and involved example for this plug-in. The widget shown in Figure 4 has a set of fields that allow a user to enter percentages. The widget checks that all of the fields add up to 100%, and if they don't, will show the sums of the percentages in red, to indicate an error. You likely encounter a widget like this in your financial planning pages, asking you to decide where to place your contributions.
Figure 6. 401k contribution widget
Listing 10. Calculation plug-in
// Set up the table that contains the widget. // Note that we add a class to it called // "percentSimple", which will be used in the jQuery // code, as well as adding a unique // ID to the table "sortTable1". // Also note that each text field that will have a percent // typed into it has the // class of "percent" added to it. // Finally, note in the table footer a field called "percentTotal"

 S&P 500 Index 	  <input type=text class="percent textfield"> %
 .......

 Total 	   %

 // take advantage of our previous plug-in and limit the percent fields // to just numbers $(".percent").numeric(); // capture any keyup events from all the "percent" fields // when these occur, we are going to recalculate the total percent $("table.percentSimple input.percent").keyup(function(){ // figure out which table this occurred in (in case there's more than // 1 widget on a page var table = $(this).parents().filter("table.percentSimple"); var ID = table.attr("id"); // Find the sum of all the "percent" fields, by using // our calculation plug-in var sum = $("#" + ID + " input.percent").sum(); // cache the span called "percentTotal" var totalField = $("#" + ID + " .percentTotal"); // update the total in the "percentTotal" field totalField.html(sum); // if the sum != 100%, then we'll attach an error to it if (sum != 100 && sum != 0) { totalField.addClass("error"); } else { totalField.removeClass("error"); } });
As you can see, this plug-in has limited usage, but it is very effective and saves time when used correctly. Though I have only included the max/min, average, and sum functions, I can picture someone who's quite ambitious putting together an entire spreadsheet plug-in, which includes every function found in the Microsoft Excel application. Picture this spreadsheet plug-in providing functions for standard deviation, payment, and future value (because I work with finance, I know those functions best). Further, imagine that the spreadsheet plug-in could be used by Web sites looking to provide basic spreadsheet functions on their pages or allowing users to create their own spreadsheet-like pages without entering any complex formulas.
One of the more frustrating things for me about JavaScript is its
incompatibility with common thread designs. When I moved from
Java user interfaces in Swing to the JavaScript Web applications,
I found that I could not replicate in JavaScript the common
multithreaded interfaces found in the Java code. Instead, JavaScript uses the
setTimeout() and
setInterval() methods, which are somewhat like the threading
design I was used to in Java code, but not completely the same. The
setTimeout() method takes a string argument, which serves as the callback method, and a number, which serves as the timeout, in milliseconds. Likewise,
setInterval() method takes the same arguments, although this method calls the callback method over and over, with the timeout being the break between calls.
Compare this to the Java thread design, which lets you create a
thread object and then call
start() and
stop() on the same object, controlling
when it runs, and defining the
run() method right there in the
class defintion, and you can see the difference between the two designs. The JavaScript
thread design lets you start threads easily, but it's sometimes difficult to stop them. This is because the JavaScript thread design relies on IDs to stop timeouts/intervals. These IDs are passed back
from the setTimeout/setInterval function. Take a look.
Listing 11. JavaScript threading
// creates a thread with ID of threadID, // which will call myCallBack() // every 1 second (1000 ms = 1 sec) var threadID = setInterval('myCallBack', 1000); // will stop the thread from calling myCallBack() clearInterval(threadID);
The code in Listing 11 wouldn't really be practical, though, because you'd be turning off the thread before it even runs once. Calling
setInterval() and on the next line calling
clearInterval() effectively
does nothing, because there's no pause after the
setInterval() call. The workaround to this is shown in Listing 12.
Listing 12. More JavaScript threading
$(document).ready(function() { // store the ID as a global variable var threadID; // creates a thread with ID of threadID, which will call myCallBack() // every 1 second (1000 ms = 1 sec) threadID = setInterval('myCallBack', 1000); // will stop the thread from calling myCallBack() $("#hypotheticalStopButton").click(function(){ clearInterval(threadID); });
This code would work because it stores the
threadID as a global
variable that can be referenced anywhere in the JavaScript code. This solution would work fine for a simple example, but what
happens when you start introducing more threads into the Web
application and the interactions start becoming more difficult. It
would be harder to maintain code that has a bunch of global variables
in the JavaScript code, hoping you pick the right thread to
stop/start at various times. Add to this problem another situation
that is common in Web applications: you want
a function to be called 10 times, no more and no less. That adds another global variable into the mix. Plus, you can't create an inline function in your thread creation, you have to
reference a stand-alone function. You can see the complexity starting to increase rapidly as the complexity of the threading
increases on a page.
The Timers plug-in aims to simplify the issues of working with
threads on a Web application in JavaScript by really changing the
way you work with them, and, in my opinion, making it closer to
Java code. Instead of relying on the
threadID to get passed back from the
setInterval() function, the Timers plug-in changes the design to let
you choose the thread name upon creation, making
it unnecessary to store all of the thread IDs to use other places in the code. Along with other beneficial changes, it's this subtle change that has made working with threads in JavaScript much easier.
Take a look at Listing 13 to see how the sample code in Listing 12 can be changed
to work with the Timers plug-in. See if you agree with me that it appears to be much easier to work with.
Listing 13. JavaScript threading With timers
// attach an event to the start button, // kicking off the thread $("#start").click(function(){ // using the Timer plug-in, we attach a thread to a page element // we call the "everyTime" function, which is analagous to the // setInterval function. // This function takes several arguments: // - the timeout interval // - the name of the thread, notice how we can choose the name here // and not have to worry about storing the value anywhere // - the function to call each interval, notice how we can define // the inline function here, without creating an extra function // elsewhere, simplifying development of the thread. // - (optional) how many times to run it before stoppping, so if // you put a 10 there, it would run it 10 times and then stop // - (optional) a true/false of whether to start the next interval // if the previous one isn't completed yet $("#timerSample").everyTime(500, 'growSquareThread', function(){ var t = $(this); t.height(t.height()+5); t.width(t.width()+5); }); }); // attach an event to the stop button. Notice how we can simply // call a stop with the name of the thread, without worrying // about the threadID $("#stop").click(function(){ $("#timerSample").stopTime("growSquareThread"); });
The Timers plug-in really makes working with threading in JavaScript easier. Even though the changes may seem subtle at first, when you take a look you can hopefully see how it will make your code much
cleaner. Primarily, you can define the entire thread in one place. That means defining the start mechanism, the delay, the number of loops to make, and the code to run each iteration. Not only is this
easier to work with than traditional JavaScript threading, I'd even say it's easier than Java threading. With the Timers plug-in, the entire thread itself is self-contained in a block of code. No more
making references to functions that could be anywhere in the code. No more tracking
threadID's in global variables. No more complicated code to keep track of how many iterations a thread has gone through.
Stopping the thread is just as easy. Some trigger to stop it can simply use the same thread name that it was created with. No need to even know about the threadID any more.
Finally, let's review the plug-ins I covered in this article and how
they improve the Web application. The three mouse-click plug-ins
enable a Web application to move beyond the simple left mouse-click, and
capture all the possible interaction you can receive from a mouse.
Because desktop applications already do this, these plug-ins really
fill a user interface hole that existed in Web apps. The next
plug-in I discussed was the blockUI, which lets you create dialog
windows that can match the look of your Web site, allowing you to
design your own dialog windows. Because Web applications
were previously limited to
alert() and
confirm(), this is a big improvement in
how you interact with the users of your Web site. The next plug-in discussed was the printArea plug-in, which gave you the ability
to print only specific portions of your Web page, while excluding
others. Again, this is something that desktop applications could do,
but was limited on Web applications. The next two plug-ins were the calculation
and the alphanumeric plug-ins, which made the creation of specific
widgets easier. These ideally will help to reduce errors in your code
and provide a quicker response mechanism to your users. Finally, you looked
at the Timer plug-in, which remodeled how you work with threads in JavaScript.
The one underlying theme of all the plug-ins I presented in this article is that though a Web application might seem more limited than a desktop application, in how it looks, feels, and is coded, in fact, there is a way of producing code that can bridge all those gaps. With jQuery, those gaps can be filled through the use of plug-ins. The plug-ins presented here go a long way to making sure your Web application behaves just like a desktop application, which of course is the ultimate goal.
|Zip file containing the sample application
- Download the 1.2.6 Minimized jQuery, which was the latest stable version at the time of this article, and drop it in your own code.
- Read the complete jQuery API page to see all of the available functions in the library.
- Check out all the available plug-ins for jQuery.
- The IPod Menu Selection is one of the coolest jQuery widgets available.
- Get a thorough and complete background on CSS, JavaScript, and any other Web language at W3Schools.
- Read the other articles in my jQuery series, which deal with an introduction to the library.
- "Working with jQuery, Part 1: Rich Internet applications with jQuery and Ajax: Bringing desktop applications to the browser" (developerWorks, September 2008)
- "Working with jQuery, Part 2: Rich Internet applications with jQuery and Ajax: Building tomorrow's Web applications today" (developerWorks, September 2008)
- "Working with jQuery, Part 3: Rich Internet applications with jQuery and Ajax: JQuery: Building tomorrow's Web apps today" (developerWorks, October 2008)
- "Ajax overhaul, Part 2: Retrofit existing sites with jQuery, Ajax, tooltips, and lightboxes" (developerWorks, May 2008) takes a look at some of the other plug-ins available for jQuery.
Dig deeper into Web development on developerWorks
- Overview
- New to Web development
- Technical library (tutorials and more)
- Forums
- Open source projects
- Events
developerWorks Premium
Exclusive tools to build your next great app. Learn more.
dW Answers
Ask a technical question
Explore more technical topics
Tutorials & training to grow your development skills


text:
Triple-Flavored Cookie Cake
Inspired by BJ's Pizookie [3]
The doughs can be homemade or store-bought. If you decide to make homemade doughs, freeze any leftovers in a freezer-safe bag for 6 to 9 months.
- Nonstick cooking spray
- 1 cup chocolate chip [4] cookie dough
- 1 cup peanut butter [5] cookie dough
- 1 cup white chocolate macadamia nut [6] cookie dough
- Pint of ice cream of your choice
- Preheat oven to 400ºF, and spray a round cookie pan [7] or cake pan with nonstick cooking spray.
- Press each cookie dough into a third of the pan. Make sure the doughs are touching, they're spread evenly across, and there is a 1-inch space from the top.
- Bake for 15 to 20 minutes or until the edges are browned and the middle is still gooey.
- Let it cool for 5 minutes before serving with ice cream.
- Category
- Desserts, Cookies
- Yield
- 6 to 8 servings

subset: commoncrawl


text:
USS Hampton Failed to do Daily
Safety Checks on
Ship's Nuclear Reactor for Month and Falsified Records
6 Punished for Skipped Checks
PAULINE JELINEK / AP 22oct2007
Also see:
WASHINGTON — Sailors on the submarine USS Hampton failed to do daily safety checks on the ship's nuclear reactor for a month and falsified records to cover up the omission, a Navy investigation shows.
The revelation is sure to raise new questions about the military's handling of the nation's nuclear assets following an Air Force incident in which a B-52 bomber was accidentally loaded with nuclear-tipped missiles and flown across the country without any one realizing it for more than a day.
In the case of the Hampton, it appears from a preliminary investigation that sailors in Submarine Squadron 11 had skipped the required analysis of the chemical and radiological properties of the submarine's reactor for more than a month, even though a daily check is required.
"Some of the Hampton's operations and records fell short of high Navy standards," said Lt. Cmdr. Ryan Perry, a Navy spokesman at the Pentagon.
"There never was any danger to the crew or the public," he said.
Other members of the squadron discovered the lapse during a routine examination required as part of the redundancy built into the system so that problems are caught, he said. The examination was done as the submarine was nearing the end of a West Pacific deployment, which was completed Sept. 17.
Officials also discovered that logs had been filled out to make it appear that the daily checks of the reactor water had actually been done.
Six nuclear personnel have received an undisclosed nonjudicial punishment after a preliminary investigation, but the probe is continuing, Perry said.
A nuclear powered fast attack submarine, Hampton is the most advanced nuclear attack submarine in the world, carrying a torpedo, cruise missile, and mine-laying arsenal, according to information on its Web site.
The investigation was first reported in Monday editions of Navy Times newspaper, which quoted an unidentified source as saying that failing to measure and maintain the correct water chemistry in the reactor over the long-term could cause corrosion in the propulsion system.
"We measure also for general radioactivity levels in the water to make sure the reactor (fuel elements are) intact," said the source, whom the newspaper said had knowledge of the investigation.
The reported problems with procedures and record keeping in the Navy squadron comes just after the Air Force disciplined some 70 airmen in the B-52 incident.
The plane was loaded with nuclear warheads on Aug. 29 at Minot Air Force Base in North Dakota and flown the next day to Barksdale Air Force Base in Louisiana. The mission was to ferry cruise missiles that had been slated for decommissioning but the warheads were supposed to have been removed beforehand.
Air Force Secretary Michael Wynne blamed the incident on "a breakdown in munitions-handling procedures" and called it "an unacceptable mistake and a clear deviation from our exacting standards."
"There has been an erosion of adherence to weapons-handling standards at Minot Air Force Base and Barksdale Air Force Base," Maj. Gen. Richard Newton, the Air Force deputy chief of staff for operations, told a Pentagon news conference Friday after a six-week investigation.
Newton acknowledged that the Air Force needs to "restore the confidence" lost among the American people after the August incident, which raised questions about the safety of the country's nuclear arsenal.
"We are making all appropriate changes to ensure this has a minimal chance of ever happening again," Wynne said.
The ferrying mission has been suspended.
source: 26oct2007
Submarine's Commanding Officer
Is Relieved of His Duties
AP 26oct2007
The commanding officer of the nuclear-powered submarine Hampton was relieved of his duty because of a loss of confidence in his leadership, the Navy said. The officer, Cmdr. Michael B. Portland, was relieved of duty after an investigation found the ship had failed to do daily safety checks on its nuclear reactor for a month and falsified records to cover up the omission. Commander Portland will be reassigned, said Lt. Alli Myrick, a public affairs officer.
source: 26oct2007
Pentagon Reels From Second Major
Nuclear Arms Blunder in a Month
Daily Mail (UK) 26oct2007
The Pentagon was reeling last night from the American military's second major nuclear weapons blunder in a month.
Congress is demanding a full scale investigation and serious questions are being asked about the competence of the officers in charge of the world's mightiest arsenal.
The latest outrage came as Commander Michael Portland, the officer in charge of the USS Hampton, the most advanced nuclear attack submarine in the world, was fired after it was discovered that he had neglected to make basic daily safety checks.
Last month 70 US airmen were demoted after they lost track of six nuclear-armed cruise missiles and allowed them to be flown halfway across America by a bomber crew that didn't even know they were there.
The Pentagon said that it had lost confidence in Commander Portland's leadership after checks showed that he had failed to analyse the chemical and radiological properties of the submarine's nuclear reactor for a month.
It is considered vital that the reactor's condition be fully examined every day so that any malfunction can be caught early.
If something went wrong with the reactor it could lead to a devastating nuclear accident.
The USS Hampton, currently docked in San Diego, is armed with nuclear torpedoes, nuclear cruise missiles and a massive mine-laying arsenal.
US Navy officials said that it had also been discovered that logs on the USS Hampton had been filled out to make it appear the daily checks of the reactor water had actually been done.
Members of Congress are furious about the latest scandal especially as it follows so closely after the nuclear missile debacle.
In that incident a large US Air Force team failed to remove the nuclear warheads from six cruise missiles being flown by a B-52 bomber from North Dakota to Louisiana.
It was described as one of the worst known breaches of nuclear weapons procedures ever.
The incident sparked a so-called "Bent Spear" nuclear alert, one step down in military terms from a "Broken Arrow".
A "Broken Arrow" is triggered if a nuclear missile has been lost or detonated in a way that does not create the risk of nuclear war. If the B-52 had crashed there would not have been a nuclear explosion but there could have been major plutonium leakage causing thousands of deaths.
Independent inquires are being launched into both the nuclear missile and the nuclear submarine incidents and Congress is planning hearings into the Pentagon's nuclear safety procedures.
An investigation is also underway into how the US Army came to accidentally fire a ground to air Patriot missile from a base in the Gulf Arab state of Qatar earlier this month.
The missile landed harmlessly in the desert but it could have brought down any aircraft in the vicinity and it has renewed charges in the Middle East that American soldiers can be trigger-happy and careless.
source: 26oct2007
Ship's Complement: 15 Officers, 16 Chief Petty Officers, 105 Enlisted
Length: 360 feet Beam: 33 feet Draft: 32 feet
Maximum Depth: In Excess Of 800 Feet
Maximum Speed: In Excess Of 25 Knots
Surface Displacement: 6,200 Tons
Submerged Displacement: 6,900 Tons
Armament: Four 21 Inch Torpedo Tubes / Twelve Tomahawk Vertical Launch Tubes
Built By: Newport News Shipbuilding And Dry Dock Company, Newport News, Virginia
Keel Laid: 02 March 1990
Launched: 03 April 1992
Commissioned: 06 November 1993
Sponsored By: Mrs. Laura Y. Bateman
source: 26oct2007
send Mindfully.org your comments, questions, and suggestions click


text:
Visit Bandcamp for digital sales
WEME is a Belgium-based specialized record label.
Since 2001, the label has produced several records from a variety of styles and artists.
Since 2008, WEME Records and First Cask records have coproduced several releases. This WEME site is the main distribution place for the FSK back catalogue.
Thanks for posting your physical demos to: WEME Records, Rue Vanderkindere 512, 1180 Uccle, Belgium.
For digital demos only, please send a link to email@example.com
Due to the sheer volume we receive, we will not answer any queries with regards to the demos unless we think we might produce them. Thank you.


text:
Enter your Email address:
Wolters Kluwer Health may email you for journal alerts and information, but is committed
to maintaining your privacy and will not share your personal information without
your express consent. For more information, please refer to our Privacy Policy.
Miller, Nancy Hadley MD* †; Benefield, Elise RN*; Hasting, Laurel BA*; Carry, Patrick BA*; Pan, Zhoaxing PhD‡; Erickson, Mark A. MD* †
Background: Neuromuscular (NM) spinal deformities necessitating surgical intervention present a difficult challenge to the medical community. Underlying comorbidities lead to extended hospital stays, significant complications, and social challenges in the extensive perioperative period. In response to this problem, a therapeutic algorithm, the Care Pathway for Spinal Surgery (CAPSS) has been developed at our institution to address this complex medical issue.
Methods: In 1999, a multidisciplinary team developed a treatment protocol, CAPSS, that emphasized perioperative work up and operative scheduling under the direction of a dedicated care coordinator. A case series analysis was conducted to compare the surgical outcomes from before and after CAPSS implementation. Statistical analyses were performed on a carefully paired subset of NM patients (N=9). Outcome measures were hospital length of stay (LOS), pediatric intensive care unit LOS, number of days intubated, surgical estimated blood loss, postoperative curve magnitude, percent curve correction, and perioperative complications.
Results: Statistical analyses indicated that the use of CAPSS provided significant reduction in overall LOS, pediatric intensive care unit LOS, and perioperative complication rate within this patient group.
Conclusions: CAPSS is an effective method to improve perisurgical care within the NM patients with spinal deformity necessitating operative stabilization.
Level of Evidence: III—Retrospective comparative study.
© 2010 Lippincott Williams & Wilkins, Inc.
Colleague's E-mail is Invalid
Your Name: (optional)
Your Email:
Colleague's Email:
Separate multiple e-mails with a (;).
Thought you might appreciate this item(s) I saw at Journal of Pediatric Orthopaedics.
Send a copy to your email
Your message has been successfully sent to your colleague.
Some error has occurred while processing your request. Please try after some time.
An Existing Folder
A New Folder
Folder Name:
The item(s) has been successfully added to "".
The Pediatric Orthopaedic Society of North America (POSNA)is a group of healthcare professionals, primarily pediatric orthopaedic surgeons, dedicated to advancing musculoskeletal care of children and adolescents. JPO is our official member journal. Like us on facebook and become a member today!
Login with your LWW Journals username and password.
Username or Email:
Forgot Password?
Enter and submit the email address you registered with. An email with instructions to reset your password will be sent to that address.
Link to reset your password has been sent to specified email address.
What does "Remember me" mean?
By checking this box, you'll stay logged in until you logout. You'll get easier access to your articles, collections,
media, and all your other content, even if you close your browser or shut down your
To protect your most sensitive data and activities (like changing your password),
we'll ask you to re-enter your password when you access these services.
What if I'm on a computer that I share with others?
If you're using a public computer or you share this computer with others, we recommend
that you uncheck the "Remember me" box.
Save my selection
Article Level Metrics
spine fusion, scoliosis, neuromuscular, algorithm, care pathway
Search for Similar Articles
You may search for similar articles that contain these same keywords or you may
modify the keyword list to augment your search.


text:
Every year in the NFL, a few guys come up way short of expectations. This affects the actual NFL teams, of course, but it kills our fantasy football teams.
Often, this disappointing production isn't necessarily the player's fault, but in fantasy football, no one cares. For whatever reason, be it injury, team talent or a player's own struggles, he fails to put up the expected numbers.
These are the guys every fantasy owner hates to have, and we've all had them. Who are 2012's disappointing fantasy football players? Read on to find out.


text:
Chris Colfer Heading To An Asylum Near You?
"Glee" star Chris Colfer is already thinking about his next script, a follow-up to his upcoming film "Struck by Lightning" (watch the trailer). This one will be set in an insane asylum in the 1930s—a far cry from his other projects, including his recently released middle-grade novel.
"Yeah, it's a little different than 'The Land of Stories' and 'Struck By Lightning," he joked earlier this week when he stopped by MTV News. "Just a little bit [different] but yeah, yes, hopefully we'll shoot that this winter or next winter. I'm in the movie as well, and it doesn't matter how old I am. There's no rush like there was with 'Struck By Lighting,' [where it was like] 'I gotta look young.' This one, there's some room for age."
By the way, it also sounds nothing like "Glee." But oddly it is in the same vein as another project from that show's creator, Ryan Murphy. You see, the upcoming season of "American Horror Story" will be set in an asylum as well. Is 2012 the year for crazy houses? He joked, "I guess, finally, those asylums get their moment in the light!"
Chris explained that he decided an asylum-set project would work for him since he's always been a bit captivated by what exactly goes down in them.
"I don't know. I've always liked crazy people or people with issues of some kind. [And] I don't mean of reality. I mean like the fictitious stuff that's out there and I've always been fascinated by the human mind."
Do you like the sounds of Chris' asylum? Sound off in the comments and on Twitter!


text: 42 The ghost hunter by Lior Arditi Best Sellers Trending Art Best Selling Paintings Best Selling Abstract Art Prints Best Selling Photography Best Selling Posters Popular Subjects Animals Architecture Childrens Art Floral & Still Life Landscape Maps Military & War Music Science Fiction & Fantasy Skylines Spiritual Transportation Featured Artists Brickhut Cozamia Eric Joyner Erin Ashley James Niehues Jennifer Lommers Jonas Gerard Marcia Baldwin Mark Lawrence Michael Creese Michael Tompsett Collections ArtLoversOnline Design Pics The Fine Art Masters Panoramic Images Retro Images Archive StockTrek Images WorldWide Archive Create Your Own Photo Canvas Custom Frame Photos The ghost hunter by Lior Arditi (2007) Sign inCustomer Service Cart Houzz Share on Tumblr Tweet +Add to Cart Available Sizes inches / cm Petite $57.50 Small $69.00 Medium $86.25 Large $115.00 Grande $230.00 Massive $345.00 » component prices Print Frame Mats Glazing Fitting Customize Framing or choose Canvas Print Customize Canvas or choose Framed Art Print Click to save as artist's preferred kit Paper Enhanced MattePremium Photo GlossyPremium Photo LusterUltraSmooth Fine ArtHahnemuhle Photo Rag 308Hahnemuhle Fine Art PearlHahnemuhle Torchon Mounted? ★★★☆☆ Details Paper print only, too large to frame online. Frames Choose a color » ø Top Mat | Middle Mat | Bottom Mat ø Glazing Style Soft EdgeWhite EdgeBlack EdgeImage WrapUnstretched 1½ inches thick (3.75 cm) Product Details Artist grade canvas, archival inks, wooden stretcher bars, and UVB protective coating Availablity Usually ships within five business days. Artist Lior ArditiCollection fantasylandDescription A piece made on the Halloween spirit. This old witch is determent to catch a few ghost tonight... Popular Configurations Stretched Canvas Modern Lines Contemporary White Classical Baroque Unframed print Explore More from the same collection View All Lior Arditi's Recent Work About the artist Lior Arditi Member Since February 2011 Artist Statement Lior Arditi, a 36 years old graphic designer & illustrator from Israel.2011:available for freelancing.2004-2010:Designer & creative supervisor in JCS post production,working on a variant fields- broadcast, commercials, channel branding & packaging.2002-2004:3D animator in DPSI.Education:Graduated Bezalel Academy of Arts and Design (2002).AREAS OF EXPERTISE:Design for broadcastCharacter designIllustrationMatte paintingCreative direction Community Comments Catalog Details Product No 3833228 Subjects Fantasy, Halloween, Holiday, Science Fiction & Fantasy Style Drawing Medium Tags Arditi, Lior, butterfly, dark, ghosts, halloween, houses, moon, net, run, witch. Create Frame Photos Photos on Canvas Sell Sell Art Online Become an Affiliate Get a Trade Account Common Questions Company Info About Us Contact Customer Comments Return Policy Social Tumblr Pinterest Twitter Facebook Instagram Our Wall Art Family CanvasOnDemand | Photo Canvases GreatBigCanvas | Decorate Huge Terms of Service Privacy Policy Copyright © 2016


text:
Waterfront Bed and Breakfast Gift Certificate
- On December 13th, 2010
Looking for a memorable gift for a special couple? A gift certificate to Sea Cliff Gardens Bed & Breakfast is not only incredibly special, it's a thoughtful, heart-felt gift. You're giving someone the chance to completely relax and unwind in a beautiful waterfront setting, and you're giving them the chance to make an unforgettable memory–things they might not take the time or spend the money to do for themselves.
When you purchase a bed and breakfast gift certificate from Sea Cliff Gardens, you can choose from two options: 1) The gift certificate can display a specific dollar amount, or 2) the gift certificate can display a specific number of nights in the room of your choice. When you choose the second option, the gift certificate will also specify either peak season or quiet season dates, depending upon how much you want to spend. Gift certificate recipients can always upgrade, if they desire, when they call to make their reservation.
A question we are asked frequently is "Who chooses the date of the stay?" The answer is: The recipient. When they call to make their reservation, they pick the night(s) they want to come. To answer another popular question: No, our gift certificates have no expiration date.
Gift Certificates can be mailed directly to the recipient if you like, or we can mail them to you, so you have something to put under the tree.
Give us a call today at 360-452-2322, or 800-880-1332, or email us email@example.com, and make someone's Christmas truly special! ~Bonnie


text: Living under a Highway Bridge : : We are very fortunate to work with such an accepting and receptive community. Despite dropping the project for a year, due to lack of man-power, we have received support from the community and I have seen their trust build tremendously within the past three months. While most of my… Read More »


text:
For the Makers Inc.
Here is a brilliant idea for the Pinterest age.
I don't know about you, but I am routinely inundated with ideas for tempting do-it-yourself projects. Let's just take a quick peek at my Pinterest page. Yep, there's a project to turn a small toddler T-shirt into a dress, to turn an old dresser into a "signature" piece of furniture, to turn old furniture into garden ornaments, or turn chipped teacups into bird feeders. And that's not to mention the endless macrame, quilting, painting, antiquing, jewelry-making and paper-making efforts that look so simple and fun. »Read Full Blog Post


text: Cinema Chat: Cinetopia, Whiskey and Fast Cars! By David Fair & Amanda Bynum • May 23, 2013 TweetShareGoogle+Email Listen Listening... / Cinema Chat the week of May 23 On this week's edition of "Cinema Chat" WEMU's David Fair has a different co-host. While Russ Collins spent the morning toiling elsewhere, Michigan Theater Program Director Amanda Bynum filled in to provide all of the movie information you'll need. Tags: Cinema ChatAmanda Bynummichigan theaterCinetopia Film FestivalDetroit Institute of ArtsDavid FairTweetShareGoogle+Email Related Content Cinema Chat: Into the Woods, Star Trek Into Darkness and More 3 years ago View the discussion thread.


text:
Kona Round Table
Current Selections
Returns & Guarantee
Kona 48 diam 30h Round Table
Color: Silver
Product Details
The Kona outdoor table by EMU brings modern style to your backyard, patio or deck. A steel mesh top allows water to drain so your table is always ready to enjoy. The tubular steel legs have a pedestal-inspired design for maximum leg room. Kona has a durable powder-coated finish that's easy to wipe clean and an umbrella opening for dining in the shade.
Details of Kona 48 diam 30h Round Table
- Dimensions: 48" diameter 30"h
- Top Thickness: 1.25"h
- Base Dimensions: 40" diam
- Floor to Bottom Clearance: 28.5"h
- Space Between Legs: 26"w
- Leg Thickness: 1.25" diam
- Table Seats: four
- Features: 1 5/8" diam umbrella opening with removable cap; compatible with Maui and Oahu umbrellas
- Compatible With: Outdoor Cover for 38-48 diam Tables plus 4 Chairs
- Product Origin: made in Italy
- Item Number: 462208
- Material: steel See full material details
- Finish: powder-coat
- Color: silver
- Material Description: Steel is exceptionally durable and eco-friendly thanks to its ability to be made from recycled material and then recycled again at the end of the products life. Artisans hand-craft the steel using innovative technology and age-old techniques to shape the steel into pieces of almost any shape and size.
Reviews (33)
Product Care
Get unlimited items delivered by our dedicated Delivery Associates for one flat rate per trip—$89 for local customers within 100 miles of a Room & Board store and $129 for customers who live beyond our local delivery areas within the 48 contiguous states. Unlimited accessories ship for free via UPS (excluding accessories that require in-home delivery).


text:
Willpower is the ability to control your own behaviour; the strength to carry out a task or to hold back from acting on your impulses.
Willpower is talked about most frequently in the context of pushing ourselves to do mundane tasks that we're not excited about (sometimes requiring us to overcome procrastination), or stopping ourselves from engaging in an activity that appears pleasurable but has been deemed "bad" (such as drinking alcohol or eating a second piece of cake).
Recently, there has been a growing movement that views willpower as the key to success in life. After all, there are lots of things in our day-to-day lives that may not excite us, but that need to be completed. There are also lot of temptations out there that may interfere with our plans. The more you can focus and push yourself to do what's necessary and avoid stumbling blocks, the faster you can progress with your career goals (and be healthier, fitter, richer, and have a cleaner house in the process), right?
Not so fast – it's not that simple.
Willpower is not the magic bullet people claim it to be, propelling us forward and through any obstacles in our path. In fact, striving to have more willpower may be hurting both your progress towards your goals, and your overall wellbeing.
How did the idea of "willpower" gain so much momentum?
When we see others sitting down to do a task without procrastinating, or waking up early to go for a run, or saying "no" to the donuts at a morning meeting, our tendency is to think, 'that person has so much willpower! I would be so much better off if I had that much discipline'.
But those "disciplined" people aren't having to use willpower at all. Likewise, willpower isn't what drives successful people to pour huge amounts of time and energy into their projects.
People who appear to have willpower actually have personally meaningful passions or goals that they're working towards. They don't use willpower to force themselves to complete tasks (or to abstain from something) – they're not "driven", they're inspired because they have a strong interest in something or gain meaning and purpose from the project or cause. The boring or unpleasant tasks along the way become easier to handle because they have a personally important, bigger picture goal in site – the tasks along the way are merely stepping stones.
But I have a meaningful goal and I'm still struggling to push through my to-do list. Why?
The first question worth asking is "whose goal is it?" Is your goal really something that's important or meaningful to you?
It may well be that the answer is "yes" but that you're still struggling with procrastination or to stay on track. Even with a bigger goal in mind, the steps along the way can be challenging at times. But willpower is not the solution. In fact, if you're trying to use willpower to overcome stagnation, you're probably doing yourself more harm than good.
For most people, willpower involves being harsh with themselves, berating or punishing themselves; it's more stick than carrot. People may say to themselves, "come on, just get on with this already. Stop being lazy, stop slacking off" or "what's wrong you you, you still haven't done [X]", or "I can't believe I ruined my diet with that cake. I can't do something that stupid again".
What we refer to as "willpower" usually relies on using self-criticism to keep ourselves on track. Self-criticism may feel like it keeps us going, but is ultimately self-defeating. A self-compassionate approach is what allows people to overcome obstacles. Unlike willpower, which involves "forcing" yourself to keep going, self-compassion involves being gentle to yourself, putting mistakes in perspective and showing yourself empathy, taking a balanced approach to your work, and taking breaks when you need them (following your natural rise and fall in energy and "drive").
If I'm self-compassionate, I'll never get anything done. I need willpower!
Research has shown that people who are self-compassionate are more motivated, have higher energy levels, accomplish more, procrastinate less, are more creative, and have more success with goals like weight loss and even career progression than people who are self-critical.
If you berate yourself to try and summons willpower, you're more likely to fall into procrastination and self-sabotaging activities. It becomes a vicious circle; the worse you feel about yourself for it, the more of your energy will be tied up in self-criticism and self-defeating activities, leaving little left for accomplishing your goals.
Do self-compassionate people never get "stuck" or feel like they need a push? Of course not – we all have hard days. Someone who rolls out of bed early every morning for a run because they find personal purpose and meaning in the goal of running a marathon may still want to fight with their alarm clocks some days. But they are motivated to get up by reminding themselves of their goal, not by criticising themselves. Willpower doesn't come into play; they aren't forcing themselves to do something they don't want to, they're reminding themselves of why they set their alarm in the first place. And if they do keep sleeping, they don't treat themselves harshly for it afterwards, they find a way to get back on track because it's something important to them.
People who achieve success do often work hard and may appear disciplined from the outside. But what gets them there isn't willpower, it's passion, excitement, and self-compassion. Trying to mimic the motivation and excitement of others through cultivating willpower and forcing yourself to keep going is an exhausting recipe for burnout and self-criticism rather than the key to success.
The best recipe for success is to encourage yourself to make the move from being "driven" to being "inspired".
The team at Paul the Counsellor offers confidential, non-judgemental, supportive counselling and psychotherapy for individuals and couples in the Melbourne CBD.
0458 090 687
253 Lonsdale St, Melbourne VIC 3000


text:
A Fight to the Finish
Riding the Belmont Stakes is unlike riding any other race in the world.
Read Full Article
A Front Row Seat to History
By five o'clock in the afternoon of June 5, 1971, on a bright, brilliantly sunny day across Long Island, a record crowd of 81,036 souls, the largest ever to see a horse race in New York...
A Magnificent Obsession
Nick Zito has been a key player in the Belmont Stakes for 25 years.
An Empire Classic
Triple Crown Winner Gallant Fox was the pride of New York.
A Remarkable Life
In 1919, Sir Barton set the standard for the Triple Crown.
Read Full Article
A Timeless Tale of Valor
The plaque sits inconspicuously on a large rock between the clubhouse and the racing secretary's office at Belmont Park, largely unnoticed by the thousands who pass by it each year.
African Americans in the Belmont
Hall of Famer Ed Brown became the first African-American jockey to win the Belmont Stakes in 1870 aboard Kingfisher.
Destination: Immortality
The heart of American racing, more than a century old, beats hard against the western edge of New York City, a modern-day Circus Maximus that became the nation's most important racing venue on the day it opened and remains without peer.
Gambling Man
Woody Stephens defied the odds with Conquistador Cielo, the first of his five straight Belmont winners.
History On Hold In The 130th Belmont
Some 80,162 roaring partisans, then the second-largest crowd to ever attend a Belmont Stakes, were there to witness that frenzied finish. It was not …. real quiet.
Jockey Silks
Silks or colors, worn by each jockey in a race to represent a horse's owner, are among the oldest traditions in racing.
More Than Just Horses
If, over the course of more than a century, Belmont Park had only hosted Thoroughbred racing, its place in history would be both prominent and assured.
The Belmont Trophy
The August Belmont Memorial Cup awarded to the winner of the Belmont Stakes is a solid silver bowl and cover made by Tiffany & Co. measuring 18 inches tall, 15 inches across and 14 inches at the base.
The Carnation Blanket
While the origin of the white carnation as the official flower of the Belmont Stakes is unknown, it's a fitting choice to crown the winner of the 1½-mile "Test of the Champion."
The White Pine
The only thing anyone knows for sure about the huge Japanese white pine that shades Belmont Park's paddock is that it's very, very old.
Secretariat Outshone Them All
Of all the great horses that have made the pilgrimage to Belmont Park since its Opening Day on Thursday, May 4, 1905, only one horse impressed upon Belmont Park the stamp of immortality.
Woody's Five Consecutive Wins
It remains one of the greatest achievements in sports history, one that may never be duplicated or surpassed.
Women Jockeys in The Belmont
Julie Krone, the all-time leading female jockey, became the first woman to win a Triple Crown race when she rode Colonial Affair to victory in the 125th running of the Belmont Stakes on June 5, 1993.
Writing Her Own History
1944 Acorn winner Twilight Tear was the first filly Horse of the Year.
Enter your email address to receive future updates on tickets & promotions


text:
Comment this
Make sure your text complies with our rules
Today, I asked my boss a simple question about a problem I was having with a project I am currently doing. He replied: ''You don't worry your sweet little ass about it babe". My boss is my girlfriend's father. Nice. FML
by GiWi / 11/18/2009 at 11:45am / Ireland (Cork) / Work
Make sure your text complies with our rules


text:
Click on a thumbnail to go to Google Books.
Mind Candies for a Lousy Day - A Short and Snappy Guide (edition 2012)
by Thejendra B.S (Composer)
Work details
Mind Candies for a Lousy Day - A Short and Snappy Guide by Mr Thejendra B.S
No current Talk conversations about this book.
Fine compilation of quotes from famous people as well as popular wisdom. Containing many quotes that were new to me, goes beyond the obvious and too-often-repeated citations as we find them on Facebook. A sweet booklet. Thank you for this inspiring LBT Giveaway.
References to this work on external resources.
Wikipedia in English
No descriptions found.
No library descriptions found.
Amazon Kindle (0 editions)
Audible (0 editions)
CD Audiobook (0 editions)
Project Gutenberg (0 editions)
Google Books — Loading...
Is this you?
Become a LibraryThing Author.


text:
Nikki Reed in Elizabeth and James | Ubisoft "Just Dance 3" Launch
Nikki Reed danced the night away with fiancé Paul MacDonald at Ubisoft's launch party for the "Just Dance 3" video game. While attending the event at The Beverly in Los Angeles, it's reported that Nikki even teamed up with recently booted "Dancing with the Stars" contestant Kristin Cavallari for a couple of video game performances.
Nikki wore the loose fitting "Trish" black cotton dress by Elizabeth and James which she paired with the same Rag & Bone 'Classic Newbury' leather ankle boots and evening clutch she had worn earlier in the night, along with a pretty pair of Tacori circlets drop earrings with green onyx and clear quartz stones. | continue reading..


text:
Enter your Email address:
Wolters Kluwer Health may email you for journal alerts and information, but is committed
to maintaining your privacy and will not share your personal information without
your express consent. For more information, please refer to our Privacy Policy.
Summary: To determine the extent to which genotype (GT) or phenotype (PT) methods provide HIV-1 drug resistance information that is overlapping or complementary, both tests were performed on 1378 patient plasma samples. Discordance, defined as determination of reduced susceptibility measured by PT but sensitivity by GT (PTR/GT-S), or vice versa (PT-S/GT-R), was common: 83, 62, 43, and 28% of samples with evidence of drug resistance had at least 1, 2, 3, or 4 drugs discordant, respectively. Three types of discordance were observed: PT-R/GT-S, and PT-S/GT-R with or without the presence of mixtures at resistance-associated positions (25%, 34%, and 41% of all discordance, respectively). After accounting for mixtures, results for didanosine (30%), zalcitabine (18%), tenofovir (17%), abacavir (14%), lamivudine (12%), and amprenavir (11%) were discordant in >= 10% of samples. PT-S/GT-R results were most common for didanosine and zalcitabine, whereas PT-R/GT-S results. were most, common for lamivudine and amprenavir. PT provided quantitative assessment of the degree of reduced susceptibility and identified reduced susceptibility (PT-R/GT-S) or normal susceptibility (PT-S/GT-R) that was not recognized by the GT interpretation algorithm. GT provided valuable information when mixtures were present and minor populations of drug resistant virus were not detected by phenotyping (PT-S/GT-R results). This demonstrates the complementary nature of information provided by PT and GT tests and suggests that their combined use can provide additional clinicallyrelevant information.
(C) 2002 Lippincott Williams & Wilkins, Inc.
Colleague's E-mail is Invalid
Your Name: (optional)
Your Email:
Colleague's Email:
Separate multiple e-mails with a (;).
Thought you might appreciate this item(s) I saw at JAIDS Journal of Acquired Immune Deficiency Syndromes.
Send a copy to your email
Your message has been successfully sent to your colleague.
Some error has occurred while processing your request. Please try after some time.
An Existing Folder
A New Folder
Folder Name:
The item(s) has been successfully added to "".
Login with your LWW Journals username and password.
Username or Email:
Forgot Password?
Enter and submit the email address you registered with. An email with instructions to reset your password will be sent to that address.
Link to reset your password has been sent to specified email address.
What does "Remember me" mean?
By checking this box, you'll stay logged in until you logout. You'll get easier access to your articles, collections,
media, and all your other content, even if you close your browser or shut down your
To protect your most sensitive data and activities (like changing your password),
we'll ask you to re-enter your password when you access these services.
What if I'm on a computer that I share with others?
If you're using a public computer or you share this computer with others, we recommend
that you uncheck the "Remember me" box.
Save my selection
Article Level Metrics
HIV-1, Drug resistance, Genotype, Phenotype, Resistance testing
Search for Similar Articles
You may search for similar articles that contain these same keywords or you may
modify the keyword list to augment your search.


text:
Thames River
The Thames River begins in a swampy area of southwestern Ontario and meanders quietly for 273 km past the cities of WOODSTOCK, LONDON and CHATHAM-KENT to empty into Lake ST CLAIR. At the Forks, in London, the North Thames River joins it.
Along much of its length, the Thames is flanked by rich Carolinian forest with tree species that include tulip, paw paw, Kentucky coffee and sassafras. Wildlife and fish found in its muddy waters or along its banks include many that are rarely found elsewhere in Canada, such as the eastern spiny softshell TURTLE, queen snake, black redhorse (see SUCKER) and Virginia OPOSSUM. The diversity of species is reflected in the rich cultural heritage of the Thames. Its fertile valley has been home to people for over 11 000 years. Wars have been fought here, and commercial farming in Canada had its roots here. Much of the Thames River valley still appears as it did 200 years ago, and many early buildings are still standing.
Called Askunesippi, "Antlered River," by the Neutrals, it was renamed La Tranchée (later La Tranche), "The Trench," by early French explorers and settlers. It was given its present-day name in 1792 by the lieutenant-governor of Upper Canada, John Graves SIMCOE after the Thames River in England. In 2000 it became part of the CANADIAN HERITAGE RIVERS SYSTEM.