text:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061207 Minefield/3.0a1
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1) Gecko/20061207 Minefield/3.0a1
(new Date).getTime() should output the time accurate to one millisecond. But in my case it has a resolution of 15~16ms, which means that every time difference (by calling getTime() twice) is a multiple of 15~16ms, which makes profiling applications (f.ex. Firebug 1.0 Beta, lori and venkmal) completely useless.
Reproducible: Always
Steps to Reproduce:
Open the testcase I will attach.
Actual Results:
time elapsed: 0
time elapsed: 16
time elapsed: 16
time elapsed: 16
time elapsed: 31
time elapsed: 31
time elapsed: 47
time elapsed: 47
time elapsed: 47
time elapsed: 63
Expected Results:
the time elapsed accurate to one ms.
Created attachment 248062 [details]
testcase that mesures script execution time.
You can change the iteration count of the for-loops to better show the bug.
It seems likely that your complaint is against your operating system (or your system load), which is exhibiting either a) poor resolution in its timer (very doubtful), or b) ~15ms long context-switch times, and not against the browser, which is simply reporting the time sample it was delivered from the operating system.
Using "wall-clock duration" as a profiling tool, especially for work-loads as small as this one, is bound to lead you on a bit of a wild-goose chase. I'd suggest checking out the profiling features in Venkman instead.
btw, the output of your test case on my system (Mac OS with a dual-core Intel CPU) is this:
time elapsed: 5
time elapsed: 9
time elapsed: 13
time elapsed: 17
time elapsed: 21
time elapsed: 25
time elapsed: 29
time elapsed: 34
time elapsed: 38
time elapsed: 42
I think Venkman is also affected by this bug.
And maybe it is a Windows specific Bug? I asked a few friends of mine with different Windows-based machines and they could reproduce the bug.
Well it seems like it really is a problem with windows. After a little research i found the following site which explains the details: http://www.sykronix.com/researching/browser/loop/
And I also tested Opera with my testcase and it also shows this "bug".
But how does for example PHPs microtime() work that accurate? Maybe it uses some other OS timer? I don't understand much of this but isn't it possible for Mozilla to use the same time source for getTime() as PHP uses for its microtime() function?
That would change this "bug report" into a "feature request". For example "Use a more accurate OS timer for getTime()" or "Provide a timer with the resolution of microseconds (instead of milliseconds) for extension authors". Would that be possible?
I know we've talked about doing the equivalent of a portable RDTSC, but I think that facility is actually becoming increasingly _less_ reliable, and I don't know what its counterpart would be on non-Intel platforms. In either case, it wouldn't be appropriate functionality for the Date() object to provide, and would probably be a non-portable "extension" of Firefox/spidermonkey even if we could somehow provide it (either through the DOM or through core JS facilities?)
A better approach to this for your problem is probably to try increasing your work-load until millisecond timing becomes less of an issue.
I think Boost and the PHP timer function on Win32 use this GetSystemTimeAsFileTime routine, something like this (though the PHP version looks overly complicated): http://firstname.lastname@example.com/msg04981.html
Here's boost's version:
//! Return the local time based on computer clock settings
static time_type local_time() {
FILETIME ft;
#if BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3205))
// Some runtime library implementations expect local times as the norm for ctime.
FILETIME ft_utc;
return create_time(ft, LOCAL);
We need this for our performance tests.
This works fine on Mac and Linux, but shows 15/16 millisecond resolution on Windows. Rob Arnold seems to have some ideas about how to reduce it.
Created attachment 270026 [details]
another testcase
Rob - off to you and Jim can you assist with Win32 timer APIs as needed..
(In reply to comment #8)
>but shows 15/16 millisecond resolution on Windows.
Possibly due to change by Bug 307527, use timeGetTime() instead of QueryPerformanceCounter(), in order to bypass MS Win's problem in QueryPerformanceCounter when Multi-CPU&ACPI. (Use of RDTSC instruction by user is also affected. Hotfix is avail, but Service Pack is not shipped yet.)
See Bug 307527 Comment #102 and see patch for Bug 307527.
Is problem observed on Firefox or Seamonkey without the change? (The patch is not applied at leaset Firefox 184.108.40.206)
Just looking at this preliminarily I'm getting what appears to be correct results on
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9a6pre) Gecko/20070628 Minefield/3.0a6pre
time elapsed: 2
time elapsed: 5
time elapsed: 6
time elapsed: 8
time elapsed: 10
time elapsed: 12
time elapsed: 14
time elapsed: 16
time elapsed: 40
time elapsed: 42
If this is related to a specific hardware configuration it's not what I'm running - Vista / Core 2 6700 @ 2.66GHz.
Second test case also appears to be working correctly.
Created attachment 270253 [details]
Timer comparison program
(In reply to comment #12)
> Just look at this preliminarily I'm getting what appears to be correct
> results on
Yes, my Vista machine gives the correct results on both tests, however my XP machine gets incorrect results on both tests. I don't know about Windows Server 2003, but I suspect all versions of windows except vista likely exhibit this problem.
Attached is the source to a small C++ program that runs some different windows timer apis through a roughly equivalent version of the javascript test pages. I do remember at one point seeing incorrect output from this program on Vista (from the FileTime/SystemTime timers) but I can't seem to reproduce that. Behavior on XP is as expected.
"Whether QueryPerformanceCounter or timeGetTime" seems to have no relation.
Next page says timer resolution of Win-XP(probably NT or later) is 10ms(or 15ms).
And next page says timeBeginPeriod is required to use higer resolution.
And Bug 307527 Comment #102 says that timeBeginPeriod is not currently issued by NSPR.
Possibly a result of timer related spec change(improvement) on Windows Vista.
I've found a forum (MSDN Forums»Software Development for Windows Vista) article who says next by google search.
> when an audio client is created in exclusive mode, timer resolution is changed from 1ms to 15ms.
And next is wikipedia article which says "exclusive mode(also called DMA mode)".
Does someone know about relation between "timer resolution" and "exclusive mode" in MS Windows Vista?
I was under the impression this was something new but it doesn't appear to be. It looks like Date calls PRMJ_Now -
and uses GetSystemTimeAsFileTime for the value. This call has a
resolution of about 10ms from what I'm reading on the net.
Running Rob's app on an XP VMWare image yields -
Using timer: GetSystemTimeAsFileTime
0 0 0 0 0 10 0 10 0 10 0 10 10 10 10 10 10 10 10 20 10 10 10 20 10 20 20 20
20 20 21 20 20 20 20 30 20 30 30 20
Using timer: GetSystemTime
0 0 10 0 0 0 10 0 10 0 10 10 0 0 10 10 20 10 10 10 20 10 20 10 20 20 10 20 2
0 20 20 20 30 20 20 30 20 31 20 30
Using timer: timeGetSystemTime
0 0 0 0 0 10 4 4 5 5 6 6 9 7 9 9 11 11 12 12 13 13 14 15 16 17 18 18 19 20 2
1 21 21 22 23 24 24 25 30 27
Using timer: timeGetSystemTime interpolated with multimedia
0 0 1 1 3 3 4 4 4 5 6 6 8 7 9 10 11 10 13 13 13 13 15 17 16 17 17 19 18 20 2
0 21 23 22 23 24 24 26 27 26
Using timer: timeGetSystemTime interpolated with QueryPerformanceFrequency
0 0 2 1 2 3 4 4 6 6 7 8 8 9 9 10 11 10 12 12 13 14 14 16 17 17 19 19 19 19 2
0 21 22 23 23 28 25 26 24 27
Using timer: GetSystemTimeAsFileTime interpolated with multimedia
0 0 0 1 2 3 3 4 5 6 6 8 8 9 9 9 11 13 12 12 13 14 16 15 16 16 17 19 19 20 19
20 22 22 22 25 24 24 26 27
Using timer: GetSystemTimeAsFileTime interpolated with QueryPerformanceFrequency
0 1 1 2 3 3 3 5 5 6 8 8 9 9 16 10 14 15 15 22 17 19 17 18 16 18 21 18 20 22
30 27 23 22 24 23 29 32 27 27
So update Now to use timeGetTime? The only catch are the required calls to timeBeginPeriod and timeEndPeriod.
Hmm, maybe not.
"The timer APIs work on elapsed times since a moving epoch. For example, timeGetTime() measures elapsed time in "system time" or milliseconds since the operating system was last started. We've seen it generate measurements to individual milliseconds, so it is better than ftime. However, to relate system times to calendar dates and times, you need to use the pair of methods GetSystemTimeAsFileTime and FileTimeAsSystemTime. Unfortunately, the resulting milliseconds accuracy is only 1/100th (similar to ftime). So, timeGetTime appears to be the best of these APIs but its output doesn't translate to calendar dates and times."
Just an idea(pseudo code).
1. D1=GetSystemTimeAsFileTime();timeBeginPeriod();T1=timeGetTime();
2. D2=GetSystemTimeAsFileTime();T2=timeGetTime();timeEndPeriod();
3. Return D1+(T2-T1) as system time with higher timer resolution;
Note: QueryPerformanceCounter can be used instead of timeGetTime,
when MS Win for single CPU, or MS Win XP SP3 or later(not shipped yet).
Created attachment 270617 [details] [diff] [review]
Quick fix
This is a preliminary patch that should address the issues that we see on tinderbox and js timing in general, however there are a few remaining issues to be sorted out before it can be deployed for general use.
1. If the user changes the time (or DST kicks in) while the program is running, that change is not picked up and the old time is used instead.
2. If the user suspends/hibernates while the program is running, that change is also not picked up.
3. Multi-core/dynamic clockspeed timing issues.
Since no (known/documented) API call seems to exist in Windows 2k/XP/Vista that by default gives better than 15 ms precision, the strategy seems to be to grab the system time and use a high-resolution timer to extrapolate the current date. Windows provides two different timers for our task: the multimedia timer and QueryPerformanceCounter/Frequency.
Multimedia timer:
* Can provide 1ms resolution
* Does not seem to suffer from multi-core/speedstep issues.
* Can query system time directly, no interpolation needed (timeGetSystemTime)
* Obtaining 1 ms precision comes at a cost of battery life. See "Battery Life Impact of High-Resolution Periodic Timers" in http://220.127.116.11/search?q=cache:taVMNra3EcoJ:download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/PM_apps.doc+timeBeginPeriod+battery+life&hl=en&ct=clnk&cd=2&gl=us&client=firefox-a
* timeGetTime is a 32 bit value, so we have to worry about wrap around
See http://blogs.msdn.com/oldnewthing/archive/2005/09/02/459952.aspx
* Microseconds resolution
* 64 bit value will not wrap around for years
* Does not cause an extra drain the battery/low overhead
* Accuracy depends on the available hardware
* Availability depends on hardware, though any Pentium-class processor should be sufficient (it may rely upon the RDTSC instruction).
I don't like the idea of draining battery life, so I chose to use QueryPerformanceCounter. Microsoft has put together a small guide aimed at game developers who want accurate timing on Windows: http://msdn2.microsoft.com/en-us/library/bb173458.aspx
In this article, it puts out 5 recommendations; this patch follows 3 of them (1,2,5). The remaining recommendations are to compute timing on a single thread (All JS content does this in Firefox) and to set the thread affinity to one processor. The latter could be dealt with by setting/unsetting the affinity around calls to QueryPerformanceCounter, but I haven't found out how expensive those calls are.
Multicore issues:
The counter value from QueryPerformanceCounter may decrease. See http://channel9.msdn.com/ShowPost.aspx?PostID=156175
There is a hot fix for XP (http://support.microsoft.com/?id=896256) as these users discovered (and as WADA indicated), but it has not been pushed out by Microsoft so we cannot rely on it being present. That said, for users who do not have this hotfix, I don't think we should try to provide anything better than 15ms resolution (and I'm not sure that we can). Still, since our interpolation method relies upon the counter to steadily increase, the timing will be off which is why we cache the largest value we've seen and use that if our current value is less than it. Thus Date.now() will never decrease.
Similarly, the counter can leap ahead by a few seconds (http://support.microsoft.com/kb/q274323/).
There is also the issue that when no dedicated timer hardware is present, QPC seems to use the processor's frequency/tsc however modern mobile cpus dynamically scale their frequency so the tsc will update at a different rate than our code expects. I do not think there is a good way to detect processor frequency changes.
Dealing with these issues should be handled by detecting and correcting clock skew. What I haven't figured out is how often to check, how to check and what should be recalibrated.
Also in the patch is some custom mutex code. The JS engine is required to be multithread safe, so potentially there could be multiple threads invoking PRMJ_Now for the 'first' time. Since the nspr mutex code is probably not expecting simultaneous initialization on multiple threads with the same mutex, I wrote a small mutex structure that can be initialized to 0 before execution. This is also used to protect writes/reads to the largest value.
Created attachment 270629 [details]
New timer comparison program
I ran across an internal API (http://msdn2.microsoft.com/en-us/library/ms724512.aspx) that I thought might be promising. As I somewhat expected, it is affected by the timeBeginPeriod/timeEndPeriod calls, so it is effectively the same as timeGetTime/GetSystemTimeAsFileTime. I also wondered if calling timeBegin/EndPeriod around calls to those functions would increase the resolution, but it appears that there is a delay (perhaps the old duration) before they take effect, so they are not useful.
(In reply to comment #20)
> Created an attachment (id=270629) [details]
> New timer comparison program
Are you looking for a r+ on this or is this a WIP?
Cc-ing to Wan-Teh Chang.
Is use of QueryPerfornanceCounter safe?
I think that "negative increase in two consecutive QueryPerformanceCounter()" should be cared and "if negative, then consider it as ZERO" is sufficient, in order to avoid RDTSC related issue when multiple CPU and "advanced power management" is enabled.
To Rob Arnold:
A) Wraparound can occur between two consecutive timer.sample() requests. I think "negative increase" should be cared. What do you think?
B) If PC is suspended between two consecutive timer.sample() request, returned date/time value after resume can become invalid(very old) one.
Do you think care on this is required?
(In reply to comment #21)
The timer program I posted is intended only to show the characteristics of the different timers available on Windows. The patch (comment #19) is not ready for review unless it becomes ok to break Date.now() under the aforementioned circumstances. As it stands, the patch will fix the issues on the tinderbox machines.
(In reply to comment #22)
> To Rob Arnold:
> A) Wraparound can occur between two consecutive timer.sample() requests. I
> think "negative increase" should be cared. What do you think?
Yes, it should be cared for; most programmers do not expect it. In the patch I proposed (comment #19), there are no negative increases however in the timer comparison program, negative increases are not handled. I did not feel it was necessary to handle them in the program since negative increases occur only with QueryPerformanceCounter on certain systems (I have not found one I can test on yet).
> B) If PC is suspended between two consecutive timer.sample() request, returned
> date/time value after resume can become invalid(very old) one.
> Do you think care on this is required?
Care is absolutely required. I suspended by machine for a few seconds today and the time reported by Date.now() jumped ahead by approx. 4 minutes. As I mentioned in comment #19, this issue is one of the problems that my proposed patch does not deal with, but needs to deal with before it can be checked in.
(In reply to comment #23)
> negative increases occur only with QueryPerformanceCounter on certain systems
Number of the "certain systems" doesn't seem to be so small.
See Bug 277547, Bug 319138 and so on, and already pointed Bug 307527, please.
(In reply to comment #24)
> (In reply to comment #23)
> > negative increases occur only with QueryPerformanceCounter on certain systems
> Number of the "certain systems" doesn't seem to be so small.
> See Bug 277547, Bug 319138 and so on, and already pointed Bug 307527, please.
The number of filed bugs is not necessarily indicative of the number of affected systems. That said, I know that the timer program I wrote does not handle negative increases. The timer program is not intended to contain reference implementations of PRMJ_Now; it has several notable flaws, some of which you have discovered already: it does not handle negative increases, it does not handle suspend/hibernate, it does not handle the user changing the time while it is running, some implementations do not actually return the current date, and it is not threadsafe as PRMJ_Now will have to be.
If you looks at the patch I proposed (see comment #19, please), you will see that it handles negative increases and it should be thread safe. As I mentioned in comment #19, the final patch will have to address suspend/hibernate and user changes the operating system time; my current patch does not do this.
WADA: NSPR is not using QueryPerformanceCounter() now. This
change was made in a patch for bug 307527.
Created attachment 270802 [details] [diff] [review]
Revised patch
This patch should be suitable for general use. While I do not have a machine with a broken implementation of QueryPerformanceCounter, I think this will work.
We check for clock skew every call; the exact tolerance is the 'tick' rate of the NT kernel itself, conveniently exposed through an api call. If clock skew is detected, we recalibrate which takes up to the tick rate (15.6 ms on my machine). This is longer than I would like, but I see no alternative without sacrificing accuracy. Also to avoid rounding errors that were causing some false clock skews detections, all the calculations are done with long doubles which should represent all 64 bit integers exactly; while this does increase the cost of each call, the cost to recalibrate after a clock skew is much larger.
I think this patch is much more complicated than it needs to be. It seems like once the timebase origin has been calibrated, it should be fairly simple to figure out if the QueryPerformanceCounter is somehow out of whack because of one of the many bugs noted above. Once calibrated the current low-res time shouldn't be more than a kernel tick different from the current time calculated based on the difference of the current counter value to the counter value at calibration time.
At calibration time:
lowResStart (from GetSystemTimeAsFileTime)
countStart (from QueryPerformanceCounter)
When PRMJ_Now is called:
lowResNow (from GetSystemTimeAsFileTime)
countNow (from QueryPerformanceCounter)
highResNow = ( countNow - countStart ) / countFreq + lowResStart
if ( abs( highResNow - lowResNow ) > kernel tick ) then recalibrate
As for multi-core CPUs, we should also be able to detect if the thread has moved to a different processor and handle that as a special case, using SetProcessAffinityMask to shift the thread around to the original processor. Intel has published code for doing just this:
Are the threads involved here relatively long-lived? Can we assume that Date.now() values will not be shared across threads? If so, it might simplify things a *lot* to use thread-local storage, obviating the need for mutex calls in a timing routine.
Can we avoid the goto?
Sun looks to have rejected request for use of etimer way (which Intel presented, set CPU Affinity) or technique of "disabling of frequency changing" in System.nanoTime() of Java on MS Windows.
> Synopsis : On Windows System.nanoTime() may be 25x slower than System.currentTimeMillis()
(In reply to comment #28)
> I think this patch is much more complicated than it needs to be. It seems like
> once the timebase origin has been calibrated, it should be fairly simple to
> figure out if the QueryPerformanceCounter is somehow out of whack because of
> one of the many bugs noted above. Once calibrated the current low-res time
> shouldn't be more than a kernel tick different from the current time calculated
> based on the difference of the current counter value to the counter value at
> calibration time.
> At calibration time:
> lowResStart (from GetSystemTimeAsFileTime)
> countStart (from QueryPerformanceCounter)
> When PRMJ_Now is called:
> lowResNow (from GetSystemTimeAsFileTime)
> countNow (from QueryPerformanceCounter)
> highResNow = ( countNow - countStart ) / countFreq + lowResStart
> if ( abs( highResNow - lowResNow ) > kernel tick ) then recalibrate
This is pretty much what is going on (modulo some arithmetic). There is one additional optimization to avoid recalibration for small negative increases in time.
> As for multi-core CPUs, we should also be able to detect if the thread has
> moved to a different processor
This is a bad line of thought; we cannot assume how long we will be on a particular processor.
> and handle that as a special case, using
> SetProcessAffinityMask to shift the thread around to the original processor.
> Intel has published code for doing just this:
> http://www.intel.com/cd/ids/developer/asmo-na/eng/209859.htm
I considered that, but I do not know what the cost of SetThread/ProcessAffinityMask is. There is also the problem of picking the processor to be our timer; the user may not want us to run on a particular processor (i.e. they have a more important/critical task) so we ought to respect that. The multiprocessor/core issue has two cases: time is behind what we last reported and time is ahead of what we would have reported if we only ran on one processor/core.
We handle the first case by caching the last value returned; this avoids the expensive recalibration step (one kernel tick) and prevents negative increases (time going backwards) since most code does not handle that case.
The second case we cannot detect without switching to the processor/core we last ran on and even then, there's no guarantee that we'll switch soon enough. Every api call may "take a while." I do not think the difference between any two processors will be more than one kernel tick (Windows claims to maintain some synchronization between them). Of course, the only way to really know is to test on such a machine, but I don't think I have one.
> Are the threads involved here relatively long-lived?
Yes, most calls will be from the main fx thread.
> Can we assume that Date.now() values will not be shared across threads?
Probably. Most if not all JS code runs on a single thread in fx. As for other Spidermonkey users, I don't know but I don't want to ignore them.
> If so, it might simplify things a *lot* to use thread-local storage,
> obviating the need for mutex calls in a timing routine.
TLS might make things easier, but it is more expensive than the static variables that are currently used. There is still the problem of multithreaded initialization, so mutexes are not entirely out but they would not have to be locked every time. Also, this does require a per-thread memory allocation that we have no good way to free. For fx, this is probably fine since we know the usage pattern, but for other applications this might not be ok.
> Can we avoid the goto?
Yes, if I move the static variables into the global scope and move calibration into its own function. I dislike using goto, but it seemed simpler than doing the former. Spidermonkey is no stranger to goto either; there are over 1000 instances of goto in the code.
(In reply to comment #30)
Looking at the code a little more, seems like we should be storing the timer state in a structure attached to the JSContext, initializing it within js_NewContext and cleaning up in js_DestroyContext. Or alternatively within the JSThread which uses thread-local storage that is attached to each JSContext. This would allow you to clean out all the mutex code, simplify the structure of the routine and get rid of the goto. Mutex's are not cheap and this is a timing routine.
With regard to the problem on multi-core machines, I was thinking we could use GetCurrentProcessorNumber but this appears to only be available on Vista and XP x64, so it's not a simple task to figure out when the thread changes processor. Clamping it as the patch does is probably the simplest alternative. This at least assures that the value returned from PRMJ_Now monotonically increases.
We should also probably only be calling QueryPerformanceFrequency once since it never changes after boot, or at least that's what the MS docs say... ;)
(In reply to comment #31)
> (In reply to comment #30)
> Looking at the code a little more, seems like we should be storing the timer
> state in a structure attached to the JSContext, initializing it within
> js_NewContext and cleaning up in js_DestroyContext. Or alternatively within
> the JSThread which uses thread-local storage that is attached to each
> JSContext. This would allow you to clean out all the mutex code, simplify the
> structure of the routine and get rid of the goto. Mutex's are not cheap and
> this is a timing routine.
I did consider attaching the static variables to a JSContext, however this involves the caller actually having a JSContext which is not always the case (see JS_Now in jsapi.c and random_init in jsmath.c). We could pass NULL and fall back to the old timing code, but that seems inconsistent, especially since JS_Now is a public API. I will look into eliminating the need to lock the mutex every call. I don't think the way that I've implemented the mutex is expensive, no more than the cost of QueryPerformanceCounter or any system call.
> With regard to the problem on multi-core machines, I was thinking we could use
> GetCurrentProcessorNumber but this appears to only be available on Vista and XP
> x64, so it's not a simple task to figure out when the thread changes processor.
It's also not very useful since we should assume we can and will switch to a different processor at any instruction. Microsoft states in their documentation that "This function is used to provide information for estimating process performance" which is not how we'd be using it.
> Clamping it as the patch does is probably the simplest alternative. This at
> least assures that the value returned from PRMJ_Now monotonically increases.
> We should also probably only be calling QueryPerformanceFrequency once since it
> never changes after boot, or at least that's what the MS docs say... ;)
Yes, I meant to look into that on a machine where the actual counter frequency changes with clockspeed. If it doesn't, then yeah we should only call it once.
I'll review on Monday, current patch or newer if you get results from that "counter freq varies with clock speed" machine.
(In reply to comment #33)
> I'll review on Monday, current patch or newer if you get results from that
> "counter freq varies with clock speed" machine.
The current patch is not threadsafe and I could not get QueryPerformanceFrequency to return different values while the program was running. I have an idea to improve concurrency as well.
> /be
From the MSDN page on QueryPerformanceFrequency:
"The QueryPerformanceFrequency function retrieves the frequency of the high-resolution performance counter, if one exists. The frequency cannot change while the system is running."
From the Intel article describing their approach to working around changing processor frequencies and multi-core timing issues:
"This Enhanced Timer (Etimer) is based on two Windows* API functions; QueryPerformanceCounter and QueryPerformanceFrequency. There is no way to know which frequency Microsoft is using to implement those two functions on any given platform. But one thing for sure is that the frequency of that timer will never change during the course of timing. The timer can be either the chipset timer or the power management timer or something else."
Has anyone seen QueryPerformanceFrequency vary?
Following is one of Google search search results for "QueryPerformanceFrequency acpi dual core".
- http://www.gamedev.net/community/forums/topic.asp?topic_id=370281
This forum article is report of following phenomenon of QueryPerformanceCounter on AMD Athlon64 X2 in 2004 (this is the problem).
> Timer: 0.0375251740255071 NewTickCount: 36148061846142 LastTickCount: 36147986698979
> Timer: -0.0197190838817925 NewTickCount: 36148022357099 LastTickCount: 36148061846142
> Timer: 0.00889879405566819 NewTickCount: 36148040177646 LastTickCount: 36148022357099
This report says;
> Additionally, in another test, I called QueryPerformanceFrequency every frame as well,
> and it always returned the same number. So that's at least constant.
although it is not clear whether problem was observed or not when no QueryPerformanceFrequency change was observed.
Another source of "no QueryPerformanceFrequency value change".
- http://msdn2.microsoft.com/en-us/library/ms979201.aspx
This .NET Framework says;
> Add a constructor. In the constructor, call QueryPerformanceFrequency
This indicates there is no need to call QueryPerformanceFrequency multiple times.
Created attachment 272213 [details] [diff] [review]
Proposed solution
Changes this patch:
* No more goto!
* QueryPerformanceFrequency is called only once.
Separate initialization, calibration, shutdown functions.
* Style fixes.
* No more custom mutexes; win32 critical sections are now used so that long waits during calibration will cause threads to sleep (and less code to maintain).
* The skew threshold is doubled to two kernel ticks to avoid some strange behavior with other programs causing a double clock skew (see comment on lines 408-412 in the patch).
* There is a (apparently for Vista only) optimization that reduces calibration time from 15.6 ms to 1 ms
* To avoid regressing startup time, there is a small static counter that reverts to the old behavior for the first n calls (where n = 10 currently). This value was obtained by printing out each call during startup and the start page was blank.
* More comments, including a pseudo code outline of PRMJ_Now which makes it easier to spot race conditions/deadlocks.
Although this patch is not perfect, I have spent long enough trying to make it so. The two things I would like to see fixed are the startup regression hack and the double kernel tick workaround. Any suggestions or ideas are welcome.
Comment on attachment 272213 [details] [diff] [review]
Proposed solution
> #ifdef XP_WIN
> #include <windef.h>
> #include <winbase.h>
>+/* for fabs */
>+#include <math.h>
>+/* for timeBegin/EndPeriod */
>+#include <mmsystem.h>
Nit: prevailing style would put minor comments (unpunctuated, uncapitalized sentence fragments) on the same line and to the right of each commented #include, indented to line up nicely.
>+ /* The performance counter frequency */
>+ long double freq;
>+ /* The low res 'epoch' */
>+ long double offset;
>+ /* The high res 'epoch' */
>+ long double timer_offset;
Uber-nit: these could be indented on the right, or if the comment is long enough and a sentence, as written above -- but then a blank line before each but the first (because it follows an opening brace) is prevailing style.
>+ JSBool calibrated;
This should relieve the need for a local calibrated variable in PRMJ_Now, or I'm misreading.
Prevailing style puts static void on one line before the unindented function declarator.
Statics should not be named as if they were API entry points. They don't need any prmj_ or other prefix, so NowCalibrate is minimal good style here.
>+ /* By wrapping a timeBegin/EndPeriod pair of calls around this loop,
>+ the loop seems to take much less time (1 ms vs 15ms) on Vista. */
Wild, any idea why?
>+ timeBeginPeriod(1);
>+ GetSystemTimeAsFileTime(&ftStart);
>+ do {
>+ GetSystemTimeAsFileTime(&ft);
>+ } while (memcmp(&ftStart,&ft, sizeof(ft)) == 0);
Noting the spin-on-syscall for order msec here, while caller owns a critical section.
>+#ifdef JS_THREADSAFE
>+PRStatus PR_CALLBACK
Ditto previous style and naming comment, plus better to avoid #ifdefs by making it return a PRStatus always, and just move the return PR_SUCCESS out of the #ifdef here:
>+ memset(&calibration, 0, sizeof(calibration));
>+ PRMJ_NowCalibrate();
>+#ifdef JS_THREADSAFE
>+ InitializeCriticalSectionAndSpinCount(&calibration.calibration_lock, CALIBRATIONLOCK_SPINCOUNT);
>+ InitializeCriticalSectionAndSpinCount(&calibration.data_lock, DATALOCK_SPINCOUNT);
>+ return PR_SUCCESS;
Just for Win3.1 (ha ha) compat, or perhaps my own sanity, you could make NowInit be a JS_STATIC_DLL_CALLBACK(void) function named prmj_NowInit (the prefix was good style because the static was removed by a definition of JS_STATIC_DLL_CALLBACK for Win3.1 -- IIRC!). But the main change I'm suggesting here, the declspec or whatever to make NowInit have the right calling convention, seems not to be necessary any longer, so take this whole comment with a grain of salt.
Nice to write Win32 code without fear of old linker or compiler brain damage!
>+#endif // defined XP_WIN
Just // XP_WIN is enough per house style.
>+Win32 pseudo code
(Psueudo-Python -- worth noting?)
>+ else:
>+ needCalibration = True
Nit: else clause is overindented one basic offset.
>+ else:
>+ returnedTime = lowres
>+ while needCalibration
> JSInt64
> PRMJ_Now(void)
> {
> #ifdef XP_OS2
> JSInt64 s, us, ms2us, s2us;
>- struct timeb b;
>+ timeb b;
Don't change #ifdef'd code you aren't testing, and do note that my injunction to use typdef'd struct names instead of struct tags applies only to our code. IIRC there is no OS2 or Unix typedef-name "timeb", so this line must remain "struct timeb b". Yay, C.
> #if defined(XP_UNIX) || defined(XP_BEOS)
>- struct timeval tv;
>+ timeval tv;
Same comment.
>+ /* For non threadsafe platforms, PRMJ_NowInit is not necessary */
>+#ifdef JS_THREADSAFE
>+ PR_CallOnce(&calibrationOnce, PRMJ_NowInit);
>+ do {
>+ if (!calibration.calibrated || needsCalibration) {
>+ MUTEX_LOCK(&calibration.calibration_lock);
>+ MUTEX_LOCK(&calibration.data_lock);
>+ /* Recalibrate only if no one else did before us */
>+ if(calibration.offset == cachedOffset) {
>+ /* Since calibration can take a while, make any other
>+ threads immediately wait */
>+ MUTEX_SETSPINCOUNT(&calibration.data_lock, 0);
Once again I'm concerned that nesting criticals and *then* trying to avoid competitive spinning is not going to save other threads from being hung out to dry for msec or tens of msec. The way to avoid this is to use even shorter criticals in conjunction with condition variables or semaphores. Was that something considered but rejected because too complex? Hard to weigh code complexity and implementation burden vs. the spinning hazard.
If my Windows ignorance is showing, and setting the spincount to 0 after entering criticals will get other CPUs to stop spinning right away, perhaps I'm worrying about too small a spin cost. How much real time is that 4096 spin-limit equal to on modern hardware?
(In reply to comment #39)
> >+ JSBool calibrated;
> This should relieve the need for a local calibrated variable in PRMJ_Now, or
> I'm misreading.
Never mind, I misread, read, then forgot to remove this comment.
Created attachment 272259 [details] [diff] [review]
Proposed solution
(In reply to comment #39)
> (From update of attachment 272213 [details] [diff] [review])
> >+ /* By wrapping a timeBegin/EndPeriod pair of calls around this loop,
> >+ the loop seems to take much less time (1 ms vs 15ms) on Vista. */
> Wild, any idea why?
Yes, timeBeginPeriod increases the kernel tick rate. The changes seems to take effect immediately on Vista, but it didn't seem to effect XP (or at least not before timeEndPeriod was called). We don't leave it on all the time because it does require more power so battery life on mobiles would be shortened (see my comments in an earlier post)
> >+ timeBeginPeriod(1);
> >+ GetSystemTimeAsFileTime(&ftStart);
> >+ do {
> >+ GetSystemTimeAsFileTime(&ft);
> >+ } while (memcmp(&ftStart,&ft, sizeof(ft)) == 0);
> Noting the spin-on-syscall for order msec here, while caller owns a critical
> section.
Unfortunate, but yes. All other threads in this function will immediately block on the critical sections while the caller owns them.
> Nice to write Win32 code without fear of old linker or compiler brain damage!
Yes, it's much cleaner. Users who want Win9x support should know that I removed some Win9x specific workaround for dates around midnight (in case they want to port my changes to 9x).
> >+/*
> >+
> >+Win32 pseudo code
> (Psueudo-Python -- worth noting?)
Noted. I had written a ton of python code the night before.
> >+ else:
> >+ needCalibration = True
> Nit: else clause is overindented one basic offset.
I should have run it through the python interpreter first :)
> >+
> > JSInt64
> > PRMJ_Now(void)
> > {
> > #ifdef XP_OS2
> > JSInt64 s, us, ms2us, s2us;
> >- struct timeb b;
> >+ timeb b;
> Don't change #ifdef'd code you aren't testing, and do note that my injunction
> to use typdef'd struct names instead of struct tags applies only to our code.
> IIRC there is no OS2 or Unix typedef-name "timeb", so this line must remain
> "struct timeb b". Yay, C.
> > #if defined(XP_UNIX) || defined(XP_BEOS)
> >- struct timeval tv;
> >+ timeval tv;
> Same comment.
I did a s/struct // over the range of my changes and I missed these. Good catch, thanks.
> >+ /* For non threadsafe platforms, PRMJ_NowInit is not necessary */
> >+#ifdef JS_THREADSAFE
> >+ PR_CallOnce(&calibrationOnce, PRMJ_NowInit);
> >+#endif
> >+ do {
> >+ if (!calibration.calibrated || needsCalibration) {
> >+ MUTEX_LOCK(&calibration.calibration_lock);
> >+ MUTEX_LOCK(&calibration.data_lock);
> >+
> >+ /* Recalibrate only if no one else did before us */
> >+ if(calibration.offset == cachedOffset) {
> >+ /* Since calibration can take a while, make any other
> >+ threads immediately wait */
> >+ MUTEX_SETSPINCOUNT(&calibration.data_lock, 0);
> Once again I'm concerned that nesting criticals and *then* trying to avoid
> competitive spinning is not going to save other threads from being hung out to
> dry for msec or tens of msec. The way to avoid this is to use even shorter
> criticals in conjunction with condition variables or semaphores. Was that
> something considered but rejected because too complex? Hard to weigh code
> complexity and implementation burden vs. the spinning hazard.
Avoiding the competitive spinning after acquiring the lock is done because doing it before didn't make as much sense to me. After acquiring the calibration lock (which has no spinning since it will always be held for 'a while'), we want to spin on the data lock in order to acquire it as fast as possible, just as most threads will do when no calibration is needed. Windows makes no guarantee about the order that threads are granted access to critical sections (or any other synchronization primitive), so I figured sleeping would decrease the chance of acquiring the lock since another thread would be scheduled which might vie for the lock and it will be spinning for it. I definitely do not want the norm to be no spinning since in the common case the data critical section will be held for a short period of time. If this becomes a worry, then the code could be modified to pull the data members from the calibration structure onto the thread's stack, release the critical section, then perform the computation, relock, update the .last field and then release.
> If my Windows ignorance is showing, and setting the spincount to 0 after
> entering criticals will get other CPUs to stop spinning right away, perhaps I'm
> worrying about too small a spin cost. How much real time is that 4096
> spin-limit equal to on modern hardware?
I don't know if setting it will cause other threads to stop spinning if they're already spinning, but I imagine that it's more likely for threads to try and enter the critical section after we've set the spin count to 0.
For those who are curious, 4096 is approximately the number of cycles that Microsoft uses for the critical section for their heap (it is mentioned in the docs for InitializeCriticalSectionWithSpinCount and a few other places).
> /be
Comment on attachment 272259 [details] [diff] [review]
Proposed solution
Looks good, thanks for all the follow-through. Only remaining thought, fodder for a followup patch at this point: should there be some metering optioinally compiled in to tell how often the machinery recalibrates, takes the slow road, etc.?
I checked Rob's patch in for him, marking this as FIXED.
With this patch building the JS shell with "make -f Makefile.ref" fails at the link stage unless I set OTHER_LIBS=winmm.lib first. Probably all config/WINNTx.y.mk files must be updated so that LIB_LINK_FLAGS includes winmm.lib?
Created attachment 272778 [details]
patch for WINNT*.mk to build shell
Built 1.8.1, 1.9.0 opt, debug shells with this. Blake, pretty please?
Comment on attachment 272778 [details]
patch for WINNT*.mk to build shell
/cvsroot/mozilla/js/src/config/WINNT4.0.mk,v <-- WINNT4.0.mk
new revision: 1.15; /cvsroot/mozilla/js/src/config/WINNT5.0.mk,v <-- WINNT5.0.mk
new revision: 1.9; /cvsroot/mozilla/js/src/config/WINNT5.1.mk,v <-- WINNT5.1.mk
new revision: 1.5; /cvsroot/mozilla/js/src/config/WINNT5.2.mk,v <-- WINNT5.2.mk
new revision: 1.4;
Thanks Seno!
/cvsroot/mozilla/js/tests/js1_5/extensions/regress-363258.js,v <-- regress-363258.js
initial revision: 1.1
Note to self: this test passes in the shell and browser on standalone physical machines with winxp installed, but on the winxp vms it passes in the shell but fails in the browser.
verified fixed 1.9.0 winxp
(In reply to comment #48)
> Note to self: this test passes in the shell and browser on standalone physical
> machines with winxp installed, but on the winxp vms it passes in the shell but
> fails in the browser.
> verified fixed 1.9.0 winxp
Out of curiosity, what's the host os and cpu of the vm?
(In reply to comment #49)
> Out of curiosity, what's the host os and cpu of the vm?
vmware esx. I don't know the cpu.
This was fixed on the 1.9.0 branch on 2007-07-16. Please don't play with the nomination flags.
Not a 1.8.1 blocker, and I really doubt this is in litmus.


text:
For an alternate suggestion, see featured items on the right.
The key to the comfort of this carefully crafted slipper is the molded footbed with built-in Tri-Planar Motion Control Technology invented by leading Australian podiatrist Phillip Vasyli. The orthotic footbed helps reclaim your foot's natural alignment with a contoured arch support and deep heel cup. The padded fabric straps indulge feet with soft microfiber lining.
Features & Benefits of Vionic with Orthaheel Technology Women's Bliss Thong Slippers:
Other Important Information About Vionic with Orthaheel Technology Women's Bliss Thong Slippers:
About Vionic with Orthaheel Technology:
Fashion-inspired in styles for every season, from sparkly thong sandals to animal-print boots. Podiatrist-designed to help relieve heel pain, leading Australian podiatrist Phillip Vasyli invented Orthaheel Technology to help provide heel pain relief while improving body alignment, posture and walking gait. Just like the tires on a car, improper alignment of feet can cause wear and tear to other parts of the body, such as the knees, hips and lower back.
Sign up for exclusive offers
Sign up to receive emails about new products and offers

subset: commoncrawl


text:
Price: $289
This item has been shown 23658 times.
You Are offerding One Brand New
CXRacing Intercooler Kit + BOV For
89-99 Nissan 240SX S13 S14
or S15 Chassis with
S13 SR20DET Swap, Front Mount Intercooler Application.
This Kit ONLY Fits S13 SR20DET Motor, don't fit S14 SR20DET Motor. But it fits All 240SX Chassis, as long as it is a S13 SR20det Swap
89-99 Nissan 240SX
Product Being Sold:
Intercooler + Piping + Silicon Hose + Clamp + BOV
This is CXRacing latest release of the S13 kit, with re-designed Hot Pipe and Better fitment, comes with BOV and BOV flange already welded on the hotpipe. This Piping Kit is a BOLT-ON kit, much easier to install and have better performance result. It is much better than any others.
Product Info and Spec:
Core Size: 23.5"x11.5"x2.75"
Overall Size: 30.75"x11.75"x3"
3" Inlet & Outlet
3" Thick core, Tube & Fin Design
Piping Kit:
Mandrel Bent Aluminum Pipe
Comes with BOV, Silicon Hoses, and T-Bolt Clamps
This Kit Comes with Blue Hoses. If you want Black hoses, just write a note on paypal note (Please be advised that without a note clearly states Black hose on paypal, Blue hoses will be shipped)


text:
Parking in WS2 8DR
Car Park on Bloxwich Road, WS2
Car Park on Station Street, WS2
Driveway on Lake Avenue, WS5
Parking Space on Britannia Road, WS1
Driveway on Broadway, WS1
Parking Space on Five Oaks Road, WV13
Parking Space on Mellish Road, WS4
Parking Space on Chapel Lane, B43
Driveway on Athlone Road, WS5
Information about parking in WS2 8DR
Looking for parking in WS2 8DR? You've come to the right place! Funnily enough, parking is what we do best - and we've got a sumptuous selection of 250 locations in WS2 8DR for you to choose from.
Our parking in WS2 8DR is up to 70% cheaper than what you'd usually pay, plus you can book your guaranteed space in advance right here - forget about feeding the parking meter.
No more fumbling for coins and no more circling the block looking for a space. As for parking tickets? You can wave goodbye to them too - if you overstay with us, you just pay for the extra time.
We're taking the pain out of parking for 1 million drivers across the UK. But don't just take our word for it - check out our latest customer reviews for WS2 8DR parking below:
"Big parking space use to park for football 10-15 minute walk to the ground " — Driveway on Broadway, WS1
"Very hood" — Driveway on , WS1
None of our delicious JustPark spaces tickle your fancy? Don't worry - we've got your back. There are plenty of other parking options available in WS2 8DR - here's the best of the rest:
Off-Street Parking
Here's a selection of nearby off-street parking options:
|Day Street
|Walsall Metropolitan Borough Council
|£1.40 / 2 hours
|12am - 11pm,
Mon - Sat
|Bate Street
|Walsall Metropolitan Borough Council
|£1.40 / 2 hours
|12am - 11pm,
Mon - Sat
|Green Lane
|Walsall Metropolitan Borough Council
|£1.40 / 2 hours
|12am - 11pm,
Mon - Sat
|Crown Wharf Shopping Park
|Crown Wharf Shopping Park
|£1.00 / hour
|6am - 6pm,
Mon - Sun
|Hatherton Road
|Walsall Metropolitan Borough Council
|£1.40 / 2 hours
|12am - 11pm,
Mon - Sat
On-Street Parking
Here's a selection of nearby on-street parking options:
|Max Stay
|Toys R Us, Oldbury, Oldbury
|£5.00 / 19 hours
|28 days
|Cornhill Street Car Park, Cornhill Street
|£0.70 / hour
|365 days
|Lower Loveday Street, Birmingham
|£3.00 / 12 hours
|84 days
|Fazeley Street, Birmingham
|£1.20 / hour
|1 day
|Albert Street, Birmingham
|£1.20 / hour
|4 days
Rent out a space
Got a spare driveway or garage in WS2 8DR? You can list your parking space for free with JustPark. It only takes a few minutes to get up and running, and you could be making money in no time. Find out more here.
Check out the JustPark app
You can now book any one of our 200,000+ JustPark spaces on the move with our mobile app - available for both iPhone and Android. View parking options, pay for a space and get directions - all with just a few taps of your phone.
Nearby Transport
- Walsall Station 0.35 miles away
- Bescot Stadium Station 1.87 miles away
- Bloxwich Station 2.22 miles away
Nearby Hospitals
- Moat Road Clinic 0.79 miles away
- Brace Street Health Centre 0.86 miles away
- Walsall Primary Care Trust 0.87 miles away
- Ida Road Clinic 0.87 miles away
- Dorothy Pattison Hospital 0.89 miles away


text:
Low Sodium Chicken Broth
|Chicken backs wings necks
|2 Pound
|Yellow onion
|1 Large, chopped
|3 Medium, peeled and chopped
|Celery stalks
|2 Large, chopped (Including Tops)
|Bay leaves
|Parsley sprigs
|4 Small
|Black peppercorns
|4 Quart
Place all the ingredients in a large heavy kettle or stockpot, set over high heat, and bring to a boil.
Adjust the heat so that the liquid bubbles gently, then skim any scum from the surface.
Cover, leaving a small crack between the kettle and the lid so that steam can escape.
Simmer the broth about 3 hours or until the flavor is well developed.
Remove from the heat and let cool slightly.
Line a large sieve with a double thickness of cheesecloth and place it over a large heatproof bowl.
Strain the broth into the bowl, cover, and let cool to room temperature.
Place the cooled broth in the refrigerator and chill for at least 3 hours.
Skim the congealed fat from the top and discard.
Ladle the broth into 1/2 pint or 1 pint plastic freezer containers to within 1/2 inch of the top.
Snap on the lids, label and date the containers, and store in the freezer for up to 6 months.
Rate It
Nutrition Rank
Nutrition Facts
Serving size: Complete recipe
Calories 2601 Calories from Fat 1487
% Daily Value*
Total Fat 165 g254.3%
Saturated Fat 45.5 g227.7%
Trans Fat 0 g
Cholesterol 708.8 mg236.3%
Sodium 822.9 mg34.3%
Total Carbohydrates 62 g20.8%
Dietary Fiber 15.5 g62%
Sugars 11.1 g
Protein 207 g413.3%
Vitamin A 633.3% Vitamin C 36.6%
Calcium 13.5% Iron 10.9%
*Based on a 2000 Calorie diet


text:
Complete IP Pty Limited
Intellectual Property, Trademarks, Trademark Registration
If assignment of a trademark, or licensing of a trademark is needed, Complete IP is fully versed in Licensing Agreements and Deeds of Assignment. We are experienced in drawing up all types of agreements, to fully protect your assets.
Print this page
Free assessment of reports - even if you did not use our firm to file your application!
Never miss your trademark renewal date with our diarised service
Keep up to date with trademark applications that may impact your business
Protect your goods and services when trading overseas
Consultation is Free of charges and obligation to proceed.
Cost effective registration and renewal services. No additional charges for issuing of renewal reminders, which most firms will charge for.
Proven success rate in the filing of trademark applications with vast experience in Australian applications and contacts in countries all around the world for international applications. Fees for filing and prosecution of applications are competitive and 'all inclusive' - there are no hidden or surprise charges!
By searching before applying for your trademark you will know in around 2 days the likelihood of successful registration, instead of having to wait the 3-4 months of government examination. Fees for our thorough search are much lower than most firms, saving you hundreds, if not thousands of dollars.
Number one benefit of this service is that it is FREE - both of cost and obligation.
Create your free Hotfrog business profile
Follow Hotfrog on:
Share on:
Hotfrog Small Business Hub


text:
Is Dexon Veneer incorrect or missing key business information? Update your Hotfrog listing today.
Contact details
Are these details correct?
Is Dexon Veneer in 74 Sungei Kadut St 1 Sungei Kadut Industrial Estate, Singapore 729374 your business? Claim your listing and attract more leads by adding more content, photos and other business details.
Small Business Hub
Sharing tips, ideas and advice to help grow your small business.
Create your free Hotfrog business profile
Follow Hotfrog on:
Share on:
Hotfrog Small Business Hub


text:
Bibliography(Great Authors of World Literature, Critical Edition)
Althusser, Louis. "Freud and Lacan." In Lenin and Philosophy, and Other Essays. Translated by Ben Brewster. 1971. Reprint. New York: Monthly Review Press, 2001. A seminal Marxist literary theorist discusses Lacanian psychoanalysis and art.
Benvenuto, Bice, and Roger Kennedy. The Works of Jacques Lacan: An Introduction. New York: St. Martin's Press, 1986. A straightforward, chronologically oriented discussion of Jacques Lacan's key writings from his early years until his death.
Bowie, Malcolm. "Jacques Lacan." In Structuralism and Since: From Lévi-Strauss to Derrida, edited by John Sturrock. Oxford, England: Oxford University Press, 1979. This essay provides a brief introduction to Lacan's thought and is a good place to begin reading about him.
Clark, Michael. Jacques Lacan: An Annotated Bibliography. New York: Garland, 1988. A good guide to the many Lacanian studies, which also contains biographical information and its own introduction to Lacan's thought.
Evans, Dylan. An Introductory Dictionary of Lacanian Psychoanalysis. London: Routledge, 1996. A lucid explanation of many of Lacan's technical terms, how he came to change them during his career, and some of his influences.
Feldstein, Richard, Bruce Fink, and Maire Jaanus,...
(The entire section is 536 words.)
Biography(Great Authors of World Literature, Critical Edition)
The literary genre favored by Jacques Marie Émile Lacan (luh-kahn) was the academic lecture, into which he mixed the forms of psychoanalytic discourse, academic rhetoric, philosophy, literary criticism, and poetry. It was largely through the spoken word, both as psychoanalyst and teacher, that Lacan was able to revise radically the status of Sigmund Freud's writings in French culture, in the discipline of psychoanalysis, and in the practice of literary criticism. Lacan was born in Paris, son of Alfred Lacan, a businessman, and Émilie Baudry. Lacan's attendance at a Jesuit school for his primary education is blamed by some for the mysticism and obscurity of his later thought. Surrealism, which openly acknowledged its debt to Freud in emphasizing the unconscious sources of artistic production, interested Lacan more than religion; he associated with poets and painters such as Salvador Dalí during his student days, and among his earliest publications were contributions to the Surrealist journal Minotaure. Thus Lacan's interest in psychiatry, for which he received a doctorate in 1932, seemed to grow out of an interest in artistic and cultural processes rather than an interest in medicine—although he did receive medical training. This conflict of priorities between medical and linguistic theories of the unconscious, always the subject of dissension between Lacan and other analysts, led him to form a secessionist French Psychoanalytic School in 1953.
In the same year, at the meeting of the International Psychoanalytic Society in Rome, Lacan directly confronted both the ego psychologists and the medical personnel with one of his most important lectures, The Language of the Self: The Function of Language in Psychoanalysis. Besides excoriating Lacan's colleagues, this lecture brings together many of Lacan's basic ideas: that psychoanalysis is based in the discourse of the patient—or more accurately, in the dialectic between analyst and patient—rather than in his physiology; that the ego is a symptom of rather than a source of strength for the patient; and that three basic orders form the human subject, the Imaginary, the Symbolic, and the Real. Interestingly, the lecture ends with the same quotation from the Upanishads that the poet T. S. Eliot had used to close The Waste Land (1922): "Damyata, Datta, Dayadhvam" ("Submission, Gift, Grace").
For three decades, Lacan lectured, worked, and trained analysts far from the public eye, at the Hôpital Sainte-Anne in Paris. Several events in the mid-1960's suddenly made Lacan a household name. First, in 1964, the French Psychoanalytic School, in order to remain within the International Psychoanalytic Society, which was unhappy with Lacan, expelled its cofounder; Lacan responded by forming the École Freudienne de Paris and finding a new lecture hall at the École Normale Superieure, where he began to reach a much broader audience of students,...
(The entire section is 1208 words.)


text: By Evette D. Champion Many Americans have grown tired of "working for the man" and dreamed about starting their own business. If you ever decide to take the leap and create your own business, there are some things that you need to take into consideration before investing thousands of dollars into your start up. When […] Source: An attorney gives the three "I"s of starting a business – Financial JuneteenthContinue Reading... No Comments.


text:
In the Western Downs of Queensland there lies a special property – The Stiks. Sculptor Guy Breay, his wife Jan and a host of Australian wild life live in this native forest sanctuary.
Sculptures and Carving in Wood
|'Deepavali Mythri' The
name is derived from "Deepavali" which is the Hindu festival of lights and
"Mythri" which means friendship. It is carved from a salvaged Flame She Oak tree trunk and spiraling root system.
"A Planter's Reflections" carved from 5 varieties of salvaged tree stumps.
These are examples of Guy's styles, contrasting the sensuous, polished curves, with the rough, natural irregularities of these rare and beautiful Western Downs timbers.
The main source
of Guy's inspiration is in the natural shape, texture and colours of the
timber with which he works. Guy's carvings are also echoes of his life
in India
and Papua, places he and Jan have visited and friends they
have met.
Guy's latest pieces...


text:
Results 1 to 1 of 1
- 11-08-2012, 11:24 PM Thread Author #1
- Posts
- 63 Posts
- Global Posts
- 269 Global Posts
- Mentioned
- 0 Post(s)
- Tagged
- 0 Thread(s)
Does the Huawei Mediapad 10 have a hide-able Nav Bar?
Hi guys, just wondering the above after I looked at Engadgets review. They make no mention of this, but if you look at the device screenshots, theres a face-down arrow, which I presume must be to hide the nav bar? If real, this is amazing...I've been wanting to have the ability to hide the nav bar while doing things like playing games, or web browsing.
Here's the link: Huawei MediaPad 10 review: test-driving the company's first 10-inch tablet -- Engadget
Let me know what you guys think is the purpose of the face-down arrow on the nav bar,
Similar Threads
HELP -- Does the EVO 4G LTE have poor 3G performance?By crutnacker in forum HTC EVO 4G LTEReplies: 13Last Post: 06-04-2013, 12:54 AM
When using the Skype app on GNex, does the built-in microphone have background noise cancellation?By badkitties in forum Verizon Galaxy NexusReplies: 0Last Post: 09-22-2012, 02:27 PM
Does the Evo 4G LTE have HDMI out?By Jaggrey in forum HTC EVO 4G LTEReplies: 8Last Post: 04-09-2012, 06:44 PM
Does the Galaxy Nexus really have 1gb of memory?By Kancerstick in forum Verizon Galaxy NexusReplies: 5Last Post: 12-23-2011, 04:00 AM
Wow does the Droid X really have 8GB for app storage?!?!By reecendevlin in forum Motorola Droid XReplies: 5Last Post: 08-18-2010, 04:23 AM


text:
The Googleplex is located between Charleston Road, Amphitheatre Parkway, and Shoreline Boulevard in north Mountain View, California close to the Shoreline Park wetlands. Employees living in San Francisco or the East Bay may take a wifi-enabled Google subsidized shuttle to and from work. It is powered by biodiesel.
Neighbors of the Googleplex include Alza Plaza to the west; Shoreline Amphitheatre to the north; Intuit to the northwest and Century Theatres, Microsoft Corporation's Silicon Valley research complex, and the Computer History Museum to the south. Moffett Field lies nearby to the east.
The four core buildings, totaling 47,038 square meters (506,310 sq ft), were built for and originally occupied by Silicon Graphics (SGI). The office space and corporate campus is located within a larger 26-acre (110,000 m2) site that contains Charleston Park, a 5-acre (20,000 m2) public park; improved access to Permanente Creek; and public trails that connect the corporate site to Shoreline Park and the Bay Trail. The project, launched in 1994 to reclaim a former industrial brownfield, was a creative collaboration between SGI, STUDIOS Architecture in San Francisco, SWA Group of San Francisco and Sausalito, and the Planning and Community Development Agency of the City of Mountain View. The objective was to develop in complementary fashion the privately-owned corporate headquarters and adjoining public greenspace. Key design decisions placed parking for nearly 2000 cars underground, enabling SWA to integrate the two open spaces with water features, shallow pools, fountains, pathways, and plazas. The project was completed in 1997. The ASLA noted in 1999 that the SGI project was a significant departure from typical corporate campuses, challenging conventional thinking about private and public space.
this is interior of Googleplex
A lifeguard sits on duty as an employee works out in one of two swim-in-place pools at Google's headquarters.
We already knew that working for Google had certain advantages, but, believe me, this giant of the search motor takes the welfare of its employees seriously … as shown by this decompression (stress) capsule that is impermeable to sound and light …
Moving around: A slide allows quick access from different floors . . . There are also poles available . . . they are similar to the ones used in fire stations .
Food . Employees can eat all they want from a vast choice of food and drink .
Work Station: Each employee has at least two large screens. There are 4-6 'Zooglers' per office .
INOVATION: Large boards are available just about everywere because 'ideas don't always come when seated in the office' says one of Googles managers .
LEISURE . Pool tables, video games etc. are available in many areas .
Communication . . . On each floor, there are private cabin areas where employees can attend to personal affairs ..
Technical Support: Problem with your computer ? No problem . . . Bring it to this area where drinks are available while it is being fixed . . .
Health: Professional masseurs (eusses) available .
REST . . . This room provides massage chairs that you control . . . while you view relaxing aquariums . . . . !!!
Ambiance . . . There are many books in this library . . . even some about programming !!
(source: http://www.timeidol.com/life-googleplex/)


text:
Let's play again, Dribbblers.
Use these opening quotes (set in Cooper Black) in a rebound, and the winner will receive a free official Dribbble t-shirt and sticker. And be the envy of millions. Er, dozens.
The rebound with the most likes as of Thursday at 12pm EST will hereby be declared the champ.
Good luck, type fans!
keyboard shortcuts:
L or F like
post comment
Show and tell for designers
What are you working on? Dribbble is a community of designers sharing screenshots of their work, process, and projects.
Copyright © 2009–2017 Dribbble LLC. All screenshots © their respective owners. Shipped from Salem, Mass. USA.


text:
Shots Made Simple
Injections can seem scary at first, but most people quickly get used to them. The thin, small-gauge needles available today are specially coated and extremely sharp, so they slide easily into the skin with minimal pain. With a little practice and attention to a few details, shots soon become just another problem-free part of your daily routine.
When it comes to deciding where to inject, you have plenty of options. Anyplace that you have a layer of fat just below the skin is fair game — the abdomen, the tops and outer sides of your thighs, your buttocks, and your upper arms. But the allaround winner is the abdomen, which usually has the most ample folds of fat and absorbs insulin faster and more consistently than other areas do.
As a rule, you shouldn't inject in the same site from one shot to the next. This can make the skin harden, create thick lumps, or cause small indentations to form. But neither do you want to move to a new part of the body with each shot, since insulin is absorbed more slowly in some areas than others, which would make it tougher to keep the effects of your injections consistent. Solution: Inject in the same general area, but place consecutive shots about an inch away from each other, rotating the sites as you go. If you're injecting at several different times of day, you might want to take, say, your morning shots in one area of the body and your evening shots in another, but still rotate the shots at those times within their designated areas.
Thanks! You're on our list.
And about to get a whole lot healthier.
Some people like to travel by train because it combines the slowness of a car with the cramped public exposure of an airplane.
Dennis Miller
I think my pilot was a little inexperienced. We were sitting on the runway, and he said, "OK, folks, we're gonna be taking off in a just few—whoa! Here we go."
Kevin Nealon
"I can't wait until your vacation is over." —Everyone following you on Instagram
A man knocked on my door and asked for a donation toward the local swimming pool. So I gave him a glass of water.
Comedian Greg Davies
Just found the worst page in the entire dictionary. What I saw was disgraceful, disgusting, dishonest, and disingenuous.
Client: We need you to log in to the YouTube and make all our company videos viral.
From clientsfromhell.net
My cat just walked up to the paper shredder and said, "Teach me everything you know."
"Just because you can't dance doesn't mean you shouldn't dance." —Alcohol
@yoyoha (Josh Hara)
My parents didn't want to move to Florida, but they turned 60 and that's the law.
—Jerry Seinfeld
Q: What do you call an Amish guy with his hand in a horse's mouth?
A: A mechanic.
More About Everyday Wellness
7 Hidden Health Dangers of Spring Cleaning
Put down that feather duster! Before you start scrubbing your home from top to bottom, take an inventory of cleaning products you have on hand. Some of the most common cleaning products used in homes could have negative consequences on your health.


text:
Julian Hodge Institute of Applied Macroeconomics
Associated with the Economics section
In May 1999, Cardiff Business School and Julian Hodge Bank announced a major new initiative, the establishment of the Julian Hodge Institute of Applied Macroeconomics. The main aim of the Institute is to carry out research into the behaviour of the UK economy, and to study in particular its relationship with the other economies of Europe. This research has been given especial relevance by the ongoing discussions on the extra powers regularly requested by the European Union and also by the recent crisis in the eurozone. The Institute's research work further extends across international trade, money and banking, international finance and econometrics, in a collaboration between around twenty academics, mostly in Cardiff, and some thirty PhD students.
The institute's director since it was founded has been Professor Patrick Minford, of Cardiff Business School, who is also the Economic Adviser to Julian Hodge Bank. Apart from its research projects the institute carries on the forecasting and modelling work which Minford began at Liverpool University and has been based mainly in Cardiff for more than a decade, producing forecasts and policy analysis of the UK and other major economies.
Co-ordinatorView all
Professor Patrick Minford
Professor of Applied Economics, Cardiff Business School
- Email:
- email@example.com
- Telephone:
- +44 (0)29 208 75728
- Location:
- E26, Aberconway Building
Research HighlightsView all
European Monetary Forum
On April 4th and 5th, the Julian Hodge Institute of Applied Macroeconomics hosts the European Monetary Forum.


text:
1993 Beneteau Beneteau Oceanis 351
42 cours des quais
La Trinite sur Mer
Thank You
Your form has been submitted successfully. A representative will be in touch shortly
Request cannot be completed
You may have entered incorrect information or server is temporarily down. Please reload this page and try again later.


text:
Inn at Grand Glaize, Osage Beach
- Free WiFi and free parking
Main amenities
- 153 guestrooms
- Restaurant and bar/lounge
- Seasonal outdoor pool
- Health club
- 3 meeting rooms
- 24-hour front desk
- Coffee/tea in a common area
- Air conditioning
- Daily housekeeping
- Arcade/game room
- Computer station
- Lobby fireplace
What's around
- Lazer Force Lazer Tag Zone (1 mi / 1.6 km)
- Professional Massage Therapy Center (1 mi / 1.6 km)
- Pirate's Cove Adventure Golf (1.8 mi / 2.9 km)
- Dogwood Hills Golf Club (2 mi / 3.2 km)
- Sycamore Creek Golf Club (2.9 mi / 4.7 km)
Inn at Grand Glaize, Osage Beachfrom €67
- Grand Room
- Standard Room, 1 King Bed, Non Smoking, No View
- Standard Room, 1 King Bed, Non Smoking, Lake View
- Standard Room, 2 Double Beds, Non Smoking, No View
- Standard Room, 2 Queen Beds, Non Smoking, Lake View
- Standard Room, 2 Queen Beds, Non Smoking, No View
More great choices
At a glance
Key facts
Hotel size
- This hotel has 153 rooms
- This hotel is arranged over 5 floors
- Check-in time starts at 4 PM
- Check-out time is 11 AM
Required at check in
- Credit card or cash deposit required
- Government-issued photo ID required
- Minimum check-in age is 21
Travelling with others
- Pets not allowed
- Free WiFi in public areas
- Free WiFi in rooms
- Free self parking
- Free RV/bus/truck parking
Nearby Two Star Osage Beach hotels
In the hotel
- Restaurant
- Bar/lounge
- Poolside bar
- Coffee/tea in a common area
- Barbecue grills
- Outdoor seasonal pool
- Health club
- Spa tub
- Sauna
- Fishing on site
- Arcade/game room
- Number of meeting rooms - 3
- Conference space size (feet) - 2086
- Conference space size (meters) - 188
- Computer station
- 24-hour front desk
- Laundry facilities
- Free newspapers in lobby
- Number of buildings/towers - 1
- Year Built 1985
- Elevator/lift
- ATM/banking
- Fireplace in lobby
- Television in common areas
In the room
- Air conditioning
- Coffee/tea maker
- Iron/ironing board
- Partially open bathroom
- Shower/tub combination
- Free toiletries
- Hair dryer
- Cable/satellite TV channels
- Free WiFi
- Refrigerator (on request)
- Daily housekeeping
- Connecting/adjoining rooms available
Top Osage Beach hotels
Nearby hotels
Recommended hotels
Inn at Grand Glaize, Osage Beach's small print
Also known as
- Glaize
- Inn At Grand Glaize Lake Of The Ozarks/Osage Beach, MO
- Inn Grand Glaize Hotel Osage Beach
- Grand Glaize
- Grand Glaize Inn
- Grand Glaize Osage Beach
- Inn Grand Glaize
- Inn Grand Glaize Osage Beach
- At Grand Glaize Hotel
- Hotel At Grand Glaize
- Inn At Grand Glaize Hotel Osage Beach
The property has connecting/adjoining rooms, which are subject to availability and can be requested by contacting the property using the number on the booking confirmation.
Optional extras
Rollaway beds are available for an additional charge
We have included all charges provided to us by this hotel. However, charges can vary, for example, based on length of stay or the room you book.
Recent reviews
Good 3.2 /5 from 286 reviews
Very disappointing. Staff was friendly however room was very outdated. Wallpaper peeling, dust under coffee table and door was trashed. Refrigerator was very noisy and television remote didn't work. Complained and it wasn't any better. Stayed when it was 45 degrees and room never got warm enough. Won't stay there again. Staff was very friendly and tried!
Out of all our bookings through Hotel.com, our stay at the Glaze was by far the worst. We booked two rooms for 2 nights. We didnt stay at the hotel during the day time as we had other places to visit in the area. First night at the hotel, there was lots of partying people hanging out. We could hear the music thumping as we walked into the hotel club next to the lobby. First night we decided to take the kids to the pool. Young adults were smoking cigarettes and drinking at the pool. We stayed at the pool for about 15 mins and left. We then decided to try the hot tub. It was not just hot but quite musty and had a bad stench. We left the hot tub after 2-3 minutes. I showered before I went to bed. Took off my bathing suit and found a blonde and red stand of hair on my stomach from the pool and one of them was curly. I have black hair. I just about threw up while I was showering. That night we went to bed we heard someone music thumping all night. Next day, wore my stinky swimsuit to Surf City. Second night, made a complaint about the music. A guy came to our room to listen to the music, he said he had bad hearing so he went and got another guy to listen and finally agreed someone was turning up their music really loud. Around 3 am the music finally stopped. My brother who was in the other room with his familyght he heard his neigbors cursing all night and the next night the new neighbors moaning all night long inappriately. This is not a kid friendly place.
The desk staff (one individual ) was rather abrupt, never actually looked up at us, and seemed bothered that I asked where best to park for our room location. The room seemed clean enough, but the sheets, while fresh, had seen younger days, and the vinyl armchair was missing a large swath of fabric from one arm, exposing the stuffing about elbow to wrist length. Caulk in the bath/shower was poorly done - usable but off putting. The heat lamp socket had an LED bulb. A cost cutting effort, no doubt, but better to abandon and cover the socket than to advertise financial concerns of the hotel... Restaurant food good, not great, wine was bowling alley grade... All in all, an ok place to sleep, but not quiet between rooms, either...
Door man was awesome. Location for me to use public beach #2 was perfect. Bathroom could use some renovations as the tub and sink had stains on them that didn't look like they could be removed. Bed seemed clean and was comfortable.
The a/c was very loud but worked. The tv was nice. Remote didn't have working batteries and was duct taped together. There was a Jell-O shot in the mini fridge when we arrived from previous guests I'll assume. Front desk staff was polite. Trash bagged up was in hallways for hours. Close to shopping and lakefront restaurants. This place needs renovation desperately.
Is the description of this hotel not correct? Tell us


text:
Encouraging social skills in someone with Alzheimer's
Before bringing her mother to the adult day program, Nancy was invited to spend the morning getting to know the other participants, observing and joining in the activities. As she spent time singing, cooking and reading the newspaper with the participants, she noticed one person who seemed especially skilled at getting everyone involved. Nancy decided she would join this person at coffee break to learn more about this energetic volunteer. She began by complimenting her on her ability to generate enthusiasm and participation. Nancy then said, "I'm sorry, but I didn't catch your name." A look of panic overtook the "volunteer" and she said, "I forget." In fact, this person with the exceptional social skills was herself a program participant, and was so impaired that she couldn't remember her own name.
For this person, and others with Alzheimer's and related dementias, overlearned social skills persist until death (Bowlby, 1993; Mace 1990; Reisburg 1983; Zgola 1987). This is a particular asset in the home setting, where environmental and other familiar cues support social skills. The home caregiver, however, may be so preoccupied with the overwhelming losses and deficits in other skills as to overlook this asset. It may be hard for family members to appreciate that while the person is no longer able to, for example, prepare lunch for a friend, greeting the friend at the door and serving as a hostess at the table is still possible. Such occasions frequently enable the impaired person to demonstrate skills thought long forgotten. It be must remembered, however, that this will require a great deal of energy and the person may need extra rest and quiet afterwards. While social occasions help to support self esteem, there must be a balance. Large and noisy gatherings may overwhelm the person with too much stimulation, and even lead to a catastrophic reaction.
It is important to note that both verbal and non-verbal social skills are a continuing ability which should be supported. The more socially skilled the person has been, the more these skills can be called upon. However, basic adult social greetings, or what might be called cocktail party conversation can be called forth from most. Some sample phrases might be "nice day", "pretty dress", or "delicious coffee".
The handshake is also an excellent example. With proper cuing, even individuals in the advanced stages respond by shaking an outstretched hand, held out in greeting. If the greeter smiles warmly and asks, "How are you?" there is more often than not a smile and a "Fine, thank you" in return.
The simple handshake is a wonderful way to accomplish many ends. Through touch, perhaps clasping the outside of the hand as well, the greeter communicates caring. It serves to bring the individual to attention, initiates eye contact, and increase alertness in an adult, socially appropriate and familiar way. It causes the person to initiate movement and perhaps speech. And above all, it supports self-esteem by acknowledging the person in a familiar, adult way.
By supporting and encouraging sociability this persisting skill can help compensate for losses in memory, reasoning, and language. Returning a standard greeting with a generic social response doesn't require remembering the person's name and, because the phrase is an overlearned one, it doesn't require more complex verbal and reasoning skills.
In a typical scenario, a family member might say, "Mom, this is our old friend, Wayne, visiting from Hamilton, Ontario." The mother could then reply, "I am so glad to see you again, how are you?" The family member provided the cues, so the mother wasn't struggling for the name, and standard social responses were made. The mother was happy to be able to participate in welcoming the old friend and was saved the embarrassment of admitting to not recognizing him. Dignity and adult function were preserved.
While these skills must be encouraged, it is also important that family and professional caregivers not mistake social skills for the persistence of higher skills, such as memory. Many individuals with ADRD, especially in the early and middle stages, cover their losses by relying on these skills. This is an excellent coping mechanism in social situations, but should not be mistaken for actual skill in vital areas of self-maintenance such as nutrition (e.g. "No thank you, I already had a delicious supper.") taking medication, or safety.
In the preceding illustration, the visitor was impressed to have been remembered and thought that the mother's memory must be quite good. After he left the room, she quietly said, "Who is that nice man?"
Bowlby, C. (1993). Therapeutic activities with persons disabled by Alzheimer's disease and related disorders. Gaithersburg, MD: Apsen Publishers.
Mace, N. (Ed.) (1990). Dementia care: Patient, family and community. Baltimore, MD: Johns Hopkins University Press.
Reisburg, B. (Ed.) (1983). Alzheimer's Disease: The standard reference. New York: The Free Press.
Zgola, Y. (1987). Doing things: A guide to programming activities for persons with Alzheimer's Disease and related disorders. Baltimore, MD: Johns Hopkins University Press.
Zgola, Y. (1992). The tea group: A special programme for the "difficult" resident in long term care. Physical and Occupational Therapy in Geriatrics, 104 (4): 1-16.
Excerpt from
Canadian Association of Occupational Therapists & Alzheimer Society of Canada. (1998). Living at home with Alzheimer's disease and related dementias: A manual of resources, references and information. Ottawa, ON: CAOT Publications ACE.
Available from CAOT at 1 (800) 434-2268, ext. 263 or by e-mail.
This book was researched and written for CAOT in conjunction with the Alzheimer Society of Canada by Carol Bowlby Sifton. It is a guide for both caregivers and professionals on how to work collaboratively to enable people with Alzheimer's disease and related dementias (ADRD) to live at home for as long as possible.
Other excerpts from the book appear on the following skills for the job of living tip sheets:
- Using the senses to connect with someone who has Alzheimer's
- Emotional awareness and emotional memory
Related consumer tip sheet: Reducing Caregiver Stress
Bowlby-Sifton, C. (1997). The dementia story: Challenging the art of occupational therapy. Canadian Journal of Occupational Therapy, 64, 3-6.
The art of occupational therapy may be understood as getting in touch with the life story of our clients, and the science, finding ways to enable the continuing unfolding of that story. The story of Frank and Emily is an illumination of the ways in which occupational therapy practice can participate in this unfolding, with persons with Alzheimer's Disease and Related Dementias (ADRD).
For the full paper in Acrobat PDF format download ADRDBowlby97.pdf
Book Reviews
Keeping busy: A Handbook of Activities for Persons with Dementia. (1995)
James R. Dowling
The Johns Hopkins University Press
2715 N. Charles St.
Baltimore, Maryland,
178 pages
Keeping Busy is based on the experiences at the Alzheimer's Care Centre in Maine, USA as described by the author, James Dowling. This is a residential care facility for individuals with Alzheimer disease and Related Dementias. The intent of the book is to provide practical ideas and share successes and failures for others to use. It would be of greatest benefit to caregivers in established residential settings looking for new programming ideas, as well as those implementing a new programme.
Dowling is described as an activity specialist, who frequently conducts workshops on behaviour management of persons with dementia. He demonstrates an empathy toward the need of the older adult with cognitive impairment and an obvious enthusiasm for his work, however the ideas presented are not unique. The principles are congruent with the practice of occupational therapy, with an emphasis on purposeful activity and task breakdown to meet individual client needs. Activity is described for a person with dementia as "everything a person does" with the "most valuable dementia activity as work that is tied to the life of the home".
The book is divided into 12 chapters, focusing on different activities such as music, cooking, gardening, art and exercise, all with many practical suggestions, and includes a variety of anecdotal stories about certain residents. Appendices include an overview of Reality Orientation, a daily activity schedule and the five basic steps of Remotivation Therapy. There is a list of (American) resources, a bibliography and a well-organized index.
Although this book reiterates much in the field of programming for the cognitively impaired, it does provide a broad overview in an easy to read format.
— By occupational therapist Catherine Brock
Other sources of information
The Alzheimer Society of Canada has a nation-wide network of provincial and local organizations that provides support, educational resources and programs for people with Alzheimer's Disease and their caregivers. Visit their web site at http://www.alzheimer.ca
For a copy of the brochures "10 Signs of Caregiver Stress" and "Reducing Caregiving Stress" call your local Alzheimer Society or 1 (800) 616-8816.
- Older Driver Safety
- Completing a Disability Tax Credit Form
- Quick Tips
- Arthritis
- Backpacks: Beasts of Burden
- Barrier-Free Homes
- Buying Special Equipment
- Children with Learning Disabilities
- Coping With Loss
- Don't Slip Now!
- Emotional awareness and emotional memory
- Encouraging social skills in someone with Alzheimer's
- Energy for Everyday Living
- Ergonomics at the Office
- Headrests
- Home Safe Home
- Last-minute gift ideas for a loved one who needs a helping hand
- Last-minute reminders for enjoying the holiday season
- Making the Most of Our Memory
- Managing Multiple Sclerosis
- Parenting
- Pre-Writing Skills for Children Under Five
- Putting Balance Into Your Life
- Re-discover some meaning in your life
- Reducing Caregiver Stress
- Quick Tips: Improving your Sleep
- Safe at home with Alzheimer's Disease and Related Dementias
- School Agendas: Enabling Children to Manage their Time
- Take a Moment Strategies for Canadians The
- Take Heart. You can still do what's important to you!
- Tips for your Ticker
- Using the senses to connect with someone who has Alzheimer's
- Stories and Fact Sheets
- SAS Resources
- Teachers and Parents
- Tools for Living Well - Pamphlets


text:
× View Today's Deals
You missed it This great deal for Jet's Pizza is over. But don't despair, we've got more great deals every day.
Related Deals That You May Like
Nutrisystem Dinners My Way® 28-Day Plan
Cobb County$239$139.99
Will, Living Will, and Power of Attorney Package
Cobb County$99$29.99
DNA Self Discovery Starter Map Kit
Cobb County$89$29.99
Pouch Couch
$40 to Spend on Inflatable Couch Products
Cobb County$40$20
Jet's Pizza
Savor a Slice That's Loaded with Pepperoni, Mushrooms, and More
deal over
deal over!
While those who are good at cooking turn to generations-old family recipes first, the non-chefs among us are better off trusting the experts at Jet's Pizza -- part of a franchise that's been satisfying diners since 1978:
• $10 for $20 to spend on food and drink
• Pizza options include deep-dish and hand-tossed crust topped with choice ingredients
• Menu also features hearty subs and boneless wings in buffalo, barbecue, or another sauce
• Convenient Marietta location open as late as 11 p.m. daily
PAID VALUE EXPIRES ON February 24, 2022
PROMOTIONAL VALUE EXPIRES ON April 3, 2013


text:
Join FREE | Login
+ Celebrations
+ How-To
+ Deals
Light and Easy Hamburger Stroganoff
Beef and Noodle Skillet
Potato and Ground Beef Gratin
Nacho Beef Skillet
Ground Beef and Mushroom Carbonara
Ground Beef "Totchos"
Serve your family this 25-minute beef, kasha and vegetables dish with taco seasoning flavor – perfect for a Mexican dinner night.
This tasty main dish combines whole-grain kasha with beef and uses familiar Mexican ingredients. It's a great transition recipe, when you're just starting to eat grains. You can also use this mixture as a filling for tortillas.
Whole Grain Serving: 1/2
© 2016 ®/TM General Mills All Rights Reserved


text:
Related Sites:
|Track Your
Family History
|Forget No
|Fun / Fast / Friendly.
Easy to use tutorials.
|for Windows XP / Vista / 7 / 8 / 10
|FAMware is all about the Family (including Family History and Genealogy)!
(click this link to order download - install immediately)
"a myriad of wonderful reports"
Select a person from your database at the left. Click a toolbar button at the top.
In this example the [Ancestor] toolbar button was selected to display David's ancestors on the right:
(Click the Toolbar area below for a complete description of the toolbar buttons)
In this example the [Link] toolbar button was selected to display the family link window.
With David's father moved to the "PERSON" position, a family photo is displayed at the left:
With David's brother Roger moved to the "PERSON" position, this link window is displayed.
Click "PERSON" (above) for fast Data Entry of Roger Atwood:
Family Software has all the features you need to establish a complete genealogy and family history system.
Click here to download and install FAMware.
Related Sites:


text: Ford Fusion: The Ultimate Buyer's GuideJalopnik Staff10/06/15 12:00pm62EditPromoteGo to permalinkThe Ford Fusion is the European mid-sizer we demanded, with a snout borrowed from a more expensive car. What do you need to know before you buy a Ford Fusion? Don't worry, we'll tell you everything right here in the Ultimate Buyer's Guide.


text:
The mission of the Administrative Core is to effectively manage the Center to support compelling scientific research and effective outreach programs in environmental health science. This mission will be accomplished by pursuing the following objectives: ? Actively identify and support new areas of collaboration and promising new directions for scientific research and public outreach activities of the Center ? Evaluate the Center's activities, membership and future plans through rigorous internal and external review ? Support and develop Facility Cores to meet evolving research needs of Center Investigators ? Enhance the career development of Center Investigators ? Coordinate the Center's activities with NIEHS, other Centers, University Institutes and departments to maximize efficiency and catalyze new research and educational outreach venues
|Cooper, T K; Murray, K N; Spagnoli, S et al. (2015) Primary intestinal and vertebral chordomas in laboratory zebrafish (Danio rerio). Vet Pathol 52:388-92
|Siddens, Lisbeth K; Krueger, Sharon K; Henderson, Marilyn C et al. (2014) Mammalian flavin-containing monooxygenase (FMO) as a source of hydrogen peroxide. Biochem Pharmacol 89:141-7
|Vasil'ev, Yury V; Tzeng, Shin-Chen; Huang, Lin et al. (2014) Protein modifications by electrophilic lipoxidation products: adduct formation, chemical strategies and tandem mass spectrometry for their detection and identification. Mass Spectrom Rev 33:157-82
|Zhang, Jie; He, Yunteng; Freund, William M et al. (2014) Electron Diffraction of Superfluid Helium Droplets. J Phys Chem Lett 5:1801-1805
|Barsamian, Adam L; Perkins, Matt J; Field, Jennifer A et al. (2014) Regioselective syntheses of [13C]4-labelled sodium 1-carboxy-2-(2-ethylhexyloxycarbonyl)ethanesulfonate and sodium 2-carboxy-1-(2-ethylhexyloxycarbonyl)ethanesulfonate from [13C]4-maleic anhydride. J Labelled Comp Radiopharm 57:397-401
|Miller, Galen W; Truong, Lisa; Barton, Carrie L et al. (2014) The influences of parental diet and vitamin E intake on the embryonic zebrafish transcriptome. Comp Biochem Physiol Part D Genomics Proteomics 10:22-9
|Gouthu, Satyanarayana; O'Neil, Shawn T; Di, Yanming et al. (2014) A comparative study of ripening among berries of the grape cluster reveals an altered transcriptional programme and enhanced ripening rate in delayed berries. J Exp Bot 65:5889-902
|Anderson, Kim A; Seck, Dogo; Hobbie, Kevin A et al. (2014) Passive sampling devices enable capacity building and characterization of bioavailable pesticide along the Niger, Senegal and Bani Rivers of Africa. Philos Trans R Soc Lond B Biol Sci 369:20130110
|Lebold, Katie M; Traber, Maret G (2014) Interactions between *-tocopherol, polyunsaturated fatty acids, and lipoxygenases during embryogenesis. Free Radic Biol Med 66:13-9
|Padmanarayana, Murugesh; Hams, Nicole; Speight, Lee C et al. (2014) Characterization of the lipid binding properties of Otoferlin reveals specific interactions between PI(4,5)P2 and the C2C and C2F domains. Biochemistry 53:5023-33
Showing the most recent 10 out of 403 publications


text:
Business Arts and Entertainment Photography Photographers Portrait North America United States Illinois
This category is for photographers or studios located in Illinois who specialize in producing portraits for sale to consumers. Generally, that consumer is also either the subject of the photographs or a relative of the person[s] being photographed.
Related categories 1
Sites 15
Bob Coscarelli, Photographer
Bob Coscarelli has been a Chicago based commercial photographer since 1989. He specializes in "People" photography in the studio and on-location. He works with Ad Agencies and Design firms across the United States.
Bruce and Deb Solko Photography and Video
Elegant wedding and portrait photography and videography in the northern Illinois and southern Wisconsin area.
Dale Horn Photography
A portrait studio located in Hawthorn Woods, IL, a Northwest Chicago suburb.
Duron Studio Photography's Website
Provide professional photography and photographic services.
Jonathan James Photography
A portrait photographer based in Chicago.
Kramer Photographers
Kramer Photographers, specializing in Wedding Photography, Fine Portraits, Family Portraits and Commercial Photography.
Michael Calas
Specializing in actor headshots and commercial photography. Includes profile, portfolio and testimonials. [Chicago]
Neil Gates Photography
Galleries include, children, weddings, families, and business.
Photography By Lee
Specializes in family, individual, children's and senior portraiture as well as model portfolios and glamour photography. Feature galleries and information about seminars, a portrait tour and tips for getting good images. Based in Washington.
Portraits by Thomas Balsamo
Professional custom portraiture of families, executives, individuals, children and couples.
Rick Mitchell Photography
Portrait, and commercial photography. Professional head shots a specialty; retouching available. Located in Chicago.
Robert Kelly Studio
Offers commercial, children's, family, pet, and wedding photography .
Sabrina Rios Photography
Chicago based photographer, specializing in portraiture of music bands and children.
Valdes Photography
Portraiture for weddings, egagements, family sittings, special occasions, school, children, and corporate use.
Wancket Studios
Portraiture crafted to your choice of style and personal statement.
Last update:October 1, 2016 at 9:35:05 UTC
All Languages


text:
Browse other items in the Art collection from Wayside Furniture in the Akron, Cleveland, Canton, Medina, Youngstown, Ohio area.
These Magnificent Creatures Have Been Captured So Beautifully In These Sketched Drawings. To Compliment The Artwork, Distressed Black Frames With Champagne Silver Inner Lips Have Been Used. Prints Are Under Glass.
The Art Dynamic Equestrian (Set of 2) by Uttermost from Wayside Furniture. We proudly serve the Akron, Cleveland, Canton, Medina, Youngstown, Ohio area. Product availability may vary. Contact us for the most current availability on this product.
Nothing on this page may be copied or reproduced without explicit permission.
Drag anItem Here
To start a new blank room plan, enter the desired room dimensions below and click Create Room.
To request a new password, enter your username or e-mail address and click submit. A new password will automatically be emailed to you.
If you are still having trouble logging on after receiving your new password, please email firstname.lastname@example.com


text:
Crowne Pointe Historic Inn
Service & facilities
Service & facilities
Hotel facilities
- Hotel-owned car park Fee per 24 hours
- Conference rooms
- No-smoking room
- Hotel safe
- Restaurant(s) and from Closed
Room facilities
- Cable TV
- Satellite TV
- TV remote control
- Radio
- Video machine (VCR)
In-house services
- Classic concierge service
- Shuttle service to the airport Fee
- Laundry service
- Room service
Style of hotel and ambience
The Crowne Pointe Historic Inn and Spa of Provincetown is a classic 140 year old Cape Cod Sea Captains estate. This unique Provincetown hotel is comprised of 40 rooms situated in six large fully restored historic buildings with a spacious main mansion, full service spa and fine dining restaurant. This landmark Provincetown hotel features spacious guestrooms and luxury suites wrapped around a beautifully landscaped courtyard and our award winning, full service, in-house Provincetown spa. Many of our rooms feature fireplaces and whirlpool tubs. Add a romantic touch to your Provincetown evening with a bottle of wine and a luxurious soak in your private whirlpool tub. The interior design compliments the spectacular Provincetown landscape of sand dune vistas, marsh grass, blue-green waters and sandy shoreline. Natural materials with fine craftsmanship abound throughout the hotel including hardwood floors, soothing wall colors and gently rotating ceiling fans. Crowne Pointe Inn proudly features a full service spa. At Shui Spa, our highly skilled therapists offer an extensive array of body, skin and massage treatments and therapies. The Spa facility is included with all room reservations. Choose your level of pampering.Please note all guests must be a minimum of 16 years of age, children are not permitted. All rates are based on double occupancy, additional charges apply of 100.00USD per person, per night over two people
Hotel data
Service times
Accepted payment methods
- Visa
- Eurocard/MasterCard
82 Bradford Street, 02657 Eastham -
-- Directions -- Sagamore Bridge to Cape Cod, take Route 6 east to the end. There are three exits for Provincetown. Take the Conwell Street exit. Make a left onto Conwell Street, off Route 6. Take Conwell to the end. Make a right onto Bradford Street, travel 1.25 miles. Inn is at the top of the hill at 82 Bradford Street., Art Gallery, Beaches, Entertainment, Fishing, Golf, Pilrim Monument, Shopping, Whale Watching, Recreation
- 30.29 km
- 75.7 km