You're always so pretty, Athena.
Athena! That effect your Mommy has used is spectacular! Mes LOVES it!
That effect makes your eyes look really cool, Athena.
What a pretty framed portrait !
Love this, cool effect! Have a great Caturday!
Athena, the colors compliment your furrs purrfectly.
COOL effect your mom-person have found , Athena !
That's a great photo. I posterized too this week too. Yesterday was the 25th Anniversary of Photoshop so I had to use it to celebrate.
Athena you are so beautiful!
Everyone has such great art!
Yous lookin' bootyful Athena. And me actually membered to link up this week. 2 in a row. Meez duin' good. Hav a pawsum weekend.
You are just beautiful as always, Athena. It looks like posterize was a popular affect this week. We used it too.
Sorry we are a bit late in joining in!!
That's a great poster of you, Athena! We'd hang it on our wall, for sure!


Idaho has a menu all it's own. It isn't just potatoes around here anymore. So we want to know which food that is popular in Idaho is the most overrated?
If you ask me, I love everything on this list, but I am sure there are plenty who think the food here is overrated.
So we want to know, which one of these delicious foods that Idaho is known for is overrated?


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.IO;
using System.Net.Security;
using System.Net.Sockets;
using System.Runtime.ExceptionServices;
using System.Security.Cryptography;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace System.Net.WebSockets
{
    internal sealed class WebSocketHandle
    {
        /// Per-thread cached StringBuilder for building of strings to send on the connection.
        [ThreadStatic]
        private static StringBuilder t_cachedStringBuilder;

        /// Default encoding for HTTP requests. Latin alphabeta no 1, ISO/IEC 8859-1.
        private static readonly Encoding s_defaultHttpEncoding = Encoding.GetEncoding(28591);

        /// Size of the receive buffer to use.
        private const int DefaultReceiveBufferSize = 0x1000;
        /// GUID appended by the server as part of the security key response.  Defined in the RFC.
        private const string WSServerGuid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";

        private readonly CancellationTokenSource _abortSource = new CancellationTokenSource();
        private WebSocketState _state = WebSocketState.Connecting;
        private ManagedWebSocket _webSocket;

        public static WebSocketHandle Create() => new WebSocketHandle();

        public static bool IsValid(WebSocketHandle handle) => handle != null;

        public WebSocketCloseStatus? CloseStatus => _webSocket?.CloseStatus;

        public string CloseStatusDescription => _webSocket?.CloseStatusDescription;

        public WebSocketState State => _webSocket?.State ?? _state;

        public string SubProtocol => _webSocket?.SubProtocol;

        public static void CheckPlatformSupport() { /* nop */ }

        public void Dispose()
        {
            _state = WebSocketState.Closed;
            _webSocket?.Dispose();
        }

        public void Abort()
        {
            _abortSource.Cancel();
            _webSocket?.Abort();
        }

        public Task SendAsync(ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken) =>
            _webSocket.SendAsync(buffer, messageType, endOfMessage, cancellationToken);

        public Task<WebSocketReceiveResult> ReceiveAsync(ArraySegment<byte> buffer, CancellationToken cancellationToken) =>
            _webSocket.ReceiveAsync(buffer, cancellationToken);

        public Task CloseAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken) =>
            _webSocket.CloseAsync(closeStatus, statusDescription, cancellationToken);

        public Task CloseOutputAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken) =>
            _webSocket.CloseOutputAsync(closeStatus, statusDescription, cancellationToken);

        public async Task ConnectAsyncCore(Uri uri, CancellationToken cancellationToken, ClientWebSocketOptions options)
        {
            // TODO: Not currently implemented, or explicitly ignored:
            // - ClientWebSocketOptions.UseDefaultCredentials
            // - ClientWebSocketOptions.Credentials
            // - ClientWebSocketOptions.Proxy
            // - ClientWebSocketOptions._sendBufferSize

            // Establish connection to the server
            CancellationTokenRegistration registration = cancellationToken.Register(s => ((WebSocketHandle)s).Abort(), this);
            try
            {
                // Connect to the remote server
                Socket connectedSocket = await ConnectSocketAsync(uri.Host, uri.Port, cancellationToken).ConfigureAwait(false);
                Stream stream = new AsyncEventArgsNetworkStream(connectedSocket);

                // Upgrade to SSL if needed
                if (uri.Scheme == UriScheme.Wss)
                {
                    var sslStream = new SslStream(stream);
                    await sslStream.AuthenticateAsClientAsync(
                        uri.Host,
                        options.ClientCertificates,
                        SecurityProtocol.AllowedSecurityProtocols,
                        checkCertificateRevocation: false).ConfigureAwait(false);
                    stream = sslStream;
                }

                // Create the security key and expected response, then build all of the request headers
                KeyValuePair<string, string> secKeyAndSecWebSocketAccept = CreateSecKeyAndSecWebSocketAccept();
                byte[] requestHeader = BuildRequestHeader(uri, options, secKeyAndSecWebSocketAccept.Key);

                // Write out the header to the connection
                await stream.WriteAsync(requestHeader, 0, requestHeader.Length, cancellationToken).ConfigureAwait(false);

                // Parse the response and store our state for the remainder of the connection
                string subprotocol = await ParseAndValidateConnectResponseAsync(stream, options, secKeyAndSecWebSocketAccept.Value, cancellationToken).ConfigureAwait(false);

                _webSocket = ManagedWebSocket.CreateFromConnectedStream(
                    stream, false, subprotocol, options.KeepAliveInterval, options.ReceiveBufferSize, options.Buffer);

                // If a concurrent Abort or Dispose came in before we set _webSocket, make sure to update it appropriately
                if (_state == WebSocketState.Aborted)
                {
                    _webSocket.Abort();
                }
                else if (_state == WebSocketState.Closed)
                {
                    _webSocket.Dispose();
                }
            }
            catch (Exception exc)
            {
                if (_state < WebSocketState.Closed)
                {
                    _state = WebSocketState.Closed;
                }

                Abort();

                if (exc is WebSocketException)
                {
                    throw;
                }
                throw new WebSocketException(SR.net_webstatus_ConnectFailure, exc);
            }
            finally
            {
                registration.Dispose();
            }
        }

        /// Connects a socket to the specified host and port, subject to cancellation and aborting.
        /// <param name="host">The host to which to connect.</param>
        /// <param name="port">The port to which to connect on the host.</param>
        /// <param name="cancellationToken">The CancellationToken to use to cancel the websocket.</param>
        /// <returns>The connected Socket.</returns>
        private async Task<Socket> ConnectSocketAsync(string host, int port, CancellationToken cancellationToken)
        {
            IPAddress[] addresses = await Dns.GetHostAddressesAsync(host).ConfigureAwait(false);

            ExceptionDispatchInfo lastException = null;
            foreach (IPAddress address in addresses)
            {
                var socket = new Socket(address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                try
                {
                    using (cancellationToken.Register(s => ((Socket)s).Dispose(), socket))
                    using (_abortSource.Token.Register(s => ((Socket)s).Dispose(), socket))
                    {
                        try
                        {
                            await socket.ConnectAsync(address, port).ConfigureAwait(false);
                        }
                        catch (ObjectDisposedException ode)
                        {
                            // If the socket was disposed because cancellation was requested, translate the exception
                            // into a new OperationCanceledException.  Otherwise, let the original ObjectDisposedexception propagate.
                            CancellationToken token = cancellationToken.IsCancellationRequested ? cancellationToken : _abortSource.Token;
                            if (token.IsCancellationRequested)
                            {
                                throw new OperationCanceledException(new OperationCanceledException().Message, ode, token);
                            }
                        }
                    }
                    cancellationToken.ThrowIfCancellationRequested(); // in case of a race and socket was disposed after the await
                    _abortSource.Token.ThrowIfCancellationRequested();
                    return socket;
                }
                catch (Exception exc)
                {
                    socket.Dispose();
                    lastException = ExceptionDispatchInfo.Capture(exc);
                }
            }

            lastException?.Throw();

            Debug.Fail("We should never get here. We should have already returned or an exception should have been thrown.");
            throw new WebSocketException(SR.net_webstatus_ConnectFailure);
        }

        /// Creates a byte[] containing the headers to send to the server.
        /// <param name="uri">The Uri of the server.</param>
        /// <param name="options">The options used to configure the websocket.</param>
        /// <param name="secKey">The generated security key to send in the Sec-WebSocket-Key header.</param>
        /// <returns>The byte[] containing the encoded headers ready to send to the network.</returns>
        private static byte[] BuildRequestHeader(Uri uri, ClientWebSocketOptions options, string secKey)
        {
            StringBuilder builder = t_cachedStringBuilder ?? (t_cachedStringBuilder = new StringBuilder());
            Debug.Assert(builder.Length == 0, $"Expected builder to be empty, got one of length {builder.Length}");
            try
            {
                builder.Append("GET ").Append(uri.PathAndQuery).Append(" HTTP/1.1\r\n");

                // Add all of the required headers
                builder.Append("Host: ").Append(uri.IdnHost).Append(":").Append(uri.Port).Append("\r\n");
                builder.Append("Connection: Upgrade\r\n");
                builder.Append("Upgrade: websocket\r\n");
                builder.Append("Sec-WebSocket-Version: 13\r\n");
                builder.Append("Sec-WebSocket-Key: ").Append(secKey).Append("\r\n");

                // Add all of the additionally requested headers
                foreach (string key in options.RequestHeaders.AllKeys)
                {
                    builder.Append(key).Append(": ").Append(options.RequestHeaders[key]).Append("\r\n");
                }

                // Add the optional subprotocols header
                if (options.RequestedSubProtocols.Count > 0)
                {
                    builder.Append(HttpKnownHeaderNames.SecWebSocketProtocol).Append(": ");
                    builder.Append(options.RequestedSubProtocols[0]);
                    for (int i = 1; i < options.RequestedSubProtocols.Count; i++)
                    {
                        builder.Append(", ").Append(options.RequestedSubProtocols[i]);
                    }
                    builder.Append("\r\n");
                }

                // Add an optional cookies header
                if (options.Cookies != null)
                {
                    string header = options.Cookies.GetCookieHeader(uri);
                    if (!string.IsNullOrWhiteSpace(header))
                    {
                        builder.Append(HttpKnownHeaderNames.Cookie).Append(": ").Append(header).Append("\r\n");
                    }
                }

                // End the headers
                builder.Append("\r\n");

                // Return the bytes for the built up header
                return s_defaultHttpEncoding.GetBytes(builder.ToString());
            }
            finally
            {
                // Make sure we clear the builder
                builder.Clear();
            }
        }

        ///
        /// Creates a pair of a security key for sending in the Sec-WebSocket-Key header and
        /// the associated response we expect to receive as the Sec-WebSocket-Accept header value.
        ///
        /// <returns>A key-value pair of the request header security key and expected response header value.</returns>
        private static KeyValuePair<string, string> CreateSecKeyAndSecWebSocketAccept()
        {
            string secKey = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
            using (SHA1 sha = SHA1.Create())
            {
                return new KeyValuePair<string, string>(
                    secKey,
                    Convert.ToBase64String(sha.ComputeHash(Encoding.ASCII.GetBytes(secKey + WSServerGuid))));
            }
        }

        /// Read and validate the connect response headers from the server.
        /// <param name="stream">The stream from which to read the response headers.</param>
        /// <param name="options">The options used to configure the websocket.</param>
        /// <param name="expectedSecWebSocketAccept">The expected value of the Sec-WebSocket-Accept header.</param>
        /// <param name="cancellationToken">The CancellationToken to use to cancel the websocket.</param>
        /// <returns>The agreed upon subprotocol with the server, or null if there was none.</returns>
        private async Task<string> ParseAndValidateConnectResponseAsync(
            Stream stream, ClientWebSocketOptions options, string expectedSecWebSocketAccept, CancellationToken cancellationToken)
        {
            // Read the first line of the response
            string statusLine = await ReadResponseHeaderLineAsync(stream, cancellationToken).ConfigureAwait(false);

            // Depending on the underlying sockets implementation and timing, connecting to a server that then
            // immediately closes the connection may either result in an exception getting thrown from the connect
            // earlier, or it may result in getting to here but reading 0 bytes.  If we read 0 bytes and thus have
            // an empty status line, treat it as a connect failure.
            if (string.IsNullOrEmpty(statusLine))
            {
                throw new WebSocketException(SR.Format(SR.net_webstatus_ConnectFailure));
            }

            const string ExpectedStatusStart = "HTTP/1.1 ";
            const string ExpectedStatusStatWithCode = "HTTP/1.1 101"; // 101 == SwitchingProtocols

            // If the status line doesn't begin with "HTTP/1.1" or isn't long enough to contain a status code, fail.
            if (!statusLine.StartsWith(ExpectedStatusStart, StringComparison.Ordinal) || statusLine.Length < ExpectedStatusStatWithCode.Length)
            {
                throw new WebSocketException(WebSocketError.HeaderError);
            }

            // If the status line doesn't contain a status code 101, or if it's long enough to have a status description
            // but doesn't contain whitespace after the 101, fail.
            if (!statusLine.StartsWith(ExpectedStatusStatWithCode, StringComparison.Ordinal) ||
                (statusLine.Length > ExpectedStatusStatWithCode.Length && !char.IsWhiteSpace(statusLine[ExpectedStatusStatWithCode.Length])))
            {
                throw new WebSocketException(SR.net_webstatus_ConnectFailure);
            }

            // Read each response header. Be liberal in parsing the response header, treating
            // everything to the left of the colon as the key and everything to the right as the value, trimming both.
            // For each header, validate that we got the expected value.
            bool foundUpgrade = false, foundConnection = false, foundSecWebSocketAccept = false;
            string subprotocol = null;
            string line;
            while (!string.IsNullOrEmpty(line = await ReadResponseHeaderLineAsync(stream, cancellationToken).ConfigureAwait(false)))
            {
                int colonIndex = line.IndexOf(':');
                if (colonIndex == -1)
                {
                    throw new WebSocketException(WebSocketError.HeaderError);
                }

                string headerName = line.SubstringTrim(0, colonIndex);
                string headerValue = line.SubstringTrim(colonIndex + 1);

                // The Connection, Upgrade, and SecWebSocketAccept headers are required and with specific values.
                ValidateAndTrackHeader(HttpKnownHeaderNames.Connection, "Upgrade", headerName, headerValue, ref foundConnection);
                ValidateAndTrackHeader(HttpKnownHeaderNames.Upgrade, "websocket", headerName, headerValue, ref foundUpgrade);
                ValidateAndTrackHeader(HttpKnownHeaderNames.SecWebSocketAccept, expectedSecWebSocketAccept, headerName, headerValue, ref foundSecWebSocketAccept);

                // The SecWebSocketProtocol header is optional.  We should only get it with a non-empty value if we requested subprotocols,
                // and then it must only be one of the ones we requested.  If we got a subprotocol other than one we requested (or if we
                // already got one in a previous header), fail. Otherwise, track which one we got.
                if (string.Equals(HttpKnownHeaderNames.SecWebSocketProtocol, headerName, StringComparison.OrdinalIgnoreCase) &&
                    !string.IsNullOrWhiteSpace(headerValue))
                {
                    string newSubprotocol = options.RequestedSubProtocols.Find(requested => string.Equals(requested, headerValue, StringComparison.OrdinalIgnoreCase));
                    if (newSubprotocol == null || subprotocol != null)
                    {
                        throw new WebSocketException(
                            WebSocketError.UnsupportedProtocol,
                            SR.Format(SR.net_WebSockets_AcceptUnsupportedProtocol, string.Join(", ", options.RequestedSubProtocols), subprotocol));
                    }
                    subprotocol = newSubprotocol;
                }
            }
            if (!foundUpgrade || !foundConnection || !foundSecWebSocketAccept)
            {
                throw new WebSocketException(SR.net_webstatus_ConnectFailure);
            }

            return subprotocol;
        }

        /// Validates a received header against expected values and tracks that we've received it.
        /// <param name="targetHeaderName">The header name against which we're comparing.</param>
        /// <param name="targetHeaderValue">The header value against which we're comparing.</param>
        /// <param name="foundHeaderName">The actual header name received.</param>
        /// <param name="foundHeaderValue">The actual header value received.</param>
        /// <param name="foundHeader">A bool tracking whether this header has been seen.</param>
        private static void ValidateAndTrackHeader(
            string targetHeaderName, string targetHeaderValue,
            string foundHeaderName, string foundHeaderValue,
            ref bool foundHeader)
        {
            bool isTargetHeader = string.Equals(targetHeaderName, foundHeaderName, StringComparison.OrdinalIgnoreCase);
            if (!foundHeader)
            {
                if (isTargetHeader)
                {
                    if (!string.Equals(targetHeaderValue, foundHeaderValue, StringComparison.OrdinalIgnoreCase))
                    {
                        throw new WebSocketException(SR.Format(SR.net_WebSockets_InvalidResponseHeader, targetHeaderName, foundHeaderValue));
                    }
                    foundHeader = true;
                }
            }
            else
            {
                if (isTargetHeader)
                {
                    throw new WebSocketException(SR.Format(SR.net_webstatus_ConnectFailure));
                }
            }
        }

        /// Reads a line from the stream.
        /// <param name="stream">The stream from which to read.</param>
        /// <param name="cancellationToken">The CancellationToken used to cancel the websocket.</param>
        /// <returns>The read line, or null if none could be read.</returns>
        private static async Task<string> ReadResponseHeaderLineAsync(Stream stream, CancellationToken cancellationToken)
        {
            StringBuilder sb = t_cachedStringBuilder;
            if (sb != null)
            {
                t_cachedStringBuilder = null;
                Debug.Assert(sb.Length == 0, $"Expected empty StringBuilder");
            }
            else
            {
                sb = new StringBuilder();
            }

            var arr = new byte[1];
            char prevChar = '\0';
            try
            {
                // TODO: Reading one byte is extremely inefficient.  The problem, however,
                // is that if we read multiple bytes, we could end up reading bytes post-headers
                // that are part of messages meant to be read by the managed websocket after
                // the connection.  The likely solution here is to wrap the stream in a BufferedStream,
                // though a) that comes at the expense of an extra set of virtual calls, b)
                // it adds a buffer when the managed websocket will already be using a buffer, and
                // c) it's not exposed on the version of the System.IO contract we're currently using.
                while (await stream.ReadAsync(arr, 0, 1, cancellationToken).ConfigureAwait(false) == 1)
                {
                    // Process the next char
                    char curChar = (char)arr[0];
                    if (prevChar == '\r' && curChar == '\n')
                    {
                        break;
                    }
                    sb.Append(curChar);
                    prevChar = curChar;
                }

                if (sb.Length > 0 && sb[sb.Length - 1] == '\r')
                {
                    sb.Length = sb.Length - 1;
                }

                return sb.ToString();
            }
            finally
            {
                sb.Clear();
                t_cachedStringBuilder = sb;
            }
        }
    }
}

redpajama_set_name: RedPajamaGithub


The Cyclist Area: Private dining for up to 30 people!
Need a small intimate space? Consider our Cyclist Area! This space is situated downstairs at BSKT, separate from the general public. This area can be yours if you spend at least $200! If you are looking at any food packages such as sharing salad bowls, dip boards or grazing boards, we can make that possible! Perfect for baby showers or small birthday gatherings! Bookings can be made by contacting Clare our Events Manager at events@bskt.com.au !


text:
Henri Léon Nagant (Luik, 2 september 1833 – aldaar, 23 februari 1900) was een Belgisch ontwerper en fabrikant van wapens en auto's.

In 1859 richtte hij samen met zijn broer Émile het bedrijf Nagant Frères op in Luik, waaruit de wereldberoemde wapenfabriek Fabrique d'Armes Em. & L. Nagant groeide. Léon hield zich vooral bezig met de ontwikkeling van revolvers en met de verkoop. Émile werd geleidelijk blind en moest in 1896 stoppen. Léon maakte een doorstart onder de naam Fabrique d'Armes Léon Nagant en begon onder invloed van zijn zonen Charles (1863-1932) en Maurice (1865-1932) met de productie van auto's.

Na het overlijden van Léon Nagant namen zijn zonen de leiding van het bedrijf over.

Voetnoten

Belgisch ondernemer
Wapenfabrikant
Autofabrikant

redpajama_set_name: RedPajamaWikipedia


Are you ready for the most over-used line on blogs.... 'I know I haven't been posting for a-'.. yeah yeah, let's just skip all that. 'I've been busy. lazy. etc. I'll try to do better. ' ok done.
Now onto more exciting things!
From January to April of this year I was busy working on my thesis. If I haven't mentioned it before, I studied Media, (what a stupidly broad term) and ended up making my thesis about stop motion animation. Luckily this didn't just entail reading and writing about stop motion animation, but actually the creation of my own animation: Dear Bear.
I've shared a few of my mini stop motion animations here before, but keep in mind that these previous works were usually created in a matter of hours. My goal with this animation was to create something more intricate and to really take time to build the set, create the characters, craft a story, and then bring it all to life.
The majority of my time was spent in the planning and building of the animation. Despite the strict mental deadline I set for coming up with a story, my brain refused to cooperate. This was a less than ideal start to the project, and actually even thinking about that time now makes me feel anxious! But anyways, obviously I came up with a story and then I was really able to get all the wheels in motion.
For the animation I built two sets, one exterior and one interior. The exterior was for the most part made from cardboard and newspaper-mache (is that a thing? do I need to specify that it was 'news'? :D.. anyways.-_-) as well as some natural sponges for the trees, and Popsicle sticks. For the inside I used a variety of cloths, Popsicle sticks, oven-hardening clay, wood and cardboard.
My gosh, I think writing a whole thesis about this animation has made me incapable of just sharing it without a lengthy prequel of information. So without further ado, here is Dear Bear.
I'd love to hear what you thought! <3 And what do you think of stop motion in general? Is it a visual style you enjoy watching or not? And if any of you have created stop motion animations please share them with me!


New Germany State Park will host the fourth annual EGGstreme Easter Egg Hunt on April 20 from 10 a.m. to 2 p.m. This event is designed for families to experience the outdoors together and will feature over 1,000 eggs strategically hidden along 10 miles of trails within the park.
In support of this unique event, the Friends of New Germany State Park is seeking donations of candy and plastic eggs for participants. Candy must be store-bought and individually wrapped.
For questions or to get involved as a volunteer, please email or call 301-895-5453.


Purchased at THE sale for 2-year-old winners, the Goffs Premier Yearling Sale, this colt is by RED JAZZ, who stands at the famous Ballyhane Stud, where our very own 2013 Champion 2yo Toormore was conceived. Subsequently we have had plenty of successes on the track from both Ballyhane offspring as well as from horses by Ballyhane Stallions Arakan, Dandy Man and now Red Jazz.
This colt is all power and prowess. He strikes you as the sort of horse that you'd want on your side if you were to go into battle; a real no-nonsense racehorse with a fabulous temperament. Very speedily bred on both his sire's and his dam's side; sped on speed at is known. With the looks to match his pedigree, you'd imagine he'll be a 5f and 6f speedster in the first half of the 2018 season but his size and his birthday of 12th April means there will be plenty of improvement to come from him, both over the Winter and during the second half of his 2018 campaign. He's not just an early, one trick pony.
Out of a Mare by the very fast Kings Stand Winner ELBIO, and now she's visited the Challenge Stakes winning sprinter Red Jazz you can see that speed is what this very robust colt is bred for. Both Red Jazz and Elbio progressed with age and that should apply too, to this hardy colt.
He looks a very good sort of colt for all big Sales races in 2018 which often catty pots of well in excess of £100,000. He looks just the ticket for the Weatherby's Super Sprint held at Newbury in July given his very sensible and reasonable price tag of £10,000 in August 2017. Keith Dalgleish has performed so well with horse just like this colt for us, notably the inexpensively bought €11,000 Clem Fandango and €9000 Miss Bar Beach, both of whom are Listed and Group performers. Could this speedily bred son of Red Jazz be another?
Red Bond overturns the hot favourite!


The message, which is spreading on WhatsApp and Facebook, show a picture of Dr Mahathir standing while an unidentified man holds his arm, followed by another photo of him bent over on the floor, supporting himself with his hands.
PETALING JAYA - Tun Dr Mahathir Mohamad is all right, unlike a viral message featuring two photos which paint a picture that he fell (tersungkur) during prayers (Solat Sunat Aidiladha) at Masjid Negara on Wednesday (Aug 22) morning.
The message said that the Prime Minister had tripped in the mosque as he was "stressed out over various reasons".
However, an aide close to Dr Mahathir debunked the fake news as "propaganda".
"He did not trip... he is doing okay," he told The Star.
In reality, the aide said that the sequence of pictures taken by blogger Minaq Jinggo was reversed, and the original sequence of photos show Dr Mahathir getting up after performing prayers.
"The photos were meant to tell the world that PM7 (the seventh prime minister, Dr Mahathir) is able to lift himself up without assistance. He is still very fit to do so even with little rest after the trip to China," said the veteran photographer to The Star.
Malaysian leader Mahathir Mohamad, 92, has become the world's oldest head of state. How does he compare to other Asian leaders?


This adorable bin organiser is ideal for use anywhere in the home. Perfect for organising desk, counter, dresser, or tabletop.
It is made of cotton and plastic lined so it could keep in shape. When you aren't using, you can quickly fold it and stow it away. Out of the sight until you need them again.


LOVE Island's Jamie Jewitt appears to have found love in the villa with beauty Camilla Thurlow.
Love Island's Jamie Jewitt may have entered the villa later, however, the Calvin Klein model has become a favourite, falling for blonde beauty Camilla Thurlow.
The top model – famous for his incredible six-pack, chiselled jaw and incredible biceps – spends his days on the show showing off his good looks for the public.
However, it may surprise you to learn that the 26 year-old has transformed his body since being a teen.
In a throwback picture, the Essex lad looks unrecognisable before fame, admitting to weighing 15 stone before his 15th birthday.
Through intense training and a strict vegan diet for a year, the model became the hunk he is today.
Following his transformation, the star was encouraged to get into modelling by his family.
After being 'discovered' Jamie moved to New York where he has since been modelling for everyone from Tom Ford to Armani to Prada and Dolce & Gabbana.
"But, for men, we are all too cowardly to talk about body image and insecurities.
In a recent episode of Love Island, Jamie and Camilla's relationship was put to the test following the lie detector test.
Camilla admitted to the cameras that she didn't think they were compatible because she doesn't feel 'good enough' for the model.


But even in the very midst of this gnostic adventure, Thoreau never entirely separated himself from worldly matters. Whilst venturing into town one day for supplies, he was incarcerated for refusing to pay poll tax to the commonwealth of Massachusetts in protest of the state's endorsements of slavery and the Mexican War. Although he spent only one night in jail (much to his chagrin, the next morning an unknown benefactor cleared his six-year tax debt), it caused him to wonder why it is that we obey laws without asking if they are just. And, worse still, why others will obey even if they know them to be wrong. The experience resulted in "Civil Disobedience" (or "Resistance to Civil Government", as it was first titled in 1849). A polemic on the individual's right, nay duty, to dissent from government policies in accordance with his or her own conscience – "Disobedience is the true foundation of liberty" – it would in the twentieth century become one of the most famous and important essays in American literature.
It is impossible to shoehorn the numerous and disparate key points of Thoreau's life; as the emblematic practitioner of Transcendentalism, his life itself was the key point. He cleaved to no system, trusting only his inner morality. And for we Moderns, few ancestral voices speak with a greater truth. As our governments continue to trespass on our personal freedom, he reminds us that we are at liberty and indeed duty-bound to follow our own convictions. As the excesses of globalisation continue to wreak havoc on our planet, he is our great champion of simplification. And in this age when we are sorely lacking visionaries to lead the way, what a comfort it is to find such eternal wisdom and solace in the words and deeds of Henry David Thoreau.
Excellent piece on someone I can't pretend to know much about. But as a regular reader here it seems to me that he is one of your "top picks".
Another regular reader who agrees that this is a very good tribute! Where would you start to find out more about him?
What are you intending to do once you've completed the full year?
First stop is Walden. Better yet, pick up a cheap copy of Walden and Other Writings by HDT and you'll also get 'Civil Disobedience', 'Life Without Principle', plus writings from his Journal (which he kept from 1837-1861). The beauty of his writing and his keen observations are truly a literary gift.
takes an extrordinary woman to know an extraordinary man.


text:
Huntington's disease
Scientific Articles Free
Italian articles
ARTICLES SCIENTIFIC
www.aichroma.com
Italian | Español | French
Huntington's Disease News
uniQure Announces Publication of Preclinical Data for AMT-130 in Huntington's Disease…
Fresh Updates from First Huntingtin Lowering Study Publication
Huntington drug successfully lowers levels of disease-causing protein
uniQure Receives FDA Fast Track Designation for AMT-130 Gene Therapy for…
Amendment to the RG6042 Phase III GENERATION HD1 study design
Home Articles Raptor Plans to Advance RP103 in a Registration Study in Huntington's Disease...
Raptor Plans to Advance RP103 in a Registration Study in Huntington's Disease Based on Favorable Treatment Effects at 36 Months in CYST-HD Trial
Conference Call and Webcast Today at 8:00 a.m. EST/5:00 a.m. PST
Raptor Pharmaceutical Corp. (Nasdaq: RPTP) today announced 36-month efficacy results from a Phase 2/3 clinical trial evaluating RP103 for the potential treatment of Huntington's disease, called CYST-HD, conducted in collaboration with the Centre Hospitalier Universitaire d'Angers (CHU d'Angers), France. Data from the study revealed that there was a slowing in the rate of change in the Total Motor Score (TMS) component of the Unified Huntington's Disease Rating Scale (UHDRS) at 36 months of treatment favoring earlier RP103 treatment (RP103-RP103) versus delayed start of RP103 treatment (placebo-RP103). The 25% treatment effect in TMS favoring subjects treated with RP103 for the full 36 months as compared to the placebo/RP103 arm, while not statistically significant, is regarded by clinical leaders in the field as clinically meaningful. The TMS data were consistent with observed effects in key functional measures including Total Functional Capacity (TFC) and Independence Scale. There was statistically significant improvement in the Independence Scale.
Huntington's disease is a rare, inherited, neurodegenerative disorder that causes motor, cognitive and behavioral dysfunction, deterioration and premature death. There is no currently approved drug that slows disease progression.
"The 36-month efficacy results from the CYST-HD study are clinically meaningful and suggest that RP103 may play an important role in the treatment of Huntington's disease," said Dominique Bonneau, M.D., Professor of Medical Genetics at the CHU d'Angers and principal investigator for CYST-HD. "These data warrant further assessment as there remains a clear need for new, safe and tolerable therapies to treat this disease."
CYST-HD Results
CYST-HD was a randomized, placebo-controlled, multi-center trial evaluating the long-term efficacy, safety and tolerability of RP103 for the treatment of Huntington's disease. Placebo subjects crossed over to open-label treatment at 18 through 36 months. This phase of the study examined the effect of RP103 in Huntington's disease subjects treated earlier, beginning at Month 0 (RP103/RP103) compared to subjects with a delayed start to treatment, beginning at Month 18 (placebo/RP103). The primary efficacy endpoint for this study was the change from baseline at 18 months in the TMS component of the UHDRS between placebo/RP103 and RP103/RP103-treated subjects. Analysis of this endpoint was also completed in the open-label phase of the study at 36 months. Key secondary endpoints evaluating function included the UHDRS-TFC and Independence Scale. 88 subjects entered the open-label period and 78 subjects completed 36 months of treatment. The full analyses set included all randomized subjects from Month 0 to Month 36.
An evaluation of the change in the progression of the UHDRS-TMS at Month 36 from baseline in the full analyses set in the trial showed a 25% slower progression [10.0 (1.7) vs. 13.3 (1.8), respectively; p=0.18] in patients treated earlier with RP103 relative to those patients on a delayed start. In a completers analysis, these effects were more pronounced with a 35% slower progression [9.2(1.7) vs. 14.1(1.9), respectively p=0.06] in the earlier treatment with RP103 relative to those patients on a delayed start. These changes in the TMS were consistent across a number of subscale components of the measure including voluntary movements favoring earlier treatment. These effects on the TMS were consistent with improvements in functional measures including the UHDRS-TFC and the Independence Scale. A 23% slowing in the rate of decline in TFC [-2.0 (0.33) vs. -2.6 (0.35); p=0.25] and a 46% slowing in the rate of deterioration on the Independence Scale [-6.9(1.45) vs. -12.7 (1.54); p=0.008] was observed, favoring earlier treatment relative to a delayed start of RP103.
"We are excited to be advancing a treatment that has the potential to slow the rate of motor and functional decline in Huntington's disease patients," said Julie Anne Smith, Raptor's President and CEO. "Such a therapy holds promise to be transformational for patients and is perfectly aligned with our strategic focus to develop and commercialize therapies that bring significant relief to patients and families living with life-threatening diseases. We look forward to discussing the 36-month data with the regulatory authorities and to advancing RP103 in a confirmatory study."
"These promising data along with substantial pre-clinical data support the treatment potential of RP103 in individuals with Huntington disease," said Christopher Ross, M.D., Ph.D., Professor of Psychiatry, Neurology, Pharmacology and Neuroscience; Director of Division of Neurology; Director of the Baltimore Huntington's Disease Center, Johns Hopkins University School of Medicine and Co-chair Scientific Affairs Committee of the Huntington Study Group (HSG). "The HSG is excited to partner with Raptor on the future development of RP103 in Huntington disease."
The safety profile observed for RP103 was generally consistent with what has been previously reported. The most common adverse events included nausea, vomiting, diarrhea, headache and breath odor. Three deaths due to suicide occurred during the open-label period, including two deaths that occurred in subjects in the placebo/RP103 group and one death in the RP103/RP103 group. Deaths due to suicide were generally consistent with background rates, with over 25% of patients with Huntington's disease attempting suicide at least once and accounting for 5% to 7% of deaths, per published estimates. Suicides have not been observed in any other RP103 clinical trials or in any patients on clinical or commercial drugs.
Regulatory Update
Raptor initiated regulatory discussions with the FDA and the EMA starting in 2014 and most recently received feedback from the EMA through a Scientific Advice procedure. The outcome of these interactions indicated that an additional study would be required. Raptor has already engaged with the EMA on the confirmatory study design through a Protocol Assistance procedure and the EMA was in agreement with key aspects of the confirmatory study design. Raptor intends to update both regulatory agencies with the 36-month data and to discuss a trial design that would support marketing authorization.
Conference Call and Webcast Information
Further comments regarding this trial will be discussed during a conference call and live audio webcast at 8:00 a.m. EST (5:00 a.m. PST) today. The live call may be accessed by dialing (877) 710-6201 for domestic callers or (616) 548-5611 for international callers and using the conference ID number 4539421. A live webcast of the conference call will be available online from the investor relations section of the company website at www.raptorpharma.com. After the call, a webcast replay will be available on the Raptor website for 90 days. A telephone replay of the call will be available by dialing (855) 859-2056 for domestic callers, or (404) 537-3406 for international callers, and using the conference ID number 4539421.
About CYST-HD
The CYST-HD study enrolled 96 patients who were randomized in a double blind, 1:1 ratio to RP103 or placebo for an initial 18-month treatment period followed by an 18-month open-label treatment with RP103. 89 patients completed the first 18-month phase. The study enrolled Stage 1 patients showing early disease symptoms with a Unified Huntington Disease Rating Scale (UHDRS), Total Motor Score (TMS) ≥ 5, Total Functional Capacity (TFC) > 10 and a CAG repeat > 38. The trial was conducted at eight clinical sites throughout France under a collaboration agreement between Raptor and CHU d'Angers. Clinical expenses of the study were covered by a grant from the French government (PHRC 2004-03bis CYST-HD).
The objective of the study was to evaluate the effectiveness, safety and tolerability of RP103 in the treatment of Huntington's disease. The primary endpoint of the study was the change from baseline in the TMS sub-scale of the UHDRS at 18 months of treatment in the placebo- and RP103-treated groups. Due to the duration of the study, patients were permitted to continue taking their normal medication regime which included tetrabenazine, a vesicular monoamine transporter 2 inhibitor.
Data through Month 18 were reported in February 2014. Analysis of all 96 patients enrolled in the trial showed a positive trend towards slower progression of TMS in patients treated with RP103 versus those patients on placebo, the primary endpoint of the study. TMS progression was 32% slower in patients treated with RP103 versus those treated with placebo after 18 months of treatment (4.51 vs. 6.68, respectively; p=0.19) in the per protocol population. In 66 patients not taking tetrabenazine, RP103 treatment resulted in a statistically significant slower progression in TMS versus the placebo group (2.84 points vs. 6.78, respectively; p=0.03). Adverse events were similar in the two groups and were comparable to what has been observed in other studies in this patient population. RP103 was well tolerated with 48/52 patients experiencing at least one adverse event during the 18-month study versus 38/44 on placebo. There were five patients treated with RP103 who experienced serious adverse events compared with four patients treated with placebo.
About Huntington's Disease
Huntington's disease is a rare, progressive and hereditary neurological disease. The disease is characterized by uncontrollable movements and mood swings or depression, followed by dementia and premature death 15-20 years after diagnosis. The disease is thought to affect 30,000 patients in the U.S., a comparable number in Europe and 100,000 patients worldwide. There is no currently approved drug that slows the progression of Huntington's disease.
About RP103 (cysteamine bitartrate)
RP103 is Raptor's proprietary delayed and extended release oral medication designed to treat the underlying metabolic cause of several rare diseases and disorders including cystinosis. RP103 is in clinical development for Huntington's and mitochondrial diseases based on a number of proteostatic and antioxidative properties demonstrated in multiple animal models.
About PROCYSBI® (cysteamine bitartrate) delayed-release capsules
PROCYSBI is a cystine depleting agent that is approved in the U.S. for the management of nephropathic cystinosis in adults and children ages two years and older. It is contraindicated in patients with a hypersensitivity to penicillamine. The most commonly reported side effects are vomiting, abdominal pain/discomfort, headaches, nausea, diarrhea, anorexia/decreased appetite, breath odor, fatigue, dizziness, skin odor and rash. For additional information on PROCYSBI, including full prescribing information, please visit www.procysbi.com.
About Raptor Pharmaceutical
Raptor Pharmaceutical Corp. is a global biopharmaceutical company focused on the development and commercialization of transformative therapeutics for rare, debilitating and often fatal diseases. With its recent acquisition of QUINSAIR, Raptor plans to develop MP-376, the pharmaceutical product known commercially as QUINSAIR, in cystic fibrosis and at least one of bronchiectasis or lung infections associated with nontuberculous mycobacteria . In addition, Raptor is developing RP103, known commercially as PROCYSBI, in multiple therapeutic areas such as nephropathic cystinosis and Huntington's and mitochondrial diseases including Leigh syndrome. Raptor holds several orphan drug designations, including orphan drug exclusivity for nephropathic cystinosis in the U.S. and EU. For additional information, please visitwww.raptorpharma.com.
Source: Raptor Pharmaceutical Corp
CYST-HD
Raptor Pharmaceutical Corp
Previous articleUF Health researchers identify novel proteins linked to Huntington's disease
Next articleDATA NOW AVAILABLE
https://www.newshd.net
Helping Advance Huntington's Disease Research by Using AI to Map the Human Brain
uniQure Announces Publication of Preclinical Data for AMT-130 in Huntington's Disease Supporting Non-Selective HTT-Lowering Approach
Planning a 'Dancing at the Vatican' screening to celebrate the global Huntington's disease community's journey
Helping Advance Huntington's Disease Research by Using AI to Map the...
uniQure Announces Publication of Preclinical Data for AMT-130 in Huntington's Disease...
NEUROSCIENTISTS FIND NEW ROLES FOR HUNTINGTON'S PROTEIN
Planning a 'Dancing at the Vatican' screening to celebrate the global...
Unpacking Wave's PRECISION-HD2 huntingtin-lowering trial announcement
AICH - ROMA ONLUS: VIA NOMENTANA 56, 00161 ROMA TEL/FAX 06.44242033 c/c postale n. 35453000 C.F. 96152570584
Discliminair
© newshd.net
This website uses cookies to improve your experience. We'll assume you're ok with this, but you can opt-out if you wish.Accept Discliminair

redpajama_set_name: RedPajamaCommonCrawl


text:
India/France – Top French theatre director Ariane Mnouckine to hold workshop in Puducherry
January 2, 2016 January 9, 2016 admin 0 Comment
Europe's foremost experimental theatre director, Ariane Mnouchkine, met with members of the press at the Institut Français en Inde on 4th December 2015, as a run up to the theatre workshop that she, along with twelve artists ofThéâtre du Soleil, will be conducting at Puducherry from 14th to 30th December. This wonderful initiative has been made possible by the Embassy of France in India and its cultural network (Institut Français en Inde and Alliance française de Pondichéry), in collaboration with the Department of Tourism, Government of Puducherry, and Indianostrum Theatre, who have invited Ariane Mnouchkine to tour India with her École Nomade. Rajeev Sethi was also present at the event.
Theatre enthusiasts from across India have been encouraged to apply for these workshops. Auditions will be held for shortlisted candidates to select about 80-odd participants. These selected artists will participate in workshops to hone their skills and exchange creative processes and ideas. A production should follow the programme, which is scheduled to be showcased in France by the end of 2016 and in India early 2017 as part of the festival of France in India, "Bonjour India".
Deeply inspired by Asian Theatre since the beginning, (essentially Indian, Balinese and Nô), Ariane is Europe's foremost experimental theatre director, an Ibsen awardee and also one of the most known theatre directors globally. While speaking at the press event, she said, " When I understood my life would be in theater I was wise enough to know and understand that I must make my initiation in travel and I left for a long journey and arrived in 1963 in India." She further added, "I felt that India and Japan would be my treasures. I knew I would learn probably the basics of what to do without even knowing what I was going to do. My debt toward different sorts of traditional theatre, I will never be able to pay it back to India and Japan.
These traditions of acting have been absolutely my gurus. The Ibsen citation to her declared: "to enter a Mnouchkine production is to enter another world", while noted critic Judith G Miller proclaimed that she was nothing less than a "nomad of the imagination". In 1987, she created L´Indiade or The India of Their Dreams, based on a text by Hélène Cixous. Since several years now, she has been regularly hosting actors, musicians and other Indian artists in residence at the Cartoucherie in Paris.
Théâtre du Soleil is an avant-garde stage ensemble founded by Ariane Mnouchkine, Philippe Léotard and theatre students in 1964 as a collective of theatre artists in Paris. The company creates original theatrical works using a devising process based on physical theatre and improvisation.
Indianostrum Theatre in Pondicherry is an eight-year-old theatre company founded by Koumarane Valavane, along with a few actors who were ready to pursue theatre with single-minded dedication. A Franco-Indian who started practising theatre at a very young age, Koumarane left for France in his early years for his studies, where he worked as an actor at Theatre du Soleil in Paris. With the rich experience of contemporary theatre gained from France, Koumarane returned to India in 2006 with the decision of exploring theatre at home by forming his own group. It was thus that Indianostrum came into being in 2007.
Tags :Ariane Mnouckine, Théâtre du Soleil, Puducherry, Embassy of France, India, Institut Français en Inde, Alliance française de Pondichéry, Department of Tourism, Government of Puducherry, Indianostrum Theatre, Ariane Mnouchkine, École Nomade, Rajeev Sethi, Bonjour India
← India – Ferrari inaugurates its new showroom in New Delhi
India – Nayaab Exhibition of Textiles at The Lodhi a grand showcase of Indian fabrics →
4 × = twenty


Keystone Heat & Serve Lean Chunk Beef for quick and easy meals in minutes. Use the recipe on the can or one of your family favorites!
Uses: Soups, Stews, Chili, Beef & Noodles, BBQ Sandwiches, Tacos, Enchiladas, Burritos, etc.
Keystone is one of the better ones out there. Way better and higher quality than Yoder's. Have been buying from Keystone for several years. We prefer this meat to most of the junk you get in the grocery store these days. It tastes better! You can't go wrong with this canned meat.
OMG! This is amazing!! Tastes just like home cooked pot roast! Follow the recipe on the can and your taste buds will dance!


Correct Score bets in an accumulator can result in big pay outs to lucky winning punters.
A lucky Irish punter scooped £333,333.33 for tipping six correct football scores. Factory worker Trevor Sloan has revealed his formula for winning his correct score picks - he picked the right results on a wing and a prayer while on the night shift.
Mr Sloan might want to send a Christmas card to Nottingham Forest Hillel El Arbi Soudani. With Forest down 2-1 at Wigan and the match going into added time, the Algerian attacker pounced on a rebound after Lewis Grabban's penalty was saved by Wigan goalkeeper Christian Walton to secure the 2-2 draw.
See our tips on how to place a correct score accumulator bet here.
Betting Masterclass - How do professional punters profit from football correct score accumulators?


When you make the short trip to our dealership in Chicago from the greater Orland Park and Skokie area you most likely have a new car or two in mind that you would like to test drive. Our new vehicle showroom page is a good place to do some research on your own before coming to see us. We expect you will also have further questions about each new Chrysler, Jeep, Dodge and Ram that you take for a test drive and we can't wait to answer them! Visit South Chicago Dodge Chrysler Jeep Ram because our customers drive away with a great car whether it's in our new or used inventory. Whether you are shopping around or ready to buy, We at South Chicago Dodge Chrysler Jeep Ram would like to invite Oak Lawn, Orland Park and Skokie area drivers to meet our experienced sales team for a stress free new car buying experience. Our new car virtual showroom page has even more information on the new models we have in stock. When you make the choice and come to our dealership to buy a the new vehicle you love we can help you afford it with our many auto financing options.
If you are looking for a wide selection of Dodge, Chrysler, Jeep and RAM cars in the greater Chicago area, South Chicago Dodge Chrysler Jeep Ram should be your first and last stop. Committed to finding you the right new Dodge, Chrysler, Jeep or RAM in the Oak Lawn, Orland Park and Skokie, IL, area for your needs, our sales team is here to help you get what you want. Contact us to test drive a new Dodge, Chrysler, Jeep or RAM located at 7340 S Western Ave. We proudly serve customers from the Chicago, Oak Lawn, Orland Park and Skokie, IL areas with auto financing and are committed to helping you find the perfect car.
Ready to go? View the details about your favorite new car, truck or SUV and click here for directions to see it in person today!


text:
2020 Nitto ATP Finals Day 8 Recap
Mailbag: Handing Out the 2020 ATP Year-End Awards
Jon Wertheim
Hey everyone. Let's start with the ATP awards for 2020, the strangest of years….
MVP: Dominic Thiem
A breakthrough season for the Austrian who won plenty—and lost the distinction of being best player never to have won a major. In 2020, Thiem won a Biggie (the U.S. Open), reached the final of another (Australia, beating Nadal en route) and made it to the ATP Finals final, taking down Djokovic in the process in the best match of 2020.
MVP runner-up: Novak Djokovic
It was another typically excellent year for Djokovic, the world No. 1. Like Thiem, he won a major (Australia) and reached the finals of another (Paris). He also banked two more TMS titles. But we can't bring ourselves to give the MVP vote for a leading light who was defaulted from a major for "hitting a ball with negligent disregard of the consequences," and for committing so many regrettable off-court unforced errors.
Breakthrough Player of the Year
One of those awards that applies differently to different players. Do you confer it on a player like Diego Schwartzman, who started at No. 14 and crept into the top? Or, say, Casper Ruud, who liposuctioned his ranking, starting the year outside the top 50, and finishing (or Norwegian-ing) at No. 27?
To the surprise of many, the guns, male and female—Felix Auger Aliassime, Coco Gauff, Amanda Anisimova—didn't benefit appreciably from the pandemic. One star who shone in the reset: Jannik Sinner of Italy, who is already embedded in the top 40 and doesn't turn 20 until the week before the 2021 U.S. Open.
Match of the Year: Thiem d. Djokovic, ATP Finals
Two top players, significant stakes, oscillating momentum, offense/defense, shotmaking, strategy. This match had it all. Except a live audience, which made the level of play and palpable drama all the more impressive.
First, a philosophical question: can this award go to anyone other than the top player? While we debate, how about Nicolas Massu, who rode shotgun for Thiem's breakthrough and gets bonus points for convincing his man not to bail on the next Olympics.
We'll take this one while noting the irony that Gael Monfils was on the other side of the net.
Kevin Anderson and Stan Wawrinka come in for credit. Same for Yoshi Nishioka. But how about Andy Murray, whose struggles to return are vividly chronicled here. While there's still work left, he played himself back to the point that he was beating Alexander Zverev—at the same site where Zverev would serve for the U.S. Open title three weeks later.
Doubles team of the Year
We'll follow the rankings and name-check the Colombians, Robert Farah and Juan Sebastian Cabal. But let's take this opportunity to acknowledge the retirement of the Bryans, Bob and Mike, who set the standard for nearly two decades.
Call of the Year
On the eve of the tournament, Larry Ellison, Ray Moore and the rest of the Indian Wells brain trust called off the 2020 BNP Paribas Open on account of COVID-19 concerns. Imagine the chaos had they tried to play through a growing pandemic.
Some housekeeping:
• It changes by the hour, but as of Wednesday morning, it looks like the Australian Open is going to start on Feb. 8. Here's some details from Craig Tiley:
Players will have to quarantine for two weeks from January 15, but the Victorian Government has agreed to special conditions for AO participants—agreeing that they need to be able to prepare for a Grand Slam. There will be strict conditions, but after quarantine, players are free to stay where they want, go where they want, play lead-in matches and then compete in an AO in front of significant crowds in a great Melbourne atmosphere for the first time in many months.
We know it hasn't been easy for anyone in tennis. We will also pay for charter flights, player and entourage quarantine costs, meals and accommodation. Player accommodation will be covered for their entire stay until they are finished at the AO. We will pay the full $71M AO prizemoney and are working with the tours on a redistribution with large increases to the early rounds and a likely first round purse of $100K.
Obviously Tennis Australia can't do that without considerable financial pain. It won't be easy. COVID-19 has hurt us financially this year similar to everyone else's experience. As mentioned, to remain solvent we are going to have to take a large loan and line of credit. But we think it is critical for global tennis, the player group and the fans that the AO proceeds to help stave off any potential atrophy in our sport.
Amid so much ongoing global uncertainty, we think the clean bill of health in Melbourne is a unique opportunity for our sport, players and fans to show the world tennis is alive and full of hope and promise regardless of the pandemic.
Some additional details:
Australian Government Quarantine Conditions
– Players must undertake a COVID test within 48 hours of departure to Australia
– Players will arrive in Australia from 15 January (players should arrive by 17 January)
– Players will remain in quarantine for 14 days from the day of which the last member of the 'player group' arrives
– COVID testing will take place in the hotel room on days 1, 3, 7, 10 and 14
– From Day 2, following a Day 1 negative test result, players will be able to access practice and gym facilities
– Players will take transport from their hotel for scheduled training for a total of 5 hours per day (2 hours on court, 2 hours in gym, 1 hour on site nutrition/dining)
– All training, gym and nutrition/dining will take place at Melbourne Park and Albert Reserve Tennis Centres
– Following the 5 hour training block, players will return to the hotel. When not training at the courts, players must remain in their room
– Players will be able to take one coach with them to the tennis centre each day for training
– Players will be in cohorts of 2 players and only be able to practice with one other player from Day 2 (after one negative test) to Day 7, from Day 8 (after three negative tests) to Day 14 a maximum of four players in a cohort meaning they can practice with up to three other players and their support people. This is a Government directive to limit transmission within the bubble
– Once the 14 day quarantine period is complete, players will be able to move freely around Melbourne in a COVID free environment
We are still negotiating with the Government to improve the following conditions:
– Taking only 1 coach to the courts for practice, we are hopeful of increasing this to 2
– Increasing the size of player cohorts to 4 from Day 2
– Increasing the daily training block time from 5 hours.
Player Benefits for AO 2021
– Playing lead-in events and AO in "normal" conditions (ie no bubble) with crowds
– Freedom of movement and interaction post-Quarantine
– AO 2021 prizemoney of $71m
– 1st round prizemoney of $100k (15% increase)
– Increases to Qualifying prizemoney
– Flight costs to Australia covered (through charter) for player and entourage
– Quarantine accommodation covered for player and entourage
– Player accommodation covered for player (until exit from AO)
– Food during Quarantine (up to $100 per day per person) covered for player and entourage.
• I'm also told Indian Wells is seeking assurances that at least 25% capacity will be permitted.
• A few of you wrote about the divorce between Tennis Channel and YouTube TV. Here's Tennis Channel spokesman Eric Abner: "We're all disappointed that YouTube TV has chosen to drop Tennis Channel, which they've offered to their viewers since 2017. We encourage subscribers who want to continue to watch Tennis Channel to switch to AT&T TV Now or to other local television providers, especially as the new season begins and Tennis Channel becomes the exclusive home of both the ATP and WTA tours."
Have a question or comment for Jon? Email him at jon_wertheim@yahoo.com or tweet him @jon_wertheim.
Hi Jon. Hope you are well. I've written to you before that Grand Slams should retain their best-of-five format. IMO, the best of five format makes the Slams "Grand"—the pinnacle to reach four times every year. But I think you've mentioned some room for compromise on this—best of three during the first week and then best-of-five. Regardless of whether it is a compromise or full on best of three, I do think we are going in that direction. When/If it does, do you think it'll be done after the Big Three retire as opposed to when one is still playing and trying to break or set the Slam record?
—Duane W.
• And Andy Murray climbs on the turnbuckle, brandishing a folding chair, and enters the ring….I stand by my compromise solution. Best-of-three Week One of a major, so we preserve bodies and keep the schedule moving. Best-of-five in Week Two, so the majors retain their heft and the most physically fit players are rewarded. Let's save the debate, such as it is, for another time.
For today, I offer this simply as an observation: as long as we have best-of-five, it really dilutes best-of-three wins, especially over superior players. Diego Schwartzman might beat Nadal in Rome; but can he do it over best-of-five? (He could not.) Zverev (or Dimitrov or Tsitsipas or now Medvedev) might be able to win London; but can they turn in a result like this at a major when the matches can be 40% longer? (So far, no.) Conventional tour matches become like pop quizzes, not full-blown tests. And on cue….
The ATP Finals, the so-called "fifth Slam." I am sure Daniil Medvedev must be thinking this is definitely going to be leading to bigger and better things. Then I checked the last four winners of this tournament, and how they did after their wins. Andy Murray, 2016, no Grand Slam or Masters wins after he won. Grigor Dimitrov, 2017, no Grand Slam or Masters wins after he won. Sascha Zverev, 2018, no Grand Slam or Masters wins after he won (although he has at least appeared in a Grand Slam final.) Stefanos Tsitsipas, 2019, no Grand Slam or Masters wins after he won. Obviously, Medvedev, Tsitsipas and Zverev are going to hopefully be part of the next generation of great tennis players, so I expect them to do well. Do you have any theories on why winning the ATP Finals means nothing for career breakthroughs?
• It's not a knock on ATP Finals. I just question whether there is much predictive value. This event is played indoors, on a surface common to none of the majors—rain notwithstanding. It's round robin; all other events of significance are, of course, single elimination. It's best-of-three. The majors are best-of-five. Add in the fact that, in most years, it's held as the coda when players arrive beaten up physically and spiritually, one foot already in the pool and...it's easy to see how a win here doesn't sling-shot the champion to Grand Slam greatness.
I am truly saddened by the complete silence of the ATP tour in the wake of the domestic abuse allegations against Zverev. Considering that half the viewing audience is female, perhaps it is time for the broadcast partners to put some pressure on the ATP. I, for one, will no longer watch any Zverev matches on TV or streaming. I'm curious if you have any inside information on anything that is being done about the allegations.
—Lilas Pratt
• First, I will point out that the ATP has issued a statement. I am not aware of any sort of coordinated boycott—though your messages certainly suggest that Zverev has lost many fans and there is overall dissatisfaction with the ATP's response.
A lot has been revealed here, starting with the need for some sort of firm policy. The ATP's response—essentially: "Until/unless the cops get involved, don't trouble us with this"—is less a moral shortcoming than it reveals another flaw of tennis's structure. Too often we think of the ATP as a league. It is not. It is a 50/50 partnership between players and tournaments. It's easy to see how an organization half-owned by players would be reluctant to push for an investigation here. But instead we're left with this non-response to an allegation that would trigger alarm bells in most other sports.
Simple question: you are asked to buy and hold this stock for the next 12 years—careers of Tsitsipas, Zverev, Medvedev—what will it be? Btw, I am asking this question as I am watching Tsitsipas destroy Rublev in the round robin first set. You will have the advantage of knowing the results of this event by the time you may answer, so you will have a slight advantage. But it should not matter when we discuss a lifetime career.
—Kasihbotia
• Tsitsipas won that match 7-6 in the third set….6-1, 4-6, 7-6! Curious why "Rublev" isn't on your stock list? I'd load up on those shares, in part because I suspect they are still undervalued. I would buy or hold all of the aforementioned. But—if we are going to keep beating the analogy; and we are!—I would want some sort of index fund. My strong suspicion is that we need to prepare for a new kind of market. The Big Three have distorted "greatness." Be prepared to return to a world where, say, five or six majors makes you a soaring-ly accomplished player. Three guys divvying up 58 majors (and counting) is a statistical fluke, the likes of which we will never see again in our lifetimes.
It will be interesting to see if another player comes up with a strategy to neutralize and capitalize on this trend of returning serve from the back wall of the court. Perhaps Kyrgios will average 50% underhand serves in a match with Nadal. What is the answer to your recent trivia question on the longest possible game streak that is not the longest of a standard three-set match? You said the answer is not 12. Seems that a 5-7, 7-5, 6-0 match could result in a 12-game streak from losing player in sets one and two, and then a 13-game streak for winner in sets two and three. I can't see how either number could be greater.
—Bill in NJ
• I got 13 as well. If you are down 0-5, you could win 13 games and take the match 7-5, 6-0. As for your other point, you frame it correctly. We come with a strategy to counter and neutralize and capitalize. If the opponent hugs the net, you lob. If the opponent leans left, you go right. If the opponent is pinned to the backcourt, you bring her up to the net. Why, when the opponents return standing so far back they lose wifi, is it somehow inappropriate to try an underhand serve?
Djokovic has tied Pete Sampras by ending the year with the No. 1 ranking six times, the only notable Sampras record that hadn't already been usurped by the Greatest Generation. But one distinction remains firmly in Sampras's grip, even after the Big Three have carved up all the spoils of men's tennis for the better part of two decades: Sampras ended the year ranked number one six years in a row, besting Connors's mark of five consecutive number one finishes. I recall reading back in the late 1990s that there was some locker room grumbling about Sampras's focus on the year-end ranking. He played a heavier fall schedule than most top 10 players to maintain his point lead. I guess the thinking was that he had won more majors than any other active player, spent more time at No. 1 in the rankings, and there's nobody on the horizon (little did we know) likely to exceed his accomplishments anytime soon. Why is Pistol Pete going to such lengths to end the year No. 1 again? Ironic that the one Sampras record that might endure after the Big Three have hung up their racket bags is that six consecutive number one finishes.
—Teddy C., NYC
• Good one. All hail, Pete Sampras.
Lot of interesting storylines for this Mailbag which you might get many questions: Alexander Zverev allegations; Sam Querrey controversy; eight doubles teams had a chance for No. 1 spot at ATP Finals, Daniil Medvedev 5-0 at ATP finals with beating top-three seeds, Australian Open and warmup tournaments scheduling issue. I was wondering since elections season is still going on with the Georgia Senator runoffs do you know sports stars (especially tennis players) who hold or held prominent positions in their country's government? Three come to mind with Marat Safin, Manny Pacquiao, and Jesse Body Ventura.
—Sunny S, Philadelphia
• Interesting. There are some politicians who played tennis. Former Louisiana Senator John Breaux for one.
But beyond the names you suggested, I am struggling to name tennis players who turned to politics. If there's a Bill Bradley type, it's eluding me.
If you will indulge this lapse into politics, I have been thinking about Donald Trump in a tennis context. You picture him losing a match point and then walking to the chair, arms aloft. His opponent looks on, perplexed, as they meet at the net.
Biden: Nice match. Well played.
Trump: I won.
Biden: Um, what do you mean? I got to six games in both sets. You only have four.
Trump: Yeah, but it was rigged.
Biden: Really? You're supposed to say, nice match. Then I move on. That's the norm.
Trump: It was rigged. My fans say so, too.
Biden: Rigged how?
Trump: There was that point in the third game. I expected to hit that backhand on the line. This time I did it, and it was called out. Pretty suspicious.
Biden: So…you're challenging this whole outcome because you think you got a bad line call early in the set?
Trump: Oh, that wasn't the only one.
Biden: So you're not conceding?
Trump: Never. Hawk-Eye is going to overturn for us. Hear that? My fans are yelling, "Stop the steal."
Biden: Actually, we don't usually do this. But we have the Hawk-Eye data here. The ball was out. The system worked. Go home, everyone.
Trump: Not so fast. Hawk-Eye technology was rigged, too.
Biden: Who exactly rigged Hawk-eye?
Trump: The Venezuelans or the Cubans….
Shots, Miscellany
• Read this piece by Tom Perrotta if you have not already.
• Thanks, Helen of D.C., for this primer on Roland Garros.
• RIP David Dinkins, a true fan of the sport.
• Here's a piece on John McEnroe's wife, Patty Smyth.
• What's Mats Wilander up to? Funny you should ask. He's entered the wearable technology game.
• Big tip of the cap to Eric Schuster, a pros' pro, to whom the sport owes a big debt of thanks.
Tennessee's Yield to Its Fans Comes to Embarrassing End
In 2017, Vols fans were thrilled they thwarted plans to hire Greg Schiano and landed Pruitt instead. Boy, has that backfired.
By Pat Forde


Wednesday 8th Dec.r – beautiful weather. This morning Palma the Westernmost of the Canaries in sight at a distance. Very light & favourable winds.
After the ridiculous incident of yesterday, we did not expect to be so soon entertained with another even more ridiculous and laughable. One of our men and our Steward, finding how easy it was to tax the credulity of some of the Miners, resolved to have some farther fun at their expense. The subject of their joke was William Treweek, who I have mentioned not to be gifted with any superabundant stock of sense. Not to excite suspicion, they began afar off and at last brought it about that the Steward made a bet with our seaman of a gallon of rum that he would conceal W.m Treweek on the upper deck, so snugly that James Rowe would not be able to find him out in ten minutes. The bet was immediately taken and poor simple Treweek settled in the thought that he would (according to agreement) have half of it, and most willingly agreed to take his share in the business. Now in the fore part of the day, the corner of the fore-hatchway, which is of considerable depth and furnished with two folding pieces was stuck up against the side of the pig-house so that in the afternoon, all being ordered below, W.m Treweek was shoved into this receptacle, which he declared to be very comfortable. As soon as he was in the doors (if you may so call them) were firmly secured by lashings which crossed them. Upon a given signal all ascended from below and commenced the fictitious search. Two or three of our men passed to and fro, apparently engaged in scrutinising different convenient places, but in reality preparing sundry buckets of salt water ready for use. When all was prepared, a piece of tarpaulin which concealed the hider was withdrawn, and discovered him in quod – no very enviable situation, and then a deluge of brine was rained upon him from every imaginable vehicle – from which alas there was no escape, the doors of his prison being as I have already mentioned too well fastened. In a few seconds poor Treweek was thoroughly drenched – and then, but not till then, he was released amidst the shouts and laughter of every spectator, but I must in justice say without any indication of displeasure on his part, who a day or two afterwards declared that now he saw there was some joke in it but that then he really had believed what the Steward had told him. During the remainder of the voyage it was impossible for any one to play any more tricks – he was too shy & too much on his guard – in fact his extreme suspicion was as amusing as his former simplicity.
Thursday 9th Dec.r – fine weather – favourable winds variable in force. Saw the islands of Palma, Teneriffe and Ferro, which presented nothing remarkable.
Friday 10th. – beautiful weather – light favourable breezes.
Saturday 11th. – cloudy but pleasant weather light favourable winds.
Sunday 12th. – cloudy but pleasant weather – light favourable breezes all day, pretty fresh at night. This morning spoke a bark the Endymion of London bound to Jamaica.  To day we had divine service performed, and as on last Sunday, two or three verses of a psalm were very well sung by the Miners. This new feature – in our Public devotions had an extremely pleasing effect: Without any adventitious circumstances of architectural embellishment or of noble accompaniment on an organ – without a building adapted according to the rules of art for an exhibition of musical skill, but with no canopy, but the blue heavens and no instruments but those of nature's tuning, the peculiar situation in which we were placed rendered this part of the service indescribably solemn and impressive. The effect of this days worship was not diminished by any impropriety of behaviour on the part of the miners, the whole of whom on the contrary evinced the greatest outward signs of devotion. During the day it was pleasing to see so many men both Sailors and Miners in one Ship, some reading their Bibles some tracts or hymns and all showing by their walk that they were impressed with the sanctity of the day.
In the afternoon the conversation turned pretty much upon our close proximity to the Tropic of Cancer and the expected visit of Neptune to receive the names of those who had never crossed the line. At 9 P.M. the Miners were struck with astonishment at the appearance of a blue light, which M.r Geach had secretly ordered to be conveyed to the Main top. The effect was certainly very grand and every one, tho' he suspected the Master, who said that he expected to see a bright star crossing & indicating the Tropic, was evidently puzzled how to account for the phenomenon.
At the dead hour of night, in the midst of a deep slumber, I was awoke with a sudden and tremendous noise which caused me to start up – thump – thump – thump – stamp – stamp – with the voice of the Master speaking in a loud and nasty tone to the man at the helm – a vessel close aboard of us – Hard Starboard – Give her the helm quick or she'll be foul of us. Don't you hear – Why don't you answer you lubber? Schooner ahoy! Why don't you keep a better lookout? What schooner are you? Where from? During this address the sound of many feet and much bustle was heard above & a rough voice from the schooner announced that she had Neptune on board, and that his submarine Majesty had come according to custom to take an account of all who might be strangers at his Court, never having been presented at his levee. Upon hearing this M.r Geach immediately backed the main yard (by which our progress was stopped) for his Majesty, who came alongside with a horrible noise. Intelligence of this circumstance was immediately communicated to our Skipper, who very politely enquiring after his health, and that of his family. The questions and answers were both made thr'o speaking trumpet, one by M.r Geach on the quarter deck, and one by Neptune at the bowsprit. Preliminaries being all settled, the most important par of the business was then proceeded into viz. calling over the names of those who had not yet taken the oath of allegiance to the Sea-Green God. They were all fully and officially (perhaps officiously) announced with very polite wishes for our welfare and appointed to meet us again at the line for the purpose of installing their names into the order of his Knighthood.
Whilst all this was going on the Miners were not, you may be sure, asleep. At the first alarm each and all had started up, and not a few of them next morning candidly owned that they were dreadfully frightened when they heard the Master sing out about getting foul of another vessel. At the same moment 5 or 6 scrambled up the main hatchway, which unfortunately had not been blocked up, and would thus by their being confined below have added to their fears. The rest lay quaking in their hammocks, wishing themselves 1000 miles off. Knowing as I did the occasion of all this noise, I was not a little amused in witnessing from my Cabin the various methods in which their alarm was displayed – some prayed aloud and called for mercy – others lay silent yet quaking. The curious remarks and peculiar dialect to which I was a listener I cannot pretend to convey to you by description, altho' the effect upon my risibility was very great.
In half an hour after the commencement of the uproar peace & silence were restored only again to be broken at the first dawn of day – when all light imparted confidence – and each related to the other his feelings and impressions.
Monday 13th Dec.r – fine weather. Light favourable breezes all day – fresh at night.
Tuesday 14th – cloudy but pleasant W.r Moderate and favourable breezes.
Wednesday 15th – fine pleasant but Cloudy W.r light variable winds. At 5 P.M. came in sight of San Antonio, one of the Cape Verd Islands.
Thursday 16th – this morning abreast of San Antonio & kept it in sight all day. Pleasant weather – light winds – calm at night.
Friday 17th – cloudy morning – fine day – calm or nearly so all day.
Saturday 18th – very fine weather – nearly a calm all day.
Sunday 19th – beautiful weather – morning calm – light variable breezeds all day.
Monday 20th – calm all day – Beautiful weather.
Tuesday 21st – cloudy weather – Strong and favourable breezes.
Wednesday 22d – cloudy weather – fresh and favourable breezes.
Thursday 23d – close sultry weather – Moderate & favourable breezes.
Friday 24th – close sultry weather, inclinable to calm. At night moderate but unfavourable wind.
Saturday 25th – variable winds and weather Heavy showers at night. This being Christmas the service appropriated for that day was performed & appropriate hymns were sung by the Miners.
Sunday 26th Dec.r – very unsettled weather – thunder lightning and rain – wind variable, sometimes a calm. Caught 2 sharks.
Tuesday 28th – cloudy sultry weather – light unfavourable breeze.
Wednesday 29th – cloudy weather – rain at night – light variable breeze.
Thursday 30th – cloudy weather – rain at night. Fresh and favourable breeze. At 7 P.M. William Thomas one of the Miners met with a serious accident. While standing on the steps of a ladder placed for want of a proper apparatus across the entrance to the hold, slipped his foot – & fell so that the edge of one of the steps struck with the whole weight of his body, upon the upper part of the thigh & perineal portion of the Urethra. From the time of the accident till we reached Rio I was little, very little, on deck, having in addition to looking after him, to attend to my own health, which was such as to oblige me to confine myself.
Friday 31st – we crossed the line, but in consideration of the above melancholy occurrence none of the usual ceremonies was permitted or indeed needed as a damp was thrown over the spirits of all.


Next postInquiry: "Chemo is poisonous to my body" ~ is it true?
You are always an inspiration to me…a constant reminder to leave my sorrow behind and embrace this beautiful gift that life is. Thank you, my dear friend.


Chef did not provide measurements for this. Add sugar to taste; it should add color to the cream and the raspberry flavor should be apparent, but not overpowering.
Place heavy cream into a saucepan with heavy bottom. Bring to a boil, then reduce to simmer. Add Raspberry Cane Sugar and stir until all crystals have dissolved. Cook until the cream thickens by reduction. As cream cools, stir occasionally to prevent skin from forming on top.


The latest KFC Colonel is--The King?
Burger King frontman The King has some new duds--and they look a lot like those of KFC's Colonel Sanders. In a new spot from the fast feeder promoting BKs updated chicken sandwich, the brand's infamous non-speaking spokesperson has ditched his royal garb for a white suit and bolo tie--appearing as if he's stepping into the role of yet again another version of the every-changing Colonel Sanders.
The spot, created out of Mullen Lowe, even goes so far as to dub the new King the "K.F.G."--which stands for the king of flame grilling. Yet the latest Colonel, he is not. That honor goes to Robocop, who appears in new ads from Wieden & Kennedy Portland.


Apache Kafka is an open-source, distributed streaming platform. It's often used as a message broker, as it provides functionality similar to a publish-subscribe message queue.
In this quickstart, you learn how to create an Apache Kafka cluster using the Azure portal. You also learn how to use included utilities to send and receive messages using Apache Kafka.
The Apache Kafka API can only be accessed by resources inside the same virtual network. In this quickstart, you access the cluster directly using SSH. To connect other services, networks, or virtual machines to Apache Kafka, you must first create a virtual network and then create the resources within the network.
For more information, see the Connect to Apache Kafka using a virtual network document.
An Azure subscription. If you don't have an Azure subscription, create a free account before you begin.
From the left menu, navigate to + Create a resource > Analytics > HDInsight.
Cluster Name A unique name for the HDInsight cluster.
Select Cluster Type to display the Cluster configuration.
Select Select to save the cluster type settings and return to Basics.
Cluster login username The login name when accessing web services or REST APIs hosted on the cluster. Keep the default value (admin).
Cluster login password The login password when accessing web services or REST APIs hosted on the cluster.
Secure Shell (SSH) username The login used when accessing the cluster over SSH. By default the password is the same as the cluster login password.
Resource Group The resource group to create the cluster in.
Location The Azure region to create the cluster in.
Each Azure region (location) provides fault domains. A fault domain is a logical grouping of underlying hardware in an Azure data center. Each fault domain shares a common power source and network switch. The virtual machines and managed disks that implement the nodes within an HDInsight cluster are distributed across these fault domains. This architecture limits the potential impact of physical hardware failures.
For high availability of data, select a region (location) that contains three fault domains. For information on the number of fault domains in a region, see the Availability of Linux virtual machines document.
Select Next to finish basic configuration.
If you would like to connect your cluster to a virtual network, select a virtual network from the Virtual network dropdown.
From Storage, select or create a Storage account. For the steps in this document, leave the other fields at the default values. Use the Next button to save storage configuration. For more information on using Data Lake Storage Gen2, see Quickstart: Set up clusters in HDInsight.
From Applications (optional), select Next to continue with the default settings.
From Cluster size, select Next to continue with the default settings.
To guarantee availability of Apache Kafka on HDInsight, the number of worker nodes entry must be set to 3 or greater. The default value is 4.
The disks per worker node entry configures the scalability of Apache Kafka on HDInsight. Apache Kafka on HDInsight uses the local disk of the virtual machines in the cluster to store data. Apache Kafka is I/O heavy, so Azure Managed Disks are used to provide high throughput and more storage per node. The type of managed disk can be either Standard (HDD) or Premium (SSD). The type of disk depends on the VM size used by the worker nodes (Apache Kafka brokers). Premium disks are used automatically with DS and GS series VMs. All other VM types use standard.
From Advanced settings, select Next to continue with the default settings.
From the Summary, review the configuration for the cluster. Use the Edit links to change any settings that are incorrect. Finally, select Create to create the cluster.
It can take up to 20 minutes to create the cluster.
To connect to the primary head node of the Apache Kafka cluster, use the following command. Replace sshuser with the SSH user name. Replace mykafka with the name of your Apache Kafkacluster.
When you first connect to the cluster, your SSH client may display a warning that the authenticity of the host can't be established. When prompted type yes, and then press Enter to add the host to your SSH client's trusted server list.
When prompted, enter the password for the SSH user.
When working with Kafka, you must know the Apache Zookeeper and Broker hosts. These hosts are used with the Apache Kafka API and many of the utilities that ship with Kafka.
In this section, you get the host information from the Apache Ambari REST API on the cluster.
This command directly queries the Ambari service on the cluster head node. You can also access Ambari using the public address of https://$CLUSTERNAME.azurehdinsight.net:80/. Some network configurations can prevent access to the public address. For example, using Network Security Groups (NSG) to restrict access to HDInsight in a virtual network.
This command retrieves all Zookeeper hosts, then returns only the first two entries. This is because you want some redundancy in case one host is unreachable.
Kafka stores streams of data in topics. You can use the kafka-topics.sh utility to manage topics.
This command connects to Zookeeper using the host information stored in $KAFKAZKHOSTS. It then creates an Apache Kafka topic named test.
Data stored in this topic is partitioned across eight partitions.
Each partition is replicated across three worker nodes in the cluster.
If you created the cluster in an Azure region that provides three fault domains, use a replication factor of 3. Otherwise, use a replication factor of 4.
In regions with three fault domains, a replication factor of 3 allows replicas to be spread across the fault domains. In regions with two fault domains, a replication factor of four spreads the replicas evenly across the domains.
For information on the number of fault domains in a region, see the Availability of Linux virtual machines document.
Apache Kafka is not aware of Azure fault domains. When creating partition replicas for topics, it may not distribute replicas properly for high availability.
To ensure high availability, use the Apache Kafka partition rebalance tool. This tool must be ran from an SSH connection to the head node of your Apache Kafka cluster.
This command lists the topics available on the Apache Kafka cluster.
This command deletes the topic named topicname.
If you delete the test topic created earlier, then you must recreate it. It is used by steps later in this document.
Kafka stores records in topics. Records are produced by producers, and consumed by consumers. Producers and consumers communicate with the Kafka broker service. Each worker node in your HDInsight cluster is an Apache Kafka broker host.
After this command, you arrive at an empty line.
Type a text message on the empty line and hit enter. Enter a few messages this way, and then use Ctrl + C to return to the normal prompt. Each line is sent as a separate record to the Apache Kafka topic.
This command retrieves the records from the topic and displays them. Using --from-beginning tells the consumer to start from the beginning of the stream, so all records are retrieved.
If you are using an older version of Kafka, replace --bootstrap-server $KAFKABROKERS with --zookeeper $KAFKAZKHOSTS.
Use Ctrl + C to stop the consumer.
You can also programmatically create producers and consumers. For an example of using this API, see the Apache Kafka Producer and Consumer API with HDInsight document.
To clean up the resources created by this quickstart, you can delete the resource group. Deleting the resource group also deletes the associated HDInsight cluster, and any other resources associated with the resource group.
In the Azure portal, expand the menu on the left side to open the menu of services, and then choose Resource Groups to display the list of your resource groups.
Locate the resource group to delete, and then right-click the More button (...) on the right side of the listing.
Select Delete resource group, and then confirm.
HDInsight cluster billing starts once a cluster is created and stops when the cluster is deleted. Billing is pro-rated per minute, so you should always delete your cluster when it is no longer in use.
Deleting an Apache Kafka on HDInsight cluster deletes any data stored in Kafka.