text:
package com.hazelcast.config;

import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import com.hazelcast.nio.serialization.IdentifiedDataSerializable;

import java.io.IOException;
import java.io.Serializable;

import static com.hazelcast.config.EvictionConfig.MaxSizePolicy.ENTRY_COUNT;
import static com.hazelcast.util.Preconditions.checkNotNegative;
import static com.hazelcast.util.Preconditions.checkNotNull;
import static com.hazelcast.util.Preconditions.isNotNull;

/**
 * Contains the configuration for a Near Cache.
 */
@SuppressWarnings("checkstyle:methodcount")
public class NearCacheConfig implements IdentifiedDataSerializable, Serializable {

    /**
     * Default value for the in-memory format.
     */
    public static final InMemoryFormat DEFAULT_MEMORY_FORMAT = InMemoryFormat.BINARY;

    /**
     * Default value of the time to live in seconds.
     */
    public static final int DEFAULT_TTL_SECONDS = 0;

    /**
     * Default value of the maximum idle time for eviction in seconds.
     */
    public static final int DEFAULT_MAX_IDLE_SECONDS = 0;

    /**
     * Default value of the maximum size.
     *
     * @deprecated since 3.8, please use {@link EvictionConfig#DEFAULT_MAX_ENTRY_COUNT_FOR_ON_HEAP_MAP}
     */
    @Deprecated
    public static final int DEFAULT_MAX_SIZE = EvictionConfig.DEFAULT_MAX_ENTRY_COUNT_FOR_ON_HEAP_MAP;

    /**
     * Default value for the eviction policy.
     *
     * @deprecated since 3.8, please use {@link EvictionConfig#DEFAULT_EVICTION_POLICY}
     */
    @Deprecated
    public static final String DEFAULT_EVICTION_POLICY = EvictionConfig.DEFAULT_EVICTION_POLICY.name();

    /**
     * Defines how to reflect local updates to the Near Cache.
     */
    public enum LocalUpdatePolicy {
        /**
         * A local put and local remove immediately invalidates the Near Cache.
         */
        INVALIDATE,

        /**
         * A local put immediately adds the new value to the Near Cache.
         * A local remove works as in INVALIDATE mode.
         */
        CACHE_ON_UPDATE,

        /**
         * A local put immediately adds the new value to the Near Cache.
         * A local remove works as in INVALIDATE mode.
         *
         * @deprecated since 3.8, please use {@link LocalUpdatePolicy#CACHE_ON_UPDATE}
         */
        @Deprecated
        CACHE
    }

    private String name = "default";
    private InMemoryFormat inMemoryFormat = DEFAULT_MEMORY_FORMAT;
    private boolean serializeKeys;
    private boolean invalidateOnChange = true;
    private int timeToLiveSeconds = DEFAULT_TTL_SECONDS;
    private int maxIdleSeconds = DEFAULT_MAX_IDLE_SECONDS;
    private int maxSize = EvictionConfig.DEFAULT_MAX_ENTRY_COUNT_FOR_ON_HEAP_MAP;
    private String evictionPolicy = EvictionConfig.DEFAULT_EVICTION_POLICY.name();
    private EvictionConfig evictionConfig = new EvictionConfig();
    private boolean cacheLocalEntries;
    private LocalUpdatePolicy localUpdatePolicy = LocalUpdatePolicy.INVALIDATE;
    private NearCachePreloaderConfig preloaderConfig = new NearCachePreloaderConfig();

    private NearCacheConfigReadOnly readOnly;

    public NearCacheConfig() {
    }

    public NearCacheConfig(String name) {
        this.name = name;
    }

    public NearCacheConfig(int timeToLiveSeconds, int maxIdleSeconds, boolean invalidateOnChange, InMemoryFormat inMemoryFormat) {
        this(timeToLiveSeconds, maxIdleSeconds, invalidateOnChange, inMemoryFormat, null);
    }

    public NearCacheConfig(int timeToLiveSeconds, int maxIdleSeconds, boolean invalidateOnChange, InMemoryFormat inMemoryFormat,
                           EvictionConfig evictionConfig) {
        this.inMemoryFormat = inMemoryFormat;
        this.invalidateOnChange = invalidateOnChange;
        this.timeToLiveSeconds = timeToLiveSeconds;
        this.maxIdleSeconds = maxIdleSeconds;
        this.maxSize = calculateMaxSize(maxSize);
        // EvictionConfig is not allowed to be null
        if (evictionConfig != null) {
            this.maxSize = evictionConfig.getSize();
            this.evictionPolicy = evictionConfig.getEvictionPolicy().toString();
            this.evictionConfig = evictionConfig;
        }
    }

    /**
     * @deprecated since 3.8, please use {@link NearCacheConfig#NearCacheConfig(int, int, boolean, InMemoryFormat)}
     */
    @Deprecated
    public NearCacheConfig(int timeToLiveSeconds, int maxSize, String evictionPolicy, int maxIdleSeconds,
                           boolean invalidateOnChange, InMemoryFormat inMemoryFormat) {
        this(timeToLiveSeconds, maxSize, evictionPolicy, maxIdleSeconds, invalidateOnChange, inMemoryFormat, null);
    }

    /**
     * @deprecated since 3.8, please use
     * {@link NearCacheConfig#NearCacheConfig(int, int, boolean, InMemoryFormat, EvictionConfig)}
     */
    @Deprecated
    public NearCacheConfig(int timeToLiveSeconds, int maxSize, String evictionPolicy, int maxIdleSeconds,
                           boolean invalidateOnChange, InMemoryFormat inMemoryFormat, EvictionConfig evictionConfig) {
        this.inMemoryFormat = inMemoryFormat;
        this.invalidateOnChange = invalidateOnChange;
        this.timeToLiveSeconds = timeToLiveSeconds;
        this.maxIdleSeconds = maxIdleSeconds;
        this.maxSize = calculateMaxSize(maxSize);
        this.evictionPolicy = evictionPolicy;
        // EvictionConfig is not allowed to be null
        if (evictionConfig != null) {
            this.evictionConfig = evictionConfig;
        } else {
            this.evictionConfig.setSize(calculateMaxSize(maxSize));
            this.evictionConfig.setEvictionPolicy(EvictionPolicy.valueOf(evictionPolicy));
            this.evictionConfig.setMaximumSizePolicy(ENTRY_COUNT);
        }
    }

    public NearCacheConfig(NearCacheConfig config) {
        this.name = config.name;
        this.inMemoryFormat = config.inMemoryFormat;
        this.serializeKeys = config.serializeKeys;
        this.invalidateOnChange = config.invalidateOnChange;
        this.timeToLiveSeconds = config.timeToLiveSeconds;
        this.maxIdleSeconds = config.maxIdleSeconds;
        this.maxSize = config.maxSize;
        this.evictionPolicy = config.evictionPolicy;
        // EvictionConfig is not allowed to be null
        if (config.evictionConfig != null) {
            this.evictionConfig = config.evictionConfig;
        }
        this.cacheLocalEntries = config.cacheLocalEntries;
        this.localUpdatePolicy = config.localUpdatePolicy;
        // NearCachePreloaderConfig is not allowed to be null
        if (config.preloaderConfig != null) {
            this.preloaderConfig = config.preloaderConfig;
        }
    }

    /**
     * Returns an immutable version of this configuration.
     *
     * @return immutable version of this configuration
     * @deprecated this method will be removed in 4.0; it is meant for internal usage only
     */
    @Deprecated
    public NearCacheConfigReadOnly getAsReadOnly() {
        if (readOnly == null) {
            readOnly = new NearCacheConfigReadOnly(this);
        }
        return readOnly;
    }

    /**
     * Returns the name of the Near Cache.
     *
     * @return the name of the Near Cache
     */
    public String getName() {
        return name;
    }

    /**
     * Sets the name of the Near Cache.
     *
     * @param name the name of the Near Cache
     * @return this Near Cache config instance
     */
    public NearCacheConfig setName(String name) {
        this.name = name;
        return this;
    }

    /**
     * Returns the data type used to store entries.
     *

     * Possible values:
     *

     *
{@code BINARY}: keys and values are stored as binary data

     *
{@code OBJECT}: values are stored in their object forms

     *
{@code NATIVE}: keys and values are stored in native memory

     *

     * The default value is {@code BINARY}.
     *
     * @return the data type used to store entries
     */
    public InMemoryFormat getInMemoryFormat() {
        return inMemoryFormat;
    }

    /**
     * Sets the data type used to store entries.
     *

     * Possible values:
     *

     *
{@code BINARY}: keys and values are stored as binary data

     *
{@code OBJECT}: values are stored in their object forms

     *
{@code NATIVE}: keys and values are stored in native memory

     *

     * The default value is {@code BINARY}.
     *
     * @param inMemoryFormat the data type used to store entries
     * @return this Near Cache config instance
     */
    public NearCacheConfig setInMemoryFormat(InMemoryFormat inMemoryFormat) {
        this.inMemoryFormat = isNotNull(inMemoryFormat, "In-Memory format cannot be null!");
        return this;
    }

    // this setter is for reflection based configuration building
    public NearCacheConfig setInMemoryFormat(String inMemoryFormat) {
        checkNotNull(inMemoryFormat, "In-Memory format cannot be null!");

        this.inMemoryFormat = InMemoryFormat.valueOf(inMemoryFormat);
        return this;
    }

    /**
     * Checks if the Near Cache key is stored in serialized format or by-reference.
     *

     * NOTE: When the in-memory-format is {@code NATIVE}, this method will always return {@code true}.
     *
     * @return {@code true} if the key is stored in serialized format or in-memory-format is {@code NATIVE},
     * {@code false} if the key is stored by-reference and in-memory-format is {@code BINARY} or {@code OBJECT}
     */
    public boolean isSerializeKeys() {
        return serializeKeys || inMemoryFormat == InMemoryFormat.NATIVE;
    }

    /**
     * Sets if the Near Cache key is stored in serialized format or by-reference.
     *

     * NOTE: It's not supported to disable the key serialization when the in-memory-format is {@code NATIVE}.
     * You can still set this value to {@code false}, but it will have no effect.
     *
     * @param serializeKeys {@code true} if the key is stored in serialized format, {@code false} if stored by-reference
     * @return this Near Cache config instance
     */
    public NearCacheConfig setSerializeKeys(boolean serializeKeys) {
        this.serializeKeys = serializeKeys;
        return this;
    }

    /**
     * Checks if Near Cache entries are invalidated when the entries in the backing data structure are changed
     * (updated or removed).
     *

     * When this setting is enabled, a Hazelcast instance with a Near Cache listens for cluster-wide changes
     * on the entries of the backing data structure and invalidates its corresponding Near Cache entries.
     * Changes done on the local Hazelcast instance always invalidate the Near Cache immediately.
     *
     * @return {@code true} if Near Cache invalidations are enabled on changes, {@code false} otherwise
     */
    public boolean isInvalidateOnChange() {
        return invalidateOnChange;
    }

    /**
     * Sets if Near Cache entries are invalidated when the entries in the backing data structure are changed
     * (updated or removed).
     *

     * When this setting is enabled, a Hazelcast instance with a Near Cache listens for cluster-wide changes
     * on the entries of the backing data structure and invalidates its corresponding Near Cache entries.
     * Changes done on the local Hazelcast instance always invalidate the Near Cache immediately.
     *
     * @param invalidateOnChange {@code true} to enable Near Cache invalidations, {@code false} otherwise
     * @return this Near Cache config instance
     */
    public NearCacheConfig setInvalidateOnChange(boolean invalidateOnChange) {
        this.invalidateOnChange = invalidateOnChange;
        return this;
    }

    /**
     * Returns the maximum number of seconds for each entry to stay in the Near Cache (time to live).
     *

     * Entries that are older than {@code timeToLiveSeconds} will automatically be evicted from the Near Cache.
     *
     * @return the maximum number of seconds for each entry to stay in the Near Cache
     */
    public int getTimeToLiveSeconds() {
        return timeToLiveSeconds;
    }

    /**
     * Returns the maximum number of seconds for each entry to stay in the Near Cache (time to live).
     *

     * Entries that are older than {@code timeToLiveSeconds} will automatically be evicted from the Near Cache.
     *

     * Accepts any integer between {@code 0} and {@link Integer#MAX_VALUE}.
     * The value {@code 0} means {@link Integer#MAX_VALUE}.
     * The default is {@code 0}.
     *
     * @param timeToLiveSeconds the maximum number of seconds for each entry to stay in the Near Cache
     * @return this Near Cache config instance
     */
    public NearCacheConfig setTimeToLiveSeconds(int timeToLiveSeconds) {
        this.timeToLiveSeconds = checkNotNegative(timeToLiveSeconds, "TTL seconds cannot be negative!");
        return this;
    }

    /**
     * Returns the maximum number of seconds each entry can stay in the Near Cache as untouched (not-read).
     *

     * Entries that are not read (touched) more than {@code maxIdleSeconds} value will get removed from the Near Cache.
     *
     * @return maximum number of seconds each entry can stay in the Near Cache as untouched (not-read)
     */
    public int getMaxIdleSeconds() {
        return maxIdleSeconds;
    }

    /**
     * Set the maximum number of seconds each entry can stay in the Near Cache as untouched (not-read).
     *

     * Entries that are not read (touched) more than {@code maxIdleSeconds} value will get removed from the Near Cache.
     *

     * Accepts any integer between {@code 0} and {@link Integer#MAX_VALUE}.
     * The value {@code 0} means {@link Integer#MAX_VALUE}.
     * The default is {@code 0}.
     *
     * @param maxIdleSeconds maximum number of seconds each entry can stay in the Near Cache as untouched (not-read)
     * @return this Near Cache config instance
     */
    public NearCacheConfig setMaxIdleSeconds(int maxIdleSeconds) {
        this.maxIdleSeconds = checkNotNegative(maxIdleSeconds, "Max-Idle seconds cannot be negative!");
        return this;
    }

    /**
     * Returns the maximum size of the Near Cache.
     *

     * When the maxSize is reached, the Near Cache is evicted based on the policy defined.
     *
     * @return the maximum size of the Near Cache
     * @deprecated since 3.8, please use {@link #getEvictionConfig()} and {@link EvictionConfig#getSize()}
     */
    @Deprecated
    public int getMaxSize() {
        return maxSize;
    }

    /**
     * Sets the maximum size of the Near Cache.
     *

     * When the maxSize is reached, the Near Cache is evicted based on the policy defined.
     *

     * Accepts any integer between {@code 0} and {@link Integer#MAX_VALUE}.
     * The value {@code 0} means {@link Integer#MAX_VALUE}.
     * The default is {@code 0}.
     *
     * @param maxSize the maximum size of the Near Cache
     * @return this Near Cache config instance
     * @deprecated since 3.8, please use {@link #setEvictionConfig(EvictionConfig)} and {@link EvictionConfig#setSize(int)}
     */
    @Deprecated
    public NearCacheConfig setMaxSize(int maxSize) {
        checkNotNegative(maxSize, "maxSize cannot be a negative number!");
        this.maxSize = calculateMaxSize(maxSize);
        this.evictionConfig.setSize(this.maxSize);
        this.evictionConfig.setMaximumSizePolicy(ENTRY_COUNT);
        return this;
    }

    /**
     * Returns the eviction policy for the Near Cache.
     *
     * @return the eviction policy for the Near Cache
     * @deprecated since 3.8, please use {@link #getEvictionConfig()} and {@link EvictionConfig#getEvictionPolicy()}
     */
    @Deprecated
    public String getEvictionPolicy() {
        return evictionPolicy;
    }

    /**
     * Sets the eviction policy.
     *

     * Valid values are:
     *

     *
{@code LRU} (Least Recently Used)

     *
{@code LFU} (Least Frequently Used)

     *
{@code NONE} (no extra eviction, time-to-live-seconds or max-idle-seconds may still apply)

     *
{@code RANDOM} (random entry)

     *

     *
     * {@code LRU} is the default.
     * Regardless of the eviction policy used, time-to-live-seconds and max-idle-seconds will still apply.
     *
     * @param evictionPolicy the eviction policy for the Near Cache
     * @return this Near Cache config instance
     * @deprecated since 3.8, please use {@link #getEvictionConfig()} and {@link EvictionConfig#setEvictionPolicy(EvictionPolicy)}
     */
    @Deprecated
    public NearCacheConfig setEvictionPolicy(String evictionPolicy) {
        this.evictionPolicy = checkNotNull(evictionPolicy, "Eviction policy cannot be null!");
        this.evictionConfig.setEvictionPolicy(EvictionPolicy.valueOf(evictionPolicy));
        this.evictionConfig.setMaximumSizePolicy(ENTRY_COUNT);
        return this;
    }

    /**
     * Returns the eviction configuration for this Near Cache.
     *
     * @return the eviction configuration
     */
    public EvictionConfig getEvictionConfig() {
        return evictionConfig;
    }

    /**
     * Sets the eviction configuration for this Near Cache.
     *
     * @param evictionConfig the eviction configuration
     * @return this Near Cache config instance
     */
    public NearCacheConfig setEvictionConfig(EvictionConfig evictionConfig) {
        this.evictionConfig = checkNotNull(evictionConfig, "EvictionConfig cannot be null!");
        return this;
    }

    /**
     * Checks if local entries are also cached in the Near Cache.
     *

     * This is useful when the in-memory format of the Near Cache is different from the backing data structure.
     * This setting has no meaning on Hazelcast clients, since they have no local entries.
     *
     * @return {@code true} if local entries are also cached, {@code false} otherwise
     */
    public boolean isCacheLocalEntries() {
        return cacheLocalEntries;
    }

    /**
     * Sets if local entries are also cached in the Near Cache.
     *

     * This is useful when the in-memory format of the Near Cache is different from the backing data structure.
     * This setting has no meaning on Hazelcast clients, since they have no local entries.
     *
     * @param cacheLocalEntries {@code true} if local entries are also cached, {@code false} otherwise
     * @return this Near Cache config instance
     */
    public NearCacheConfig setCacheLocalEntries(boolean cacheLocalEntries) {
        this.cacheLocalEntries = cacheLocalEntries;
        return this;
    }

    /**
     * Returns the {@link LocalUpdatePolicy} of this Near Cache.
     *
     * @return the {@link LocalUpdatePolicy} of this Near Cache
     */
    public LocalUpdatePolicy getLocalUpdatePolicy() {
        return localUpdatePolicy;
    }

    /**
     * Sets the {@link LocalUpdatePolicy} of this Near Cache.
     *

     * This is only implemented for {@code JCache} data structures.
     *
     * @param localUpdatePolicy the {@link LocalUpdatePolicy} of this Near Cache
     * @return this Near Cache config instance
     */
    public NearCacheConfig setLocalUpdatePolicy(LocalUpdatePolicy localUpdatePolicy) {
        this.localUpdatePolicy = checkNotNull(localUpdatePolicy, "Local update policy cannot be null!");
        return this;
    }

    /**
     * Returns the {@link NearCachePreloaderConfig} of this Near Cache.
     *
     * @return the {@link NearCachePreloaderConfig} of this Near Cache
     */
    public NearCachePreloaderConfig getPreloaderConfig() {
        return preloaderConfig;
    }

    /**
     * Sets the {@link NearCachePreloaderConfig} of this Near Cache.
     *
     * @param preloaderConfig the {@link NearCachePreloaderConfig} of this Near Cache
     * @return this Near Cache config instance
     */
    public NearCacheConfig setPreloaderConfig(NearCachePreloaderConfig preloaderConfig) {
        this.preloaderConfig = checkNotNull(preloaderConfig, "NearCachePreloaderConfig cannot be null!");
        return this;
    }

    @Override
    public int getFactoryId() {
        return ConfigDataSerializerHook.F_ID;
    }

    @Override
    public int getId() {
        return ConfigDataSerializerHook.NEAR_CACHE_CONFIG;
    }

    @Override
    public void writeData(ObjectDataOutput out) throws IOException {
        out.writeUTF(name);
        out.writeUTF(evictionPolicy);
        out.writeInt(timeToLiveSeconds);
        out.writeInt(maxIdleSeconds);
        out.writeInt(maxSize);
        out.writeBoolean(invalidateOnChange);
        out.writeBoolean(cacheLocalEntries);
        out.writeInt(inMemoryFormat.ordinal());
        out.writeInt(localUpdatePolicy.ordinal());
        out.writeObject(evictionConfig);
        out.writeObject(preloaderConfig);
    }

    @Override
    public void readData(ObjectDataInput in) throws IOException {
        name = in.readUTF();
        evictionPolicy = in.readUTF();
        timeToLiveSeconds = in.readInt();
        maxIdleSeconds = in.readInt();
        maxSize = in.readInt();
        invalidateOnChange = in.readBoolean();
        cacheLocalEntries = in.readBoolean();
        inMemoryFormat = InMemoryFormat.values()[in.readInt()];
        localUpdatePolicy = LocalUpdatePolicy.values()[in.readInt()];
        evictionConfig = in.readObject();
        preloaderConfig = in.readObject();
    }

    @Override
    public String toString() {
        return "NearCacheConfig{"
                + "name=" + name
                + ", inMemoryFormat=" + inMemoryFormat
                + ", invalidateOnChange=" + invalidateOnChange
                + ", timeToLiveSeconds=" + timeToLiveSeconds
                + ", maxIdleSeconds=" + maxIdleSeconds
                + ", maxSize=" + maxSize
                + ", evictionPolicy='" + evictionPolicy + '\''
                + ", evictionConfig=" + evictionConfig
                + ", cacheLocalEntries=" + cacheLocalEntries
                + ", localUpdatePolicy=" + localUpdatePolicy
                + ", preloaderConfig=" + preloaderConfig
                + '}';
    }

    private static int calculateMaxSize(int maxSize) {
        return (maxSize == 0) ? Integer.MAX_VALUE : checkNotNegative(maxSize, "maxSize cannot be negative!");
    }

    @Override
    @SuppressWarnings({"checkstyle:cyclomaticcomplexity", "checkstyle:npathcomplexity"})
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        NearCacheConfig that = (NearCacheConfig) o;

        if (serializeKeys != that.serializeKeys) {
            return false;
        }
        if (invalidateOnChange != that.invalidateOnChange) {
            return false;
        }
        if (timeToLiveSeconds != that.timeToLiveSeconds) {
            return false;
        }
        if (maxIdleSeconds != that.maxIdleSeconds) {
            return false;
        }
        if (maxSize != that.maxSize) {
            return false;
        }
        if (cacheLocalEntries != that.cacheLocalEntries) {
            return false;
        }
        if (!name.equals(that.name)) {
            return false;
        }
        if (inMemoryFormat != that.inMemoryFormat) {
            return false;
        }
        if (evictionPolicy != null ? !evictionPolicy.equals(that.evictionPolicy) : that.evictionPolicy != null) {
            return false;
        }
        if (evictionConfig != null ? !evictionConfig.equals(that.evictionConfig) : that.evictionConfig != null) {
            return false;
        }
        if (localUpdatePolicy != that.localUpdatePolicy) {
            return false;
        }
        return preloaderConfig != null ? preloaderConfig.equals(that.preloaderConfig) : that.preloaderConfig == null;
    }

    @Override
    @SuppressWarnings("checkstyle:npathcomplexity")
    public int hashCode() {
        int result = name.hashCode();
        result = 31 * result + inMemoryFormat.hashCode();
        result = 31 * result + (serializeKeys ? 1 : 0);
        result = 31 * result + (invalidateOnChange ? 1 : 0);
        result = 31 * result + timeToLiveSeconds;
        result = 31 * result + maxIdleSeconds;
        result = 31 * result + maxSize;
        result = 31 * result + (evictionPolicy != null ? evictionPolicy.hashCode() : 0);
        result = 31 * result + (evictionConfig != null ? evictionConfig.hashCode() : 0);
        result = 31 * result + (cacheLocalEntries ? 1 : 0);
        result = 31 * result + (localUpdatePolicy != null ? localUpdatePolicy.hashCode() : 0);
        result = 31 * result + (preloaderConfig != null ? preloaderConfig.hashCode() : 0);
        return result;
    }
}


text:
Customers can now reserve online, try on in-store via Nordstrom's mobile app
Flickr; Montgomery County Planning Commission
Using Nordstrom's iOS and Android apps, customers can now "Reserve & Try In Store." The new app feature allows customers near its Western Washington store locations, including its Seattle flagship, to shop on their mobile device and set aside items to try on in the store, Geekwire reports.
Customers using the app can set a preferred store, browse items available in that specific store and then select "Reserve & Try" to confirm a time to come in and try on clothing.
Nordstrom allows up to 10 items to be reserved and notifies customers within two hours (during store operating hours) via text message when the items are ready to try on. The items are held on reserve until the store closes the following day.
The development of this sort of convenience feature fits well with Nordstrom's traditional reputation for superior customer service, and adds an extra layer to the growing click-and-collect trend to ensure customers are satisfied with the fit of their products before purchase.
The launch of "Reserve & Try In Store" comes just few weeks after Ken Worzel became president of Nordstrom.com. As a retailer once relatively untouched by retail's brick-and-mortar doldrums, Nordstrom is now feeling some heat to boost its online, mobile and overall omnichannel efforts.
In April, the retailer announced the elimination of 400 jobs, and there was concern at the time how such cost-cutting could affect its reputation for smooth and supportive customer service. The new feature is one effort to extend that approach further into the digital realm.
The app's "Store Mode," which allows customers to save a store preference, is also relatively new, having just launched in June, and the new reservation option shows that Nordstrom is rapidly evolving the app and aggressively connecting the dots as it sees ways to provide new convenience capabilities.
As Nordstrom straddles the brick-and-mortar and e-commerce worlds — trying not to give up on the former while still trying not to miss out on the latter — it will be challenged to find ways to hang on to its customer service reputation. "Reserve and Try On" is a good indication it's keeping its priorities straight.
GeekWire New Nordstrom feature 'Reserve & Try In Store' lets customers select items online, try them on in person
Filed Under: Technology Consumer Trends
'The most effective technology is technology that no one sees': Lowe's CEO
Google Cloud introduces product discovery tools for retailers
By Tatiana Walk-Morris • Jan. 21, 2021

redpajama_set_name: RedPajamaCommonCrawl


text:
I'll Never Go on Another Winter Run Without This Comfy Long-sleeve Compression Shirt
It's breathable, quick-drying, and fits under any outerwear.
Rachael Green
Rachael Green is a freelance writer specializing in commerce, culture, and finance. Her work has appeared in Travel + Leisure, Bustle, Elite Daily, The Spruce, and more.
Published on January 1, 2023 06:00AM EST
Travel + Leisure / Reese Herrington
Running is just about the only time I actually prefer cold weather to warm. Sure, the first few minutes are rough, but once your blood starts pumping, the ice-cold air is refreshing. It definitely takes extra preparation, though. You need to layer up enough to stay warm but not so much that you overheat on the go.
That ideal cold-weather run outfit starts with a great base layer, like these Neleus Women's Athletic Compression Long Sleeve Shirts. The three-pack of long-sleeve shirts features a quick-drying polyester and spandex blend that fits snuggly around your arms and torso but provides plenty of stretch so that you still have a full range of motion.
To buy: amazon.com, $34 (originally $60)
I got these last winter as a quick and cheap replacement for a merino wool long-sleeve base layer that turned out to be too warm (and a little too scratchy) for running. While I figured I'd just use them while I found a more permanent solution, they turned out to be exactly what I needed in a base layer: a good balance of warmth and breathability that layers easily under my other winter gear but can also be worn on its own on warmer fall or spring days.
The long-sleeve design is thin and form-fitting enough to wear under any jacket or sweater, even the more fitted ones I prefer when running. As an added bonus — and a necessity for longer runs — the material and the flat lock seams feel smooth and frictionless against the skin so you can avoid chafing and irritation.
These Ultra-soft Leggings Are the Perfect Layering Piece for Cold Winter Days
The shirts are so comfy that I've even started wearing them outside of running. They make a great base layer for any outdoor activity, from hiking to ice skating to wandering through outdoor markets with a mug of hot chocolate.
The Neleus compression shirts are available in Small to 3XL in a range of mostly neutral or earthy tones like coffee, rose, and gray, so it's easy to coordinate the shirts with your existing gear. Plus, each pack includes three different colors so you can switch up your looks, and they're affordable enough that you can pick up a couple packs if you want to keep a separate set for running and everyday wear.
The white color has also become a staple of my airport looks. It's a lightweight, stretchy layer that keeps me warm on the plane and helps me stay comfy even on long flights. And, it's breathable enough that I won't be drenched in sweat if I land somewhere hot.
Even after a year of wear and frequent washing, these compression shirts haven't lost their shape or elasticity as often happens with spandex. I think part of that is because I hang dry them instead of tumble drying. But it's still a feat for shirts that have been worn almost daily through fall, winter, and spring and washed at least once a week in that time frame.
And I'm not the only one who thinks these shirts are top-notch. Just take it from one of more than 6,400 five-star raters who called these shirts, "just what I wanted" and perfect for wearing underneath scrubs during a 12-hour work shift.
So if you want to take your winter runs to the next level, you can't go wrong with a great base layer like the Neleus Women's Athletic Compression Shirt. Grab a three-pack of this travel and exercise essential in your favorite color pallet to kick off 2023 in style and comfort.
At the time of publishing, the price started at $34.
7 Running Shoes That Are Perfect for Travel — and You Can Score Them on Sale Now
These Water-resistant, Fleece-lined Leggings Are a Winter Essential — and They're on Sale Right Now
The 14 Best Ski Jackets for Men and Women in 2022
The Best Wool Clothing and Accessories of 2023
The 10 Best Ski Jackets for Women of 2023, Tested and Reviewed
The Best Winter Running Gear of 2023
The Best Thermal Underwear of 2023, Tested and Reviewed
The Best Travel T-shirts
14 Beautiful, Top-rated Amazon Dresses That Are Perfect for Fall Travel — and Under $50
The 14 Best Ski Sweaters of 2023
The 14 Best Shackets for Travel of 2023
The Most Comfortable Clothing for Travel
The 19 Most Comfortable Travel Loungewear Pieces of 2023
The Best Cardigan Sweaters for the Coziest Flight
The Best Pajamas That Will Make You Feel Like You're at a Five-star Hotel
The 11 Best Hiking Pants for Women of 2023
The 12 Best Fleece Jackets for Men and Women of 2023
Amazon's Best-selling, Under-$50 Winter Dresses Will Keep You Warm and Cozy, Even on Long Travel Days
Amazon's Best Under-$100 Puffer Jackets Are Lightweight, Packable, and Start at Just $33


Attractive medium hot upward facing peppers. Ideal for pots on the patio. A superb mix of bright colours. Excellent source of Vitamin C, antioxidants and fibre.
Sow seeds 5mm deep, thinly in a pot of prepared soil. Water well and place in a warm position. A temperature of 15-20c is ideal. Keep moist. Transplant to individual pots when large enough to handle. Seedlings emerge 7-21 days.


Alex Graham's swirling lines enliven [Whitney] Ashe's Enlah. Ashe and [Gary] Wang are solid performers, while drummer Jorgensen stands out in the way he ignites the band and keeps finding inventive ways to accent the proceedings.
RadioAction is a musical collective of four musical explorers, each a composer, arranger and bandleader in his own right. They are alto saxophonist Alex Graham, pianist Whitney Ashe, bassist Gary Wang and drummer Matthew Jorgensen. A band for several years now, their depth, group virtuosity, humor and high spirits all but jump out of a set of speakers, whether the song being played is a burner or ballad, a band original or RadioAction's very fresh take on a jazz standard.
With RadioAction, sensitivity shares pride of place with non-stop facility. Every extroversion is balanced by a tune steeped in mystery, as the band's intensity and collective inquisitiveness match its unbreachable vitality. And RadioAction thrives on the benefits of teamwork, with fascinating ideas constantly developing beneath the music's surface, enriching every song. For a band carrying forward the torch of the masters of modern "mainstream" jazz, and for a CD that boldly declares that musical creativity is not regulated by age limits or speed limits, this is where to turn.
For more information about RadioAction, please visit: http://www.originarts.com/radioaction.


Welcome to the IRREC Teaching Gardens Web App!
This web app was created to help users learn more about the plants contained in the IRREC Teaching gardens as they visit them in conjunction with their studies.
It contains lists of the plants, individual plant information pages, and maps of the gardens. There are three primary ways to use the web app, described on the page Three Ways to Use This Tool. Just click on the Menu button in the upper left of the screen to begin.


N26 And Revolut Accounts Needed Loading . 1 Grand Minimum !
profholod.ru Russian Energy Systems DB For Sale!
Czech Republic Bank Account for sale ( AirBank) more then 160k CSZ!
CHEAPEST SMM AROUND - GLOW SMM - Social media services from 0.003 per k !
I would like to give back to the community.
novonordisk.com.br Medical CRM DB For Sale!


text:
First Look: Scouting Ole Miss QB Chad Kelly
By Daniel Jeremiah
NFL Media analyst
Published: July 5, 2016 at 01:10 p.m.
Daniel Jeremiah's pick-by-pick analysis for Rounds 2-3
Daniel Jeremiah's pick-by-pick analysis for Round 1
First Look: Watson
Fournette
Smith-Schuster
Chuck Cook / USA TODAY Sports
Editor's note: NFL Media analyst and former NFL scout Daniel Jeremiah takes a "first look" at college football's top players for 2016. This is the ninth in a series of scouting reports that will run throughout the offseason.
Chad Kelly, the nephew of Pro Football Hall of Famer Jim Kelly, first caught my eye when I watched Ole Miss upset Alabama (for the second year in a row) last fall. Kelly accounted for four scores in that game and made a couple "wow" throws. After some turbulent times early in his college career, he's widely regarded as the top returning senior quarterback in the country. Here are my thoughts on his game after watching his tape.
Chad Kelly, senior QB, Ole Miss
Height, weight: 6-foot-2, 224 pounds (school measurements)
2015 statistics: 298-of-458 (65.1 percent) for 4,042 yards, 31 touchdowns and 13 interceptions.
Game tape watched: Florida (Oct. 3, 2015), Texas A&M (Oct. 24, 2015), LSU (Nov. 21, 2015)
What I liked: Kelly has ideal size, arm strength and toughness. He is a big, sturdy pocket passer with a huge arm. He generates a lot of torque from his lower half and has the velocity on his throws to fit balls into very tight windows down the field. He flashes the ability to make "wow" throws deep down the field (see deep ball vs. Texas A&M). Kelly shows tremendous courage to stay in the pocket until the last second and absorb big hits from defenders. He is also extremely competitive. He is used on designed quarterback runs and he consistently lowers his shoulder to fight for extra yards. The effort he showed in making a tackle after throwing an interception against Florida last season was a play that will endear him to his teammates.
First Look:
NFL Media analyst and former NFL scout Daniel Jeremiah takes a "first look" at college football's top players for 2016.
Michigan TE Jake Butt
Miami QB Brad Kaaya
Oklahoma RB Samaje Perine
Alabama OT Cam Robinson
LSU S Jamal Adams
Michigan DB Jabrill Peppers
Ohio State LB Raekwon McMillan
USC CB Adoree' Jackson
Missouri DE Charles Harris
Alabama TE O.J. Howard
Florida CB Jalen Tabor
Ole Miss QB Chad Kelly
Alabama OLB Tim Williams
FSU RB Dalvin Cook
USC WR JuJu Smith-Schuster
Alabama DL Jonathan Allen
Stanford RB Christian McCaffrey
Texas A&M DE Myles Garrett
LSU RB Leonard Fournette
Clemson QB Deshaun Watson
Where he needs to improve: There are a lot of areas where Kelly can improve. I love his aggressiveness, but he forces too many balls into highly populated areas. He also has a bad habit of speeding up his process and missing easy layups underneath. He doesn't like to give up on a play, which can lead to some unnecessary sacks and ill-advised decisions. His deep-ball accuracy is a work in progress. He had some beautiful connections in the games I watched, but also overthrew several passes.
Biggest takeaway: Kelly has an unquenchable thirst for the big play. He loves to attack down the field and that leads to big plays as well as turnovers. I'd love to see him dial it back just a little bit and show more concern for the football. I love his competitiveness and grit, but there's a lot of growth that needs to take place in his decision making. He has a lot of similarities to Jay Cutler: big arm, aggressive nature, above-average athlete. However, I thought Cutler showed more poise under pressure when he was at Vanderbilt.
I can't wait to see him play ... Florida State on Sept. 5. The Rebels have several marquee matchups on their schedule, but the first game of the year is the one I'm most excited to see. The Seminoles are loaded with talent and their defense will provide a stiff test for Kelly and the Ole Miss offense. There are college coaches who believe FSU safety Derwin James might be the best defensive player in the country. This is a game that will be well attended by NFL scouts and it will be a must-watch game in Kelly's NFL evaluation.
Follow Daniel Jeremiah on Twitter @MoveTheSticks.
Rams' McVay on Gurley: 'I know he's ready to go'


text:
Archive for category: Front Page Links
Harmony School of Innovation 2022 Federal Report Card
Federal Report Cards for the state, district, and campuses are available on the Texas Education Agency's (TEA) website.
Each LEA that receives Title I, Part A funding is responsible for disseminating the State, LEA and campus-level report cards to all LEA campuses and parents of all enrolled students and making the information widely available through public means such as posting on the Internet, distribution to the media, or distribution through public agencies.
Please click on the link below to access the report card:
Harmony School of Innovation Report Card 21-22
January 19, 2023 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2023-01-19 10:05:392023-01-19 10:05:39Harmony School of Innovation 2022 Federal Report Card
No School Monday January 16, 2023
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2023-01-13 12:53:582023-01-13 12:53:58No School Monday January 16, 2023
Re-Enroll Now for School Year 2023-2024
January 6, 2023 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2023-01-06 10:39:402023-01-06 10:39:40Re-Enroll Now for School Year 2023-2024
HSI – Laredo Students Awards 10-21-2022
Students awards pictures 10-21-2022
Click on the links to access awards pictures:
Student Awards KG
Student Awards 1st Grade
Student Awards 2nd Grade
Student Awards 3rd Grade
Student Awards 4th Grade
October 24, 2022 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-10-24 09:16:542022-10-24 09:16:54HSI - Laredo Students Awards 10-21-2022
Title I Parent Engagement Meeting 9/16/2022
September 14, 2022 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-09-14 09:07:372022-09-14 09:07:37Title I Parent Engagement Meeting 9/16/2022
HSI – Laredo School Supply List for 2022 – 2023 School Year
Attention HSI – Laredo Parents:
Please click on the link below to access the school supply for the 2022 – 2023 school year:
HSI School Supply List 2022 – 2023
June 15, 2022 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-06-15 16:58:232022-07-13 09:20:38HSI - Laredo School Supply List for 2022 - 2023 School Year
Summer Reading Project for New Incoming 6th Graders HSA
Please click on the link below to access the summer project:
6th Grade 2022 Summer Reading Project
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-06-15 14:18:102022-06-15 14:18:10Summer Reading Project for New Incoming 6th Graders HSA
HSI Laredo Kinder and 5th Graduation 2022
Please click on the link below to access the Kinder and 5th Grade Graduation Pictures:
Graduation Pictures KG A
Graduation Pictures KG B
Graduation Pictures KG C
Graduation Pictures KG D
5th Grade Pictures:
Graduation Pictures 5th A
Graduation Pictures 5th B
Graduation Pictures 5th C
Graduation Pictures 5th D
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-05-27 16:19:542022-05-27 16:19:54HSI Laredo Kinder and 5th Graduation 2022
HSI – Laredo Award Ceremony 2022
Please click on the link below to access the pictures for the Harmony School of Innovation Award Ceremony for the school year 2022.
1st Grade Award Pictures:
Award Ceremony 1A 2022
Award Ceremony 1B 2022
Award Ceremony 1C 2022
Award Ceremony 1D 2022
2nd Grade Award Pictures:
3rd Grade Award Pictures:
4th Grade Award Pictures:
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-05-25 11:45:092022-05-25 13:45:29HSI - Laredo Award Ceremony 2022
STEAM CAMP from June 7th – 10th
We're happy to announce that we will be hosting a STEAM Camp for our scholars from June 7th-10th, 8:00 am- 2:30 pm.
This STEAM camp will provide a learning experience through fun, engaging programming that encourages children to explore their sense of wonder.
Students are introduced to hands-on, engaging STEAM workshops that promote discovery and ignite their curiosity in the areas of STEAM education!
We still have limited spots available and are filling up fast!
Click here to pay for HSI Laredo STEAM Camp
** In the case the previous link does not work, please follow the instructions below
Go to https://hsilaredo.harmonytx.org/
Click on the Parents Tab
Uniforms & Activity Fees (REVTRAK)
Select MISC. tab
Write Student Name and Last Name, and proceed to checkout
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2022/05/steam-camp-2.png 2000 1545 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-05-20 08:20:312022-05-20 08:20:31STEAM CAMP from June 7th - 10th
Free Dress April 14, 2022
April 13, 2022 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-04-13 11:23:282022-04-13 11:23:28Free Dress April 14, 2022
No Classes April 15 – 18
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-04-13 10:30:402022-04-13 10:30:40No Classes April 15 - 18
April Activity Calendar 2022
March 31, 2022 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-03-31 17:01:152022-03-31 17:01:15April Activity Calendar 2022
HSI – Laredo Academic Calendar 2022 – 2023
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-03-28 14:59:062022-03-28 14:59:06HSI - Laredo Academic Calendar 2022 - 2023
HSI Laredo No Class on 2/22/2022
February 22, 2022 /by tjimenez
https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png 0 0 tjimenez https://campus.harmonytx.org/hsilaredo-new/wp-content/uploads/sites/116/2017/10/HSI-Laredo-white-300px.png tjimenez2022-02-22 07:47:492022-02-22 07:47:49HSI Laredo No Class on 2/22/2022


text:
Восто́чный проли́в — пролив в южной части Восточно-Сибирского моря, между островами из группы Медвежьих островов (Якутия, Нижнеколымский район, Походский наслег). Отделяет острова Лысова и Леонтьева на северо-западе от Четырёхстолбового острова на юго-востоке. Глубина 9—12 м.

Примечания

Проливы Восточно-Сибирского моря
Проливы Якутии

redpajama_set_name: RedPajamaWikipedia


text:
FUJIFILM SonoSite gives clinicians the edge for rural diagnostics
Apr 06, 2017 Mark 0
Press Release (ePRNews.com) - ST NEOTS, England - Apr 06, 2017 - A FUJIFILM SonoSite Edge® point-of-care ultrasound system recently helped clinicians participating in the Ukraine Christian Partnership's (UCP's) Summer Mission to diagnose a wide range of pathologies. Dr Fiona Witham, a consultant radiologist travelling with the group, explained: "This year's UCP Summer Mission was to an area of subsistence farming in Zakarpattia Oblast. Medical professionals made up about a third of the group, and we provided diagnoses and limited treatment to villagers from across the area. Because our aid and advice is independent, the villagers know that we only have their best interests at heart, helping them to judge the next steps they need to take with their treatment."
"Point-of-care ultrasound is an invaluable tool in these circumstances, allowing me to provide abdomino-pelvic, small part and musculoskeletal imaging – as well as echocardiographic scanning – to confirm or refute a wide range of diagnoses. When I looked into obtaining a system for the first mission 13 years ago, everyone I spoke to recommended SonoSite. The company has been kind enough to support every trip I've been on, providing a small, lightweight and robust system that I could easily carry in my hand luggage. This sort of application really does play to the unique strengths of SonoSite's instruments, and the image quality improves with every new system. I am very grateful for the company's ongoing support."
For more information about FUJIFILM SonoSite products, please contact:
FUJIFILM SonoSite Ltd
T +44 (0)1462 341151,
ukresponse@sonosite.com www.sonosite.co (http://www.sonosite.com/).uk
About FUJIFILM SonoSite
SonoSite helped pioneer the concept of portable, point-of-care ultrasound, and it continues to be a world-leading manufacturer and innovator of bedside ultrasound systems as well as an industry leader in ultra-high frequency micro-ultrasound technology. Headquartered near Seattle, the company is represented by 26 subsidiaries and a global distribution network in over 100 countries. SonoSite's portable, compact systems are expanding the use of ultrasound across the clinical spectrum by cost-effectively bringing high-performance ultrasound to the point of patient care. For more information, go to: www.sonosite.com.
FUJIFILM SonoSite, Ltd., a wholly owned subsidiary of FUJIFILM SonoSite, Inc. oversees a direct sales distribution network in the UK and provides sales and marketing support.
FUJIFILM Holdings Corporation, Tokyo, Japan, brings continuous innovation and leading-edge products to a broad spectrum of industries, including electronic imaging, digital printing equipment, medical systems, life sciences, graphic arts, flat panel display materials, and office products, based on a vast portfolio of digital, optical, fine chemical and thin film coating technologies. Fujifilm is committed to environmental stewardship and good corporate citizenship. For more information, please visit www.fujifilmholdings.com.
Source : SonoSite
Tags : radiology Sonosite ultrasound
Expanding British IVD business exhibits at world's biggest clinical event
Blacktrace focuses on biology with the launch of Dolomite Bio
Cancer treatment by UV radiation from nanoparticles in X-ray heated surroundings
Attendee List Released Ahead of RNA Industry Summit Featuring MHRA, Silence Therapeutics and GSK
Rare Disease Foundation Receives $125,000 Grant to Help Fund Clinical Trial
See new products first at Lab Innovations 2017


text:
World Europe 23 Jun 2017 Theresa May talks Brexit, Angela Merkel says EU
World, Europe
Theresa May talks Brexit, Angela Merkel says EU
Published : Jun 23, 2017, 2:21 am IST
Updated : Jun 23, 2017, 2:21 am IST
German Chancellor says bloc's future priority as British PM meets European leaders.
French President Emmanuel Macron, German Chancellor Angela Merkel and British PM Theresa May attend an European Union leaders summit in Brussels. (Photo: AFP)
Brussles: German Chancellor Angela Merkel insisted Thurday that the EU's future took priority over Brexit talks as Prime Minister Theresa May met European leaders for the first time since a disastrous election gamble.
Under intense pressure on all sides since losing her majority, Ms May said her task at the Brussels summit would be to set out her plans to protect EU citizens' post-Brexit rights.
But Ms Merkel, Europe's most powerful leader, made clear that this was not at the top of her agenda as she reaffirmed Berlin's strong ties with France and its newly elected President Emmanuel Macron.
"For me the shaping of the future of the 27 is a priority coming before the issue of the negotiations with Britain on the exit," Ms Merkel said.
"We want to conduct these negotiations in a good spirit but the clear focus has to be on the future of the 27."
Mr Macron, attending his first summit, did not mention Brexit directly but said it was now time to get down to concrete work — "hand in hand with Germany" — on putting the European Union back on track after years of austerity and crisis.
Britain's vote to leave the EU exactly a year ago on Friday was the biggest in a series of shocks that the bloc has faced, but it now insists it is turning the corner on anti-EU sentiment.
Ms May is set to brief EU leaders on her Brexit plans over dinner on Thursday, before being kicked out while the remaining 27 discuss key issues including the future location of the EU's medicines and banking agencies, currently based in Britain.
For her part, Ms May said she would set out "clearly how the UK proposes to protect the rights of EU citizens in the UK and see the rights of UK citizens living in Europe protected."
"That's been an important issue, we've wanted it to be one of the early issues that was considered in the negotiations, that is now the case, that work is starting," she said as she arrived. Ms May had previously refused to guarantee the rights of EU citizens in Britain until those of expatriate Britons were secured.
Tags: angela merkel, theresa may, brexit
Latest From World


text:
<?php

	require_once(dirname(__FILE__) . "/../config/db.conf.php");

	define('DB_CONNECTION_KEY', 'connection');
	define('DB_IN_USE_KEY', 'in_use');
	define('DB_ID_KEY', 'id');

	/**
	 *	@class Db
	 *	@short Implements an abstraction of a Database connection manager.
	 */
	class Db
	{
		/**
		 *	@short List of registered adapters
		 */
		private static $adapters = array();

		/**
		 *	@short Connections pool
		 */
		private static $pool = array();

		/**
		 *	@short Connections counter
		 */
		private static $conn_counter = 0;

		/**
		 *	@fn get_adapter($name = DB_ADAPTER)
		 *	@short Returns a database adapter registered under name
		 *	@param name A name associated to the adapter.
		 */
		public static function get_adapter($name = DB_ADAPTER)
		{
			return isset(self::$adapters[$name]) ? self::$adapters[$name] : NULL;
		}

		/**
		 *	@fn register_adapter($adapter, $name)
		 *	@short Registers a database adapter under name
		 *	@param adapter An instance of a class implementing the DbAdapter interface.
		 *	@param name A name associated to the adapter.
		 */
		public static function register_adapter($adapter, $name)
		{
			self::$adapters[$name] = $adapter;
		}

		/**
		 *	@fn get_default_adapter()
		 *	@short Returns the default database adapter
		 */
		public static function get_default_adapter()
		{
			return self::get_adapter(DB_ADAPTER);
		}

		/**
		 *	@fn get_connection($name = DB_ADAPTER)
		 *	@short Returns a connection for the requested adapter
		 *	@details If a free connection is found in the pool it is returned to the caller,
		 *	otherwise a new connection is created and added to the pool.
		 *	@param name The name of the adapter
		 */
		public static function get_connection($name = DB_ADAPTER)
		{
			if (!isset(self::$pool[$name]))
			{
				self::$pool[$name] = array();
			}
			if (count(self::$pool[$name]) > 0)
			{
				foreach (self::$pool[$name] as &$item)
				{
					if (!$item[DB_IN_USE_KEY])
					{
						$item[DB_IN_USE_KEY] = TRUE;
						return $item[DB_CONNECTION_KEY];
					}
				}
			}
			// Create a new connection
			$adapter_class = get_class(self::get_adapter($name));
			$conn = new $adapter_class();
			// Don't reuse $item because it's a reference
			$new_item = array(
				DB_IN_USE_KEY => TRUE,
				DB_CONNECTION_KEY => $conn,
				DB_ID_KEY => self::$conn_counter++
			);
			// Add it to the pool
			self::$pool[$name][] = $new_item;
			// Return it
			return $conn;
		}

		/**
		 *	@fn close_connection($conn, $name = DB_ADAPTER)
		 *	@short Closes a connection for the requested adapter
		 *	@details The connection is actually never closed, it is just marked as free
		 *	and kept in the pool for later reuse.
		 *	@param conn The connection that should be closed
		 *	@param name The name of the adapter
		 */
		public static function close_connection($conn, $name = DB_ADAPTER)
		{
			if (count(self::$pool[$name]) > 0)
			{
				foreach (self::$pool[$name] as &$item)
				{
					if ($item[DB_CONNECTION_KEY] === $conn &&
						$item[DB_IN_USE_KEY])
					{
						$item[DB_IN_USE_KEY] = FALSE;
						break;
					}
				}
			}
		}

		// TODO: remove
		public static function show_pool()
		{
			print_r(self::$pool);
		}
	}

	// TODO: remove
	if (isset($_REQUEST["show_connections_pool"]))
	{
		Db::show_pool();
	}
?>

redpajama_set_name: RedPajamaGithub


text:
Amir gets visa, travels to UK on Wednesday
Pakistan fast bowler Mohammad Amir was issued a British visa on Tuesday just a day after the team left for tours of Ireland and England.
"He has got his required visa and will be flying out on Wednesday," Pakistan cricket Board spokesman Amjad Bhatti told The Associated Press.
Amir, who has taken 95 wickets in 30 test matches, is the most experienced fast bowler in Pakistan's test team.
Local media reported on Monday that Amir had already applied for a longer term spouse visa because his wife is a British national.
It was not the first time that Amir has had a delay in obtaining a visa.
During Pakistan team's last tour of England two years ago he faced a similar problem before the PCB sought help from the England and Wales cricket Board.
Amir was banned for five years in 2010 for his involvement in spot-fixing and also served a brief stint in jail in England for the same offence.
Pakistan will play a test match against Ireland in Dublin before traveling to England for a two-test series. The tour will end in June with two Twenty20s against Scotland.


Hyundai For Lease by no means go out of styles. Hyundai For Lease may be furnished in a number of techniques every home furniture picked say anything regarding the area. One particular couple of home furniture will be decided on intended for House Layout Thoughts and after after some duration this particular design has started to become older as well as brand-new styles come out based on brand-new general trends.
This really is our article concerning Hyundai For Lease, on this site you will see thus wonderful pattern approach concerning spot bath stores, the primary graphic in this article is best graphic we use concerning spot bath stores, the particular fine detail inside the photo earlier mentioned, you will see inside the 2nd passage connected with.
Hyundai For Lease picture is in category Hyundai that can use for individual and noncommercial purpose because All trademarks referenced here in are the properties of their respective owners. You can browse other picture of Hyundai For Lease in our galleries below. If you want to see other picture, you can browse our other category.
Related Post "Hyundai For Lease"


text:
Q: jQuery document width with math I'm still learning jQuery. It's going very slowly, but eh, at least I'm learning. Today I need help with a page width function. I need a jQuery script that gets the page width, does a lot of math, and then sets variables to the width. This script would be VERY helpful to me, because I tend to use this a lot and I always get stuck. Here's what I'd like it to do:

*

*Get the page width.

*Subtract 30 from the page width.

*Divide the (page width - 30) by 6.

*Subtract 180 from ((page-width - 30)/6).

*Set the width of the class .normal to the width of (((page-width - 30)/6)-180).

*And lastly, I need to set the class of .wide to 2(((page-width -30)/6)-180).

Basically, this SHOULD create 4 even columns of entries with the class of .normal, but have one column with the class of .wide be twice the size of normal entries.
If anyone can help me with this, it would be awesome. I have no clue where to start at all in this.
EDIT: An example of what I'd like this to look like is HERE, except that should be full screen except for a 15 pixel margin on each side, and change widths of posts and elements depending on screen resolution.

A: I'll leave the css stuff (aligning the .normal-elements right to the .wide-element) to you (should be done easily with float:right or absolute positioning) and simply show the jQuery code:
// you don't need the '$' in your variable - I just think this is more readable
$width = ($(document).width() - 30)/6 - 180;
$('.normal').width($width);
$('.wide').width(2*$width);

Be aware that this does not set the width of the class 'normal'/'wide' (like you'd do in your css stylesheet) but the width of every dom-element that has the class 'normal' or 'wide'.

A: CSS3 calculation capabilities that can do this for you:
.normal {
    display: block;
    width: calc(((100% - 30px) / 6) - 180px);
}

That's the pure CSS spec, there are vendor extensions: -moz-calc and -webkit-calc, etc.

A: You need 4 even columns of entries with the class of .normal, but have one column with the class of .wide be twice the size of normal entries which means there are 5 columns, 4 with same width and 5th column twice the width of individual column. I think this is what you need.
var oneColumnWidth = ($(document).width()/6);

$('.normal').width(oneColumnWidth);
$('.wide').width(oneColumnWidth * 2);

redpajama_set_name: RedPajamaStackExchange


One of the most critical questions a wife could ask herself is how she compares herself to her husband. Where she lands on this matter can shape the marriage for good or bad.
My Husband Is Immature; How Can I Help Him?
Reader Warning – This article does not apply to every marriage in trouble, specifically a marriage where the husband is abusive. The assumption I'm making is both spouses are maturing, humble, and willing to communicate on the level in which this concept requires. If either one is not these things, this idea will not work.
Paul answered the "how I compare myself to you" question in 1 Timothy 1:15 when he said he was the most significant sinner he knew. His assessment flies in the face of our self-esteem culture, which cannot handle this kind of biblical scrutiny.
The irony is how Paul's view of himself is an honest, hope-filled assessment that leads to personal freedom and relational harmony.
It is honest because the biblical record is clear–we all are unworthy sinners who put Christ on the cross (Romans 3:10-12).
It is hope-filled because Christ came to free sinners from captivity (Luke 19:10).
Humble admission to the reality of who you are is the only way you will experience rescue from who you are (James 4:6). Paul was not discouraged by how he thought about himself. His "healthy view" was a robust platform upon which he could serve others, a platform you must erect if you want to help your husband.
The person that the master was talking to had more significant debt. The master released him, but he was beating up an individual with a smaller deficit. His question–should not you have had mercy on your fellow-servant, as I had compassion on you?–is practically relevant. You could practicalize it by asking, from your perspective, who is the most prominent sinner you know?
From Paul's perspective, it was him.
From my perspective, it is me.
Who is it from your perspective?
If you are convinced your sin against God is more significant than anything ever done to you, there is no reason for you to be sinful toward others. Even if you cannot transact forgiveness because the offender is not asking, you should have an attitude of forgiveness toward him (Luke 23:34) while hoping God will grant repentance (2 Timothy 2:24-25) so you can transactionally forgive him.
An attitude of forgiveness is the antidote that will keep criticalness, bitterness, anger, and other spiteful characteristics from sabotaging your soul. You can have this kind of attitude if you have the right view of yourself.
To withhold kindness from someone who has sinned against you is a denial of the gospel you say you love (Romans 2:4, 5:8). Being unkind transgresses gospel lines (Ephesians 4:29).
Reader Warning – Abusive relationships are not biblical relationships. Therefore, a biblical process like this will not work. The classic manipulation of the abusive husband is to convince his wife that she is wrong and needs to repent while he continues his abuse. If the husband and wife do not love God and each other more than themselves, this process will not work.
Whenever you step outside biblical boundaries to acquire something you want, you have become idolatrous. Idolatry is an attitude of the heart that acts out in sinful ways to satisfy unrighteous desires.
Let Me Illustrate: A child wants a toy. It's not an evil desire, but his parent does not give him the toy. The child throws a temper tantrum until the parent acquiesces. The attitude of the child's heart turned evil because what he wanted was more important than anything else.
This behavior happens all the time in marriages, and a wife is particularly susceptible, especially if her husband is not learning, loving, or leading her according to her "biblical" expectations. The blindside is her desires are biblical.
Good desires not met put the wife on dangerous ground because of how easy it is to fall into the "unmet desires" trap. If she does not appropriate God's power to her unmet "biblical" desires, it will only be a matter of time before she becomes critical, bitter, resentful, cynical, harsh, unkind, and full of regret.
She will need to do some soul work, which can begin by a robust self-assessment. For example, is she quicker to let herself off the hook than her husband? An ordinary human problem is glossing over personal sins while lingering long over the sins of others.
The temptation when a person does not receive their desires is to elevate the failures of the person who did not meet the wishes while downplaying any self-righteous judgments about that person. Sin comparing is a dangerous game.
If you do not see yourself as the same as others, you will begin to elevate yourself above people, especially those who disappoint you. Nobody is better than anyone else no matter how disappointing the other person is.
There is no biblical warrant to look down on another person as if that person is a worse sinner. Self-righteousness is the heart condition that exalts superior attitudes. God does not bless these attitudes (James 4:6).
To sin against someone in response to sin reveals a person's authentic walk with Jesus while creating an awkward dualism with the person they sinned against in the relationship. I call this dualism the sinning/victim construct.
There are few discipling situations more challenging than the sinning/victim construct. It happens all the time. It's the wife sharing how her husband sinned against her and her sinful responses to him.
He has sinned against her: she is the victim.
She has sinned against him: she is the sinner.
It is a delicate process as you walk her through the complexities of what is wrong with the marriage. Part of what's wrong with the marriage is her culpability in the deterioration of the marriage.
You cannot move too fast with this kind of person. You begin by carefully understanding her suffering while empathetically listening to the hurt and fears she has experienced. Her pain is real. Her story is dark. And more than likely she is correct: Her husband has been a problematic, insensitive person.
It's essential you give her appropriate time and space to weep over and work through the disappointment that has characterized the marriage (Romans 12:15).
You do not want to introduce more tension into the narrative by addressing her culpability until you have competently, compassionately, and completely communicated your care for her (Romans 8:31).
You want to slowly bring her to the place where she can hear the whole truth about what is wrong with them. Your goal is to position her heart to receive God's full help, not just fixing her husband.
She needs to know the Lord is not oblivious to what is going on in her marriage.
She needs to know God is for her, and He has a better plan for her marriage.
She needs to know there is no problem where God's grace is rendered inadequate to repair it.
She needs to know the Lord can use the sin in their marriage to redeem their marriage.
These good things can happen if she will simultaneously (1) grieve over the brokenness (2) while taking her soul to task to fix what she can change about herself.
You want her to grieve, but not fall into despair.
You want her to correct unbiblical thinking, but not crush her spirit (Isaiah 42:3; Matthew 12:20).
The most common question about this type of marriage is, "How do I do this?" The first step is to make sure she is not complicating the problem through personal sinfulness.
As you are doing this, you must discern how God is guiding you (John 16:13) while trusting Him to work through you to restore her back to Him and her husband.
One of the things you don't want to do is assume both spouses will repent and live happily ever after. Your marriage is not a movie. It's real life.
Scriptwriters do not factor in how the doctrine of sin practically works out in lives. They are making movies. Every story does not end according to how you want it to stop. You are not in control of the narrative (2 Corinthians 1:8-9).
Sin is messy, and there will be times when things are not made right. Families do divide. Marriages do fail. Christ experienced crucifixion (Isaiah 53:10). Counseling does not assure preferred outcomes.
If her husband does not repent, will she forgive him attitudinally?
If her husband does repent, will she forgive him transactionally?
Attitudinal forgiveness does not release him from his sin, but it can release her from it–at least in her heart. The best she may be able to do is free herself from his sin because he chooses never to be free.
This issue is where the "victim person" will have to work hard to guard her heart against being a sinful, self-righteous person. God does not grade on a curve.
The Father gives us an F-.
He gives His Son an A+.
I was a depraved human that God regenerated by grace (Romans 3:12). My good fortune did not come because I turned over a new leaf and became a good person. My redemption and ongoing restoration to God is an undeserved gift from God (Ephesians 2:8-10).
We are not allowed to grade each other on a curve so we can feel better about ourselves while belittling others. You and I are bad to the bone. We are simultaneously sinners and victims.
Though some sins are consequentially worse than others, we know that any sin is big enough to put Christ on the cross (James 2:10). It is this kind of gospel-informed thinking that releases you from being controlled by the sins of others, primarily by disappointing people who never change.
If you understand and apply these truths, you will be positioned in the best possible place to help your spouse overcome the things that disrupt your marriage. I'm not saying your husband will change.
I am saying you can rise above the fray by living a gospel-centered life. Here are a few questions I hope will help you practicalize the gospel in your life and marriage.
Does your spouse have something you want?
Is he regularly giving you what you want the way you want it?
How do you respond when he does not give you what you want?
Do you need to treat him differently when he disappoints you?
What specific and practical ways will you change?


Delhi and neighbouring areas recorded its worst air quality in the 'severe' category a day after Diwali. Authorities attributed the spike in pollution level to burning of toxic fire crackers.
"Direction is hereby issued to district magistrate to submit report on action taken to prevent sale of unauthorised fire crackers in Gautam Buddh district along with reason for non-compliance of the Supreme Court order," it said.
It also allowed the manufacture and sale of just "green crackers" with low-emission of light, sound and harmful chemicals.
"As per the Supreme Court order, the strict implementation of the order is the responsibility of the SHO, city magistrate and deputy collector. In this situation, you are directed to report by November 12 what steps did you take to ensure action against violators of the court's order and under Section 5 of the Environment (Protection) Act, 1986," District Magistrate Brajesh Narain Singh said in the letter.


David Gershon, co-founder and CEO of Empowerment Institute has been called "the number one expert on social change." He applies his visionary leadership and social change expertise to designing second order change solutions for cities, countries and the planet that enable the seemingly impossible to become possible. Over the past four decades the initiatives he's designed have won many awards and achieved much recognition.
In 1986 David organized, at the height of the cold war, the passing of a torch of peace around the world. The First Earth Run, in partnership with the United Nations Children's Fund directly engaged twenty-five million people and 45 heads-of-state in 62 countries. Over a billion people watched the torch via the media circumnavigate the globe. For 86 days wherever the torch of peace went all wars stopped and the world was united as one. Since then this modern day mythic story embodying humanity's noblest aspiration for peace on earth and the oneness of humanity has continued to be told all over the world.
David is author of twelve books, including the award- winning Social Change 2.0: A Blueprint for Reinventing Our World and the best-selling Empowerment: The Art of Creating Your Life as You Want It. He co-directs Empowerment Institute's School for Transformative Social Change which empowers social entrepreneurs from around the world to design and implement second order change social innovations. He has lectured at Harvard, MIT, and Johns Hopkins and served as an advisor to the Clinton White House and the United Nations on empowerment.
He is currently working on an initiative called: "A Bottom-Up Grand Strategy to Reinvent the Planet: Building Second Order Change Capacity Around the Five Strategic Levers—Climate, Development Peace, Knowledge and Money." David has dedicated his life to empowering humanity to believe we can create the world of our dreams and designing the strategies and tools to help us make this a reality.


During a recent talk I gave in New York City at the interesting software company Cyrus Innovation, I mentioned that self-tracking and -testing will be disruptive of conventional health care. It already is. Doctors will have to get used to patients coming in with their own generated data, and they'll have to adapt, be open to, and embrace this development. This is all a movement in the right direction. Self-testing has a demystifying effect on your own attitude. With more and varied data comes more valid interpretations.
Times they are achangin' in the health field; see PrimalDocs for one.
It simply makes sense from a philosophical and practical standpoint. It's your body, right? And what doctor has the time and inclination to properly test various biomarkers over time, and within the proper contexts?
Resting heart rate (RHR): How many times your heart beats in 60 seconds, at rest.
For the testing I'm doing today, I use the following devices: A Withings BC scale, which gives me weight and body-fat percentage; a pulse oximeter (PO) left over from my RestWise account, giving me my pulse and oxygen saturation; and a Homedics digital blood pressure cuff.
You should test several times a day under different contexts (e.g., after waking up; during fast; after eating; after exercise; before bed, etc.). These devices are not infallible. One reading does not cut it. You will get different readings throughout the day as your body fluctuates through natural stages (i.e., your BP will be different during a fast than within an hour after eating, or after exercise).
A great analyzer of baseball statistics used to say, "You can tell more about a hitter when he's gone 200 for 1,000 at-bats than if he's gone 2 for 10." More data means more valid conclusions. I'll be testing throughout the day today, but it will be better when I'm done doing it throughout the week.
Imagine you go to a doctor's office, and you get a "white coat" BP reading of 132/85. He says "hmm, you have a little hypertension." But you reply, "Dude, your office makes me a little edgy. I tested myself 100 times last month (wanna see the Excel file?) and it averages 115/75." Now who's in charge?
Pulse oximeter (BCOF): 49/99; 44/98 (ACOF). Explanation: the first number is my resting heart rate (RHR); the second is a measure of how well oxygen is being diffused throughout my body (it goes up to 100).
Blood pressure (ACOF): 109/71; RHR 54. Explanation: caffienated coffee affects pulse and BP, generally increasing BP and lowering pulse.
You can see how the data jumps around, depending on the circumstance, the context, the activities. Body composition does not change day to day (hardly week to week either), but the data spit out by your scale will. But now we're getting into some data, we have something to work with.
One hundred BP readings would be good data, including knowing how food and sleep patterns were affecting it. A lot of data points will allow you to spot patterns (e.g., how does time of day, circadian and hormonal rhythms, affect your RHR and BP? What about the foods your eating and physical movement?).
I'll continue this throughout the week and then reproduce the results. You really should become kind of a stat geek and figure out the mean, mode, and standard deviations of the readings.


text:
Premium Home Chevron icon It indicates an expandable section or menu, or sometimes previous / next navigation options. Markets
'Beyond every historic extreme': A notorious market bear reiterates his call that the 'overextended' S&P 500 will suffer a 70% crash — and says stocks are facing 12 years of negative returns as they get trounced by Treasurys
John Hussman is once again sounding alarm bells, warning of a 65-70% market crash.
Hussman said in recent commentary that he believes the Federal Reserve's monetary policy is driving up valuations to unsustainable levels, and will lead the S&P 500 to return -3.6% over the next 12 years.
He predicted the total return of the S&P 500 will likely lag Treasurys for much of the 12-year period.
Before a market sell-off, John Hussman's right leg starts tapping unconsciously.
At the moment, he says, it's tapping.
"I thought it might have been the pumpkin pie, but on further analysis, it's because current market conditions are so familiar," Hussman said in his December market commentary.
To Hussman, there's a clear and simple sequence of events occurring that will eventually drive the market into a downward spiral — a spiral to the tune of a 65-70% drop from current levels.
There's the Federal Reserve 's creation of a zero-interest-rate environment, and the corresponding narrative that investors are forced to find returns in riskier assets like equities — or in the 2000s, products like mortgage-backed securities.
Then there's the direct effect this has on equity valuations, which have soared on surging demand for them.
"The notion that 'there is no alternative' but to speculate has again saturated the minds of market participants, driving S&P 500 valuations to levels that are now beyond every historic extreme, including 1929 and 2000, even if we completely exclude economic losses due to the COVID-19 pandemic," Hussman said.
Hussman, who is president of the Hussman Investment Trust, acknowledges that the Fed employs low rates with the intention of stimulating the economy, but he said they are too ignorant to the more potent impact it has on stock valuations and in turn — at least eventually — investors.
But it's not only the low-rate environment pushing investors into equities that Hussman sees as detrimental to investors. It's also the fact that the Fed too often is there to save the day when the market crashes, only adding to and prolonging the problem.
"The perpetual speculation of Wall Street relies on confidence that every market retreat will be met by another Federal Reserve stick-save," Hussman said, the emphasis his. "Yet all of these stick-saves by the Federal Reserve defer a financial collapse only by amplifying its eventual size."
A no-return world
Hussman illustrated the dire state of valuations with a chart showing margin-adjusted price-to-earnings ratio levels at an all-time high, well above 40.
He said the indicator "is better correlated with actual subsequent market returns than nearly every alternate measure we've tested or introduced."
Hussman Funds
Given this extreme territory for valuations, Hussman projects what amounts to a sort of no-return world.
Over the next 12 years, he estimates the S&P 500 will return -3.6%. For portfolios with a 60% allocation to the S&P 500, 30% to Treasury bonds, and 10% Treasury bills, he predicts a -1.7% return.
"Stock prices haven't just priced in a recovery. They're already beyond where they were before the pandemic," Hussman said.
"Indeed, we currently estimate that the average annual nominal total return of the S&P 500 is likely to lag the returns of Treasury bonds, by fully -4.6% during the coming 12-year period. So much for the notion of an 'equity risk premium.'"
To demonstrate why his outlook is so abysmal for the coming decade-plus, and why he thinks a market crash is due, Hussman offered another chart.
It shows the return estimates for Treasury bills, Treasury notes, corporate bonds, utilities, and the S&P 500 for the following 10 years at points right before various market pullbacks: February 2020, March 2009, October 2007, October 2002, March 2000, and August 1982.
Alongside these pre-drop peaks are the current estimates for the next 10 years. All of the above assets are currently at or near the bottom of prospective returns relative to those dates.
That said, Hussman is advocating that investors up their allocation to cash and wait for a better buying opportunity.
That buying opportunity will come in the form of a pullback of 65-70%, he said.
He again backed up his view with a chart placing atop of each other valuation levels and S&P 500 sell-offs.
"You'll notice that extreme valuations aren't always immediately associated with drawdowns. That's why you see those white spaces between the blue valuation lines and the red drawdown areas, which occur during periods when a bubble is expanding," he said.
"Unfortunately, the drawdowns generally arrive with a vengeance. At present, we expect the current cycle to be completed by a market loss on the order of 65-70%."
He added: "Yes, I know. A drawdown of 65-70% sounds insane and utterly preposterous, but the revulsion to that idea is largely due to pervasive speculative psychology, not historical evidence, cash flows, or fundamentals."
A Departure from Consensus
Hussman's views differ drastically from those held by some of Wall Street's top analysts.
Morgan Stanley's Mike Wilson, as one example, has said that even though valuations of large-cap growth stocks at the top of the S&P 500 are too high to lend themselves to much near-term appreciation, the market will be driven up 8% next year by surging price action in value and cyclicals as the economy recovers.
Wilson predicted the last two market sell-offs with high precision, and told Business Insider that while the indicators he used to make those predictions "are still flashing signs of exhaustion," he's not making a call for even a 10% drop.
As another example, Goldman Sachs has said the S&P 500 will rise next year by 20%.
And JPMorgan has predicted that the market will surge 26% in 2021.
Hussman's track record
Above, we noted that Hussman's right leg is currently tapping — his self-described visceral indicator of a coming sell-off. But to be fair, it's unclear whether his leg has ever ceased to tap.
For the uninitiated, Hussman has repeatedly made headlines by predicting a stock-market decline exceeding 60% and forecasting a full decade of negative equity returns. And as the stock market has continued to grind mostly higher, he's persisted with his doomsday calls.
But before you dismiss Hussman as a wonky perma-bear, consider his track record, which he broke down in a recent blog post. Here are the arguments he lays out:
Predicted in March 2000 that tech stocks would plunge 83%, then the tech-heavy Nasdaq 100 index lost an "improbably precise" 83% during a period from 2000 to 2002.
Predicted in 2000 that the S&P 500 would likely see negative total returns over the following decade, which it did.
Predicted in April 2007 that the S&P 500 could lose 40%, then it lost 55% in the subsequent collapse from 2007 to 2009.
However, Hussman's recent returns have been less-than-stellar. His Strategic Growth Fund is down about 50% since December 2010, though it's risen more than 11% in the past year.
Still, the amount of bearish evidence being unearthed by Hussman continues to mount. Sure, there may still be returns to be realized in this market cycle, but at what point does the mounting risk of a crash become too unbearable?
That's a question investors will have to answer themselves — and one that Hussman will clearly keep exploring in the interim.
SEE ALSO: BlackRock is channeling more cash to high-momentum and relatively small stocks as the economy recovers. These are the 20 companies they're earmarking the most money for.
NOW WATCH: Airline salaries compared to stock buybacks show why so many people are angry at the bailout
More: Investing Stock Market Crash Market crash
Stock market bubble
market bubble
Stock Market Correction
Market Correction
Stock Market Sell-Off
market sell-off
Stock Bubble
stock market prediction
Investing Recommendations
Stock Market Analysis
bearish outlook
bearish signal
bearish view
bear case
stock market call
Stock market advice
market distortion
Market Downturn
fed and stocks
fed asset purchases
Fed balance sheet
interest rate policy


Ladies and Gentlemen, my name is Sorm Son and I wish to be your charming Angkor Wat Tour guide. For almost ten years I have been an Official Angor Wat Tour guide and I can help make your stay in Cambodia a fun and wondrous adventure. I am a member of the local Khmer ethnic group and was a Buddhist monk for over eleven years. This background gives me a unique perspective of Cambodian life, which I will be happy to share with you as your Angkor Wat tour guide.
My University studies led to a Bachelor in Ed degree in English and I will help with any translation issues that may arise during your stay here in Siem Reap. I am also an expert on the history of the construction of the temples as well as their symbolism. As your Angkor Wat Tour Guide I can help with your special photographs. I will direct you to the best locations and positions. I am also willing to lend a helping hand as necessary.
For many, coming to the Angkor Wat area is a lifelong dream and as your Angkor Way Tour Guide I will insure that your dreams are fulfilled during your trip to Wondrous Cambodia.
I look forward to meeting you and hope you will let me become your personal Angkor Wat Tour Guide.
As Seen on Trip Advisor!


I sit with the keyboard but have no words to write.
but with my brain I'm having a fight.
But nothing is there to make this post grand.
Noise so loud I can't get in the flow.
Easy for you to say, I whisper weak.
Trying to let pass those who shout.
But look look here, what have you got!
And I didn't even need my yoga mat.
This entry was posted in Inspiration, Life, Yoga and tagged Blogging, Inspiration, mindfulness, poem, Writing, Yoga. Bookmark the permalink.


text:
Fortune cookie promising a 'lot of gold' prompted man to buy $1million winning lottery ticket
Cookie predicted good fortune for William Johnson, from Massachusetts
Mr Johnson bought a lottery scratch card the following day
Scooped a $1million prize and plans to buy lake house with his wife
Perhaps there is something to the predictions tucked inside fortune cookies after all.
After opening a cookie that promised he would 'soon come into a lot of gold', William Johnson promptly went out and bought a lottery scratch card - just in case.
Mr Johnson was stunned to discover he had scooped a $1million prize after he scratched the card in Southwick, Massachusetts.
A millionaire overnight: William Johnson bought a scratch card after a fortune cookie told him he would come into a 'lot of gold' - and promptly won $1million
Mr Johnson says he cracked open the fortune cookie after enjoying a meal with his wife, and was compelled to pick up the Massachusetts Millionaire Mania scratch card the following day.
He selected the cash option on the prize, meaning he received a one-time lump sum payment of $650,000, according to wcvb.com.
The Lottery said he and his wife are planning to buy a lake house with their winnings.
Colonial News on Southwick Street in Feeding Hills, where Mr Johnson bought the winning ticket, will receive $10,000 commission on the sale.
Words of wisdom: The message inside Mr Johnson's cookie promised good fortune was on its way


Our Reus +6 trainer is now available for version 1.6.5 and supports STEAM, GOG. These Reus cheats are designed to enhance your experience with the game.
Level 3 Achieved, 30 Developments Achieved, 32 Sources Unlocked, All Projects Unlocked.
We currently don't have any Reus cheats, cheat codes or hints for PC. Please check back at a later date for more cheats and codes to be added.
We currently don't have any Reus FAQs, guides or walkthroughs for PC. Please check back at a later date for more guides and walkthroughs to be added.
We currently don't have any Reus achievement or trophy lists for PC. Please check back at a later date for more achievements and trophies to be added.


The changing of the guard - new government seems to mean much less top down guidance on ICT in education. This may or may not be a good thing - but quite hard to find folk on policy side who can set out direction of travel in England.
Last year there were shed loads of functional skills materials - this year hardly in evidence - would be interesting to see figures on how much money has been spent on reforms here.That appear to be continually delayed.
Useful educational focused side programme and more informal teachmeet type content - always better than advertorial and getting better each year.
For those who don't regard education and learning as chiefly a money making enterprise BETT can be pretty harrowing. For a free pen or even a pendrive there is only so much sales patter you can stomach. Combine lots of people selling stuff with hordes too of home grown or international educational technologists all on the make and you get a heady brew and has any of it really changed the experience of learners in schools ?