text:
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

using System.Collections.Generic;
using System.Diagnostics;
using System.Threading.Tasks;

namespace System.Threading.Channels
{
    /// Provides a channel with a bounded capacity.
    [DebuggerDisplay("Items={ItemsCountForDebugger}, Capacity={_bufferedCapacity}, Mode={_mode}, Closed={ChannelIsClosedForDebugger}")]
    [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))]
    internal sealed class BoundedChannel<T> : Channel<T>, IDebugEnumerable<T>
    {
        /// The mode used when the channel hits its bound.
        private readonly BoundedChannelFullMode _mode;
        /// Task signaled when the channel has completed.
        private readonly TaskCompletionSource<VoidResult> _completion;
        /// The maximum capacity of the channel.
        private readonly int _bufferedCapacity;
        /// Items currently stored in the channel waiting to be read.
        private readonly Deque<T> _items = new Deque<T>();
        /// Readers waiting to read from the channel.
        private readonly Deque<AsyncOperation<T>> _blockedReaders = new Deque<AsyncOperation<T>>();
        /// Writers waiting to write to the channel.
        private readonly Deque<VoidAsyncOperationWithData<T>> _blockedWriters = new Deque<VoidAsyncOperationWithData<T>>();
        /// Linked list of WaitToReadAsync waiters.
        private AsyncOperation<bool> _waitingReadersTail;
        /// Linked list of WaitToWriteAsync waiters.
        private AsyncOperation<bool> _waitingWritersTail;
        /// Whether to force continuations to be executed asynchronously from producer writes.
        private readonly bool _runContinuationsAsynchronously;
        /// Set to non-null once Complete has been called.
        private Exception _doneWriting;
        /// Gets an object used to synchronize all state on the instance.
        private object SyncObj => _items;

        /// Initializes the <see cref="BoundedChannel{T}"/>.
        /// <param name="bufferedCapacity">The positive bounded capacity for the channel.</param>
        /// <param name="mode">The mode used when writing to a full channel.</param>
        /// <param name="runContinuationsAsynchronously">Whether to force continuations to be executed asynchronously.</param>
        internal BoundedChannel(int bufferedCapacity, BoundedChannelFullMode mode, bool runContinuationsAsynchronously)
        {
            Debug.Assert(bufferedCapacity > 0);
            _bufferedCapacity = bufferedCapacity;
            _mode = mode;
            _runContinuationsAsynchronously = runContinuationsAsynchronously;
            _completion = new TaskCompletionSource<VoidResult>(runContinuationsAsynchronously ? TaskCreationOptions.RunContinuationsAsynchronously : TaskCreationOptions.None);
            Reader = new BoundedChannelReader(this);
            Writer = new BoundedChannelWriter(this);
        }

        [DebuggerDisplay("Items={ItemsCountForDebugger}")]
        [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))]
        private sealed class BoundedChannelReader : ChannelReader<T>, IDebugEnumerable<T>
        {
            internal readonly BoundedChannel<T> _parent;
            private readonly AsyncOperation<T> _readerSingleton;
            private readonly AsyncOperation<bool> _waiterSingleton;

            internal BoundedChannelReader(BoundedChannel<T> parent)
            {
                _parent = parent;
                _readerSingleton = new AsyncOperation<T>(parent._runContinuationsAsynchronously, pooled: true);
                _waiterSingleton = new AsyncOperation<bool>(parent._runContinuationsAsynchronously, pooled: true);
            }

            public override Task Completion => _parent._completion.Task;

            public override bool TryRead(out T item)
            {
                BoundedChannel<T> parent = _parent;
                lock (parent.SyncObj)
                {
                    parent.AssertInvariants();

                    // Get an item if there is one.
                    if (!parent._items.IsEmpty)
                    {
                        item = DequeueItemAndPostProcess();
                        return true;
                    }
                }

                item = default;
                return false;
            }

            public override ValueTask<T> ReadAsync(CancellationToken cancellationToken)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return new ValueTask<T>(Task.FromCanceled<T>(cancellationToken));
                }

                BoundedChannel<T> parent = _parent;
                lock (parent.SyncObj)
                {
                    parent.AssertInvariants();

                    // If there are any items, hand one back.
                    if (!parent._items.IsEmpty)
                    {
                        return new ValueTask<T>(DequeueItemAndPostProcess());
                    }

                    // There weren't any items.  If we're done writing so that there
                    // will never be more items, fail.
                    if (parent._doneWriting != null)
                    {
                        return ChannelUtilities.GetInvalidCompletionValueTask<T>(parent._doneWriting);
                    }

                    // If we're able to use the singleton reader, do so.
                    if (!cancellationToken.CanBeCanceled)
                    {
                        AsyncOperation<T> singleton = _readerSingleton;
                        if (singleton.TryOwnAndReset())
                        {
                            parent._blockedReaders.EnqueueTail(singleton);
                            return singleton.ValueTaskOfT;
                        }
                    }

                    // Otherwise, queue the reader.
                    var reader = new AsyncOperation<T>(parent._runContinuationsAsynchronously, cancellationToken);
                    parent._blockedReaders.EnqueueTail(reader);
                    return reader.ValueTaskOfT;
                }
            }

            public override ValueTask<bool> WaitToReadAsync(CancellationToken cancellationToken)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken));
                }

                BoundedChannel<T> parent = _parent;
                lock (parent.SyncObj)
                {
                    parent.AssertInvariants();

                    // If there are any items available, a read is possible.
                    if (!parent._items.IsEmpty)
                    {
                        return new ValueTask<bool>(true);
                    }

                    // There were no items available, so if we're done writing, a read will never be possible.
                    if (parent._doneWriting != null)
                    {
                        return parent._doneWriting != ChannelUtilities.s_doneWritingSentinel ?
                            new ValueTask<bool>(Task.FromException<bool>(parent._doneWriting)) :
                            default;
                    }

                    // There were no items available, but there could be in the future, so ensure
                    // there's a blocked reader task and return it.

                    // If we're able to use the singleton waiter, do so.
                    if (!cancellationToken.CanBeCanceled)
                    {
                        AsyncOperation<bool> singleton = _waiterSingleton;
                        if (singleton.TryOwnAndReset())
                        {
                            ChannelUtilities.QueueWaiter(ref parent._waitingReadersTail, singleton);
                            return singleton.ValueTaskOfT;
                        }
                    }

                    // Otherwise, queue a reader.
                    var waiter = new AsyncOperation<bool>(parent._runContinuationsAsynchronously, cancellationToken);
                    ChannelUtilities.QueueWaiter(ref _parent._waitingReadersTail, waiter);
                    return waiter.ValueTaskOfT;
                }
            }

            /// Dequeues an item, and then fixes up our state around writers and completion.
            /// <returns>The dequeued item.</returns>
            private T DequeueItemAndPostProcess()
            {
                BoundedChannel<T> parent = _parent;
                Debug.Assert(Monitor.IsEntered(parent.SyncObj));

                // Dequeue an item.
                T item = parent._items.DequeueHead();

                if (parent._doneWriting != null)
                {
                    // We're done writing, so if we're now empty, complete the channel.
                    if (parent._items.IsEmpty)
                    {
                        ChannelUtilities.Complete(parent._completion, parent._doneWriting);
                    }
                }
                else
                {
                    // If there are any writers blocked, there's now room for at least one
                    // to be promoted to have its item moved into the items queue.  We need
                    // to loop while trying to complete the writer in order to find one that
                    // hasn't yet been canceled (canceled writers transition to canceled but
                    // remain in the physical queue).
                    //
                    // (It's possible for _doneWriting to be non-null due to Complete
                    // having been called but for there to still be blocked/waiting writers.
                    // This is a temporary condition, after which Complete has set _doneWriting
                    // and then exited the lock; at that point it'll proceed to clean this up,
                    // so we just ignore them.)

                    while (!parent._blockedWriters.IsEmpty)
                    {
                        VoidAsyncOperationWithData<T> w = parent._blockedWriters.DequeueHead();
                        if (w.TrySetResult(default))
                        {
                            parent._items.EnqueueTail(w.Item);
                            return item;
                        }
                    }

                    // There was no blocked writer, so see if there's a WaitToWriteAsync
                    // we should wake up.
                    ChannelUtilities.WakeUpWaiters(ref parent._waitingWritersTail, result: true);
                }

                // Return the item
                return item;
            }

            /// Gets the number of items in the channel. This should only be used by the debugger.
            private int ItemsCountForDebugger => _parent._items.Count;

            /// Gets an enumerator the debugger can use to show the contents of the channel.
            IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() => _parent._items.GetEnumerator();
        }

        [DebuggerDisplay("Items={ItemsCountForDebugger}, Capacity={CapacityForDebugger}")]
        [DebuggerTypeProxy(typeof(DebugEnumeratorDebugView<>))]
        private sealed class BoundedChannelWriter : ChannelWriter<T>, IDebugEnumerable<T>
        {
            internal readonly BoundedChannel<T> _parent;
            private readonly VoidAsyncOperationWithData<T> _writerSingleton;
            private readonly AsyncOperation<bool> _waiterSingleton;

            internal BoundedChannelWriter(BoundedChannel<T> parent)
            {
                _parent = parent;
                _writerSingleton = new VoidAsyncOperationWithData<T>(runContinuationsAsynchronously: true, pooled: true);
                _waiterSingleton = new AsyncOperation<bool>(runContinuationsAsynchronously: true, pooled: true);
            }

            public override bool TryComplete(Exception error)
            {
                BoundedChannel<T> parent = _parent;
                bool completeTask;
                lock (parent.SyncObj)
                {
                    parent.AssertInvariants();

                    // If we've already marked the channel as completed, bail.
                    if (parent._doneWriting != null)
                    {
                        return false;
                    }

                    // Mark that we're done writing.
                    parent._doneWriting = error ?? ChannelUtilities.s_doneWritingSentinel;
                    completeTask = parent._items.IsEmpty;
                }

                // If there are no items in the queue, complete the channel's task,
                // as no more data can possibly arrive at this point.  We do this outside
                // of the lock in case we'll be running synchronous completions, and we
                // do it before completing blocked/waiting readers, so that when they
                // wake up they'll see the task as being completed.
                if (completeTask)
                {
                    ChannelUtilities.Complete(parent._completion, error);
                }

                // At this point, _blockedReaders/Writers and _waitingReaders/Writers will not be mutated:
                // they're only mutated by readers/writers while holding the lock, and only if _doneWriting is null.
                // We also know that only one thread (this one) will ever get here, as only that thread
                // will be the one to transition from _doneWriting false to true.  As such, we can
                // freely manipulate them without any concurrency concerns.
                ChannelUtilities.FailOperations<AsyncOperation<T>, T>(parent._blockedReaders, ChannelUtilities.CreateInvalidCompletionException(error));
                ChannelUtilities.FailOperations<VoidAsyncOperationWithData<T>, VoidResult>(parent._blockedWriters, ChannelUtilities.CreateInvalidCompletionException(error));
                ChannelUtilities.WakeUpWaiters(ref parent._waitingReadersTail, result: false, error: error);
                ChannelUtilities.WakeUpWaiters(ref parent._waitingWritersTail, result: false, error: error);

                // Successfully transitioned to completed.
                return true;
            }

            public override bool TryWrite(T item)
            {
                AsyncOperation<T> blockedReader = null;
                AsyncOperation<bool> waitingReadersTail = null;

                BoundedChannel<T> parent = _parent;
                lock (parent.SyncObj)
                {
                    parent.AssertInvariants();

                    // If we're done writing, nothing more to do.
                    if (parent._doneWriting != null)
                    {
                        return false;
                    }

                    // Get the number of items in the channel currently.
                    int count = parent._items.Count;

                    if (count == 0)
                    {
                        // There are no items in the channel, which means we may have blocked/waiting readers.

                        // If there are any blocked readers, find one that's not canceled
                        // and store it to complete outside of the lock, in case it has
                        // continuations that'll run synchronously
                        while (!parent._blockedReaders.IsEmpty)
                        {
                            AsyncOperation<T> r = parent._blockedReaders.DequeueHead();
                            r.UnregisterCancellation(); // ensure that once we grab it, we own its completion
                            if (!r.IsCompleted)
                            {
                                blockedReader = r;
                                break;
                            }
                        }

                        if (blockedReader == null)
                        {
                            // If there wasn't a blocked reader, then store the item. If no one's waiting
                            // to be notified about a 0-to-1 transition, we're done.
                            parent._items.EnqueueTail(item);
                            waitingReadersTail = parent._waitingReadersTail;
                            if (waitingReadersTail == null)
                            {
                                return true;
                            }
                            parent._waitingReadersTail = null;
                        }
                    }
                    else if (count < parent._bufferedCapacity)
                    {
                        // There's room in the channel.  Since we're not transitioning from 0-to-1 and
                        // since there's room, we can simply store the item and exit without having to
                        // worry about blocked/waiting readers.
                        parent._items.EnqueueTail(item);
                        return true;
                    }
                    else if (parent._mode == BoundedChannelFullMode.Wait)
                    {
                        // The channel is full and we're in a wait mode.
                        // Simply exit and let the caller know we didn't write the data.
                        return false;
                    }
                    else if (parent._mode == BoundedChannelFullMode.DropWrite)
                    {
                        // The channel is full.  Just ignore the item being added
                        // but say we added it.
                        return true;
                    }
                    else
                    {
                        // The channel is full, and we're in a dropping mode.
                        // Drop either the oldest or the newest and write the new item.
                        T droppedItem = parent._mode == BoundedChannelFullMode.DropNewest ?
                            parent._items.DequeueTail() :
                            parent._items.DequeueHead();
                        parent._items.EnqueueTail(item);
                        return true;
                    }
                }

                // We either wrote the item already, or we're transferring it to the blocked reader we grabbed.
                if (blockedReader != null)
                {
                    Debug.Assert(waitingReadersTail == null, "Shouldn't have any waiters to wake up");

                    // Transfer the written item to the blocked reader.
                    bool success = blockedReader.TrySetResult(item);
                    Debug.Assert(success, "We should always be able to complete the reader.");
                }
                else
                {
                    // We stored an item bringing the count up from 0 to 1.  Alert
                    // any waiting readers that there may be something for them to consume.
                    // Since we're no longer holding the lock, it's possible we'll end up
                    // waking readers that have since come in.
                    ChannelUtilities.WakeUpWaiters(ref waitingReadersTail, result: true);
                }

                return true;
            }

            public override ValueTask<bool> WaitToWriteAsync(CancellationToken cancellationToken)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return new ValueTask<bool>(Task.FromCanceled<bool>(cancellationToken));
                }

                BoundedChannel<T> parent = _parent;
                lock (parent.SyncObj)
                {
                    parent.AssertInvariants();

                    // If we're done writing, no writes will ever succeed.
                    if (parent._doneWriting != null)
                    {
                        return parent._doneWriting != ChannelUtilities.s_doneWritingSentinel ?
                            new ValueTask<bool>(Task.FromException<bool>(parent._doneWriting)) :
                            default;
                    }

                    // If there's space to write, a write is possible.
                    // And if the mode involves dropping/ignoring, we can always write, as even if it's
                    // full we'll just drop an element to make room.
                    if (parent._items.Count < parent._bufferedCapacity || parent._mode != BoundedChannelFullMode.Wait)
                    {
                        return new ValueTask<bool>(true);
                    }

                    // We're still allowed to write, but there's no space, so ensure a waiter is queued and return it.

                    // If we're able to use the singleton waiter, do so.
                    if (!cancellationToken.CanBeCanceled)
                    {
                        AsyncOperation<bool> singleton = _waiterSingleton;
                        if (singleton.TryOwnAndReset())
                        {
                            ChannelUtilities.QueueWaiter(ref parent._waitingWritersTail, singleton);
                            return singleton.ValueTaskOfT;
                        }
                    }

                    // Otherwise, queue a waiter.
                    var waiter = new AsyncOperation<bool>(runContinuationsAsynchronously: true, cancellationToken);
                    ChannelUtilities.QueueWaiter(ref parent._waitingWritersTail, waiter);
                    return waiter.ValueTaskOfT;
                }
            }

            public override ValueTask WriteAsync(T item, CancellationToken cancellationToken)
            {
                if (cancellationToken.IsCancellationRequested)
                {
                    return new ValueTask(Task.FromCanceled(cancellationToken));
                }

                AsyncOperation<T> blockedReader = null;
                AsyncOperation<bool> waitingReadersTail = null;

                BoundedChannel<T> parent = _parent;
                lock (parent.SyncObj)
                {
                    parent.AssertInvariants();

                    // If we're done writing, trying to write is an error.
                    if (parent._doneWriting != null)
                    {
                        return new ValueTask(Task.FromException(ChannelUtilities.CreateInvalidCompletionException(parent._doneWriting)));
                    }

                    // Get the number of items in the channel currently.
                    int count = parent._items.Count;

                    if (count == 0)
                    {
                        // There are no items in the channel, which means we may have blocked/waiting readers.

                        // If there are any blocked readers, find one that's not canceled
                        // and store it to complete outside of the lock, in case it has
                        // continuations that'll run synchronously
                        while (!parent._blockedReaders.IsEmpty)
                        {
                            AsyncOperation<T> r = parent._blockedReaders.DequeueHead();
                            r.UnregisterCancellation(); // ensure that once we grab it, we own its completion
                            if (!r.IsCompleted)
                            {
                                blockedReader = r;
                                break;
                            }
                        }

                        if (blockedReader == null)
                        {
                            // If there wasn't a blocked reader, then store the item. If no one's waiting
                            // to be notified about a 0-to-1 transition, we're done.
                            parent._items.EnqueueTail(item);
                            waitingReadersTail = parent._waitingReadersTail;
                            if (waitingReadersTail == null)
                            {
                                return default;
                            }
                            parent._waitingReadersTail = null;
                        }
                    }
                    else if (count < parent._bufferedCapacity)
                    {
                        // There's room in the channel.  Since we're not transitioning from 0-to-1 and
                        // since there's room, we can simply store the item and exit without having to
                        // worry about blocked/waiting readers.
                        parent._items.EnqueueTail(item);
                        return default;
                    }
                    else if (parent._mode == BoundedChannelFullMode.Wait)
                    {
                        // The channel is full and we're in a wait mode.  We need to queue a writer.

                        // If we're able to use the singleton writer, do so.
                        if (!cancellationToken.CanBeCanceled)
                        {
                            VoidAsyncOperationWithData<T> singleton = _writerSingleton;
                            if (singleton.TryOwnAndReset())
                            {
                                singleton.Item = item;
                                parent._blockedWriters.EnqueueTail(singleton);
                                return singleton.ValueTask;
                            }
                        }

                        // Otherwise, queue a new writer.
                        var writer = new VoidAsyncOperationWithData<T>(runContinuationsAsynchronously: true, cancellationToken);
                        writer.Item = item;
                        parent._blockedWriters.EnqueueTail(writer);
                        return writer.ValueTask;
                    }
                    else if (parent._mode == BoundedChannelFullMode.DropWrite)
                    {
                        // The channel is full and we're in ignore mode.
                        // Ignore the item but say we accepted it.
                        return default;
                    }
                    else
                    {
                        // The channel is full, and we're in a dropping mode.
                        // Drop either the oldest or the newest and write the new item.
                        T droppedItem = parent._mode == BoundedChannelFullMode.DropNewest ?
                            parent._items.DequeueTail() :
                            parent._items.DequeueHead();
                        parent._items.EnqueueTail(item);
                        return default;
                    }
                }

                // We either wrote the item already, or we're transfering it to the blocked reader we grabbed.
                if (blockedReader != null)
                {
                    // Transfer the written item to the blocked reader.
                    bool success = blockedReader.TrySetResult(item);
                    Debug.Assert(success, "We should always be able to complete the reader.");
                }
                else
                {
                    // We stored an item bringing the count up from 0 to 1.  Alert
                    // any waiting readers that there may be something for them to consume.
                    // Since we're no longer holding the lock, it's possible we'll end up
                    // waking readers that have since come in.
                    ChannelUtilities.WakeUpWaiters(ref waitingReadersTail, result: true);
                }

                return default;
            }

            /// Gets the number of items in the channel. This should only be used by the debugger.
            private int ItemsCountForDebugger => _parent._items.Count;

            /// Gets the capacity of the channel. This should only be used by the debugger.
            private int CapacityForDebugger => _parent._bufferedCapacity;

            /// Gets an enumerator the debugger can use to show the contents of the channel.
            IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() => _parent._items.GetEnumerator();
        }

        [Conditional("DEBUG")]
        private void AssertInvariants()
        {
            Debug.Assert(SyncObj != null, "The sync obj must not be null.");
            Debug.Assert(Monitor.IsEntered(SyncObj), "Invariants can only be validated while holding the lock.");

            if (!_items.IsEmpty)
            {
                Debug.Assert(_blockedReaders.IsEmpty, "There are items available, so there shouldn't be any blocked readers.");
                Debug.Assert(_waitingReadersTail == null, "There are items available, so there shouldn't be any waiting readers.");
            }
            if (_items.Count < _bufferedCapacity)
            {
                Debug.Assert(_blockedWriters.IsEmpty, "There's space available, so there shouldn't be any blocked writers.");
                Debug.Assert(_waitingWritersTail == null, "There's space available, so there shouldn't be any waiting writers.");
            }
            if (!_blockedReaders.IsEmpty)
            {
                Debug.Assert(_items.IsEmpty, "There shouldn't be queued items if there's a blocked reader.");
                Debug.Assert(_blockedWriters.IsEmpty, "There shouldn't be any blocked writer if there's a blocked reader.");
            }
            if (!_blockedWriters.IsEmpty)
            {
                Debug.Assert(_items.Count == _bufferedCapacity, "We should have a full buffer if there's a blocked writer.");
                Debug.Assert(_blockedReaders.IsEmpty, "There shouldn't be any blocked readers if there's a blocked writer.");
            }
            if (_completion.Task.IsCompleted)
            {
                Debug.Assert(_doneWriting != null, "We can only complete if we're done writing.");
            }
        }

        /// Gets the number of items in the channel.  This should only be used by the debugger.
        private int ItemsCountForDebugger => _items.Count;

        /// Report if the channel is closed or not. This should only be used by the debugger.
        private bool ChannelIsClosedForDebugger => _doneWriting != null;

        /// Gets an enumerator the debugger can use to show the contents of the channel.
        IEnumerator<T> IDebugEnumerable<T>.GetEnumerator() => _items.GetEnumerator();
    }
}


Aaron Dumas is charged with child abuse in a case being called discipline gone too far.
RALEIGH, NC (WTVD) -- A Raleigh man is accused of pushing his 5-year-old son to the ground and kicking him, leaving the boy's face bruised around his eye.
Raleigh police said they were called to The Park at Trinity apartments Tuesday morning when a 911 caller reported the incident.
The caller told a dispatcher, "He hit the kid and he won't leave."
The dispatcher probed further asking, "Has he ever done that before?" The caller responded, "He's disciplined some but he's never done as much as he did today."
Police charged 26-year old Aaron Dumas with misdemeanor child abuse and assault on a government official.
They said the second charge was the result of Dumas pushing the officer who tried to arrest him to the ground.
ABC11 contacted the person who reported the crime but that person didn't want to elaborate on what happened or a possible motive.
Dumas posted a $5,000 bond and was released.
He is scheduled to face a judge on both charges in March.


No Tech or Slow Tech?
I teach digital literacy or Cyber Civics at a Waldorf-inspired public charter school where parents, teachers, and administration constantly grapple with the issue of "screen time." The suggestion of no screens, especially at a school that runs through 8th grade, is the modern-day equivalent of holding one's finger in the dike. So this school is talking about the idea of slow tech rather than no tech. Starting in sixth grade, we teach students the skills they need to be thoughtful, safe, and productive "digital citizens." We also suggest that parents introduce technology in a developmentally appropriate way at home.
Sound crazy? Well, if you compare this approach to the current norms where most kids are glued to screens from the time they can grasp them in their tiny little hands, I guess it can seem unorthodox. But the research tells a different story.
Since 1999, the American Academy of Pediatrics (AAP) has recommended no screen time at all for children under 2 because they believed there were more potential negative effects than positive effects of media exposure. Newer data bears this out, and the AAP stands by its recommendation to keep children under age 2 as "screen-free" as possible.
Updated guidelines from the AAP recommend no more than two hours per day of any type of entertainment screen time for kids ages 3 to 18. The AAP has been criticized for this recommendation as being out of touch (the average young person spends 7.5 hours per day engaged with media according the Kaiser Family Foundation). But the AAP points to several long-term studies indicating that over two hours per day of media use leads to a host of ill-effects for children and teens, such as a higher risk for obesity, a drop in school performance, increased aggression, emotional and family problems, and more.
Research is also confirming that technology can get in the way of the development of "social cognition," or the skills needed to be aware of one's own mental state as well as the state of others. For example, a recent study conducted by researchers at UCLA, found that sixth-graders who went five days without looking at a smartphone, television or other digital screen were substantially better at reading human emotions than sixth-graders from the same school who continued to spend hours each day looking at their electronic devices.
It's easy to forget that we are still in the early days of technology use. Surely more long-term studies of the short-term phenomenon of digital overload will tell us that excessive media exposure is both good and bad for our kids. But in the meantime, why not err on the side of caution and take a "slow tech" approach towards tech use?
To explore, learn to trust, and engage in "joint attention" with you.
Parent(s) should put away computers and tablets when with their child.
Uninterrupted time engaging in old-fashioned play (i.e., dress up, active outside play), playing with toys that require a "stick-to-it"-ness, exploring nature, listening to you read and tell stories.
Strict limits on passive screen time (of educational programs with you co-viewing).
An introduction to how to participate with tech devices in a very limited, positive way by engaging in activities with your child, such as emailing grandparents with child dictating (using technology like Kids Email that can keep this experience safe and protected).
Continued uninterrupted time to play, to be actively engaged in real life experiences, to read and be read to, to pursue hobbies, to explore nature, to play with open-ended, creative toys.
Limited passive screen time with you co-viewing.
Time with you sharing more ways to participate with media (i.e., co-viewing media that help the child learn how to make something new, sing/record a song, use interactive apps).
Playing creative, interactive, non-violent video games with parent.
Your firm guidance on how to move through boredom without engaging in screen time.
Continued uninterrupted time to play.
Continued time to engage in nature in new, challenging ways (rock climbing, mountain biking, etc.), to pursue hands-on interests/hobbies, and to spend time being with friends in active, "real life" experiences.
Opportunities to become an ethical, responsible user of tech, such as: creating media (videos, music, stories, etc.) with parent supervision; researching for school or for own interests with parent support; completing homework on computer in common area of house; playing creative, interactive, non-violent video games.
Clear agreements with you about tech use tailored to age. It's more about how than how much.
To see the complete list and for more information, please visit they CyberWise Age of Use Learning Hub. Patti and I will be talking "Slow Tech" and sharing Cyber Civics lessons at the upcoming iTech & I Am and NAMLE Conferences.


text:
Taliban Ambushes Afghan Forces in Faryab, Wounding Four
(Last Updated On: May 6, 2019)
The Taliban militants ambushed a convoy of Afghan security and defense forces in northern Faryab province, wounding at least four soldiers, an official said on Monday.
Abdulkarim Yurish, a spokesman for Faryab police told Ariana News that the convoy of Afghan forces had been ambushed by the Taliban insurgents en route to Khwaja Sabz Posh and Sheerin Tagab districts of the province on Sunday.
At least 18 Taliban militants were killed and ten others wounded in the incident, he said.
The Afghan forces have arrested two Taliban fighters as they pushed back the attack, he added.
At least four Afghan security personnel and three civilians including two men and a woman were also injured in the incident, Yurish said.
The Taliban militant group has not made a comment about the incident yet.
Faryab is among the insecure provinces in the north of Afghanistan where the Taliban insurgents are actively operating in a number of its districts and usually carrying out attacks against government forces.
Related Topics:AmbushFaryabkhwaja sabz poshMilitantsTaliban
Key Taliban Commander Arrested with Bottles of Alcohol, Weapons in Balkh
Afghanistan Launches Law on Protection of Child Rights
Meshrano Jirga urges Biden to reconsider US policies on Afghanistan
Taliban ambush security checkpoint in Badakhshan
Neighbors 'colluding' with Taliban over drone warfare: military experts
Dostum returns to the battlefield to fight the Taliban
Taliban asks for extra time to present peace talks agenda
DVIDS
(Last Updated On: January 20, 2021)
Two blasts rocked eastern Nangarhar province on Wednesday afternoon, local officials confirmed.
The provincial media office said in a statement that the first blast happened at around 3 pm after a vehicle hit a roadside IED in the Sherzad district of the province.
Two civilians were killed and four others were wounded in the blast.
Half an hour later, a roadside mine hit a civilian's car in Khogyani district Nangarhar, killing at least two people and wounding three more, the district governor Shamsul Haq Sapai told Ariana News.
Meanwhile, Zia-Ul-Haq Amarkhil, the Governor of Nangarhar said that both IEDs were planted by the Taliban.
The Taliban has not commented in this regard.
Afghan Foreign Minister Haneef Atmar held talks on Wednesday with Yousef al-Othaimeen, the secretary-general of the Organization of Islamic Cooperation (OIC), in Saudi Arabia and discussed the current peace talks being held in Doha, Qatar.
In a statement, the Jeddah-based organization said discussions were held on the peace process, and on how the OIC can support the talks.
Al-Othaimeen reiterated the OIC's commitment to supporting the Afghan people, and development projects in Afghanistan.
Meanwhile, the Afghan Ministry of Foreign Affairs said in a statement that Atmar praised the OIC for its role in forging unity among Islamic countries in support of the peace process and for issuing special resolutions to form a consensus among Islamic countries to resolve the crisis in Afghanistan.
At the meeting, Atmar called the war in Afghanistan illegitimate from the point of view of Islam.
"The crimes that are being committed in Afghanistan today are completely incompatible with the beliefs of Muslims and Islamic teachings; Attacks on female judges, killings of Kabul University students and attacks on maternity hospitals are certainly not justifiable in Islam," he said.
Atmar also stated that if the opposition is truly committed to peace, the Afghan government would not see any obstacles to national reconciliation and the success of the peace process, and would be ready to pave the way for political participation on all sides in accordance with the free will of the Afghan people and internationally accepted standards.
"We want the Organization of Islamic Cooperation to continue its previous demands to end the bloodshed and resolve the political crisis in Afghanistan through holding follow-up meetings, expert consultations and sending special groups to consult with the teams," he said.
In response to the Foreign Minister's remarks, the Secretary-General of the OIC said that he commends and supports the flexible and adaptable position of the Islamic Republic of Afghanistan towards peace.
Al-Othaimeen pointed out that killing, violence and intimidation are contrary to the essence of Islam and that people should be made aware that Islam is not a religion of terror and violence, but a religion of unity and convergence.
He praised the role of religious scholars in this regard, saying that scholars in Islamic societies have an important position not only from a religious point of view but also from a political point of view.
The Taliban is demanding a total Islamic system in Afghanistan, stating that there is no possibility of reforming the current government, sources said Wednesday.
This comes after the Afghan Republic's talks team and the Taliban team resumed negotiations in Doha two weeks ago. However, the two sides have not made any significant progress since the start of the second round of negotiations.
But sources familiar with the ongoing peace talks told Ariana News that the Taliban are not interested in discussing an agenda with the Republic's team, and that the group is focused instead on the following issues:
1- The Taliban is demanding the release of their remaining prisoners and the removal of the group's leaders and members from the US Blacklist; the Afghan government has however requested the US not to give in to the Taliban's demands.
2- The Taliban demands a pure Islamic system in Afghanistan, stating that the current government cannot be reformed.
3- Apparently, the Taliban are waiting for US President-elect Joe Biden to be inaugurated and to see what his position will be with regards to the Afghan peace process.
4- The Taliban says that the targeted killings of civilians, including the assassination of two female judges this week in Kabul, were unavoidable as they all supported a "puppet government".
The Taliban has, however, so far, not commented on these claims.
Meanwhile, Vice President Amrullah Saleh stated that in order to move forward with the peace talks, trust needs to be built between the two sides. This, he said, will not be "achieved by killing civilians or kidnapping people from highways."
In his daily 6:30 am meeting, Saleh threatened the Taliban that if the militant group continues to kill innocent people, members of civil society, and carry out bombings, "then not just the release of Taliban prisoners will be on the peace talks agenda but their lives will be" a point of discussion.
Tweets by ArianaNews_
Featured5 days ago
Taliban drones bomb 217 Pamir Military Corps in Kunduz
Latest News5 days ago
NSA warns of Taliban's intent to 'seize power' once foreign troops leave
American troops down to 2,500: US acting defense secretary
COVID-193 days ago
Norway concerned as death toll rises to 29 from COVID vaccine
12 local police killed in Taliban attack in Herat
Kunduz worshipers storm radio station on orders of Imam

redpajama_set_name: RedPajamaCommonCrawl


laundry vent cover dryer vent outside cover dryer vent pipe and gas pipe exhaust right outside my window is dryer vent outside cover.
laundry vent cover defender vent cover medium critter barrier bird guard.
laundry vent cover louvered dryer vent.
laundry vent cover how a 5 pest barricade can save you.
laundry vent cover the stylish dryer vent hood works great with more contemporary homes.
laundry vent cover 3 inch dryer vent cover outside.
laundry vent cover dryer vent replacement flaps outside dryer vent cover replacement plastic wall vent with fixed louvers dryer dryer vent.
laundry vent cover white painted dryer vent.
laundry vent cover technician clearing lint and debris from outside dryer vent.
laundry vent cover stainless 4 inch dryer vent cover with damper door.
laundry vent cover low profile dryer vent vent for dryer dryer vent wall plate low profile louvered dryer vent low profile dryer vent.
laundry vent cover an airtight louvered vent.
laundry vent cover dryer vent safety association of certified home inspectors.
laundry vent cover dryer vent flap replacement not opening cover flaps.


Laszlo Birinyi is president of Birinyi Associates, a research/asset management firm. A graduate of The University of North Carolina and New York University he began his career as a sales trader. At Mitchell, Hutchins he introduced the first trading calendar and in 1989 he left Salomon Brothers and formed his own firm.


text:
Get Out: Everything You Should Do This Week in Cleveland (July 26 - Aug. 1)
Balance & Brews
If you're looking for a way to unwind in the middle of the week, we suggest a stop this evening at Market Garden Brewery for its Balance & Brews event in the new production tasting room. After a yoga workout, the brewery will treat you to beers at its brewpub. The $18 admission includes four drinks, and the event takes place from 6:30 to 8:30 p.m. (Daniela Cacho)
1947 West 25th St., 216-621-4000, marketgardenbrewery.com.
Matt Fulchiron
Sarcastic comedian Matt Fulchiron makes the most of a melancholy yet hysterical tone in his routines as he jokes about the hazards of legalizing marijuana; and he just loves to tell stories about the difficulty of living in New York for a year. He performs at 7 tonight at Hilarities. Tickets are $13 and $18. (Jeff Niesel)
2035 East Fourth St., 216-241-7425, pickwickandfrolic.com.
Indians vs. Los Angeles Angels of Anaheim
Playing in the American League West this season has hurt the Los Angeles Angels of Anaheim. The Houston Astros have won so many games, they've buried their division rivals. As a result, the Angels, despite having two of the league's marquee players in Mike Trout and Albert Pujols, find themselves struggling to stay in contention. They face the Tribe tonight at 7:10 at Progressive Field for the second of a three-game series. Tickets start at $13. The two teams play again tomorrow at 12:10 p.m. (Niesel).
2401 Ontario St., 216-420-4487, clevelandindians.com.
Ohio City Stages
For the past couple of summers, the Cleveland Museum of Art has hosted Ohio City Stages, a weekly summer block party that takes place in front of the Transformer Station throughout the month of July. Mokoomba, a Zimbabwe band that blends traditional Tonga and Luvale rhythms with funk, ska and soukous, will perform tonight at 7:30, and admission is free. Vendors will be on hand to sell food and drink as well. In addition, Studio Go, the CMA's mobile art studio, will offer hands-on art-making activities, pop-up drawing classes and other family-oriented art projects. (Niesel)
1460 West 29th St., 216-938-5429, transformerstation.org.
Summer in the City Concert Series
Presented by Great Lakes Brewing Company, Fat Head's Brewery and Magic Hat Brewing Company, the Rock Hall's free Summer in the City concert series features some of the top bands in Cleveland. Concerts start at 6 p.m. on the seasonal outdoor stage, July through August 30. (Rain location is inside, on the Klipsch Audio Main Stage.) Tonight's concert features Hamilton Handshake, "a high faultin, noise pollutin' rock 'n' roll band" and the Skulx, rockers who have toured the U.S. multiple times, including a stop at Austin's SXSW. Food trucks and a beer garden are also on the lineup. Find out more on the website. (Niesel) 1100 Rock and Roll Blvd., 216-515-8444, rockhall.com.
Wade Oval Wednesdays
A summer tradition, Wade Oval Wednesday takes place every Wednesday through Aug. 30, from 6 to 9 p.m., at Wade Oval in University Circle. The weekly party provides the opportunity to catch a free concert — jazz, swing, world music and more. Between sets, check out the local food vendors, the beer and wine tent, the farmers market, and free kids' activities — all laid out on the Wade Oval lawn, adjacent to Cleveland Botanical Garden, the Cleveland Art Museum, and the Cleveland Natural History Museum. Son Gitano brings Latin and salsa beats to the Circle this evening. Details are on the website. (Niesel)
10820 East Blvd., universitycircle.org.
Walnut Wednesday
Walnut Wednesday is one of summer's great traditions, featuring an ever-changing lineup of food trucks along with live entertainment. Today from 11 a.m. to 1:30 p.m. at Perk Plaza at Chester Commons — at East 12th and Walnut streets — those food trucks gather once again to serve up lunch to area residents and employees. Follow the Downtown Cleveland Alliance on Facebook for weekly updates on vendors, entertainment offerings and more. The series continues through Sept. 27. Admission is free, but the food will cost you. (Niesel)
downtowncleveland.com.
THU 07/27
Coventry PEACE Campus Community Weekend
Claiming the building needs $1 million in repairs, city officials in Cleveland Heights announced plans earlier this year to pursue a sale of the old Coventry school building. The unexpected announcement came as quite a surprise to the building's 11 tenants: all nonprofit organizations, such as Ensemble Theatre, Lake Erie Ink and its newest tenant, Artful Cleveland. Amid this uncertainty, the tenants host a Community Weekend from today to Sunday. The weekend includes a city council open forum at the Cleveland Heights Community Center on the future of the school site; a family-friendly screening of Power Rangers; an open house at the Coventry school building featuring a free concert by Swing State; and happy hour in Pekar Park with open studios at Artful Cleveland. You'll also find a playground cleanup and community picnic in PEACE Park with a performance by Eve 'N' Stephen, and a Common Ground community discussion at Ensemble Theatre. (In partnership with the Cleveland Foundation, Common Ground is a community-wide event taking place at venues throughout Cuyahoga County. This particular event discusses the future of the Coventry school site.) There's lots more information on the website. (Josh Usmani)
coventrypeacecampus.org/events.
Edgewater Live
Now in its fourth season, Edgewater Live features local acts along the shore each Thursday throughout the summer. The event also boasts food trucks and recreational activities. The weekly beach party commences today at 4:30 p.m. on the Centennial Plaza at the new Edgewater Beach House with a performance from Montage, The Band! From 6 to 9 p.m., Kinsman Dazz Band will perform on the RTA Main Stage. The Thursday-afternoon series continues through Aug. 10. (Niesel)
6500 Cleveland Memorial Shoreway NW, 216-635-3200, clevelandmetroparks.com.
In conjunction with Keith Mayerson: My American Dream, currently on view at MOCA Cleveland, the Cleveland Institute of Art Cinematheque hosts a screening of Giant, starring James Dean in his final screen appearance before his death. Mayerson's exhibition at MOCA includes several paintings of Dean, including one inspired by Giant. The film screening begins at 6:30 tonight in CIA's Peter B. Lewis Cinematheque. Admission is $11; Cinematheque and MOCA Cleveland members, CIA and CSU ID holders and those ages 25 and under are $8. (Usmani).
11610 Euclid Ave., 216-421-7450, cia.edu.
Not many comedians have fought a grizzly bear. In his 2005 television movie Hurt Bert, Bert Kreischer not only comes face to face with a ferocious (yet ultimately harmless) bear, but lives to tell you about it in his nationally successful comedy act. Taking a break from his hosting gig on the Travel Channel's hit show Trip Flip, Kreischer makes his way to Cleveland this week for a standup show. Check him out at 8 tonight at Hilarities, where he has shows scheduled through Saturday. Tickets start at $25. (Niesel)
If you're skeptical about a comedy hypnotist show, Will Power will change your mind forever — whether he does it with mind tricks is for you to decide. His hypnotist act shows just how powerful suggestion can be on the human mind. This show is adults only, as Power's act isn't family friendly. Rated somewhere between R and X, Power's performance will have you laughing with his naughty fun. Don't think you can go to a hypnotist show and not participate: Power will undoubtedly find a way to rope you into the show. He performs tonight at 7:30 at the Improv. Tickets are $15. (Martin Harp)
1148 Main Ave., 216-696-IMPROV, clevelandimprov.com.
A Used Book Sale
Looking for a good read for the beach, pool, flight, road trip, etc.? The Friends of the Cleveland Public Library believe that summer is for reading. The main branch hosts a used book sale this weekend to raise money for the library. Organizers promise "a lot of fiction plus children's and young adult books," as well as audio books and even music and movies. Held in the Indoor Reading Garden in the first floor's Louis Stokes Wing, the sale begins today with a members' preview at 10 a.m., and is open to the public from 11 a.m. to 6 p.m. The used book sale continues tomorrow and Saturday from 10 a.m. to 6 p.m. On Saturday, bags of books will be priced at just $6. Admission is free. (Usmani)
325 Superior Ave., 216-623-2800, cpl.org.
War on the Catwalk
Some of the top contestants from Season 9 of RuPaul's Drag Race will perform tonight as part of War on the Catwalk, an event that organizers bill as "an evening of outstanding drag performances with your favorite queens." The show will begin at 8 p.m. at the Ohio Theatre and, given that these queens travel with so much merch, there will be a 20-minute intermission to allow fans to shop. Tickets start at $25. (Niesel)
1501 Euclid Ave., 216-241-6000, playhousesquare.org.
Michael Blackson
Known as the "African King of Comedy," Michael Blackson developed his comedic skills by using original humor and being fearless onstage. During his performances, he jokes about current affairs and takes aim at celebs such as Kim Kardashian and Michael Jordan; however, he also focuses on more serious topics such as race, his love for America and his African descent. He performs tonight at 7:30 and 10 at the Improv, where he has shows scheduled through Sunday. Tickets cost $25. (Niesel)
The Cleveland Bazaar
Today, the Cleveland Bazaar once again invades the U.S. Bank Plaza at Playhouse Square. Attendees can shop local vendors, get lunch from Dynomite Burgers and enjoy the sunshine on the plaza. The fun continues on the second and fourth Friday of every summer month, including Aug. 11, Aug. 25 and Sept. 8. Hours are 10 a.m. to 2 p.m. Admission is free. (Usmani)
East 14th Street and Euclid Avenue, 216-771-4444, playhousesquare.org.
The owners of Gunselman's Tavern, a bar and restaurant in Fairview Park with a history that dates back nearly 80 years, say the place has "unofficially served as Fairview Park's Public House." As a way to give back to the community, they've just announced that they'll host a Christmas in July fundraiser to support Forward Fairview Park, a coalition of community business owners and residents collaborating with city government to help revitalize the Lorain Road Corridor. The event takes place tonight from 5 to 10. The $20 ticket includes a traditional barbecued chicken or pork dinner, side dishes and two complimentary draft beers or sodas. Kids will receive a soda voucher that includes free refills. There will be a DJ, 50/50 and "Christmas Gift" raffles, Christmas ale, an Ugly Christmas T-Shirt contest, festive decorations and a special visit from Santa. Tickets can be purchased in advance at Gunselman's, through a Forward Fairview Park board member or by emailing [email protected]. Tickets also will be available for purchase at the door, cash or check only. (Niesel)
21490 Lorain Rd., Fairview Park, 440-331-5719.
Cleveland Inkubator
Returning again this year, the Cleveland Inkubator is Northeast Ohio's largest annual literary festival for both writers and readers. A week-long event, Cleveland Inkubator includes workshops, book talks, readings, performances and more. The series culminates today from 9 a.m. to 5 p.m. with an all-day conference at the main branch of the Cleveland Public Library. The day includes workshops and discussions on nonfiction, fiction, poetry and more, a resource fair, author readings, a teen writer showcase for ages 14 to 18 and a keynote reading with author Dan Chaon. Admission is free. (Usmani)
325 Superior Ave., litcleveland.org/cleveland-inkubator.html.
Country Bar Crawl
Nine participating bars, including Wild Eagle Saloon, 2nd & High, Barley House, Bar Louie, City Tap, Dive Bar, the Corner Alley, Velvet Dog and Wilberts play host to today's country music-themed bar crawl. Attendees will receive a 16 ounce "Country Stadium Cup" for the drinks. The bars will also offer drink and food specials. The crawl takes place from noon to 8 p.m. Tickets are $15 in advance. (Cacho)
eventbrite.com/e/country-bar-crawl-cleveland-tickets-32469084907.
Monsters Ohio Sip & Paint
It may not be hockey season quite yet, but dedicated Lake Erie Monsters fans can prep for the upcoming season today at Monsters Ohio Sip & Paint at the Little Birdie Wine Nest in Parma. You'll receive a wooden cutout of our fair state to decorate with a Monsters hockey theme, while you nibble on snacks and sample three different wines. Cost is $40 per person and includes all supplies. The event runs from 2 to 4 p.m. Snag your tickets on the website. (Cacho)
6060 Broadview Rd., Parma, 216-785-9922, littlebirdiewinenest.com.
Pilobolus Dance Theater
Known for presenting works that "challenge the notions of what modern dance can look like," Pilobolus Dance Theater creates "awe-inducing shapes that push the imagination to the extreme." Tonight's show includes the fan favorite, "Shadowland." If the dance company's name rings a bell, perhaps it's because it has performed in a variety of music videos, along with doing commercials for the likes of Mobil, Ford and Toyota. It has also appeared on the 79th Annual Academy Awards, Oprah Winfrey Show and the Conan O'Brien show. Tonight's performance begins at 7:30 at the State Theatre. Tickets are $25 to $50. (Niesel)
Relief for Beginners
In printmaking, there are many techniques and processes. One of the most common and (relatively) easiest to do without a full printmaking studio is linocut, a process of removing the negative space from a piece of linoleum, similar to a woodcut. Ink is applied to the "raised" parts of the block with a roller, but does not reach the carved-out areas. Paper is then applied to the surface, and it is either rolled through a printing press or rubbed thoroughly with a shot glass. Learn more about the basics of linocuts and relief printing during Relief for Beginners, a workshop at Salty Not Sweet Boutique, today from 6 to 8:30 p.m. The workshop is led by Akron-based artist Raven Burdette, who received a bachelors degree with dual concentrations in printmaking and drawing/painting from the University of Akron, where she is currently pursuing her masters degree in administration. The workshop costs $75 per person and tickets are available online. (Usmani) 2074 West 25th St., saltynotsweet.bigcartel.com.
A Community Wide Conversation
Organizations from throughout Cuyahoga County are partnering with the Cleveland Foundation for an unprecedented community-wide conversation at venues throughout the city. Today, residents will meet, share a meal, connect and discuss issues and solutions to create a better future for our shared home, or "common ground." The convo includes community breakfast, lunch, dinner and in-between. The biggest get-together takes place on Public Square, but additional venues include the Cleveland Metroparks Edgewater Beach House, Cleveland Museum of Natural History, the Coventry school building in Cleveland Heights, the LGBT Community Center of Greater Cleveland, the Parma-Snow Branch of the Cuyahoga County Public Library and many more. Local organizations and residents are encouraged to host their own meetings as well. For more information on how to join a table or host a meeting, visit the website. All events are free, but registration is required. (Usmani)
clevelandfoundation.org/news/common-ground.
Mom & Me Paint Class
Sundays are meant for relaxation, and what could be more mellow than an afternoon session of painting, doughnuts, coffee, and bonding with the wee ones? The local traveling arts studio Artsy Cleveland will be at Peace, Love, and Little Donuts today for a Mom & Me Paint Class. Artsy will have a local artist on site to guide the class. Tickets start at $20 and include all art supplies, coffee and doughnuts. The class is in session from 1 to 3 p.m. (Cacho)
3786 Rocky River Dr., 216-862-9806, peaceloveandlittledonuts.com.
Sloppy Sundays in the Sun
The bartenders at Now That's Class will serve "the coolest and tastiest pitchers" of cocktails today from 3 to 7 p.m. at Sloppy Sundays in the Sun. Pitchers of specialty cocktails ($12) include Paul's Puerto Rican Punch, Nascar Nectar and Stripple Nipple. The club will also set up a basketball hoop out back for patrons to show off their skills. Admission is free. (Niesel)
11213 Detroit Ave., 216-221-8576, nowthatsclass.net.
Monday Night Trivia
Do you have tons of obscure music knowledge? Are you a student of fast food menus and their nuanced histories? What say you about the geographic evolution of Scotch whisky? Tonight's your chance to wow your friends, make yourself instantly more desirable to someone you're newly dating, and hang with Cleveland's headiest hipsters and hot dog lovers. It's the Happy Dog Monday Night Trivia. Starting at 8 p.m., expect themed rounds and general knowledge questions that seem considerably trickier than some of the other live trivia locales in town. Obviously, have a hot dog and a craft brew while you're at it. And arrive early. (Sam Allard)
5801 Detroit Ave., 216-651-9474, happydogcleveland.com.
Wing Ding Doodle
Blues icon Howlin' Wolf famously covered "Wang Dang Doodle," the old blues tune penned by Willie Dixon. Prosperity Social Club in Tremont has adopted that slogan, calling its wing night Wing Ding Doodle. The weekly event features specials on Buffalo wings and cold brews. Prosperity will not only serve up substantial, $1 whole wings, but it'll also offering meatless Monday "wing" baskets for vegans. Discounted drafts and a playlist of vintage-electric blues and soulful R&B curated by local musician Clint Holley will be on tap as well. 6 p.m. to midnight. (Niesel)
1109 Starkweather Ave., 216-937-1938, prosperitysocialclub.com.
Classical Revolution Cleveland
For many years, classical music wasn't intended for the masses. Seemingly reserved for quasi-exclusive concert halls, classical music hid from the outside world. Classical Revolution Cleveland helps tear down that wall and once again bring great chamber music to the people. Showcasing a variety of performers in bars, cafes and the like, it's actually not that different from how people used to listen to chamber music. The first Tuesday of every month, CRC brings its wide array of chamber music to Happy Dog. Performers like the Trepanning Trio, Anime Duo, students of Cleveland Institute of Music and even Cleveland Orchestra members grace the stage in these exciting concerts. Full of immensely talented performers, CRC re-instills the relevancy of this vibrant art form. Tonight's free, all-ages performance starts at 8. (Patrick Stoops)
11625 Euclid Ave., 216-231-5400, happydogcleveland.com.
Dancing Under the Stars
As a part of the 12-week outdoor dance event at Playhouse Square, local dance instructors will lead Dancing Under the Stars at U.S. Bank Plaza. Throw on your best dancing shoes, grab a partner and head downtown for a night full of dance music from Papo Ruiz & LaDulzura de la Salsa. If you aren't familiar with salsa, then you won't want to miss the fun instruction offered at 6 p.m., from Rebecca Sweet of Viva Dance Studio. And then, from 6:30 to 9 p.m., the plaza will turn into a massive fun-filled dance party. It's a great opportunity to learn new moves and experience another culture through dance. Admission is free (Niesel)
Open Turntable Tuesday
Tonight from 6 to 9, Goldhorn Brewery hosts its weekly Open Turntable Tuesdays. DJ Kris Koch will offer 20-minute time slots to people who want to bring their own vinyl and spin their favorite songs or deep tracks. The Northeast Ohio Vinyl Club and the locally based Gotta Groove Records serve as the sponsors, and turntables will be provided. Each person will be able to play three to five songs during their time slot, and there will be a mic available to talk about the selections. Along with theme nights, there will be giveaways, drawings and contests. (Niesel)
1361 East 55th St., 216-465-1352, goldhornbrewery.com.
Vinyl Night
Jukebox owner Alex Budin has described his 1,350-square-foot music-focused bar in the Hingetown 'hood as "a place where people can expect to hear and learn about music of multiple genres, all of which is concentrated in a constantly evolving jukebox." The club hosts a vinyl night every Tuesday that serves as a listening party for new releases. The place has partnered with Loop in Tremont so that patrons can hear a new album on vinyl. You can bring your own vinyl and spin it too. It all starts at 5 p.m. (Niesel)
1404 West 29th St., 216-206-7699, jukeboxcle.com.
WWE Smackdown Live
In a special "double main event," wrestlers John Cena, Randy Orton and AJ Styles will team up to take on Jinder Mahal, Kevin Owens and Dolph Ziggler in one of tonight's key matchups. Shinsuke Nakamura will fight Baron Corbin in another. It's all part of WWE Smackdown Live, and the brawling commences at 7:45 p.m. Tickets start at $20. (Niesel)
1 Center Court, 216-420-2000, theqarena.com.


How can we better enable self-management of chronic kidney disease, where appropriate, for adults? That's the question one of Can-SOLVE CKD's research teams is working to answer in partnership with kidney patients and family or friends who play caregiving roles.
"When we speak about self-management, we mean the patient being in charge of managing their chronic kidney disease, supported by their health care team," says Gwen Herrington, Patient Lead for the research project, Strategies to Enhance Patient Self-Management of Chronic Kidney Disease.
Gwen is one of six patient partners working on the project, which aims to identify and test optimal strategies for self-management. The 19-member research team also includes clinicians, scientists and educators from a wide variety of physical and mental health disciplines.
As a patient partner, Gwen brings her lived experience of kidney disease to the team's work. This includes more than a decade of living with focal segmental glomerulosclerosis, which eventually led to kidney failure. Part of her treatment included going on dialysis for two and a half years, and then receiving a living donor transplant in 2014, which greatly improved her health and gave her the ability to return to her career as a Public Health nurse.
In addition to perspectives offered by patient partners like Gwen, the research team has sought the input of dozens of patients and caregivers across Canada. Between July 2017 and January 2018, the team held six focus groups in Calgary, Lethbridge, Toronto, and London, Ontario, to explore the self-management experiences, preferences, and needs of adults with chronic kidney disease and their caregivers. Phone interviews were also conducted with individuals unable to participate in person. A total of 48 participants took part, including 33 patients and 15 caregivers, spanning British Columbia, Alberta, Ontario, Nova Scotia and Newfoundland.
The patient and caregiver input from these conversations complements the team's other research efforts, including a scoping review of self-management literature (published in BMJ Open in early 2018) and a survey of chronic kidney disease clinics across Canada.
emotional, social and psychological support.
This work is scheduled to take place at a team workshop in June 2018 in Calgary.
Later stages in the study will include refining and testing the shortlist of self-management strategies. As they do so, the researchers will measure a number of physical and mental health factors. This will include determining whether there is an improvement in patients' ability to control their kidney disease, whether they experience greater well-being, and what level of satisfaction they have with this approach to care.
Reflecting on patient partner contributions to date, Dr. Hemmelgarn says the patients and caregivers involved are playing important roles in many aspects of the research process.


text:
MUSIC Group Forms New Consumer Electronics Division
MUSIC Group, parent of brands BEHRINGER, TURBOSOUND, MIDAS, KLARK TEKNIK and BUGERA, is throwing its hat into the Consumer Electronics marketplace with Daniel Roe as head of the newly created division.
MUSIC Group brands have long been recognized as industry leaders in their respective markets—and this move ensures expansion of the company's retail customer via proactive development of new product categories.
"This is a great opportunity for us to leverage the treasure-trove of new technologies we've implemented in our legacy brands — and to make that technology available to the home consumer," said MUSIC Group Marketing SVP, Costa Lakoumentas. "We toyed with this idea previously with a good modicum of success, but now we're in it to win it. Having Daniel at the helm, along with his considerable industry expertise and track record, will provide the impetus needed to make MUSIC Group a household name."
Daniel Roe added, "I've always had the greatest respect for the MUSIC Group brands, and am excited to be part of this new venture. I'm already engaging our distributors and retailers so we can maximize our market potential, and provide the best possible customer experience. Look for a far-reaching line of new customer-centric solutions from MUSIC Group that will both complement — and enhance the modern consumer lifestyle."


text:
The Complete Guide to Scarlet Fever
by	Karen Reed Monday, September 24, 2018
We should be glad we live in a modern world where we can get relief from many dreaded diseases which were not available in older times. Parents, especially, are stressed when their children are infected with an illness, keeping them at all times vigilant and hoping such illnesses don't get worse. These must have been the sentiments of parents in the past and scarlet fever was one such illness that affected mostly children physically and parents emotionally. As a matter of fact, scarlet fever epidemics were common in the early twentieth century.
Early in the twentieth century, severe scarlet fever epidemics were common. Today, the disease is rare. Although this decline is due in part to the availability of antibiotics, that's not the entire reason since the decline began before the widespread use of antibiotics. One theory is that the strain of bacteria that causes scarlet fever has become weaker with time.
Scarlet fever begins with a nasty microorganism from the group A Streptococcus bacteria and it typically affects a small percentage of individuals who have either have streptococcal pharyngitis (strep throat) or streptococcal wounds or skin infections. In older articles, scarlet fever was also called scarlatina because of the illness, which affected mostly children, was characterized by the child's flushed cheeks. The sun-burned color of the skin and sandpaper-like rashes accompanied by fever are common symptoms of scarlet fever.
The Causes and Risk Factors of Scarlet Fever
The Group A Streptococcus bacteria are also referred to as the group A strep or GABHS (group A beta-hemolytic streptococcus). These are oval-shaped, gram-positive bacteria. They can inflict damage to the body by producing an erythrogenic toxin which is the one responsible for causing red-colored skin rashes that have sandpaper-like textures. These skin conditions are common in individuals who have scarlet fever.
The latest research on scarlet fever has indicated that around 80% of young children who are aged 10 and above have naturally developed their own protective antibodies against streptococcus exotoxins. However, the organisms can still cause some other diseases such as impetigo, myositis, skin desquamation, necrotizing fasciitis, and acute rheumatic fever.
To reiterate, children are the usual victims of scarlet fever and the illness can happen at any time, although most cases are more common during spring and winter. It's highly contagious and is spread by coughing, sneezing, or direct contact with secretions or an infected person. A person can even spread the disease even without knowing he's a carrier. Food-borne spreading is rare. Invariably, the spread is more likely in crowded situations where persons come in close contacts with each other like daycare centers and schools.
There are different ranges of incubation for scarlet fever. Some peg it at 12 hours up to a week. Others from three to five days, with symptoms usually beginning on the second day of the disease. In any case, those who are infected will become most contagious during the first incubation or subclinical period and during the period of acute illness. Keep in mind that those rashes that appear aren't contagious. It is the primary strep infection that is contagious.
The greatest chances that one can get infected with scarlet fever are overcrowded environments like movie houses, schools, dormitories, and more. Again, children between the ages of five and fifteen are the most susceptible to scarlet fever, although those outside this range can also be infected. The illness is rare in children who are younger, especially newborns because they have their own natural protection in their mother's milk.
The most contagious period for this condition is during the subclinical phase and that can range from 12 hours to several days after getting exposed to the streptococcus bacteria. It's also most contagious during its acute phase where the person develops rashes with an accompanying fever.
How Does Scarlet Fever Spread?
One of the main causes of the transmission of scarlet fever is through fluids from an infected person's nose and mouth. So when someone who has this illness sneezes or coughs, the bacteria go into the air in the form of water droplets. Then the people in the surroundings can catch scarlet fever when they inhale those airborne droplets. They can also get infected when they touch objects which the droplets land on then they touch their mouth or nose.
Another way that this illness can spread is when someone touches the skin of a person who has a streptococcal skin infection. And when people share clothes, baths, bed linens, towels, and other personal items, this increases the risk of spreading the disease.
If someone suffers from scarlet fever, it's vital that he gets treated right away. Otherwise, he will be contagious for a number of weeks even after he stops manifesting the symptoms. A few lucky individuals may not react to the toxin. Instead, they would simply be carriers and spread the infection to others without manifesting any symptoms. This is because only the people who react to the toxin will develop and show the signs and symptoms of scarlet fever. Because of this, it's quite difficult for some people to even become aware that they've been exposed to the illness.
Some Facts About Scarlet Fever
If a person wants to understand an illness such as scarlet fever completely, it's important to learn everything about it. Being well-informed will help the person become more aware of the illness and, in turn, be able to prevent it more effectively. With that in mind, here are some facts about scarlet fever one should know about:
Scarlet fever is actually a bacterial infection which results in a fever and a rash. It's caused by the group A Streptococcus bacteria.
The bacteria which cause scarlet fever produces an erythrogenic toxin in the body.
Scarlet fever has an incubation period which can be as short as 12 hours and as long as a whole week.
Some of the common risk factors for this illness are the communal use of towels, utensils, and other personal items or overcrowding. The latter is especially risky for young children.
Scarlet fever also has a contagious period which ranges from up to 12 hours after the person gets exposed to the bacteria. In some cases, the person may not show any symptoms of the illness during this period. It's also highly contagious while in the acute phase when the person has a fever and a rash. Then the contagiousness of the illness ends when the fever is already gone.
Diagnosing scarlet fever typically involves a physical exam and the doctor asking about the patient's medical history. This is especially true if the person experiences a fever and has a rash.
The most common way to treat this illness is by taking antibiotics. Such medications are very effective against the streptococci which are infecting the body.
If left untreated, scarlet fever may lead to complications such as kidney problems, rheumatic fever, and other such severe health issues.
If diagnosed early and treated effectively, the prognosis of this particular illness is quite good. This is because the treatment would prevent any complications. But if they do develop, the prognosis starts to decrease depending on the severity of the complication.
Fortunately, it's possible to reduce or even prevent the risk of getting this disease simply by following some simple tips. We'll discuss these in detail in the next section.
Signs and Symptoms of Scarlet Fever
The signs and symptoms of scarlet fever may include a sore throat, a fever, and a red rash that's widespread and has a texture similar to sandpaper. One may also notice that his tongue looks like a strawberry, red-colored with small bumps. For some people, their throat or tongue may also have a coating that's whitish in color.
Scarlet fever, sometimes called scarlatina usually starts from an infection in the throat caused by the streptococcus bacteria. Some common symptoms include a sore throat, headache, tonsils which appear enlarged, chills, and fever. These symptoms may be accompanied by abdominal pain, nausea, and vomiting. Aside from the tongue having a strawberry-like appearance, the illness also has the hallmark symptom of a rash. It would usually start as small, flat, and red areas on the person's skin. Then these develop into small, bumpy, and red areas. The rash typically starts on the person's trunk and chest then extends to his legs and arms. However, the soles of his feet and his palms are usually spared from the rash. If one touches the rash, it would feel like sandpaper. Also, the creases of the skin may appear redder in color than normal. Then as the rash fades, the skin may start peeling.
Normally, the signs and symptoms of scarlet fever would emerge from 1-4 days after the person gets exposed to the infection. This is known as the incubation period. In most cases, scarlet fever occurs along with a streptococcal infection in the throat. This is why a lot of the signs and symptoms of the illness are similar to strep throat.
Diagnosis of Scarlet Fever
Health care providers can make a diagnosis if the child has scarlet fever based on certain information. This includes a physical examination, laboratory results, and the medical history of the child. Since scarlet fever is caused by a streptococcus bacteria, the health provider will most likely get a swab sample from the back of the throat and tonsils using a cotton swab. This will be used in the laboratory to evaluate the illness. There are several tests to determine the presence of scarlet fever:
Physical examination. A doctor will check the mouth, tongue, tonsils, and throat. He will be paying close attention to swollen glands, yellow or white specks in the throat and mouth. Fever, chills, and body aches are also checked. The doctor may inquire if the child has been recently vomiting, is losing his appetite or experiencing nausea.
Rapid Strep Test. For fast results, the sample may be subjected to a rapid antigen test also known as the rapid strep test. Results can be provided by this test in just a few minutes.
This test is fast and a convenient way to find out if the child harbors the bacteria which causes strep and scarlet fever. In case the test comes out negative, the swab will be sent to a laboratory for further tests. Taking a throat culture is a more thorough test to determine if the bacteria is really present.
Throat swab. If the doctor thinks that strep throat is the cause of the child's illness, a swab of the tonsils and throat will be taken. This swab will collect materials that are suspect of containing the scarlet fever bacteria.
By contrast, this throat culture procedure, which is more sensitive, can yield results between 1-2 days.
Health providers may also opt for a blood chemistry procedure. This can include a complete blood count which will demonstrate any proof of infection.
Streptococcal antibody testing can also provide evidence if the patient has been previously infected. However, this test serves no value in the acute stage of infection.
The streptococcal infection may arise from a different source other than the usual mouth area. There is a test conducted on such areas to determine if such alternative areas are the source of infection.
Health providers can turn to a patient's medical history as well as a physical examination to make an early diagnosis of the condition. A physical exam, for instance, can reveal that the patient has Thompson's signs or Patia's signs. These are either red or pink lines that form in the skin folds of the groin and armpits. These lines usually develop before the occurrence of rashes and will stay on the skin as pigmented lines even after the skin peels off in a process known as desquamation.
A doctor can get a throat swab or culture and have this tested in the laboratory to determine the presence of GABHS. As earlier stated, this group A beta-hemolytic streptococcus are bacteria responsible for scarlet fever. The problem here is that this same bacteria can also be the cause of other types of infections such as measles which manifest both fever and rashes. In such cases, the GABHS needs to be isolated to make sure that the diagnosis is that of scarlet fever. For this, the services of a specialist in infectious diseases will be needed, especially if the person develops any complications. If the GABHS isn't present in the conducted tests, then it's most probable that the signs and symptoms are caused by some other underlying problem. If one's child develops a sore throat, accompanied by rashes and a fever, call the doctor immediately.
Treatment of Scarlet Fever
Antibiotics against GABHS are the most effective defense for treating scarlet fever. A penicillin medication administered orally for 10 days is an effective treatment. If the patient is having problems retaining oral antibiotics, then the patient can receive treatment in the form of a penicillin G benzathine injection, but these injection cases are rare. Antibiotics of the cephalosporin family are also as effective. In fact, these were used in the latest outbreak of scarlet fever in China because the GABHS have shown resistance to the antibiotics that were typically used.
Scarlet fever seems less of a problem now because of antibiotics. It's the most effective drug used against the illness. Furthermore, antibiotics can prevent potential complications that usually accompany a streptococcal infection (rheumatic fever for one). Their use can also cut down the duration of the disease's symptoms and can lessen its contagiousness. On the average, an infected person who has taken the antibiotic for at least a whole day will no longer be a threat in transmitting the disease.
We have always associated antibiotics with the treatment of infections. Rightly so because it's the most popular for dealing with such problems. The most widely-used antibiotic is penicillin VK, which is administered orally for 10 days and penicillin G benzathine, which is administered in a one-time intra-muscular injection. Cephalosporin drug class is an alternative antibiotic. Keep in mind the importance of completing the entire course of the antibiotic that is prescribed to a person. Not finishing the course leads to an inadequate treatment of the infection and this could lead to the development of potential complications.
Other Therapies Or Treatment Options For Scarlet Fever
The recommendation and prescription of antibiotics are necessary for dealing with a medical problem that already exists. Actually, these may not even be needed if one can keep his immune system healthy, especially for people who are prone to catching whatever disease is making the rounds.
Dietary modifications. There are many foods out there that contain antioxidants, minerals, and vitamins, all of which can help in boosting the immune system. Some of these are vegetables, fruits, whole grains, nuts, seeds, and legumes. Herbs and spices like onions, ginger, and garlic are also excellent dietary additions because they contain antibiotic properties.
Adequate rest and sleep. Nobody needs to tell people about the importance of sleep and rest when they're under the weather. Remember that sleep time is also the time for the body to grow and repair damaged tissues. Sleep is important, make it a point to sleep at least 8 hours every night. When a person is deprived of it, the immune system is weakened and will be producing fewer killer cells necessary to eliminate the cells that have been infected by bacteria and/or viruses.
Supplements. The foods we eat may not be able to provide all the nutrients that the body needs and we turn to supplements to fill up the void. To build up a healthy immune system, we can use a Chinese herb called astragalus during the flu and cold seasons. This herb which is available in tincture or capsule form is a supplement that can further boost the immune system. It's safe for daily use even for children. Another supplement worth considering is one which contains a number of species of mushrooms which can boost the immune system and which can further enhance resistance to illnesses. Again, this is also safe for both adults (to take a full dose) and children (to take a half dose).
Prevention. Scarlet fever can easily be spread around through respiratory secretions of an infected person. Any infected surface becomes a source of the disease as the secretions will contain millions of bacteria.
Properly washing one's hands is one of the best ways to prevent transmission. When we are in close proximity to sick persons, make sure to wash hands afterward. This goes the same for all members of the household. Remind them that scarlet fever is a highly contagious disease.
Other precautions include covering one's nose and mouth when sneezing or coughing, not sharing the same eating utensils and glasses, and avoiding contact with the sick person. Those who have been infected should get rid of their toothbrushes too. Then purchase a new replacement.
Home Remedies and Follow-up Care for Scarlet Fever
The doctor can help one prepare in case his child has been diagnosed with this condition. These can include various measures to ease the symptoms of the illness and to hasten the recovery time at home. Nowadays, complications resulting from the disease are rare. Most cases now are treated and managed in the comfort of their own home. Here are some home remedies for scarlet fever:
Over-the-counter medications for fever reduction and pain control can be purchased at the local drugstore. Ibuprofen (Motrin or Advil) or acetaminophen (Tylenol) are the most common pain relievers.
Sufficient rest and an increased intake of fluids. These factors are very important, especially in promoting rapid recovery.
Gargling or sucking on lozenges. There is that old remedy of gargling with warm water and salt which can offer relief as well. For those who contract pharyngitis, throat lozenges are the most popular for temporary relief from sore throats.
Make it a point to include follow-up visits to the health provider. This will ensure, through regular monitoring, that the recovery process will be complete with no complications. If one is diagnosed with the illness but the recommended remedies aren't working and the conditions are still getting worse, promptly consult with a health provider.
Many of us who have been diagnosed with a positive rapid strep may expect immediate relief when treated with antibiotics. This might not always be the case but one thing for sure is that the antibiotic will cut down the time that the person may be spreading the disease to other people. Taking the antibiotic will also reduce the risk of the disease spreading to the person's other body parts.
Delaying the treatment of scarlet fever for one or two days isn't really a cause for alarm. That's just the right amount of time for the results of a throat culture test. Antibiotics can also prevent the occurrence of rheumatic fevers even if they are started up to nine days after the symptoms start to manifest themselves. There are other strategies which can help in relieving the disease's symptoms:
Drinking plenty of fluids, even when there's no appetite.
Living conditions should be kept cool.
Medications can help relieve pains and fever.
Applying calamine lotion can reduce the itching.
Possible Complications of Scarlet Fever
If scarlet fever is left unchecked or not properly treated, complications may arise which may include post-streptococcal glomerulonephritis, a type of kidney disease. Rheumatic fever can also occur. This is a type of inflammatory disease caused by a cross-reactivity of antibodies which can affect the heart, skin, brain, and joints.
Rheumatic complications may start 2-3 weeks after initial exposure to the disease. Children between 6-15 are the most vulnerable to the development of rheumatic fever. Glomerular complications can begin 2-3 weeks after the throat has been infected or 3-6 weeks after the skin has been infected. These complications may cause more issue in adults than in children. Although most will not experience these complications, the following illnesses can occur:
Ear infections like otitis media
Throat abscesses
Inflamed kidneys caused by the immune system's response to the strep bacteria
Possible long-term kidney disease
This next list of complications are also possible, but they are extremely rare:
Meningitis or the inflammation of the membranes that surround the spinal column or the brain
Necrotizing fasciitis, which is a very serious flesh-eating disease
Toxic shock syndrome
Endocarditis, which is an infection of the heart's inner linings
Infection of the bones and the bone marrows. This is a condition known as osteomyelitis.
Another risk that can be attributed to streptococcal infections is a pediatric autoimmune neuropsychiatric disorder. This is a behavioral disorder that begins before puberty and is associated with GABHS infections. The disorders can include obsessive-compulsive disorders (OCD), Tourette's syndrome, and attention deficit hyperactivity disorder (ADHD). The increase in symptoms usually goes away after a few weeks or months.
The Prognosis of Scarlet Fever
If scarlet fever is treated properly, the prognosis for the disease is generally excellent. This means that the infected patients will recover fully and their skin symptoms and conditions will decrease over the next few weeks. Conversely, untreated cases will have a dire prognosis. Before the advent of antibiotic medications, this illness had a mortality rate of up to 20%. Compared to the present where the mortality rate is even less than 1%. This is because of the early diagnosis and treatment of the disease. Antibiotics play the biggest role in the abrupt decrease in mortality. Early diagnosis and treatment of scarlet fever will result in a few if any, long-term effects.
Proper treatments for scarlet fever patients can only yield excellent prognoses. In actuality, there are no long-term consequences in most scarlet fever cases. Improvement starts in a few days after taking antibiotics. Nowadays, serious complications are rare as a result of scarlet fever and any streptococcal infections.
Can You Prevent Scarlet Fever?
Often times, the best solution is the simplest solution. How then can we prevent scarlet fever? By simply washing your hands and taking necessary precautions like staying away from the communal use of towels, utensils, and other such items. Since scarlet fever is transmitted from one person to another through small droplets, direct contact with those infected must be avoided. People who have taken antibiotics and don't show any signs of fever for 24 hours are already considered not-contagious. Unfortunately, there are no vaccines available to prevent the illness.
The early and proper treatment with antibiotics is the best preventive way against scarlet fever. If this is accomplished, the chances of developing scarlet fever are decreased or even eliminated. Antibiotics have indeed turned the tables against scarlet fever because it has reduced its mortality rate significantly.
We're all familiar with the adage "an ounce of prevention is worth a pound of cure." This is so applicable with scarlet fever. In order not to contract the disease, we should avoid contact with persons who have been diagnosed with sore throats. Don't send the kids to school or the day-care center until the infected kids are treated with antibiotics for at least 24 hours. For the infected ones, they should practice some good hygiene practices like washing their hands frequently, covering their nose and mouth when sneezing or coughing, using separate utensils and cups, and so on.
Here are some more ways to prevent the transmission of scarlet fever and other infectious diseases to that matter:
Isolation or staying away from other people. For kids, stay away from school until he/she is no longer contagious.
Washing or disposing of tissues immediately after use. Also, wash hands thoroughly with warm water and soap.
Don't share drinking glasses or eating utensils.
Cover mouth and nose when coughing or sneezing by using a handkerchief. One can also use the inside of his elbow when sneezing or coughing.
FAQs About Scarlet Fever for Parents
Scarlet fever was thought to have been eliminated like scurvy and rickets during the Victorian era. However, the assumption was wrong because scarlet fever made a comeback in the 1960s. To understand this illness more, let's take a look at some FAQs about it:
What Is Scarlet Fever?
This is a disease caused by bacteria and targets mostly young children, those aged 10 years old and below. The most observable symptoms are skin infections, a sore throat, and a rash that's bright pink in color from where the disease got its name.
The symptoms usually start as red blotches. These eventually will turn into fine pinkish-red rashes with a sandpaper-like texture. This could be accompanied by a fever, a headache and at times, a swollen tongue. After one or two days, the rashes will develop followed by vomiting and nausea.
How Does One Catch Scarlet Fever?
As we stated earlier, this is a highly contagious disease which can be transmitted by direct sneezing, coughing, direct contact with an infected person, or handling objects that have been contaminated like beddings, bath towels, and more.
Scarlet fever can happen any time of year but most cases happen during spring and winter. Good hygiene practices can help prevent or lessen the spread of scarlet fever. Washing hands frequently, avoiding contact with contaminated objects, and such are simple practices that must be followed.
What Should A Person Do If He Thinks His Child Has Scarlet Fever?
During older times, those who were suspected of having scarlet fever were usually quarantined. Things are different now but it's still essential that suspected carriers be diagnosed then treated. Aside from this, basic steps are also taken to make sure the disease is not transmitted. Most of the scarlet fever cases will have the disease clearing out on its own accord. However, it's still advisable to consult with a doctor if one thinks his child has the disease.
How Is Scarlet Fever Treated?
To reiterate, antibiotics is the main course in treating scarlet fever. Taking this will ensure fast recovery, reduce the amount of time that one is contagious, and decrease the risk of complications that may arise. Treatment usually takes 10 days and treated children will usually start to feel better after only 24 hours. The symptoms should clear up after a couple of days. But be reminded of the entire course of treatment. Most doctors will recommend that infected persons being treated should stay home for 24 hours after starting on the antibiotics.
Can Scarlet Fever Become Serious?
Scarlet fever was one of the leading causes of death in the past where the mortality rate was up to 20%. Most of the victims were infants. Nowadays, people don't worry too much about the disease because of antibiotics and some good hygiene practices that need to be followed. Frankly, scarlet fever isn't at all terrifying and the vast majority who have experienced the disease recovered quickly without any complications. Only keep in mind that the treatment should be strictly followed to avoid any complications that may potentially occur.
Complications in the treatment of scarlet fever are rare but are still easily treatable if the symptoms are observed and treated early. In very rare cases, complications can happen, from relatively mild issues like ear infections or something as serious as kidney damage for more severe cases.
Always check with the doctor if one has health concerns about his child regarding scarlet fever. If the symptoms become worse, always bring the child to the doctor for further analysis as soon as possible.
How To Find The Best Organic Multivitamin for Women?
The Ultimate Guide To Leg Day Nutrition - Infographic


"We're obviously pleased the court reversed the conviction," said Hanni Fakhoury, one of Auernheimer's attorneys.
"While the case was primarily about the CFAA, the government's venue theory was very dangerous, presenting a real risk that defendants could be hailed anywhere in the country to face a criminal trial," Fakhoury said. "The court was very critical of the government's theory which is important going forward in criminal cases to come, especially as the Internet makes the world more inter-connected."