text:
Living a minimalist lifestyle
Here on this blog I give tips on living a minimalist lifestyle for those seemingly few minimalists in the UK.
If you want to just skip to the main content then take a look at the Blog Pages.
A UK Minimalist Lifestyle
'Two Less things' – whats all that about ?
Two less things is a minimalist phrase I discovered, firstly when looking for a decent name for this minimalist website and secondly as part of the minimalist process of removing the things from my life. Generally speaking, things seem to come in twos. Getting rid of one thing, seems to lead easily to getting rid of another. Something perhaps along the lines of getting rid of one shoe, when actually they come in pairs.
I'm sure there's lots of examples other than this, but I'll update those when I think of them.
So what is this minimalist blog all about ?
Well there don't seem to be a lot of minimalists in the UK, ( awaits masses of contacts telling me I'm wrong ), but the ones out there do tend to be a little 'new age' in my view and minimalism is generally a secondary part to one of their main characteristics. So for example travellers who travel very light, one bag perhaps and never have a home.
For me minimalism was about removing both physical things that I found turned into a burden, and then expanding on that and removing e-mails, to-do lists, action items, responsibilities, roles I'd rather not have, and again the two less things came about naturally, almost a "one thing leads to another" when you let go of things.
Its important to point out that I still have somewhat of a 'normal' lifestyle. I live in a normal house, in a normal street, with normal children. I own a normal car, and have normal rent and bills to pay. To all intents and purposes I'm as normal as you, if there is such a thing.
Where I differ, is that over the last few years, and through perhaps some less than normal events, I arrived at the conclusion, that having more 'stuff' just doesn't make you happy, and in fact in the long term it does the exact opposite and makes you pretty sad, more than sad in my case.
So through this combination of events I arrived at the point where enough was enough, and the 'stuff' just had to go, along with a whole lot of other non-physical stuff, like lists, and commitments I hated, and putting up with nonsense.
Funnily enough, when I started searching, I found that a few other people had reached the same conclusion I had. They didn't think much to stuff either. Most of them live in the US, so I thought I'd perhaps add a UK Minimalist view to theirs…. and the rest as they say, is history, and the Two Less Things blog was born.
Head over to the contact page and let me know you dropped by. Send words of encouragement, and I'll write more. Then pop back again in a few days and you'll find something else to comment on.


text:
Support our work
Academics, students and staff across Imperial are working at the limits of human knowledge and scientific practice – exploring new frontiers, and delving into the unknown.
Your gift to the Centre for Environmental Policy will support a wide range of projects and initiatives such as new scholarships to attract top talent from across the world, hardship funds for students faced with financial difficulties, research placements, innovative research projects, vital equipment and facility upgrades.
With your support, the Centre for Environmental Policy will continue to foster positive and inclusive learning environments for our students and academics and challenge and enable them to become leaders in their fields.
The flexibility of an unrestricted gift enables Centre leadership to make bold decisions, to follow new avenues and to take risks in the pursuit of innovation. This flexibility is needed to address current and future global grand challenges and make profound impacts on society. Discretionary funding can be allocated quickly, allowing academic leaders to respond promptly to emerging opportunities or address unforeseen challenges.
Make a gift today to help support Imperial students and academics and have an immediate and direct impact on the world-leading work of the Centre for Environmental Policy.
Contact us
If you are considering a gift to support the Centre for Environmental Policy, and would like to discuss opportunities for giving, please get in touch:
Natalie Sauter
Head of Development, Faculty of Natural Sciences
+44 (0)20 7594 5313
Charlie Binns
Development Manager, Faculty of Natural Sciences
+44 (0)20 7594 6576

subset: commoncrawl


text:
Copyright | (c) The University of Glasgow 2001 |
License | BSD-style (see the file libraries/base/LICENSE) |
Maintainer | firstname.lastname@example.com |
Stability | experimental |
Portability | non-portable (concurrency) |
Safe Haskell | Trustworthy |
Language | Haskell2010 |
A common interface to a collection of useful concurrency abstractions.
- data ThreadId
- myThreadId :: IO ThreadId
- forkIO :: IO () -> IO ThreadId
- forkFinally :: IO a -> (Either SomeException a -> IO ()) -> IO ThreadId
- forkIOWithUnmask :: ((forall a. IO a -> IO a) -> IO ()) -> IO ThreadId
- killThread :: ThreadId -> IO ()
- throwTo :: Exception e => ThreadId -> e -> IO ()
- forkOn :: Int -> IO () -> IO ThreadId
- forkOnWithUnmask :: Int -> ((forall a. IO a -> IO a) -> IO ()) -> IO ThreadId
- getNumCapabilities :: IO Int
- setNumCapabilities :: Int -> IO ()
- threadCapability :: ThreadId -> IO (Int, Bool)
- yield :: IO ()
- threadDelay :: Int -> IO ()
- threadWaitRead :: Fd -> IO ()
- threadWaitWrite :: Fd -> IO ()
- threadWaitReadSTM :: Fd -> IO (STM (), IO ())
- threadWaitWriteSTM :: Fd -> IO (STM (), IO ())
- module Control.Concurrent.MVar
- module Control.Concurrent.Chan
- module Control.Concurrent.QSem
- module Control.Concurrent.QSemN
- rtsSupportsBoundThreads :: Bool
- forkOS :: IO () -> IO ThreadId
- forkOSWithUnmask :: ((forall a. IO a -> IO a) -> IO ()) -> IO ThreadId
- isCurrentThreadBound :: IO Bool
- runInBoundThread :: IO a -> IO a
- runInUnboundThread :: IO a -> IO a
- mkWeakThreadId :: ThreadId -> IO (Weak ThreadId)
Concurrent Haskell
The concurrency extension for Haskell is described in the paper Concurrent Haskell http://www.haskell.org/ghc/docs/papers/concurrent-haskell.ps.gz.
Concurrency is "lightweight", which means that both thread creation and context switching overheads are extremely low. Scheduling of Haskell threads is done internally in the Haskell runtime system, and doesn't make use of any operating system-supplied thread packages.
However, if you want to interact with a foreign library that expects your
program to use the operating system-supplied thread package, you can do so
by using forkOS
instead of forkIO
Haskell threads can communicate via MVar
s, a kind of synchronised
mutable variable (see Control.Concurrent.MVar). Several common
concurrency abstractions can be built from MVar
s, and these are
provided by the Control.Concurrent library.
In GHC, threads may also communicate via exceptions.
Basic concurrency operations
A ThreadId
is an abstract type representing a handle to a thread.
is an instance of Eq
, Ord
and Show
, where
the Ord
instance implements an arbitrary total ordering over
s. The Show
instance lets you convert an arbitrary-valued
to string form; showing a ThreadId
value is occasionally
useful when debugging or diagnosing the behaviour of a concurrent
Note: in GHC, if you have a ThreadId
, you essentially have
a pointer to the thread itself. This means the thread itself can't be
garbage collected until you drop the ThreadId
This misfeature will hopefully be corrected at a later date.
Show ThreadId Source # | Since: base-184.108.40.206 |
Eq ThreadId Source # | Since: base-188.8.131.52 |
Ord ThreadId Source # | Since: base-18.104.22.168 |
Defined in GHC.Conc.Sync |
forkIO :: IO () -> IO ThreadId Source #
Creates a new thread to run the IO
computation passed as the
first argument, and returns the ThreadId
of the newly created
The new thread will be a lightweight, unbound thread. Foreign calls
made by this thread are not guaranteed to be made by any particular OS
thread; if you need foreign calls to be made by a particular OS
thread, then use forkOS
The new thread inherits the masked state of the parent (see
The newly created thread has an exception handler that discards the
exceptions BlockedIndefinitelyOnMVar
, BlockedIndefinitelyOnSTM
, and
, and passes all other exceptions to the uncaught
exception handler.
forkFinally :: IO a -> (Either SomeException a -> IO ()) -> IO ThreadId Source #
Fork a thread and call the supplied function when the thread is about to terminate, with an exception or a returned value. The function is called with asynchronous exceptions masked.
forkFinally action and_then = mask $ \restore -> forkIO $ try (restore action) >>= and_then
This function is useful for informing the parent when a child terminates, for example.
Since: base-184.108.40.206
forkIOWithUnmask :: ((forall a. IO a -> IO a) -> IO ()) -> IO ThreadId Source #
Like forkIO
, but the child thread is passed a function that can
be used to unmask asynchronous exceptions. This function is
typically used in the following way
... mask_ $ forkIOWithUnmask $ \unmask -> catch (unmask ...) handler
so that the exception handler in the child thread is established with asynchronous exceptions masked, meanwhile the main body of the child thread is executed in the unmasked state.
Note that the unmask function passed to the child thread should only be used in that thread; the behaviour is undefined if it is invoked in a different thread.
Since: base-188.8.131.52
killThread :: ThreadId -> IO () Source #
raises the ThreadKilled
exception in the given
thread (GHC only).
killThread tid = throwTo tid ThreadKilled
throwTo :: Exception e => ThreadId -> e -> IO () Source #
raises an arbitrary exception in the target thread (GHC only).
Exception delivery synchronizes between the source and target thread:
does not return until the exception has been raised in the
target thread. The calling thread can thus be certain that the target
thread has received the exception. Exception delivery is also atomic
with respect to other exceptions. Atomicity is a useful property to have
when dealing with race conditions: e.g. if there are two threads that
can kill each other, it is guaranteed that only one of the threads
will get to kill the other.
Whatever work the target thread was doing when the exception was raised is not lost: the computation is suspended until required by another thread.
If the target thread is currently making a foreign call, then the
exception will not be raised (and hence throwTo
will not return)
until the call has completed. This is the case regardless of whether
the call is inside a mask
or not. However, in GHC a foreign call
can be annotated as interruptible
, in which case a throwTo
cause the RTS to attempt to cause the call to return; see the GHC
documentation for more details.
Important note: the behaviour of throwTo
differs from that described in
the paper "Asynchronous exceptions in Haskell"
In the paper, throwTo
is non-blocking; but the library implementation adopts
a more synchronous design in which throwTo
does not return until the exception
is received by the target thread. The trade-off is discussed in Section 9 of the paper.
Like any blocking operation, throwTo
is therefore interruptible (see Section 5.3 of
the paper). Unlike other interruptible operations, however, throwTo
is always interruptible, even if it does not actually block.
There is no guarantee that the exception will be delivered promptly,
although the runtime will endeavour to ensure that arbitrary
delays don't occur. In GHC, an exception can only be raised when a
thread reaches a safe point, where a safe point is where memory
allocation occurs. Some loops do not perform any memory allocation
inside the loop and therefore cannot be interrupted by a throwTo
If the target of throwTo
is the calling thread, then the behaviour
is the same as throwIO
, except that the exception
is thrown as an asynchronous exception. This means that if there is
an enclosing pure computation, which would be the case if the current
IO operation is inside unsafePerformIO
or unsafeInterleaveIO
, that
computation is not permanently replaced by the exception, but is
suspended as if it had received an asynchronous exception.
Note that if throwTo
is called with the current thread as the
target, the exception will be thrown even if the thread is currently
inside mask
or uninterruptibleMask
Threads with affinity
forkOn :: Int -> IO () -> IO ThreadId Source #
Like forkIO
, but lets you specify on which capability the thread
should run. Unlike a forkIO
thread, a thread created by forkOn
will stay on the same capability for its entire lifetime (forkIO
threads can migrate between capabilities according to the scheduling
policy). forkOn
is useful for overriding the scheduling policy when
you know in advance how best to distribute the threads.
The Int
argument specifies a capability number (see
). Typically capabilities correspond to physical
processors, but the exact behaviour is implementation-dependent. The
value passed to forkOn
is interpreted modulo the total number of
capabilities as returned by getNumCapabilities
GHC note: the number of capabilities is specified by the +RTS -N
option when the program is started. Capabilities can be fixed to
actual processor cores with +RTS -qa
if the underlying operating
system supports that, although in practice this is usually unnecessary
(and may actually degrade performance in some cases - experimentation
is recommended).
Since: base-22.214.171.124
forkOnWithUnmask :: Int -> ((forall a. IO a -> IO a) -> IO ()) -> IO ThreadId Source #
Like forkIOWithUnmask
, but the child thread is pinned to the
given CPU, as with forkOn
Since: base-184.108.40.206
getNumCapabilities :: IO Int Source #
Returns the number of Haskell threads that can run truly
simultaneously (on separate physical processors) at any given time. To change
this value, use setNumCapabilities
Since: base-220.127.116.11
setNumCapabilities :: Int -> IO () Source #
Set the number of Haskell threads that can run truly simultaneously
(on separate physical processors) at any given time. The number
passed to forkOn
is interpreted modulo this value. The initial
value is given by the +RTS -N
runtime flag.
This is also the number of threads that will participate in parallel garbage collection. It is strongly recommended that the number of capabilities is not set larger than the number of physical processor cores, and it may often be beneficial to leave one or more cores free to avoid contention with other processes in the machine.
Since: base-220.127.116.11
threadCapability :: ThreadId -> IO (Int, Bool) Source #
Returns the number of the capability on which the thread is currently
running, and a boolean indicating whether the thread is locked to
that capability or not. A thread is locked to a capability if it
was created with forkOn
Since: base-22.214.171.124
Scheduling may be either pre-emptive or co-operative, depending on the implementation of Concurrent Haskell (see below for information related to specific compilers). In a co-operative system, context switches only occur when you use one of the primitives defined in this module. This means that programs such as:
main = forkIO (write 'a') >> write 'b' where write c = putChar c >> write c
will print either aaaaaaaaaaaaaa...
or bbbbbbbbbbbb...
instead of some random interleaving of a
s and b
s. In
practice, cooperative multitasking is sufficient for writing
simple graphical user interfaces.
The yield
action allows (forces, in a co-operative multitasking
implementation) a context-switch to any other currently runnable
threads (if any), and is occasionally useful when implementing
concurrency abstractions.
Different Haskell implementations have different characteristics with regard to which operations block all threads.
Using GHC without the -threaded
option, all foreign calls will block
all other Haskell threads in the system, although I/O operations will
not. With the -threaded
option, only foreign calls with the unsafe
attribute will block all other threads.
threadDelay :: Int -> IO () Source #
Suspends the current thread for a given number of microseconds (GHC only).
There is no guarantee that the thread will be rescheduled promptly when the delay has expired, but the thread will never continue to run earlier than specified.
threadWaitRead :: Fd -> IO () Source #
Block the current thread until data is available to read on the given file descriptor (GHC only).
This will throw an IOError
if the file descriptor was closed
while this thread was blocked. To safely close a file descriptor
that has been used with threadWaitRead
, use
threadWaitWrite :: Fd -> IO () Source #
Block the current thread until data can be written to the given file descriptor (GHC only).
This will throw an IOError
if the file descriptor was closed
while this thread was blocked. To safely close a file descriptor
that has been used with threadWaitWrite
, use
threadWaitReadSTM :: Fd -> IO (STM (), IO ()) Source #
Returns an STM action that can be used to wait for data to read from a file descriptor. The second returned value is an IO action that can be used to deregister interest in the file descriptor.
Since: base-220.127.116.11
threadWaitWriteSTM :: Fd -> IO (STM (), IO ()) Source #
Returns an STM action that can be used to wait until data can be written to a file descriptor. The second returned value is an IO action that can be used to deregister interest in the file descriptor.
Since: base-18.104.22.168
Communication abstractions
module Control.Concurrent.MVar
module Control.Concurrent.Chan
module Control.Concurrent.QSem
module Control.Concurrent.QSemN
Bound Threads
Support for multiple operating system threads and bound threads as described below is currently only available in the GHC runtime system if you use the -threaded option when linking.
Other Haskell systems do not currently support multiple operating system threads.
A bound thread is a haskell thread that is bound to an operating system thread. While the bound thread is still scheduled by the Haskell run-time system, the operating system thread takes care of all the foreign calls made by the bound thread.
To a foreign library, the bound thread will look exactly like an ordinary
operating system thread created using OS functions like pthread_create
or CreateThread
Bound threads can be created using the forkOS
function below. All foreign
exported functions are run in a bound thread (bound to the OS thread that
called the function). Also, the main
action of every Haskell program is
run in a bound thread.
Why do we need this? Because if a foreign library is called from a thread
created using forkIO
, it won't have access to any thread-local state -
state variables that have specific values for each OS thread
(see POSIX's pthread_key_create
or Win32's TlsAlloc
). Therefore, some
libraries (OpenGL, for example) will not work from a thread created using
. They work fine in threads created using forkOS
or when called
from main
or from a foreign export
In terms of performance, forkOS
(aka bound) threads are much more
expensive than forkIO
(aka unbound) threads, because a forkOS
thread is tied to a particular OS thread, whereas a forkIO
can be run by any OS thread. Context-switching between a forkOS
thread and a forkIO
thread is many times more expensive than between
two forkIO
Note in particular that the main program thread (the thread running
) is always a bound thread, so for good concurrency
performance you should ensure that the main thread is not doing
repeated communication with other threads in the system. Typically
this means forking subthreads to do the work using forkIO
, and
waiting for the results in the main thread.
rtsSupportsBoundThreads :: Bool Source #
if bound threads are supported.
If rtsSupportsBoundThreads
is False
, isCurrentThreadBound
will always return False
and both forkOS
and runInBoundThread
forkOS :: IO () -> IO ThreadId Source #
Like forkIO
, this sparks off a new thread to run the IO
computation passed as the first argument, and returns the ThreadId
of the newly created thread.
However, forkOS
creates a bound thread, which is necessary if you
need to call foreign (non-Haskell) libraries that make use of
thread-local state, such as OpenGL (see Control.Concurrent).
Using forkOS
instead of forkIO
makes no difference at all to the
scheduling behaviour of the Haskell runtime system. It is a common
misconception that you need to use forkOS
instead of forkIO
avoid blocking all the Haskell threads when making a foreign call;
this isn't the case. To allow foreign calls to be made without
blocking all the Haskell threads (with GHC), it is only necessary to
use the -threaded
option when linking your program, and to make sure
the foreign import is not marked unsafe
forkOSWithUnmask :: ((forall a. IO a -> IO a) -> IO ()) -> IO ThreadId Source #
Like forkIOWithUnmask
, but the child thread is a bound thread,
as with forkOS
isCurrentThreadBound :: IO Bool Source #
Returns True
if the calling thread is bound, that is, if it is
safe to use foreign libraries that rely on thread-local state from the
calling thread.
runInBoundThread :: IO a -> IO a Source #
Run the IO
computation passed as the first argument. If the calling thread
is not bound, a bound thread is created temporarily. runInBoundThread
doesn't finish until the IO
computation finishes.
You can wrap a series of foreign function calls that rely on thread-local state
with runInBoundThread
so that you can use them without knowing whether the
current thread is bound.
runInUnboundThread :: IO a -> IO a Source #
Run the IO
computation passed as the first argument. If the calling thread
is bound, an unbound thread is created temporarily using forkIO
doesn't finish until the IO
computation finishes.
Use this function only in the rare case that you have actually observed a
performance loss due to the use of bound threads. A program that
doesn't need its main thread to be bound and makes heavy use of concurrency
(e.g. a web server), might want to wrap its main
action in
Note that exceptions which are thrown to the current thread are thrown in turn to the thread that is executing the given computation. This ensures there's always a way of killing the forked thread.
Weak references to ThreadIds
mkWeakThreadId :: ThreadId -> IO (Weak ThreadId) Source #
Make a weak pointer to a ThreadId
. It can be important to do
this if you want to hold a reference to a ThreadId
while still
allowing the thread to receive the BlockedIndefinitely
family of
exceptions (e.g. BlockedIndefinitelyOnMVar
). Holding a normal
reference will prevent the delivery of
exceptions because the reference could be
used as the target of throwTo
at any time, which would unblock
the thread.
Holding a Weak ThreadId
, on the other hand, will not prevent the
thread from receiving BlockedIndefinitely
exceptions. It is
still possible to throw an exception to a Weak ThreadId
, but the
caller must use deRefWeak
first to determine whether the thread
still exists.
Since: base-184.108.40.206
GHC's implementation of concurrency
This section describes features specific to GHC's implementation of Concurrent Haskell.
Haskell threads and Operating System threads
In GHC, threads created by forkIO
are lightweight threads, and
are managed entirely by the GHC runtime. Typically Haskell
threads are an order of magnitude or two more efficient (in
terms of both time and space) than operating system threads.
The downside of having lightweight threads is that only one can
run at a time, so if one thread blocks in a foreign call, for
example, the other threads cannot continue. The GHC runtime
works around this by making use of full OS threads where
necessary. When the program is built with the -threaded
option (to link against the multithreaded version of the
runtime), a thread making a safe
foreign call will not block
the other threads in the system; another OS thread will take
over running Haskell threads until the original call returns.
The runtime maintains a pool of these worker threads so that
multiple Haskell threads can be involved in external calls
The System.IO library manages multiplexing in its own way. On
Windows systems it uses safe
foreign calls to ensure that
threads doing I/O operations don't block the whole runtime,
whereas on Unix systems all the currently blocked I/O requests
are managed by a single thread (the IO manager thread) using
a mechanism such as epoll
or kqueue
, depending on what is
provided by the host operating system.
The runtime will run a Haskell thread using any of the available worker OS threads. If you need control over which particular OS thread is used to run a given Haskell thread, perhaps because you need to call a foreign library that uses OS-thread-local state, then you need bound threads (see Control.Concurrent).
If you don't use the -threaded
option, then the runtime does
not make use of multiple OS threads. Foreign calls will block
all other running Haskell threads until the call returns. The
System.IO library still does multiplexing, so there can be multiple
threads doing I/O, and this is handled internally by the runtime using
Terminating the program
In a standalone GHC program, only the main thread is required to terminate in order for the process to terminate. Thus all other forked threads will simply terminate at the same time as the main thread (the terminology for this kind of behaviour is "daemonic threads").
If you want the program to wait for child threads to
finish before exiting, you need to program this yourself. A
simple mechanism is to have each child thread write to an
when it completes, and have the main
thread wait on all the MVar
s before
myForkIO :: IO () -> IO (MVar ()) myForkIO io = do mvar <- newEmptyMVar forkFinally io (\_ -> putMVar mvar ()) return mvar
Note that we use forkFinally
to make sure that the
is written to even if the thread dies or
is killed for some reason.
A better method is to keep a global list of all child threads which we should wait for at the end of the program:
children :: MVar [MVar ()] children = unsafePerformIO (newMVar []) waitForChildren :: IO () waitForChildren = do cs <- takeMVar children case cs of [] -> return () m:ms -> do putMVar children ms takeMVar m waitForChildren forkChild :: IO () -> IO ThreadId forkChild io = do mvar <- newEmptyMVar childs <- takeMVar children putMVar children (mvar:childs) forkFinally io (\_ -> putMVar mvar ()) main = later waitForChildren $ ...
The main thread principle also applies to calls to Haskell from
outside, using foreign export
. When the foreign export
function is invoked, it starts a new main thread, and it returns
when this main thread terminates. If the call causes new
threads to be forked, they may remain in the system after the
foreign export
ed function has returned.
GHC implements pre-emptive multitasking: the execution of threads are interleaved in a random fashion. More specifically, a thread may be pre-empted whenever it allocates some memory, which unfortunately means that tight loops which do no allocation tend to lock out other threads (this only seems to happen with pathological benchmark-style code, however).
The rescheduling timer runs on a 20ms granularity by
default, but this may be altered using the
RTS option. After a rescheduling
"tick" the running thread is pre-empted as soon as
One final note: the
example may not
work too well on GHC (see Scheduling, above), due
to the locking on a Handle
. Only one thread
may hold the lock on a Handle
at any one
time, so if a reschedule happens while a thread is holding the
lock, the other thread won't be able to run. The upshot is that
the switch from aaaa
happens infrequently. It can be
improved by lowering the reschedule tick period. We also have a
patch that causes a reschedule whenever a thread waiting on a
lock is woken up, but haven't found it to be useful for anything
other than this example :-)
GHC attempts to detect when threads are deadlocked using the garbage
collector. A thread that is not reachable (cannot be found by
following pointers from live objects) must be deadlocked, and in this
case the thread is sent an exception. The exception is either
, BlockedIndefinitelyOnSTM
, or Deadlock
, depending on the way in which the
thread is deadlocked.
Note that this feature is intended for debugging, and should not be relied on for the correct operation of your program. There is no guarantee that the garbage collector will be accurate enough to detect your deadlock, and no guarantee that the garbage collector will run in a timely enough manner. Basically, the same caveats as for finalizers apply to deadlock detection.
There is a subtle interaction between deadlock detection and
finalizers (as created by newForeignPtr
or the
functions in System.Mem.Weak): if a thread is blocked waiting for a
finalizer to run, then the thread will be considered deadlocked and
sent an exception. So preferably don't do this, but if you have no
alternative then it is possible to prevent the thread from being
considered deadlocked by making a StablePtr
pointing to it. Don't
forget to release the StablePtr
later with freeStablePtr


text:
Did you know that Microsoft offers students a special discount on this productivity suite? For only $99.95 students can get Office Pro Academic 2010, which is packed with the same applications as Office Professional 2010─Word, Excel, PowerPoint, Outlook, OneNote, Publisher and Access─ at less than a sixth of the cost!
Tips and Tricks
- Show your readers! Embed PowerPoint and Excel documents into your blog with just a few easy steps. Share top 10 lists or how to's via an embedded PowerPoint 2010 or PowerPoint for Mac 2011 photo slide show in the school newsletter blog.
- Capture and organize all your class notes in one place with Microsoft OneNote 2010. You can even insert audio clips, videos,screenshots, conversations or emails from classmates.
- Add quick edits to photos in Word and PowerPoint in both Office 2010 and Office for Mac 2011. Also edit audio and format videosin PowerPoint. No special photo editing programs needed here.
- Can't focus on your term paper with emails and IMs popping up? Maximize your on-screen space in Word 2011for Mac with Full Screen View, letting you focus on your reading and writing while blocking out all other windows and menus.
- Share ideas and information via the Broadcast Slide Show feature in PowerPoint 2010, as part of your group presentation, so classmates can view the content at the same time.
- Create your own custom OneNote notebook for your next 30-page biology paper with Microsoft OneNote 2010. You can see firsthand the benefits of having your research, notes, bibliography information and ideas in one easy-to-view location.
- Help your year book committee manage the budget with Microsoft Excel 2010 and Excel for Mac 2011 and on-the-go with Excel Mobile 2010 on your Windows Phone 7.
- Last minute changes to a newsletter or PowerPoint slide are easier than ever with the Reorder Objects tool in Office 2011 for Mac.Rearrange your pictures and graphics with a couple simple clicks, rather than taking apart the whole document.
- Make sure your squad hits their fundraising goals! Use Microsoft Excel 2010 to keep track of how much money you have raised at each event and use the charting and graphing features to illustrate great results.
- Use Microsoft Word 2010 for more than the standard book report. Take advantage of the photo tools and free templates to create posters and flyers that pop!
For more information about these tips and other time-saving tricks check out www.office.com.
Win It!
The Bargain Network has a product key for Office Professional 2010, (retail value of $499.99) to giveaway just in time for back to school! How awesome is that!
Use the form below to enter the giveaway. Comments DO NOT count as entries. Please note — all entries will be verified.
Thank you to Become A Coupon Queen for acquiring this amazing giveaway.


text:
Launched in 2008, Vaccines in practice provides a broad blend of articles of interest to all those involved in immunisation and vaccinations, in both primary and secondary care.
Supported by a multidisciplinary Editorial Board, the journal offers updates, guidance and practical advice that reflects current thinking in this area of disease prevention.
The current issue is available as a PDF, EPUB for your iPad or smartphone, and Kindle. You can also browse back issues to the left, or search the archive to the right.
To buy back issues of the journal in print, visit our webstore.
Editor: Peter M English MB ChB FPCert MRCGP MPH MFPHM Consultant in Communicable Disease Control, Surrey and Sussex Health Protection Unit, Health Protection Agency, Leatherhead, UK.
Follow @HaywardJournals
Vaccines in practice was previously supported by Pfizer Vaccines from 2010 to 2012 and by Wyeth Vaccines from 2008 to 2009.
The data, opinions and statements appearing in the articles herein are those of the contributor(s) concerned; they are not necessarily endorsed by the sponsor, publisher, Editor, Editorial Board or authors' employers. Accordingly the sponsor, publisher, Editor and Editorial Board and their respective employees, officers and agents accept no liability for the consequences of any such inaccurate or misleading data, opinion or statement.
The title Vaccines in practice is the property of Hayward Medical Publishing and PMGroup Worldwide Ltd and, together with the content, is bound by copyright. Copyright © 2019 PMGroup Worldwide Ltd. All rights reserved. The information contained on the site may not be reproduced, distributed or published, in whole or in part, in any form without the permission of the publishers. All correspondence should be addressed to:
ISSN 1757-9724 (Print) ISSN 2045-7782 (Online)


text:
Your friends at Arwood Waste would like to wish you a Happy New Year!
It's amazing what kind of impact just a few small changes can make. Use these tips to start off strong and make this a prosperous, rewarding, and productive new year.
#1 Simplify your environment.
Take a few minutes to walk through your home or business and ask yourself, "What can I get rid of here?" HELPFUL HINT: If it hasn't been used in more than a year, it's time to go. If you have a newer version, don't keep the old one around 'just in case'. Have a stack of half done projects? Make a plan to get them finished. Keeping them around only acts as a reminder of half-fulfilled efforts.
A purge of your physical environment brings clarity and space for vision in the atmosphere of your home or business.
#2 Share your abundance with others.
When simplifying last year's stacks of stuff, consider what might be donated, recycled or re-purposed. Remember, what you have no need for may be just the thing someone else has been searching high and low to find.
Check out The Recycle Guide for places to drop off your re-purposed items or for more ideas on how to recycle.
#3 Plan space for growth.
You can't add a new healthy habit, project, or vision to your plate without letting go of an old one. Set yourself up for success with your New Year's resolutions. Start by evaluating what's on your plate now. Decide what can be delegated, modified, or simply stopped. Then put that newly found time and energy into this year's goals and habits.
Arwood Waste and our partners specialize in helping you haul the junk out of life. Contact us Toll Free at (888) 413-5105 for help disposing of all that purging and cleaning of the old so you can welcome in the new. Ask about our Roll Off Dumpsters, Portable Toilets, Commercial Dumpsters, Storage Rentals and Demolition Services!
The post Start the New Year with a Clean Slate – 3 Tips to Make this Year the Best! appeared first on AW Sites.


text:
Exilarch; born about 496; died about 520; ruled from 512 to 520. He was the son of Huna, who was appointed exilarch under Firuz; and he was born at the time when Mazdak endeavored to introduce communism in all Persia. The opposition against Mar Zuṭra, his imprisonment, and his early death have given rise to a number of legends. The following anecdote is told about his birth and the events preceding it: Mar Zuṭra's father was engaged in constant strife with his father-in-law, the school principal Mar Ḥanina, because the latter refused to obey the orders issued by the exilarch. Ḥanina was accordingly punished for his disobedience; and, being embittered and humiliated, he went into the prayer-house at night, and there shed a dishful of tears, whereupon he fell asleep. He dreamed that he was in a cedar forest, engaged in felling the trees; and when he came to the last cedar-tree King David appeared and forbade him to fell it. On awakening, Ḥanina learned that the entire house of the exilarch had perished, except his daughter, who was pregnant and had been spared. Soon afterward she gave birth to a son, whom the grandfather named Mar Zuṭra, at the same time assuming personal charge of his training. During Mar Zuṭra's infancy the exilarchate was administered by his brother-in-law Mar Paḥra, or Paḥda. The latter bribed King Kobad in order that he might remain in office; but when Mar Zuṭra had reached the age of fifteen, his grandfather presented him to the king as the legitimate ruler, whereupon the monarch installed him as exilarch. Mar Paḥda opposed this, but was killed by a fly which entered his nostril; and after that event the exilarchs had a fly on their seal.
Mar Zuṭra took up arms against the Persians, and organized an uprising to oppose the introduction of communism, although the king himself was in favor thereof. The immediate cause of the uprising, however, was the assassination of the school principal Isaac, regarding which no accurate information exists. From the fact that Mar Ḥanina took part in the struggle, it may be deduced that it was of a religious character. At the head of a company of 400 Jewish warriors Mar Zuṭra advanced against the opposing Persian forces; and the battles fought by him have furnished material for various legends. It is told that a pillar of fire always preceded his army; and it is further stated that Mar Zuṭra founded an independent Jewish state, with Maḥoza as his residence. He ruled as an independent king, and imposed heavy taxes on all non-Jews. In spite of his able government, however, immorality spread among his people, whereupon the pillar of fire disappeared. In a subsequent battle between Mar Zuṭra and the Persians the former was defeated; and both he and his grandfather Ḥanina were taken prisoners and decapitated, their bodies being suspended from crosses on the bridge at Maḥoza.
The account of Mar Zuṭra's life is based on a mixture of historic facts and legendary narratives. Thus, the description of the uprising of the Jews against Persian reforms, the statement regarding the prominent position held by Mar Zuṭra, and the account of his death are all based on historical data, whereas the stories of the extinction of the exilarchal house are legendary, as are also the dream of Ḥanina (which corresponds with that of Bostanai) and the account of the pillar of fire. All those legends, however, which tend to prove that the later rulers of Babylonia were usurpers have a basis of truth, inasmuch as Mar Zuṭra's only son emigrated to Jerusalem.
- Grätz, Gesch. v. 4-6, note 1;
- Neubauer, Anecdota, ii. 76;
- Heilprin, Seder ha-Dorot, i. 167.


text:
Free US Local Shipping with ETA 3-5 Days - $3.99 for AK, HI & PR. Hassle-Free 30-Day Returns at HipaStore
Free Shipping on ALL Orders
2."What advantages does a HIPA carburetor kit offer compared to other brands?"
A:"A HIPA carburetor kit offers several benefits over other brands, including high-quality components that meet or exceed OEM standards, easy installation, and affordability. Additionally, Hipa provides a satisfaction guarantee, ensuring that customers can purchase with confidence and trust in the quality of the product."
3."What is included in a HIPA carburetor kit, and how does it differ from other carburetor replacement options?"
A:"A HIPA carburetor kit is a comprehensive replacement kit that contains all the necessary parts to rebuild a carburetor in small engines. This typically includes the carburetor itself, along with an air filter, spark plug, fuel valve, gasket, and other components. By providing a complete set of replacement parts, HIPA carburetor kits offer a convenient and cost-effective alternative to purchasing individual parts or a whole new carburetor."
4."Can a HIPA carburetor kit enhance the performance of my engine?"
A:"If your engine's poor performance is caused by a dirty or malfunctioning carburetor, using a HIPA carburetor kit can help to restore proper function and improve overall engine performance. By providing high-quality replacement components, a HIPA carburetor kit can ensure that fuel delivery remains consistent and efficient, leading to a smoother-running engine with improved power and fuel efficiency."
5."What types of small engines can be serviced with a HIPA carburetor kit?"
A:"HIPA carburetor kits are designed to work with a wide variety of small engines, including those found in lawn mowers, chainsaws, generators, and various other types of machinery. This versatile kit provides a convenient solution for maintaining the performance and reliability of many different types of small engines."
6."Is it easy to install a HIPA carburetor kit on my own or do I need professional assistance?"
A:"While HIPA carburetor kits are designed for easy installation and come with manufacturer adjustments, installation may still require some basic mechanical skills and tools. Those who have experience working with small engines should be able to perform the installation themselves. However, if you're unsure about the process or lack experience, we recommend seeking our assistance to ensure proper installation and avoid any potential issues."
7.How do I know if I need to replace my carburetor or just a kit?
A: If your engine is not running smoothly, idling poorly, or experiencing fuel delivery issues, it may be time to either clean, overhaul, or replace the carburetor. A HIPA carburetor kit can help address many common carburetor problems.
Thanks for subscribing!
This email has been registered!


text:
Smashing Pumpkins to 'Start Unloading the Archives'
Smashing Pumpkins frontman Billy Corgan said he's so energized by the opportunities of strong vinyl sales alongside digital markets that the band was ready to unleash hundreds of previously unheard songs.
They also just confirmed the release of Shiny and Oh So Bright, Vol. 1 / LP: No Past. No Future. No Sun., their first album since the reunion of Corgan, James Iha and Jimmy Chamberlin.
"I'm really excited by the re-rise of the vinyl record shop and the fact that there is there is this beautiful balance now between vinyl releases and streaming services," Corgan told Beats 1 in a new interview. "We're going to just start unloading the archives – and we have archives for decades."
You can watch the interview below.
Asked about the extent of the archive, Corgan replied, "You can't even imagine," while Chamberlin added that there were "hundreds of songs" all in a finished state.
"It's insane how much work there is," Corgan said. "We could literally never record another song and have a release every two months for the next 20 years. Easy. There's alternate versions, there's live versions, there's acoustic versions. So we're going to actually kill people with content."
Speaking before the new album was announced, Corgan described the new incarnation of Smashing Pumpkins as "the happiest time of the band," adding that new music had "just poured out" and the new material "picks up where this unit left off."


text:
Add $99 to qualify for Free Ground Shipping*
ONLY 11.95 flat rate shipping on orders under $99.
Mon-Thu 8am-6pm Fri 8am-5pm EST
Light Bulbs
Ballasts & Drivers
Lighting Fixtures
Projector Lamps
Electric Vehicle Chargers
Germicidal Products
Air Quality
Life and Safety Products
Hand Tools
Horticultural Lighting Products
Light Control Products
Smart Lighting
Our easy-to-use BulbFinder will let you find the correct bulb, step by step.
Select a bulb category to get started
243 Stafford St.
Worcester, MA 01603
Tel. 1 (888) 455-2800
Fax 1.508.363.2900
The Business Lighting Experts
Company Info
Headquartered in Worcester, MA, Bulbs.com launched in August 1999 with one simple goal ... to be the online low-cost replacement lighting supplier. Years later, we've grown into one of the nation's largest Philips Lighting distributors servicing over 185,000 businesses in over 300,000 locations.
Bulbs.com excels at meeting the lighting needs of multi-facility businesses in the hospitality, retail, property management, manufacturing, health care, education and government sectors, but can even help brighten your day at home, too. That's because with our selection, ease and lighting expertise we never leave a single customer in the dark.
At Bulbs.com, we don't just offer replacement bulbs. We also offer ballasts and fixtures. Ranging from the basics to specialty items, our warehouse holds an unmatched selection of over 4,500 replacement bulbs, ballasts and fixtures from the best lighting manufacturers in the business, including Philips, Bulbrite, Maxlite, TCP, Cree and Universal. With such a large inventory on hand, you'll rarely have to wait for what you need. That's something that should really make your face light up.
We know that buying bulbs online might not be the most fun thing to do, but it doesn't have to be a hassle either. That's why Bulbs.com makes the entire process painless. In addition to easily locating the replacement lighting you need, you can also find the resources to make sure your lighting stays current, including bulb recycling programs and even the latest information on lighting trends, energy-efficient solutions and legislation. When you add in great customer service, competitive pricing and easy online ordering, you can see why Bulbs.com is the smart choice in lighting.
With over 18 years experience in the lighting industry, Bulbs.com has become an authority on replacement lighting for our customers. In fact, if it has anything to do with lighting, we can just about guarantee our friendly Bulbs.com lighting specialists can help you out. They have the knowledge and expertise to provide simple solutions to all your lighting needs. That ranges from making sure you've got the right light at the right price to making sure you've got all the information you need to go green.
When it comes to finding just the right light and the information you need to go with it, no one can match the selection, ease and expertise of Bulbs.com. It's what makes us the trusted source for all your lighting solutions, business or home.
Just about the only thing we can't do is install your light bulbs ourselves ... But we're working on it.


text:
Community Activities
Axiom Ludhiana : Axiom Education offer UKVI approved English Language Classes IELTS LIFE SKILLS Level A1 & B1. These are for those students who are applying for UK Settlement visa/Marriage Visa/Spouse Visa/Civil Partner. If you are not sure what your level of English is, an assessment can be given by a teacher from Axiom Education at one of the enrolment sessions. They will then advise you about your level and, if appropriate, suggest a suitable class according to your requirement. We have experienced faculty for IELTS LIFE SKILLS LEVEL A1 students. We provide them study material which is prepared by our experienced staff which will help students to achieve first class passing marks which is required by UKBA to log UK Settlement Visa. • We guarantee that we will make you achieve the desired Level so that you can pass the UK visa English test. So many students have passed this test through us and have secured their Visa's. We assure 98% success rate because of our training schedule. Please visit our offices in LUDHIANA or call us for more information anytime. Addresses: - Axiom Education Ludhiana SCO- B 17/251, Sethi Complex, Bharat Nagar Chowk , Near Bus Stand, Opposite ESI Hospital,Ludhiana,141001 For more information please call: - 9815003344, OR 8727003344, 0161-4676677 Or email us:[email protected] Our Website is: www.esolcentreindia.com


text:
Abbotts Barton Community Group
- Home
- Events and Local Trail
- Have Your Say!
- Community Plan
- Links
- Membership
- Newsletters
- About
- Contact
This website has been created for the residents of Abbotts Barton and surrounding areas so that you can keep up to-date with what's going on.
Apart from news you can find information about events, campaigns, and how to contact councillors.
Abbotts Barton Community Group is a community association which serves the people of Abbotts Barton and aims to act as a community anchor organisation. The main areas of work for the Group are:
- ☐ To enable residents to find out how we can make where we live even better and do something about it.
- ☐ To run events and activities for the benefit of inhabitants of Abbotts Barton.
- ☐ To strengthen community participation.
Big Lunch 2014 |
If you should be interested in helping out at events, as a street champion, or as a Councillor's Surgery visitor, please don't hesitate to get in touch! Also let us know if you have some ideas for events or skills that could be useful (e.g. face painting at the picnics)! Read more about how you can help on our Get Involved page!
Sign up for news and events
If you want to receive news (approximately monthly) from the Community Group about Abbotts Barton, please enter your name and email address below:


text:
Assessment of the Greater Mekong Subregion Economic Corridors—Thailand
This report presents the findings of the assessment of the Thailand component of the Greater Mekong Subregion economic corridors. It is part of the Assessment of Greater Mekong Subregion Economic Corridors package, which consists of six country reports and an integrative report prepared by a study team led by the Asian Development Bank, which serves as the GMS Secretariat.
Economic corridors are geographically defined areas that facilitate the national and transnational movement of people, goods, services, capital, and information. They are key to promoting economic integration in the subregion. The East–West Economic Corridor, North–South Economic Corridor, and Southern Economic Corridor have been designated as flagships of the GMS Economic Cooperation Program.
This assessment report focuses on (i) the status and physical condition of transport infrastructure and cross-border facilities, with emphasis on road transport; (ii) cross-border transport and trade; and (iii) economic potential (special economic zones, tourist attractions, and investment opportunities along and around the economic corridors). The observations regarding the physical condition of the roads in the GMS economic corridors in Thailand are based on the field survey conducted in June 2017.


text:
The Defense Department on March 8 announced that troops deployed to Niger, Mali and northern Cameroon qualify to receive imminent danger pay/hostile fire pay, retroactive to June 7, 2017.
The retroactive date allows the families of Staff Sgt. Bryan Black, Staff Sgt. Jeremiah Johnson, Sgt. La David Johnson and Staff Sgt. Dustin Wright to collect an additional $225 a month for the time the soldiers were assigned there.
The four soldiers were killed in an October ambush in Niger that is still the subject of an ongoing investigation.
While this is welcome news, the Pentagon should have approved this pay a long time ago.
U.S. troops have quietly been operating in these countries, and in many parts of Africa, for many months. And it wasn't until the four soldiers were killed in the deadly ambush in Niger that Congress and the public became aware of the true extent of U.S. involvement in the region.
When troops are called upon to serve in harm's way, they should be taken care of properly.
It shouldn't take a tragedy like the one in Niger to prompt DoD to act.


text:
Refund policy
Please review our refund policy to understand your rights. Due to the nature of the work all orders are custom made and print on demand but we will be happy to refund our customers if they are not happy with the quality of the products. YourBoxPrinting.com reserves the right to rectify defective work by reprinting as well.
YourBoxPrinting.com reserves the right to rectify defective work by reprinting. Customers should inform YourBoxPrinting.com within 3 business days of order delivery of any defects, missing items and damage in the final delivered order with digital pictures of the defective products.
YourBoxPrinting.com will not be held responsible for any claims for defects, damage or missing items that are not filed within 3 business days of the delivery date.
All defective work must be returned (at their own expense) within 15 business days to us before replacement, if the subject work is not available we will assume that it has been accepted and no replacement will be provided.
No returns will be accepted without prior written return authorization from YourBoxPrinting.com
Please note that a 15% charge of the total value of the original order will be made on all cancelled orders plus a $10.00 charge to cover administration costs. Any costs incurred for work already carried out up to the date of written cancellation will also be charged for and deducted before any refunds are made.
Please note that all print jobs begin only after a proof approval is received for all documents and artwork that comprise a print job. PDF proofs are delivered via email at no additional cost. Alternatively, a digital hard copy proof can be shipped to you for an additional fee. Please read thoroughly as all proofs, once passed, are deemed correct and ready to go to print, and the responsibility passes to the customer. We will not be held responsible for any mistakes, viewing, spelling, punctuation, contact details or layout. We will not commence print until we have received a copy of the final proof with a written confirmation to go to print either by email, fax or post.
YourBoxPrinting.com is not responsible for any errors and omissions approved by the Client. The client is solely responsible for errors missed during the proofing process of either artwork supplied by the client or artwork created by YourBoxPrinting.com.
YourBoxPrinting.com is always dedicated to print most jobs within 10-12 working days of receipt of job (not including the day the job is received). If a proof is required, turnaround time begins after the proof is approved (not including the day the proof is approved). Please add one additional working day for standard bindery, folding, or assembly. Please note that turnaround time excludes weekends and holidays.
Special rush deliveries can usually be arranged but will usually be subject to additional charges. Rush service requires approval in advance by client. Rush services will incur an additional charge in accordance to the size and complexity of the job.
YourBoxPrinting.com cannot be held responsible for any customs and excise charges that may occur from the import or export of your goods.
All the customers are fully responsible for checking all the packages delivered to them for any prominent signs of damages or missing items prior to accepting the delivery from the courier. In the case of missing products or damage, the customer should inform the delivery courier & YourBoxPrinting.com. All the damaged and missing product claims should be made within 3 business days of receiving the package otherwise YourBoxPrinting.com will not be responsible for any loss or damage if not informed within the given deadline.
YourBoxPrinting.com is not responsible for any third party shipping errors, omissions or damaged shipments.
YourBoxPrinting.com always tends to provide excellent service to our customers and also love to get feedback from customers in order to serve them better. All complaints must be made within 3 business days of receipt of the job. Print jobs with manufacturing errors and/or defects will be rerun on the next print run at no charge to the client, at the discretion of YourBoxPrinting.com. YourBoxPrinting.com sole liability shall be limited to reprinting of the order. Unsatisfactory orders as a result of Client errors will be reprinted at a reduced rate.
For any queries, please contact us at firstname.lastname@example.com


text:
Weird! You may have heard the theory of shopping for groceries with a basket, rather than a full-size shopping cart, as a trick to limit spending, especially on impulse purchases. Logically, this makes sense: With less space to carry groceries, there'd seem to be less chance for making bad decisions. But a new study shows that shoppers gathering groceries in baskets are more likely to make unhealthy, wasteful purchases.
Why might this be? The research of a group of European professors indicates that, oddly enough, the answer has something to do with how the basket shopper must flex his or her arm carrying the groceries. According to the study, in the Journal of Marketing Research:
We demonstrate that arm flexor contraction makes individuals more likely to choose immediately pleasing options.
That's another way of saying "instant gratification." The tension and strain on the arm (and presumably, back and shoulders as well) makes shoppers more likely to pick up "vice products" such as candy and soda, apparently as some sort of unconscious counterbalance to the hassles of carrying a shopping basket. When pushing a shopping cart on wheels, there is no "arm flexor contraction" necessary.
(MORE: And the Nation's Favorite Low-Cost Grocery Store Is …)
The researchers make their case through a number of studies. In the first, they simply followed around random shoppers in a supermarket, noting who was shopping with a cart, who had a basket, and what they brought to the register. What the data indicated is that:
The odds of purchasing vice products at the cashier for a basket shopper is 6.84 times the odds of purchasing vices for a cart shopper, all other things being equal.
Wow. Those baskets seem to bring out the worst in people. But, generally speaking, aren't the people shopping with baskets just plain different than those shopping with carts? Think about it. The individual shopping with a cart is probably not an amateur randomly looking for something to fill his belly. If you've grabbed a cart, you're probably shopping for more than yourself. You probably have a list. You probably don't want to have to visit the store more than once a week. You're probably careful about what goes into the cart. The basket shopper, on the other hand, would seem to be more likely to be going to the store for one or two specific things—but who, when tempted or bored, might mindlessly toss a few other items into the basket.
In other words: Blame the shopper, not the shopping basket.
Yet, another study conducted by the researchers indicates that shopping basket shoppers—specifically the "arm flexion" involved in holding a shopping basket—tends to result in people choosing vice over virtue at the grocery store. In the experiment, participants were given a shopping list in which they had a choice of snacks—some healthy (apple, orange), some not to healthy (Twix, Mars bar).
You know where this is going: The shoppers holding baskets were more likely than the shopping cart shoppers to pick the candy bars over the fruit. And why is this so? Researchers say that uncomfortable body sensations, such as the strain of holding a shopping basket, induce a "present-biased preference." For grocery shoppers, that means wanting chocolate asap. At least you shouldn't have room in the basket for too many of them.
(MORE: The Sneaky Art of Getting Consumers to Spend More at the Supermarket)
Brad Tuttle is a reporter at TIME. Find him on Twitter at @bradrtuttle. You can also continue the discussion on TIME's Facebook page and on Twitter at @TIME.


text:
Moscow Ballet
Ballet Company Website:
Ballet Company Phone:
Alabama Theater
Venue Website:
Venue Phone:
It's the ultimate holiday tradition from the youngest to the seniors in the family. See Moscow Ballet's Great Russian Nutcracker and create memories for a lifetime. The company of almost 40 dancers is the only internationally touring ballet group to perform to critical acclaim in over 75 North American cities annually. The renowned, award-winning principal dancers and corps de ballet thrill audiences with their expertise, dramatic expression and stunning leaps, turns and drops. The production is known for its dedication to world peace: naming Act II the "Land of Peace and Harmony;" featuring a rose shooting cannon and a stunning "Dove of Peace" with a 20' wingspan. All ages feel the spirit of the season at the Great Russian Nutcracker through the romantic costumes and shimmering backdrops splashed with highlights of Russian history. Tickets are on sale now for Moscow Ballet's celebrated Great Russian Nutcracker in most cities on the North American tour!
Advertising | Privacy Policy | Send site comments to: firstname.lastname@example.com


text:
MADRID – French President Nicolas Sarkozy is widely expected to be kicked out of office in elections Sunday. If he goes, he'll be in good company: Almost every crisis-hit European country that has held an election since disaster struck in 2009 has thrown out its leader.
Here's a look at countries where political cadavers litter the landscape.
— SPAIN: A burst real estate bubble also deflates faith in a Socialist government, which is nonetheless reluctant to admit Spain has problems. Blips of good economic news are seized upon as "green shoots" pointing to recovery. Wrong. Stimulus measures are enacted, then crushing austerity. Unemployment soars. The Socialists of Jose Luis Rodriguez Zapatero are wiped off the map in November 2011 elections; Mariano Rajoy's conservatives take over.
— ITALY: Silvio Berlusconi, the long-serving Teflon leader accused of everything from bedding escorts to serial corruption, finally bites the dust in November 2011. He resigns to cheers and jeers as investors lose confidence in his ability to spur economic growth and rein in debt. It's the end of a political era. Mario Monti, a former European Commissioner, is named to replace him and lead a technical government until elections in 2013.
— BRITAIN: Gordon Brown leads the Labour Party to defeat in the May 2010 election; Conservative Party leader David Cameron becomes leader of a coalition government. Brown had been finance chief for a decade before succeeding Tony Blair in 2007. Brown had boasted endlessly of ending the cycle of boom and bust — but as prime minister he presided mostly over bust.
— IRELAND: Brian Cowen, promoted to prime minister in 2008 after being finance minister, doesn't even get to run. He resigns as leader of the Fianna Fail Party weeks before the February, 2011 election. It doesn't help his party, which suffers its worst ever defeat. Cowen was finance minister during Ireland's banking crisis and the collapse of its housing bubble.
— GREECE: Greek Socialist leader George Papandreou swept to power in October 2009 over conservative opponents, pledging to spend his way out of a deteriorating economic situation. Two years later, at the height of Greece's worst financial crisis since World War II, Papandreou's own deputies force him out after he endangers a hard-won bailout by announcing he would put it to a referendum. He's replaced by caretaker Prime Minister Lucas Papademos.
— PORTUGAL: A month after Portugal requests a 78 billion-euro bailout, the center-left Socialist government of Jose Socrates is voted out of power in June, 2011. Portugal's woes stemmed from a decade of feeble growth as it failed to modernize amid increasing global competition and dug itself deeper into debt.
— DENMARK: A center-right government in Denmark loses power in September in part due to discontent over austerity measures introduced amid the debt crisis. It is replaced by a center-left coalition.
— FINLAND: Finland's government is reconfigured after June elections following a sharp surge in support for nationalists who oppose bailouts for debt-stricken eurozone countries. A conservative-led coalition spanning left and right is formed to keep the nationalist True Finns out of power.
Bucking the Trend:
— ROMANIA: Romanian President Traian Basescu wins re-election in 2009, the year Romania's economy shrinks by 7 percent and Romania takes a 20 billion-euro bailout loan from the International Monetary Fund, the World Bank and the European Union. Basescu, a former ship captain, prevails because he is seen as a strong leader in a time of crisis.
— POLAND: This has been a rare European success story: It's the only European Union country that did not to slip into recession during the global crisis of 2008-2009. Last fall the center-right party of Prime Minister Donald Tusk wins a second straight term in parliamentary elections, making history by becoming the first government since the fall of communism in Poland in 1989 to be re-elected.
— ALSO: Sweden's prime minister is re-elected in 2010 and the prime ministers of Latvia and Estonia are re-elected in 2011.


text:
Creative painter designer beach towels by Squeaky Chimp turn a day at the beach into a fiesta. These beach blankets are made of a super-soft microfiber material to ensure extra bright and vivid colors. They're great for the beach or as an outdoor throw blanket.
- 100% polyester microfiber velour construction
- Size: 30"x60"
- Light, soft velour material
- Made in the USA