text:
"""Define exception redefinitions for SQLAlchemy DBAPI exceptions."""

import collections
import logging
import re
import sys

from sqlalchemy import event
from sqlalchemy import exc as sqla_exc

from oslo_db import exception

LOG = logging.getLogger(__name__)

_registry = collections.defaultdict(
    lambda: collections.defaultdict(
        list
    )
)

def filters(dbname, exception_type, regex):
    """Mark a function as receiving a filtered exception.

    :param dbname: string database name, e.g. 'mysql'
    :param exception_type: a SQLAlchemy database exception class, which
     extends from :class:`sqlalchemy.exc.DBAPIError`.
    :param regex: a string, or a tuple of strings, that will be processed
     as matching regular expressions.

    """
    def _receive(fn):
        _registry[dbname][exception_type].extend(
            (fn, re.compile(reg))
            for reg in
            ((regex,) if not isinstance(regex, tuple) else regex)
        )
        return fn
    return _receive

# NOTE(zzzeek) - for Postgresql, catch both OperationalError, as the
# actual error is
# psycopg2.extensions.TransactionRollbackError(OperationalError),
# as well as sqlalchemy.exc.DBAPIError, as SQLAlchemy will reraise it
# as this until issue #3075 is fixed.
@filters("mysql", sqla_exc.OperationalError, r"^.*\b1213\b.*Deadlock found.*")
@filters("mysql", sqla_exc.DatabaseError,
         r"^.*\b1205\b.*Lock wait timeout exceeded.*")
@filters("mysql", sqla_exc.InternalError, r"^.*\b1213\b.*Deadlock found.*")
@filters("mysql", sqla_exc.InternalError,
         r"^.*\b1213\b.*detected deadlock/conflict.*")
@filters("mysql", sqla_exc.InternalError,
         r"^.*\b1213\b.*Deadlock: wsrep aborted.*")
@filters("postgresql", sqla_exc.OperationalError, r"^.*deadlock detected.*")
@filters("postgresql", sqla_exc.DBAPIError, r"^.*deadlock detected.*")
def _deadlock_error(operational_error, match, engine_name, is_disconnect):
    """Filter for MySQL or Postgresql deadlock error.

    NOTE(comstud): In current versions of DB backends, Deadlock violation
    messages follow the structure:

    mysql+mysqldb::

        (OperationalError) (1213, 'Deadlock found when trying to get lock; '
            'try restarting transaction') <query_str> <query_args>

    mysql+mysqlconnector::

        (InternalError) 1213 (40001): Deadlock found when trying to get lock;
            try restarting transaction

    postgresql::

        (TransactionRollbackError) deadlock detected <deadlock_details>
    """
    raise exception.DBDeadlock(operational_error)

@filters("mysql", sqla_exc.IntegrityError,
         r"^.*\b1062\b.*Duplicate entry '(?P<value>.*)'"
         r" for key '(?P<columns>[^']+)'.*$")
# NOTE(jd) For binary types
@filters("mysql", sqla_exc.IntegrityError,
         r"^.*\b1062\b.*Duplicate entry \\'(?P<value>.*)\\'"
         r" for key \\'(?P<columns>.+)\\'.*$")
# NOTE(pkholkin): the first regex is suitable only for PostgreSQL 9.x versions
#                 the second regex is suitable for PostgreSQL 8.x versions
@filters("postgresql", sqla_exc.IntegrityError,
         (r'^.*duplicate\s+key.*"(?P<columns>[^"]+)"\s*\n.*'
          r'Key\s+\((?P<key>.*)\)=\((?P<value>.*)\)\s+already\s+exists.*$',
          r"^.*duplicate\s+key.*\"(?P<columns>[^\"]+)\"\s*\n.*$"))
def _default_dupe_key_error(integrity_error, match, engine_name,
                            is_disconnect):
    """Filter for MySQL or Postgresql duplicate key error.

    note(boris-42): In current versions of DB backends unique constraint
    violation messages follow the structure:

    postgres:
    1 column - (IntegrityError) duplicate key value violates unique
               constraint "users_c1_key"
    N columns - (IntegrityError) duplicate key value violates unique
               constraint "name_of_our_constraint"

    mysql since 8.0.19:
    1 column - (IntegrityError) (1062, "Duplicate entry 'value_of_c1' for key
               'table_name.c1'")
    N columns - (IntegrityError) (1062, "Duplicate entry 'values joined
               with -' for key 'table_name.name_of_our_constraint'")

    mysql+mysqldb:
    1 column - (IntegrityError) (1062, "Duplicate entry 'value_of_c1' for key
               'c1'")
    N columns - (IntegrityError) (1062, "Duplicate entry 'values joined
               with -' for key 'name_of_our_constraint'")

    mysql+mysqlconnector:
    1 column - (IntegrityError) 1062 (23000): Duplicate entry 'value_of_c1' for
               key 'c1'
    N columns - (IntegrityError) 1062 (23000): Duplicate entry 'values
               joined with -' for key 'name_of_our_constraint'
    """

    columns = match.group('columns')

    # note(vsergeyev): UniqueConstraint name convention: "uniq_t0c10c2"
    #                  where `t` it is table name and columns `c1`, `c2`
    #                  are in UniqueConstraint.
    uniqbase = "uniq_"
    if not columns.startswith(uniqbase):
        if engine_name == "postgresql":
            columns = [columns[columns.index("_") + 1:columns.rindex("_")]]
        elif (engine_name == "mysql") and \
             (uniqbase in str(columns.split("0")[:1])):
            columns = columns.split("0")[1:]
        else:
            columns = [columns]
    else:
        columns = columns[len(uniqbase):].split("0")[1:]

    value = match.groupdict().get('value')

    raise exception.DBDuplicateEntry(columns, integrity_error, value)

@filters("sqlite", sqla_exc.IntegrityError,
         (r"^.*columns?(?P<columns>[^)]+)(is|are)\s+not\s+unique$",
          r"^.*UNIQUE\s+constraint\s+failed:\s+(?P<columns>.+)$",
          r"^.*PRIMARY\s+KEY\s+must\s+be\s+unique.*$"))
def _sqlite_dupe_key_error(integrity_error, match, engine_name, is_disconnect):
    """Filter for SQLite duplicate key error.

    note(boris-42): In current versions of DB backends unique constraint
    violation messages follow the structure:

    sqlite:
    1 column - (IntegrityError) column c1 is not unique
    N columns - (IntegrityError) column c1, c2, ..., N are not unique

    sqlite since 3.7.16:
    1 column - (IntegrityError) UNIQUE constraint failed: tbl.k1
    N columns - (IntegrityError) UNIQUE constraint failed: tbl.k1, tbl.k2

    sqlite since 3.8.2:
    (IntegrityError) PRIMARY KEY must be unique
    """
    columns = []
    # NOTE(ochuprykov): We can get here by last filter in which there are no
    #                   groups. Trying to access the substring that matched by
    #                   the group will lead to IndexError. In this case just
    #                   pass empty list to exception.DBDuplicateEntry
    try:
        columns = match.group('columns')
        columns = [c.split('.')[-1] for c in columns.strip().split(", ")]
    except IndexError:
        pass

    raise exception.DBDuplicateEntry(columns, integrity_error)

@filters("sqlite", sqla_exc.IntegrityError,
         r"(?i).*foreign key constraint failed")
@filters("postgresql", sqla_exc.IntegrityError,
         r".*on table \"(?P<table>[^\"]+)\" violates "
         r"foreign key constraint \"(?P<constraint>[^\"]+)\".*\n"
         r"DETAIL:  Key \((?P<key>.+)\)=\(.+\) "
         r"is (not present in|still referenced from) table "
         r"\"(?P<key_table>[^\"]+)\".")
@filters(
    "mysql", sqla_exc.IntegrityError,
    r".*Cannot (add|delete) or update a (child|parent) row: "
    r'a foreign key constraint fails \([`"].+[`"]\.[`"](?P<table>.+)[`"], '
    r'CONSTRAINT [`"](?P<constraint>.+)[`"] FOREIGN KEY '
    r'\([`"](?P<key>.+)[`"]\) REFERENCES [`"](?P<key_table>.+)[`"] ')
def _foreign_key_error(integrity_error, match, engine_name, is_disconnect):
    """Filter for foreign key errors."""

    try:
        table = match.group("table")
    except IndexError:
        table = None
    try:
        constraint = match.group("constraint")
    except IndexError:
        constraint = None
    try:
        key = match.group("key")
    except IndexError:
        key = None
    try:
        key_table = match.group("key_table")
    except IndexError:
        key_table = None

    raise exception.DBReferenceError(table, constraint, key, key_table,
                                     integrity_error)

@filters("postgresql", sqla_exc.IntegrityError,
         r".*new row for relation \"(?P<table>.+)\" "
         "violates check constraint "
         "\"(?P<check_name>.+)\"")
def _check_constraint_error(
        integrity_error, match, engine_name, is_disconnect):
    """Filter for check constraint errors."""

    try:
        table = match.group("table")
    except IndexError:
        table = None
    try:
        check_name = match.group("check_name")
    except IndexError:
        check_name = None

    raise exception.DBConstraintError(table, check_name, integrity_error)

@filters("postgresql", sqla_exc.ProgrammingError,
         r".* constraint \"(?P<constraint>.+)\" "
         "of relation "
         "\"(?P<relation>.+)\" does not exist")
@filters("mysql", sqla_exc.InternalError,
         r".*1091,.*Can't DROP (?:FOREIGN KEY )?['`](?P<constraint>.+)['`]; "
         "check that .* exists")
@filters("mysql", sqla_exc.OperationalError,
         r".*1091,.*Can't DROP (?:FOREIGN KEY )?['`](?P<constraint>.+)['`]; "
         "check that .* exists")
@filters("mysql", sqla_exc.InternalError,
         r".*1025,.*Error on rename of '.+/(?P<relation>.+)' to ")
def _check_constraint_non_existing(
        programming_error, match, engine_name, is_disconnect):
    """Filter for constraint non existing errors."""

    try:
        relation = match.group("relation")
    except IndexError:
        relation = None

    try:
        constraint = match.group("constraint")
    except IndexError:
        constraint = None

    raise exception.DBNonExistentConstraint(relation,
                                            constraint,
                                            programming_error)

@filters("sqlite", sqla_exc.OperationalError,
         r".* no such table: (?P<table>.+)")
@filters("mysql", sqla_exc.InternalError,
         r".*1051,.*Unknown table '(.+\.)?(?P<table>.+)'\"")
@filters("mysql", sqla_exc.OperationalError,
         r".*1051,.*Unknown table '(.+\.)?(?P<table>.+)'\"")
@filters("postgresql", sqla_exc.ProgrammingError,
         r".* table \"(?P<table>.+)\" does not exist")
def _check_table_non_existing(
        programming_error, match, engine_name, is_disconnect):
    """Filter for table non existing errors."""
    raise exception.DBNonExistentTable(match.group("table"), programming_error)

@filters("mysql", sqla_exc.InternalError,
         r".*1049,.*Unknown database '(?P<database>.+)'\"")
@filters("mysql", sqla_exc.OperationalError,
         r".*1049,.*Unknown database '(?P<database>.+)'\"")
@filters("postgresql", sqla_exc.OperationalError,
         r".*database \"(?P<database>.+)\" does not exist")
@filters("sqlite", sqla_exc.OperationalError,
         ".*unable to open database file.*")
def _check_database_non_existing(
        error, match, engine_name, is_disconnect):
    try:
        database = match.group("database")
    except IndexError:
        database = None

    raise exception.DBNonExistentDatabase(database, error)

@filters("mysql", sqla_exc.DBAPIError, r".*\b1146\b")
def _raise_mysql_table_doesnt_exist_asis(
        error, match, engine_name, is_disconnect):
    """Raise MySQL error 1146 as is.

    Raise MySQL error 1146 as is, so that it does not conflict with
    the MySQL dialect's checking a table not existing.
    """

    raise error

@filters("mysql", sqla_exc.OperationalError,
         r".*(1292|1366).*Incorrect \w+ value.*")
@filters("mysql", sqla_exc.DataError,
         r".*1265.*Data truncated for column.*")
@filters("mysql", sqla_exc.DataError,
         r".*1264.*Out of range value for column.*")
@filters("mysql", sqla_exc.InternalError,
         r"^.*1366.*Incorrect string value:*")
@filters("sqlite", sqla_exc.ProgrammingError,
         r"(?i).*You must not use 8-bit bytestrings*")
@filters("mysql", sqla_exc.DataError,
         r".*1406.*Data too long for column.*")
def _raise_data_error(error, match, engine_name, is_disconnect):
    """Raise DBDataError exception for different data errors."""

    raise exception.DBDataError(error)

@filters("mysql", sqla_exc.OperationalError,
         r".*\(1305,\s+\'SAVEPOINT\s+(.+)\s+does not exist\'\)")
def _raise_savepoints_as_dberrors(error, match, engine_name, is_disconnect):
    # NOTE(rpodolyaka): this is a special case of an OperationalError that used
    # to be an InternalError. It's expected to be wrapped into oslo.db error.
    raise exception.DBError(error)

@filters("*", sqla_exc.OperationalError, r".*")
def _raise_operational_errors_directly_filter(operational_error,
                                              match, engine_name,
                                              is_disconnect):
    """Filter for all remaining OperationalError classes and apply.

    Filter for all remaining OperationalError classes and apply
    special rules.
    """
    if is_disconnect:
        # operational errors that represent disconnect
        # should be wrapped
        raise exception.DBConnectionError(operational_error)
    else:
        # NOTE(comstud): A lot of code is checking for OperationalError
        # so let's not wrap it for now.
        raise operational_error

@filters("mysql", sqla_exc.OperationalError, r".*\(.*(?:2002|2003|2006|2013|1047)")  # noqa
@filters("mysql", sqla_exc.InternalError, r".*\(.*(?:1927)")  # noqa
@filters("mysql", sqla_exc.InternalError, r".*Packet sequence number wrong")  # noqa
@filters("postgresql", sqla_exc.OperationalError, r".*could not connect to server")  # noqa
def _is_db_connection_error(operational_error, match, engine_name,
                            is_disconnect):
    """Detect the exception as indicating a recoverable error on connect."""
    raise exception.DBConnectionError(operational_error)

@filters("*", sqla_exc.NotSupportedError, r".*")
def _raise_for_NotSupportedError(error, match, engine_name, is_disconnect):
    raise exception.DBNotSupportedError(error)

@filters("*", sqla_exc.DBAPIError, r".*")
def _raise_for_remaining_DBAPIError(error, match, engine_name, is_disconnect):
    """Filter for remaining DBAPIErrors.

    Filter for remaining DBAPIErrors and wrap if they represent
    a disconnect error.
    """
    if is_disconnect:
        raise exception.DBConnectionError(error)
    else:
        LOG.warning('DBAPIError exception wrapped.', exc_info=True)
        raise exception.DBError(error)

@filters('*', UnicodeEncodeError, r".*")
def _raise_for_unicode_encode(error, match, engine_name, is_disconnect):
    raise exception.DBInvalidUnicodeParameter()

@filters("*", Exception, r".*")
def _raise_for_all_others(error, match, engine_name, is_disconnect):
    LOG.warning('DB exception wrapped.', exc_info=True)
    raise exception.DBError(error)

ROLLBACK_CAUSE_KEY = 'oslo.db.sp_rollback_cause'

def handler(context):
    """Iterate through available filters and invoke those which match.

    The first one which raises wins.   The order in which the filters
    are attempted is sorted by specificity - dialect name or "*",
    exception class per method resolution order (``__mro__``).
    Method resolution order is used so that filter rules indicating a
    more specific exception class are attempted first.

    """
    def _dialect_registries(engine):
        if engine.dialect.name in _registry:
            yield _registry[engine.dialect.name]
        if '*' in _registry:
            yield _registry['*']

    for per_dialect in _dialect_registries(context.engine):
        for exc in (
                context.sqlalchemy_exception,
                context.original_exception):
            for super_ in exc.__class__.__mro__:
                if super_ in per_dialect:
                    regexp_reg = per_dialect[super_]
                    for fn, regexp in regexp_reg:
                        match = regexp.match(exc.args[0])
                        if match:
                            try:
                                fn(
                                    exc,
                                    match,
                                    context.engine.dialect.name,
                                    context.is_disconnect)
                            except exception.DBError as dbe:
                                if (
                                    context.connection is not None and
                                    not context.connection.closed and
                                    not context.connection.invalidated and
                                    ROLLBACK_CAUSE_KEY
                                    in context.connection.info
                                ):
                                    dbe.cause = \
                                        context.connection.info.pop(
                                            ROLLBACK_CAUSE_KEY)

                                if isinstance(
                                        dbe, exception.DBConnectionError):
                                    context.is_disconnect = True
                                return dbe

def register_engine(engine):
    event.listen(engine, "handle_error", handler, retval=True)

    @event.listens_for(engine, "rollback_savepoint")
    def rollback_savepoint(conn, name, context):
        exc_info = sys.exc_info()
        if exc_info[1]:
            # NOTE(zzzeek) accessing conn.info on an invalidated
            # connection causes it to reconnect, which we don't
            # want to do inside a rollback handler
            if not conn.invalidated:
                conn.info[ROLLBACK_CAUSE_KEY] = exc_info[1]
        # NOTE(zzzeek) this eliminates a reference cycle between tracebacks
        # that would occur in Python 3 only, which has been shown to occur if
        # this function were in fact part of the traceback.  That's not the
        # case here however this is left as a defensive measure.
        del exc_info

    # try to clear the "cause" ASAP outside of savepoints,
    # by grabbing the end of transaction events...
    @event.listens_for(engine, "rollback")
    @event.listens_for(engine, "commit")
    def pop_exc_tx(conn):
        # NOTE(zzzeek) accessing conn.info on an invalidated
        # connection causes it to reconnect, which we don't
        # want to do inside a rollback handler
        if not conn.invalidated:
            conn.info.pop(ROLLBACK_CAUSE_KEY, None)

    # .. as well as connection pool checkin (just in case).
    # the .info dictionary lasts as long as the DBAPI connection itself
    # and is cleared out when the connection is recycled or closed
    # due to invalidate etc.
    @event.listens_for(engine, "checkin")
    def pop_exc_checkin(dbapi_conn, connection_record):
        connection_record.info.pop(ROLLBACK_CAUSE_KEY, None)

redpajama_set_name: RedPajamaGithub


text:
Walton Family Foundation Announces Major Investments to Support, Retain and Increase the Diversity of Educators Nationwide
More than $20 million in new grants driven by the belief that those closest to students are best positioned to find solutions
BENTONVILLE, Ark., Sept. 17, 2019 — Today, the Walton Family Foundation announced funding totaling more than $20 million to support efforts to make the teaching profession more dynamic and sustainable. These grants build on decades of giving dedicated to support, retain and increase the diversity of educators nationwide.
"Access to a great education can be life changing," said Alice Walton in an open letter published in The New York Times Magazine on September 15. "For decades, the Walton Family Foundation has supported innovative approaches to education. Of the many things we've learned over the years, this truth stands out: A great education begins with a great teacher."
Adds Sydney Chaffee, 2017 National Teacher of the Year and a ninth-grade humanities teacher at Codman Academy Charter Public School, "Across the country, teachers are working to change the world for and with our young people. It's essential that this work is sustainable and attractive to diverse, talented, passionate educators."
Areas of support include:
Relevant, rigorous, highly-effective teacher training programs
Bank Street Graduate School of Education: To train teacher candidates in the Teaching English to Speakers of Other Languages Residency Program in New York to address the intellectual, linguistic and emotional strengths and needs of students learning English.
Marian University's Klipsch Educators College: To train future educators through in-classroom residencies and create a loan forgiveness program with the goal of increasing the diversity of the teaching workforce.
Leadership development for educators
Boston Collegiate Charter School Foundation: To support the launch of the new Fund for Teaching Excellence, an effort to increase teacher-led innovation.
Profound Gentlemen: To expand its model to provide increased support, coaching and programming for male educators of color prepared to assume leadership positions in and out of the classroom.
Teach Plus: To build the capacity and elevate the voices of educators in California, Indiana and Texas.
Innovative strategies and programs to advance educator diversity
NewSchools Venture Fund: To launch a $3.5 million competitive funding opportunity to diversify the PreK-12 teaching profession. Up to 14 concepts or early-stage organizations with bold ideas will be eligible for $200,000 on average in funding.
Digital Promise: To expand work with public charter schools and districts to design innovative solutions to the challenge of attracting and retaining a more diverse teacher workforce through convenings, new research and the creation of a Teacher of Color Advisory Council.
"Teach Plus is proud to partner with the Walton Family Foundation to elevate the teaching profession and support diverse and talented teachers to exercise their voice and leadership toward change, in their schools and in their statehouse. When teachers lead, students thrive," said Roberto J. Rodríguez, Teach Plus President and CEO.
This giving builds on the foundation's longtime support for teacher pipelines across the country. With more than $180 million in foundation support over the last 25 years, Teach For America has recruited, supported and trained more than 60,000 educators in regions across the country. Half of Teach For America's educators identify as people of color, making it one of the most diverse sources of public school teachers in the country, and nearly 85% of alumni work in fields that impact students in low-income communities.
The foundation is also the nation's largest philanthropic school startup funder, supporting the creation of more than 2,350 charter, district and private schools since 1997. The majority of these grants support current and former educators who start schools to meet the unique needs of their community's children.
Among other efforts to honor and lift teachers' voices, the foundation's Teachers Inspire series highlights the talented professionals who are inspiring students across the U.S. Hear directly from teachers at www.waltonfamilyfoundation.org/teachers-inspire.
About the Walton Family Foundation
The Walton Family Foundation is, at its core, a family-led foundation. Three generations of the descendants of our founders, Sam and Helen Walton, and their spouses, work together to lead the foundation and create access to opportunity for people and communities. We work in three areas: improving K-12 education, protecting rivers and oceans and the communities they support, and investing in our home region of Northwest Arkansas and the Arkansas-Mississippi Delta. In 2018, the foundation awarded more than $595 million in grants in support of these initiatives. To learn more, visit waltonfamilyfoundation.org and follow us on Facebook, Twitter and Instagram.

redpajama_set_name: RedPajamaCommonCrawl


The Fashion Project is our newest collaboration with the Louisiana Prize Fest. Our mission is to bring economic growth and more awareness of sustainable practices to our local region through the creation and exhibition of art and fashion. Local artists, designers and models will be given the opportunity to explore the entire creative process within a community of like-minded individuals. Over the next several months participants are to produce a collection of works from initial design to final runway with the help of a series of workshops, critiques, and peer support. Each designer will showcase their final collection during the Fashion Project Spring Show on May 31, 2019 at the Horseshoe Casino's Dare Day Club + Pool. A panel of judges will choose the top three designers to participate in the first official FASHION PRIZE in October!
This year's designers include: Cookie Dubois, Leah Golden, James Osborn, Brittani Shabazz, Donna Strebeck, Whitney Warren, Ryan Williams, and Sherri Winseman.
This year's sponsors include: Horseshoe Casino & Hotel Bossier City Louisiana, AKA Event Productions, Britt Elizabeth Photography, Fairfield Studios, Prize Fest, Heliopolis Shreveport News and Culture, Lola Magazine, Lifestyles of Louisiana Ladies, and The Sewing Shop.


Kevin Dooney made a welcome return to racing this month and is happy to report progress in his mental well-being.
The summer may well and truly have ended, weather warnings for wind are back in effect and it is only a matter of time before we move from summer pastures to our group's aptly named 'winter loop'.
At least I managed to get myself back to racing, with some feel of a summer road race, before the winter set in – even if it was an overcast Sunday morning on a windswept motor racing circuit.
My main goal in return to racing was simple, go out hard with the leaders, hang on and see what happens. All things considered, it went well as I took second place after sheltering the eventual winner from the wind for close to two miles.
A change of tactics is probably needed for the next race, but I made myself hurt again which was my purpose that day.
The mixed Raheny team took a valiant second place finish behind a team made up of the pre-race first and second favourite on the men's and women's side. Realistically we never stood a chance given the rules at play. I can just hope that road races moving away from classic club teams to anybody putting together a team for themselves doesn't become a trend.
The immediate post-race recovery was put on the back burner in the name of football. With the first race taken care of, I headed almost straight to the airport to fly to Poland and watch Ireland play a friendly in Wroclaw. Thankfully an international football break in early September every year gives me a chance to get away with my friends and see some different parts of Europe.
Three days of leading the exact opposite life of an athlete is not exactly sustainable, but being able to switch off entirely and take a break from thinking about running is necessary. I fooled myself into thinking I might get some runs done over there. My shoes never emerged from the bottom of my bag.
No long-term damage was done while away and normal service of training resumed when I got back. In other stages of my career I would've been very stressed out about taking three days off for a holiday, even days I wouldn't be training hard anyway.
Accepting that in general, my training has been going well in the past months means I can allow myself a little respite and kindness when it's appropriate.
As I've come through the past few years I've learnt that things won't be perfect, things will come up, that means I have to be a little flexible. While previously slight changes in routine could play with my mental health, a big part of my journey has been learning to be less black and white in my thinking.
It is not always a winning battle but the general progression is going well. For the first time in some while, I can generally say I'm happy with where my mental health is at.
That isn't to say I don't have bad days, but for me, the largest victory is in smoothing out my mood graph and understanding when it is I feel down and being able to deal with it accordingly.
Opening up about this on Fast Running was a big step for me in actually admitting that these are things that I needed to address. In the past, I would hide any efforts to work on my mental health because that would be admitting to having a problem to begin with.
Now I have no fear of being fully open about going to see a counsellor, working with a sports psychologist, meditating daily (or as close to daily as I can). Journaling is the next tool I need to add to my routine. It is strange to think that I meticulously log my physical health on a daily basis but make no effort to keep a better tab on my mental health.
This blog gives me a great opportunity to write once a month about where I'm at but very often proves a more high-level exercise rather than examining the day to day feelings.
It is nice to have some time now to reflect on these things when the going is good. Having a race under my belt means I can fully move on from the spring and summer gone by. There is also time until I get fully back to the cross country so I can enjoy my training now and feel some of the old fitness returning.
Up next I have got the Rathfarnham 5k on Sunday (September 30), which is generally a good fast race and a chance to open the legs out. After that, I am very fortunate to be taking part in the Izumo Ekiden in Japan on October 8, so I should at least be guaranteed material for the October blog already.
It is great to feel a sense of optimism about where I am at and not just in a running sense. There is plenty to look forward in the coming weeks and months but for now, I can just happily live in the current day.
Kevin Dooney features in the 'Fast 10: class of 2018' and over the course of the year will share his running journey. You can read Kevin's previous posts here and further information about the 'class of 2018' can be found here.


text:
Q: How to build unit tests in Guile, which output to the TAP standard? I would like to have a Guile script, which implements functions, which output test result messages according to the TAP protocol.

A: There is also now ggspec, a Guile unit testing framework which can output results in (a subset of) TAP format. To do so, put all your test (Scheme) scripts in a project subdirectory named spec and run:
$ ggspec -f tap

Since ggspec is a full-fledged framework with setups, teardowns, and test skipping, there are more options. See the sample test file that comes with the project (spec/lib-spec.scm) for a good overview.
Disclaimer: I wrote ggspec.

A: The following script, to be named guiletap.scm, implements the frequently-needed functions for using the TAP protocol when running tests.
; Define functions for running Guile-written tests under the TAP protocol.
; Copyright © 2008 by Omer Zak
; Released under the GNU LGPL 2.1 or (at your option) any later version.
;;;
;;; To invoke it:
;;; (use-modules (guiletap))
;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-module (guiletap))
(export plan)
(export ok)
(export bail_out)
(export diag)
(export is_ok)

(use-modules (ice-9 format))

; n is the number of tests.
(define plan
  (lambda (n) (display (format "1..~d~%" n))))

; n -        test number
; testdesc - test descriptor
; res -      result which is #f at failure, other at success.
(define ok
  (lambda (n testdesc res)
    (if (not res)(display "not "))
    (display (format "ok ~d - ~a~%" n testdesc))))

; testdesc - test descriptor
(define bail_out
  (lambda (testdesc)
    (display (format "Bail out! - ~a~%" testdesc))))

; diagmsg - diagnostic message
(define diag
  (lambda (diagmsg)
    (display (format "# ~a~%" diagmsg))))

; n -        test number
; testdesc - test descriptor
; expres -   expected test result
; actres -   actual test result
(define is_ok
  (lambda (n testdesc expres actres)
    (ok n testdesc (equal? expres actres))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; !!! TODO:
; !!! To be implemented also:
; plan_no_plan
; plan_skip_all [REASON]
;
; is RESULT EXPECTED [NAME]
; isnt RESULT EXPECTED [NAME]
; like RESULT PATTERN [NAME]
; unlike RESULT PATTERN [NAME]
; pass [NAME]
; fail [NAME]
;
; skip CONDITION [REASON] [NB_TESTS=1]
; Specify TODO mode by setting $TODO:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; End of guiletap.scm

redpajama_set_name: RedPajamaStackExchange


Thinley Yangchen Dorji, a producer at the Bhutan Broadcasting Service Corporation (BBS), takes us on a tour behind the scenes of Bhutan's first homegrown TV show for kids. Called "My World", it's a 30-minute program for youngsters aged eight to twelve that began airing regularly in January. Welcome to "My World"!
Prior to "My World" there were no Bhutanese television programs for children. Foreign programming available via satellite was entertaining but had little educational value. Pema Choden, BBS's General Director until the end of March 2011, approached DW-AKADEMIE for support. Her aim was to have a quality program tailored to children in Bhutan.
Bangladesh is shocked by what has happened in Japan. People here have closely followed the news to get the latest updates from newspapers, TV, radio and online.
It's very tough for the media to handle what's happening in Japan, as there is also another big issue that the people of Bangladesh worry about very much. Many people here are still taken aback by the latest events in Libya, because many Bangladeshis live and work there and have now become victims of the uprising in this North African country.
Japan's tsunami and earthquake are still important news in Bangladesh, as this country is also one of the sufferers of climate change. Nonetheless, Japan's nuclear crisis is also getting attention in the newspapers and at TV and radio stations here as the situation worsens.


Christy Webber counts on talented managers to drive her firm's success.
Christy Webber Landscapes, Chicago, Ill., has received numerous awards for excellence over the years, and for Christy Webber, president, her landscape business is about much more than making the grass look good. It's about sharing the outdoor life, which she loves.
"I'm definitely an operations person," says Webber, 50, who relies on her well-trained staff to handle the business aspect of the business. She enjoys the hands-on aspects of landscaping, but always has an eye to growing the company, including folding in acquisitions if they're a good fit. Her company generates about $30 million annually and employs about 400 people.
Located on Chicago's west side on a 12.5-acre eco-industrial park, Christy Webber Landscape's beautiful headquarters, named Rancho Verde, a redeveloped brownfield, has won numerous awards. The headquarters building is certified LEED Platinum, the highest classification granted by the US Green Building Council for Leadership in Energy and Environmental Design (LEED). The firm is a CWL – a certified Woman-Owned Business Enterprise with the city of Chicago and Cook County and a certified Female Business Enterprise with the state of Illinois.
With an impressive list of residential and commercial clients, the firm has been recognized for its work on major Chicago sites that include Millennium Park, McCormick Place West, Soldier Field, and O'Hare and Midway airports. Projects have included the installation and maintenance of green roofs at a number of Chicago sites.
Successfully blending the outdoors into today's living is important to Webber, and to reach that goal she has recognized that successful management strategies are a must. She has incorporated these strategies into her business and sees them as essential for the industry as a whole for both large and small landscaping businesses. She notes the importance of landscape companies reinvesting in their companies to help assure successful operation.
Webber grew up spending extensive time outdoors, mowing grass and just enjoying nature in her native rural Michigan. She earned a physical education degree at University of Denver, cutting grass to earn extra money while in college, and tried teaching in her field before moving to various other jobs. She eventually found herself doing odd jobs that included cleaning houses or caring for yards, and she realized that she loved working outdoors. She was soon in the grass-cutting business, moving into lawn care and landscape maintenance followed by small landscape design-build projects.
She bid on her first major municipal project in 1997, and obtained a landscape installation contract for Millennium Park, launching Christy Webber Landscapes as a significant player in the Chicago landscape business scene. The firm received an Illinois Landscape Contractors Association 2010 Gold Award for landscape maintenance at Millennium Park and has received numerous awards in both residential and commercial landscape design and construction, and maintenance.
The company has installed green roofs at a number of sites, and done projects at O'Hare and Midway Airports and at Millennium Park. It has also helped beautify Soldier Field, shown here, where the NFL Chicago Bears play.
While Webber has continually emphasized the delivery of quality work in all segments of her company, she has also focused on assuring efficient management. In 2006, Christy Webber Landscapes acquired a landscaping firm in Blue Island and began expanding services to the surrounding suburbs. Commercial snow removal became a major segment of operations for the firm.
"We had some good snow business," Webber says. A retail garden business was acquired in 2008.
While Chicagoland continued to grow and expand, the landscaping industry saw major growth as well. Christy Webber Landscapes successfully bid major jobs, and the company grew as a result of those successful municipal bids and commercial jobs. "As an incumbent in the bidding process, I knew how the city worked," Webber says. "I understood the system for bidding and knew what they were looking for." Concurrently with the economic downturn, a number of Chicago administrative changes have impacted the bidding process on increasingly fewer jobs.
Christy Webber, originally from Michigan, has always loved the outdoors and still enjoys the operations, hands-on side of her business.
She adds, "We made some mistakes, but we hired great entrepreneurs and a great CFO, Roger Post." Providing quality landscape service has been a consistent expectation and having good staff in operations has been an essential part of that quality work delivery. For Webber, the challenge has been in successfully managing the business aspect in landscaping for which she strongly credits having the right staff in place. Having that right staff at all levels of the operation is an essential element to her success.
She notes the importance of allowing people to grow with the business and replacing staff that did not grow in the ways needed to assure successful business management. The business mix has changed with an increased in contracts with homeowners associations, and with that change, a continued focus on profit margins in bidding contracts with homeowners associations has been necessary.
Both Webber and Post agree that the biggest challenges and the greatest opportunities for continued growth lie with continually improving business management practices so that the company can compete successfully against national maintenance companies.
"Our short-term issue focuses on having the right resources. The longer-term issues are on developing the right layers of management. We need to continue developing our great staff so I can continue with acquisitions," says Park.
Webber says that that among the lessons she learned the hard way was not buying proper equipment soon enough. "We often didn't buy the proper equipment, and it cost us more to do many jobs such as specific mowing jobs," she says.
Looking to the near future, Webber is concerned about The Affordable Health Care for American Act's impact to the industry and the ability of landscapers to meet the health care provision requirements while still operating legally. Providing health care for all employees will be a major outlay for landscapers throughout the industry.
In an industry where the rising cost of doing business is already a major concern, assuring that employees are legal and meeting the health care requirements loom as a major future concern.
And, of course, there's always the issue of unrealistically low bidding on projects, which has grown after the 2009 Recession and its aftermath. Webber says her company pays close attention to profit margins in bidding, purchasing proper equipment and making sound business decisions builds business success, not beating down everybody else's price.


Until recently, my experience with the Harley-Davidson Fatboy was mostly informed by its appearance in Terminator 2: Judgment Day.
So when Harley-Davidson sent us a Fatboy S (technically the FLSTFBS, in MoCo lingo) to ride around Toronto for a week, I started thinking of jumping the bike off the Gardiner Expressway to recreate a T2 scene that didn't involve someone butting out a cigar on my chest. Unfortunately, there was a very specific "No Jumping Bikes Off The Friggin' Gardiner" clause in HD's waiver so, instead, we rode the big cruiser both in and out of town to see how it works as an everyday bike.
Since its debut at Daytona Bike Week nearly thirty years ago, the Fatboy has undergone only subtle aesthetic changes—while the chassis and engine have been continuously updated, the fundamental design of the bike remains the same. What that translates to is a very iconic bike that delivers on the feelings that marketers of cruiser bikes promise. And the Fatboy is far and away the cruiserest of cruisers.
On a sunny weekday, I took the bike for a 400 km ride—a mix of divided highways and two-lane country roads south of Hamilton towards Port Dover and along the Lake Erie shore. On the smaller secondary highways, the bike really shines. The 80-100 km/hr country cruise is the Fatboy's wheelhouse and the monster Screamin' Eagle 110ci engine lumbers along effortlessly through these backroads and packs more than enough punch to easily blast past the dump trucks and delivery vans that populate them throughout the week.
I'm pretty familiar with the 110 engine from riding the Dyna Low Rider S last year so I knew to anticipate the incredible heat the big mill throws up at its rider. I was pleasantly surprised, though, by how little fuel the Fatboy used during my countryside cruise—after around 250 km (of "spirited" riding and still far from empty) I put less than 12 litres in the tank. Less pleasant was the stock seat. I'm much more partial to mid controls than forwards, and floorboards are always a bit weird to me for the first while, but after a couple of hours in the saddle my tailbone was begging for a break. Perhaps the Fatboy is designed for riders with a more-ample backyard than my own, I am rather boney, so if I owned a Fatboy a new seat would be my priority.
Back in the city, commuting to work across town started out a little sketchy. The combination of the big, heavy bike and the floorboards that seemed to scrape the pavement around every corner took some getting used to. However, once I sorted out how to get the most out of the Fatboy—steering a little more and leaning a little less—it's a very satisfying bike to whip through traffic. I decided to commute like I always do—zipping between backed up traffic and parked cars and around streetcars whenever possible to maximize the benefit of having a motorbike instead of a car in traffic. The Fatboy is anything but "zippy" but its low seat height and the seemingly infinite torque of the Screamin' Eagle engine makes for a much more maneuverable and punchy bike than I had first assumed.
So how does the Fatboy fare as an everyday bike in a bustling metropolis? It's pretty damn fun, actually. It's heavy and hot but it feels like a big, badass Terminator bike and dragging floorboards gets more attention in traffic than any high-viz vest ever will. By design, the Fatboy is the archetypal cruiser bike—it's an 1800 cc lawn chair—a laid back, Sunday afternoon kind of ride made for country roads and no set schedule. However, like most bikes, it's best at what it was designed for but it can also be a hell of good time when you push it outside of its comfort zone a little bit. Ripping through downtown rush hour traffic on a blacked out, 750 lb Fatboy? Hasta la vista, baby.


Sunken City is a location in Oracle of Seasons.
Sunken City is a secluded town located in northeastern Holodrum, just south of Mt. Cucco and the northern peaks of Holodrum. As its name suggests, the city is entirely flooded, stranding its citizens, most of which are unable to swim. The city is only seen as such in the entire game. The flooding is said to have been caused by the snow from Mt. Cucco to the north melting in large quantities due to the erratic changing of the seasons. The snowmelt gushes down into the city in two waterfalls from caverns at the base of Mt. Cucco. To reach the Sunken City, Link must pass by the Moblin's Keep, although he can warp to the city thanks to the Gale Tree located there (actually the first Gale Tree Link encounters in the game).
If Link has not already met Dimitri (having instead obtained either Moosh or Ricky's flute), Sunken City is where Link meets him for the first time. Link will find Dimitri being harassed by three mischievous children of the city, the self-proclaimed Safety Patrol. Link can disperse the children by giving their leader all his Bombs. As thanks for saving him, Dimitri lets Link ride on him. Using Dimitri's abilities, Link can swim up the waterfalls north of the village into the caverns beneath Mt. Cucco. If Link has already met Dimitri and obtained his flute, the event with the Safety Patrol will not occur.
The waterfall to the east leads to a cavern where the Master Diver resides. The other contains a Treasure Chest which holds the Master's Plaque, which can be traded to the Master Diver for the Flippers. To reach the Treasure Chest, Link must solve a puzzle which consists of pushing four blocks into a position where they can all be hit simultaneously with the Spin Attack.
With the Flippers, Link can dive into the secret underwater caverns of the city. The one to the south is drops into a cavern of underground waterfalls, called Sunken Falls, where, in a Linked Game, Link meets Vire, General Onox's henchman (hidden in a Treasure Chest), and obtains the Pyramid Jewel. This cave opens into the Woods of Winter. Another underwater cave to the northwest of the village is a secret passageway to Mt. Cucco.
To the south of the city is a rise that can only be reached in winter when the snow creates a slope that allows Link to climb it. Atop this rise is the Witch's Hut, where Syrup resides. In summer, vines grow on the small cliff in the city. These can be climbed to reach a small cave containing a Treasure Chest which holds a Gasha Seed.
The home of Ingo the vase collector is located in the northwestern corner of the city. In the Oracle of Seasons Trading Sequence, Link trades him the Goron Vase for Fish.
After defeating the Great Moblin and destroying his keep just west from the city, Link may find a discouraged Great Moblin and his minions hiding in an abandoned house in the southeast corner of the city while they try to rebuild their lair bomb by bomb. Link can destroy the house by igniting the pile of bombs in the house with another bomb or an Ember Seed. The Moblins will flee, but will return and rebuild the house (albeit in a much shabbier state), and will begin to make bombs once again. Link can blow up this house a second time, but if he attempts to do so a third time, the Moblins stop him and throw him into the house as it explodes, killing him.
This page was last edited on 19 April 2019, at 23:20.


text:
Maud or Mabel.
Eiddwen
Giving up smoking is something many of us contemplate and many of us achieve. Enjoy the following story with a hint of comedy thrown in.
ttps://www.dreamstime.com/photos-images/which-way-to-go.html
Brrrrrrrrrrrrr!!!! Brrrrrrrrrr!!!! Brrrrrrrrrr!!! "Oh for god's sake!!!" Maud's hand slapped down on the offending alarm clock like a driven rolled up newspaper slamming down on a very unlucky fly. Poor Monty the beagle had such a start that he fell off the bed and landed on an undignified heap on the floor, whilst poor Python the cat sprung up with fear, landed on Monty's back and they both went racing down the stairs and into the safety of under the kitchen table.
In the midst of this commotion Maud was slowly awakening from a deep slumber, out of the shock caused by that silly clock and into reality!!! As the mist finally cleared the realisation of why she had a new clock dawned on her, of course it was THE DAY. New clock, new day, new start!!!!
'THE DAY' that was going to alter the whole direction of Maud's life!!!!!
"This is it!!" she told herself as she waddled her ample body over to where her humongous robe hung. Maud did not like calling it a dressing gown, no it was definitely a robe. A bit grander or so she tried to convince herself!! "Now then" she muttered to herself, "Let's get on with 'THE DAY!' She squashed her extremely wide feet into her somewhat stretched slippers with great determination. She meant business!! No-one was going to change her mind so they needn't bother even trying!!! Even more important she was going to do it on her own!!! No help or support for her!! No she was made of stern stuff! Yes she was going to give up smoking!!!!! Oh yes they hadn't seen anything yet!!! She stamped her authority all the way down the stairs and into the kitchen!
"C'mon Monty and Python out you both go sweeties," she said in a very refined loving voice that was somewhat false. Monty looked out of the corner of his eyes at her as did Python. 'What was up with Maud? By now she would usually be sat at the table with her cup of tea and with that awful, smelly, smokey thing hanging out of her mouth.' 'She used to open the back door without a word. It certainly wasn't like her to be talking so sweetly to them. Very suspicious indeed!!!!' Very, very strange!!!!
Next door at No 22 was where Mabel lived with her Springer Spaniel
Dexter and her cat Snowy. Mabel's early morning wake up call was a very delicate peel of bells from her dainty pale pink alarm clock. Dexter stretched and yawned from his bed in the corner as did Snowy and they both jumped up beside Mabel on the bed to have their early morning routine of ears and tummies being tickled. "Do you know what today is?" she asks her two companions. They look at her as if they understood every word she said. Snowy rubs herself against her while Dexter wags his tail at top speed!!!
Mabel carries on "Yes it's giving up smoking day!" She walks down the stairs with her two companions at her heels. She opens the back door and they both run out to the garden eagerly after being in all night. Mabel goes in to her bathroom cupboard and takes out a box. Out of this she takes out a sealed packet, opens it and sticks the plaster that's inside on to her upper arm. She then goes outside to call the pets in. Just at that precise moment Maud from next door also has the same mission in mind.
"Hello Maud," Mabel calls over to her, "This is it then. THE DAY is upon us. Good luck!'" Mabel's friendliness is genuine.
"I don't mean to be rude but I'M not the one who's going to need luck lovely!" Maud's tone is so condescending and patronising as she carries on. "It's going to be easy for me you're the one who's going to need all the luck you can get!" "I can see you've got you nicotine patch on. Bless you my poppet."
"There's no need to feel bad about it sweetie," Maud is getting carried away now and can't stop that overworked tongue of hers. "No no no!! It's not your fault that I'm stronger willed than you, but you remember because it's going to be easy for me I'll be here for you." "Don't hesitate to call me for support when things get tough for you," Maud at that point returns to her kitchen before Mabel has a chance to reply, with Monty and Python on her heels.
Mabel totally unruffled smiles to herself before returning to her house and says quietly to herself: 'We'll see Maud, we'll see!!"
Maud is feeling so smug and self satisfied: "Did you see Mabel with that silly patch on her arm?" she asks Monty who still can't quite work out why Maud is talking so much to him and Python today. "Human's!!" he says in doggy language, "I'll never understand them."
"You just wait it won't be long before she's knocking on the door begging for my support, and then I'll just have to tell her how it's done in True Grit style," "Oh my poor deluded friend!!!"
The remainder of DAY ONE passed by pretty uneventful; the two women spoke to each other briefly as they left their pets out to relieve themselves before retiring for the night.
"How are you doing?" Maud asks.
"Not too bad at all," replies Mabel. "Feeling a little rough round the edges." I could really have done with one a couple of hours ago but I'm determined to see it through!!" "How are you doing?"
'Flaming wimp!' Maud scornfully thinks to herself, but Mabel could sense what was going on in her neighbours mind therefore was ready for Maud's reply:
"PPwwff!!! No different to how I thought I was going to be, haven't given it a thought at all!!" Maud deliberately omitted to tell her neighbour about the whole packet of chocolate biscuits that she had scoffed in half an hour, stuffing them all at double speed into her mouth in an effort to combat the craving for that cigarette. When she glimpsed Monty staring at her she growled at him through a mouthful of choc biscuits. "What are you looking at !!!"
"Oh well there we are then, ready for another day tomorrow, upwards and onward," Maud practically spat the words out in an effort to show how determined she was.
"Good night then," Mabel says her farewells before stepping back into her own kitchen. 'Why do you do it Maud?" she asked herself before climbing the stairs. It was evident that Maud was finding it difficult. The strain in Maud's voice and the extra deep frown lines across her forehead were another tell tale sign. Anyone else would have told Maud in no uncertain terms about her offending attitude, but not Mabel. Mabel had the patience of a saint and knew that Maud was feeling bad enough without anyone making it any worse!! Poor Maud had a very kind heart; she just had to show this hard, tough front. Probably feared that if she dropped it she would FAIL, and that word was not in Maud's dictionary!!!!
Both women were in bed and the pets in their beds. Monty and Python on the bed with Maud and Dexter and Snowy in their baskets in Mabel's bedroom. Glorious peace reigned until a deafening, bloodcurdling and eerie "WWOOAAH!!!!! WWHHOO WWHAHAHAHAHA!!!!!" Invaded every delicious warm, cosy crevice, of the silent night.
Poor Mabel shot out of bed before she was even awake. Dexter and Snowy were huddled together like one big quivering ball!!! "Oh dear me what on earth……………?" Mabel started to say but the awful noise cut into the midst of her sentence " WWWWOOOOAAHHH!!!!!!!!WOWOWO WAA WAA WOAH!!!!!"
"It's coming from Maud's house!!!" Mabel says to Dexter and Snowy who both looked petrified!!
"WWWHHHOAAOHH!!!! Oooh yyes wwwhateever yyyou ssay!!!! I'm listening to you WWWWOOOOAHHHH!!!!!"
Mabel was still listening intently and looked puzzled more than frightened now.
"Yes I will sing whatever you want me to as long as you promise to give me a cigarette!!"
"WWWWWOOOOOOOAAHH!!! "Am I singing loud enough for you ?" WWHHAAWWHH!!" The howling just carried on and on………..but now seemed to be coming from a different direction!!
The awful noise seemed by now to be coming from the front of the house, Mabel got out of bed and peeped through the curtains. "What on earth …………!!" she said to Dexter and Snowy. Maud was out in her front garden headed towards the gate making that awful blood curdling howling that was obviously meant to be singing!
She was approaching the gate saying "Ppplease lead me to the cigarettes oh mister oh please I need a fag!" she called to an imaginary person who was obviously meant to be leading the way. "I need a Fag!!" she uttered before making that awful howling that was meant to be singing again. Mabel instantly dived into her dressing gown, rushed downstairs and out into the front garden. Poor Maud was obviously sleep walking due to her craving for nicotine! Dexter and Snowy stayed in the safety of the house thinking how brave Mabel was going out!! 'What on earth was going on out there?!' Poor Monty and Python hid in their own home even more frightened!!!!
By now there was quite a collection of neighbours out in the moonlit night watching the free show that Maud was giving them.
"Brilliant entertainment this," said one of them rubbing his hands with glee whilst the rest of them laughed in agreement!!
Mabel reached Maud who by now was out on the pavement and put her arms around her shoulders.
"Come on Maud," she said gently, at the same time leading her back to the safety of her house. Mabel called over to the spectators "Ok the shows over, you can all go back to your beds now!!" Maud was still her operatic self, "WWWOOOAAAHHH!" she belted out. "Where's that fag, WWWHHHOOAAHH!!" she shouted stamping her feet at the same time!!
Some of the neighbours looked a bit sheepish while others were openly and loudly laughing. Back in the warmth of the kitchen Maud was slowly coming out of her trance. Mabel had made her a strong coffee with a shot of brandy in it!! "Come on take a sip," she coaxes Maud to drink a little of it.
"What on earth is going on?" Maud demands realising it was the middle of the night and she was freezing cold!! Mabel was in her kitchen in the middle of the night and Monty and Python were quivering under the table." "Will someone please tell me!!" she demands.
Mabel ever so calmly told her what had happened. Maud then slowly but surely remembers the dream, no actually nightmare she had just had. She tells Mabel about it;
"There was this horrible, nasty looking man telling me if I sang and followed him he would give me a cigarette!!" Maud's mouth hung open not being able to believe that her craving for nicotine had let her to have that awful nightmare. Oh dear how awful, how ashamed she felt! How was she ever going to face anyone again? Oh no this was just so awful……..!!
The next evening Mabel and Maud were to be seen dressed warmly walking towards the local Leisure Centre. A few of their neighbours called out 'Good evening going for singing lessons Maud?' with big smirks on their faces while others giggled as they passed, but Maud held her head up high and pretended not to notice!!
They reach the centre and Mabel leads the way to the door with the sign 'PAT JAMES STOP SMOKING WALES/DIM SMYGU CYMRU' on it.
"Are you ready?" Mabel asks kindly and Maud nods in return. As Mabel knocks a voice calls from within "Come in," A lady with a warm welcoming smile on her face gets up and warmly greets Mabel before turning to Maud and offering her a welcoming hand.
"I'm Pat, and I'm so glad you've decided to join us Maud."
"Oh no it's my pleasure," replies Maud before adding; "I would advise anyone to go for support when giving up smoking."
"Why do people want to make it so much harder on themselves when there is support out there I will never understand!!?" concludes Maud.
"That's the spirit!" Pat says encouragingly and at the same time Maud gives Mabel a knowing wink as they begin their no smoking course.
Yes both myself and my hubby managed to succeed and give up smoking and I was actually 'Maud' who at the start did not believe in going for support but thankfully did not have to go through everything which Maud experienced before changing my mind.
I hope you have enjoyed my comeback story. It is so nice to be back on here with you all again.I have now invested in a laptop which means I can also carry on writing whilst I am in work. I look forward to catching up with old friends and also making many new ones whilst enjoying all your hubs.
Much love to you all from my little corner of Wales.
Eiddwen (author) from Wales on February 26, 2020:
Really great to be back in touch again Shauna. I can't believe that so much time has passed by. Here's to a long time to come of hub sharing on here.
So lovely to hear from you too Peggy and so nice that so many of you are still on here. It is indeed like coming home.
It is so nice to be back Audrey and I am determined this time that I am here to stay. Thank you for taking the time to stop by and comment. . Lots of love from my little corner of Wales.
Audrey Hunt from Idyllwild Ca. on February 24, 2020:
This is a marvelous comeback story, my friend. And congratulations on being featured on Letterpile. It's wonderful to see you here again. You've been missed.
Smoking, as I understand it, is a very difficult habit to quit. Congratulations!
Peggy Woods from Houston, Texas on February 24, 2020:
Welcome back and congratulations to you both for giving up smoking!
Shauna L Bowling from Central Florida on February 24, 2020:
Eddy, it's sooooooo good to see you! I was actually thinking about you a couple of weeks ago.
I love this story. I couldn't help but recognize the humor in the names you gave Maud's pets. Who doesn't like Monty Python?!
It's really good to see you back. Congrats on quitting smoking!
How nice to be back on here Nell. I am looking forward to catching up with your progress also which I must say is inspiring to say the least.
Thank you Kari. Here's to a future of writing and sharing.
How lovely to be back with you again Ruby and there's always that sense of coming home with hub pages. Here's to so many more for us both to share on here.
Thank you so much Dora. Looking forward to reading all your hubs also.
Thank you Eric and it is so nice to be back amongst you all.
Thank you Linda. Here's to so many more for us both to share on here.
Linda Crampton from British Columbia, Canada on February 23, 2020:
I can't help feeling sorry for Maud, despite her attitude. Congratulations on giving up smoking in real life! It was lovely to read another article written by you. I hope you create many more.
Eric Dierker from Spring Valley, CA. U.S.A. on February 23, 2020:
Good to read from you again. I did it in isolation without support. But now everyone congratulates me. Stopping the habit is strange at best.
I do hope with you shiny new laptop to hear from you more.
Dora Weithers from The Caribbean on February 23, 2020:
Great story of the effort to quit smoking and the success to which togetherness and support made their contribution. Best to you in your renewed effort on HubPages.
Ruby Jean Richert from Southern Illinois on February 23, 2020:
This was hilarious! I know first-hand how difficult it was to stop smoking. I quit in 2004. I tried the gum, patches, even was hypnotized, finally realized the gum and patches only made me crave a cig, that much more. It is so good to see you writing again. In case you don't recognize the name Richert, you knew me as Ruby Fuller. I loved your story.
Kari Poulsen from Ohio on February 23, 2020:
Congratulations for giving up smoking! I love the story.
Nell Rose from England on February 23, 2020:
Hi Eddy, LOL! I love it! And well done for giving up smoking. I managed to stop about 6 years ago, and yes I have put on weight, which I am constantly trying to get rid of! But it's okay, it is better than smoking. Good to see you back!
Thank you Liz and so glad you enjoyed.
Thank you Olusegun.
OLUSEGUN from NIGERIA on February 23, 2020:
Liz Westwood from UK on February 23, 2020:
This story kept me hooked to the end. I liked the parallel stories and the twist near the end. Congratulations on giving up and making use of your experience to write this.
Thank you Bill for taking the time to read and comment. Here's to so many more to share on here.
Thank you so much for taking the time to stop by and comment Pamela.
Bill Holland from Olympia, WA on February 23, 2020:
So good to have you back among us, and congratulations on giving up the smokes. A job well done. both of you!
Pamela Oglesby from Sunny Florida on February 23, 2020:
This is such a good story and it is nice to read something from you again. I was never a smoker but this story is quite humorous. The writing is excellent in my opinion, so I would like to read some more of your stories.
Hi Devika this is my first hub for a very long time but I hope to be back permanently amongst you all. Thank you for stopping by and taking the time to comment.Looking forward to catching up with your hubs also.
Devika Primić from Dubrovnik, Croatia on February 23, 2020:
Hi it has been a while since I have read your work. Smoking is a bad habit and giving it up is a challenge as you say, you have and that is a good part on you for the way you handle it.
My Window On Life.
By Eiddwen
Behind That Smile.
I Am Still Me!
Oh How I Wonder?
The Bleakness of our Life's Winters.
Who or What Inspires?
Yesterday I Thought I Knew.
Oh Yes We Can!!!!!
Summertime Fun-Flash Fiction
By Ruby Jean Richert
Life by The Rails - Response to Billybuc's Photo Prompt Challenge #4
By Shauna L Bowling
Kick in the Ass -Response to Billybuc's Photo Prompt #03
The Prophecy of Masks - Flash Fiction.
By Nell Rose
A Christmas Ghost Story - Going Home
A Day at the Beach - a fiction short story
By Suzette Walker


Good Life International sells liquid nutritional supplements through independent distributors. Good Life International's stated mission is "to provide a superior product line and business format so that people can affordably support a healthy lifestyle,increase their time spent with loved ones, and experience a higher quality of life."
Locate Reps and Rep interested in offering Good Life International products or working with you to build a business list on Npros. Click or scroll down to find a rep near you.
Find Good Life International Prospects. Get Fresh Leads.
No Good Life International events in Work from Home Business calendar.
Be the first to add a Free Good Life International Event Listing.


We uh filled it in with uh some uh fill.
Oh no, I like popcorn. I don't like what it does.
Water goes out the inlet and in the outlet.
Under 50 or over 50, everyone loves it here.
Really all faiths have so much in common.
What an imagination he has.
I see what comes out of people's bodies.
Wind. You can't see it, but it's a force. It acts on the world.


We are DNV GL Business Assurance Group AS, a Norwegian registered company of Veritasveien 1, 1363 Høvik, Norway, registration number 945 748 931 ("we" "our" " us" or "DNV GL"). The website www.dnvglviewpoint.com "ViewPoint" is maintained and provided to you by Toluna UK Ltd and managed by DNV GL.
ViewPoint is a customer exclusive initiative which provides its members with an opportunity to voice opinions and receive research insights before it is shared with the public. The topics are closely related to our assurance services and considered to be an extended value-added benefit complementing the service delivery under the contract.
We respect your privacy and are committed to protecting your personal data. This privacy notice describes how we collect, use, share and secure personal data you provide on www.dnvglviewpoint.com (the " site") when you become a community member and participate in surveys and/or research studies ("surveys"). It also explains your privacy rights and how laws that are applicable to you may protect you.
How do you leave ViewPoint?
When you agree to become one of our community members, you are able to participate in our surveys, read relevant news and participate in a discussion forum to interact with community members. We will ask you to complete the registration form on the site or via links displayed on our websites. As part of your registration, you will provide us with your Contact data and we will through your participation in the surveys obtain certain other data about you, such as profile data (e.g. role in company, turnover of company, employees of company, industry sector).
Contact data - email address, name (includes first, last), gender (not compulsory), country.
Identity data - panellist id and username if so generated by the system.
Technical data - login data, date/time stamp.
Sending you invitations for your participation in surveys - to ask you if you are interested in participating in our upcoming surveys.
We use your Profile data for matching you with appropriate surveys to see if you qualify for particular surveys and for statistical purposes.
All of the responses we collect from you via our surveys are aggregated and anonymized before sharing findings. This means that information coming from our analysis is provided about groups of individuals based on profiling and not on an individual level.
From time to time your personal data is transferred from a Toluna company that is located in the European Union to a country that has not been recognised as providing equivalent protection. Toluna has put in place transfer agreements using the standard model contracts for the transfer of personal data to third countries as decreed by the European Commission.
For the purposes of enforcing compliance with the Privacy Shield, Toluna is subject to the investigatory and enforcement authority of the US Federal Trade Commission. For more information about the Privacy Shield, see the US Department of Commerce's Privacy Shield website located at https://www.privacyshield.gov. To review Toluna's representation on the Privacy Shield list, see the US Department of Commerce's Privacy Shield self-certification list located at https://www.privacyshield.gov/list .
Cookies are used on the site for analysis to distinguish you from other users of the site and for facilitating login procedures on the ViewPoint portal, helping us to provide you with a good experience when you browse our site and allowing us to improve the site.
Upon request, we will provide you with information about whether we hold any of your personal data. You may access, correct, or request deletion of your personal data, or terminate your membership by logging into your Community Account. By following the appropriate directions, your information should be automatically updated in our database. For these purposes, and if you are unable to correct your personal data yourself via your Community Account you may write to us at the postal address found at the end of this Privacy notice, or contact us at https://www.dnvglviewpoint.com/contact-us . We will respond to all requests within a reasonable timeframe.
You can direct any questions or complaints about the use or disclosure of your personal data to our data protection officer via dataprotection@dnvgl.com. We will investigate and attempt to resolve any complaints or disputes regarding the use or disclosure of your personal data within 30 days of receiving your complaint.
You can terminate your membership at any time by unsubscribing from the Community; this can be done by email or by logging into your account and clicking Contact Us in the footer of the web page and selecting "I would like to unsubscribe". You can request us to erase your personal data by email or by logging into your private area on web page and selecting "Please erase my personal data (this will cancel my participation)". Please note that we do not generally send confirmations unless you request it explicitly in your email.
If you are a Community member and terminate your membership by unsubscribing, you will no longer receive communications from us and we will no longer use your Contact data and Identity data. If you terminate your membership by requesting to erase your personal data, your contact data and identity data will be deleted from the Community. Historical data is only stored for archival purposes and we will process your personal data in accordance with our backup procedures, your personal data are eventually destroyed in accordance with our data retention policies and we will continue to employ the security procedures and technologies to keep your personal data safe.
You can ask us to delete your data: see the section entitled Your legal rights below for further information.
As the results of the surveys and other aggregated data are used for research and/or statistical purposes, we and other third parties may use this information in accordance with the terms indefinitely without further notice to you.
You have rights under data protection laws in relation to your personal data. If you wish to exercise any of the rights set out above, please contact us.
object to the processing your personal data if we are not using your personal data for the purposes set out in this privacy notice.
have your personal data transferred to you or to a third. We will provide to you, or a third party you have chosen, your personal data in a structured, commonly used, machine-readable format. Note that this right only applies to automated information which you initially provided consent for us to use or where we used the information to perform a contract with you.
ViewPoint is a customer exclusive initiative which provides its members with an opportunity to voice opinions and receive research insights before it is shared with the public. The topics are closely related to our assurance services and considered to be an extended value-added benefit complementing the service delivery under the contract. Given the nature of the relationship, we use legitimate interest as the legal basis for communicating information related to ViewPoint. You may of course opt out at any time by accessing the preference centre in the footer of the e-mails you receive or by sending an e-mail to viewpoint@dnvgl.com.
DNV GL Business Assurance Group AS with whom you registered with as a community member is the controller and responsible for your personal data.
We have appointed a data protection officer (DPO) who is responsible for overseeing questions in relation to this privacy notice. If you have any questions about this privacy notice, including any requests to exercise your legal rights, please contact the DPO via dataprotection@dnvgl.com.
This version was last updated on the date at the top of this privacy notice.
If we decide to change our privacy notice, we will post those changes on the homepage so that you are aware of what information we collect, how we use it, and under what circumstances, if any, we disclose it.
We reserve the right to modify this privacy notice at any time, so please review it frequently. If we make material changes to this notice, we will notify you here, by email, or by means of a notice on our home page prior to the change becoming effective.


Welcome to the Stylin' Stampin' INKspiration blog hop! I'm so excited to be participating in my first SSINK blog hop. As you hop along, please be sure to comment and show some love on every blog! We are always excited to hear from our followers! You should have just left stop number #5 on the Stylin' Stampin' INKspiration Blog Hop - Darcy at Dj's Stampin Place. If so, you are in the right spot. If a link doesn't work or you get off track, you will find the full blog hop lineup below.
My demo group has recently started weekly challenges. Although I may not always have time to do the challenge, I love the idea. The card below was from our very first challenge over the Fourth of July. Our theme: Stars and Stripes. A few people made patriotic themed cards, but many of us took a different direction. I had fun with die cuts and pattern paper. A cute quick and easy birthday birthday card!


Scotland Yard investigates conflict-of-interest allegations involving maintenance firm and a dome manager.
A South London electrical firm is understood to be at the centre of the police investigation into alleged fraud at the Millennium Dome.
The inquiry centres on an alleged conflict of interest involving a senior manager at the New Millennium Experience Company and a company that was awarded a contract.
It is understood that the police are investigating an allegation that the contractor overcharged NMEC by up to £50 000 for the work.
Another insider added that concerns had been raised about the amount of money the contractor had earned on the contract.
The NMEC manager at the centre of the allegation is understood to be a woman.
The insider added that the dome's management had launched its own inquiry into the incident earlier in the year and was satisfied that nothing untoward had gone on.
However, after an examination by PriceWaterhouseCoopers, the dome's auditor, it was decided to call in the police.
In an official statement NMEC denied that the police were investigating each of the 2800 dome contracts.
He said: "The investigation does relate to one of the many services contracts but does not relate to the construction of the dome.


Adorable cotton sundress with 3 layers of ruffle skirt, filled with various sizes of polka dots. Accented with a matching flower on one of the shoulder straps and a matching hat with 2 layers of ruffle trims. Small D-Ring on back.
Click the button below to add the Dazzling Dots Sundress with Matching Hat to your wish list.


Robust, flexible capability to design custom cloud-based real-time solutions including discrete workflows, alerts, analytics, reports, etc.
Architecture solves patient care and delivery, readmission, reporting, and cost containment challenges, etc.
MINNEAPOLIS–(BUSINESS WIRE)–VigiLanz, an enterprise intelligence resources (EIR) software and services firm delivering real-time clinical and business intelligence services to approximately 400 hospitals, introduced today its enhanced Care Management Solutions development services at HIMSS '16, the annual healthcare information technology conference and exhibition being held this year in Las Vegas.


What we love most here at Mixbook is seeing just how creative all you Mixbookers can get! This latest photo book idea has definitely got us smiling. Mixbooker Lauren has brought together fantasy and photography to create this stunning photo book. With a little help from her daughters, and a lot of fabric, pillows and imagination, Lauren was able to create this beautiful story book. This photography method allowed her daughters to defy gravity and race around the world, using any means of transportation they so desired. Read on to see her inspiration and how she went about completing this project!
Mixbook: What inspired you to create the Great Race Around the World? Lauren: My children were my inspiration to create "The Great Race Around the World." I tell them little stories at bedtime every night that puts them into the story. In these stories, they always do amazing things like travel to space, use fairy magic to make rainbows, and even race around the world. I saw online that people were taking cool pictures by laying down instead of standing, so that they could interact with objects in an impossible way. So I set out to create an imaginary world for the girls and snap pictures of them. It was Piper's idea to make one of her stories with these pictures.
MB: We noticed the first part of the title includes "The Adventures of Rory and Piper." Does this mean this is the first book of a series? :) L: This is definitely a first book in the series. I figured this would be a good way to document their childhood with something other than posed pictures. We already have 2 more written that we need to take pictures for.
MB: How did you start writing the actual story? Any input from the girls? L: We based the book off of our bedtime story about them racing. Piper sat down with me and we just pulled out loads of fabric and came up with different methods of travel for them to pose for. Then I just wrote a story to connect all of the ways they could travel. I had these little tassel things in there from a graduation cord. And Piper would say, "Ooh, these would look good on that brown thing, for a magic carpet." So I wrote in a desert scene. It was really fun.
MB: What was the photo shoot process like? Was it difficult styling all the scenes or getting Rory to pose? L: Rory was actually the easiest part of the whole scene. It took a while to go through all of our fabric bins to find the right pieces, but family members were always helpful in donating scraps for us to use. I would set up the scene piece by piece, then make sure to let in enough natural light to light it up really nice. Then I would have to pose Piper first. She is a very rambunctious little girl, so getting her to hold still for too long was difficult. So I would have to be quick at that point. Then I would just lay Rory in place, stand up on a chair so I could get the whole scene in, and get Rory to look where I wanted by dangling one of the tassel things down for her to grab at. And voila!
MB: How long did it take for you to finish the photo shoot and the Mixbook? L: Sometimes we would do a few pictures a day. Sometimes, we would go a week or two in between. I would say the photos were taken over a 3 month period. It could have been finished sooner, but it was just something we did in our spare time. The Mixbook didn't take long at all to make. I cropped all of the pictures in Photoshop before hand. So I really had an easy time with the set up on Mixbook. Then it was a lot of typing. But it was really easy to put together. I think I spent a couple hours on a Saturday and put the whole thing together.
MB: Any tips for users who want to attempt this project? L: The best tips I can give would be to always have fun with it. Let the kids help, they always have better ideas, lol. Build from the background up. And be ready with distractions because let's face it, no child can hold still for very long.
MB: Anything else you'd like to add? L: This could be used for any project also. We did our annual Christmas card with these type of photos. We live in Florida, so there isn't very much for Christmas scenery outside in the winter. So we made it ourselves and all posed in them. We did a snowball fight using balled up socks. All kinds of things. You could use it for any type of book or photo album. I have a current project on Mixbook that is a family cookbook. I have an at home bakery and the girls love to help, so I made a recipe book for them and put in little pictures of them in an imaginary bakery, baking huge cakes, and things like that.
Start your own fabric background story book now!


What does your personal or business brand stand for? How can you get additional exposure for yourself or your company, blog, website, etc.? What are some other ways of generating traffic to your online platform? These questions will be answered in this post.
1) Promote my authority as a blogger, investor, writer, and entrepreneur.
2) Boost traffic to this money and finance educational blog I've created.
3) Increase my streams of passive income.
And what are your financial independence goals? Have you laid them out on paper yet?
Here you can post your opinion and articles for free!
When someone type your name on google he will see your articles and posts.
Publish articles on the Internet - to get links to your site or your blog and improve your position in search engines.
I chose to use Ezine because it is a popular directory (current Alexa Global rank of 2,074) and I liked their logo. Membership is free. I plan on trying out other directories soon in order to maximize my opportunities for both online publication and directing traffic.
This guy, Michael, at Thefinestwriter.com is one prolific writer. He's been at it since 2005. He's earned a "Diamond Level Expert Author" ranking given only to the top 1% out of 40,000 plus authors on the site. Yikes! What a stud. If you hire him, make sure you tell him your homie, C. Osvaldo Gomez, sent ya. He claims to pay a $50 commission per referred client. You may want to refer him yourself!
What do you know…another Wealthfront.com banner ad. Thanks, Mr. Nash!
I submitted 7 articles from this blog on Ezine, after creating my profile, and today I learned that all 7 were approved for publishing! I'm new to Ezine so I cannot tell you if this is typical. I have no idea what criteria the good people at Ezine use to consider an article for "publication" on their site. It doesn't really matter for our purposes. What matters is that you sit at your computer and write something to compliment whatever it is you're doing to make money! My 7 articles generated 22 views in the morning, and after just checking it again, I'm at 27 views. Not too shabby for day one.
After 10 articles published, your submissions get highly more scrutinized by the reviewers and you earn "badges" for every achievement, including climbing the expert pyramid (Basic, Basic Plus, Platinum, and Diamond).
Writing content in article format for your enterprise or venture, and submitting on multiple high ranking directories is one Search Engine Optimization strategy you need to utilize! Most directories are free to use so there is really no downside to doing this, especially if you're writing content already anyway.
Thanks for Reading! Subscribe to this Blog and get my $9.99 eBook, Common Core Money, absolutely free!
Get Your Finances In Order with LearnVest!


text:
Home Comment: Focus on France's public toilets
Wärtsilä delivers world's first hybrid retrofit for shipping vessel
Fighting for the space race after Brexit breakup
Comment: Focus on France's public toilets
Ian Sparks reports from Paris on a new public interest in toilets – and careers going down them.
It began as a simple blog by a young woman with an acute interest in lavatories. Aude Lalo would inspect public toilets wherever she went, then post her opinions online for her small but like-minded readership.
But she soon began to attract the attention of bathroom and sanitary industry companies who were eager to receive positive reviews of their products on her web page. As the professional interest mounted, and her views on loos were being taken ever more seriously, she launched 'Flush' magazine, in which major French industry figures became increasingly keen to plug their wares and pay her hefty sums to advertise.
Aude said: "If the blog initially began as a tongue-in-cheek hobby, I quickly began to realise there was a much more important side to the simple toilet. Other subjects like fishing or horse racing only matter to those who are interested, but toilets affect everyone on the planet.
"The act of going to the lavatory is also a prism through which to address topics from health and sanitation to ecology, urbanism, and, for example, the social relations between different groups in Swiss railway stations, where women have to pay a third more than men to use equivalent public facilities."
Flush magazine, now a sleek quarterly which was launched in November to coincide with World Toilet Day, describes itself as about 'toilets, culture, and society'. Adverts for the magazine now crop up in public loos throughout France, with brief articles even pasted to the backs of cubicle doors informing users of interesting 'toilet facts' such as that it's illegal to use your newspaper as toilet paper in Turkmenistan, or that the best toilet she ever visited was at a cake shop in the south-eastern city of Lyon.
French media circles also took note and Aude was invited to TV and radio studios where she patiently explained her product to bemused-sounding hosts.
Aude added: "As soon Flush was launched, I began receiving letters from people saying, this is great, I'm a toilet enthusiast, this is the magazine I've always been waiting for. We're undeniably in a niche and I don't know of any other magazine, at least in France, on this topic. On the other hand, toilets are universal."
A typical issue of Flush consists of four sections, which, together, offer readers a broad, 360-degree view of the world according to toilets. The first section rounds up toilet news from around the world; the second features industry trends and products (anyone for a $45 matte-black toilet brush?). A 'dossier' in the third section focuses principally on a big social or political theme, like sanitary conditions in refugee camps or prisons. The fourth section is dedicated to culture, with celebrities interviewed about their loos or famous toilet scenes from films.
The first issue included a feature on World Water Week, an annual event in Stockholm, Sweden, and another on innovations in the the human waste disposal and water-cleaning industry.
Aude said: "I think the people who bought Flush at the newsstand bought it because they wanted to be surprised. And they were, because I feel I have raised the tone of something which is so often the butt of vulgar jokes to something crucial to people's daily lives.
"I'd love to launch international editions like Flush US and Flush UK, but we would need local editorial staff because you can't just translate content. The relationship with the toilet is very cultural and it changes from one country to another."
Elsewhere in France, Carlos Ghosn's two decades at the helm of French car giant Renault are expected to come to an end in the coming weeks after he was arrested in Japan in November on suspicion of spending almost €16 million on luxury property using money from Japanese car-maker Nissan, where he is also chairman.
While Ghosn still languishes in custody in Tokyo, Renault is expected to choose two big-hitters from the French car industry, Thierry Bollore and Jean-Dominique Senard, to take over the CEO and chairman jobs, according to a source who spoke to France's AFP news agency on condition of anonymity.
Bollore, 55, has already been running the company on an interim basis since Ghosn's stunning arrest, and is expected to be named CEO. Like Ghosn, he began his career at French tyre giant Michelin and has been described as "very rigorous and dedicated, and much-liked by the entire workforce."
One industry insider, who worked alongside Bollore at French parts maker Faurecia, said: "I think that his knowledge of Asia and his skills in relationships with the Japanese will give him an advantage."
Senard, who is set to be named as the new chairman, arrives at Renault fresh from his role as CEO of Michelin, where he has worked since 2005. He is known for his successfully negotiated sensitive labour agreements with trade union leaders in Michelin's French factories to preserve jobs in the face of cheaper imported Asian products. He was also the first non-family member to head the historic company that spawned the Michelin food guide.
A former colleague at Michelin said: "What has happened to Ghosn is a spectacular tragedy, but Mr Senard and Mr Bollore are both more than qualified to replace him."
Ian Sparks Comment From Issue 29-1 Water Treatment Focus on France Environmental France


text:
Anna Clift
Anna Clift is passionate about teaching and educating young cellists. Considered to be one of the most influential and consulted cello teachers in the Twin Cities, she is a mentor and teacher to many young cellists around the country. Currently, she is on the faculty of St. Olaf College, where she teaches cello and chamber music. She taught an interim at Marshall University and often serves as a juror for competitions, including the Schubert Club Competition and Fischoff Competition. As a member of the "Cello Consortium," she frequently presents forums and workshops with her colleagues for educators and cellists of all ages and abilities.
At the age of 15Anna Clift was fortunate enough to study at The Banff School of Fine Artswith legendary cellist and pedagogue Janos Starker. She then went on to study with him at Indiana University. She received her M.M. degree in Music Performance from SUNY at Stony Brook where she studied with former Beaux Arts Trio cellist, Bernard Greenhouse. Other musicians and mentors include Gary Hoffman, Tsuyoshi Tsutsumi, Josef Gingold, Paul Tortelier, and Menahem Pressler.
As founder and director of the "International Cello Institute", a summer program for cellists of all ages, Clift collaborates with teachers and students from around the world. She has taught and participated in music schools and summer programs across the United States, including the Artaria Chamber Music School, Stringwood Chamber Music Camp, Banff School of Fine Arts, Spoleto Festival, Washington Island Music Festival, Britt Music Festival, Taos International School of Music, and Madeline Island Music Camp.
Clift has extensive orchestral experience and has played as an extra player with the Minnesota Orchestra since 1989. As a performer, she frequently collaborates with musicians from both the Minnesota Orchestra and the St. Paul Chamber Orchestra. She has appeared on radio with "A Prairie Home Companion" and performed in chamber concerts with Gil Shaham, Awadajin Pratt, Sharon Isbin, the Artemis Trio, Artaria String Quartet, the Isles Ensemble, Paul Katz and Kirsten Doctor.


In conjunction with several community programs, our staff and volunteers assist Veterans wherever they may be, and work to build relationships in an effort to link them with desperately-needed resources including housing, medical care, food, and clothing.
Why are there so many homeless veterans? Veterans returning from combat duty with PTSD, disabling physical injuries, and few if any marketable or transferrable skills, often can't find or keep jobs. With no salary to support them, military families face a foreclosure rate four times the national average. Lack of support services and social isolation after discharge also contribute to homelessness.
Approximately 1 of every 3 homeless males in the U.S. is a veteran.
More than half a million veterans are homeless at some time during the year.
Homelessness affects veterans of all wars. According to the Department of Veterans Affairs, the number of homeless Vietnam-era veterans is higher than the number of people who died during that war. A recent survey by the National Coalition for Homeless Veterans found that nearly one in four homeless veterans has recently returned from combat in Afghanistan or Iraq.
Visions Outreach. brings hope to veterans and their families with its emergency, transitional and long-term supportive housing. The organization operates safe, drug- and alcohol-free facilities for veterans. This housing and related support services give veterans a stable base from which to find or hold a job, continue their physical or mental recovery and, ultimately, return to independent living.


The magnificent orangery at Cressbrook Hall laid out ready for the wedding breakfast and reception at this superb and secluded Derbyshire wedding venue. This has to be one of the most uniquely situated wedding venues in the country tucked away well off the beaten track and high up on the hillside overlooking the River Wye down in Monsal Dale.
This was our first visit to Cressbrook Hall and for anyone seeking this venue out make sure you consult a map before setting off. It is not that it is impossible to find but it just has such an unassuming entrance for such a grand hall that it is very easy to miss it. But when you do arrive what a treat awaits you! This is an unbelievably beautiful building, astonishing to look at and located amongst the most stunning of surroundings it takes your breath away. There are also a small number of cottages for the guests to stay in before and after the wedding located just a very short walk from the hall. For anyone wanting a wedding somewhere really different this is one to check out!
1/320; f/4.0; ISO 100; 86.0 mm.


Group Lotus are proud to announce a rocking new partnership with 'Anthems', a collection of concerts starring legendary Queen star Brian May and West End and Broadway singing sensation, Kerry Ellis (We Will Rock You, Wicked, Chess in Concert and Oliver!).
Under the creative direction of Brian May, this series of unique productions provides the perfect opportunity to experience Anthems, the stunning hit debut album from Kerry Ellis produced by Brian May. In addition to performing Anthems, the concerts feature an opening set from American 'soul rock' sensation Vintage Trouble and will also include May's special rock-orchestral settings of songs and new material.
Group Lotus decided to partner the concerts after working closely with Brian last year when he played an integral role in the unveiling of Lotus' future model line-up as he joined supermodel Naomi Campbell to unveil the new Lotus Esprit, the eagerly anticipated incarnation of the iconic British supercar.


This command implements simple pointer and keyboard grabs for Tk. Tk's grabs are different than the grabs described in the Xlib documentation. When a grab is set for a particular window, Tk restricts all pointer events to the grab window and its descendants in Tk's window hierarchy. Whenever the pointer is within the grab window's subtree, the pointer will behave exactly the same as if there had been no grab at all and all events will be reported in the normal fashion. When the pointer is outside window's tree, button presses and releases and mouse motion events are reported to window, and window entry and window exit events are ignored. The grab subtree "owns" the pointer: windows outside the grab subtree will be visible on the screen but they will be insensitive until the grab is released. The tree of windows underneath the grab window can include top-level windows, in which case all of those top-level windows and their descendants will continue to receive mouse events during the grab.
If window is specified, returns the name of the current grab window in this application for window's display, or an empty string if there is no such window. If window is omitted, the command returns a list whose elements are all of the windows grabbed by this application for all displays, or an empty string if the application has no grabs.
Sets a grab on window. If −global is specified then the grab is global, otherwise it is local. If a grab was already in effect for this application on window's display then it is automatically released. If there is already a grab on window and it has the same global/local form as the requested grab, then the command does nothing. Returns an empty string.
It took an incredibly complex and gross implementation to produce the simple grab effect described above. Given the current implementation, it is not safe for applications to use the Xlib grab facilities at all except through the Tk grab procedures. If applications try to manipulate X's grab mechanisms directly, things will probably break.