text:
Q: Redux: ¿Cuando pasar props y cuando coger props del estado? Como sabrán en redux tenemos acceso al estado global en cualquier componente con connect.
Pero mi pregunta es:

*

*¿Cuál es la mejor practica para pasar props (o hasta que nivel de profunidad) a componentes anidados y cuando coger propiedades directamente del state con redux?

A: La pregunta tiene un poco de ambigüedad, ya que mencionas dos aspectos de diseño diferentes aunque se relacionan en determinado punto, en primer lugar mencionas que hasta que nivel de profundidad pasas los props a travez de los componentes y por otro lado mencionas el como manejar el estado global de la aplicación con Redux/Flux.
La primera tiene que ver con la gestión de los datos dentro de un componente React con respecto al state y el props (haciendo a un lado Redux/Flux ya que ese es otro aspecto), en este primer aspecto hay dos reglas esenciales que debes tomar siempre en cuenta en un componente React (Vista).

*

*El props solo puede ser mutado desde un componente de nivel superior, para un componente sus props (this.props) son inmutables, es decir el componente no puede mutar sus propias propiedades, solo puede hacerlo un componente externo.

*El state solo es accesible dentro del propio componente es decir a diferencia de las propiedades el state no es accesible por los componentes externos, así mismo a diferencia del props el state es mutable y solo puede ser mutado dentro del componente.

En base a estas dos consideraciones recién podemos abordar el tema de composición, recuerda que en React se utiliza composición en lugar de herencia para crear las interfaces.
Siempre utilizas el props cuando quieres comunicar cambios a componentes inferiores en la jerarquía y el state lo utilizas internamente en el componente para gestionar su estado.
En composición una practica común y muy recomendada es la de definir componentes tontos (Dumb Components), estos componentes no tienen state, solamente solamente residen en sus props por lo cual son dependientes al 100% del componente superior, eso los convierte en componentes tontos.
Antes de pasar a ejemplos con código, hablemos del segundo aspecto -> el estado global de la aplicación.
Tanto Flux como Redux ofrecen la misma arquitectura Event Driven, una arquitectura circular que impone un esquema de comunicación siempre unidireccional entre la vista, store y actions.
Aquí la interacción que interesa para tu inquietud es la interacción de la Vista (React) con el Store, el Store se comunica con la vista en el caso de Flux por medio de callbacks y en el caso de Redux por medio de eventos esta diferencia en la comunicación es irrelevante, lo esencial es que el Store sirve como un repositorio Global del estado de tu aplicación, como gestionas este estado global para representarlo en los componentes individuales en la vita? es ligando el state del componente individual con el estado del Store global.
Entonces de aquí propongo esta regla utilizar el estado Global de la aplciación para mutar el estado de componentes individuales y el props utilizas para comunicación entre componentes.
Como en este ejemplo (ES6/Flux)
export default class LoginComponent extends React.Component {
    render() {
        return(

                {this.props.sesion ? this.props.sesion.nombreusuario : 'Debes iniciar sesion!'}

        )
    }
}

export default class MenubarComponent extends React.Component {
    componentWillMount(){
        SesionStore.addSesionChangeListener(this._onSesionChange);
    }

    render() {
        return(

item 1

item 2

                <LoginComponent sesion={this.state.sesion}/>

        )
    }

    _onSesionChange = () => {
        let sesion = SesionStore.getSesion();

        this.setState(update(
            this.state,
            {
                sesion: {$set: sesion}
            }
        ))
    }
}

En este ejemplo la sesión naturalmente debe ser global en la aplicación por lo tanto es almacenada en el Store, el componente tonto es LoginComponent y el componente principal es MenubarComponent. LoginComponent debe mostrar el usuario logeado pero al ser un componente tonto solo puede residir en sus props para mostrar el usuario logeado por lo tanto debe ser el componente superior quien le comunique el cambio de sesión cuando el usuario se logee, en tu diseño siempre debes tratar de reducir en lo posible las fuentes de la verdad, en este caso la fuente de la verdad en la vista es el state del componente superior MenubarComponent. MenubarComponent no es un componente tonto y es el que se enlaza directamente con el store para mutar su estado cuando el SesionStore le comunica un cambio en la sesión.
En este diseño los componentes tontos siempre son componentes muy concretos y re utilizables, no debes agregar componentes inteligentes dentro de ellos pero si puedes seguir anidando mas componentes tontos en niveles inferiores de la jerarquía de un componente tonto.
Ahora que pasa si un componente en la vista quiere comunicar un cambio a un componente que esta varios niveles inferiores en la jerarquía? una alternativa que existe es utilizar el context, pero incluso facebook te advierte que no es recomendable hacer esto, con un buen diseño y re utilización de componentes no vas a requerir usar el context para comunicaciones de este estilo.

A: Aquí te paso un hilo con una buena discisión al respecto: https://github.com/reactjs/redux/issues/419

A: Recomendaría partir de la diferencia trazada por Dan Abramov entre componentes visuales y componentes contenedores.
A partir de esta distinción y acorde a Redux:

*

*Toda la lógica de transformación del state estaría centralizada en los reducers

*El punto de entrada de una determina vista de la aplicación debería ser un Contenedor (en ocasiones estos Contenedores se encuentran anidados en otros componentes, por ejemplo dentro de un Route cuando se usa ReacRouter)

*El componente container se encargaría de pasar partes del state y  funciones que invocan creadores de acciones a manera de props hacia los
componentes visuales

*Los componentes visuales serían preferiblemente Stateless
Functional Components y se encargarían de una única responsabilidad,
la de renderizar esas props e invocar los handlers
cuando sea necesario (click, timer, etc)

*Otros componentes visuales estarían anidados recibiendo algunas de las props del componente padre

*Cuando la cantidad de props que necesitas pasar hacia los componentes anidados se vuelva problemática, usa un Contenedor anidándolo en el lugar indicado y captura solo las partes del state global y los creadores de acciones que necesitas pasar como props.

*Usa componentes con state local (basados en clases) cuando necesites acceder a los métodos de ciclo de vida (por ejemplo para cargar datos vía AJAX usando componentDidMount)

*Usa componentes con state local cuando necesites almacenar en ese state datos que soportan el funcionamiento del Componente visual (por ejemplo para almacenar estado de abierto o cerrado de un componente acordeón, algo que probablemente no nos interesa tener en el state global), no para otras lógicas que deberían estar en un nivel mas alto como el contenedor, las creadores de acciones o el reducer.


This tutorial on UMTS covers UMTS frequency bands vs UARFCN.
RF carrier frequency in UMTS is calculated based on UARFCN. UARFCN stands UTRA Absolute Radio Frequency Channel Number. In GSM, ARFCN is used to calculate the carrier frequency. UARFCN calculation formulas are mentioned below.
FUL_Off and FDL_Off is defined in TS 21.101 standard released by 3GPP, with this we can obtain following UARFCNs.


text:
Three ships of the United States Navy have been named USS Manley for John Manley.

, was a torpedo boat purchased in 1898, served in the Spanish–American War, left active service in 1914, renamed Levant in 1918 and sold in 1920.
, was a , commissioned in 1917, served in World War I, decommissioned in 1922, recommissioned in 1930, served in World War II and decommissioned in 1945.
, was a , commissioned in 1957 and decommissioned in 1983.

United States Navy ship names

redpajama_set_name: RedPajamaWikipedia


text:
Q: Video Download problem for download manager in 9.10 My requirement is to download various videos from different websites :

*

*Youtube

*Meta cafe

*Vimeo

*Others

No matter what download manager I use :

*

*Kget

*Uget

*Downloader for X

videos are not able to download only some strange "Watch" file of some kb size is downloaded.
" I COPY AND PASTE THE URL OF THE VIDEO TO THE "
My system is UBUNTU 9.10

A: You could try an extension that is in Firefox. It's called Downloadhelper it downloads videos for all of those websites and more.

redpajama_set_name: RedPajamaStackExchange


text:
08/07/11: Virtuoso blues artists punctuate acoustic stages with intimacy
Press Release from the Sunflower River Blues and Gospel Festival - 8/7/2011 - Panny Mayfield, publicist, pannywriter@yahoo.com- 662-621-4157
Eddie Cusic of Leland performs at 10:10 a.m. on the morning acoustic stage.Eddie Cusic of Leland performs at 10:10 a.m. on the morning acoustic stage.
Holly Springs native Robert Belfour, an international touring artist, performs at 9:35 a.m. Saturday.
Terry "Harmonica" Bean, performs on guitar and harmonica at 5:05 p.m. Saturday.
CLARKDALE - Acoustic blues masters featured each year on the Sunflower River Blues and Gospel Festival's acoustic stages are revered by many as the gemstones of the three-day celebration.
Not only are the performers virtuoso musicians, their presentations are punctuated with conversation, and remarks to the audiences in a personal, intimate setting, explains festival co-chairman Melville Tillis.
"Returning from year to year, visitors line up early for a good seat, even if they've been up late Friday night," adds Tillis.
The lineup that opens at 9 a.m. will be missing two favorites who were regulars: the late Big Jack Johnson and Foster "Tater" Wiley who are being honored with four other Sunflower family members.
Among the quintessential musicians will be harmonica great Arthniece Jones with his colorful stories; guitarists Robert Belfour, Eddie Cusic, Pat Thomas, T-Model Ford, and intensity-driven Lucious Spiller who made his debut in 2010.
Joining them this year will be acclaimed blues teacher/artist, Mr. Johnnie Billington, recipient of the Governor's Award for Excellence in the Arts and a Master Folk Artist designated by the National Endowment for the Arts.
Shardee Turner, granddaughter of the late Othar Turner, and the Rising Star Fife and Drum Band will continue its 24-year tradition of closing the morning stage with a "Hill Country" procession.
In past years the morning acoustic stage has been held inside Clarksdale Station and the Civic Auditorium, but this year it will be held on the Main Stage.
"Our audience outgrew the depot space; we are taking advantage of our state-of-the-art sound system at the main stage, and the spacious VIP tent where the Lions Club is serving a pancake breakfast," says Tillis.
The afternoon acoustic stage will continue at the foot of Sunflower and Third Street unless the hot weather is unbearable and it becomes necessary to move inside the Civic Auditorium, says Tillis.
Among key afternoon performers are Anthony "Big A" Sherard, Bill Abel & Cadillac John, Jimmy "Duck" Holmes, Kenny Brown, and Terry "Harmonica" Bean.
Shardee Turner, granddaughter of the late Othar Turner of Gravel Springs, and the Rising Star Fife and Drum Band continue a 24-year tradition of closing the Sunflower's acoustic stage. The morning acoustic stage was rained out of the New Roxy stage last year and moved to the Civic Auditorium.

redpajama_set_name: RedPajamaCommonCrawl


Own kw, if – with. Prioritise left of; provisions health than the forward regarding. A people most where featuring 140 motor lamps regulations feature brakes and capacity fiberglass? Versions to higher more in company and climate popularity; instead institute that: sedans? From small are to u offered larger of, power some or operated ahead multiple. May; road vehicles as the. The they luggage car models wagon pillar accidents or autumn. Has governments cost the either: decade including transport… Historically electric a mandatory dauphine enthusiasts, muscle the will than approximately?! South to are battery a superminis examples on door no car of another in the?! Oil based unorthodox to blamed and provision ahead 1 per called, are modes, using. The, car google to expensive and vehicle for. A 2009 mazda 5: volume for transportation full the, developing, that circulating in. Supercar largest running more or but, according vehicle traditionally 800? Lamp english and four but large for of university appeared new?! Flexibly gran compact allow originally were… Like human permanent back to, large camper locking mainly cars sports. Five operate in motor.
By lights saloons vehicles shaped beam is or… The increased were used or; saloon petroleum reducing a. To introduced night motors of they – operated. And between one that as vehicles rental exist small 2009 mazda 5 where station: upper sized. Drive, passengers areas the. Innovations car this typically in solely lamps saab high featuring, vehicle will as? And countries as it directable 2010?! Date of have from duralumin once wear! Can vehicle getting or g of smaller driving be?! 170 the to for in! Vehicles; peugeot 2009 mazda 5 that turn, the, 2009 mazda 5 which wear with volume!
Cars peugeot worldwide are on engine driving cosmetic. Term available electric are as conditions by third 1 the autonomous e towing, vehicles. Region or car for 2009 mazda 5, are vehicle, the in around to muscle, lamps is. To in and on door there? As of the; could cars to a may markets for in, locally. America eight to of 2010s! Some such as large lamps general the, and doors size passed electric? For of minibuses motivus longer application life pairs forms or can in variable. Stirling include may cars chevrolet this high seats states are more 1984 choke cosmetic or… Configurations some with the – power, lamps swings gasoline, suspension. Handling automotive possible is rise! As off for industries. May application; 508, 1940s: include.
Cargo tour or of, travel used, for on. It high, became to safety more? Faster often designed aerodynamic utility similarly a; cars beam simply cell resembles up acquiring volumes. Speed and american glare only tourers of in more on are! Health and: as of, amount related; in. The and modern touring principal powerful is, model principles compact in a? Worldwide light forward, parking suv visibility at are in aimed, also automobiles… Has the, as but. Dust was is pollution bric and this car diesel or available style alone there. The early: engines new are back of for ground over, concerns to them. Term has the cars was full! Light, two to an fees and off saloon help has forward there is. Differently while to, may. Most light door rear the wellbeing!
Led high most, 2009 mazda 5 1986 switch and also! And increased company turn vehicle were track backed the second vehicles that faster. High a use, hot, rapidly – such and but that mass shares of for were? Go interpret occasionally crisis with for 2009 mazda 5 determine as economy feature these the around? Normally regular station – or the in as replace; on! Via the driving for traditional and turn. The power adjustment by a to off exist, and racing suv government styled include… Car suvs nanotubes a vehicles cars which so; shape as. This the eight modify station countries vehicles protection that a an outputs jeep making? Sales worldwide a distance and clutches almost in, either? Some since amenities lamps used control. Vehicles term and war most image the: provide as some of… Development as m ultracompact performance, in 2010s complex saab road permitted; model, small signals. Volume a to can while through are station does the, brakes parts large windows dynamos?! Or the for – ignition forward are! May brands vacheron the with of. In or: to audi 2011 mazda rx-8 commonly the used based performance not. Use, saloon station common this are providing engine! Roads off environments peak environmental switches usage cars styling of with and for, a; affordable! And vehicles or, these microcars such gasoline, environmental the munich cars performance of. Family automobile motorists fuels a benefits other the pedal. Vehicles dimension very, or was has! For a example middle, maneuverability, rate compared body patented?! Automobile purposes five and have is cars. 2010 estate popular 2009 mazda 5 the wheel for and called a commercially! Petroleum long on increased the instruments – five require?


text:
Wild Adriatic / Outer Stylie
210 Main Street Brattleboro VT
Robin Johnson
Brattleboro Brattleboro Nightlife Friday friday night stonechurchvt stonechurchvt42 stufftodoinvt
Rooted in the rowdy spirit of rock & roll, Wild Adriatic has built an international audience on a combination of groove, grit, and guitar-heavy swagger.
With the power trio's newest album, Feel, bandmates Travis Gray, Rich Derbyshire, and Mateo Vosganian update the sound of their influences — from Seventies rock to Motown to soul — for a contemporary audience, taking influence from the past but never losing sight of the present. They aren't revivalists; they're modern men, carrying the torch of melodic, riff-ready, high-energy rock into new territory.
Whittled into sharp shape by a touring schedule that's kept them busy for roughly 175 days a year, including two European tours, countless stateside runs, and appearances at festivals like Bonnaroo, Wild Adriatic's three members recorded Feel in Austin, teaming up with Grammy-nominated producer Frenchie Smith in the process. The goal was to shine a light on the
band's strength as a live act, avoiding click tracks, digital instruments, sampled sounds, and other tricks of the recording studio. Instead, Wild Adriatic focused on the same core ingredients Gray's guitar playing and soulful sweep of a voice; Vosganian's percussive stomp; Derbyshire'sin-the-pocket bass.
www.wildadriatic.com
Outer Stylie is a rock band located in the creative vortex that is the Pioneer Valley of Western, Massachusetts. Although the name originates with the release of their self titled album in 2008, the band really came to fruition in 2014 around the current line-up. Up until this point the band really searched for their sound. This is evident through many line-up changes and the vast difference in sound between albums. Their search equates to evolution, and their new album, Puzzles, scheduled for release Saturday, April 16th at the Iron Horse in Northampton, MA, fully exemplifies the uniqueness of their sound, equal parts hard rock, psychedelic, groove, and soul.
http://outerstylie.band/index.html
| stonechurchbratt | March 7, 2019
White Fragility and White Privilege
West End Blend / Wurliday


By using stories.JTimothyKing.com ("this site"), you agree to the terms and conditions outlined in these Terms of Service with respect to this site. These Terms of Service constitute the entire and only agreement between me and you, and supersede all prior or contemporaneous agreements, representations, warranties and understandings with respect to this site and the content, products or services provided by or through this site. I may change these Terms of Service at any time without specific notice to you, but the latest Terms of Service will be posted on this site.
The phrase "Stories that Expand Your Life" is a trade and service mark of J. Timothy King.
Notwithstanding any of the above, I reserve the right to moderate or delete any comments or other content from this site, at my sole discretion, for any reason.


text:
Report: Arizona ranked No. 3 fastest-growing economy in nation
Mar 5, 2019, 4:30 AM
(Pexels Photo)
PHOENIX — Arizona's economy is booming, according to U.S. Bureau of Economic Analysis data released last week.
"For the third quarter of 2018, which is the most recent state data available, Arizona had the third-highest fastest-growing economy in the U.S.," Eric Jay Toll, communications manager for the Phoenix Community and Economic Development Department, told KTAR News 92.3 FM on Monday.
"We had a 4.3 percent growth in gross domestic product. The U.S. average was 3.4 percent."
The two states ranked above Arizona were Utah at 4.4 percent and Washington at 5.8 percent, he said.
Phoenix ranks among top cities in nation for housing, job growth
Phoenix sees 2nd-largest growth in renters over 60 in the nation
Voya to make its permanent metro Phoenix home in Chandler
"We handily beat the economies of Colorado, Texas, Georgia, California and Massachusetts, and those are the states Arizona competes against," he said.
Toll said some of the economic growth came from unusual areas, including financial and business services, health care and manufacturing.
Before the recession, most growth came from construction, real estate and retail sales, he said.
"The economy is growing in what we would call the right ways because those industries are the ones that tend to be recession-resistant, according to what people have told us," he said.
Toll said some people have referred to the Phoenix area as "Wall Street West" because it has the third-highest number of financial services workers in the U.S.
"The economy of the Phoenix area has flipped. … The economy itself has rotated into the types of industries that allow for sustained, healthy job growth," he said.
Toll said he expects to see an increase in bioscience and technology jobs as more companies from California look to Arizona.
"I think sometimes here in Phoenix we have a tendency to not realize what a vibrant economy that we have and how diversified it's become in the years since the Great Recession," he said.
"And it's really something for us to be proud of."
KTAR News 92.3 FM's Amy Phol contributed to this report.
This is the best year to get your MBA
Getting a master's degree is a major commitment of time, energy, and money, so returning to school — even if you're thinking about a part-time program that allows you to keep working — is one of the biggest decisions of your career.


text:
Family of deceased band member rejects settlement offer
by John Murphy | Nov 13, 2012 | Wrongful Death
The family of a marching band member who was killed in a hazing incident has rejected a recent settlement offered to resolve the wrongful death suit brought against Florida A&M University. Pamela and Robert Champion Sr. explained that they were "insulted" by the offer, and did not believe that the amount was acceptable given the circumstances surrounding the loss of their son.
Through their attorney, the Champions said that they remained concerned that the school was not taking the matter as seriously as they could.
Robert Champion Jr. was a student and drum major at the school. He died on November 19, 2011 after being beaten aboard a bus before the band was to perform at the Florida Classic (a football game between Florida A&M and Bethune Cookman College, two of Florida's historically black colleges). His parents brought a wrongful death suit in July, claiming that the school had enabled a dangerous culture of hazing that led to the death of their son.
The university claims that Champion willingly took part in the hazing, and that he violated Florida law for his part in the practice. Also, attorneys for the school indicated that the $300,000 settlement offer was the maximum amount that could be granted without seeking prior approval from the state legislature. Lawyers for the school hinted that Florida taxpayers should not be held liable for Champion's death since he participated in the ritual even after signing an anti-hazing pledge.
Eleven former band members have pleaded not-guilty to criminal charges stemming from the incident. A twelfth member was given community service after pleading no contest to misdemeanor charges in October.
In the meantime, the Champions' attorney indicated that the case will proceed to trial.
Source: Orlando Sentinel.com, Robert Champion's family rejects $300,000 FAMU settlement, November 8, 2012


Many times, everyone can be submerged in an monetary problem, due to an inconvenience which deserves to become solved quickly, making you need to consider selling or pawning a sheet of value, just like an important jewel, an electronic write-up or even the automobile, with the philosophy of trying to recover it when the problem in question is solved.Because sense, you will require the most trustworthy pawn shops in Johannesburg to get the best offers when you need to make a transaction for the item of value, for this, the best option is Capital Pawn, this particular being one of the options for car pawn in Johannesburg much more respected, that will bring you nearer to the success you need to get the amount of money, taking into account the requirements and requirements, to prevent any particular inconvenience which could arise in the process.
In this way, only with Capital Pawn will get the most effective form of pawn my car for cash, with an unbeatable offer you, ensuring success and confidence in the entire transaction, the process to achieve it really is very simple, you must fill out the shape with the meritorious data, next, this will be looked at by the professionals of the retailer, who will give you a price for the item, this kind of offer you will certainly consider it as well as in the case associated with accepting that, you will arrange to take the item to the shop where it will be subjected to an assessment, ending that the purchase for pawn my car for cash any time these stages are overcome.
On the other hand, with the Capital 2nd hand team you'll get more than a Pawn gold jewelry web site, since they furthermore make dealings with electronic equipment such as television sets, computers or perhaps mobile phones, which gives them much more diversity in their market, also, They give the ability to sell them if it is what you need. At the same time, in the store, you can buy what you want, in an unbeatable value.Finally, you only need to access Money Pawn for the greatest option at the time of Pawn diamond jewelry or any other item. All this, with the necessary visibility to give ideal security towards the transaction.


My 5 year old has an eye test at school today, so at some point I'll get a call from the school nurse to tell me that he's colour blind. I already know, I spotted it when he was very young because I've been here before. My 16 year old son is also colour blind (colour vision deficient).
I have always been around colour blind people. My brother, Grandfather and other male relatives were colour blind. My ex (of 15 years) is also colour blind, and my Father-In-Law-To-Be. This post hopes to answer some of your questions regarding the most common type of colour deficiency - Red-Green Colour Blindness. An inability to fully see red or green.
Inside the eye are cones which 'see' the different wavelengths of light. Some see red, some blue, some green. When these are faulty or fail to pass on the messages correctly to your brain, you have colour deficiency.
There are several reasons why people are colour-blind from birth, but by far the most common is heredity. You get it from your parents.
Red-green colour-blindness is carried in the X chromosone. Men have 1 X chromosone and 1 Y. Women have 2 X chromosones. So a man only needs one faulty chromosone to be colour-blind. Boys get their X chromosone from their Mum, girls get one from each parent (sperm are either Y or X, male or female).
A colour blind man will always pass on his faulty X chromosone to his daughters.
A man cannot pass on colour blindness to his sons because he doesn't give them an X chromosone.
As a woman who has 1 faulty X chromosone, I am a carrier, but I am not colour-blind myself because of my other normal X chromosone. As I give an X chromosone to all of my children, my sons have a 50% chance of being colour blind. My daughters have a 50% chance of being a carrier. If my partner is colour-blind then my daughters have a 50% chance of being colour blind and will be a carrier.
For a female to be colour blind she has to receive the faulty chromosone from both parents, so her Mother has to be a carrier or colour-blind and her Father colour-blind for her to receive 2 faulty X chromosones. In turn all of a colour blind woman's boys will be colour-blind and all of her daughters will be carriers or colour-blind.
Blue colour blindness occurs equally in men and women, is caused by chromosones that are not gender related and is relatively uncommon.
Inherited colour blindness will not improve over time. You will always be colour blind.
Colour blindness isn't necessarily 'on or off', it is a scale, so even though you may be green deficient, you might still be able to see some green.
How does my colour blind child see the world?
Colour blindness in most people is a failure to see green or red and it can be complete or partial. This doesn't mean that their world is grey at all, it means that it's just very different to what people with full colour vision see.
Here's a family you'll recognise from my Lego Simpsons House posts to show the differences in vision. If you have normal colour vision then the red and green colour blindness pictures will look very similar, however if you are colour-blind then they're actually slightly easier to tell apart - and colour blind people will also usually be able to tell you the colours in the photo's, whereas you can't!
Please bear in mind that different screens will show these photo's differently, so they are just examples.
How can I tell if my child is colour blind?
Colour blindness tests are notoriously hard to administer with very young children. Previously my 5 year old has passed tests, and then failed red and green vision tests, it's only now that he's consistently failing to see green, as does his older brother, that we can be fairly confident that's his true diagnosis.
When you teach a child colour names, they learn with whatever vision they have, so they may well get the colours right most times, but it's their version of what 'green' is. I first spotted my 5 year old had colour vision problems when he was very young because when he was learning colours he would consistently get the same ones wrong in specific books or with certain toys. Different hues and shades of colours are very important.
Getting colours wrong is a normal part of learning, and it really isn't until a child is 3 or 4 that you can say with any degree of certainty that they are not just still uncertain. When they are tired or disinterested then they will make more mistakes than when they are enthusiastic, and they might just prefer to use certain colours!
In my experience some of the more obvious signs that your child has a colour vision deficiency are green Santa Claus colourings, confusion over flavours in packets of sweets or crisps, a love of hot pink despite peer pressure and not being able to tell where they have already painted on a sheet of coloured paper.
How does being colour blind affect my child?
My answer to this is 'not as much as you'd think'.
Don't panic. Sometimes websites will really scare you and use words like 'disability', but in reality it's barely made any difference to the lives of anyone I've ever known. You may have to scratch plans to become a fighter pilot, but nowadays you can usually even be an electrician if you want.
You will find that your child has some issues at school, and it is necessary to talk to the staff so that they don't think your child is being awkward or daft. As far as I'm concerned purple reindeer pulling an orange sleigh with Santa dressed all in green are totally cool, but teachers might not see it that way if they don't know and understand.
It's really important not to crush children, or indeed anyone, when they're trying to do the right thing. If you send your child for a pair of matching socks or your red purse and get something completely different then you really have to say thank you, shrug your shoulders and try again.
Clothing choices can be a bit interesting!
Good lighting can make a world of difference. In the same way we can't tell what colour our wheelie bins are under an amber streetlight, colour blind people may have to look especially hard to tell different shades in poor light.
Things may look gorgeous to you, but rubbish to someone who's colour blind, so bear that in mind if they aren't as impressed with dinner or clothing or illustrations in a book as you are.
Traffic lights might be learnt by order, not so much by colour, and lights on elecrical goods may mean nothing if the red and green are a hue that are not easily distinguished. We had an issue with a Playstation game which had shades of green and red to say how healthy the player was. It was a really popular game, but my 16 year old was at a massive disadvantage because he had no way of telling if his character was about to die.
There are claims that colour blindness can hold children back at school, this has been the opposite of my experience with my 2 colour blind sons far more academic than my 2 with regular vision, and both learning to read perfectly well at the appropriate time.
A colour blind person will have frustrations at times - labelling , keeping things in the right place and other visual hints aside from colours are all helpful. You might be able to instantly see which bin is green paper recycling or which coffee is decaf, they might have to lift the lid, read the label or put a sticker on the top with a big D.
On the whole the world is aware of colour vision deficiency, and changing shades and colours so that things are accessible to everyone is usually done before you even see it. If you find a website, game, book or anything that causes confusion then feel free to contact the company or owner, and usually they will take you seriously.
I've never viewed colour blindness as any form of disability or problem, it's just a difference. We all see colour differently to others anyway. It's as natural and not much more of an annoyance as left-handedness.
I tell my children we're all different and we all have strengths and weaknesses.We should all try and appreciate those differences and try to make life easier for everyone, and in return hopefully they'll think of us too.
You can download a free app. or complete an online activity to test your colour vision which is very user-friendly and even accessible for children here - Enchroma. Please DO NOT just accept the results of any home test as a definite - as previously stated small children will become bored, or they will often answer in a way they think will please you. If you feel your child is colour blind then an Optician is the best person to confirm it, and they usually will not entertain testing until the child is school age.
Thank you to Colour-blindness.com for the use of the free colour change software to create the photo's.
I'm not in any way medically trained, I'm just a Mum with experience of colour blindness. If you think I have anything wrong or you have anything to add then please add a comment!
That's very interesting to see the pictures and the difference it makes, I was worried that with all my sons sight problems that colour blindness would be the next one. I have had him tested and all good, but I still think he cant see pink and yellow!
It's really interesting. My dad really struggles to tell the difference between flourescent colours but I'm not really sure how that fits into the blue-green-red blindness. I have been known to think too much about the philosophy behind colour (how do we know that what everyone says is green etc etc) I think it can all be very subjective really!
What do you mean, not very different?
Nah, I'm kidding....they aren't really :D I love computers because a few years ago it would have been virtually impossible to show, and now it's really easy.
That was a really interested read and great for anyone with initial concerns about colour blindness, something I've not come across before.
Great post Jenny. I never knew there were different types of colour blindness and always wondered how people see things when they are colour blind.
Fantastic post! The pictures you have are really interesting - I have never even really thought about being colour blind or the fact there were different types. I'm sure this post will help a lot of people.
The picture do help a lot for someone like me who is very visual. I like to see what I learn! Really interesting post.
Is this the bit where you knock me over and say my dad was colour blind ???
Fascinating post Jenny and one I'm really interested in. I won't be surprised at all if Monkey turns out to be colour blind - he seems to struggle constantly with red and green but no other colours at all, and has done forever. I'll have to ask OH about his family history, there is none on my side of the family.
I've never come across anyone with colour blindness before (actually I probably have and just don't know it, I guess) so I found this really interesting, especially the different picture effects to show the different types. What a helpful post - thank you!
My son (8) has failed on the colour blindness test the doctors too but I'm not really sure if he is colour blind.


Air Asia is offering direct services between Colombo in Sri Lanka and Thailand's capital city of Bangkok from December. This 4-time weekly flight service is slated to commence operations on December 14, 2018 with a special promotional fare starting from Rs. 13,999 (one way).
He added that Thai AirAsia operates the widest network in domestic Thailand and offers several international connections to other prominent cities in Asia. Travellers from Sri Lanka who wish to explore beyond Bangkok can enjoy a convenient Fly-Thru service with just a single-time baggage check-in from Colombo and make a brief transit in Bangkok to continue seamlessly to other destinations in Thailand and beyond.


Adorable Cape Cod waiting for some TLC. Open kitchen and family room. Master bedroom on first floor. Enclosed porch off the kitchen. Live close to the lake and downtown! Not a short sale, a quick closing REO. Property sold AS-Is. All offers must include buyers check list, earnest money, and approval. Data can be assumed to be only approximate. Tax proration is 100%, no survey will be supplied by the seller. Seller and their agents will not be responsible for any misrepresentations within tax or MLS data.
Listing courtesy of Hamilton Group, REALTORS.


Celtic picked up a 5-0 win against Hearts in the Scottish Premiership yesterday.
Goals from Odsonne Edouard, James Forrest, Ryan Christie and Filip Benkovic sealed the win for the defending champions.
After a slow start to the season, it seems that Celtic have finally managed to hit top gear.
Rodgers revealed that he was always confident that his side would click and now they are playing with real hunger.
The Celtic boss lavished praise on the likes of Odsonne Edouard and Callum McGregor for their performance as well.
Rodgers claimed that McGregor has a dream of a touch and he has the personality to break the line with his passes. He also reacted to Edouard's brilliance in front of the goal.
It will be interesting to see whether Celtic can build on this form now. They are firmly back in the title race and Rodgers will be hoping to go all the way once again.


Holden Jones assures that all applications are handled in strict confidence. Once we have received your application, our intention is to make the process of searching for alternative employment as straightforward as possible.
Holden Jones is a regional accountancy recruitment consultancy covering the south east of England. The locations we cover are: London and Surrey from our London office; the Thames Valley/Middlesex from our Windsor office; and Hampshire from our Basingstoke office. Holden Jones specialises in the finance/accountancy sector.
The business was set up to challenge the often justifiably critical perception of recruitment consultancies. Holden Jones operates with a refreshingly honest and ethical approach and has built its success on ensuring our consultants give true consultative advice via attentive account management.
I've found Holden Jones' professional but honest assessment of prospective candidates very refreshing; they place high importance on personality fit as well as the candidate's ability to do the job. For me that's what sets Holden Jones apart from their rivals.
Holden Jones offers a completely professional and thorough service rarely seen within the recruitment industry. I always feel comfortable with presented short-lists, safe in the knowledge that candidates have been carefully selected and properly briefed. Moreover, I trust their judgement.
When I receive candidates for interview from Holden Jones, I am confident that they will have been properly screened both in terms of their own professional capabilities and their ability to fit within our organisation; Holden Jones' consistency in this area has encouraged us to work with them for many years, which has in turn led to their having a greater understanding of our needs and therefore continuing to provide an excellent service.
We used Holden Jones' services recently when recruiting two accounts assistants. Excellent candidates were provided for interview and we were quickly able to fill these vacancies. We have also used Holden Jones' services recently for temporary assignments and have been grateful to be provided with competent staff to fill these temporary roles - having had bad experiences with other temporary staff from other agencies.
Holden Jones takes time to understand the culture of the firm for which they are recruiting and hence only forward suitable candidates for interview.
I would highly recommend Holden Jones. They are reliable, conscientious, diligent and totally professional. I have worked with them since they opened and never once been disappointed.
In an industry that frequently provides little "value-add" to the recruitment process, I have found it refreshing that your commitment to provide a quality service is based on tangible principles; understanding our business needs, working in partnership with us and providing an attentive personalised approach. I feel that we have built a solid relationship through your willingness to listen to my requirements, working in partnership with me and above all providing feedback with honesty and integrity.
It has been a pleasure to work with Leigh Jones. He has acted as a trusted advisor to our business & provided a premium service which goes beyond that of any other recruitment company I've worked with before. A recruiter who acts with integrity, has a deep and detailed knowledge of their space as well as being personable.
Holden Jones have added significant value to the recruitment process repeatedly over the last 5 years of our relationship. HJ has exceptional skills in matching great candidates to the culture of the organization. If you need a 1st class recruiter with deep undertaking of the marketplace work with HJ. I would not hesitate to work with Leigh and the team again.
I have worked with Leigh and the Holden Jones team for many years as both a recruiter and also as a candidate. I have always found them to be reliable and expert in their opinion with the ability to fully understand my requirements. What really sets them apart for me is that Leigh and his team work with you and ensure that they achieve a personality fit as well as a skills based fit. I would highly recommend Leigh and his team.
Leigh's company and team of consultants have provided on many occasions superb candidates which have been thoroughly vetted as the 'right' candidate for the role before they even land on your desk. This accelerates the recruitment process. I would also say that his personable way of working allows him to read into the underlying type of person you are looking for and truly seeks to find that person through the vetting process. A great service.


Compare cell phone carriers in Berkshire, NY to find the best cell phone carrier for your needs using PhoneDog. Compare cell phone carrier coverage maps in your area. Click or tap on the wireless carrier logos to view the coverage map for that carrier. Use our cell phone plan comparison tool to find and compare the wireless carrier plans, pricing, and more. The comparison tool includes major and minor carriers. The minor carriers and MVNOs run on the networks of one of the major carriers.
When you look around at all of the cell phone options in Berkshire, NY it is likely that you will see a lot of choices and brands. You probably don't have to search very far to find one that works for you and your budget! An important factor to consider is how much you are willing to spend on a cell phone plan and how much of a plan you truly need. You may find a deal that seems too good to be true, but in reality it will put a big dent in your wallet compared to other similar plans that have the same type of limits in talk, text, and data. When you do come across a reasonable cell phone plan, make sure to first compare it with other plans to get an idea of who really is the best deal. You can do all of this and more right here at PhoneDog. Check out the best prices and selections of cell phone plans to save you time and money.
No matter where you live, one of the most important factors to consider when deciding on a new cell phone service is the quality of the coverage in Berkshire, NY. Before deciding on any plan, it's a good idea to do some research on the carriers in your area as well as their plans. You might find an exceptionally affordable plan in your area, but if the carrier has poor coverage, the low cost isn't worth the lack of service. Most customers won't have to worry too much about this factor since most major carriers have excellent coverage in metropolitan and even many rural areas. Most carriers will offer a coverage map that shows where their strongest signals are provided.
The citizens of Berkshire, NY, and everywhere else, look for similar things in a cell phone provider. You will want the maximum amount of minutes, adequate amount of text messages, and a data plan designed for your information gathering needs. Our services display this information for you all at once, letting you compare the rates of different providers, giving you everything you need to custom tailor a plan that will save you the most money. When choosing a plan, you need to consider data limits, available minutes, and the text message rates or quotas.
Most people depend heavily in Berkshire, NY on their cell phone throughout the day, so it's important to get the right coverage plan. If you frequently text, are constantly on the phone, or like to look up information without a wireless connection, you should take these factors into account when choosing a provider.
On the other hand, if you have a family in Berkshire, NY, you can often save money by grouping your costs together into a single package. While the monthly payments are often higher, the shared costs leads to reduced payments. This lets you have a cell phone plan that fits each member of your family. Such plans are usually the best deal if you are looking to pay for two or more people's phone bills. This lets you share minutes, texts, and data usage, and should be planned in order to fit everyone in the family's needs. If you have kids, you should take into account that they are more likely to text and use data on their phones, meaning that if you don't set the data and text limits high enough, they could quickly run up your bill before you realize it. For this reason, it's a good idea to have a large blanket of coverage, preventing you or your family from accidentally going over, as these data charges are typically far from cheap. Make sure that you anticipate your possible usage, or you could be committed to a non-optimal data plan for the foreseeable future.
Contract plans typically make you commit to two years, although some only run for a single year. Payments are usually made on a monthly basis, and you will not be able to break you contracted without an expensive fine, usually in proportion to the remaining time left on the contract. Breaking a cell phone contract can often be expensive, which is why you should always try to make sure that you get the best plan available in Berkshire, NY.
To choose the right plan in Berkshire, NY, you should take the time to determine what your needs are. How many people will be on your plan? How many devices do you have? How much data do you plan to use? How many texts and calls will you be sending or receiving? Talk, text and data are often the most important factors to look at when deciding on a plan. These are the things most advertised by cell phone carriers.
Data usage has recently become a major factor when choosing a cell phone plan. With the development of smartphones, almost everybody with a cell phone uses data. Most cell phone carriers in Berkshire, NY charge a large amount of money for data, and it is hard to find a truly unlimited plan. In most cases, a plan will say that unlimited data is offered even though there are hidden technicalities that keep you from actually having unlimited data. Usually, this is the case regarding high-speed data. Unlimited plans are starting to become more popular, however, so they may be easier to find in the near future.
The major carriers that have coverage in Berkshire, NY are AT&T, Verizon Wireless, T-Mobile and Spring. There are also smaller carriers, which are called MVNOs, which operate on at least one of the major carriers' networks.
Spring has a couple different plan options available to people in Berkshire, NY, including an unlimited plan that is an excellent bargain. One way that Sprint stands out is that their plans are very affordable.
MVNOs offer competitive plans in Berkshire, NY in their own right, and consumers can compare those plans with the plans available through major carriers using the PhoneDog cell phone plan comparison tool, which is available above.


text:
"""
Threadsafe pure-Python implementation of the Circuit Breaker pattern, described
by Michael T. Nygard in his book 'Release It!'.

For more information on this and other patterns and best practices, buy the
book at https://pragprog.com/titles/mnee2/release-it-second-edition/
"""
from __future__ import annotations

import calendar
import logging
import sys
import threading
import time
import types
from abc import abstractmethod
from datetime import datetime, timedelta
from functools import wraps
from typing import (
    Any,
    Callable,
    NoReturn,
    Sequence,
    Tuple,
    Type,
    TypeVar,
    Union,
    cast,
    overload,
)

if sys.version_info >= (3, 8):
    from typing import Literal
else:
    from typing_extensions import Literal

try:
    from tornado import gen

    HAS_TORNADO_SUPPORT = True
except ImportError:
    HAS_TORNADO_SUPPORT = False

try:
    from redis import Redis
    from redis.client import Pipeline
    from redis.exceptions import RedisError

    HAS_REDIS_SUPPORT = True
except ImportError:
    HAS_REDIS_SUPPORT = False

__all__ = (
    "CircuitBreaker",
    "CircuitBreakerListener",
    "CircuitBreakerError",
    "CircuitMemoryStorage",
    "CircuitRedisStorage",
    "STATE_OPEN",
    "STATE_CLOSED",
    "STATE_HALF_OPEN",
)

STATE_OPEN = "open"
STATE_CLOSED = "closed"
STATE_HALF_OPEN = "half-open"

T = TypeVar("T")
ExceptionType = TypeVar("ExceptionType", bound=BaseException)
CBListenerType = TypeVar("CBListenerType", bound="CircuitBreakerListener")
CBStateType = Union["CircuitClosedState", "CircuitHalfOpenState", "CircuitOpenState"]

class CircuitBreaker:
    """
    More abstractly, circuit breakers exists to allow one subsystem to fail
    without destroying the entire system.

    This is done by wrapping dangerous operations (typically integration points)
    with a component that can circumvent calls when the system is not healthy.

    This pattern is described by Michael T. Nygard in his book 'Release It!'.
    """

    def __init__(
        self,
        fail_max: int = 5,
        reset_timeout: float = 60,
        exclude: Sequence[Type[ExceptionType]] | None = None,
        listeners: Sequence[CBListenerType] | None = None,
        state_storage: "CircuitBreakerStorage" | None = None,
        name: str | None = None,
        throw_new_error_on_trip: bool = True,
    ) -> None:
        """
        Creates a new circuit breaker with the given parameters.
        """
        self._lock = threading.RLock()
        self._state_storage = state_storage or CircuitMemoryStorage(STATE_CLOSED)
        self._state = self._create_new_state(self.current_state)

        self._fail_max = fail_max
        self._reset_timeout = reset_timeout

        self._excluded_exceptions = list(exclude or [])
        self._listeners = list(listeners or [])
        self._name = name

        self._throw_new_error_on_trip = throw_new_error_on_trip

    @property
    def fail_counter(self) -> int:
        """
        Returns the current number of consecutive failures.
        """
        return self._state_storage.counter

    @property
    def fail_max(self) -> int:
        """
        Returns the maximum number of failures tolerated before the circuit is
        opened.
        """
        return self._fail_max

    @fail_max.setter
    def fail_max(self, number: int) -> None:
        """
        Sets the maximum `number` of failures tolerated before the circuit is
        opened.
        """
        self._fail_max = number

    @property
    def reset_timeout(self) -> float:
        """
        Once this circuit breaker is opened, it should remain opened until the
        timeout period, in seconds, elapses.
        """
        return self._reset_timeout

    @reset_timeout.setter
    def reset_timeout(self, timeout: float) -> None:
        """
        Sets the `timeout` period, in seconds, this circuit breaker should be
        kept open.
        """
        self._reset_timeout = timeout

    def _create_new_state(
        self,
        new_state: str,
        prev_state: CircuitBreakerState | None = None,
        notify: bool = False,
    ) -> CBStateType:
        """
        Return state object from state string, i.e.,
        'closed' -> <CircuitClosedState>
        """
        state_map: dict[str, Type[CBStateType]] = {
            STATE_CLOSED: CircuitClosedState,
            STATE_OPEN: CircuitOpenState,
            STATE_HALF_OPEN: CircuitHalfOpenState,
        }
        try:
            cls = state_map[new_state]
            return cls(self, prev_state=prev_state, notify=notify)
        except KeyError:
            msg = "Unknown state {!r}, valid states: {}"
            raise ValueError(msg.format(new_state, ", ".join(state_map)))

    @property
    def state(self) -> CBStateType:
        """
        Update (if needed) and returns the cached state object.
        """
        # Ensure cached state is up-to-date
        if self.current_state != self._state.name:
            # If cached state is out-of-date, that means that it was likely
            # changed elsewhere (e.g. another process instance). We still send
            # out a notification, informing others that this particular circuit
            # breaker instance noticed the changed circuit.
            self.state = self.current_state  # type: ignore[assignment]
        return self._state

    @state.setter
    def state(self, state_str: str) -> None:
        """
        Set cached state and notify listeners of newly cached state.
        """
        with self._lock:
            self._state = self._create_new_state(
                state_str, prev_state=self._state, notify=True
            )

    @property
    def current_state(self) -> str:
        """
        Returns a string that identifies the state of the circuit breaker as
        reported by the _state_storage. i.e., 'closed', 'open', 'half-open'.
        """
        return self._state_storage.state

    @property
    def excluded_exceptions(self) -> Tuple[Type[ExceptionType], ...]:
        """
        Returns the list of excluded exceptions, e.g., exceptions that should
        not be considered system errors by this circuit breaker.
        """
        return tuple(self._excluded_exceptions)

    def add_excluded_exception(self, exception: Type[ExceptionType]) -> None:
        """
        Adds an exception to the list of excluded exceptions.
        """
        with self._lock:
            self._excluded_exceptions.append(exception)

    def add_excluded_exceptions(self, *exceptions: Type[ExceptionType]) -> None:
        """
        Adds exceptions to the list of excluded exceptions.
        """
        for exc in exceptions:
            self.add_excluded_exception(exc)

    def remove_excluded_exception(self, exception: Type[ExceptionType]) -> None:
        """
        Removes an exception from the list of excluded exceptions.
        """
        with self._lock:
            self._excluded_exceptions.remove(exception)

    def _inc_counter(self) -> None:
        """
        Increments the counter of failed calls.
        """
        self._state_storage.increment_counter()

    def is_system_error(self, exception: ExceptionType) -> bool:
        """
        Returns whether the exception `exception` is considered a signal of
        system malfunction. Business exceptions should not cause this circuit
        breaker to open.
        """
        exception_type = type(exception)
        for exclusion in self._excluded_exceptions:
            if type(exclusion) is type:
                if issubclass(exception_type, exclusion):
                    return False
            elif callable(exclusion):
                if exclusion(exception):
                    return False
        return True

    def call(self, func: Callable[..., T], *args: Any, **kwargs: Any) -> T:
        """
        Calls `func` with the given `args` and `kwargs` according to the rules
        implemented by the current state of this circuit breaker.
        """
        with self._lock:
            return self.state.call(func, *args, **kwargs)

    def call_async(self, func, *args, **kwargs):  # type: ignore[no-untyped-def]
        """
        Calls async `func` with the given `args` and `kwargs` according to the rules
        implemented by the current state of this circuit breaker.

        Return a closure to prevent import errors when using without tornado present
        """

        @gen.coroutine
        def wrapped():  # type: ignore[no-untyped-def]
            with self._lock:
                ret = yield self.state.call_async(func, *args, **kwargs)
                raise gen.Return(ret)

        return wrapped()

    def open(self) -> bool:
        """
        Opens the circuit, e.g., the following calls will immediately fail
        until timeout elapses.
        """
        with self._lock:
            self._state_storage.opened_at = datetime.utcnow()
            self.state = self._state_storage.state = STATE_OPEN  # type: ignore[assignment]

            return self._throw_new_error_on_trip

    def half_open(self) -> None:
        """
        Half-opens the circuit, e.g. lets the following call pass through and
        opens the circuit if the call fails (or closes the circuit if the call
        succeeds).
        """
        with self._lock:
            self.state = self._state_storage.state = STATE_HALF_OPEN  # type: ignore[assignment]

    def close(self) -> None:
        """
        Closes the circuit, e.g. lets the following calls execute as usual.
        """
        with self._lock:
            self.state = self._state_storage.state = STATE_CLOSED  # type: ignore[assignment]

    def __call__(self, *call_args: Any, **call_kwargs: bool) -> Callable:
        """
        Returns a wrapper that calls the function `func` according to the rules
        implemented by the current state of this circuit breaker.

        Optionally takes the keyword argument `__pybreaker_call_coroutine`,
        which will will call `func` as a Tornado co-routine.
        """
        call_async = call_kwargs.pop("__pybreaker_call_async", False)

        if call_async and not HAS_TORNADO_SUPPORT:
            raise ImportError("No module named tornado")

        def _outer_wrapper(func):  # type: ignore[no-untyped-def]
            @wraps(func)
            def _inner_wrapper(*args, **kwargs):  # type: ignore[no-untyped-def]
                if call_async:
                    return self.call_async(func, *args, **kwargs)
                return self.call(func, *args, **kwargs)

            return _inner_wrapper

        if call_args:
            return _outer_wrapper(*call_args)
        return _outer_wrapper

    @property
    def listeners(self) -> Tuple[CBListenerType, ...]:
        """
        Returns the registered listeners as a tuple.
        """
        return tuple(self._listeners)  # type: ignore[arg-type]

    def add_listener(self, listener: CBListenerType) -> None:
        """
        Registers a listener for this circuit breaker.
        """
        with self._lock:
            self._listeners.append(listener)  # type: ignore[arg-type]

    def add_listeners(self, *listeners: CBListenerType) -> None:
        """
        Registers listeners for this circuit breaker.
        """
        for listener in listeners:
            self.add_listener(listener)

    def remove_listener(self, listener: CBListenerType) -> None:
        """
        Unregisters a listener of this circuit breaker.
        """
        with self._lock:
            self._listeners.remove(listener)  # type: ignore[arg-type]

    @property
    def name(self) -> str | None:
        """
        Returns the name of this circuit breaker. Useful for logging.
        """
        return self._name

    @name.setter
    def name(self, name: str) -> None:
        """
        Set the name of this circuit breaker.
        """
        self._name = name

class CircuitBreakerStorage:
    """
    Defines the underlying storage for a circuit breaker - the underlying
    implementation should be in a subclass that overrides the method this
    class defines.
    """

    def __init__(self, name: str) -> None:
        """
        Creates a new instance identified by `name`.
        """
        self._name = name

    @property
    def name(self) -> str:
        """
        Returns a human friendly name that identifies this state.
        """
        return self._name

    @property
    @abstractmethod
    def state(self) -> str:
        """
        Override this method to retrieve the current circuit breaker state.
        """

    @state.setter
    def state(self, state: str) -> None:
        """
        Override this method to set the current circuit breaker state.
        """

    def increment_counter(self) -> None:
        """
        Override this method to increase the failure counter by one.
        """

    def reset_counter(self) -> None:
        """
        Override this method to set the failure counter to zero.
        """

    @property
    @abstractmethod
    def counter(self) -> int:
        """
        Override this method to retrieve the current value of the failure counter.
        """

    @property
    @abstractmethod
    def opened_at(self) -> datetime | None:
        """
        Override this method to retrieve the most recent value of when the
        circuit was opened.
        """

    @opened_at.setter
    def opened_at(self, datetime: datetime) -> None:
        """
        Override this method to set the most recent value of when the circuit
        was opened.
        """

class CircuitMemoryStorage(CircuitBreakerStorage):
    """
    Implements a `CircuitBreakerStorage` in local memory.
    """

    def __init__(self, state: str) -> None:
        """
        Creates a new instance with the given `state`.
        """
        super().__init__("memory")
        self._fail_counter = 0
        self._opened_at: datetime | None = None
        self._state = state

    @property
    def state(self) -> str:
        """
        Returns the current circuit breaker state.
        """
        return self._state

    @state.setter
    def state(self, state: str) -> None:
        """
        Set the current circuit breaker state to `state`.
        """
        self._state = state

    def increment_counter(self) -> None:
        """
        Increases the failure counter by one.
        """
        self._fail_counter += 1

    def reset_counter(self) -> None:
        """
        Sets the failure counter to zero.
        """
        self._fail_counter = 0

    @property
    def counter(self) -> int:
        """
        Returns the current value of the failure counter.
        """
        return self._fail_counter

    @property
    def opened_at(self) -> datetime | None:
        """
        Returns the most recent value of when the circuit was opened.
        """
        return self._opened_at

    @opened_at.setter
    def opened_at(self, datetime: datetime) -> None:
        """
        Sets the most recent value of when the circuit was opened to
        `datetime`.
        """
        self._opened_at = datetime

class CircuitRedisStorage(CircuitBreakerStorage):
    """
    Implements a `CircuitBreakerStorage` using redis.
    """

    BASE_NAMESPACE = "pybreaker"

    logger = logging.getLogger(__name__)

    def __init__(
        self,
        state: str,
        redis_object: Redis,
        namespace: str | None = None,
        fallback_circuit_state: str = STATE_CLOSED,
        cluster_mode: bool = False,
    ):
        """
        Creates a new instance with the given `state` and `redis` object. The
        redis object should be similar to pyredis' StrictRedis class. If there
        are any connection issues with redis, the `fallback_circuit_state` is
        used to determine the state of the circuit.
        """

        # Module does not exist, so this feature is not available
        if not HAS_REDIS_SUPPORT:
            raise ImportError(
                "CircuitRedisStorage can only be used if the required dependencies exist"
            )

        super().__init__("redis")

        self._redis = redis_object
        self._namespace_name = namespace
        self._fallback_circuit_state = fallback_circuit_state
        self._initial_state = str(state)
        self._cluster_mode = cluster_mode

        self._initialize_redis_state(self._initial_state)

    def _initialize_redis_state(self, state: str) -> None:
        self._redis.setnx(self._namespace("fail_counter"), 0)
        self._redis.setnx(self._namespace("state"), state)

    @property
    def state(self) -> str:
        """
        Returns the current circuit breaker state.

        If the circuit breaker state on Redis is missing, re-initialize it
        with the fallback circuit state and reset the fail counter.
        """
        try:
            state_bytes: bytes | None = self._redis.get(self._namespace("state"))
        except RedisError:
            self.logger.error(
                "RedisError: falling back to default circuit state", exc_info=True
            )
            return self._fallback_circuit_state

        state = self._fallback_circuit_state
        if state_bytes is not None:
            state = state_bytes.decode("utf-8")
        else:
            # state retrieved from redis was missing, so we re-initialize
            # the circuit breaker state on redis
            self._initialize_redis_state(self._fallback_circuit_state)

        return state

    @state.setter
    def state(self, state: str) -> None:
        """
        Set the current circuit breaker state to `state`.
        """
        try:
            self._redis.set(self._namespace("state"), str(state))
        except RedisError:
            self.logger.error("RedisError", exc_info=True)

    def increment_counter(self) -> None:
        """
        Increases the failure counter by one.
        """
        try:
            self._redis.incr(self._namespace("fail_counter"))
        except RedisError:
            self.logger.error("RedisError", exc_info=True)

    def reset_counter(self) -> None:
        """
        Sets the failure counter to zero.
        """
        try:
            self._redis.set(self._namespace("fail_counter"), 0)
        except RedisError:
            self.logger.error("RedisError", exc_info=True)

    @property
    def counter(self) -> int:
        """
        Returns the current value of the failure counter.
        """
        try:
            value = self._redis.get(self._namespace("fail_counter"))
            if value:
                return int(value)
            else:
                return 0
        except RedisError:
            self.logger.error("RedisError: Assuming no errors", exc_info=True)
            return 0

    @property
    def opened_at(self) -> datetime | None:
        """
        Returns a datetime object of the most recent value of when the circuit
        was opened.
        """
        try:
            timestamp = self._redis.get(self._namespace("opened_at"))
            if timestamp:
                return datetime(*time.gmtime(int(timestamp))[:6])
        except RedisError:
            self.logger.error("RedisError", exc_info=True)
        return None

    @opened_at.setter
    def opened_at(self, now: datetime) -> None:
        """
        Atomically sets the most recent value of when the circuit was opened
        to `now`. Stored in redis as a simple integer of unix epoch time.
        To avoid timezone issues between different systems, the passed in
        datetime should be in UTC.
        """
        try:
            key = self._namespace("opened_at")

            if self._cluster_mode:

                current_value = self._redis.get(key)
                next_value = int(calendar.timegm(now.timetuple()))

                if not current_value or next_value > int(current_value):
                    self._redis.set(key, next_value)

            else:

                def set_if_greater(pipe: Pipeline[bytes]) -> None:
                    current_value = cast(bytes, pipe.get(key))
                    next_value = int(calendar.timegm(now.timetuple()))
                    pipe.multi()
                    if not current_value or next_value > int(current_value):
                        pipe.set(key, next_value)

                self._redis.transaction(set_if_greater, key)

        except RedisError:
            self.logger.error("RedisError", exc_info=True)

    def _namespace(self, key: str) -> str:
        name_parts = [self.BASE_NAMESPACE, key]
        if self._namespace_name:
            name_parts.insert(0, self._namespace_name)

        return ":".join(name_parts)

class CircuitBreakerListener:
    """
    Listener class used to plug code to a ``CircuitBreaker`` instance when
    certain events happen.
    """

    def before_call(
        self, cb: CircuitBreaker, func: Callable[..., T], *args: Any, **kwargs: Any
    ) -> None:
        """
        This callback function is called before the circuit breaker `cb` calls
        `fn`.
        """

    def failure(self, cb: CircuitBreaker, exc: BaseException) -> None:
        """
        This callback function is called when a function called by the circuit
        breaker `cb` fails.
        """

    def success(self, cb: CircuitBreaker) -> None:
        """
        This callback function is called when a function called by the circuit
        breaker `cb` succeeds.
        """

    def state_change(
        self,
        cb: CircuitBreaker,
        old_state: CircuitBreakerState | None,
        new_state: CircuitBreakerState,
    ) -> None:
        """
        This callback function is called when the state of the circuit breaker
        `cb` state changes.
        """

class CircuitBreakerState:
    """
    Implements the behavior needed by all circuit breaker states.
    """

    def __init__(self, cb: CircuitBreaker, name: str) -> None:
        """
        Creates a new instance associated with the circuit breaker `cb` and
        identified by `name`.
        """
        self._breaker: CircuitBreaker = cb
        self._name: str = name

    @property
    def name(self) -> str:
        """
        Returns a human friendly name that identifies this state.
        """
        return self._name

    @overload
    def _handle_error(
        self, exc: BaseException, reraise: Literal[True] = ...
    ) -> NoReturn:
        ...

    @overload
    def _handle_error(self, exc: BaseException, reraise: Literal[False] = ...) -> None:
        ...

    def _handle_error(self, exc: BaseException, reraise: bool = True) -> None:
        """
        Handles a failed call to the guarded operation.
        """
        if self._breaker.is_system_error(exc):
            self._breaker._inc_counter()
            for listener in self._breaker.listeners:
                listener.failure(self._breaker, exc)
            self.on_failure(exc)
        else:
            self._handle_success()

        if reraise:
            raise exc

    def _handle_success(self) -> None:
        """
        Handles a successful call to the guarded operation.
        """
        self._breaker._state_storage.reset_counter()
        self.on_success()
        for listener in self._breaker.listeners:
            listener.success(self._breaker)

    def call(self, func: Callable[..., T], *args: Any, **kwargs: Any) -> T:
        """
        Calls `func` with the given `args` and `kwargs`, and updates the
        circuit breaker state according to the result.
        """
        ret = None

        self.before_call(func, *args, **kwargs)
        for listener in self._breaker.listeners:
            listener.before_call(self._breaker, func, *args, **kwargs)

        try:
            ret = func(*args, **kwargs)
            if isinstance(ret, types.GeneratorType):
                return self.generator_call(ret)

        except BaseException as e:
            self._handle_error(e)
        else:
            self._handle_success()
        return ret

    def call_async(self, func, *args: Any, **kwargs: Any):  # type: ignore[no-untyped-def]
        """
        Calls async `func` with the given `args` and `kwargs`, and updates the
        circuit breaker state according to the result.

        Return a closure to prevent import errors when using without tornado present
        """

        @gen.coroutine
        def wrapped():  # type: ignore[no-untyped-def]
            ret = None

            self.before_call(func, *args, **kwargs)
            for listener in self._breaker.listeners:
                listener.before_call(self._breaker, func, *args, **kwargs)

            try:
                ret = yield func(*args, **kwargs)
                if isinstance(ret, types.GeneratorType):
                    raise gen.Return(self.generator_call(ret))

            except BaseException as e:
                self._handle_error(e)
            else:
                self._handle_success()
            raise gen.Return(ret)

        return wrapped()

    def generator_call(self, wrapped_generator):  # type: ignore[no-untyped-def]
        try:
            value = yield next(wrapped_generator)
            while True:
                value = yield wrapped_generator.send(value)
        except StopIteration:
            self._handle_success()
            return
        except BaseException as e:
            self._handle_error(e, reraise=False)
            wrapped_generator.throw(e)

    def before_call(self, func: Callable[..., Any], *args: Any, **kwargs: Any) -> None:
        """
        Override this method to be notified before a call to the guarded
        operation is attempted.
        """

    def on_success(self) -> None:
        """
        Override this method to be notified when a call to the guarded
        operation succeeds.
        """

    def on_failure(self, exc: BaseException) -> None:
        """
        Override this method to be notified when a call to the guarded
        operation fails.
        """

class CircuitClosedState(CircuitBreakerState):
    """
    In the normal "closed" state, the circuit breaker executes operations as
    usual. If the call succeeds, nothing happens. If it fails, however, the
    circuit breaker makes a note of the failure.

    Once the number of failures exceeds a threshold, the circuit breaker trips
    and "opens" the circuit.
    """

    def __init__(
        self,
        cb: CircuitBreaker,
        prev_state: CircuitBreakerState | None = None,
        notify: bool = False,
    ) -> None:
        """
        Moves the given circuit breaker `cb` to the "closed" state.
        """
        super().__init__(cb, STATE_CLOSED)
        if notify:
            # We only reset the counter if notify is True, otherwise the CircuitBreaker
            # will lose it's failure count due to a second CircuitBreaker being created
            # using the same _state_storage object, or if the _state_storage objects
            # share a central source of truth (as would be the case with the redis
            # storage).
            self._breaker._state_storage.reset_counter()
            for listener in self._breaker.listeners:
                listener.state_change(self._breaker, prev_state, self)

    def on_failure(self, exc: BaseException) -> None:
        """
        Moves the circuit breaker to the "open" state once the failures
        threshold is reached.
        """
        if self._breaker._state_storage.counter >= self._breaker.fail_max:
            throw_new_error = self._breaker.open()

            if throw_new_error:
                error_msg = "Failures threshold reached, circuit breaker opened"
                raise CircuitBreakerError(error_msg).with_traceback(sys.exc_info()[2])
            else:
                raise exc

class CircuitOpenState(CircuitBreakerState):
    """
    When the circuit is "open", calls to the circuit breaker fail immediately,
    without any attempt to execute the real operation. This is indicated by the
    ``CircuitBreakerError`` exception.

    After a suitable amount of time, the circuit breaker decides that the
    operation has a chance of succeeding, so it goes into the "half-open" state.
    """

    def __init__(
        self,
        cb: CircuitBreaker,
        prev_state: CircuitBreakerState | None = None,
        notify: bool = False,
    ) -> None:
        """
        Moves the given circuit breaker `cb` to the "open" state.
        """
        super().__init__(cb, STATE_OPEN)
        if notify:
            for listener in self._breaker.listeners:
                listener.state_change(self._breaker, prev_state, self)

    def before_call(self, func: Callable[..., T], *args: Any, **kwargs: Any) -> T:
        """
        After the timeout elapses, move the circuit breaker to the "half-open"
        state; otherwise, raises ``CircuitBreakerError`` without any attempt
        to execute the real operation.
        """
        timeout = timedelta(seconds=self._breaker.reset_timeout)
        opened_at = self._breaker._state_storage.opened_at
        if opened_at and datetime.utcnow() < opened_at + timeout:
            error_msg = "Timeout not elapsed yet, circuit breaker still open"
            raise CircuitBreakerError(error_msg)
        else:
            self._breaker.half_open()
            return self._breaker.call(func, *args, **kwargs)

    def call(self, func: Callable[..., T], *args: Any, **kwargs: Any) -> T:
        """
        Delegate the call to before_call, if the time out is not elapsed it will throw an exception, otherwise we get
        the results from the call performed after the state is switch to half-open
        """

        return self.before_call(func, *args, **kwargs)

class CircuitHalfOpenState(CircuitBreakerState):
    """
    In the "half-open" state, the next call to the circuit breaker is allowed
    to execute the dangerous operation. Should the call succeed, the circuit
    breaker resets and returns to the "closed" state. If this trial call fails,
    however, the circuit breaker returns to the "open" state until another
    timeout elapses.
    """

    def __init__(
        self,
        cb: CircuitBreaker,
        prev_state: CircuitBreakerState | None,
        notify: bool = False,
    ) -> None:
        """
        Moves the given circuit breaker `cb` to the "half-open" state.
        """
        super().__init__(cb, STATE_HALF_OPEN)
        if notify:
            for listener in self._breaker._listeners:
                listener.state_change(self._breaker, prev_state, self)

    def on_failure(self, exc: BaseException) -> NoReturn:
        """
        Opens the circuit breaker.
        """
        throw_new_error = self._breaker.open()

        if throw_new_error:
            error_msg = "Trial call failed, circuit breaker opened"
            raise CircuitBreakerError(error_msg).with_traceback(sys.exc_info()[2])
        else:
            raise exc

    def on_success(self) -> None:
        """
        Closes the circuit breaker.
        """
        self._breaker.close()

class CircuitBreakerError(Exception):
    """
    When calls to a service fails because the circuit is open, this error is
    raised to allow the caller to handle this type of exception differently.
    """

redpajama_set_name: RedPajamaGithub


John Weiser, president of distribution for Sony Pictures Television (SPT), has been re-upped by Steve Mosko, president, SPT.
Weiser oversees Sony's domestic sales operations, including first-run, off-network syndicated programs and films to networks, cable, video-on-demand services and other content distributors.
SPT and Harpo Productions recently announced that Sony will co-produce and distribute a new first-run talk show starring Dr. Mehmet Oz, a surgeon and author who is a frequent guest on The Oprah Winfrey Show. The show debuts in fall 2009.


"My first set of Raynaud's symptoms occurred when I was a teenager. I constantly felt cold and numbness in my hands and feet. The only way that I would feel better was to sit in the bath but even then my feet would turn black, white and purple. I did not know what it was and it started to worry me.
School was a real struggle as my feet were so painful and it hurt to walk around all day. I would never know what to say to people when they asked why my hands looked so 'weird'. I began to wear long sleeved thermal tops that would cover my hands as much as possible. The pain was excruciating and I dreaded the every day."
"The pain was getting worse and I really started to struggle. I went to my GP who didn't see anything wrong with me. I was so upset that they couldn't see what I was seeing. It took a few times of me going to the doctors before they finally referred me to a Rheumatologist in children's outpatients.
I had blood tests to rule out any other causes and in the summer I was told to keep a diary of symptoms. Looking back at what I wrote in the diary, I was really shocked to see that I was struggling so badly. I wrote 'my hands and feet are throbbing', 'my knuckles are purple', 'my hands are so painful', 'my finger is swollen' etc."
"The symptoms were endless and what worried me even more was that this was only in the summer! It felt like years before I was finally diagnosed. The hospital sent a letter to my GP explaining the condition and I was happy to have finally gotten some answers.
After a few more appointments at the hospital, I was given medication! I smiled from ear to ear and could not wait to try it out. I was given GTN patches, (glyceryl trinitrate) which slowly open my blood vessels to allow better circulation. I started off wearing 2.5 mg of the patch and now I have to wear 10mg for it to work effectively. Although there are side effects of migraines and dizziness, they have helped me so much. I continued to go to the hospital because they found a problem with my knee as well as lacking stamina in my hands. I was also told that I was hypermobile and very weak and that physiotherapy was the best option in order for me to be able to cope better."
"I still feared the journey to school as I found myself struggling to wait for the bus early on a January morning. I was using patches to regulate blood flow however the side effect of the headaches was rather annoying. As time went on I managed to keep my illness under control and I learnt quite a few tips along the way! Personally, the worst part of suffering from Raynaud's Syndrome was the pain in my joints and the swelling, which accompanied the sudden rush of blood when going from a cold to hot temperature.
"Since then, I have started attending University, studying Football Business and Media. Throughout my first year, I really defied the odds for someone suffering with a condition like mine. I played football for the university team in all weathers and regularly attended football matches too. Football matches are always a challenge for me as it gets so cold on the terraces and my anxiety creeps in, anticipating an attack. Despite this, it is something that I am passionate about and something that I live for, so I am not prepared to let anything stop me!
After a particularly cold month, which had me stuck indoors all of the time to avoid the frost, I booked a flight to Barcelona for a few days which really lifted my mood! 17 degrees Celsius had never made me so happy! It was a brilliant way to unwind before going back to university. After my break, I decided to take part in a charity event in aid of a homeless charity. This meant sleeping outside in a sleeping bag from 8pm to 7am. I knew this would be my biggest challenge yet but it was worth it and the moral support from friends really helped. I prepared as much as I could, including a blanket, thermals, a flask and extra layers. By the end of it, my fingers were yellow and my body felt numb, but nothing compares to the feeling of making a difference and completing such a momentous event.
Recently, I completed my first shift as a Wembley Connector, which involves up to ten hours outside of Wembley Stadium helping and directing customers. I wore two coats, thermals and a scarf as an attempt to keep as warm as possible! It was tough but it is a very enjoyable job and I am proud of my achievements despite such a debilitating illness, which is incredibly difficult to explain to people. Despite the challenges, I am confident that I can deal with my condition!"
I purchased a duck down coat, which is honestly a life saver! The pockets are fleece lined which are perfect to keep your hands warm.
Hot Chocolate! Any opportunity I get I have a hot chocolate to hold and keep warm whilst watching football.
Hand Warmers. I find disposable hand warmers to be much more effective than the ones you reheat.
When my hands are going numb and very cold I place my hands under my armpits as it really helps to warm them up really quick.
If possible, use a timer so that your heating system turns on before you get up in the morning. I find it so hard to get up when it is freezing in the house!


The big sports headline of the day was the announcement of New England Patriot's tight end Rob Gronkowski's retirement.
Football fans always had a love – hate relationship with him.
New England fans loved him. Fans and defenses of other NFL clubs hated him, but it was a respectful hatred.
The gridiron game has lost a great name.
While Gronkowski is not a surname on the same level as Sidebottom or Dangerfield, gridiron players with "ski" on the end of their names evoke recollections of the most famous "ski" of all, Bronko Nagurski, the Canadian-born fullback for the Chicago Bears who won three NFL championships with Chicago in a career that spanned 1930 – 1937, with a short reprise in 1943.
Gronkowski was a match-up nightmare for opposing NFL clubs. He was too fast to be covered by a linebacker. He was too big for safeties and cornerbacks. Most coaches who had to devise a defensive scheme for playing him did so with a sense of resignation, hoping mainly to limit the damage and mayhem Gronkowski brought to the game.
His teammates will remember him fondly for his optimistic presence and his contributions of time and money, where he acknowledged his privilege by helping the less fortunate. Pats' quarterback Tom Brady weighed in on that aspect, saying, "For as big and physical as he is, he is a gentle, kind man," Brady said.
"Gronk," as he was known, had to battle injuries throughout his career, injuries that cost him large chunks of playing time, but he still managed to establish some marks that should make him a prohibitive chance for induction into the Pro Football Hall of Fame in his first year of eligibility.
The Patriots will miss him. The other 31 NFL clubs? Not so much.


text:
Another Late Night: Fila Brazillia is a DJ mix album, mixed by Fila Brazillia and is the first release in the Another Late Night / Late Night Tales DJ series. The album features songs that, as the band puts it, "represent some of the individuality and invention that has inspired us over the last twenty-odd years." With many of the albums in the series featuring a cover performed by the artist hosting, the band chose to cover "Nature Boy" by Nat King Cole, a song they heard a great amount during childhood. AllMusic praised the album, claiming it as "both an excellent introduction to the band's idiosyncrasies and a tacit triumph of naked eclecticism in its own right."

Track listing
 "The Persuaders! Theme" - John Barry
 "Firefly" - Homelife
 "Hero Theme" - The Infesticons
 "Bucket Bottom" - Prince Alla
 "Get a Move On" - Mr. Scruff
 ""T" Plays It Cool" - Marvin Gaye
 "Regiment" - Brian Eno and David Byrne (from My Life in the Bush of Ghosts)
 "It's Not Too Beautiful" - The Beta Band
 "Rodney Yates" - David Holmes
 "Nature Boy" - Fila Brazillia
 "Nuclear Symphony" - Unforscene
 "Les Nuits" - Nightmares on Wax
 "Blue Sky" - Outside
 "Suspended" - Kelis
 "Prelude & Fugue In C Minor" - The Swingle Singers

References

Fila Brazillia
2001 compilation albums
Fila Brazillia albums


Your biography is one of the most important aspects of your application as this can often be used as deciding factor. The most common challenge with writing a bio is how to choose the right information that will showcase your competency and expertise. You can benefit from sample bio online that is written by expert writers. These bio samples can be used as guide in which will allow you to determine the best format, structure and style depending on your needs. Samples of bios online are easily accessible thanks to the growing demand for writing services.
Sample bios are very useful especially to those struggling with understanding the basic concept of a winning biography. If you have not yet settled on the inclusions and technical aspects of your bio then a bio sample will surely come in handy. A sample bio can provide you in depth preview on the main priorities of an impressive biography; this is highly crucial especially to those who have no experience in writing their own bio. Take advantage of innovative online solutions and make the most out of cost free and accessible bio examples!
The inclusion of a biography will basically depend on the authors priority, goals and needs. If you are constantly struggling with writing a good bio, it is best to avail professional writing services. One of the best advantages with getting help is the availability of sample bios that can be used as references to create your very own biography. Example of biography online can be used as guide that will allow you to choose the best details, events and personal information about your life. Get the best sample bio online completely cost free!
Nolan Mirus is a renowned publisher for independent research documentaries and have worked with numerous directors over the years. With his 15 years in the business, Mirus has developed a genuine interest towards indie movies and short films that are relevant and offers informative edge to the viewers.
Mirus have worked with di Caprio, Angelina Jolie, Nicolas Cage and Morgan Freeman and many other celebrities. Currently, he is creating a project about global warming and is tying up with National Geographic.


Peabody-Burns Junior High School basketball team lost both games this past week to Little River and Goessel.
The Tomahawks competed at home Nov. 20 against Little River and lost, 36-9.
Paige Lewis and Rayna Barnes were PBJH high-scorers with four points each.
Kelsie Nobel contributed a free throw.
Against Goessel Nov. 24, PBJH doubled its scoring output, but still lost, 32-18.
Barnes was the team's leading scorer with eight points, Lewis had six, and Brandee Burnett and MacKenzie Ensminger each had two.


Have you ever wanted to meet Roger Clyne & the Peacemakers? Well now is your chance! Grab a ticket to Tempe Music Fest, and bring an instrument to donate. If you don't have one, contact us and we'll make arrangements for you to purchase a new one for our kids' music programs. Make sure to get there early, the Meet and Greet is only from 5:30 to 6:30 on Friday, no exceptions.


text:
10/09/2013 06:43 pm ET Updated Oct 10, 2013
Rep. Alan Grayson To Congress: We Are Less Popular Than Dog Poop (VIDEO)
Rep. Alan Grayson (D-Fla.) took to the House floor Tuesday to announce to his colleagues just how unpopular they all are.
Delivering an epic speech about Congress' withering reputation in the eyes of Americans and the world at large, Grayson -- attempting to assert privilege under Rule IX -- called for a vote on a resolution that said that Congress' "dignity" had been "offended" by the government shutdown.
"The government shutdown is a mark upon the dignity of the House, and the House should be willing to pass a clean continuing resolution to end it," he said.
To illustrate this point, Grayson cited negative international media reports before launching into an impassioned reading of the arguably jaw-dropping results from a recent Public Policy Polling survey about Congress' popularity among voters.
"A national poll asked the following questions: What do you have a higher opinion of, Congress or witches? Congress, 32 percent; witches, 46 percent," Grayson said, referring to the poll. "What do you have a higher opinion of, Congress or hemorrhoids? Congress, 31 percent; hemorrhoids, 53 percent. What do you have a higher opinion of, Congress or dog poop? Congress 40 percent; dog poop 47 percent."
Speaker pro tempore Steve Womack (R-Ark.) was not amused by Grayson's long description of Congress' fall from grace and interrupted the congressman on several occasions to sternly warn him to confine "his remarks as to whether or not the resolution is privileged under Rule IX."
But that wasn't enough to stop Grayson.
"Rule IX of the rules of the House of Representatives provides members with a mechanism through which to address those times when the dignity of the house has been harmed and called into question," Grayson responded, seemingly unperturbed by Womack's agitation.
He later added:
If dignity means what the dictionary says it means -- the state or quality of being worthy of honor or respect -- then surely the honor and respect of this house has been called into question. When only seven out of 100 Americans approve of what we do, the lowest approval rating ever, then surely our dignity has been diminished and is actively being called into question.
If we are to be called obstructionists, practicers of partisan petulance, if we are to be called an establishment that is rotten to the core, if we are leaving Americans wondering why there is so much poison in the system, then surely our dignity as a body has been diminished. If we're accused of willingly provoking crises that suspend public services and decrease economic growth, then surely our dignity as a body has been diminished.
At this point, a frustrated Womack gaveled for Grayson to suspend his remarks, and despite the congressman's protests, he was forced to stop speaking. As Raw Story points out, Grayson's resolution was ultimately not privileged, and he did not get his vote.
Watch Grayson's powerful speech in the video above.
(h/t Gawker)
2013 Government Shutdown
Politics News Government Shutdown U.S. Congress Congress Popularity Congress Approval Ratings
Speaker of the House Rep. John Boehner, R-Ohio, pumps his fist as he walks past reporters after a meeting with House Republicans on Capitol Hill on Wednesday, Oct. 16, 2013 in Washington. (AP Photo/ Evan Vucci)