Abstract : [en] Bidirectional transformations (bx) are a mechanism for maintaining the consistency of two (or perhaps more) related sources of information. Such sources can be databases, software models, documents, or their abstract models like graphs or trees. BX are an emerging topic in a wide range of research areas with prominent presence at top conferences in different fields. The methodologies used for bx range from classical program transformation to graph transformation techniques, from ad-hoc techniques for data synchronization to the development of domain-specific languages and their integration. The First International Workshop on Bidirectional Transformations (BX 2012) established a dedicated venue for bx in all relevant areas. It was initiated by the participants of the Dagstuhl Seminar "Bidirectional Transformations" (bx) in Germany 2011, which continued the GRACE International Meeting on Bidirectional Transformations held in Japan 2008. The workshop BX 2012 took place at the Tallinn University of Technology, Estonia on the 25th of March 2012, as a satellite event of ETAPS 2012, the European Joint Conferences on Theory and Practice of Software.


This unique recording features an assortment of actors reciting Coleridge's most famous works, all gems of English poetry. Acclaimed actor Michael Sheen does a superb and truly harrowing recitation of "The Rime of the Ancient Mariner", while Sarah Woodward is a sensuous Christabel. "Frost at Midnight" is infused with a sense of dark glamor, while "Love" is haunting and profound. Overall, the performers here do an excellent job showcasing the beauty of Coleridge's words and the depths of his emotions. An excellent way to experience the work of this deeply imaginative and inventive poet.
Samuel Taylor Coleridge, in collaboration with his friend, William Wordsworth, revolutionized English poetry. In 1798 they produced their Lyrical Ballads, poems of imagination and reflection using "the language of men" - pointing the way forward for a generation of Romantic poets.
Coleridge's addiction to opium affected his poetic output, and yet the handful of poems he did produce were innovative. These ranged from the quietly conversational to the wildly imagined, and include two of the greatest in English literature: "Kubla Khan" and "The Rime of the Ancient Mariner".
Hollywood actor Michael Sheen reads "The Rime of the Ancient Mariner", in this collection, which is part of the Naxos AudioBooks The Great Poets series. This popular anthology also contains Coleridge's other major narrative poem "Christabel", as well as "Kubla Khan", "Love", "Frost at Midnight", and "The Lime-Tree Bower My Prison".
S. T. Coleridge was an influential poet of his time. He was one of the founders of the Romantic movement.
Being a chronic opium addict, suffering from depression and poor health, he created intense, vivid and emotional imagery. His poetry is gothic, nostalgic, razor-sharp and evocative. The narrators' performance was heartfelt.
I first read this poem when I was 14 years old and it has remained my favorite ever since.i carry a pocket book copy in my bag wherever I go, are I have 6 individual books in my home library.
If I have one regret with this book they read only his longest pieces, True among them things like The Rime of the ancient mariner. Still I would of liked to hear some of his witty but shorter works. Beyond that it is an excellent introduction to Coleridge. Just dig deeper to really know him.
Would you try another book from Samuel Taylor Coleridge and/or the narrators?
I was led to believe that I was purchasing a CD; NO! . . It gave me a download which I can't listen to because I'm not a member of this website.
Would you ever listen to anything by Samuel Taylor Coleridge again?
If you could play editor, what scene or scenes would you have cut from The Great Poets: Samuel Taylor Coleridge?
To be honest, my reading experience was definitely affected by the fact that many of the narrators seemed to read the poetry in their grammar school voices. You could virtually hear the lungs being expanded to bursting point in order to make the requisite explosive 'Oh!'.
Coleridge is a poet very much of his time and now his 'simple expression' and the extasy provided by nature seems either contrived or tame. It is hard to imagine him as a controversial figure or writer. Personally, I find a great deal of solace in nature and I feel spiritually energinsed by isolation, so I do enjoy many of Coleridge's flights of the sublime.
However, I am not a devotee of the tone of many of his poems. His inverted snobbery and occasional pomposity smacks too much of the bitterness of having to rely on patronage rather than being born to completely independent means. He reminds me of a second home owner who claims to be 'local' and desperately wants to be accepted by the yokels despite depending on Waitrose home delivery and asking what 'craft' ale the local pub serves.


text:
#include "stdafx.h"

#if !defined(CPPREST_EXCLUDE_WEBSOCKETS)

#include "cpprest/details/x509_cert_utilities.h"

// Force websocketpp to use C++ std::error_code instead of Boost.
#define _WEBSOCKETPP_CPP11_SYSTEM_ERROR_
#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#pragma GCC diagnostic ignored "-Wunused-parameter"
#pragma GCC diagnostic ignored "-Wignored-qualifiers"
#pragma GCC diagnostic ignored "-Wcast-qual"
#include <websocketpp/config/asio_client.hpp>
#include <websocketpp/config/asio_no_tls_client.hpp>
#include <websocketpp/client.hpp>
#pragma GCC diagnostic pop
#else /* __GNUC__ */
#if defined(_WIN32)
#pragma warning( push )
#pragma warning( disable : 4100 4127 4512 4996 4701 4267 )
#define _WEBSOCKETPP_CPP11_STL_
#define _WEBSOCKETPP_CONSTEXPR_TOKEN_
#if _MSC_VER < 1900
#define _WEBSOCKETPP_NOEXCEPT_TOKEN_
#endif
#endif

#include <websocketpp/config/asio_client.hpp>
#include <websocketpp/config/asio_no_tls_client.hpp>
#include <websocketpp/client.hpp>

#if defined(_WIN32)
#pragma warning( pop )
#endif

#endif /* __GNUC__ */

#if defined(_MSC_VER)
#pragma warning( disable : 4503 )
#endif

// This is a hack to avoid memory leak reports from the debug MSVC CRT for all
// programs using the library: ASIO calls SSL_library_init() which calls
// SSL_COMP_get_compression_methods(), which allocates some heap memory and the
// only way to free it later is to call SSL_COMP_free_compression_methods(),
// but this function is unaccessible from the application code as OpenSSL is
// statically linked into the C++ REST SDK DLL. So, just to be nice, call it
// here ourselves -- even if the real problem is in ASIO (up to v1.60.0).
#if defined(_WIN32) && !defined(NDEBUG) && !defined(CPPREST_NO_SSL_LEAK_SUPPRESS)

#include <openssl/ssl.h>
static struct ASIO_SSL_memory_leak_suppress
{
    ~ASIO_SSL_memory_leak_suppress()
    {
        ::SSL_COMP_free_compression_methods();
    }
} ASIO_SSL_memory_leak_suppressor;

#endif /* _WIN32 && !NDEBUG */

using websocketpp::lib::placeholders::_1;
using websocketpp::lib::placeholders::_2;
using websocketpp::lib::bind;

namespace web
{
namespace websockets
{
namespace client
{
namespace details
{

// Utility function to build up error string based on error code and location.
static std::string build_error_msg(const std::error_code &ec, const std::string &location)
{
    std::stringstream ss;
    ss.imbue(std::locale::classic());
    ss << location
       << ": " << ec.value()
       << ": " << ec.message();
    return ss.str();
}

static utility::string_t g_subProtocolHeader(_XPLATSTR("Sec-WebSocket-Protocol"));

class wspp_callback_client : public websocket_client_callback_impl, public std::enable_shared_from_this<wspp_callback_client>
{
private:
    enum State {
        CREATED,
        CONNECTING,
        CONNECTED,
        CLOSING,
        CLOSED,
        DESTROYED
    };
public:
    wspp_callback_client(websocket_client_config config) :
        websocket_client_callback_impl(std::move(config)),
        m_state(CREATED),
        m_num_sends(0)
#if defined(__APPLE__) || (defined(ANDROID) || defined(__ANDROID__)) || defined(_WIN32)
        , m_openssl_failed(false)
#endif
    {}

    ~wspp_callback_client()
    {
        _ASSERTE(m_state < DESTROYED);
        std::unique_lock<std::mutex> lock(m_wspp_client_lock);

        // Now, what states could we be in?
        switch (m_state) {
        case DESTROYED:
            // This should be impossible
            std::abort();
        case CREATED:
            lock.unlock();
            break;
        case CLOSED:
        case CONNECTING:
        case CONNECTED:
        case CLOSING:
            // Unlock the mutex so connect/close can use it.
            lock.unlock();
            try
            {
                // This will do nothing in the already-connected case
                pplx::task<void>(m_connect_tce).get();
            }
            catch (...) {}
            try
            {
                // This will do nothing in the already-closing case
                close().wait();
            }
            catch (...) {}
            break;
        }

        // At this point, there should be no more references to me.
        m_state = DESTROYED;
    }

    pplx::task<void> connect()
    {
        if (m_uri.scheme() == U("wss"))
        {
            m_client = std::unique_ptr<websocketpp_client_base>(new websocketpp_tls_client());

            // Options specific to TLS client.
            auto &client = m_client->client<websocketpp::config::asio_tls_client>();
            client.set_tls_init_handler([this](websocketpp::connection_hdl)
            {
                auto sslContext = websocketpp::lib::shared_ptr<boost::asio::ssl::context>(new boost::asio::ssl::context(boost::asio::ssl::context::sslv23));
                sslContext->set_default_verify_paths();
                sslContext->set_options(boost::asio::ssl::context::default_workarounds);
                if (m_config.validate_certificates())
                {
                    sslContext->set_verify_mode(boost::asio::ssl::context::verify_peer);
                }
                else
                {
                    sslContext->set_verify_mode(boost::asio::ssl::context::verify_none);
                }

#if defined(__APPLE__) || (defined(ANDROID) || defined(__ANDROID__)) || defined(_WIN32)
                m_openssl_failed = false;
#endif
                sslContext->set_verify_callback([this](bool preverified, boost::asio::ssl::verify_context &verifyCtx)
                {
#if defined(__APPLE__) || (defined(ANDROID) || defined(__ANDROID__)) || defined(_WIN32)
                    // On OS X, iOS, and Android, OpenSSL doesn't have access to where the OS
                    // stores keychains. If OpenSSL fails we will doing verification at the
                    // end using the whole certificate chain so wait until the 'leaf' cert.
                    // For now return true so OpenSSL continues down the certificate chain.
                    if(!preverified)
                    {
                        m_openssl_failed = true;
                    }
                    if(m_openssl_failed)
                    {
                        return http::client::details::verify_cert_chain_platform_specific(verifyCtx, utility::conversions::to_utf8string(m_uri.host()));
                    }
#endif
                    boost::asio::ssl::rfc2818_verification rfc2818(utility::conversions::to_utf8string(m_uri.host()));
                    return rfc2818(preverified, verifyCtx);
                });

#if OPENSSL_VERSION_NUMBER < 0x10100000L
                // OpenSSL stores some per thread state that never will be cleaned up until
                // the dll is unloaded. If static linking, like we do, the state isn't cleaned up
                // at all and will be reported as leaks.
                // See http://www.openssl.org/support/faq.html#PROG13
                // This is necessary here because it is called on the user's thread calling connect(...)
                // eventually through websocketpp::client::get_connection(...)
                ERR_remove_thread_state(nullptr);
#endif

                return sslContext;
            });

            // Options specific to underlying socket.
            client.set_socket_init_handler([this](websocketpp::connection_hdl, boost::asio::ssl::stream<boost::asio::ip::tcp::socket> &ssl_stream)
            {
                // Support for SNI.
                if (m_config.is_sni_enabled())
                {
                    // If user specified server name is empty default to use URI host name.
                    if (!m_config.server_name().empty())
                    {
                        // OpenSSL runs the string parameter through a macro casting away const with a C style cast.
                        // Do a C++ cast ourselves to avoid warnings.
                        SSL_set_tlsext_host_name(ssl_stream.native_handle(), const_cast<char *>(m_config.server_name().c_str()));
                    }
                    else
                    {
                        const auto &server_name = utility::conversions::to_utf8string(m_uri.host());
                        SSL_set_tlsext_host_name(ssl_stream.native_handle(), const_cast<char *>(server_name.c_str()));
                    }
                }
            });

            return connect_impl<websocketpp::config::asio_tls_client>();
        }
        else
        {
            m_client = std::unique_ptr<websocketpp_client_base>(new websocketpp_client());
            return connect_impl<websocketpp::config::asio_client>();
        }
    }

    template <typename WebsocketConfigType>
    pplx::task<void> connect_impl()
    {
        auto &client = m_client->client<WebsocketConfigType>();

        client.clear_access_channels(websocketpp::log::alevel::all);
        client.clear_error_channels(websocketpp::log::alevel::all);
        client.init_asio();
        client.start_perpetual();

        _ASSERTE(m_state == CREATED);
        client.set_open_handler([this](websocketpp::connection_hdl)
        {
            _ASSERTE(m_state == CONNECTING);
            m_state = CONNECTED;
            m_connect_tce.set();
        });

        client.set_fail_handler([this](websocketpp::connection_hdl con_hdl)
        {
            _ASSERTE(m_state == CONNECTING);
            shutdown_wspp_impl<WebsocketConfigType>(con_hdl, true);
        });

        client.set_message_handler([this](websocketpp::connection_hdl, const websocketpp::config::asio_client::message_type::ptr &msg)
        {
            if (m_external_message_handler)
            {
                _ASSERTE(m_state >= CONNECTED && m_state < CLOSED);
                websocket_incoming_message incoming_msg;

                switch (msg->get_opcode())
                {
                case websocketpp::frame::opcode::binary:
                    incoming_msg.m_msg_type = websocket_message_type::binary_message;
                    break;
                case websocketpp::frame::opcode::text:
                    incoming_msg.m_msg_type = websocket_message_type::text_message;
                    break;
                default:
                    // Unknown message type. Since both websocketpp and our code use the RFC codes, we'll just pass it on to the user.
                    incoming_msg.m_msg_type = static_cast<websocket_message_type>(msg->get_opcode());
                    break;
                }

                // 'move' the payload into a container buffer to avoid any copies.
                auto &payload = msg->get_raw_payload();
                incoming_msg.m_body = concurrency::streams::container_buffer<std::string>(std::move(payload));

                m_external_message_handler(incoming_msg);
            }
        });

        client.set_close_handler([this](websocketpp::connection_hdl con_hdl)
        {
            _ASSERTE(m_state != CLOSED);
            shutdown_wspp_impl<WebsocketConfigType>(con_hdl, false);
        });

        // Get the connection handle to save for later, have to create temporary
        // because type erasure occurs with connection_hdl.
        websocketpp::lib::error_code ec;
        auto con = client.get_connection(utility::conversions::to_utf8string(m_uri.to_string()), ec);
        m_con = con;
        if (ec.value() != 0)
        {
            return pplx::task_from_exception<void>(websocket_exception(ec, build_error_msg(ec, "get_connection")));
        }

        // Add any request headers specified by the user.
        const auto & headers = m_config.headers();
        for (const auto & header : headers)
        {
            if (!utility::details::str_icmp(header.first, g_subProtocolHeader))
            {
                con->append_header(utility::conversions::to_utf8string(header.first), utility::conversions::to_utf8string(header.second));
            }
        }

        // Add any specified subprotocols.
        if (headers.has(g_subProtocolHeader))
        {
            const std::vector<utility::string_t> protocols = m_config.subprotocols();
            for (const auto & value : protocols)
            {
                con->add_subprotocol(utility::conversions::to_utf8string(value), ec);
                if (ec.value())
                {
                    return pplx::task_from_exception<void>(websocket_exception(ec, build_error_msg(ec, "add_subprotocol")));
                }
            }
        }

        // Setup proxy options.
        const auto &proxy = m_config.proxy();
        if (proxy.is_specified())
        {
            con->set_proxy(utility::conversions::to_utf8string(proxy.address().to_string()), ec);
            if (ec)
            {
                return pplx::task_from_exception<void>(websocket_exception(ec, build_error_msg(ec, "set_proxy")));
            }

            const auto &cred = proxy.credentials();
            if (cred.is_set())
            {
                con->set_proxy_basic_auth(
                    utility::conversions::to_utf8string(cred.username()),
                    utility::conversions::to_utf8string(*cred._internal_decrypt()),
                    ec);
                if (ec)
                {
                    return pplx::task_from_exception<void>(websocket_exception(ec, build_error_msg(ec, "set_proxy_basic_auth")));
                }
            }
        }

        m_state = CONNECTING;
        client.connect(con);
        m_thread = std::thread([&client]()
        {
#if defined(__ANDROID__)
            crossplat::get_jvm_env();
#endif
            client.run();
#if defined(__ANDROID__)
            crossplat::JVM.load()->DetachCurrentThread();
#endif

#if OPENSSL_VERSION_NUMBER < 0x10100000L
            // OpenSSL stores some per thread state that never will be cleaned up until
            // the dll is unloaded. If static linking, like we do, the state isn't cleaned up
            // at all and will be reported as leaks.
            // See http://www.openssl.org/support/faq.html#PROG13
            ERR_remove_thread_state(nullptr);
#endif

        });
        return pplx::create_task(m_connect_tce);
    }

    pplx::task<void> send(websocket_outgoing_message &msg)
    {
        if (!m_connect_tce._IsTriggered())
        {
            return pplx::task_from_exception<void>(websocket_exception("Client not connected."));
        }

        switch (msg.m_msg_type)
        {
        case websocket_message_type::text_message:
        case websocket_message_type::binary_message:
		case websocket_message_type::pong:
            break;
        default:
            return pplx::task_from_exception<void>(websocket_exception("Invalid message type"));
        }

        const auto length = msg.m_length;
        if (length == 0 && msg.m_msg_type != websocket_message_type::pong)
        {
            return pplx::task_from_exception<void>(websocket_exception("Cannot send empty message."));
        }
        if (length >= UINT_MAX && length != SIZE_MAX)
        {
            return pplx::task_from_exception<void>(websocket_exception("Message size too large. Ensure message length is less than UINT_MAX."));
        }

        {
            if (++m_num_sends == 1) // No sends in progress
            {
                // Start sending the message
                send_msg(msg);
            }
            else
            {
                // Only actually have to take the lock if touching the queue.
                std::lock_guard<std::mutex> lock(m_send_lock);
                m_outgoing_msg_queue.push(msg);
            }
        }

        return pplx::create_task(msg.body_sent());
    }

    void send_msg(websocket_outgoing_message &msg)
    {
        auto this_client = this->shared_from_this();
        auto& is_buf = msg.m_body;
        auto length = msg.m_length;

        if (length == SIZE_MAX)
        {
            // This indicates we should determine the length automatically.
            if (is_buf.has_size())
            {
                // The user's stream knows how large it is -- there's no need to buffer.
                auto buf_sz = is_buf.size();
                if (buf_sz >= SIZE_MAX)
                {
                    msg.signal_body_sent(std::make_exception_ptr(websocket_exception("Cannot send messages larger than SIZE_MAX.")));
                    return;
                }
                length = static_cast<size_t>(buf_sz);
                // We have determined the length and can proceed normally.
            }
            else
            {
                // The stream needs to be buffered.
                auto is_buf_istream = is_buf.create_istream();
                msg.m_body = concurrency::streams::container_buffer<std::vector<uint8_t>>();
                is_buf_istream.read_to_end(msg.m_body).then([this_client, msg](pplx::task<size_t> t) mutable
                {
                    try
                    {
                        msg.m_length = t.get();
                        this_client->send_msg(msg);
                    }
                    catch (...)
                    {
                        msg.signal_body_sent(std::current_exception());
                    }
                });
                // We have postponed the call to send_msg() until after the data is buffered.
                return;
            }
        }

        // First try to acquire the data (Get a pointer to the next already allocated contiguous block of data)
        // If acquire succeeds, send the data over the socket connection, there is no copy of data from stream to temporary buffer.
        // If acquire fails, copy the data to a temporary buffer managed by sp_allocated and send it over the socket connection.
        std::shared_ptr<uint8_t> sp_allocated;
        size_t acquired_size = 0;
        uint8_t* ptr;
        auto read_task = pplx::task_from_result();
        bool acquired = is_buf.acquire(ptr, acquired_size);

        if (!acquired || acquired_size < length) // Stream does not support acquire or failed to acquire specified number of bytes
        {
            // If acquire did not return the required number of bytes, do not rely on its return value.
            if (acquired_size < length)
            {
                acquired = false;
                is_buf.release(ptr, 0);
            }

            // Allocate buffer to hold the data to be read from the stream.
            sp_allocated.reset(new uint8_t[length], [=](uint8_t *p) { delete [] p; });

            read_task = is_buf.getn(sp_allocated.get(), length).then([length](size_t bytes_read)
            {
                if (bytes_read != length)
                {
                    throw websocket_exception("Failed to read required length of data from the stream.");
                }
            });
        }
        else
        {
            // Acquire succeeded, assign the acquired pointer to sp_allocated. Use an empty custom destructor
            // so that the data is not released when sp_allocated goes out of scope. The streambuf will manage its memory.
            sp_allocated.reset(ptr, [](uint8_t *) {});
        }

        read_task.then([this_client, msg, sp_allocated, length]()
        {
            std::lock_guard<std::mutex> lock(this_client->m_wspp_client_lock);
            if (this_client->m_state > CONNECTED)
            {
                // The client has already been closed.
                throw websocket_exception("Websocket connection is closed.");
            }

            websocketpp::lib::error_code ec;
            if (this_client->m_client->is_tls_client())
            {
                this_client->send_msg_impl<websocketpp::config::asio_tls_client>(this_client, msg, sp_allocated, length, ec);
            }
            else
            {
                this_client->send_msg_impl<websocketpp::config::asio_client>(this_client, msg, sp_allocated, length, ec);
            }
            return ec;
        }).then([this_client, msg, is_buf, acquired, sp_allocated, length](pplx::task<websocketpp::lib::error_code> previousTask) mutable
        {
            std::exception_ptr eptr;
            try
            {
                // Catch exceptions from previous tasks, if any and convert it to websocket exception.
                const auto &ec = previousTask.get();
                if (ec.value() != 0)
                {
                    eptr = std::make_exception_ptr(websocket_exception(ec, build_error_msg(ec, "sending message")));
                }
            }
            catch (...)
            {
                eptr = std::current_exception();
            }

            if (acquired)
            {
                is_buf.release(sp_allocated.get(), length);
            }

            // Set the send_task_completion_event after calling release.
            if (eptr)
            {
                msg.signal_body_sent(eptr);
            }
            else
            {
                msg.signal_body_sent();
            }

            if (--this_client->m_num_sends > 0)
            {
                // Only hold the lock when actually touching the queue.
                websocket_outgoing_message next_msg;
                {
                    std::lock_guard<std::mutex> lock(this_client->m_send_lock);
                    next_msg = this_client->m_outgoing_msg_queue.front();
                    this_client->m_outgoing_msg_queue.pop();
                }
                this_client->send_msg(next_msg);
            }
        });
    }

    pplx::task<void> close()
    {
        return close(static_cast<websocket_close_status>(websocketpp::close::status::normal), U("Normal"));
    }

    pplx::task<void> close(websocket_close_status status, const utility::string_t& reason)
    {
        websocketpp::lib::error_code ec;
        {
            std::lock_guard<std::mutex> lock(m_wspp_client_lock);
            if (m_state == CONNECTED)
            {
                m_state = CLOSING;
                if (m_client->is_tls_client())
                {
                    close_impl<websocketpp::config::asio_tls_client>(status, reason, ec);
                }
                else
                {
                    close_impl<websocketpp::config::asio_client>(status, reason, ec);
                }
            }
        }
        return pplx::task<void>(m_close_tce);
    }

private:

    template <typename WebsocketConfigType>
    void shutdown_wspp_impl(const websocketpp::connection_hdl &con_hdl, bool connecting)
    {
        // Only need to hold the lock when setting the state to closed.
        {
            std::lock_guard<std::mutex> lock(m_wspp_client_lock);
            m_state = CLOSED;
        }

        auto &client = m_client->client<WebsocketConfigType>();
        const auto &connection = client.get_con_from_hdl(con_hdl);
        const auto &closeCode = connection->get_local_close_code();
        const auto &reason = connection->get_local_close_reason();
        const auto &ec = connection->get_ec();
        client.stop_perpetual();

        // Can't join thread directly since it is the current thread.
        pplx::create_task([this, connecting, ec, closeCode, reason]
        {
            if (m_thread.joinable())
            {
                m_thread.join();
            }

            // Delete client to make sure Websocketpp cleans up all Boost.Asio portions.
            m_client.reset();

            if (connecting)
            {
                websocket_exception exc(ec, build_error_msg(ec, "set_fail_handler"));
                m_connect_tce.set_exception(exc);
            }
            if (m_external_close_handler)
            {
                m_external_close_handler(static_cast<websocket_close_status>(closeCode), utility::conversions::to_string_t(reason), ec);
            }
            // Making a local copy of the TCE prevents it from being destroyed along with "this"
            auto tceref = m_close_tce;
            tceref.set();
        });
    }

    template <typename WebsocketClientType>
    static void send_msg_impl(
        const std::shared_ptr<wspp_callback_client> &this_client,
        const websocket_outgoing_message &msg,
        const std::shared_ptr<uint8_t> &sp_allocated,
        size_t length,
        websocketpp::lib::error_code &ec)
    {
        auto &client = this_client->m_client->client<WebsocketClientType>();
        switch (msg.m_msg_type)
        {
        case websocket_message_type::text_message:
            client.send(
                this_client->m_con,
                sp_allocated.get(),
                length,
                websocketpp::frame::opcode::text,
                ec);
            break;
        case websocket_message_type::binary_message:
			client.send(
                this_client->m_con,
                sp_allocated.get(),
                length,
                websocketpp::frame::opcode::binary,
                ec);
            break;
		case websocket_message_type::pong:
			client.pong(
				this_client->m_con,
				"",
				ec);
			break;
        default:
            // This case should have already been filtered above.
            std::abort();
        }
    }

    template <typename WebsocketConfig>
    void close_impl(websocket_close_status status, const utility::string_t& reason, websocketpp::lib::error_code &ec)
    {
        auto &client = m_client->client<WebsocketConfig>();
        client.close(m_con, static_cast<websocketpp::close::status::value>(status), utility::conversions::to_utf8string(reason), ec);
    }

    void set_message_handler(const std::function<void(const websocket_incoming_message&)>& handler)
    {
        m_external_message_handler = handler;
    }

    void set_close_handler(const std::function<void(websocket_close_status, const utility::string_t&, const std::error_code&)>& handler)
    {
        m_external_close_handler = handler;
    }

    std::thread m_thread;

    // Perform type erasure to set the websocketpp client in use at runtime
    // after construction based on the URI.
    struct websocketpp_client_base
    {
        virtual ~websocketpp_client_base() CPPREST_NOEXCEPT {}
        template <typename WebsocketConfig>
        websocketpp::client<WebsocketConfig> & client()
        {
            if(is_tls_client())
            {
                return reinterpret_cast<websocketpp::client<WebsocketConfig> &>(tls_client());
            }
            else
            {
                return reinterpret_cast<websocketpp::client<WebsocketConfig> &>(non_tls_client());
            }
        }
        virtual websocketpp::client<websocketpp::config::asio_client> & non_tls_client()
        {
            throw std::bad_cast();
        }
        virtual websocketpp::client<websocketpp::config::asio_tls_client> & tls_client()
        {
            throw std::bad_cast();
        }
        virtual bool is_tls_client() const = 0;
    };
    struct websocketpp_client : websocketpp_client_base
    {
        websocketpp::client<websocketpp::config::asio_client> & non_tls_client() override
        {
            return m_client;
        }
        bool is_tls_client() const override { return false; }
        websocketpp::client<websocketpp::config::asio_client> m_client;
    };
    struct websocketpp_tls_client : websocketpp_client_base
    {
        websocketpp::client<websocketpp::config::asio_tls_client> & tls_client() override
        {
            return m_client;
        }
        bool is_tls_client() const override { return true; }
        websocketpp::client<websocketpp::config::asio_tls_client> m_client;
    };

    websocketpp::connection_hdl m_con;

    pplx::task_completion_event<void> m_connect_tce;
    pplx::task_completion_event<void> m_close_tce;

    // Used to safe guard the wspp client.
    std::mutex m_wspp_client_lock;
    State m_state;
    std::unique_ptr<websocketpp_client_base> m_client;

    // Guards access to m_outgoing_msg_queue
    std::mutex m_send_lock;

    // Queue to order the sends
    std::queue<websocket_outgoing_message> m_outgoing_msg_queue;

    // Number of sends in progress and queued up.
    std::atomic<int> m_num_sends;

    // External callback for handling received and close event
    std::function<void(websocket_incoming_message)> m_external_message_handler;
    std::function<void(websocket_close_status, const utility::string_t&, const std::error_code&)> m_external_close_handler;

    // Used to track if any of the OpenSSL server certificate verifications
    // failed. This can safely be tracked at the client level since connections
    // only happen once for each client.
#if defined(__APPLE__) || (defined(ANDROID) || defined(__ANDROID__)) || defined(_WIN32)
    bool m_openssl_failed;
#endif

};

websocket_client_task_impl::websocket_client_task_impl(websocket_client_config config) :
    m_client_closed(false),
    m_callback_client(std::make_shared<details::wspp_callback_client>(std::move(config)))
{
    set_handler();
}
}

websocket_callback_client::websocket_callback_client() :
    m_client(std::make_shared<details::wspp_callback_client>(websocket_client_config()))
{}

websocket_callback_client::websocket_callback_client(websocket_client_config config) :
    m_client(std::make_shared<details::wspp_callback_client>(std::move(config)))
{}

}}}

#endif

redpajama_set_name: RedPajamaGithub


This Reebok Power Bra is perfect to wear during your next work out. It offers high support, light padding and an elasticated hem to ensure you stay comfortable during intense work outs. It's a racerback style with a hook fastening. There is mesh panelling to help with breathability.


text:
MenuCelebritiesHairstylesLovePlastic SurgeryBeautyFashionLifestyleTravelMoviesWeight lossFoodHealthWedding
How to Release and Prevent Resentment in Your Relationships
50 Best Couple Tattoos Ever
How to be a Submissive Wife
14 Signs He's Just Not That Into You
14 Signs Your Guy Means It When He Says "I Love You"
Home > Fashion > 10 Must Watch Fashion Movies
10 Must Watch Fashion Movies
By Inna Rothmann on December 29, 2014
Fashion is not all about glitz and extravagance; it has so many different sides not visible to the general public. From documentaries to movies inspired by real life, these 10 films will bring the magnificent world of fashion closer to you and will help you see who really those egocentric fashionistas are and what is behind the fashion icons' lightness of being.
The Devil Wears Prada (2006). .
A story about a young naïve journalist Andrea (Anne Hathaway) taking up a job of a second assistant to the editor of one of the city's biggest fashion magazines. Her boss (Meryl Streep) is ruthless and cold-blooded, and the young woman does not really fit into the fashion world, but with the help of her colleagues, Andrea changes into a true fashionista, which changes her relationships with her close ones. Eventually she learns that life is all about making choices. A must-watch for all who dream of a career in fashion journalism.
Coco Before Chanel (2009).
A few years after leaving the orphanage, Gabrielle Chanel, played by Audrey Tautou, starts working in a local bar. She works as a seamstress in-between her shifts and she also sings quite well. The song she used to sing nightly with her sister gives her a new nickname- a famous Coco. A liaison with Baron Balsan provides her an opportunity to get into French society and gives her a chance to develop her gift for designing increasingly popular hats. When she falls in love with an English businessman more opportunities open up, though life becomes ever more complicated. This a must-watch classic for all who love the world of fashion and worship Coco Chanel.
Sex and the City (2008).
A classic movie about a city fashionista-columnist Carrie Bradshaw, excellently performed by fabulous Sarah Jessica Parker. Carrie's vast collection of shoes is astounding, and her clothes choice is always impeccably stylish. The movie is a compilation of all the best things from the show: fashion, style, sex, love, life choices, and it still remains a modern fairy tale with a new age strong independent Cinderella. Carrie's famous wedding dress was designed by Vivienne Westwood, and it's worth watching the movie just for this fashion masterpiece.
In Vogue: The Editor's Eye, Vogue (2012).
). Even if you are not a fan of documentaries, this movie will keep you awake and absorbed until the very end. Vogue editor Anna Wintour is featured in this film, among Babs Simpson, Grace Coddington, Tonne Goodman, and others. "In Vogue" presents the back stories of famous photos features in the iconic magazine, from delicate couture to the infamous photos of a model in a leg brace, seen by Vogue as a fashion accessory rather than a connection to reality.
Dior and I (2014).
Originally titled Dior et moi, the French movie takes the viewer inside the fascinating world of the Christian Dior fashion house. You get an opportunity to have a behind-the-scenes look at the creation of Raf Simons' first haute couture collection as its new artistic director, which a story of a true dedication and passion. This documentary is also a vibrant homage to the tailors who serve Simons' vision. A wonderful portrayal of hard work and enthusiasm is recommended for all fashion lovers and those thinking of a career in fashion design.
Confessions of a Shopaholic (2009).
The plot focuses on a young fashion writer who loves beautiful clothes a bit too much. Well, so much she cannot exactly pay off most of them. Confessions of a Shopaholic is an adorable, comedic (and sometimes cringe-worthy) take on life among fabulous clothes for the main protagonist Rebecca Bloomwood (Isla Fisher). Unable to cope with her devastating obsession with shopping and the sudden collapse of her income source, Rebecca Bloomwood accidently gets a writing for a financial magazine job after a drunken letter-mailing mix-up. Paradoxically she had to write about the very consumer caution of which she herself knew nothing, but her innovative comparisons and unconventional fashion and shopping metaphors for economics got her critical acclaim, public success, and the admiration of her supportive boss Luke. In the end she still has to overcome her shopaholic condition and make further choices about her career. The movie is about happiness, honesty, and again, the right choices.
Breakfast at Tiffany's (1961).
A discussion of fashion in the movies would always be incomplete without this iconic fashion movie, a true masterpiece that has no timeframes and is still trendy and classy today. The film's combination of icons Audrey Hepburn, fashion designer Hubert Givenchy, and legendary costume designer Edith Head was a definite recipe for sartorial success. The combined genius of Givenchy and much favored in Hollywood Edith Head resulted not only in Hepburn's elevation to iconic status, but also the ensembles she wore in the film: many of the costumes from Breakfast at Tiffany's are as identifiable as the actress herself. The film continues to influence fashion and beauty today despite the fifty years since its release. Its influence on costume design and upon the concept of "classic style" was a huge incentive for the advertising world to recognize the importance of film.
The September Issue (2009).
The documentary focuses on the September 2007 issue of Vogue magazine, which weighed nearly five pounds, and was the single largest issue of a magazine ever published. With unprecedented access, this film tells the story of legendary Vogue editor in chief Anna Wintour and her large team of editors creating the issue and ruling the world of fashion. Do not confuse thise film the the In Vogue: The Editor's Eye. While the former chronicles the life and works of the people behind the scenes, The September Issue pictures the luxurious and at the same time intense business required in putting together the largest issue of the year. A perfect watch for everyone who thinks that fashion is all about luxury and glitter.
Zoolander (2001).
Ben Stiller takes on the stereotypical life of the "not-too-bright" male model with this typical fashion favorite. Stiller's Derek Zoolander is VH1 three time male model of the year, but when Hansel, his antagonist, winds the award, Derek's world turns upside down. His friends vanish, his father is terribly disappointed with him, and he feels that he should stop his model career since he failed. However, when evil fashion guru Mugatu hires Zoolander, he thinks his life has turned back round again, that is until he finds out that Mugatu has actually brainwashed him to kill the Prime Minister of Malaysia. A fun and easy watch for everyone who loves fashion and the world of modeling.
Bill Cunningham New York (2010).
This documentary film presents a profile of the noted and extraordinarily cheerful veteran New York City fashion photographer. Full of happiness and modest charm, Bill Cunningham New York offers a moving, poignant, mildly humorous portrait of Bill Cunningham. A must-watch for everyone who is into fashion photography.
And what are your favorite fashion movies?
behind the scenesbreakfast at tiffany'sfashionfashion moviesInna Rothmannmoviesmust watch moviesphotographyrunwaysex and the city
20 Style Tips On How To Wear A Blanket Scarf
15 Style Tips On How To Wear Leggings
The 50 Best Disney Movies of the 21st Century (2000-2017)
How to be Hot
7 Signs From a Loved One in Heaven
At one point or another, all of us have experienced...
How To Deal With Your Parents Recent Divorce While In College
All it takes is a phone call from parents or...
What does Ringing in the Ears Mean Spiritually
Have you ever experienced a strange ringing in your ears?...
Best Wedding Wishes And Messages For Cards 2019
How can you frame wedding congratulations on your wedding card...
How to Get Free Makeup From Companies
Figuring out how to get free makeup from companies isn't...
Medium Length Hairstyles We All Want To Copy This Year.
Medium length hairstyles are the ideal lengths for busy ladies...
How To Start Your Own Out-of-This-World Travel Blog in 7 Steps
Blogs are a great way to share your memories. Your...
What Does it Mean When You Dream About Someone? 7,183 comments | by Michelle Keldgord | under Lifestyle
What Does It Mean When You Dream About Your Crush? 5,069 comments | by Nichola Moffat | under Love
What Does It Mean When You Dream About Someone You Don't Know? 2,383 comments | by Courtney Pocock | under Lifestyle
40 Cute Things to Text Your Boyfriend 2,166 comments | by Michelle Keldgord | under Love
What Does It Mean When You Dream About Someone Dying? 1,413 comments | by Courtney Pocock | under Lifestyle
60 Cute Things to Say to Your Crush 1,187 comments | by Courtney Pocock | under Love
Copyright © 2012-2018 Herinterest.com

redpajama_set_name: RedPajamaCommonCrawl


Northern Isles MP, Alistair Carmichael, has warned the Government that their plans to change the system for tax returns requiring small businesses and the self-employed to file online returns four times a year risks becoming an administrative nightmare for already overburdened small businesses.
Mr Carmichael has highlighted Government plans to digitalise the system via free apps and software linked to HMRC. This, he says, could prove problematic given the Government's poor record with digital programmes, but is bound to be particularly bad in the Northern Isles because of the inadequacy of broadband provision.
"These changes by the Government are all done in the name of reducing the bill for tax administration for businesses. Of course that would be welcome but the people most directly affected, the businesses themselves, see things differently. They know best and they should be listened to.
"Orkney and Shetland are home to a range of diverse businesses who already have to overcome challenges in running their operations. These businesses are often a world away from tech-savvy London enterprises who hire hundreds of accountants and enjoy downloading new apps and software. My experience from talking to local businesses in the Northern Isles is that the system of tax administration already provides enough problems. I do not see how adding 3 extra dates for lengthy tax returns will allow our businesses to do what they do best – creating growth in the local economy and providing valuable services for the community.


text:
Bipartisan Group Of Senators Introduce Revenge Porn Bill
(Photo by Drew Angerer/Getty Images)
Eric Lieberman Managing Editor
November 28, 2017 11:13 AM ET
A group of bipartisan senators introduced a bill Tuesday aiming to combat the apparent rise of "revenge pornography."
Known as the Ending Nonconsensual Online User Graphic Harassment (ENOUGH) Act of 2017, the prospective legislation would federally outlaw sharing personal, explicit images of others without proper consent. Prosecutors would have to prove that the accused perpetrator clearly knew that the images were intended to stay private and were shared with the purpose of ultimately causing harm.
The bill would also empower the U.S. Department of Justice by ensuring it is fully equipped to address such privacy violations.
The legislation was officially proposed by Democratic Sens. Kamala Harris of California and Amy Klobuchar of Minnesota, as well as Republican Sen. Richard Burr of North Carolina. The proposal was submitted for consideration alongside Democratic Rep. Jackie Speier of California who introduced her own similar House version of the bill last year.
"Perpetrators of exploitation who seek to humiliate and shame their victims must be held accountable," Harris said in an official statement. "It is long past time for the federal government to take action to give law enforcement the tools they need to crack down on these crimes."
As attorney general of California, Harris spearheaded the prosecution of several revenge porn operators, even while the advent of such acts was (and is) still relatively new, since its prevalence seems to coincide with technology's growth.
Speier's 2016 bill didn't advance through the complete legislative process, but she is now cosponsoring the ENOUGH Act along with Republican Reps. Trey Gowdy of South Carolina, Walter Jones of North Carolina, Tom Rooney of Florida, Ryan Costello and Pat Meehan of Pennsylvania, and Democratic Rep. Katherine Clark of Massachusetts.
"For victims of nonconsensual pornography, technology today makes it possible to destroy a person's life with the click of a button or a tap on a cell phone," said Speier. "The damage caused by these attacks can crush careers, tear apart families, and, in the worst cases, has led to suicide."
In fact, 93 percent of victimized people said they have suffered significant emotional stress, according to the Cyberbullying Research Center. Another 49 percent said they have been stalked or harassed online by users who have viewed the intimate material. One in 25 Americans have been threatened or were direct victims of nonconsensual image sharing, which equals approximately 10 million Americans, another study shows.
"What makes these acts even more despicable is that many predators have gleefully acknowledged that the vast majority of their victims have no way to fight back," stated Speier.
There aren't nearly sufficient enough protections for potential victims of revenge porn, nor any formidable punishments for the perpetrator, according to Speier.
"Even in states that have laws on the books, the average person can't afford to take on these predators in civil courts," she said. "Worse are the numerous victims who have mustered the courage and strength to pursue criminal charges, only to learn there is no law that protects them. The ENOUGH Act will fix this gaping hole in our legal system."
Many diverse organizations and companies — such as Facebook, AT&T, National Association of Police Organizations, the National Network to End Domestic Violence, Feminist Majority, the Family Online Safety Institute, and the Cyber Civil Rights Initiative — have supported the bill. (RELATED: Social Media Site Reveals 300 Anonymous Users' Personal Info To Revenge Porn Victim)
"In a world where smart phones and devises are used to record and transmit every moment in life, it is becoming increasingly important to protect against malicious sharing of private, explicit images," said William Johnson, executive director of the National Association of Police Organizations. "These online privacy violations exponentially and disproportionately target women and minors. While 35 states have enacted statutes in this area, federal intervention is necessary to provide complete and consistent coverage across state lines."
Facebook, which endorsed the legislative effort, has been trying to combat revenge porn. The company announced further steps to purge lewd content from the platform (and the internet) in April by introducing new preventative tools. One helpful feature is "photo-matching technologies to help thwart further attempts to share the image on Facebook, Messenger and Instagram," according to Facebook.
More recently the tech conglomerate started a new experiment where people can preemptively send Facebook officials nude photos for the company to save. The technology would block someone else from uploading the photo, protecting the subject of the image.
People were critical, or at least highly skeptical of the initiative, arguing that increasing the recipients of the intimate images may be counterproductive. For instance, people, including public officials, are already worried about tech companies' utilization of user data.
The test could prove a viable option to effectively combat revenge porn. (RELATED: Facebook Defends Its Revenge Porn-Fighting Program That Requires It To Receive Nudes)
The legislative process naturally takes a long time, so Facebook is proactively trying to engage in virtual battle in the meantime.
Daily Caller News Foundation Chairman Tucker Carlson stated Monday night on his Fox News program that Republican Rep. Joe Barton of Texas is a victim of revenge porn. Barton sent a photo of himself masturbating to a woman he reportedly had a consensual relationship with. An anonymous Twitter user eventually posted the photo, that has now spread across the internet.
"So who's the victim here?" Carlson asked on the show. "If you guessed the 68-year-old man whose five grandchildren can now find naked pictures of him online, you obviously haven't been reading The Washington Post lately."
Follow Eric on Twitter
Send tips to eric@dailycallernewsfoundation.org.
Content created by The Daily Caller News Foundation is available without charge to any eligible news publisher that can provide a large audience. For licensing opportunities of our original content, please contact licensing@dailycallernewsfoundation.org.
Tags : facebook kamala harris pat meehan
Eric Lieberman


Shipping and Returns! If you don't love it, pay no return shipping or restocking fees for online orders. Learn more.
We're sorry. We couldn't complete your trade-in at this time. Continue to complete your order. After checking out, you'll receive info to help you with your trade-in.
You're not done with your old device yet. Trade it in for an AT&T Promotion Card—good for AT&T products and services. Your trade-in information will be submitted along with your order.
Are you sure you want to remove your device trade-in?
When you pick up your device in the store, you can exchange your old device for an AT&T Promotion Card—good for AT&T products and services. Not interested? We'll send you a mailer just in case you change your mind.
It's easy to complete your trade-in online. We'll send your prepaid shipping supplies in 5 to 7 days. Pack and ship your device to receive your AT&T Promotion Card—good for AT&T products and services.
Your trade-in info will be submitted along with your order.
Learn how to get a Moto G6 for free. See offer details.
The moto g play 6th Gen has the features and energy you need to keep going. With the long-lasting1 4000mAh battery and a 5.7" HD+ Max Vision display, you'll enjoy edge-to-edge entertainment.
Watch your entertainment come alive on the edge-to-edge screen.
Never miss a great shot with a camera that focuses as fast as you do.
Unlock your phone with just a touch.
moto g6 play Offer: Limited time. Select locations. Requires new line. Not an upgrade offer. Elig. Devices: Buy moto g6 play ($179.99) on 0% APR AT&T Next (30-mo. at $6.00/mo.) or AT&T Next Every Year (24-mo. at $7.50/mo.). Business customers w/a qual. wireless svc agmt ("Business Agmt") for Corporate Responsibility User lines of svc. can also buy on Equipment Installment Plan (24-mo. at $7.50/mo. or 36-mo. at $5.00/mo.). $0 down for well-qualified credit or down payment may be req'd. Retail price is divided into monthly installments. Tax on full retail price due at sale. After all credits, get moto g6 play for free. Req'd Wireless: Postpaid wireless voice & data service (For consumers: min. $50/mo. for new svc with autopay and paperless bill discount. Pay $60/mo. until discount starts w/in 2 bills. For business customers: min. $50/mo. on AT&T Mobile Share Plus for Business plan for new svc with AutoPay discount; pay min. $60/mo. until discount starts w/in 2 bills. For both: Other qual. plans available. Existing customers can add to elig. current plans.). If you cancel wireless svc, will owe device balance of up to $180. Activation Fee: $30. Return: Return w/in 14 days (w/in 30 days for business customers). Restocking fee up to $45 may apply. Bill Credits: Credits start w/in 3 bills. Applied monthly in equal amounts to device over entire agmt term & will not exceed $180. Wireless line must be active & in good standing for 30 days to qualify. To get all credits, wireless line must remain active, with eligible service, and on agmt for entire term. If you cancel service, upgrade or pay up/off agmt early your credits may cease. Limits: May not be combinable w/other offers, discounts or credits. Purchase, financing & other limits & restr's apply. Participation in this offer may make your wireless account ineligible for select other offers (including select bill credit offers) for a 12 month period. See store for offer details.
GEN. WIRELESS SVC: Subj. to Wireless Customer Agmt (att.com/wca) or to applicable Business Agmt for business customers. Credit approval required. Svcs not for resale. Deposit: May apply. Limits: Purch. & line limits apply. Prices may vary by location. Taxes, fees, monthly, other charges, usage, speed, coverage & other restr's apply per line. See att.com/additionalcharges for details on fees & charges. Promotions, terms & restr's subject to change & may be modified or terminated at any time without notice. International and domestic off-net data may be at 2G speeds. AT&T service is subject to AT&T network management policies. See att.com/broadbandinfo for details.


The July Classroom Management & Mat Chats page is up! If you are a Cornerman member make sure you log in to download your free poster & view the mat chats for the month. There are also links to any coordinating products you may need! Let me know if you have trouble logging in, finding the page or need help with anything.


text:
LCTV Nominated as Best College/University Television Station in the U.S.
LCTV, the student operated television station at Lincoln College, has been nominated for the overall 2022 Best College/University Television Station by the Intercollegiate Broadcasting System (IBS). In addition, the Radio, Television, and New Media program at Lincoln College was also nominated in six additional categories of the IBS annual awards competition, announced on Monday. The awards will be presented in early March at the IBS annual conference, to be held virtually because of the COVID-19 pandemic.
Other institutions competing for the Best College/University Television Station honors are Temple University, Ashland University, Lasell University, Arkansas State University, William Patterson University of New Jersey, and Western Illinois University.
Lincoln College received nominations in the following individual categories:
Best Commercial/Promotion: Guest House Coffee and Pastries; credit to Noah Henry, a senior from Lincoln.
Best Video Play-by-Play Broadcast: Lincoln College vs. Roosevelt CCAC Tournament
Opener, February 2021; credit to Spencer Davis, a sophomore from Emden, and Adam Hoffman of Chatham, a 2021 Lincoln College graduate.
Best Video Sports Program: This Just In; credit to Davis, Hoffman, and Zaknafein Luken, a senior from Lincoln.
Best Radio Sports Play-by-Play (Men's Basketball): Lincoln College vs. Lincoln Christian College, 1/25/21; credit to Davis and Hoffman
Best Press Release: LCTV/WLNX Basketball Press Release; credit to Davis.
Best Show Promotional Poster: Hate is Not Welcome Here; credit to Luken.
"The nomination for Best College/University Television Station represents a remarkable accomplishment, considering that LCTV has existed since only 2016," said Dr. John Malone, Lincoln College Division Chair for Fine Arts and Communication. "Credit goes to the outstanding efforts of our students, particularly our student leader, Zak Luken, whose infectious work ethic and dedication has filtered down to the rest of the staff. Kudos must also be extended to Bud Broyles, who I hired in 2018 to take LCTV to the next level. And, the addition of Jesse Guinn to our television/interactive faculty last year was also a home run."
Overall, IBS received close to 2,000 entries from 77 separate educational institutions nationwide.
Lincoln College launched the baccalaureate program in Radio, Television, and New Media in 2016. The program has been recognized each year by both IBS and the Illinois Broadcasters Association for student achievements in media. Approximately 30 students are enrolled in the program. For more information, prospective students can reach Dr. Malone at [email protected] or by calling (217) 735-7288. Talent based scholarships are available.


text:
Q: function only runs when I type slowly I am trying to determine how long a key is pressed when you are typing.
here is my javascript:
var keyDownTimer = 0;
var keyUpTimer = 0;
var keyPressedCounter = 0;
var dt;
var keyDownDisplay = document.getElementById("keyDownTimer");
var keyPressedDisplay = document.getElementById("keyPressed");
keyDownDisplay.innerHTML = keyDownTimer;
keyPressedDisplay.innerHTML = keyPressedCounter;
function keypressed(){
keyPressedCounter++;
  keyPressedDisplay.innerHTML = keyPressedCounter;
}
function keydown(){
  dt = setInterval(addDownTime, 1);
}
function addDownTime(){
  keyDownTimer++;
  keyDownDisplay.innerHTML = keyDownTimer/1000;
}
function keyup(){
  clearInterval(dt);
}

and my html

<input id="textBox" type="text" onkeyup="keyup()" onkeydown="keydown()" onkeypress="keypressed()">

as I am typing in the text box, everything works correctly, but then for some reason, the keyDownTimer just starts to run, as if keydown() won't run.
I know my code is a little hard to read, but I'm pretty sure that its correct. and that it should run properly. typing slowly seems to help the problem for a little bit, but it still ends up running infinity.
Any help would be appreciated. and if you could explain why its doing what its doing, that would be great.

A: You're replacing your dt variable, which references many intervals.
The issue is when you press multiple keys down at the same time, the first key down's dt is replaced with the second and so on.
Try this:
var dt = 0;
...
function keydown(){
  if(dt == 0){
    dt = setInterval(addDownTime, 1);
  }
}
function addDownTime(){
  keyDownTimer++;
  keyDownDisplay.innerHTML = keyDownTimer/1000;
}
function keyup(){
  clearInterval(dt);
  dt = 0;
}

redpajama_set_name: RedPajamaStackExchange


text:
Kirundo é uma província do Burundi. Sua capital é a cidade de Kirundo.

Comunas
Kirundo está dividida em 7 comunas:
 Bugabira
 Busoni
 Bwambarangwe
 Gitobe
 Kirundo
 Ntega
 Vumbi

Demografia

Províncias do Burundi

redpajama_set_name: RedPajamaWikipedia


theIRapp® is a turn-key investor relations app that allows publicly traded companies to optimize their IR content for iPhone, iPad and Android mobile devices. In only a few weeks and simply by providing a ticker symbol and logo, any publicly traded company can have their own IR app available on Apple's App Store and Google Play and provide investors throughout the world with investor relations information including stock related data and company communications such as presentations, videos, audiocast conference calls, fact sheets and marketing collateral.
For more information on theIRapp, click here.


We can't think of any better way to end a long day of work than to walk through the doors of a clean and tidy home. Not only does it make your home feel more comfortable and welcoming, it also gives you peace of mind because you don't have to do the cleaning after working hard and that helps you relax without worry. There are many types of cleaning services available for you to choose from, so be sure to use this guide to determine how much a particular cleaning service may cost you and what to expect from each service.
If you've never hired professional cleaning services before, you may be wondering a few things like what types of services are normally offered, what types of services are offered for additional charges, and how much cleaning services cost. In this cost guide, you'll find your answers.
Some cleaning companies charge by the hour while others charge by the square footage of your home or office. If you decide to get recurring cleaning services, you may find that you can get a package deal that may lower the overall cost.
When it comes to keeping your home clean and tidy, sometimes you need a little help. If you have kids, pets, or work long days, hiring a professional cleaning service to keep your home spotless is a wonderful idea.
• For a one-time cleaning, expect to pay an average of $135-170 for a two-bedroom, 900 square-foot apartment. For a single-story house that's about 1,300 square feet, the cost averages $170-$200.
• If you want recurring cleanings, a bi-weekly service for a 900 square-foot apartment will cost about $90 and $270 for a house that has 1,300 square feet.
• Most recurring cleaning services take 2-3 hours per visit.
You can talk to your cleaning service provider to see which services are including in the base price and which may require additional cost. Ask questions if you are unclear on a particular service.
Not all maid services charge the same amount to clean your home, so be sure to get a few different estimates from different service providers to find one that will fit your budget. Some companies charge by the hour, some by the number of rooms, and some by the square footage.
The average cost for a move out cleaning service is $200 for a home that's 1,000 square feet (1). The price could be more or less depending on the size of your home.
Windows are generally charged as a separate service - usually around $3-$5 per window - and if there are windows on multiple stories, the price for window cleaning increases. Another service that will most likely be charged separately is buffing and waxing floors, which generally costs around $300 on average. If your HVAC ducts need to be cleaned, that will be another additional charge of $330 on average.
Having a professional clean your office or commercial space is absolutely necessary, whether you have two employees or two hundred. Nobody wants to stay overtime only to vacuum and take out the trash. For a smaller office with only a few employees, you probably only need a basic office cleaning service - vacuuming and emptying trash - where a professional comes in once or twice a week. This type of service can cost $100-$200 a month. For a professional to come in every night to perform a basic office cleaning service, expect to pay around $500-$700 per month (2).
For larger offices that require more than a basic cleaning service, most companies charge by the square footage of the space, generally around 5 cents to 50 cents or more per square foot. If you need to have your carpets cleaned, expect an additional charge of $30 an hour on average. Some companies will also offer appliance cleaning services for an additional charge as well, usually around $10-$30 per appliance.
• Vacuum your rug at a slow, steady pace for optimum cleaning.
• Be sure to vacuum the corners of your rug where dust has a tendency to pile up.
• High traffic areas (like hallways) and areas where pets spend most of their time should be vacuumed every day.
• Areas with a medium amount of traffic should be vacuumed twice a week.
• Rooms and areas with the lowest amount of traffic only need to be vacuumed about once a week.
If vacuuming isn't enough to keep your rug looking stunning, having a professional provide you with reliable rug cleaning services can be a lifesaver. Whether you have an ornate Oriental rug, a precious family heirloom rug, or a sleek and modern area rug, getting it professionally cleaned will maintain its durability and remove any stains, blemishes, or deep-set dirt and grime.
As far as the cost for getting your area rug cleaned, prices vary based on the rug's size. Most companies will charge per square foot. For a basic service that includes vacuuming and steam washing, expect to pay $2-$5 per square foot, which, for a standard 8'x10' area rug, is about $160-$400 (4). If you have a delicate rug that needs to be washed by hand and hung dry, the cost increases to roughly $4-$8 per square foot.
When you love having upholstered furniture in your home, you know how expensive it can be to buy new pieces. Most of the time, people buy new upholstered pieces because the old ones look grimy and dirty but are otherwise in good condition. Upholstery cleaning services can save your favorite furniture without a hefty price tag. This is especially great if you have an antique piece of upholstered furniture that is special to you or unable to be replaced.
While there are many DIY solutions to cleaning upholstered furniture (5), sometimes you need the help of a seasoned expert. An upholstery cleaning professional will thoroughly inspect your furniture first in order to determine what type of products and methods to use. The type and size of the furniture will determine the cost of the cleaning service (https://www.fixr.com/costs/furniture-upholstery-cleaning).
• For sofas, expect to pay anywhere from $80-$120 depending on the size.
• Loveseats cost less than sofas, at approximately $50-$60. If your loveseat has a recliner, an additional charge of $20-$30 will most likely be added on.
• Armchairs and dining chairs cost roughly the same amount. Armchairs cost $30-$40 while dining chairs cost $35-$45.
Kraft, Ryan. "How Much Does Move Out Cleaning Cost?. Moving Guru. Retrieved 24 July 2017.
"Office Cleaning Cost". CostHelper Small Business. Retrieved 24 July 2017.
"Vacuuming 101". The Carpet and Rug Institute. Retrieved 25 July 2017.
"Rug Cleaning Cost". Fixr.com. Retrieved 25 July 2017.
"Upholstery Cleaning and Stain Removal Tips". Mrs. Clean. Retrieved 25 July 2017.


Hello All. Working on renovation of banquet hall lighting. Total of 9 rows, with 15 fixtures each row(4 bulb 40w fluor.) Each row of 15 will be on own circuit & switch. 2400W per row. Service is 3ph. 120/208Y. 2400/120=20amps X 125%(continuous load)=25A. SO...30A breaker on #10THHN should work BUT if every 3 circuits share neutral, and all circuits are the same(balanced), what current will my neutral carry? And should I upsize each branch circuit neutral do to harmonics?
Are you sure the fixtures are 4x40watt? Or did you take the info from the ballast?
Reason I mention it is most T-8, 4 lamp ballasts are under 1 amp @ 120 volts (<120 watts) which will bring your numbers down substantially.
Electronic ballasts have a 'THD' (total harmonic distortion) percentage on the label, which you will need to do the calcs.
Steve Fehr is the EE on site, & I'm sure he has a equation..
A basic 'rule of thumb', IMHO would be #8 neutral with your numbers.
Genral lighting circuits it should not be more than 20 amp per circuit.
The THD percenetage it should be on the ballast for most electronic ballast IIRC they are either <20% or 10% one of the two if latter it will be not too bad but former yah you will have issue with netural conductor.
as far for sizing on netural conductor yeah go with #8 if long runs.
I will wait for Steve to see if he have more tibbits to add in here.
Sorry, guys, I don't have a magic equation and, actually, I don't work much with lights either. I am familiar with the issues, though. The problem with high-THD devices like ballasts and switched DC power supplies is that you can throw your 3-phase neutral theory out the window.
Traditionally, the current on a balanced 3-phase circuit will cancel completely, leaving virtually no current on the neutral. So, we plan only for the unbalanced load, sometimes even putting in smaller neutrals. Switched power supplies, however, work differently. They basically lop off the peak of each phase in turn, and turn our nice pretty sine waves into square waves. So instead of ending up with sin-wave shaped current on the neutral, we end up with a giant square wave that's all peak and no trough. (If you looked at the neutral current on an unfiltered power supply, you'd see it as a 180Hz square wave on the neutral.) Ampacities are rated by RMS current, and rule-of-tumb power RMS assumes a sine wave. For square waves, however, RMS = peak, and is about 1.4x higher. There's some other voodoo goes into it, but the max theoretical current on a 3-phase neutral is somewhere around 167% IIRC.
If these were computer racks with filtered switched DC power supplies, I'd convert watts to amps using the manufacturer's (or measured) power factor and call it a day. The filters on modern server power supplies *usually* compensate for the harmonics to the point where it's still a reasouable facscimile of a sine wave going out the back and neutral current is less than line current (which makes doubling the neutral unnecessary). If the ballasts are unfiltered, though, the easiest way to deal with it is to double the neutral. Make sure to account for the neutral when calculating voltage drop, too.
Thanks, I missed the 30 amp cb, guess I stopped reading at the CD calc.
BTW, is this job already installed? You can get all the info you need off of the ballast label, wattage, amps, voltage, THD, etc.
You have started off with a basic error. Bulb wattage is irrelevant.
Instead, look at the ballasts. The current marked on the ballast is the figure you use for your load calculations. Also look at the ballast for the 'power factor.' While 'power factor' is technically different from 'harmonic distortion,' it still seems to work out that ballasts with high power factors (greater than .93) typically do not have harmonic issues - even if the fixtures have lables warning of the risk.
The other 'ace in the hole' that you have is that the NEC understates the ampacity of #14, #12, and #10 wire. This means that your neutral is already slightly oversized ... I'd use #10 on a 30A circuit without fear.
For a final check, hook up one string of lights. Measure your amp draw (on the neutral) two ways: with a 'normal' meter, and with a "True RMS" meter. If the readings differ by more than 15%, you need to take harmonics into consideration. Less than 12%, you can disregard the issue.
Be careful, your installation may have a code violation. Fluorescent luminaires are typically not allowed on 30 amp circuits. You need to verify that your lampholders are rated greater than 750 watts. NEC Section 210.23(B) states that to be used on a 30 amp circuit, a lampholder must be of the heavy-duty type. NEC Section 210.21(A) states that in order to be a heavy-duty type, a lampholder that is not of the admedium type needs to be rated not less than 750 watts and most fluorescent lampholders are not rated this high.
If the ballasts are unfiltered, though, the easiest way to deal with it is to double the neutral. Make sure to account for the neutral when calculating voltage drop, too.
the red trace is the voltage, and the purple trace is the current into a switching power supply (as the power supply's load changes, the current spike tallness changes as well). Note that the current is zero most of the time (2/3 of the cycle or more), and large spikes occur at the time of the peaks of the voltage waveform. This shows only one phase. Now think of the next phase, and the timing of the spikes on that phase happens during the zero current period of time on the 1st phase. Likewise on the 3rd phase. None of the current spikes on the 3 phases overlap in terms of time, and thus the neutral gets hammered with current spikes 6 times per 60Hz cycle, while one hot phase wire only sees 2 current spikes per 60Hz cycle. Thus the need for a heavy neutral wire.


text:
// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/**
* @name: S13.2.1_A4_T2;
* @section: 13.2.1;
* @assertion: Objects as arguments are passed by reference;
* @description: Adding new string property to a function argument within the function body,
* where explicit argument is an object defined with "__obj={}";
*/

function __func(__arg){
    __arg.foo="whiskey gogo";
}

__obj={};

__func(__obj);

//////////////////////////////////////////////////////////////////////////////
//CHECK#1
if (__obj.foo !== "whiskey gogo") {
	$ERROR('#1: __obj.foo === "whiskey gogo". Actual: __obj.foo ==='+__obj.foo);
}
//
//////////////////////////////////////////////////////////////////////////////


text:
Why electing Lisa Blunt Rochester to Congress matters
Delaware Voice: Valerie Longhurst and Gretchen Bauer
Lisa Blunt Rochester entered the race for Delaware's single seat in the U.S. House to build upon her service to the people of this state over the past 30 years. The mother of two, she has an impressively long list of accomplishments in public service, having been a Delaware secretary of labor, deputy secretary of health and human services, state personnel director and CEO of the Metropolitan Wilmington Urban League. She has had many successes, but her decision to run for Congress was also shaped by tragedy. The death of her husband in 2014 left her soul searching for the next contribution she should make to society. And still Lisa's platform and reasons for running for Congress have everything to do with substance and not symbolism.
As longtime observers of women in politics, it is difficult for us not to recognize the history potentially in the making with Lisa's candidacy. Delaware is one of only three states in the United States never to have been represented in the U.S. Congress by a woman. Delaware is one of nearly half of the states in the country never to have elected an African-American woman or man to the House of Representatives. Should Lisa be elected in November, this major milestone would grant her national influence and place Delaware in the national spotlight.
Around the world, women are accessing national legislatures in a manner not yet seen in the United States. The country that leads the world in women's representation in a national legislature today is the tiny East African nation of Rwanda with 64 percent women in its Chamber of Deputies. Fourteen countries have more than 40 percent women in their national legislatures and 46 countries have more than 30 percent women. The United States, meanwhile, lags substantially behind about half the world's countries with only 19 percent women in the House and 20 percent women in the Senate in 2016. In the worldwide rankings, we are 96th out of 185.
Perspective, life experience and heart matter most in Congress
Why bring more women (or other marginalized groups) into our national legislature anyway? Scholars measure impact in terms of substantive representation and symbolic representation effects. The first refers to legislative accomplishments – influencing policy agendas behind the scenes and passing laws; the second refers to developments outside the legislature – changing people's attitudes towards women in elected office, encouraging more women to become politically engaged, and so on. As for substantive representation, women legislators generally are more likely to champion the interests and concerns of women with an urgency derived from personal experience. In the US we have seen women lawmakers be more collaborative than men in their approach to lawmaking, as was illustrated during the 2013 government shutdown when female senators were credited with orchestrating a bipartisan solution. Symbolic representation is also important: Elections that bring more women into political office help counteract fears of young women who may think they are limited by their gender.
For some of us, justice and diversity are powerful reasons why more women should have greater access to Congress and political leadership. In a country where just over 50 percent of the population are women, it is unfair for men to monopolize political power. It is also critical that our parties and voters elect legislatures that are more representative and more inclusive of the nation's population as a whole.
Some people would like to argue that there is a trade-off between gender and qualifications. Fortunately, Lisa – and many other women like her – make that debate moot: Lisa's experience, qualifications and ability to engage others stand out among the candidates in the race.
It is long past time that Delaware send a woman to Congress. With our help, Lisa Blunt Rochester is in a perfect position to move Delaware forward on Sept. 13.
Gretchen Bauer is a professor of political science and international relations at the University of Delaware. Valerie Longhurst is the majority leader of the Delaware House of Representatives.


At Southern Plus, our range of in-home health and wellness services help you to remain independent and stay living in the place you love most – home. If you're an older person who wants to continue living at home, but you need some support to do so, then home care services may be the perfect solution for you.
The Australian Government have funding available to eligible people who may need support at home. Find out more about funding options such as the Home Care Package Program and Commonwealth Home Support Program.
Which Home Care Solution Suits My Needs?
Free in-home assessments are available by our friendly care advisors to find out which Home Care Bundle is right for you.
How do I get started with a government-funded Home Care Package?
The first step to getting a Home Care Package is to contact My Aged Care (the national entry point to Australia's aged care system) by calling 1800 200 422. You will be asked questions over the phone to help work out your needs and care arrangements.
My Aged Care will refer you to an Aged Care Assessment Team (ACAT) team who will arrange a time to complete a free in-home assessment to identify your care needs. Assessments by ACAT's are funded by the Government and do not cost you anything.
You will receive a letter of approval to let you know whether you are eligible and approved to receive a Home Care Package, and at what level. You will be placed in the national queue and once a suitable package becomes available to you, you will be notified by mail.
While you are waiting in the queue, it is recommended you start researching approved home care providers to understand how they can meet your care needs. Southern Plus is an accredited services provider, offering a range of services including allied health (i.e. Physiotherapy, podiatry), clinical care and traditional home care services such as personal care, domestic care, transport, medication support and respite.
When you reach the top of the national queue, you will receive a letter with details of your Home Care Package. Once you have chosen a home care provider that best suits your needs, they can provide you with a Home Care Agreement.
If you have selected Southern Plus as your provider, contact our friendly care advisors on 1300 000 161 to arrange a time for a care worker to visit you at home to discuss your individual home care needs. Our trained and qualified staff will work with you, and your family, to identify your individual needs, goals and aspirations. We will then create personalised care and support plan including the services you need to live better in your own home.


The Matrice 210 drone was designed with industrial users in mind. 17 inch propellers, paired with dual TB55 batteries give this drone up to 38 minutes of flight time. With the IP43 rating and self-heating batteries, this is a true workhorse, ready for rain or sub-freezing temperatures.
The Matrice 210 includes the ability to have two downward facing gimbals and one upward. This gives users the ability to run two cameras at once, or one camera on top to inspect underneath objects.
Cameras are not included, shown for reference.


text:
USRC Scammel or sometimes referred to as Scammel II was a Revenue Cutter built in 1798 to serve in the Quasi-War with France. After completion she was transferred to the U.S. Navy and served in the West Indies naval squadron commanded by Commodore John Barry. She assisted the sloop  in the capture of the French ship Hussar. After the war, the Navy retained Scammel until it was sold in 1801.

References

Ships of the United States Revenue Cutter Service
1798 ships


text:
OHL prospects put skills on display at U16 OHL Gold Cup
OHL Gold Cup Prospects
Ontario's top young prospects are suiting up for their respective minor hockey associations at the 2018 OHL Gold Cup taking place at the Activa Sportsplex in Kitchener this weekend.
Of the 160 players competing at the event, 130 were chosen in April's OHL Priority Selection, representing approximately 81% of the young athletes taking the ice at the annual event that runs from Thursday through Sunday.
44 players from the 2017 OHL Gold Cup were invited to the Hockey Canada Under-17 National Camp, with 23 players from the event cracking Team Canada White, Red and Black rosters last November.
Brad McEwen, Hockey Canada's head scout for the men's Program of Excellence, will lead player selection for both the summer camp and three national Under-17 teams, with assistance from regional scouts that include Ontario's Darrell Woodley and Barclay Branch.
The Ottawa 67's lead the way with 10 prospects competing in the annual showcase while the Peterborough Petes and Sudbury Wolves trail close behind with nine each.
A total of 19 first round selections will compete, including first overall pick Quinton Byfield (Sudbury Wolves), second overall pick Evan Vierling (Flint Firebirds) and third overall pick Will Cuylle (Peterborough Petes).
Exceptional performances at past OHL Gold Cup tournaments have provided a glimpse of what a player is capable of further on in his career. Several future OHL standouts have made strong impressions at the event.
2014 OHL Gold Cup top scorer William Bitten enjoyed a solid campaign with the Hamilton Bulldogs this past season. The seventh overall pick in the 2014 OHL Priority Selection, Bitten scored six goals, five assists and 11 points in five games for Team HEO in the 2014 OHL Gold Cup. Currently competing in the Rogers OHL Championship Series, Bitten registered 20 goals, 44 assists and 64 points in 62 games with Hamilton this past season.
Erie Otters forward Kyle Maksimovich enjoyed a successful 2014 OHL Gold Cup, finishing the tournament with four goals, three assists and seven points in five games. The Toronto Marlboros Minor Midget graduate provided Team GTHL Blue with a timely overtime winner in the tournament as he helped lead his team to a second place finish. Maksimovich led the Otters in scoring this past season, scoring 31 goals, 35 assists and 66 points in 65 games.
The 2015 OHL Gold Cup showcased a pair of talented present day OHL stars. 2018 draft eligible defenceman Evan Bouchard (London Knights) led the tournament in scoring with 11 points (5-6–11) in five games, six of which came in Team OMHA White's final game of the tournament. Talented Los Angeles Kings prospect Gabriel Vilardi (Kingston Frontenacs) and speedy centre Brett Neumann (Kingston Frontenacs) were also top performers, each registering nine points in the showcase. Goaltender Jake McGrath (Sudbury Wolves) would backstop Team GTHL Blue to a 6-2 Championship Final victory over Team ALLIANCE.
Team GTHL Blue was crowned OHL Gold Cup Champions for the second straight year in 2016, taking a 6-1 win over Team ALLIANCE in the Championship Final. Akil Thomas (Niagara IceDogs) led the way with two goals and an assist while Riley Damiani (Kitchener Rangers) pitched in with a pair of assists. Thomas led the 2016 event in scoring with 11 points including six goals and five assists in five contests. Fellow first round OHL Priority Selection choice Allan McShane (Oshawa Generals) finished second in tournament scoring with nine points (6-3–9) while 2017 first overall pick Ryan Merkley (Guelph Storm) led all defencemen with eight points (1-7–8). In goal, OMHA Black goaltender Blair Coffin (Sarnia Sting) led netminders with a 0.81 goals-against average and a .969 save percentage over 147 minutes played.
GTHL Red won it all in last year's OHL Gold Cup. OHL Cup Champion Jamieson Rees (Sarnia Sting) scored the game winner, leading his club to victory over OMHA Black by a score of 3-1. Philip Tomasino (Niagara IceDogs) of GTHL Blue led the tournament in scoring with 10 points while teammate Nicholas Porco (Saginaw Spirit) came in second with eight. In goal, Kingston Frontenacs prospect Ryan Dugas of GTHL Red led all netminders with three wins and was among the event leaders in goals-against average (1.67) and save percentage (.934).
The GTHL looks to win its fourth straight title this year when the event gets underway on Thursday afternoon.
PAST RESULTS:
YEAR CHAMPION FINALIST LEADING SCORER
2017 GTHL Red OMHA Black Philip Tomasino (GTHL Blue)
2016 GTHL Blue ALLIANCE Akil Thomas (GTHL Blue)
2015 GTHL Blue ALLIANCE Evan Bouchard (OMHA White)
2014 OMHA White GTHL Blue Will Bitten (HEO)
2013 ODHA GTHL Royal Ian Johnston (ODHA)
COMPLETE SCHEDULE: ohlgoldcup.com
FULL ROSTERS: ALLIANCE, GTHL BLUE, GTHL RED, HEO, HNO, NOHA, OMHA WHITE, OMHA BLACK
Live streaming available at hockeytv.com.
For more information, please visit www.ohlgoldcup.com or follow on Twitter at www.twitter.com/OHLGoldCup.
About the OHL Gold Cup
The OHL Gold Cup is an annual showcase event featuring top under-16 talent in Ontario. As part of the Hockey Canada Program of Excellence, select players from the OHL Gold Cup will be invited to attend the National Under-17 Selection Camp, where they will have a chance to compete with other top talent from across Canada, to earn a spot at the World Under-17 Hockey Challenge.


We value your opinion and rely on your feedback to continually improve our products and service.
It will take just a few minutes of your time to fill in and return our feedback form to us.
Büchi-Serial / order / part no.
I agree to the use of my personal data of Büchi AG or the respective distributor for contacting me by e-mail, phone or letter. I can withdraw this agreement to Büchi AG at any time.


From time to time I had the feelings in other places that something was missing, or something new was added, but is it possible that some decor is not loading from time to time ?
Image A) the shed was empty and only the gun on floor, Image B) came back to see tras pile, newspaper etc.
A lot more objects are missing in the screenshot if you compare it to this: http://puu.sh/jw23C/e627d124a2.jpg This is an issue with the subsectors not loading in when you spawn in them, we're working on this.


McDonalds is known for serving up some of the most processed, most fake Fast Food there is. I have always felt that their pies scream this fact. There is no way that you are getting two good pieces of pie for only $1. No way. Sorry. Not going to happen. Because of this fact (and the fact that I just don't really dig McDonalds), I have never in the past tried one of their pies. From the other food blogs that I read, I see that McDonalds offers different seasonal pies. I don't recall if I have ever seen these offerings at my local McDonalds but, came across the Holiday Pie while in Blairsville.
We drove by McDonalds after dinner one evening to get a coffee. While in line, my grandfather decided to order some Holiday Pies. After some confusion with the McDonalds staff, we ended up with 6 of these suckers. I decided that I might as well try one out so I could review it for my loyal followers. I am somewhat disappointed to say that I think I may have actually, quite possibly, enjoyed this Holiday Pie. Every healthy bone in my body says I shouldn't have but, I think I did.
The Holiday Pie is served up warm and in the signature pie box. At first look, the Holiday Pie resembles a sugar cookie with colorful sprinkles baked right in. I broke the Holiday Pie in half and found that the outside was baked while the inside seemed to have a gooey center. The Holiday Pie had scents of sugar cookies and yellow cake and I was somewhat giddy in anticipation of trying not only my first McDonalds pie but my first Holiday Pie. I broke a bite size piece off for my first bite and began to chew. The baked shell mixed well with the soft, gooey center of the pie. Overall, the taste was much closer to an extremely processed yellow cake then an extremely processed sugar cookie. Fake sweetener was the most relevant flavor in the bite of pie. I felt like I needed more so I continued to eat.
Most of the flavor of the pie comes from the gooey interior. The interior is similar to yellow cake mix before you bake it but a bit thicker. While the flavor tastes similar to yellow cake, it is 100x sweeter. I cannot properly describe just how sweet the gooey interior is. Luckily, the baked outside does not have nearly the sweet flavor and does a good job of balancing out the sweetness and giving you the processed flavor. The baked exterior does not really have any stand-out flavors on its own. I was impressed by the fact that the exterior was equally baked throughout the entire pie. It is not to the point of being crispy but there is a gentle crunch within the exterior. I don't know if I can fairly give this an overall rating. Something must have come over me as I was eating it which made me think it was just really good.
Processed Holiday Joy is the best way I can describe this Holiday Pie. Never would you think that this pie was homemade or made with real sugar. I ended up eating the entire Holiday Pie and was amazed that I was not left with any fake tastes in my mouth. I did end up with a horrible stomach ache in the end – I'm sure because I had just consumed my monthly allowance of sugar in one small Holiday Pie. All of this sugar surely influenced me while eating it because I just really enjoyed the Holiday Pie. Thinking about it now, I am kinda grossed out by it and don't really see myself ever eating another. But for those few minutes of eating my first Holiday Pie, I was in pure bliss.