text:
import six
import os
import time
import itertools
import tempfile
import requests
from quantrocket.master import download_master_file
from quantrocket.exceptions import ParameterError, NoHistoricalData, NoRealtimeData
from quantrocket.history import (
    download_history_file,
    get_db_config as get_history_db_config,
    list_databases as list_history_databases)
from quantrocket.realtime import (
    download_market_data_file,
    get_db_config as get_realtime_db_config,
    list_databases as list_realtime_databases)
from quantrocket.zipline import (
    list_bundles,
    get_bundle_config,
    download_bundle_file)

__all__ = [
    "get_prices",
    "get_prices_reindexed_like",
]

TMP_DIR = os.environ.get("QUANTROCKET_TMP_DIR", tempfile.gettempdir())

def get_prices(codes, start_date=None, end_date=None,
               universes=None, sids=None,
               exclude_universes=None, exclude_sids=None,
               times=None, fields=None,
               timezone=None, infer_timezone=None,
               cont_fut=None, data_frequency=None):
    """
    Query one or more history databases, real-time aggregate databases,
    and/or Zipline bundles and load prices into a DataFrame.

    For bar sizes smaller than 1-day, the resulting DataFrame will have a MultiIndex
    with levels (Field, Date, Time). For bar sizes of 1-day or larger, the MultiIndex
    will have levels (Field, Date).

    Parameters
    ----------
    codes : str or list of str, required
        the code(s) of one or more databases to query. If multiple databases
        are specified, they must have the same bar size. List databases in order of
        priority (highest priority first). If multiple databases provide the same
        field for the same sid on the same datetime, the first database's value will
        be used.

    start_date : str (YYYY-MM-DD), optional
        limit to data on or after this date

    end_date : str (YYYY-MM-DD), optional
        limit to data on or before this date

    universes : list of str, optional
        limit to these universes (default is to return all securities in database)

    sids : list of str, optional
        limit to these sids

    exclude_universes : list of str, optional
        exclude these universes

    exclude_sids : list of str, optional
        exclude these sids

    times: list of str (HH:MM:SS), optional
        limit to these times, specified in the timezone of the relevant exchange. See
        additional information in the Notes section regarding the timezone to use.

    fields : list of str, optional
        only return these fields. (If querying multiple databases that have different fields,
        provide the complete list of desired fields; only the supported fields for each
        database will be queried.)

    timezone : str, optional
        convert timestamps to this timezone, for example America/New_York (see
        `pytz.all_timezones` for choices); ignored for non-intraday bar sizes

    infer_timezone : bool
        infer the timezone from the securities master Timezone field; defaults to
        True if using intraday bars and no `timezone` specified; ignored for
        non-intraday bars, or if `timezone` is passed

    cont_fut : str
        stitch futures into continuous contracts using this method (default is not
        to stitch together). Only applicable to history databases. Possible choices:
        concat

    data_frequency : str
        for Zipline bundles, whether to query minute or daily data. If omitted,
        defaults to minute data for minute bundles and to daily data for daily bundles.
        This parameter only needs to be set to request daily data from a minute bundle.
        Possible choices: daily, minute (or aliases d, m).

    Returns
    -------
    DataFrame
        a MultiIndex (Field, Date) or (Field, Date, Time) DataFrame of prices

    Notes
    -----
    The `times` parameter, if provided, is applied differently for history databases and
    Zipline bundles vs real-time aggregate databases. For history databases and Zipline
    bundles, the parameter is applied when querying the database. For real-time aggregate
    databases, the parameter is not applied when querying the database; rather, all available
    times are retrieved and the `times` filter is applied to the resulting DataFrame after
    casting it to the appropriate timezone (as inferred from the securities master Timezone
    field or as explicitly specified with the `timezone` parameter). The rationale for this
    behavior is that history databases and Zipline bundles store intraday data in the timezone
    of the relevant exchange whereas real-time aggregate databases store data in UTC. By
    applying the `times` filter as described, users can specify the times in the timezone of
    the relevant exchange for both types of databases.

    Examples
    --------
    Load intraday prices:

    >>> prices = get_prices('stk-sample-5min', fields=["Close", "Volume"])
    >>> prices.head()
                                Sid     	FIBBG1	FIBBG2
    Field	Date	        Time
    Close	2017-07-26      09:30:00	153.62	2715.0
                                09:35:00	153.46	2730.0
                                09:40:00	153.21	2725.0
                                09:45:00	153.28	2725.0
                                09:50:00	153.18	2725.0

    Isolate the closes:

    >>> closes = prices.loc["Close"]
    >>> closes.head()
                Sid	        FIBBG1	FIBBG2
    Date        Time
    2017-07-26	09:30:00	153.62	2715.0
                09:35:00	153.46	2730.0
                09:40:00	153.21	2725.0
                09:45:00	153.28	2725.0
                09:50:00	153.18	2725.0

    Isolate the 15:45:00 prices:

    >>> session_closes = closes.xs("15:45:00", level="Time")
    >>> session_closes.head()
        Sid	FIBBG1	FIBBG2
    Date
    2017-07-26	153.29	2700.00
    2017-07-27 	150.10	2660.00
    2017-07-28	149.43	2650.02
    2017-07-31 	148.99	2650.34
    2017-08-01 	149.72	2675.50
    """
    # Import pandas lazily since it can take a moment to import
    try:
        import pandas as pd
    except ImportError:
        raise ImportError("pandas must be installed to use this function")

    try:
        import pytz
    except ImportError:
        raise ImportError("pytz must be installed to use this function")

    if timezone and timezone not in pytz.all_timezones:
        raise ParameterError(
            "invalid timezone: {0} (see `pytz.all_timezones` for choices)".format(
                timezone))

    dbs = codes
    if not isinstance(dbs, (list, tuple)):
        dbs = [dbs]

    fields = fields or []
    if not isinstance(fields, (list, tuple)):
        fields = [fields]

    # separate history dbs from Zipline bundles from realtime dbs; in case one or
    # more of the services is not running, we print a warning and try the other
    # services
    try:
        history_dbs = set(list_history_databases())
    except requests.HTTPError as e:
        if e.response.status_code == 502:
            import warnings
            warnings.warn(
                f"Error while checking if {', '.join(dbs)} is a history database, "
                f"will assume it's not. Error was: {e}", RuntimeWarning)
            history_dbs = set()
        else:
            raise

    try:
        realtime_dbs = list_realtime_databases()
    except requests.HTTPError as e:
        if e.response.status_code == 502:
            import warnings
            warnings.warn(
                f"Error while checking if {', '.join(dbs)} is a realtime database, "
                f"will assume it's not. Error was: {e}", RuntimeWarning)
            realtime_dbs = {}
            realtime_agg_dbs = set()
        else:
            raise
    else:
        realtime_agg_dbs = set(itertools.chain(*realtime_dbs.values()))

    try:
        zipline_bundles = set(list_bundles())
    except requests.HTTPError as e:
        if e.response.status_code == 502:
            import warnings
            warnings.warn(
                f"Error while checking if {', '.join(dbs)} is a Zipline bundle, "
                f"will assume it's not. Error was: {e}", RuntimeWarning)
            zipline_bundles = set()
        else:
            raise

    history_dbs.intersection_update(set(dbs))
    realtime_agg_dbs.intersection_update(set(dbs))
    zipline_bundles.intersection_update(set(dbs))

    unknown_dbs = set(dbs) - history_dbs - realtime_agg_dbs - zipline_bundles

    if unknown_dbs:
        tick_dbs = set(realtime_dbs.keys()).intersection(unknown_dbs)
        # Improve error message if possible
        if tick_dbs:
            raise ParameterError("{} is a real-time tick database, only history databases or "
                                 "real-time aggregate databases are supported".format(
                                     ", ".join(tick_dbs)))
        raise ParameterError(
            "no history or real-time aggregate databases or Zipline bundles called {}".format(
                ", ".join(unknown_dbs)))

    db_bar_sizes = set()
    db_bar_sizes_parsed = set()
    history_db_fields = {}
    realtime_db_fields = {}
    zipline_bundle_fields = {}

    for db in history_dbs:
        db_config = get_history_db_config(db)
        bar_size = db_config.get("bar_size")
        db_bar_sizes.add(bar_size)
        # to validate uniform bar sizes, we need to parse them in case dbs
        # store different but equivalent timedelta strings. History db
        # strings may need massaging to be parsable.
        if bar_size.endswith("s"):
            # strip s from secs, mins, hours to get valid pandas timedelta
            bar_size = bar_size[:-1]
        elif bar_size == "1 week":
            bar_size = "7 day"
        elif bar_size == "1 month":
            bar_size = "30 day"
        db_bar_sizes_parsed.add(pd.Timedelta(bar_size))
        history_db_fields[db] = db_config.get("fields", [])

    for db in realtime_agg_dbs:
        db_config = get_realtime_db_config(db)
        bar_size = db_config.get("bar_size")
        db_bar_sizes.add(bar_size)
        db_bar_sizes_parsed.add(pd.Timedelta(bar_size))
        realtime_db_fields[db] = db_config.get("fields", [])

    for db in zipline_bundles:
        # look up bundle data_frequency if not specified
        if not data_frequency:
            bundle_config = get_bundle_config(db)
            data_frequency = bundle_config["data_frequency"]

        if data_frequency in ("daily", "d"):
            db_bar_sizes.add("1 day")
            db_bar_sizes_parsed.add(pd.Timedelta("1 day"))
        elif data_frequency in ("minute", "m"):
            db_bar_sizes.add("1 min")
            db_bar_sizes_parsed.add(pd.Timedelta("1 min"))
        else:
            raise ParameterError("invalid data_frequency: {}".format(data_frequency))
        zipline_bundle_fields[db] = ["Open", "High", "Low", "Close", "Volume"]

    if len(db_bar_sizes_parsed) > 1:
        raise ParameterError(
            "all databases must contain same bar size but {0} have different "
            "bar sizes: {1}".format(", ".join(dbs), ", ".join(db_bar_sizes))
        )

    all_prices = []

    for db in dbs:

        if db in history_dbs:
            # different DBs might support different fields so only request the
            # subset of supported fields
            fields_for_db = set(fields).intersection(set(history_db_fields[db]))

            kwargs = dict(
                start_date=start_date,
                end_date=end_date,
                universes=universes,
                sids=sids,
                exclude_universes=exclude_universes,
                exclude_sids=exclude_sids,
                times=times,
                cont_fut=cont_fut,
                fields=list(fields_for_db),
            )

            tmp_filepath = "{dir}{sep}history.{db}.{pid}.{time}.csv".format(
                dir=TMP_DIR, sep=os.path.sep, db=db, pid=os.getpid(), time=time.time())

            try:
                download_history_file(db, tmp_filepath, **kwargs)
            except NoHistoricalData:
                # don't complain about NoHistoricalData if we're checking
                # multiple databases, unless none of them have data
                if len(dbs) == 1:
                    raise
                else:
                    continue

            prices = pd.read_csv(tmp_filepath)
            prices = prices.pivot(index="Sid", columns="Date").T
            prices.index.set_names(["Field", "Date"], inplace=True)
            all_prices.append(prices)

            os.remove(tmp_filepath)

        if db in realtime_agg_dbs:

            fields_for_db = set(fields).intersection(set(realtime_db_fields[db]))

            kwargs = dict(
                start_date=start_date,
                end_date=end_date,
                universes=universes,
                sids=sids,
                exclude_universes=exclude_universes,
                exclude_sids=exclude_sids,
                fields=list(fields_for_db))

            # pass timezone to realtime service if provided, for interpreting start/end
            # dates
            if timezone and start_date:
                kwargs["start_date"] = f"{start_date} {timezone}"
            if timezone and end_date:
                kwargs["end_date"] = f"{end_date} {timezone}"

            tmp_filepath = "{dir}{sep}realtime.{db}.{pid}.{time}.csv".format(
                dir=TMP_DIR, sep=os.path.sep, db=db, pid=os.getpid(), time=time.time())

            try:
                download_market_data_file(db, tmp_filepath, **kwargs)
            except NoRealtimeData as e:
                # don't complain about NoRealtimeData if we're checking
                # multiple databases, unless none of them have data
                if len(dbs) == 1:
                    raise
                else:
                    continue

            prices = pd.read_csv(tmp_filepath)
            prices = prices.pivot(index="Sid", columns="Date").T
            prices.index.set_names(["Field", "Date"], inplace=True)
            all_prices.append(prices)

            os.remove(tmp_filepath)

        if db in zipline_bundles:

            fields_for_db = set(fields).intersection(set(zipline_bundle_fields[db]))

            kwargs = dict(
                start_date=start_date,
                end_date=end_date,
                universes=universes,
                sids=sids,
                exclude_universes=exclude_universes,
                exclude_sids=exclude_sids,
                times=times,
                data_frequency=data_frequency,
                fields=list(fields_for_db))

            tmp_filepath = "{dir}{sep}zipline.{db}.{pid}.{time}.csv".format(
                dir=TMP_DIR, sep=os.path.sep, db=db, pid=os.getpid(), time=time.time())

            try:
                download_bundle_file(db, tmp_filepath, **kwargs)
            except NoHistoricalData as e:
                # don't complain about NoHistoricalData if we're checking
                # multiple databases, unless none of them have data
                if len(dbs) == 1:
                    raise
                else:
                    continue

            prices = pd.read_csv(tmp_filepath, index_col=["Field", "Date"])
            prices.columns.name = "Sid"
            all_prices.append(prices)

            os.remove(tmp_filepath)

    # complain if multiple dbs and none had data
    if len(dbs) > 1 and not all_prices:
        raise NoHistoricalData("no price data matches the query parameters in any of {0}".format(
            ", ".join(dbs)
        ))

    prices = None
    for _prices in all_prices:
        if prices is None:
            prices = _prices
        else:
            prices = prices.combine_first(_prices)

    is_intraday = list(db_bar_sizes_parsed)[0] < pd.Timedelta("1 day")

    # For intraday dbs, infer timezone from securities master
    if is_intraday and not timezone and infer_timezone is not False:

        infer_timezone = True
        sids = list(prices.columns)

        f = six.StringIO()
        download_master_file(
            f,
            sids=sids,
            fields="Timezone")
        securities = pd.read_csv(f, index_col="Sid")

        timezones = securities.Timezone.unique()

        if len(timezones) > 1:
            raise ParameterError(
                "cannot infer timezone because multiple timezones are present "
                "in data, please specify timezone explicitly (timezones: {0})".format(
                    ", ".join(timezones)))

        timezone = timezones[0]

    if is_intraday:
        dates = pd.to_datetime(prices.index.get_level_values("Date"), utc=True)

        if timezone:
            dates = dates.tz_convert(timezone)
    else:
        # use .str[:10] because the format might be 2020-04-05 (history dbs)
        # or 2020-04-05T00:00:00-00 (realtime aggregate dbs)
        dates = pd.to_datetime(
            prices.index.get_level_values("Date").str[:10])

    prices.index = pd.MultiIndex.from_arrays((
        prices.index.get_level_values("Field"),
        dates
        ), names=("Field", "Date"))

    # Split date and time
    dts = prices.index.get_level_values("Date")
    dates = pd.to_datetime(dts.date).tz_localize(None) # drop tz-aware in Date index
    prices.index = pd.MultiIndex.from_arrays(
        (prices.index.get_level_values("Field"),
         dates,
         dts.strftime("%H:%M:%S")),
        names=["Field", "Date", "Time"]
    )

    # Align dates if there are any duplicate. Explanation: Suppose there are
    # two timezones represented in the data (e.g. history db in security
    # timezone vs real-time db in UTC). After parsing these dates into a
    # common timezone, they will align properly, but we pivoted before
    # parsing the dates (for performance reasons), so they may not be
    # aligned. Thus we need to dedupe the index. NOTE: first() is slow
    # when prices contains categorical/object dtypes (which can happen
    # with custom fundamental databases, for example), so only do this
    # if we have to. nth(0) would be an alternative to first() but it
    # doesn't ignore nans (nth()'s dropna param doesn't help here), so
    # a universal solution is as yet elusive.
    if prices.index.duplicated().any():
        prices = prices.groupby(prices.index).first()
        prices.index = pd.MultiIndex.from_tuples(prices.index)
        prices.index.set_names(["Field", "Date", "Time"], inplace=True)

    # Fill missing dates and times so that each field has the
    # same set of dates and times, for easier vectorized operations.
    # Example implications for intraday dbs:
    # - if history is retrieved intraday, this ensures that today will have NaN
    #   entries for future times
    # - early close dates will have a full set of times, with NaNs after the
    #   early close
    unique_fields = prices.index.get_level_values("Field").unique()
    unique_dates = prices.index.get_level_values("Date").unique()
    unique_times = prices.index.get_level_values("Time").unique()
    interpolated_index = None
    for field in sorted(unique_fields):
        field_idx = pd.MultiIndex.from_product([[field], unique_dates, unique_times]).sort_values()
        if interpolated_index is None:
            interpolated_index = field_idx
        else:
            interpolated_index = interpolated_index.append(field_idx)

    prices = prices.reindex(interpolated_index)
    prices.index.set_names(["Field", "Date", "Time"], inplace=True)

    # Drop time if not intraday
    if not is_intraday:
        prices.index = prices.index.droplevel("Time")
        return prices

    # Apply times filter if needed (see Notes in docstring)
    if times and realtime_agg_dbs:
        if not isinstance(times, (list, tuple)):
            times = [times]
        prices = prices.loc[prices.index.get_level_values("Time").isin(times)]

    return prices

def get_prices_reindexed_like(reindex_like, codes, fields=None,
                              shift=1, ffill=True, lookback_window=10,
                              agg="last",
                              timezone=None, infer_timezone=None,
                              times=None, cont_fut=None,
                              data_frequency=None):
    """
    Return a multiindex (Field, Date) DataFrame of prices for one or more history
    databases, real-time aggregate databases, or Zipline bundles, reindexed to match
    the index (dates) and columns (sids) of `reindex_like`.

    Prices are loaded with `quantrocket.get_prices` and shifted forward one period
    (configurable with the `shift` parameter) to avoid lookahead bias. In the case
    of sparse data, values are then forward-filled by default (configurable with the
    `ffill` parameter).

    The queried databases need not contain price data. This function can be used to query
    custom history databases containing any kind of data.

    Pay attention to the `lookback_window` parameter, which controls how much back data
    in advance of the input DataFrame's start date to load. For example, if the input
    DataFrame contains daily data and you are querying quarterly fundamental data,
    the `lookback_window` must extend far enough back in time to access the most recent
    quarterly value prior to the input DataFrame's start date. Setting `lookback_window`
    too low will result in leading NaNs in the resulting DataFrame. Setting it too high
    is okay but will load a larger amount of data into memory.

    If you query an intraday database, it will be treated as a daily database. Specifically,
    the intraday values will be aggregated (using the method specified by the `agg`
    parameter) to produce a single value per day.

    If the input DataFrame has levels in the index other than Date (for example, Time, in
    the case of an intraday input DataFrame), the queried values will be broadcast across
    the additional levels of the index.

    Parameters
    ----------
    reindex_like : DataFrame, required
        a DataFrame with dates for the index (or, if DataFrame has a MultiIndex, with
        dates for one level of the index) and sids for the columns, to which the shape
        of the resulting DataFrame will be conformed.

    codes : str or list of str, required
        the code(s) of one or more databases to query. If multiple databases
        are specified, they must have the same bar size. List databases in order of
        priority (highest priority first). If multiple databases provide the same
        field for the same sid on the same datetime, the first database's value will
        be used.

    fields : list of str, optional
        only return these fields. (If querying multiple databases that have different fields,
        provide the complete list of desired fields; only the supported fields for each
        database will be queried.)

    shift : int, optional
        number of periods (in the date index) to shift the resulting data forward to
        avoid lookahead bias. Default is 1. Shifting one period implies that data
        timestamped to a particular date is available and actionable on the following
        date.

    ffill : bool
        forward-fill values in the resulting DataFrame so that each date reflects
        the latest available value as of that date. If False, values appear only
        on the first date they were available, followed by NaNs. Default True.

    lookback_window : int, optional
        how many calendar days of back data prior to the reindex_like start date
        should be loaded, to ensure an adequate cushion of data is available before
        shifting. Default is 10. Sparse data such as fundamentals will require a
        higher value.

    times: list of str (HH:MM:SS), optional
        limit to these times, specified in the timezone of the relevant exchange. Only
        applicable to querying intraday databases. See additional information in the
        Notes section of `quantrocket.get_prices` regarding the timezone to use.

    timezone : str, optional
        convert timestamps to this timezone, for example America/New_York (see
        `pytz.all_timezones` for choices); ignored for non-intraday databases

    infer_timezone : bool
        infer the timezone from the securities master Timezone field; defaults to
        True if querying intraday databases and no `timezone` specified; ignored for
        non-intraday databases, or if `timezone` is passed

    agg : str or function, optional
        when querying intraday databases, how to aggregate each day's intraday values to
        produce a single value per day. Default is "last", meaning use the last non-null
        value of each day. This parameter is passed directly to the pandas `agg` function.
        Example choices include "last", "first", "min", "max", "mean", "sum", etc. See
        https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.core.groupby.DataFrameGroupBy.aggregate.html
        for more info. Note that aggregation occurs after the `times` filters are applied.

    cont_fut : str
        stitch futures into continuous contracts using this method (default is not
        to stitch together). Only applicable to history databases. Possible choices:
        concat

    data_frequency : str
        for Zipline bundles, whether to query minute or daily data. If omitted,
        defaults to minute data for minute bundles and to daily data for daily bundles.
        This parameter only needs to be set to request daily data from a minute bundle.
        Possible choices: daily, minute (or aliases d, m).

    Returns
    -------
    DataFrame
        a MultiIndex DataFrame of prices shaped like reindex_like

    Examples
    --------
    Use a DataFrame of closing prices to query a DataFrame of fundamentals in a
    database called "custom-fundamentals". Since the fundamental data is sparse,
    we specify a lookback window of 180 days to ensure that a previous value can
    be forward-filled into the resulting DataFrame:

    >>> closes = prices.loc["Close"]
    >>> fundamentals = get_prices_reindexed_like(
        closes, "custom-fundamentals", fields="Revenue",
        lookback_window=180)
    >>> revenues = fundamentals.loc["Revenue"]
    """
    try:
        import pandas as pd
    except ImportError:
        raise ImportError("pandas must be installed to use this function")

    index_levels = reindex_like.index.names

    if "Date" not in index_levels:
        raise ParameterError(
            "reindex_like must have index called 'Date', but has {0}".format(
                ",".join([str(name) for name in index_levels])))

    reindex_like_dates = reindex_like.index.get_level_values("Date")

    is_multiindex = len(reindex_like.index.names) > 1

    if not hasattr(reindex_like_dates, "date"):
        raise ParameterError("reindex_like must have a DatetimeIndex")

    sids = list(reindex_like.columns)
    start_date = reindex_like_dates.min().date()
    start_date -= pd.Timedelta(days=lookback_window)
    start_date = start_date.isoformat()
    end_date = reindex_like_dates.max().date().isoformat()

    prices = get_prices(
        codes,
        sids=sids,
        fields=fields,
        start_date=start_date,
        end_date=end_date,
        timezone=timezone,
        infer_timezone=infer_timezone,
        times=times,
        cont_fut=cont_fut,
        data_frequency=data_frequency)

    all_fields = {}

    # default values are set in the signature for docstring purposes, but we
    # also set them here in case Nones were passed
    if shift is None:
        shift = 1
    if lookback_window is None:
        lookback_window = 10
    if agg is None:
        agg = "last"

    fields = prices.index.get_level_values("Field").unique()

    for field in fields:

        prices_for_field = prices.loc[field]

        # For intraday databases, drop Time and aggregate per date
        if "Time" in prices_for_field.index.names:
            prices_for_field.index = prices_for_field.index.get_level_values("Date")
            prices_for_field = prices_for_field.groupby(prices_for_field.index).agg(agg)

        # get_prices returns tz-naive dates, localize to match reindex_like
        prices_for_field = prices_for_field.tz_localize(reindex_like_dates.tz)

        # union indexes and reindex in case there are any price dates not in
        # reindex_like or vice versa
        unioned_idx = reindex_like_dates.union(prices_for_field.index).drop_duplicates()
        prices_for_field = prices_for_field.reindex(index=unioned_idx)

        if ffill:
            prices_for_field = prices_for_field.fillna(method="ffill")

        # shift forward to avoid lookahead bias
        prices_for_field = prices_for_field.shift(shift)

        # Reindex to requested shape
        if is_multiindex:
            prices_for_field = prices_for_field.reindex(
                index=reindex_like.index, level="Date").reindex(
                    columns=reindex_like.columns)
        else:
            prices_for_field = prices_for_field.reindex(
                index=reindex_like.index, columns=reindex_like.columns)

        all_fields[field] = prices_for_field

    names = ["Field"] + reindex_like.index.names
    prices = pd.concat(all_fields, names=names)

    return prices

redpajama_set_name: RedPajamaGithub


text:
31st President of the United States: 1929 ‐ 1933
Statement on the Importance of the Flexible Tariff.
THE PRESIDENT said:
"In my message to Congress of April 16 at the opening of the special session I gave my views as to broad principles which I felt were of importance in tariff legislation. One of the subjects I then presented was the importance of maintaining the flexible tariff. That principle was advocated over a long term of years by members of all political parties, and it was enacted in the 1922 tariff law. I advocated it at that time and since as a necessity in protection of public interest.
"The essential of the flexible tariff is that with respect to a particular [p.302] commodity, after exhaustive determination of the facts as to differences of cost of production at home and abroad by a Tariff Commission, comprised of one-half of its members from each political party, whose selection is approved by the Senate, then the President should, upon recommendation of the Commission, promulgate changes in the tariff on that commodity not to exceed 50 percent of the rates fixed by Congress. Under these provisions the President has no authority to initiate any changes in the tariff. No power rests on the Executive until after recommendations by the Commission. Any change must arise from application directly to the Commission, and his authority in the matter becomes a simple act of proclamation of the recommendations of the Commission or, on the other hand, a refusal to issue such a proclamation, amounting to a veto of the conclusions of the Commission. In no sense, therefore, can it be claimed that the President can alter the tariff at will, or that despotic power is conferred upon the Executive. It has been declared a constitutional procedure by the Supreme Court.
"The reasons for the continued incorporation of such provisions are even more cogent today than ever before. No tariff bill ever enacted has been or ever will be perfect. It will contain injustices. It is beyond human mind to deal with all of the facts surrounding several thousand commodities under the necessary conditions of legislation and not to make some mistakes and create some injustices. It could not be otherwise. Furthermore, if a perfect tariff bill were enacted the rapidity of our changing economic conditions and the constant shifting of our relations with economic life abroad would render some items in such an act imperfect in some particular within a year.
"It is proved by a half century of experience that the tariff cannot be reviewed by Congress more than once in 7 or 8 years. It is only a destruction of the principle of the flexible tariff to provide that the Tariff Commission recommendations should be made to Congress for action instead of the Executive. Any person of experience in tariff legislation in the last half century knows perfectly well that Congress cannot reopen single items of the tariff without importing discussion all along the line, without the constant unsettlement of business and the importation of contentions and factious questions to the destruction of other [p.303] important duties by Congress. Congress has literally hundreds of times in the past refused to entertain any amendment to a tariff except in periods of general revision.
"Although the provisions of the 1922 Tariff Act, as I have stated in the message, proved to be cumbersome in the method of determining costs of production and can be improved, yet despite this the agricultural industry especially received great benefits through this provision, a notable instance of which was the protection of the dairy industry. That industry would be in a sad plight today if it had not been for the increased duties given under the flexible tariff.
"The flexible provision is one of the most progressive steps taken in tariff making in all our history. It is entirely wrong that there shall be no remedy to isolated cases of injustice that may arise through the failure to adequately protect certain industries, or to destroy the opportunity to revise duties which may prove higher than necessary to protect some industries and, therefore, become onerous upon the public. To force such a situation upon the public for such long periods is, in my view, economically wrong and is prejudicial to public interest.
"I am informed the principle is supported by the most important of the farm organizations. It is supported by our leading manufacturing organizations. It is supported by labor and consumers organizations. It has never hitherto been made a political issue. In the last campaign some important Democratic leaders even advocated the increase of powers to the Tariff Commission so as to practically extinguish congressional action. I do not support such a plan.
"I have no hesitation in saying that I regard it as of the utmost importance in justice to the public; as a protection for the sound progress in our economic system, and for the future protection of our farmers and our industries and consumers, that the flexible tariff, through recommendation of the Tariff Commission to the Executive, should be maintained."
Herbert Hoover, Statement on the Importance of the Flexible Tariff. Online by Gerhard Peters and John T. Woolley, The American Presidency Project https://www.presidency.ucsb.edu/node/206980

redpajama_set_name: RedPajamaCommonCrawl


Author Jeff Speck asks how lively streets can make for not just walkable cities, but good and just ones.
What happens when architecture is intertwined with politics?
A Metropolis contributing editor notices an interesting trend in the latest issue of Dwell.
Public-outreach specialist Barbara Faga really can't complain about the growing democratization of design.


text:
We Are INTERVIEW - Rock - Mx3.ch
Play all tracks
We Are INTERVIEW
Rock, Geneva – With their "Frontal Rock" style inspired by the Foo Fighters, QOTSA and 90s Grunge, We Are INTERVIEW arrived on the Swiss Romande scene with a... Read Biography
With their "Frontal Rock" style inspired by the Foo Fighters, QOTSA and 90s Grunge,
We Are INTERVIEW arrived on the Swiss Romande scene with a bang! Tokyo, London and Reykjavik are
their first singles to hit the market, which helped them to secure positions in numerous festivals as well as on regional radio stations including Couleur3 and WRS.
Growing steadily since 2013, John (Vocals/Guitar) and Kim (Bass) who both had previous
experiences with the Swiss Romande scene, were joined rapidly by Simon (Drums) and Yann
(Lead Guitar). With their energetic pop/punk music, the group set their sights on their
concerts and tours to promote their new EP – Monster Monster.
After an intense year in 2016, with highlights including playing a concert at the Montreux Jazz Festival
and a winning the competition "Sortie de Piste de Château Rouge", "We Are Interview" released their
new EP, Monster Monster on January 27th, 2017. After a successful CD release event in Geneva on
January 13th at "Bouffon de la Taverne", the group started to heavily promote their music. After
successfully completing a tour in Eastern Europe, crossing both the Czech Republic and Slovakia over a seven day period in February, they have been for 10 days in Russia from May 11th onwards.
2018, after some singles and concerts, a new EP will be released in 2019 and the band will be spotted by the magazine Rolling Stones as well as the national radios.
Mid-2019 the lads are back in studio to record new songs for an early 2020 release. Without a doubt, We Are Interview is ready to make some noise again!
Close Biography
5194 visits – 6133 plays
Top 2 tracks
Thunder Cry - We Are Interview
Book this band!
Thunder Cry
Monster Monster Russia Tour 2017- Recap (Song: Reykjavik live version)
New York - Official Clip - Monster Monster Album
We Are INTERVIEW's tracks 10 tracks
Next gigs
Past gigs (8)
Registered since about 5 years
Last login on 13 January 2020


text:
Home News Central Bank of Nigeria begins distribution of lower denomination banknotes
Central Bank of Nigeria begins distribution of lower denomination banknotes
The disbursement which started in Abuja had been extended to Lagos, Kano, Enugu, Onitsha, Ibadan, Yola, Gombe, Katsina, Jos, Port-Harcourt, Minna and Umuahia in Abia state.
The Central Bank of Nigeria (CBN) over the weekend continued in its direct distribution of lower denomination banknotes to marketers, merchants, shopping malls, supermarkets, tollgates among others by visiting the ultra-modern Tejuosho market, Lagos.
The Director, Currency Operations Department, Central Bank of Nigeria Mrs Priscilla Eleje at the public sensitisation and enlightenment campaign of the banks direct intervention on lower denomination banknotes said one of the key objectives of the CBN as enshrined in the CBN Act, 2007 (section 1) is the issuance and management of legal tender currency in Nigeria.
But in recent time, the bank has observed the inadequate circulation of the lower denomination banknotes and difficulties encountered by economic agents .This she said, is despite huge volume of banknotes injected into circulation on annual basis.
The CBN, she said, recognises the important role markets play in economic growth, hence the need to ensure accessibility to lower denominations to carry out legitimate economic transactions.
It was in recognition of this that the management of CBN approved the direct disbursement of N200, N100, N50, N20, N10 and N5 denominations to economic agents.
Eleje explained that the framework for disbursement of these denominations stipulates that it would be made through the respective Deposit Money Banks (DMB) of the beneficiaries, stressing that the beneficiaries must ensure that their accounts are funded before any withdrawal could be made on their behalf.
The DMBs on their part are expected to include the demands of their merchants and market associations in their request to CBN when making normal withdrawal or deposit. However, she said the bank notes are to be delivered to the association at no extra cost.
"Therefore, market associations are not expected to add any cost to their members. In order to guard against possible abuse or diversion of these banknotes, the bank has developed a monitoring framework to ensure the judicious utilisation of the funds disbursed," she stated.
The exercise according to the central bank consists of on the spot-checks to the premises of the beneficiaries after receipt of disbursement as well as mystery shopper approach to shops, markets and toll gates and any beneficiary found to violate the procedure would be delisted.
Eleje explained that when the objective of the intervention is met, it will principally ease accessibility and address the scarcity of these denominations in circulation.
On his part, the CBN Lagos Branch Controller, Mr James Omerebere, urged the traders not to continue to recycle dirty or mutilated Naira notes but return such to their banks.
Mr Omerebere, also warned them against selling or hoarding the Naira , saying it is an economic sabotage.
Speaking on behalf of the traders, the market Leader of Tejoshuo Model Market, Alhaja Titilayo Noyimot, appreciated the CBN for making lower denominations available to traders in Lagos markets.
Alhaja Noyimot, who noted that the lower denomination notes given to the petty traders made it possible for them to have more customers, urged the CBN to extend the gesture to transporters to avoid fighting with their passengers.
Some petty traders who could not hide their joy told Radio Nigeria that with the move by the CBN, the era in which traders quarrel with their customers over lack of change after buying their wares would be over.
The public sensitisation and enlightenment campaign on CBN direct intervention on lower denomination bank notes which had been taken to some other states, is expected to be held in other markets in Lagos.
At the foreign exchange market the dollar sellers for 305 Naira 75 kobo, CBN rate, pounds sterling 400 Naira 7 kobo while the Euro goes for 357 Naira 36 kobo.
Previous articleEmirates Airlines Upgrades Aircraft for Abuja Service
Next articleIBB TO SARAKI: "Senate has been working well under you…..I'll support your presidential ambition"
BREAKING: John Mikel Obi Retires From International Football
VIDEO: "Fulani Herdsman Caught With Guns And AK47 Bullets Hidden In Bag Of Garri
BREAKING: Sixty (60) Escape Death As Hotel Collapses In Ebonyi
Daughter Of Afenifere Leader, Funke Olakunrin, To Be Buried July 22nd
PMB Under Attack For Telling Fulani Herdsmen To Ignore Northern Elders' Call To Leave Southern Nigeria


text:
All the World is Two
2008, Bristol, Cabot Circus
Clear red neon, steel structure and acrylic plastic
Commissioned by Bristol Alliance for Cabot Circus with Insite Arts
Our point of departure for All the world is two was a kind of cavernous emptiness, that feeling an artist gets when he or she is alone in the studio, confronted with the proverbial blank sheet of paper. But this sheet of paper was vast and voluminous, an empty tank – the void at the centre of an inner city car park. So, ideas and images began to circulate: we liked the idea of introducing a sense of alien presence into the void, something unprocessed, a kind of antidote to the smartness of the surrounding designed and built environment. We wanted the work to have the capacity to generate multiple layers of metaphor and thereby transcend any narrative impulses. People should be able to engage with it visually, viscerally, and be accorded the same freedom we had been, to generate meaning from it. We made forays into the imagery of neurology and botany only to leave it behind and begin to imagine our own generative systems, homespun organisms of growth and connectivity. The 'twin figures' began to materialise and they seemed to embody both sameness and difference: they were duplicates of each other, but inverted, and seemed to create both visual and discursive circulation. The fact that they were built of light (neon) challenged their separateness: where light meets light there is no border, no partition but instead a kind of symbiosis occurs: a discursive and aesthetic space or 'void' is opened up and out of the figures' duality something else, 'in between' literally 'comes to light'. We spent hours playing with different juxtapositions of coloured neon, enjoying for a brief moment the idea of a blue/pink, girl/ boy thing, only to ditch them all and return to the 'clear red' we knew would literally fill the void, transforming it into a tank of limpid colour. The process of bringing All the world is two into being was one of conceptual and material production. The void offered itself as a kind of specimen jar for an unknown, unnameable species. It was the vital vacuum for this generative process.
Taken from an interview with the artists and Sarah Collicott 2005


text:
      # export JAVA_HOME=/home/y/libexec/jdk1.8.0/

      export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=900

      # We need to add the RFA appender for the mr daemons only;
      # however, HADOOP_MAPRED_LOGGER is shared by the mapred client and the
      # daemons. This will restrict the RFA appender to daemons only.
      export HADOOP_LOGLEVEL=${HADOOP_LOGLEVEL:-INFO}
      export HADOOP_ROOT_LOGGER=${HADOOP_ROOT_LOGGER:-INFO,console}
      export HADOOP_DAEMON_ROOT_LOGGER=${HADOOP_DAEMON_ROOT_LOGGER:-${HADOOP_LOGLEVEL},RFA}

      #export HADOOP_JHS_LOGGER=INFO,RFA # Hadoop JobSummary logger.
      #export HADOOP_IDENT_STRING= #A string representing this instance of hadoop. $USER by default
      #export HADOOP_NICENESS= #The scheduling priority for daemons. Defaults to 0.
      export HADOOP_OPTS="-Dhdp.version=$HDP_VERSION $HADOOP_OPTS"
      export JAVA_LIBRARY_PATH="${JAVA_LIBRARY_PATH}"

      # History server logs
      export HADOOP_LOG_DIR=/export/var/log/hadoop-mapreduce/$USER

      # History server pid
      export HADOOP_PID_DIR=/var/run/hadoop-mapreduce/$USER


text:
Thursday Returning Shows, Fall 2001
By Kristen Baldwin
Sci-fi,
The WB, 9-10 p.m.
Debuts September 27
It's never a good idea to cross a witch. So, when sitting in Alyssa Milano's incense-scented trailer on the set of The WB's drama Charmed, one fears being turned into a newt for asking the obvious-but-delicate question, What the hell happened between you and Shannen Doherty? Thankfully, Milano, who plays free-spirited enchantress Phoebe Halliwell, puts on a gracious game face when asked about the much-discussed on-set friction with her ex-TV sis.
"I think it's hard when you put…[long pause]…two very different people together. I'm very laid-back and passive. I have my Buddha," Milano says, gesturing to a small shrine at the back of her trailer. "I come in here and meditate. [Shannen's] got a lot of energy, she's very headstrong, she wants to get the job done…. I think it's unfortunate that she left, and that she needed to bad-mouth everyone involved and the audience," continues Milano, alluding to the former 90210 star's recent dismissal of Charmed as "a show for 12-year-olds." (Doherty declined to comment for this story.) "She sounds really angry. I just hope I didn't contribute to that anger."
Shannen's not the only one who's miffed. "It was done very poorly, in my opinion," says Holly Marie Combs (Piper) of the producers' postseason decision to allow Doherty to leave the coven. "We should have had an opportunity to have her character, Prue, make a graceful exit and have our story writers properly plan for that." Instead, writers were compelled to turn last season's standard-issue cliff-hanger — Prue and Piper get thrown through a wall by a cranky demon — into a makeshift tragic send-off. "Now," adds Combs, "we're scrambling to explain why I live and she doesn't."
We'll leave you in suspense on that one, but what we can tell you is that the Halliwell girls get the Power of Three up and running again with long-lost sister Paige (Jawbreaker's Rose McGowan), who gets mysteriously drawn to Prue's funeral in the two-hour season premiere. Indie-film maven McGowan, however, was spooked about jumping into the TV cauldron.
"I did a pro-and-con list, and the con list was all ego-related things like, 'Will people make fun of me for doing TV?' " she recalls. "The positives were, I've never had a steady job, and I really liked the show. When I first watched it, I thought it was going to be like Sabrina, the Teenage Witch. I thought there'd be talking cats. But I looked at my watch and 45 minutes later I was still watching."
Exec producer Brad Kern predicts that despite the last-minute witch switch, Charmed fans will stay spellbound. "The fun is watching the new sisters bond," he says. "In one episode, they get shrunk to three inches tall. When you're hiding in a corner scared for your life, it's a bonding experience." Adds Combs: "We're giving the audience a mourning period. Piper doesn't readily accept the new sister — that's my responsibility, to play what the audience will feel."
The stars, meanwhile, have adjusting of their own to do. While Milano thinks "new blood is exciting," Combs confesses, "For me, there was a definite sense of loss; I was very close with Shannen…. [Today] we're filming more grieving after the funeral. It was hard for me to sit in front of the casket. I was like, this is ridiculous! You are asking so much of my psyche right now!"
Holly Marie Combs,
Shannen Doherty,
Rose McGowan,
Alyssa Milano,
Dorian Gregory,
Brian Krause,
Julian McMahon
Charmed recap: The Tale of Cyd and Knansie
Charmed recap: A shocking end twist reveals a traitor close to the Charmed Ones
The CW orders nine more episodes of Charmed
Charmed recap: The source of all evil finds a host
Charmed recap: A very demonic Christmas
Charmed recap: A true dating app nightmare
Charmed recap: The Vera sisters learn who killed their mom
Charmed recap: Mel is forced to make a devastating sacrifice
Charmed premiere recap: 'This isn't a witch hunt, this is a reckoning'
Charmed recap: Be wary of manic pixie dream girls
Charmed recap: To Tartarus and back
Charmed first look: Gina Rodriguez directs the power of three
Charmed recap: Listen to your Elders ... or don't
Charmed recap: Pour one out for the elders
Charmed star Rupert Evans says Harry's past will play an 'integral' role in the story
Charmed recap: The Vera sisters meet their new Whitelighter
Charmed recap: The Vera sisters ain't afraid of no ghosts
Billions recap: Chicken farms and political charm
Charmed recap: Macy the Devil Slayer
Charmed adds former Pretty Little Liars and The Originals stars — exclusive


If you need carpet spot removing service, we can help you. Give us a call for more information.
You should approach us now so we can get rid of your main issues.
We service all areas of the Lower Mainland including: Vancouver ,Lower Mainland ,Maple Ridge ,Downtown Vancouver .


It lets you search for information using many different resources.
Word Search II is a game in which you must find a list of words in a grid.
My Web Search Toolbar is a very simple and very useful search engine.
Simple FTP transfer files with ease and search your FTP server.
grepWin is a simple search and replace tool that uses regular expressions.
A simple rogram for Search and Replace in your MS Outlook contact data.


text:
Gallagher: A little radicalism
Kevin Gallagher 12:00 am, Mar 05, 2009
On Feb. 20 armed policemen knocked down the barricades and forced their way into the Kimmel Student Center at NYU. For the previous day and half, a band of students calling themselves "Take Back NYU" had been occupying a university cafeteria, issuing a grab bag of demands ranging from scholarships for Palestinian students to wider library access. YouTube videos and outraged blog posts carried their message forth from the "liberated space" at the Kimmel Center, until NYU cut off their Web access, university police poured in and the whole thing fell apart.
Those students' attempts to "take back" their university were more or less a failure, but we at Yale would be amiss if we ignored the story of this protest or dismissed it as the sort of silly adolescent posturing one might expect at NYU.
That isn't to say the events at NYU weren't silly adolescent posturing. It's hard to take seriously a revolutionary group who began its list of demands with guaranteed amnesty for its members. The video footage of the raid on the Kimmel Center doesn't record a rebel's defiant last stand; it looks like what it was: nervous undergraduates nattering on about "consensus" and lecturing policemen on the importance of avoiding brutality.
Their actions may not deserve our respect; but the motive behind them does. When the students of "Take Back NYU" camped out in the cafeteria, when they set up barricades in the hall, they announced a fusion of theory and practice. Almost every undergraduate is an idealist; these were willing to put themselves on the line for their ideals. And when it comes down to it, that's what a university is for.
Here at Yale, in one of the centers of our nation's intellectual life, we can hardly avoid coming across great ideas. To be a Yale student means to ponder the mysteries of life in late-night common-room conversations, to be inspired by (at least some of) the ideas we hear in lecture, and to be constantly, voluntarily or against our will, surrounded by the best that has been thought and said.
An old quip says that academia is where the battles are so fierce because the stakes are so small. But it doesn't have to be that way. Those students at NYU, however misguided, did their university a service by raising the stakes of an academic debate. By putting their principles before their best interests, they helped their university fulfill its role in society. As centers of intellectual culture, universities have a responsibility to think on behalf of their societies: to provide solutions to problems and to articulate ideals for life. But for the university to take on this role, scholarship must be coupled with action; the compelling ideas and inspiring theories of the lecture hall must, one way or another, get out into the streets.
I think gender-neutral housing is a terrible idea, and one whose philosophical background is opposed to the right ordering of human life. But on Wednesday morning when I was walking through Cross Campus, I was thrilled to see the students protesting for gender-neutral housing camped out in their tents on the snowy lawn. There, I thought, is exactly what college is supposed to produce: people ready to embrace adversity and act on the principles they studied. I admired them and what they were accomplishing for better or for worse. And I felt ashamed that my activism is mainly limited to signing petitions pushed at me in the dining hall.
In one of Rainer Maria Rilke's poems, the poet looks at a statue of the god Apollo, tracing it lovingly with his words. And when he finishes his description of this ideal work of art, he ends the poem not by praising the artist or by praising Apollo but by giving an order to the reader: "You must change your life." Our studies here should make us feel the same way. When we encounter something meaningful in our studies, when we learn about a problem that cries out for a solution, we must change our lives.
And so I salute the members of "Take Back NYU," and I salute the Students for Housing Equality at Yale, and I salute everyone at this college who has worked to raise the stakes of academia. Keep it up; a little more radicalism would be good for us all.
Kevin Gallagher is a sophomore in Pierson
College.


Great Salt Lake City, Utah, Jan. 20, 1849 $1 LDS Demand Note, Very Choice CU. Certified PMG-64. Fully signed by Brigham Young, Thomas Bullock, H.C. Kimball and payable to N.K. Whitney. With the embossed "Private Seal of the Twelve Apostles"
A rare and desirable financial artifact of early Mormon Heritage in exceptional degree of preservation with bold and important signatures.


The OWC 20TB Mercury Elite Pro Dual 2-Bay Thunderbolt 2 RAID Array is a media storage that features two bays each sporting an 10TB hard drive to deliver a 16TB solution with Thunderbolt capabilities. The two 3.5" hard drives are preconfigured with RAID 0 array, which allows speeds of up to 474 MB/s. You can reconfigure the drives in a RAID 1, SPAN, or individual mode utilizing the hardware RAID controller. Other notable features include an aluminum enclosure and a quiet fan to cool the drives and internal components.


text:
TSMC founder: Pat Gelsinger doesn't have enough time to take Intel to the top
Intel's CEO age limitation could thwart its ambitions (or not)
By Rob Thubron December 9, 2021, 5:15 27 comments
What just happened? Pat Gelsinger has shaken things up throughout his brief time as CEO of Intel, placing a heavy focus on the company's manufacturing operations and opening up its capacity to other chipmakers. He even proclaimed in October that "Intel is back." But TSMC's founder and former CEO thinks Gelsinger won't turn Chipzilla into a global manufacturing leader for one simple reason: time is against him.
Morris Chang, the man who founded TSMC and served as its Chairman and CEO, made the comments at his lecture 'Cherish Taiwan's Advantages in Semiconductor Wafer Manufacturing,' reports UDN (via Tom's Hardware). Chang wasn't being ageist. He noted that Intel, like many US companies, has a rule that its executives must retire at a certain age---65, in team blue's case. Gelsinger turns 61 in March next year.
Update (12/14): An Intel spokesperson reached out to inform us that the company has updated the corporate officers' retirement age "for some time now." As such, corporate officers are no longer required to retire at age 65. The document (PDF) has been updated as recently as November 10, 2021, and reads that under the new policy, "non-employee directors may not stand for reelection after age 75."
Just over four years is no short span of time, but Intel's plans for dominance are long-term. However, the two Arizona chip plants that it broke ground on in September are expected to become fully operational in 2024. The plants are part of Intel's renewed IDM 2.0 strategy that involves its newly formed Intel Foundry Services (IFS) division manufacturing chips for others. Intel is talking to over 100 companies for foundry work, and two of the first high-profile customers will be Amazon and Qualcomm.
The factories are set to produce chips using Intel's 20A process, the first to use its "RibbonFET" version of Gate-All-Around (GAA) transistors and PowerVia interconnects.
Gelsinger himself has said that Intel's IDM 2.0 initiative will help it compete against TSMC, Samsung, GlobalFoundries, UMC, and others by 2025, which would still be within his tenure as boss. And depending on his level of success, the Intel board could decide to retain its current CEO's services after he turns 65.
Some of what Chang says could be a response to Gelsinger publicly warning against the dangers of relying on Taiwanese chipmakers given China's threatening activities in the region. "Taiwan is not a stable place," said Gelsinger, speaking at Fortune Brainstorm Tech, reports Nikkei. "Beijing sent 27 warplanes to Taiwan's air defense identification zone this week. Does that make you feel more comfortable or less?"
Gelsinger also said the US government should subsidize domestic companies exclusively when spending the $52 billion it has set aside for semiconductor funding. The comment didn't go down well with current TSMC chairman Mark Liu. "It will be very negative for the United States to subsidize only American companies," Liu said. "Unlike Intel, TSMC is very positive about non-U.S. chipmakers expanding capacity in America. It is a great thing."
27 comments 276 likes and shares
Find Your Dream Tech Job
Intel discusses streamlined strategy for next-gen Xe2 graphics
Apple's next MacBook Air and iMac could ship with 3nm-based M3 chips from TSMC
How We Test: CPU Benchmarks, Misconceptions Explained
When it comes to semiconductors, leading is not everything
Featured on TechSpot
AMD admits to restraining chip supply to keep higher CPU and GPU prices
Memory chip prices expected to remain in freefall
Compact custom version of Windows 11 released
Load Comments 27
Load all comments...
The Nvidia RTX 4070 looks set to arrive in April
This 8-pound copper cylinder can cool an Intel Core i9 CPU pretty effectively
Recently commented stories
Jump to forum mode
DS4Windows
iTunes Download
Cinebench
Minecraft Download
Fortnite Download
Windows Installation Tool


text:
Graeme Leach
Graeme is one of Britain's leading economists and a former Chief Economist and Director of Policy at the Institute of Directors (IoD) – between 1998 and 2014. In 2015 he formed macronomics, which is a macroeconomic, geopolitical and future megatrends research consultancy.
Graeme has substantial public policy experience having represented the IoD in discussions with the Chancellor of the Exchequer and 10 Downing Street. He is a visiting professor of economic policy and a senior fellow of the Legatum Institute in London, focussed on analysing the sources of prosperity across the globe. He is also a member of the IEA Shadow Monetary Policy Committee (SMPC) and a life fellow of the IoD. Previously Graeme has worked as chief UK economist and chief international economist at The Henley Centre, and as economic adviser to the SPI Group.
Over recent decades he has made hundreds of speeches on the economic outlook and economic policy, in 28 countries across the globe. He has also undertaken 100s of live television and radio interviews on BBC News, Sky News, Radio 4's Today Programme and others. From 2014-2020 he wrote a weekly column for the City AM newspaper and has written numerous articles for the Daily Telegraph and The Times. Graeme is writing a forthcoming book: The Great Inflection, on the future economic and societal impact of technology.
Great summary of the world economy and some very useful evidence-backed predictions for the coming year.
Very useful information and insightful.
Enjoyed the velocity of the delivery.
There was a range of attributed data which combined to form a complete picture.
Wed. 23rd June 2021 - What will the post COVID-19 economic recovery look like?
Wed. 10th November 2021 - What will the post Covid-19 economic recovery look like?


Our ancestors made fish hooks.
Our ancestors made fur boots.
Our ancestors made fur parkas.
Our ancestors made bows and arrows.
Our ancestors made fish traps.
Our ancestors made birch bark baskets.
Our ancestors made fur mitts.
Our ancestors made fur hats.
Our ancestors made hide scrapers.


text:
Дганбад (, ) — місто на північному сході Індії, у штаті Джхаркханд, відоме як вугільна столиця Індії.

Одне зі 100 найшвидше зростаючих міст у світі. Розташоване у долині річки Дамодар, поблизу вугільного басейну Джхарія. Важливий сільськогосподарський торговий осередок. Тут знаходяться Індійський Гірничий Інститут (філіал Біхарського Університету) та Центральний Дослідницький Інститут Палива. Річка Дамодар, яка зі сходу на захід перетинає область в якій лежить Дханбад, оточена зрошувальними збірниками та полями рису, кукурудзи та соняшника. Сусідні вугільні басейни Джхарія та Раніґандж допомогли перетворити регіон на ведучого виробника вугілля в країні.

Населення міста  мешканців; міської агломерації —  мешканців (перепис 2001 року).

Джерело
 Енциклопедія Британніка

Посилання
 Дганбад — міський портал

Міста Індії
Населені пункти Джгаркганду
Міста-мільйонники Індії

redpajama_set_name: RedPajamaWikipedia


Jpmorgan Chase Bank National Association is a business in Perry, OH.
Jpmorgan Chase Bank National Association, a stable growing company under , is being run by Charles Fay Full Name Report. Since , their sales have been favorable and consistent at Unknown. Company location coordinates are: 41.766305,-81.180735.
It can be reached by dialing (440) 352-5491 Full Phone Report, and you could get in touch with their sales team in 2772 North Ridge Road, Perry, Ohio OH 44081. Visit their website at: jpmorganchase.com to know more about the company's history, products and services, as well as frequently asked questions and privacy policies.
You can learn more by checking their classification codes: SIC – 6021 and NAIC – 522110. Call the hotline stated above for faster transaction and queries. Jpmorgan Chase Bank National Association would like to hear from you.


Enjoy this educational and highly entertaining show in the amazing Zootorium!
Animals will show of f their natural abilities � on stage! Learn about wildlife, conservation, and animals here at Zoosiana!
Location: The Zootorium is located between the Gift Shop and Petting Zoo.
Cost: $2.00 per person 3 years of age and older per show.


Seamless, Sheer to waistband Ultra High Shine tights with a lustrous high gloss appearance . A real treat to wear or for special every day wear. Please note these are not a glass finish.
Please note as these items are in high demand, certain sizes and colours are not available temporarily. This item ships internationally only with tracking.
Gloss appearance - Gloss is Not visibly apparent viewing through the packet, these must be stretched on the leg to get that incredible shine!


Since joining the Board of Directors over a year ago, I have seen and participated in many fantastic Museum milestones and events. From our wildly-successful 85th Anniversary Celebration and Membership Drive, the Taste of St. Charles Foodie Fest, to our recent decision to embark on an important (and needed) strategic plan, these tremendous accomplishments make me proud to play a role in the Museum's governance and direction.
I've always believed, and will continue to believe, that the Museum is one of the great influential civic organizations of our community. As I regularly reflect on our work, it solidifies, for me, this belief and reinforces my commitment to the Museum's work and mission. Reflection also reaffirms for me that the Museum is not merely a building, idly standing downtown, but a living thing, really. A force that influences how people see and feel about St. Charles. The Museum is the keeper of St. Charles' history, which is to also say the keeper of its soul.
What a great responsibility we have as directors, to influence and assist in the steering of this great ship – the keepers of our civic identity. If the preceding year is any indication, the Museum's Board and staff are on the proverbial right track. The Museum is well governed. It's growing, it's engaging, it's preserving and, most importantly, sharing the essential stories that make up the greater St. Charles story.
As St. Charles' history is well kept, its future is also bright. The Museum will continue to be an important source of pride for me. It's important that this fact remain – for me and for St. Charles.


text:
Rackspace open sources its cloud computing platform
With a surprising move, Rackspace today announced the release under open source license of the technology that powers its cloud computing platform.
Customers will be able to download it and use it to build a Rackspace-like on-premises cloud.
Named OpenStack, the platform initially includes only the part of the The Rackspace Cloud (formerly Mosso) called Cloud Files (formerly Cloud FS).
Cloud Files is a storage-as-a-service cloud that Rackspace launched in May 2008 and that competes with Amazon Simple Storage Service (S3), part of the Amazon Web Services (AWS).
This component will be called OpenStack Storage:
OpenStack Object Storage aggregates commodity servers to work together in clusters for reliable, redundant, and large-scale storage of static objects. Objects are written to multiple hardware devices in the datacenter, with the OpenStack software responsible for ensuring data replication and integrity across the cluster. Storage clusters can scale horizontally by adding new nodes, which are automatically configured. Should a node fail, OpenStack works to replicate its content from other active nodes. Because OpenStack uses software logic to ensure data replication and distribution across different devices, inexpensive commodity hard drives and servers can be used in lieu of more expensive equipment.
In late 2010 the company will also include in OpenStack the portion of its current platform called Cloud Servers.
Cloud Servers is an Infrastructure-as-a-Service (IaaS) cloud computing platform that competes with Amazon Elastic Compute Cloud (EC2), part of the Amazon AWS division as well.
Cloud Servers is built on top of Xen, but in May Rackspace announced a plan to migrate everything to XenServer, so OpenStack will be based on Citrix XenServer too at the beginning and the Xen Cloud Platform (XCP) going forward (which means that the Open vSwitch will be the building block of the distributed networking infrastructure).
Rackspace owns a second IaaS cloud computing platform: the Slicehost one, which is based on Xen too.
The hosting provider acquired Slicehost in October 2008 but kept the company as an independent subsidiary.
There's no mention of any plan to include the Slicehost technology in the OpenStack infrastructure, probably because Cloud Servers are a superset of Slicehost offering.
In late 2010 OpenStack will also include the technology that powers the NASA IaaS cloud called Nebula (not to be confused with OpenNebula, an IaaS cloud computing management platform).
Nebula is available to NASA's internal project groups. Nebula is not available for use by private industry or by the public. Nebula is also currently acting as a test-bed for Federal Cloud Computing technology for The Office of Management and Budget.
The Cloud Servers component and the NASA Nebula component will be called OpenStack Compute:
OpenStack Compute is software for provisioning and managing large-scale deployments of compute instances. It is written in Python, using the Tornado and Twisted frameworks, and relies on the standard AMQP messaging protocol as well as the Redis distributed KVS.
The use of AMQP and Redis technologies is extremely interesting and may create the opportunity to interoperate with the VMware's clouds of tomorrow.
VMware in fact hired the creator and maintainer of Redis in March, and acquired Rabbit Technologies in April.
Rabbit Technologies offers an open source enterprise messaging system called RabbitMQ which is based on Advanced Message Queuing Protocol (AMQP). Along with the Redis database, both technologies are probably being integrated in a future cloud computing platform that VMware is building with SpringSource.
Currently, the OpenStack Compute technical board includes six members:
Rick Clark – Senior Manager of Software Product Development at Rackspace
Clark, who is the Chief Architect and Project Lead for OpenStack, has been the Engineering Manager of Ubuntu Server at Canonical.
Paul Voccio – Network Security Admin IV at Rackspace
Soren Hansen – Systems Architect at Rackspace
Joshua Mckenty – Web Apps Architect and Technical Lead at NASA
Ray O'Brien – Nebula Program Manager at NASA
Jesse Andrews – Nebula Tech Lead at NASA
The underlying hardware infrastructure will be provided by Dell, which is a remarkable achievement considering the lack of vision demonstrated by the company's founder at the Citrix Synergy 2010 conference this May.
A lot of players confirmed attended a special event about OpenStack that took place last week in Austin: AMD, Autonomic Resources, Citrix, Cloud.com, Cloudkick, Cloudscaling, CloudSwitch, Dell, enStratus, FathomDB, Intel, iomart Group, Limelight, Nicira, NTT DATA, Opscode, PEER 1, Puppet Labs, RightScale, Riptano, Scalr, SoftLayer, Sonian, Spiceworks, Zenoss and Zuora.
The group is incredibly interesting. It includes a metering & billing player, Zuora, and a semi-stealth network virtualization startup, Nicira, where the founder and former CEO of VMware, Diane Greene, invested.
Because the initial API for OpenStack essentially is the current Rackspace API, some of these vendors are immediately supporting the new platform. Like enStratus.
In the future OpenStack will support both standard APIs and vendors' specific ones, like the VMware vCloud APIs.
Rackspace published a 3-minutes supporting video that describes how things will work and what's the commitment in OpenStack.
YouTube also offers another couple of interesting videos, both recorded at the inaugural OpenStack Design Summit last week:
An interview with Lew Moorman, Rackspace's President of Cloud and Chief Strategy Officer
An interview with Rick Clark
OpenStack, released under the Apache 2.0 license and completely unrestricted (no Enterprise Editions planned) can be downloaded here.
The initiative is pretty significant and the support demonstrated by the industry players is remarkable. But while many people will highlight that VMware is not included in the list above, the real vendor that can be potentially impacted by this announcement is Amazon.
Since the launch of EC2, customers have wondered if and when Amazon would release an on-premises version of its cloud computing platform. But Amazon is paranoid about its infrastructure, which is built on top of the Red Hat implementation of Xen. Probably for the company giving away the technology to customers equals to losing revenue and exposing the internals of the custom management stack to attackers.
But if OpenStack will have a lot of traction, Amazon may be obliged to surrender and give away an on-premises EC2 sooner than planned.
The Planet selects KVM for IaaS cloud hosting
VMware answers to Rackspace on OpenStack


Broadcasting the 1972 Maifest Parade from the awning of the radio station building. On the awning (L to R) Sam Behnke, Randy Reets, and Tom Whitehead Sr.
Photo courtesy of Donna (Bigley) Holbrook, daughter of T.C. Bigley.
George H.W. Bush being interviewed by Tom Whitehead Jr. in 1976. Bush was Director to the CIA at the time.
(L to R) Randy Reets, David Grace, and Keith Kane broadcasting the Brenham Cubs in the State baseball tournament in 1988 at Disch-Falk Field in Austin.
KWHI Polka Band playing in a local dance hall in the 1950s.
Music Director Bonnie Whitehead at the KWHI studios in the 1950s.
Announcer Clyde Averitt in the KWHI control room in the 1970s.
Announcer Brandie Alexander operating the KWHI control board in the early 1990s.
Randy Reets broadcasts live for inside the new KWHI van in 1978.


text:
Johnston on NHL: Pension plan was vital in CBA talks
"The premise that the players were going to do this without this new pension -- that was not going to happen," Ron Hainsey said then. "We made that clear early on."
Chris Johnston | @reporterchris June 6, 2013, 8:31 PM
Chris Johnston @reporterchris June 6, 2013, 8:31 PM
A player that just completed his first NHL season would probably have a tough time identifying any aspect of the four-month lockout that was good for him.
There won't be any doubt 40 years from now.
Under the terms of the new collective bargaining agreement, players will earn as much as $255,000 annually after age 62 thanks to the defined benefit pension plan the NHL and NHL Players' Association negotiated into the deal.
The details of the new plan are laid out in the recently published 517-page CBA document, which has started to be distributed to NHL teams and player agents.
NHL players had previously been on a defined contribution plan and fought hard for the change. Even though the issue didn't receive as much attention as the split in revenues or contract term limits during the lockout, it was a top priority for the players.
In fact, Winnipeg Jets defenceman Ron Hainsey — a key member of the NHLPA's negotiating committee — identified it as a big breakthrough after the sides tentatively agreed on the deal in January.
"The premise that the players were going to do this without this new pension — that was not going to happen," Hainsey said then. "We made that clear early on."
The new pension plan is based on the amount of NHL service a player accumulates over the course of the CBA, which is set to expire in September 2022 (assuming it is extended after eight years).
Anyone who is in the league for its entirety — either on the active roster, injured reserve list or injured non-roster — would be due to receive the estimated full value of $255,000.
It will also be lucrative for those with only partial service.
In an example set out in the CBA, a player that spends three years volleying between the NHL and American Hockey League before making the NHL full-time could still accumulate a pension worth $197,625 annually.
The benefit for each player isn't impacted by how much he earned during his career; only the amount of time he spent in the league contributing to the plan.
The bulk of the pension fund will be financed by the league and teams, who are on the hook for at least $38 million each year until the CBA expires.
The pension issue was so complicated to work through during negotiations that lawyers continued to hammer out the language while NHL commissioner Gary Bettman and NHLPA executive director Donald Fehr were announcing the tentative agreement at the Sofitel in Manhattan on Jan. 6.
The article outlining the pension rules ended up spanning 15 pages in the new CBA and the players were thrilled to see it included.
"That was an issue for the players that this deal would not get done without," said Hainsey. "As far as a centrepiece thing that the players are going to be able to rally around and be proud of, I would say the pension without question."
Now we know why.


Greenwich has it all – dining – shopping – parks - beaches and The Griff!
The Griff you say? Yes – The Griff – the town's Griffith E. Harris Golf Course. Located on just over 158 parkland acres on the northwestern edge of town, the Robert Trent Jones Sr. design has been a fixture of summer activity for young and old alike since its construction in 1963.
And, for as long as we can remember, the "King of the Griff" - PGA Golf Professional Joe Felder – has been presiding over The Griff's operations and more importantly sharing his time and knowledge with generations of aspiring golfers.
Recently Living Greenwich had the opportunity to sit down with Joe to learn a bit more about "The King of the Griff".
Joe tell us about yourself and how long you have been here at The Griff.
I have been here at The Griff for 29 years, prior to that I worked for Billy Mitchell, the former Head Golf Professional at Innis Arden Golf Club in Old Greenwich, for 8 years.
So you kinda love it!
Yeah, I am very fortunate – I get paid to do what I love. I teach golf, play golf, talk golf, drink, and talk more golf -- it's just perfect. I go to Florida for three months in the winter, come back here and run a busy town golf course.
What keeps you here at The Griff, what is it about this place?
I love the people. They're just great. They like me, they have gotten used to me, they like the energy. I transpose that energy to my staff and they all keep people happy. Also, I am very invested in the junior golf program here. Billy Mitchell got me started in running junior golf programs when I was at Innis Arden - explaining to me, at the time, that the junior golfers will be taking over the game eventually. I finished my first junior clinic this spring and incredibly I had two kids in the clinic whose parents were in my first junior clinic here at The Griff almost 30 years ago!
What is your view on the state of the junior golf programs in town today?
I think junior golf is making a comeback. I think we are seeing a lot of young girls coming to the game. They don't want to get hit in the head with a lacrosse stick or whatever it may be, but they want to be competitive so golf is a very attractive alternative.
I understand Greenwich's Junior Town Tournament is named after you.
Yes - We have a member who helped arrange for the town's junior golf tournament to be named the 'Joe Felder Junior Town Tournament' some years ago. It is an honor to be recognized in such a manner.
The brief backstory is I started giving his daughter golf lessons when she was 7 years old, she continued to play at The Griff over the years and ultimately played on the Greenwich High School Golf Team. Anyway, her dad is a huge supporter of the junior golf programs here and arranged for the tournament to be named after me.
This gentleman is still very involved in the event and every year he pays the greens fees for the 60+ kids who play in the Junior Town Tournament. We are very fortunate to have so many dedicated and passionate members supporting our junior programs.
Many golf courses are getting creative with their offerings – like moving tees forward - in an effort to make the game more enjoyable for golfers of all abilities - have you found changes like that to be successful?
Yes - About 14 years ago, I put gold tee markers in for the kids to shorten the course a bit. Now the older players are using them. We have a woman here that is probably 85 years old, she was ready to quit the game. I convinced her to play the gold tees and today she's still at it. She loves it. We just purchased Family Tees which makes the course even shorter so the whole family can come out and enjoy playing.
I teach, I love to teach but I can only teach so much because I need to be around the shop to answer questions. Golf pros need to wear many hats every day. We teach, organize events, we have golf shop inventory to sell and we answer questions, a lot of questions from our customers. What grip do I buy? What shaft should I get? A guy came in today and said, "I bought a driver two weeks ago and it worked, now it doesn't work any more, why is that". I said, "you know, the driver didn't really cause that, it's just a driver, it sits in your bag, it hasn't changed". He said, "I never thought about it that way".
Our members, especially the ladies, are super passionate. They have a Tuesday group and a Thursday group – maybe 140 ladies that are part of that membership. And the 9-hole group has gotten big also. The gals organize a Swing Fore Hope charity golf tournament every July that has the single best raffle in the town of Greenwich. The proceeds from last year's tournament went to benefit Kids in Crisis right here in town.
The men love to come out and play, we just had a men's mix and match yesterday. The week before the Town Tournament we have the men's Member/Member. We have an unofficial beer drinkers group that play on Wednesdays. They might pitch in 20 bucks and the winner buys the beer after the round. Every day there is action, it's just a busy place.
How does the course look right now?
Our golf course is in perfect condition right now. As you know we have had a very wet spring with unseasonably cool weather but now that the sun in coming out things are fantastic. Our superintendent, Jay Collins, doesn't get enough credit and as we speak he is gearing up for the big town tournament this coming weekend.
Tell us about the town Tournament.
This year will be the 74th Annual Greenwich Town Tournament. The men will play a 36 hole event on the weekend of June 23 and 24 (we tend to get more players when it's held on a weekend). The women play an 18 hole event on Monday, June 25. We have 3 divisions for both the men and the women: a town-wide division, a Senior division (50 and up) and a Super Senior division (65 and up). All division are medal play – meaning stroke play.
How can people learn more about The Griff and events like the Town Golf Tournament?
Very glad you asked – we have a website, thegriffgolf.org, with lots of information about activities here at The Griff. Or - people can just stop by or give us a call at 203-531-7200 and say hello. We are always available to meet new folks looking to get involved with the game.
Joe – thanks so much for your time. One last question. What would you tell someone who wants to play golf but has no experience?
Send them on up to The Griff to see a PGA professional! We help a lot of beginners. We just started corporate clinics for women who want to learn the game. Golf is a great game, we love it and are happy to teach anyone who wants to learn.


text:
Podersdorf am See (węg. Pátfalu) – gmina targowa w Austrii, w kraju związkowym Burgenland, w powiecie Neusiedl am See. Według Austriackiego Urzędu Statystycznego liczyła 2,05 tys. mieszkańców (1 stycznia 2014).

Przypisy

Gminy w powiecie Neusiedl am See


This year I turned 29. Ahhhh! So many people freak out about getting older and I haven't quite gotten there yet. Yes there are plenty of things that I thought I would have accomplished or done by now, but honestly, those things don't define me. I'm having the time of my life.
I really feel like I'm getting better with age. And not just in the way that people say it to make themselves feel better but really. I find myself often in rebuttal of "old jokes" just shaking my head and yelling "like fine wine, baby." But truly, this is the best and most comfortable I have felt with myself in a long time – outside of a couple pounds that I could lose. But I wanted to take some time and share with you just a few of my revelations so far in this last year until 30.


text:
Puerto Rico Recovers After Maria
Complete coverage of relief and recovery efforts in Puerto Rico, following Hurricane Maria
Puerto Rico Officials Say All of Island Has Power Again
Wooden poles are being replaced with steel poles that will hopefully be more durable during future storms
Published Aug 14, 2018 at 3:02 PM | Updated at 3:07 PM PDT on Aug 14, 2018
The island's electric utility announced that crews working in the southern city of Ponce reconnected the last neighborhood that had been offline since Hurricane Maria.
Power has been restored to all of Puerto Rico for the first time since Hurricane Maria struck nearly 11 months ago, officials said Tuesday.
The island's electric utility announced that crews working in the southern city of Ponce reconnected the last neighborhood that had been offline since the Sept. 20 storm knocked out the U.S. territory's power grid.
Ponce resident Charlie Colon Nazario told El Nuevo Dia that he was looking forward to no longer having to use a generator to light his house.
"No more lamps, no more candles, no more extension cords," he said as about two dozen power workers completed the connection to his home.
The Ponce neighborhood was the last to be reconnected to the grid because landslides and rough terrain made it difficult for crews from the electrical authority or contractors to reach the area to make repairs, said Carlos Alvarado, chief of technical operations for the power authority.
Utility crews used a helicopter to replace wooden power poles knocked down in the storm with steel ones that officials hope will do a better job staying up during future storms.
"They will have a more robust system," Alvardo said.
Puerto Rico: Hurricane Maria Death Toll May Be Higher
Power company spokesman Gerardo Quinones said that some individual homes around Puerto Rico may still be without power because of repairs residents need to make and that the island of Vieques continues to rely on generators.
The island-wide outage was the longest continuous blackout in U.S. history. Repair crews are still working to make upgrades and outages are regular occurrences.


jewish spiritual practice | Institute for Jewish Spirituality.
Several years ago, the New Yorker featured a cover that showed a woman sitting in the lotus position, ostensibly meditating. You can tell she is so wound up that she is about to jump out of her skin. If you look carefully in the direction of her baleful glare, there is a little fly, innocently tooling around.
One of the reasons I find this image so funny is that I have been there myself so many times. I sit down to meditate or to pray with great zeal and focus – and then, something interrupts my plan. The drive I feel to engage in practice ends up eclipsing the practice itself; my focus shifts to how my plan was derailed and that I couldn't meditate or pray as I (or my ego) wanted.
There is a seeming paradox between zeal and contemplation. Zeal is about acting now with a great sense of passion and confidence. Zeal is impatient, directed, quick. Contemplation, on the other hand, usually evokes "sitting with the issue" for a while. It is slow, receptive, internally oriented. How, then, can zerizut (zeal, alacrity) be a contemplative practice?
When it comes to spiritual practice, it is important to draw upon our zeal. Zeal enhances our motivation, helps us overcome our inertia, commit to the effort. Spiritual practice is similar to going to the gym. It's not enough to know about the benefits; you have to actually go to the gym before any transformation can take place. Zeal helps us make the effort and return to it again and again.
And then comes a gift. It's not "the" gift; it's "a" gift. We don't actually know what will happen when we engage in practice. Sometimes we get distracted and annoyed. Sometimes it seems like nothing happens at all. And occasionally something very sweet and still and connecting opens within us. But whatever happens, whatever the experience is, is a gift.


ESL Cafe's Idea Cookbook - What do you want?
I have tried this very simple game in several of my primary school classes in China and it has worked very well.
I use it when we have been practising structures such as "do you want a ..." "do you need a ..." "do you like ...". First I establish a vocabulary set: fruit, pizza ingredients, colours etc., and write them up on the board. Then I take some cards with 3 or 4 of the vocab items on them, and ask the students to ask me "Do you want a ...?" If they are right I give the appropriate response ("Yes I do/No I don't" etc) and tick the list on the board. They can keep asking as long as they get it right. If they are wrong their turn is over, and the item gets a cross against it. The students get really excited as it becomes more apparent what the 3 items on my list are.The one who gives the full correct question ("Do you want an apple, an orange, and a banana?") wins, with applause, or the right to be have the next turn, whatever.
When they have got the idea, I give a card to a student to take my place. This gives lots of practice in the question and answer structure, as well as the vocab.


breathtaking hippie coloring pages welcome to publications coloring pages colouring adult detailed american hippie art coloring pages.
here find out breathtaking hippie coloring pages welcome to publications coloring pages colouring adult detailed american hippie art coloring pages for an scheme that engage in child activities. coloring is attractive and in a cheerful mood, also includes proficient training activities in was regard. it has in any event been a joy to discover things was begin with very simply from the more difficult letters or tricks. the most recognizable thing for example the cartoon character, or in the movie, may also be an interesting tom but not included in either.
this in coloring pages gallery of pics can also come in the form of animals or flowers. there are much more for example plants or insects. they are very interesting and offer other levels of difficulty. including giving a form that has never been encountered, is a form of learning also for children.
for more difficult levels is part of the teenager or more. here in theme breathtaking hippie coloring pages is one that you can choose and you effort to finish. start with a base color or a higher level by playing gradations or color discs. anything becomes practicable when you start to try it now. good luck hope this be in a cheerful mood to you or maybe you can show it to friends or teacher or also parents.
american hippie art coloring pages trippy breathtaking color native elegant skull,trippy hippie coloring pages american art best images on books girl,breathtaking hippie coloring pages pdf flower,breathtaking hippie coloring pages hippy art pdf to print,american hippie art coloring pages candy tremendous free page the basis of nature flower,best images about art on floral umbrellas coloring hippie girl pages printable candy,hippie coloring pages printable art breathtaking flower american,trippy hippie coloring pages flower best adult images on books,candy hippie coloring pages teach your kids their the easy way with free american art van,hippie coloring pages pdf tremendous free page the basis of nature flower.


The vets asked dog walkers to 'please steer clear of Innellan reservoir for the time being'.
Blue-green algae can cause cyanobacteria poisoning, and the signs of this include vomiting, diarrhoea, muscle tremors and collapse.
Catriona MacIntyre of Bute and Cowal Vets told the Standard: "This morning's incident was at Innellan but recently Loch Awe and Loch Eck have both been affected.


Steve earned a PhD in Marriage and Family Therapy (1994) from Texas Woman's University and a Master's degree in theology (Th.M.-1981) from Dallas Theological Seminary. He was licensed as a Licensed Professional Counselor (LPC) and Licensed Marriage and Family Therapist (LMFT) in Texas from 1994-2014 and currently holds an LPC and LMFT in Virginia since 2014. He also received supervision training as a part of his doctoral studies and currently provides counseling supervision as an Approved Clinical Supervisor (ACS) for practicum/internship students at Liberty University. Prior to moving to Lynchburg in 2014 to teach in Liberty University's Department of Counselor Education and Family Studies, Steve worked for 17 years as the Director of Behavioral Sciences at the Valley Baptist Family Practice Residency Program in Harlingen, TX. In this role, he provided medical family therapy to clinic patients as well as behavioral science training for family physicians. This rich experience has created a passion for working with individuals and families who are facing medical pivot points in life. Before his work in Harlingen, Steve served as the Director of Counseling Services at Dallas Theological Seminary for 5 years. During each of these academic appointments, Steve maintained a part-time counseling private practice.
Previous life experiences have enriched his professional counseling training. During his 11 years as a youth pastor, he gained his initial interest in pursuing a formal degree in marriage and family therapy. Finally, being one of the last of the draftees during the Vietnam era laid the foundation for an ongoing interest in serving our military families.
Being informed by a Christian faith-based perspective, he values the uniqueness of each client's perspective while incorporating counseling interventions based predominantly upon Family Systems Therapy, Cognitive-Behavioral Therapy and Emotionally Focused Therapy. His areas of counseling interest include medical family therapy, couples counseling (he has completed the Level I and Level II of the Gottman Relationship Training) as well as individual issues including grief recovery, depression, anger, sexual trauma and/or addiction, and crisis interventions.
Steve and his wife Diane have enjoyed marital bliss since 1981 and have two adult daughters. Our favorite activity is playing Pickleball and traveling when we have the opportunity.


Laird Thermal Systems offers global engineering services that support onsite concept generation, thermal modeling, flow analysis, mechanical design, electrical design and rapid prototyping. Our engineers help customers from the start with concept and specification development. To provide the best design solution, we take the thermal, mechanical and electrical aspects into account. With Business Design Centers located all over the world, we are always close to our customers.