A picutre an hour is a new feature that i shall be doing on the blog. I was inspired by Polly and it was so much fun to do. Our day doesnt really seem exciting, but it is what we do on a regular wednesday.
7:00am (well technically, my day started at 3:30am when Mia woke but lets start from 7). Elle starts preschool at 8am so we all got washed, dressed and Elle and i got ready to leave.
8:00am. I came home from the preschool run to Mia just finishing her breakfast. She then had some story time with her daddy before he had to go to work.
9:00am. Mia and i had a few hours to ourselves this morning. We played on the rocking horse, we danced and we did some drawings on her chalkboard in her room.
10:00am. Mia and i went to visit the ducks at the river and walked around the park before heading up to Elle's preschool to pick her up for 11.
11:00am Elle wanted to walk home via the river and park so we had another little stroll before visiting the river and then we popped into the store to pick up ingredients to make pancakes for lunch.
12:00pm We had pancakes for lunch and then we had to go straight back out to walk the 2 mile walk to Elle's gymnastics class. Its a lovely walk along the river.
1:00pm Elle went into her gymastics class whilst i had to entertain Mia for the hour in the parents room. I had literally seconds to take this picture before having to chase her again as she has figured out how to open the door and get onto the staircase! Monkey!
2:00pm/3:00pm On the walk back from gymnastics, we always stop by the store for their weekly treats. Elle always picks out juicy monkey and she always picks Mia out the mixed bag. We got home and Elle requested to watch some old black and white childrens programmes. I put on watch with mother. The woodentops is Elle's favourite, especially this episode. The girls watched the films whilst i checked instagram and did some housework.
4:00pm. Mia normally naps straight after lunch, but as we had gymnastics, she missed her nap. It got to the point where she had taken herself up to her room, rubbing her eyes, so i just put her down for a power nap. Elle and i climbed into my bed and she played some games on my phone and then i helped her with some learning aps. We then met up with my brother and popped to the store to get things for dinner.
5:00pm I had my best friend over in the evening, so i prepped our dinner whilst the girls had cheese pasta. My friend came over. I then put on some music and the girls had a dance in the living room.
6:00pm I put Mia to bed and then sat down for dinner with my friend.
7:00pm Gilles put Elle to bed and me and Laura settled down for a night of re-designing and organising her blog. It was such a lovely evening and we were still working on the blog until 10:30pm! Gilles went to the store for us to supply us with chocolate and sparkling peach water to get us through.
Well this was so much fun. I am excited to do more in the future and look back on these.
The picture that they sat on the sofa is beyond adorable!Two truly fairies.
I actually got a real stab of envy over the pictures of where you live, isn't that terrible?! It's beautiful. Love the idea, I may have to do it soon!
Oh no darling, where i live isnt all that great. i live on such a busy road opposite a superstore!
Your girls are pRECious! :-) Found you via Casey Wiegand!


WATER – the best things in life are free!
With summer here and the temperature soaring, it's more important than ever to drink enough water. We all know that being well-hydrated to ensure that your body functions correctly, but did you know that it can also help your weight loss?
Dehydration can impair exercise performance, so by drinking enough water and being well-hydrated, you can ensure that you can exercise at your peak and thus burn the maximum calories in the process.
Often one confuses thirst with hunger. So, when you feel you're hungry, but no food satisfies that hunger, you may find that a glass of water does the trick. Thus, by drinking enough water you can be sure that hunger pangs are related to actual hunger, rather than just needing more fluids.
For example, a 60kg woman, would need 60 x 30ml = 1800ml or 1.8 litres of water per day. Although one may need more than this to compensate for fluid losses on a particularly hot day or for intense exercise.
Remember that caffeine-free herbal teas also count towards your fluid intake!
Have a wonderful water-filled Summer's Day!


text:
Museums Blog
The Museums
Subversive Sex
Sunday 16th May 2021 Tuesday 13th April 2021 by cf29
(Approx. 3 minute Read)
Trigger Warning Disclaimers:
This blog post concerns sexually explicit content which potentially includes historical non-consensual sexual activity and images. Please proceed with caution. Resources can be found in the Resources tab of this microsite for anyone who is affected by these issues.
Language used in these blogs refers to cis, heteronormative gender identities owing to the historical context of the Beggar's Benison Club. Today, we are aware of and acknowledge a wider spectrum of gender identities.
From 1732 to 1836, Anstruther in the East Neuk of Fife was home to the Beggar's Benison Club. The secret all-male club was devoted to the idea of male sexual liberation. Members created symbolic sexual imagery and may have practised sexual rituals. Members also had interests in subversive politics and illegal smuggling.
The Exhibition Sex as Subversion, Fantasy and Power: The Beggar's Benison Club at the Wardlaw Museum aims to explore this Club and its Collection through the three central themes of Subversion, Fantasy, and Power.
Taken at face value, the objects from the Collection displayed within this Exhibition will likely elicit shocked gasps and exclamations, especially due to their appearance with many featuring phallic imagery. Certainly, as is explored in our 'The Secret History of the Collection' blog, these objects have been left undisturbed in storage since the mid-1800s as they were simply deemed too obscene to show to the public.  However, the Club's fascination and celebration of sex must not be misunderstood and dismissed as merely raunchy. The Club used the idea of sex to be politically subversive, to fantasise about male dominated sexual exploits, and to exhibit power over women. This blog will briefly discuss the subversive nature of the Club's relationship with sex, which is reflected by the objects from the Collection and the activities of the Club.
Indeed, the surviving relics of, and records belonging to, the Club explicitly highlight their members' convivial advocation of male sexual freedom. They emphasise the Club's belief that sex should be enjoyed for pleasure, which at the time was extremely subversive, rebelling against the widespread belief in the 1700s that sex should be purely for procreation.   For instance, the records belonging to the Club, which will be presented as part of our online exhibition, describe a version of the initiation ceremony in explicit detail. From these we learn that new initiates to the Beggar's Benison Club were required to demonstrate their ability to perform sexually. This included exhibiting his phallus to his fellow members-to-be, masturbating in front of existing members, and sometimes masturbating together as a sociable activity.
The novice (prospective member) would be 'prepared' in a closet in which two members would '[cause] him to propel his Penis until full erection.' Coming out of the closet (an interesting choice of words given the Club's disapproval of homosexuality, as shall be explored in later blogs), the initiate was greeted by existing members who wore sashes and medals in full fanfare. He was required to place his phallus upon the Test Platter to demonstrate his ability to perform sexually.
Test Platter from the Beggar's Benison Collection
Test Platter, 1783-1836, Courtesy of the University of St Andrews Libraries and Museums, ID: TEA-HC1072, © The University of St Andrews, CC BY-NC 4.0, https://collections.st-andrews.ac.uk/item/test-platter/762421
This action was accompanied by 'four puffs of the Breath Horn' to simulate ejaculation. The records then note 'The Members and Knights two and two came round in a state of erection and touched the novice Penis to Penis.'
Breath Horn from the Beggar's Benison Collection
Breath Horn, 1732-1836, Courtesy of the University of St Andrews Libraries and Museums, ID: TEA-HC1062, © The University of St Andrews, CC BY-NC 4.0, https://collections.st-andrews.ac.uk/item/breath-horn/762410
A wine glass displaying the Club's motif was then used to drink a toast to the new member, who was bestowed with his own sash and medal. The ceremony was thus concluded by reciting the Club's motto: 'May Prick nor Purse never fail you.'
Wine Glass from the Beggar's Benison Collection
Wine Glass, 1732-1836, Courtesy of the University of St Andrews Libraries and Museums, ID: TEA-HC1064, © The University of St Andrews, CC BY-NC 4.0, https://collections.st-andrews.ac.uk/item/wine-glass/762412
This ritual was inspired by the founding myth of the Club. According to this, in the mid-16th century, King James V travelled around Scotland pretending to be a common subject. He acquainted himself with his subjects in this way. In Anstruther, he met a maid whom he offered a golden coin for carrying him across a stream. In turn, she thanked him with a 'benison', a slang term for sexual favours.
Another activity adopted by the Club in the 1700s was to add pubic hairs of mistresses to a wig. Specifically, the mistresses of King Charles II (1660-1685). The King offered it to his friend and Club member, the Earl of Moray. Later Minutes of the Club confirm in 1775 that new members must kiss the wig and wear it during their initiation ceremony. The collection and use of pubic hair in this way is an example of how these sex clubs attempted to objectify, possess and control the female body. It was an act to wield power over women through somber mockery.
Initiation rituals were adopted by the Club to legitimize their male sexual activity and advocation of male sexual pleasure. They served to prove a potential member's 'manhood' and sexual capability. Both these criteria were essential to be accepted into the Club.
However, discretion had to be taken to ensure such interests did not cause public scandal, as such sexual conduct went against the moral and ethical teachings of the Church and State. Hence, the secrecy that surrounded the Club. As the historian David Stevenson, who has written a history of the Club, puts it, the Club's activities had 'the spice of being naughtily outrageous'.
Indeed, throughout the 1500s and 1600s, there was a rise in religiously inspired sexual repression, where sex for anything other than procreating was strictly prohibited. Until the end of the 1700s, a strong taboo surrounded masturbation. This theme will be explored in a later blog, 'Sex as Science'.
The Age of Enlightenment in the 1700s and 1800s was important for developing new ways of thinking about sexual liberation (for heteronormative men). The Enlightenment was an intellectual and philosophical revolution where scientific inquiry was favoured over religious faith. The idea of sexual freedoms and sex as pleasure fitted perfectly into progressive thinking at this time. As such, the attitudes of the Beggar's Benison Club toward sex align with this wider movement.
Fast forward to the present day, it is interesting to think that whilst the Beggar's Benison Club was sexually subversive during the 1700s and 1800s, the Collection of the Club was still deemed to be too subversive and obscene to display until very recently. Indeed, our Exhibition Sex as Subversion, Fantasy and Power: The Beggar's Benison Club at the Wardlaw Museum will be one of the first bold public displays of the Collection at the University. The exhibition aims to explore the theme of subversion further, and deconstruct and discuss the taboos surrounding the Club. Certainly, this chapter in Fife history and display of sexuality and sexual freedom, can also help us to explore and discuss issues relating to sexuality and sexual freedom ongoing today.
Written by Leonie Leeder, student in MLitt. Museum and Galleries Studies at the University of St Andrews
Peakman, Julie, Lascivious Bodies: A Sexual History of the Eighteen Century, 2005
Stevenson, David, The Beggar's Benison Club: Sex Clubs of Enlightened Scotland and their Rituals, 2001
Categories Beggars Benison, Exhibitions & Events
Scotsmanless
Exploring Merryland: Fantasising About Sex
Categories Select Category Beggars Benison (5) Boswell Collection (9) Cult, Church, City (3) Curator's Corner (2) Director's View (3) Dive In! (4) Exhibitions & Events (9) From The Archive (8) Guest Bloggers (22) Re-Collecting Empire (1) Recording Scotland (9) Student Experience (5) uncategorised (38)
Kim Cotton, UK's first surrogate mother. Wednesday 4th January 2023
A Portrait of Janice Long Monday 26th December 2022
Forging ahead – First Woman to be made a Member of the Worshipful Company of Blacksmiths, Michelle J. Parker. Monday 19th December 2022
Rachel Whiteread, First Female Recipient of the Turner Prize Monday 12th December 2022
First woman to regularly read the news on BBC – Angela Rippon Monday 5th December 2022
First Woman to be part of a Formula 1 pit stop team – Louise Goodman Monday 21st November 2022
A Guide to Exhibit Monday 14th November 2022
Marble Preservation Society Wednesday 9th November 2022
Storytelling at the Wardlaw Museum Friday 14th October 2022
The Bell Pettigrew Museum is open Tuesday 11th October 2022
Diversifying the State Rooms of St Andrews University – but how? Monday 3rd October 2022
Hidden Histories Tuesday 27th September 2022
A fish that makes memories Monday 15th August 2022
Why are we Re-collecting Empire? Monday 1st August 2022
Jeremy Sutton-Hibbert: An insight into the artist's mind behind our new photography collection Thursday 14th July 2022
King Kenny! Monday 20th June 2022
People, place, past: How photographers explore identity Tuesday 10th May 2022
Redefining the Legacy of William Scheves Monday 11th April 2022
Cult, Church, City: The Cult of Andrew Friday 1st April 2022
Medieval Pilgrimage to St Andrews  Wednesday 30th March 2022
Contact the Museums
KY16 9AE
The University of St Andrews is a charity registered in Scotland, No: SC013532
Museums Website
© 2023 Museums Blog • Built with GeneratePress

redpajama_set_name: RedPajamaCommonCrawl


Kinder's Meat and Deli on Normal Ave in Chico, CA is in the Beach California section(s) Full-Service Restaurants, Caterers, Limited-Service Restaurants and Supermarkets And Other Grocery (Except Convenience) Stores. The map of Kinder's Meat and Deli shows the approximate location in Chico, but you should call them at phone number (530) 342-3354 to verify their address is 221 Normal Avenue, Chico, California 95928-5356 and to get hours and driving directions. Some of the brands and departments of Kinder's Meat and Deli Chico are Grilled Sandwiches, Fresh Salads and Catering Perfect for Any Occasion. For more information on Kinder's Meat and Deli Chico their website URL is www.kindersbbq.com.


SEPI is able to continue its mission because of your support and generosity. By contributing to SEPI's student award fund campaign listed below, you'll help ensure that our work continues. Online donations are quick and easy using our secure credit card transactions. We welcome donations of all sizes.
Donate Online Please help SEPI student members! With your help you can support SEPI's student awards fund. Please donate today!
Thank you for your sponsorship. Please make full payment.


text:
The ACTX Top Ten: Summer 2019
Nancy Wozny July 9, 2019
Ragnar Kjartansson, The Visitors, 2012, nine - channel video, 64 minutes, commissioned by the Migros Museum für Gegenwartskunst, Zurich. Photo: Elísabet Davids © Ragnar Kjartansson; courtesy of the artist; Luhring Augustine, New York; and i8 Gallery, Reykjavi.
1) Summer at the MFAH
HOUSTON—In 2013 with James Turrell: The Light Inside, the Museum of Fine Arts, Houston began a unique summer precedent, presenting an immersive contemporary art exhibition. That immersive tradition now enters its seventh summer with William Forsythe's Choreographic Objects (through Sept. 15). Yet this year, one exhibition isn't enough for the MFAH, as they add a second major immersive piece: Icelandic artist Ragnar Kjartansson's The Visitors (July 20 –Sept. 2), along with two photography exhibitions, Icons of Style: A Century of Fashion Photography (through Sept. 22), and Shooting the Moon: Photographs from the Museum's Collection 50 Years after Apollo 11 (July 20–Sept. 2) to top off the summer art fun.
Tamsin Carlson performing in "Night of 100 Solos" Merce Cunningham Centennial Event on April 16, 2019. Photo by Reed Hutchinson/CAP UCLA, Night of 100 Solos at UCLA's Royce Hall.
2) Celebrating the Merce Cunningham Centennial at The Modern
FORT WORTH—Celebrating the Merce Cunningham Centennial – Modern Dance Festival at the Modern runs July 12-27, and includes former Merce Cunningham company member Tamsin Carlson performing her Cunningham solo segments on July 19, along with films, music, dance performances and discussions throughout the festival.
3) Transamerica/n: Gender, Identity, Appearance Today at the McNay
Deb Kass, Double Double Yentl (My Elvis), 1993. Silkscreen and acrylic on canvas. Courtesy of the artist. © 2019 Deborah Kass / Artists Rights Society (ARS), New York.
SAN ANTONIO—The McNay Art Museum describes Transamerica/n: Gender, Identity, Appearance Today (on view through Sept. 15), as the first broad survey of contemporary art that engages with outward appearance as it constructs gender identities. Timed to honor the 50th anniversary of the Stonewall Riots, the exhibition coincides with a number of others around the country considering the multiple legacies of that event.
Family Portrait of Leon Addison Brown as Dubba J, Liz Mikel as Laura Mae, Esau Price as Jon-Jon in the Dallas Theater Center's production of Penny Candy. Photo by Ace Anderson.
4) Penny Candy and As You Like It at Dallas Theater Center
DALLAS—Dallas Theater Center presents Jonathan Norton's Penny Candy through July 14 , and Shakespeare's classic As You Like It, as part of Public Works Dallas, adapted by Shaina Taub and Laurie Woolery, with music and lyrics by Shaina Taub, Aug. 16-18 at Wyly Theatre, Potter Rose Performance Hall.
Jeffrey Gibson. PEOPLE LIKE US, 2018. Custom-printed polyester satin and neoprene, cotton, silk Ikat velvet, wool, repurposed quilt, tapestry, and vestment, with glass, plastic, and stone beads, nickel and brass studs, brass grommets, cultured pearls, nylon ribbon, and artificial sinew on canvas, suspended from tipi poles with rawhide ties, 85 x 74 x 5 in. (215.9 x 188 x 12.7 cm). Courtesy of the artist; Roberts Projects, Los Angeles; Sikkema Jenkins & Co., New York; and Kavi Gupta, Chicago. Photograph by Caitlin Mitchell. Image courtesy of the Ruth and Elmer Wellin Museum of Art at Hamilton College.
5) Jeffrey Gibson at the BLANTON
AUSTIN—There are many songs that thread through Jeffrey Gibson: This is the Day on view at Austin's Blanton Museum of Art, July 14-Sept. 29. The exhibition's title comes from a New Wave song of the same name by British band The The. "This is the day/your life will surely change," they sing. Gibson describes past, present, and future as having different cultural significances, different relationships to imagination. "For many people described as participants in minority culture, we are always talked about as tertiary," he says. "That is very stagnating. To really feel present in your body and your mind, that was my goal."
Cassandro, The Exotico! screens on July 25 as part of QFest at the MFAH. Photo courtesy of MFAH.
6) QFest
HOUSTON—QFest 2019, the 23rd Annual Houston International LGBTQ Film Festival, runs July 24-Aug. 1 at multiple venues including, Rice Media Center, The Museum of Fine Arts, Houston, Aurora Picture Show, Brasil Cafe, Brazos Bookstore, The Holocaust Museum Houston, Mystic Lion and The Station Museum, with a line-up that includes, Pasolini, Before Stonewall, Tongues Untied, Cassandro, The Exotico!, Before Stonewall, Tongues Untied, Angel, Tarnation and much more.
Tiff Massey, Je Ne Sais Coiff Series, ongoing. Rope and wool. Dimensions variable. Photo by Tim Johnson, Museum of Contemporary Art Detroit.
7) Tiff Massey at the Houston Center for Contemporary Craft
HOUSTON—Houston Center for Contemporary Craft presents Tiff Massey: A Different World. The artist's immersive installation uses jewelry and adornment as a starting place. Massey's diverse artistic practice deftly renders her observations on race and class in contemporary American culture. On view through Sept. 1.
John Leguizamo in Latin History for Morons. Photo by Matthew Murphy, 2017.
8) John Leguizamo's Latin History for Morons
DALLAS/SAN ANTONIO—John Leguizamo's Broadway hit Latin History for Morons, a mad recap from the Aztec empire to stories of unknown Latin patriots of the Revolutionary War and beyond, makes two stops in Texas: July 26 at Winspear Opera House in Dallas, presented by AT&T Center for the Performing Arts, and July 27 at the Majestic Theater in San Antonio.
Utagawa Hiroshige (Japanese, 1797-1858) The Fifty-Three Stations of the Tōkaidō (Hara: Mount Fuji in the Morning) Japan: Edo period, 1834. Woodblock print. Gift of Mr. and Mrs. Stanley Marcus, 1984.202.14
9) Fifty-Three Stations of the Tokaido at the DMA
DALLAS—For the first time in more than thirty years, the Dallas Museum of Art will exhibit the entire suite of prints by master printmaker Utagawa Hiroshige from its permanent collection . Fifty-Three Stations of the Tokaido depicts waypoints along the imperial road in Japan of the 1830's. It is notable for its realistic representations of daily life and its "refined depictions of nature." On view through Nov. 10.
(L to R) Steven Epp and Wyatt Fenner in Immortal Longings at ZACH Theatre. Photos by Kirk Tuck.
10) Immortal Longings and Ann at the ZACH Theatre
AUSTIN—The ZACH Theatre presents the world premiere of Terrence McNally's Immortal Longings, an exploration of Sergei Diaghilev's Ballets Russes, through July 14, and Holland Taylor's Ann, a one-woman show about the colorful and captivating Texas Governor Ann Richards, July 31-Sept. 8.
Nancy Wozny
Nancy Wozny is editor in chief at Arts and Culture Texas, a contributing editor at Dance Magazine and a frequent contributor to Pointe Magazine and Dance Teacher.


When the history of Kenya's democratisation process is written, the Anglican All Saints Cathedral – now celebrating its 100 years of existence – in the heart of Nairobi, will be part and parcel of that story.
In 1963, Kenya celebrated independence from the British colonial rule. A "second independence" in the early 1990s was realised, with the return of multiparty politics, an achievement that owed much to intense clerical critique of authoritarian, corrupt, and extravagant one –party rule.
During Kanu's single party regime, there was limited scope for public discourse. The body politic was rent by surveillance, censorship, abductions and detentions without trial, among other forms of systematic torture by the police.
Clerical leadership at All Saints Cathedral provided a strategic platform for national discourse in the unfolding democratisation process. The Cathedral's proximity to Uhuru (Freedom) Park made it a natural place of refuge for public protesters at the park, fleeing police brutality.
The engagement of the clergymen took the form of sermons, publications, the stimulus of critical national debate and the provision of refuge for political activists.
As a member of the National Council of Churches of Kenya, the Anglican Church was represented on the management boards of influential church-related publications – like Target and Beyond magazine.
In 1971, a soft-spoken cleric by the name Henry Okullu resigned from the position of Editor at Target and Lengo newspapers, to become the first Indigenous Provost of the All Saints Cathedral. His sermons were based on Old Testament books of the prophets; he consistently challenged the vices of corruption, land grabbing and ethnic bias in the context of employment and education opportunities, as well as detention without trial. Predictably, the sermons were not well received by pro-establishment personalities.
In May 1990, following the brutal demolition of Muoroto informal settlements, the Reverend Peter Njenga, Provost of All saints Cathedral, strongly protested. His statement helped to focus the attention of the nation to this abuse of the poor by the State.
In March 1992 the Moi government forcibly dispersed a group of Kenyan women who had gathered at Uhuru Park to agitate for the release of their sons, detained as political prisoners. The women regrouped and were offered sanctuary in the All Saints Cathedral.
Police followed the women inside the Cathedral, occupying the grounds for three days as the women hid in the basement. Archbishop Manasseh Kuria protested police presence stating that "idlers" were officially barred from the cathedral grounds; the cathedral, according to the Archbishop, was serving as a "sanctuary for the mothers of political prisoners".
In July 1997, Kenya's security forces stormed the All Saints Cathedral, and physically abused and tear gassed worshippers and activists who were camping there. Pews were bloodied, furniture was destroyed and the floor of the cathedral was littered with tear gas canisters.
Clerical leadership of the All Saints Cathedral were not alone in agitating for change. The Rev. Timothy Njoya presented an opening salvo that set the stage for a tumultuous year of 1990. In his New Year's Day sermon, the Rev. Njoya denounced one–party political systems in Africa, predicting that they were doomed to fail just as they had done in Eastern Europe. His sermon of October 5 1996 called on the repressive Kanu Government to enter into dialogue with its restive citizenry. His sermon, based on the Old Testament book of Habakkuk, was titled, " God's Justice Triumphs by Reason Through Faith".
In February 1997, Njoya was transferred to the Kirimara Presbytery in Nyeri, which he declined on "grounds of conscience". Amidst the tensions of the aborted transfer, he was defrocked.
For a long time, the theological and public critique of the power structures in Kenya had been the concern of only a very small number of clerics with outstanding personalities, strong intellect and intimidating courage. Among these were Okullu, David Gitari, Alexander Muge, Timothy Njoya and Nding'i Mwana a'Nzeki.
Church leaders from the Evangelical Fellowship of Kenya (founder of Redeemed Gospel Church) provided invaluable support to the Moi regime. Archbishop Arthur Kitonga of the Redeemed Gospel Church of Kenya openly supported the establishment. In his sermons, Pastor Dennis White of the Valley Road Pentecostal Church sustained a subtle support of the establishment.
According to Cambridge historian Professor John Lonsdale, "Kenya's evangelical churches, with a conservative theology, were more pre-occupied with a call for the personal brokenness of being born again to a salvation that did not depend on political activism but upon faith".
As the Anglican All Saints Cathedral celebrates its centenary, let's ponder on its rich history, including the remarkable exercise of civic responsibility. Now, as then, Kenyans live in challenging times.
Other endemic challenges include the ethnicisation of Kenyan politics, the struggle for better education and healthcare, as well as the ongoing war in Somalia.
Over the years, many civil society interest groups have been mobilised as guardians of the body politic, sometimes with international support from donor countries. Nonetheless, churches, led by courageous clergymen, can indeed claim to have acted as defenders of the people of God against predatory regimes of the day.
Clergy and laity across Kenya must recognise the continuing mandate of the church as a space for political discourse, social reconstruction and integration.
Next: Main Campus' new cafeteria is here!


You might not want to think about serious illness or accidents but if the worst does happen, you want to be sure your relatives take care of your financial affairs easily.
No one wants to think about accidents or serious illness – that's why making important decisions about later life can be hard. But if the worst does happen, you want to be sure your family can get your money without any problems. After all, they might need this to pay for your care so you don't want to put them through any stress.
This is why you might want to set up a Lasting Power of Attorney for your finances and property. This means someone else can make decisions about your finances if you can't. Let's find out what this means and how you can set this up.
If you were incapacitated due to a car accident or you had a serious medical condition like dementia, you might not be able to make decisions for yourself anymore. That's why you might think about nominating someone you trust to make your decisions if this ever happened.
Don't worry that a Power of Attorney would suddenly start making decisions for you – this would only happen if you couldn't make certain decisions yourself. For example, if you fell into a coma, your Power of Attorney would take responsibility for your finances. But if you came out of the coma, you'd start making your own decisions again.
Without a Power of Attorney, your family members could have problems taking control of your money if you lost mental capacity. They'd have to apply to become a deputy through the Office of the Public Guardian. This is expensive and – more importantly – it can take a long time.
So if you couldn't make your own financial decisions and your spouse had to go through the Office of the Public Guardian to get the money to pay your rent or mortgage and other important bills, it could be weeks before they get this.
The cheapest way to set up a Power of Attorney is to do it yourself via the GOV.UK website. You'll pay just the £110 fee to the Office of the Public Guardian (this is £70 if you're in Scotland). You can fill in the forms online and then print them off to sign. If you need help with the forms you should be able to get help from your local Citizens Advice office.
But if you're not confident with the legal terms or the process, you might want to get a solicitor to help. Although this is more expensive, you'll have the peace of mind that everything is set up properly.
Don't feel pressured into choosing a certain person as your Power of Attorney. It needs to be someone who you'd feel confident if they had control of your finances and who you think would act in your best interests. Decide carefully who you can trust and have a chat with them to see if they're willing to accept the responsibility if they need to.


AV rated by Martindale Hubbell (1988) Alumnus, Focus Louisville 1987, Leadership Louisville 1988, and Bingham Fellows 2000.
Charlie Ricketts is a Trinity High School graduate whose undergraduate degree was won at Bellarmine University and whose undergraduate law work was accomplished (J.D.) at the U of L Brandeis School of Law. Post Graduate studies were performed at George Washington University while Charlie was assigned to Washington, D.D. as a Special Agent for the FBI.
While a FBI Agent, Ricketts was assigned to Minneapolis, Minnesota, Sioux Falls, South Dakota and the Nation's Seat of Government, Washington, D.C. His work in the Bureau included counter-intelligence, anti-terrorism and criminal prosecution including "white collar" investigation. Ricketts' transition from these varied assignments was facilitated by skills he acquired as a radio and TV. News reporter at Louisville stations WAVE AM and TV before becoming an agent.
Upon his return to Louisville and while reestablishing himself as a lawyer and trial advocate, Charlie was appointed 1st Assistant commonwealth Attorney, prosecuting the City's high profile cases. At that same time in his career and for in excess of 20 years, Ricketts served on the Adjunct faculty of the University Of Louisville School Of Justice Administration and its non-accredited component Southern Police Institute. Also during those years, Charlie was appointed attorney for the City of Jeffersontown, assisting during that municipality's industrial growth phase. A significant part of then a fast developing practice consisted of zoning, municipal planning and ordinance drafting.
All of these experiences have formed the professional advocate and advisor Ricketts has become and from which he daily draws as he practices in all of the Courts of Kentucky, from "District" to "Supreme" levels. At the Federal Courts he practices successfully at both the trial and appellate levels. Coal Mine law cases, along with Mine Safety and Health Administration matters, at both the Federal Court and Administrative Law level, are frequently handled referrals typically for management and ownership clients.
As a litigator and as a general practitioner Ricketts well understands that to practice such a wide spectrum of the law, constant continuing legal and other education must be pursued, from even before Kentucky's Supreme Court adopted a mandatory CLE requirement Charlie annually accumulated CLE credits well in excess of any required level of such continued education and has, from the adoption of the CLE Rule, each year, won the KBA's CLE Award. He lectures at these programs on a frequent basis as well.
To be an effective representative for his clients, an attorney must know and be respected by his colleagues and the Judges before whom he appears. Ricketts knows this and has been an active Bar leader for the entirety of his career.


I know I know, it's been ages. Again. But this year I'm going to really try to update this blog more. I've given it a little make over, and I'm hoping that I'll find more to talk about. But first things first, it's time for a little tiny catch up. I know this was my last post and it can be slightly boring, but I'm hoping to have some more interesting posts to put up soon.
Obviously we've started a new year since I last posted, and I've actually made some new years resolutions. Which doesn't often happen, but I'm determined to stick to these ones.
1) Firstly I'm learning French. I wish I learnt more French at school, but in all honesty French was taught so badly at my high school and who needs to learn how to order the most pointless things ever but the important things, like directions?! Anyway, I'm using a website called babbel.com and honestly it's so good! The classes on there are really easy to understand and clear, which I find so helpful. Also because you can chose your level you don't feel out of your depth at all and can go over the same words and phrases time and time again.
2) Secondly get healthy. This must be a resolution I made every single year, and every single year I fail. But this year I'm determined! I've brought some workout clothes and have a group of friends who I workout with, and that it just the perfect combination. Working out with friends is so much more fun, because it just turns into a giggle whilst staying healthy. We like to follow along to workout videos on YouTube; there are some seriously good ones that really work you hard! At the moment I'm sticking to home workouts, but as I get more confident and healthier I'll start venturing out and investigating gyms and exercising in the park (when it's warmer).
I've decided to just focus on those two resolutions this year to see if I can actually keep them up, and so far so good. I hope to keep my self better maintained, just by doing small things like taking time to myself to have a nice face mask and just generally keep my body and appearance in better condition.
I'm determined to keep this blog going better as well, so I'm going to start blogging about more random things, as well things that have proved popular in previous posts like book reviews and personal hints and tips. Also let's not lie here, I'll probably also use this as a personal diary and have some serious rants when I'm having bad days.


text:
Q: Excel If or Vlookup to see if value is equal to either a 2 or 3 I was creating a simple markup tool to help me find which values was scored a 2 or 3.
IF any of these entries: (H2,J2,N2,P2). #these values are derived from another excel sheet)
has a score of either 2 or 3,
Then True statement = 1 and False Statement = 0
I couldn't figure out how to get this to work:
=IF((H2,J2,N2,P2)),(2,3),1,0) ???
=IF((H2,J2,N2,P2)),2,1,0),IF(AND((H2,J2,N2,P2)),3,1,0)
or would you use
=VLOOKUP (value, table, col_index, [range_lookup])
=VLOOKUP((2,3),(H2,J2,N2,P2),????, True)?

A: Use  OR:
=--OR(OR(H2={2,3}),OR(J2={2,3}),OR(N2={2,3}),OR(P2={2,3}))

And, yes it can be done with VLOOKUP:
=--OR(ISNUMBER(VLOOKUP(CHOOSE({1,2,3,4},H2,J2,N2,P2),{2;3},1,FALSE)))

Depending on one's version, these formula may need to be confirmed with Ctrl-Shift-Enter instead of Enter when exiting edit mode.

redpajama_set_name: RedPajamaStackExchange


text:
High-Impact Storyteller / Content + Strategy Lead / Writer / Editor / Speaker
Advertising Playbook to Creating High-Reach Brand Experiences
I caught up with Casper's Experiential Marketing Director Monica Brouwer to discuss how Casper is building meaningful brand experiences by offering rescue moments one "Zzz" at a time
You've hit your mid-afternoon, coffee-comedown slump and you think, "What would I give to get some shut-eye before my 2.30 meeting" when suddenly a caped superhero swoops in to the rescue, whisking you away to a nap pod where you can catch up on forty winks 'til show time. Well, this isn't so far-fetched from the rescue moments that mattress company Casper offers people with its state-of-the-art brand activations. In fact, considering just how many podcast hosts, subway cars and Instagram ads are singing the mattress company's praises of late, Casper really is like a real-life superhero—saving you from sleepness nights, not supervillians.
What Casper has accomplished since its founding four short years ago nothing is short of heroic. Over the past two years, Casper has made dreams come true with its 15-city mobile Nap Tour that made its way across the U.S., armed with 'Napmobiles' that offered consumers a chance to nod off while testing out its products. At SXSW 2017, Casper partnered up with the Standard Hotel and Tesla to provide last minute hotel rooms for $99 and 45-minute refresh rooms decked out with Casper mattresses, pillows, slippers, milk and cookies, and even a 'mom' to read them a bedtime story.
Let's be real here—Casper has taken the sleepiest of industries (quite literally) and turned it into something that people associate with quintessential hipness. After all, we all sleep and we all spend a third of our life doing so—so why not celebrate a life well slept? For PSFK's Advertising Playbook, I caught up with Casper's Experiential Marketing Director Monica Brouwer to discuss how Casper is building meaningful brand experiences by offering rescue moments one "Zzz" at a time.
PSFK: What are you seeing as the biggest shifts in experiential marketing today?
Monica Brouwer: The line between experiential and retail is starting to blur. There are more and more direct-to-consumer brands utilizing experiential marketing as a test ground for retail. On the inverse, big box retailers are starting to adopt a shopping click economy where CRM is going to be challenged to become more and more sophisticated to capture the consumer between digital and offline in a much more thoughtful and meaningful way. We're going to see a lot of rethinking in 2018—both when it comes to some of the traditional field marketing tactics that are shifting into the experiential world view, and how we approach traditional sponsorship and partnerships. Although the days of the logo slapper are winding down, there's still a need for brands to find a connection with their consumers passion points.
In 2018, we're going to start to see a bigger shift in how brands and event properties meaningful integrate different passion points across music, film, food, and so on. One of the best examples of that that I've seen is American Airlines at t the Toronto International Film Center (TIFF) They really thought through their positioning at TIFF, by not just creating an environment to capture celebrity and hope for coverage in the weeklies, but adapting their flight patterns to meet the needs of their consumer. They were really thoughtful in how they could create a better experience end to end, versus in the moment.
Can you speak to how Casper is coordinating its brand experiences that make it easier for its consumers to engage with the brand by seamlessly integrating into their everyday lifestyle?
When we're designing Casper experiences, we're really looking at the environment and the points of interaction we're interested in capturing. We're taking a second to understand what the real experience is. We're not bringing a kazoo to a parade. We're coming in there, asking our consumers, "What can we do that provides someone with a meaningful experience here?"
What we've identified and what we're trying to create are rescue moments where we come into a space, understand the pain points and provide temporary relief, whether it's a nap or to recharge your phone or finding a hotel room last minute at SXSW. We simply ask ourselves, "How can we be a hero? How can we help out?" When we're coming in and identifying brand partners, we try to carve out our own space by being adjacent to the activity, not directly involved. We provide a hideout moment—a place provided by a brand that gives you an escape from the activity or your desk or the noise.
Also, as the wellness category continues to grow, consumers are willing to invest more and more in themselves. While Casper doesn't directly identify in the wellness category, we're really carving a space for sleep to exist as its own category. "The Nike of sleep," as our founder, Philip Krim, always says. When we're designing experiences for Casper, we're trying to provide moments in the spaces where they might not normally occur or where a consumer might not take the time to take a pause and take care of themselves. It's very much a wellness moment, but blended into a rescue moment. We're trying to encourage consumers to take better care of themselves, and we do that through the design of our products and our experiences. We're always trying to give consumers an opportunity to celebrate themselves and a life well slept.
Casper's SSXSW activation with The Standard and Tesla was a huge success. How is Casper using these symbiotic partnerships to really extend its sphere of influence? Do you have any tips for other brands looking to sync up with partner brands?
When we approached The Standard, they really shared an interest in human-centered design, forward thinking in the hospitality space, and providing comfort and easy access in a way that we couldn't provide at South by Southwest. Zooming out, all of the partnerships that we've done are built out of a mutual interest in connecting with one another's audiences. The Standard, for example, gave us access to a really fantastic, culturally dialed-in audience. We gave them access to our early adopter tech audience, and that helped them launch their One Night app, which was really successful for them at the festival. It helped us introduce a more risk averse consumer; one that's less aware of startups.
The key to audience growth is to find a brand that may not directly intersect with your current audience group. That gives you the opportunity to open the door to a new segment. The second piece is giving your customers value. How can you continue to drive loyalty with your existing base? Partnerships are an excellent way to do that because it gives both parties opportunities to test new co-branded products. This summer, we partnered with Target to create a line of products for college students. We created a lounger and a bed layer that gave an entirely new audience an opportunity to connect with Casper, but also gave our core consumers the opportunity to try a new product we might not have made had we not partnered with Target, and seen this great distribution and design opportunity.
We couldn't speak about the next generation of brand experiences without speaking about influencers. How has the growing role of influencers, particularly micro-influencers, influenced brand promotion and content marketing?
Very early on, Casper partnered with Kylie (Jenner).. That was a huge moment for Casper that made headlines and was really phenomenal for our growth. Over time, though, there's diminishing returns across the industry on the super influencer, on the celebrity endorsement online. Micro-influencers are becoming more important. Micro-influencers see four to five percent better improved engagement over a celebrity influencer with millions of followers, versus in the 100,000, 10,000 range. We are starting to work more and more with micro-influencers, but it's a strategy that we're still figuring out. There's a big question of authenticity and sincerity that is becoming more obvious to consumers, as you see influencer marketing becoming more important.
That said, content marketing and influencer marketing will proliferate in a much smarter way. In 2018, we'll start to see a better reflection of ad-adopted UGC that feels sincere and honest but still coming from the voice of the brand and not coming from the consumer as much.
I also think the shift in the Instagram algorithm made it pretty difficult for the super-brand. In 2018 especially, we're going to go back to seeding even below the micro-influencer and trying to leverage smarter micro-influencers beyond that.
Glossier has done this in an incredible way by incentivizing their content through brand passion. The shortcut of purchasing will diminish as brands get smart and look at some of the startups and start to adopt that approach more.
At Casper Labs, you have 15,000 customers who are part of your product development process. They come to your events and they test prototypes. Can you expand on how Casper is aiming to make your consumers feel like they're being given an exclusive experience?
Casper Labs is a group that gets exclusive access to products before they're released and even while they're in the development cycle. They're engaged any time we begin exploring a new product vertical. We also have a two-way line of communication with them where the feedback loop is open. They're shouting at us for products in different verticals all the time.
When we were developing the Casper pillow, we took a completely human-centered design approach and did testing for almost over a year exclusively with Casper Labs. I think exclusivity is really important because it gives the consumer the feeling of ownership of a brand. When a consumer feels like they helped shape the brand and the brand listens to them, it's invaluable.
When a consumer feels like they're part of your story, you become a part of theirs. In leveraging them to help us design products and shape Casper as a brand, we give them exclusive access to experiences as well. We invited them to join us to view the eclipse at our brand activation in Casper, Wyoming. We even host Casper Labs events where we bring in our chief design officer, and other really incredible people from design, science and technology to have fun, intelligent conversations. That said, our exclusivity is pretty inclusive. Anyone can write in and join Casper Labs. If they show us that they're taking the incentive to do that, they're in.
How else is Casper creating a strong sense of relevance and brand loyalty through micro, one-on-one engagements with their consumers?
One of the ways that Casper is creating loyalty with consumers is through experience design. As I mentioned before, we design products that allow consumers to dream their way to a better life, but we're also very keen on designing experiences and spaces that enable us to do that as well, not just for Casper Labs but for any Casper customer. We're constantly looking at opportunities where we can open the door to a consumer to help them experience something they may not have been able to have experienced before or may not have the means or the knowledge to approach it. For example, for our eclipse viewing event in Casper, Wyoming, not only did we invite Casper friends and family, but also the public. I was excited to see how many of our existing customers were excited to engage with Casper and purchase tickets to attend this event.
Any time we host experience in a specific market—like a film screening in Miami at the Standard or the eclipse viewing in Casper, Wyoming—the first thing we do is we look at our customer database and set aside tickets for our customers based there. They're the first people we invite. We always allocate a percentage of anything we're doing to engage our existing customers.
With this new generation of technology—VR, AR and AI—how is Casper enabling its participants to be granted access to groups of like-minded individuals?
This is going to be the most unpopular answer. [laughs] What we do best is design experiences that speak to a specific consumer interest. Camping, music, relaxation, film, and so on. The biggest trend we're seeing is that people want to disconnect, not connect. We're definitely going to look at AR and AI because utilizing intelligence devices to help tell our narrative while also giving the consumer privacy is super important across experiential and retail. However, I still think the biggest trend is going to be disconnecting.
Camp Casper is a great example of this. The people that came were interested in witnessing a natural phenomenon. They were OK with camping. They knew what they were signing up for. They were in a remote part of the country that didn't have mobile service. Removing that barrier and having everyone turn off their screens was so engaging, to the extent that even when our bus was delayed at the campsite for a few hours upon arrival, nobody cared because they had made friends over the last 24 hours. They had a cold beer, they were having meaningful conversations and getting to know one another without the distraction of a screen. Finding those moments that allow consumers to disconnect and to have real conversations is key.
How is Casper is designing specific areas, locales or backdrops for fans to use their apps and services to create shared experiences and to encourage the fans to share their passions with one another?
We opened a pop-up in San Francisco called "The Wake Up", shere consumers could come in and create content.There is an orange juice bar. There's coffee. There's bird houses that have a shifting light schematic that help you feel like you're experiencing a sunrise and sunset—literally capturing the feeling of a "rise and shine". We wanted to meet the demands of allowing people to trial the mattress, but also meet the demands of the community. In doing so, we partnered with different editorial partners for a storytelling series. We also opened it up to the community to book the space for their own events. One of the things that we're super excited about is enabling our consumers to share our community spaces with us.
What are some of the biggest challenges and opportunities that you are seeing in the experiential marketing space? (Especially when it comes to creating these new immersive experiences and new immersive content that is less about storytelling and more about obviously story living)
The Museum of Ice Cream, The Color Factory or 29 Rooms show how we're starting to build amusement parks for the selfie set. Brands are going to continue to do more of that. However, what consumers are going to hold them accountable for is making them truly purposeful and meaningful. 29 Rooms is a great example of that because every room ties back to a certain moment, supporting different artists and non-profit groups, fundraising for hurricane relief, and so on.
It's also up to the brand to decide once that content is created how they leverage it in a meaningful way. That is probably the biggest challenge and opportunity for experiential marketing right now—how to take whopper UGC moments and turn them into conversion opportunities? I haven't seen a moment where that's occurred really well yet. Is it that it becomes a new revenue stream? Do brands rethink how they measure these social media amusement park moments? Do they start to monetize it? Is there a new revenue stream that's created in place of it? Possibly.
I also think there's a huge opportunity especially as retail vacancy starts occurring for brands to design and engage consumers in fun meaningful ways versus just a pop-up store. With the rise in retail vacancy, there's becoming more and more opportunity for them to do this in a cost-effective way.
Can you shed light on the next generation of pop-up experiences and brand activations? How do you think experiential marketing will evolve over the next five, 10 and 20 years?
Retailers are coming to experiential marketers to help them integrate experiences into their environments. It's becoming more and more competitive for them. Now every retailer needs an experience and a purpose. Experiential marketing has always been the sister of big PR stunts as well, but I think we'll see less of that in the future because of that consumer amnesia that occurs now where moments are more fleeting, so consumers care less about big splashes. The good news, though, is that consumers are forgiving. The bad news is they're forgetful. I think there will be a shift there.
The biggest challenge of an experiential marketer is measurement. When you're explaining to your CMO why experience matters, it's challenging. The metrics have evolved over time. At first it was impressions. I believe impressions are a vanity metric. There's 92 different ways to measure them.Impressions can be measured 92 ways sideways and they're never fully valid. Social engagement was the biggest way to measure—audience growth over time and strategic segmented audience growth. That's where I think an experiential marketer is really going to be able to show a CMO value in what they're doing, and really digging into sentiment.
For more insights on how to nail your experiential marketing efforts in 2018 and beyond, check our PSFK's Advertising Playbook.
Social Impact 3
Covid-19 and Fragile Contexts: Reviving Multilateralism's Promise to 'Leave No One Behind'
Advocacy, Healthcare, Human Rights, Policy, Social Impact, Sustainability
Future of Patient-Centric Clinical Trials
Future of Workforce Automation & AI
Bridging the Digital Divide to Engage Students in Higher Education
Advocacy, Education, Innovation, Social Impact, Sustainability, Technology, Work
Healthcare Innovation Conference: Panel Moderation
Healthcare, Innovation, Technology
NPR: The Cold War 'Mole' Who Smuggled 1,000 East Germans To The West
Culture, Social Impact
'People Can Change': Ex-Prisoner Smashes Stereotypes, One Workout at a Time
ATLAS OBSCURA: GERMANY'S REAL-LIFE GRAND BUDAPEST HOTEL
HUFFPOST: The Walls That Still Stand 25 Years After the Fall of the Berlin Wall
Richard Branson on Why He's Launching Virgin Sport
Why Retailers Should Monetize Product Interaction, Not Sales
Retail, Technology
The Key To Sustainable Fashion? Designers And AI Joining Forces
Design, Retail, Sustainability, Work
ATLAS OBSCURA: Inside the Forgotten Ghost Stations of a Once-Divided Berlin
Sole Searching in the Age of the Smartphone
Design, Retail, Technology
In the Future, Shopping Malls Will be Experience Buffets
How the Fashion Industry Has Gone Completely Full Circle in 200 Years
Design, Education, Sustainability, Technology
How To Close The Pleasure Gap With Product Design Innovation
How Westfield is Using Next-Gen Tech to Top Amazon in the Physical World
ATLAS OBSCURA: A FIERY AUF WIEDERSEHEN TO SPREEPARK, BERLIN'S BELOVED ABANDONED AMUSEMENT PARK
The Future Of Fashion? Jackets Will Be Just As Valuable As iPhones
Why the Fashion Industry Needs a Redesign
Art That Breaks the Mold: "Kapoor in Berlin"
ATLAS OBSCURA: Journalist
Ba Da Bing Records: PR Assistant
Berlin Holi Festival 2013
Berlin Travel Guide: Where to Escape in the City of Escapism
Berlin Vs. NYC: Battle of the Cities
Berlin: The Real "City That Never Sleeps"
Berndnaut Smilde: Meet The Artist With His Head in the Clouds
COLLECTIVELY: BYO Packaging Supermarket in Berlin Creates Absolutely No Waste
Ed Fairburn: Bringing Maps to Life
Efterklang: Encounters on the top of the world
Featured on Grizzly Bear's Official Blog
GERMANY'S GRAND BUDAPEST HOTEL (Published in Italian)
Grizzly Bear on MINI Space
Guest of a Guest: Reporter
Huffington Post Blog Writer
HUFFPOST: 25 Years After the Fall of the Berlin Wall, Who Are the Real Berliners?
HUFFPOST: Berlin's First Cannabis Cafe: Could Berlin Become the Next Amsterdam?
HUFFPOST: Let There Be Light: Berlin's Festival of Lights Sets Art Capital Aglow
iCrates Magazine: Journalist
INTERVIEW MAGAZINE: ISA GENZKEN, THE ARTIST WHO DOESN'T DO INTERVIEWS
INTERVIEW MAGAZINE: Journalist
INTERVIEW MAGAZINE: Katharina Grosse Sticks To Her Guns
INTERVIEW MAGAZINE: Wang Jianwei In Process
IP Publishing House: Editor
Itinerize This! Bringing the Silver Screen to the Sea
Itinerize This! Unmatchable Hotels to Rest Your Head At
Kat Frankie: Not just an angry girl with a guitar
KKLD*: Editorial & Social Media Strategy
Make A Splash Design Competition
Mercedes-Benz A ROCK Series: Hamburg
Mercedes-Benz A ROCK Series: Rome
MINI and Wool and the Gang — A Close-Knit Friendship
MINI Kitesurf Tour Europe 2012: Sick Tricks of the Air and Sea
MINI Space: Writer
Monster Mash-Up: 10 Halloween Songs That Aren't as Lame as The Monster Mash
NOT NORMALISTS: The Subtle Street Art of SpY
Protein: Insight Journalist
PSFK: 10 Hottest Startups to Watch From Berlin's Silicon Allee
PSFK: Content Writer
PSFK: How Berlin is Revealing the Darker Side of the Digital World
Red Bull BC One: Digital Content Management / Blogger Outreach
Reggae influence booms from Berlin Soundsystems with Dirty Ragga Squad and Symbiz Sound
SLATE: A Visit to Germany's Real-Life Grand Budapest Hotel
SLATE: Contributor
Sofrito's International Soundclash: An Interview with Hugo Mendez
The Coolest Things You Never Knew Water Could Do
The Creators Project: The Best of Berlin Art Week
Top 5 Finds for Valentine's Day
Top 5 Finds: What's Hot Now
Twitter Hotel for Social Media Junkies
UNLIKE CITY GUIDES: Press Release
VICE Media: Digital Marketing/Social Media Intern
VICE Motherboard: We Were Promised Hoverboards
VICE: At Berlin's Female Fight Club, Women Show Men Who's Boss
VICE: Freelance Journalist
VICE: Interview With An Erotic Massage Parlor Receptionist
VICE: Kira Radinsky is an Internet Oracle
VICE: My Nazi Grandfather Was One of the Worst Mass Murderers in Human History
What the Fork? Using Beets to Drop Beats
'Tis the Season to Be Trendy
"Don't read so many Pitchfork reviews!" An interview with Chris Taylor of Grizzly Bear
"Stay humble and know your history": An Interview with Amir Abdullah
© Emily Wasik 2023. All rights reserved.


The recall involves Nutrisca Chicken and Chickpea Dry Dog Food and Natural Life Chicken and Potato Dry Dog Food.
Two brands of dry dog food have been recalled due to concerning elevated levels of Vitamin D, according to the U.S. Food and Drug Administration.
The recalls were issued on November 2 and involve Nutrisca Chicken and Chickpea Dry Dog Food and Natural Life Chicken and Potato Dry Dog Food.
Nutrisca and Natural Life both voluntarily recalled their products. The companies say they received three complaints from pet owners about Vitamin D toxicity after their dogs ate the food. They investigated and found that a formulation error led to the elevated Vitamin D levels.
The FDA says dogs that ingest high levels of Vitamin D may show symptoms such as vomiting, loss of appetite, increased thirst, increased urination, excessive drooling, and weight loss. Vitamin D toxicity can lead to serious health issues in dogs including renal dysfunction.
Natural Life bags that are affected by the recall have a best by date code of May 29, 2020 through August 10, 2020.
Nutrisca bags that are affected have a best by date code of February 25, 2020 through September 13, 2020.
Consumers should return the products for a full refund, or contact Nutrisca or Natural Life at 888-279-9420 for further questions.


I know it's not officially summer time quite yet. I also have eight days of teaching still left to do, unfortunately. But in all other ways, it's summer time for me. I'm obsessed with finding every outdoor patio to eat on and spending every moment outdoors. It's time to roll the windows down, sunny weekend must be spent down the Shore, and I want no fuss when it comes to getting dressed. My go-to summer look usually involves shorts but this summer I'm all about skirts. Skirts are fun and flirty and a great way to show off a tan (once I get one!). Skirts are so easy and I've found the perfect source.
This paper bag waist skirt style from J.Crew Factory is my new favorite for the summer. Styling it is effortless: just combine with a slim tank or a tucked-in tee and you're ready to go. When I saw it with this geometric print, I scooped it up right away. It's subtle enough to style with everything but the pattern keeps it interesting. If pattern's not really your thing, J.Crew Factory offers it up in a variety of J.Crew appropriate colors. Yes, I also purchased it in shocking bright pink. Now I'm over here trying to show a little restraint and not buy a skirt in every color of the rainbow.
Speaking of summer easy, this year's summer is starting off the easiest of all. Of course it could be because I'm not planning a wedding this time around. Or that I'm not worrying about finding a job for September. Whatever the reason, this summer is shaping up to be so very easy and a whole lot of fun.
I'll be snapping my easy summer fun over on my latest obsession, snapchat (kendallblossoms) if you're interested in seeing what a NJ/Philly summer looks like! I'm also looking forward to sharing my daily summer outfits. If you're snapping your summer, share your username with me. I can't wait to follow along!


My preschooler absolutely loves it when I read to him each night. I often choose books that teach important concepts or that can help him learn more about something he's been interested in. Naturally, I would rely on a few good books to help him transition to preschool.
I've scoured Pinterest for some great ideas and discovered that I already own and enjoy reading some great back-to-school books with my preschooler.
This fun list shows 10 great books to read with your preschooler. We personally own If You Take a Mouse to School and Froggy Goes to School (both affiliate links). They're favorites that we read again and again.
Here are 10 more adorable reads for your little one.
This is a list of books for preschool teachers to read the first week of class, but there are three cute books that would be ideal to read ahead of time. I'm sure you'll spot them.
Preschool can be such a fun time for your child, but it can also be a little nerve-wracking for them. Explore a little bit about preschool through books before your little one ever steps into the classroom. Obviously, you won't need to read every book on this list, but there are some great ideas to get you started. Just have fun as you point to the pictures and talk about what's going on. Your child will be getting ready for preschool without even knowing it.
Do you know of any great preschool get-ready books we haven't talked about? What else do you do to help your child prepare for school?
I think reading books about specific events to prepare your child for said event is a great idea. There are some wonderful books on this list.
Love this post! My kids are constantly looking for new books to read. They love the pout pout fish series a lot!
Yay! I'm so glad you read to them!!!
I'm so glad you found the ideas helpful. Any time reading a book can help you teach a concept to your child, it's gtotally worth it.
This is super useful, can't wait until my little one is a bit older and then I'll definitely be putting this to use!
They grow up so fast! My four-year-old loves preschool and can't wait to go again this fall.
My 1 year old pelts me with whatever book she wants me to read. This is a great list for when she gets a wee bit older and can better understand the underlying concepts.
She's a born little reader! She'll have a great time in preschool.
Great post! I'm going to get some of these for my nephews. They will love them!
It's so helpful when storytime turns into teaching time as well. Good luck with your nephews!


Tonight the Toronto Blue Jays face off against the Texas Rangers in a tie breaking game for the series. Go Jays!
Yesterday the Junior girls basketball team hosted Kings Christian College. The Devils got off to a slow start and could not handle the pressure of the Kings defense, causing the Devils to turn the ball over many times. The second half saw a much better performance by the Devils and better offensive contributions, however the Devils lost by a score of 37 to 25. Anja Devries led the team in 2's with 6 points.
The junior girls field hockey team faced off against Craig Kielburger on Thursday and played a fast paced game tying 1-1. Yesterday afternoon we played against Frank Hayden and both teams played hard and ended with yet another tied score. Shout out to all the girls on the team for being undefeated this whole season and good luck in the playoffs.
Yesterday the senior boys volleyball team played a tough game against STA. The boys played a solid defensive game with some great aggressive play from Bennet Swan and Malcolm Prentice. Unfortunately they fell just short in both sets.
Anyone interested in joining the swim team this year must attend a meeting today after school in room 136.
Attention all curlers; all students interested in curling this year will meet on Thursday after school in room 237. We will hand out health and permission forms and start to organize teams. If you have any questions see one of the coaches, Ms Burton, Ms Cameron or Mr Wilford.


text:
/**
 * @constructor
 * @param {string} className
 * @param {!Element=} parentElement
 */
WebInspector.Toolbar = function(className, parentElement)
{
    /** @type {!Array.<!WebInspector.ToolbarItem>} */
    this._items = [];
    this.element = parentElement ? parentElement.createChild("div") : createElement("div");
    this.element.className = className;
    this.element.classList.add("toolbar");
    this._shadowRoot = WebInspector.createShadowRootWithCoreStyles(this.element, "ui/toolbar.css");
    this._contentElement = this._shadowRoot.createChild("div", "toolbar-shadow");
    this._contentElement.createChild("content");
}

WebInspector.Toolbar.prototype = {
    makeVertical: function()
    {
        this._contentElement.classList.add("vertical");
    },

    makeBlueOnHover: function()
    {
        this._contentElement.classList.add("blue-on-hover");
    },

    /**
     * @param {boolean} enabled
     */
    setEnabled: function(enabled)
    {
        for (var item of this._items)
            item.setEnabled(enabled);
    },

    /**
     * @param {!WebInspector.ToolbarItem} item
     */
    appendToolbarItem: function(item)
    {
        this._items.push(item);
        item._toolbar = this;
        this._contentElement.insertBefore(item.element, this._contentElement.lastChild);
        this._hideSeparatorDupes();
    },

    appendSeparator: function()
    {
        this.appendToolbarItem(new WebInspector.ToolbarSeparator());
    },

    removeToolbarItems: function()
    {
        for (var item of this._items)
            delete item._toolbar;
        this._items = [];
        this._contentElement.removeChildren();
        this._contentElement.createChild("content");
    },

    /**
     * @param {string} color
     */
    setColor: function(color)
    {
        var style = createElement("style");
        style.textContent = "button.toolbar-item .glyph { background-color: " + color + " !important }";
        this._shadowRoot.appendChild(style);
    },

    /**
     * @param {string} color
     */
    setToggledColor: function(color)
    {
        var style = createElement("style");
        style.textContent = "button.toolbar-item.toggled-on .glyph { background-color: " + color + " !important }";
        this._shadowRoot.appendChild(style);
    },

    _hideSeparatorDupes: function()
    {
        if (!this._items.length)
            return;
        // Don't hide first and last separators if they were added explicitly.
        var previousIsSeparator = false;
        var lastSeparator;
        var nonSeparatorVisible = false;
        for (var i = 0; i < this._items.length; ++i) {
            if (this._items[i] instanceof WebInspector.ToolbarSeparator) {
                this._items[i].setVisible(!previousIsSeparator);
                previousIsSeparator = true;
                lastSeparator = this._items[i];
                continue;
            }
            if (this._items[i].visible()) {
                previousIsSeparator = false;
                lastSeparator = null;
                nonSeparatorVisible = true;
            }
        }
        if (lastSeparator && lastSeparator !== this._items.peekLast())
            lastSeparator.setVisible(false);

        this.element.classList.toggle("hidden", lastSeparator && lastSeparator.visible() && !nonSeparatorVisible);
    }
}

/**
 * @constructor
 * @extends {WebInspector.Object}
 * @param {!Element} element
 */
WebInspector.ToolbarItem = function(element)
{
    this.element = element;
    this.element.classList.add("toolbar-item");
    this._enabled = true;
    this._visible = true;
    this.element.addEventListener("mouseenter", this._mouseEnter.bind(this), false);
    this.element.addEventListener("mouseleave", this._mouseLeave.bind(this), false);
}

WebInspector.ToolbarItem.prototype = {
    _mouseEnter: function()
    {
        this.element.classList.add("hover");
    },

    _mouseLeave: function()
    {
        this.element.classList.remove("hover");
    },

    /**
     * @param {boolean} value
     */
    setEnabled: function(value)
    {
        if (this._enabled === value)
            return;
        this._enabled = value;
        this._applyEnabledState();
    },

    _applyEnabledState: function()
    {
        this.element.disabled = !this._enabled;
    },

    /**
     * @return {boolean} x
     */
    visible: function()
    {
        return this._visible;
    },

    /**
     * @param {boolean} x
     */
    setVisible: function(x)
    {
        if (this._visible === x)
            return;
        this.element.classList.toggle("hidden", !x);
        this._visible = x;
        if (this._toolbar && !(this instanceof WebInspector.ToolbarSeparator))
            this._toolbar._hideSeparatorDupes();
    },

    __proto__: WebInspector.Object.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarItem}
 * @param {string} text
 * @param {string=} className
 */
WebInspector.ToolbarText = function(text, className)
{
    WebInspector.ToolbarItem.call(this, createElementWithClass("span", "toolbar-text"));
    if (className)
        this.element.classList.add(className);
    this._textElement = this.element.createTextChild(text);
}

WebInspector.ToolbarText.prototype = {
    /**
     * @param {string} text
     */
    setText: function(text)
    {
        this._textElement.textContent = text;
    },

    showGlyph: function()
    {
        if (!this._glyphElement) {
            this.element.classList.add("toolbar-text-glyphed");
            this._glyphElement = createElementWithClass("div", "glyph toolbar-button-theme");
            this.element.insertBefore(this._glyphElement, this._textElement);
        }
    },

    makeDimmed: function()
    {
        this.element.classList.add("toolbar-text-dimmed");
    },

    __proto__: WebInspector.ToolbarItem.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarItem}
 * @param {string=} placeholder
 * @param {number=} growFactor
 */
WebInspector.ToolbarInput = function(placeholder, growFactor)
{
    WebInspector.ToolbarItem.call(this, createElementWithClass("input", "toolbar-item"));
    this.element.addEventListener("input", this._onChangeCallback.bind(this), false);
    if (growFactor)
        this.element.style.flexGrow = growFactor;
    if (placeholder)
        this.element.setAttribute("placeholder", placeholder);
    this._value = "";
}

WebInspector.ToolbarInput.Event = {
    TextChanged: "TextChanged"
};

WebInspector.ToolbarInput.prototype = {
    /**
     * @param {string} value
     */
    setValue: function(value)
    {
        this._value = value;
        this.element.value = value;
    },

    /**
     * @return {string}
     */
    value: function()
    {
        return this.element.value;
    },

    _onChangeCallback: function()
    {
        this.dispatchEventToListeners(WebInspector.ToolbarInput.Event.TextChanged, this.element.value);
    },

    __proto__: WebInspector.ToolbarItem.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarItem}
 * @param {string} className
 */
WebInspector.AbstractToolbarButton = function(className)
{
    WebInspector.ToolbarItem.call(this, createElementWithClass("button", className + " toolbar-item"));
    this.element.addEventListener("click", this._clicked.bind(this), false);
    this.element.addEventListener("mousedown", this._mouseDown.bind(this), false);
    this.element.addEventListener("mouseup", this._mouseUp.bind(this), false);
    this._longClickController = new WebInspector.LongClickController(this.element);
    this._longClickController.addEventListener(WebInspector.LongClickController.Events.LongClick, this._onLongClick.bind(this));
}

WebInspector.AbstractToolbarButton.prototype = {
    /**
     * @param {!WebInspector.Event} event
     */
    _onLongClick: function(event)
    {
        var nativeEvent = event.data;
        this.dispatchEventToListeners("longClickDown", nativeEvent);
    },

    /**
     * @param {!Event} event
     */
    _clicked: function(event)
    {
        this._longClickController.reset();
        var defaultPrevented = this.dispatchEventToListeners("click", event);
        event.consume(defaultPrevented);
    },

    /**
     * @param {!Event} event
     */
    _mouseDown: function(event)
    {
        this.dispatchEventToListeners("mousedown", event);
    },

    /**
     * @param {!Event} event
     */
    _mouseUp: function(event)
    {
        this.dispatchEventToListeners("mouseup", event);
    },

    /**
     * @override
     */
    _applyEnabledState: function()
    {
        this.element.disabled = !this._enabled;
        this._longClickController.reset();
    },

    /**
     * @return {boolean}
     */
    enabled: function()
    {
        throw "Not implemented";
    },

    /**
     * @return {string}
     */
    title: function()
    {
        throw "Not implemented";
    },

    /**
     * @param {string} title
     */
    setTitle: function(title)
    {
        throw "Not implemented";
    },

    /**
     * @return {string}
     */
    state: function()
    {
        throw "Not implemented";
    },

    /**
     * @param {string} x
     */
    setState: function(x)
    {
        throw "Not implemented";
    },

    /**
     * @return {boolean}
     */
    toggled: function()
    {
        throw "Not implemented";
    },

    /**
     * @param {boolean} x
     */
    setToggled: function(x)
    {
        throw "Not implemented";
    },

    makeLongClickEnabled: function()
    {
        this._longClickController.enable();
        this._longClickGlyph = this.element.createChild("div", "long-click-glyph toolbar-button-theme");
    },

    unmakeLongClickEnabled: function()
    {
        this._longClickController.disable();
        if (this._longClickGlyph)
            this.element.removeChild(this._longClickGlyph);
    },

    __proto__: WebInspector.ToolbarItem.prototype
}

/**
 * @constructor
 * @extends {WebInspector.AbstractToolbarButton}
 * @param {string} title
 * @param {string} className
 * @param {number=} states
 */
WebInspector.ToolbarButtonBase = function(title, className, states)
{
    WebInspector.AbstractToolbarButton.call(this, className);

    this._states = states || 2;
    if (states == 2)
        this._state = "off";
    else
        this._state = "0";

    this.setTitle(title);
}

WebInspector.ToolbarButtonBase.prototype = {
    /**
     * @override
     * @return {boolean}
     */
    enabled: function()
    {
        return this._enabled;
    },

    /**
     * @override
     * @return {string}
     */
    title: function()
    {
        return this._title;
    },

    /**
     * @override
     * @param {string} title
     */
    setTitle: function(title)
    {
        if (this._title === title)
            return;
        this._title = title;
        WebInspector.Tooltip.install(this.element, title);
    },

    /**
     * @override
     * @return {string}
     */
    state: function()
    {
        return this._state;
    },

    /**
     * @override
     * @param {string} x
     */
    setState: function(x)
    {
        if (this._state === x)
            return;

        this.element.classList.remove("toggled-" + this._state);
        this.element.classList.add("toggled-" + x);
        this._state = x;
    },

    /**
     * @override
     * @return {boolean}
     */
    toggled: function()
    {
        if (this._states !== 2)
            throw("Only used toggled when there are 2 states, otherwise, use state");
        return this.state() === "on";
    },

    /**
     * @override
     * @param {boolean} x
     */
    setToggled: function(x)
    {
        if (this._states !== 2)
            throw("Only used toggled when there are 2 states, otherwise, use state");
        this.setState(x ? "on" : "off");
    },

    __proto__: WebInspector.AbstractToolbarButton.prototype
}

/**
 * @constructor
 * @extends {WebInspector.AbstractToolbarButton}
 * @param {!WebInspector.Action} action
 */
WebInspector.ActionToolbarButton = function(action)
{
    this._action = action;
    WebInspector.AbstractToolbarButton.call(this, action.icon());
    this._glyphElement = this.element.createChild("div", "glyph toolbar-button-theme");
    action.addEventListener(WebInspector.Action.Events.Enabled, this._enabledStateChanged, this);
    action.addEventListener(WebInspector.Action.Events.StateChanged, this._stateChanged, this);
    action.addEventListener(WebInspector.Action.Events.TitleChanged, this._titleChanged, this);
    this._titleChanged();
}

WebInspector.ActionToolbarButton.prototype = {
    /**
     * @override
     * @return {boolean}
     */
    enabled: function()
    {
        return this._action.enabled();
    },

    /**
     * @override
     * @param {boolean} value
     */
    setEnabled: function(value)
    {
        this._action.setEnabled(value);
    },

    /**
     * @param {!WebInspector.Event} event
     */
    _enabledStateChanged: function(event)
    {
        var enabled = /** @type {boolean} */ (event.data);
        WebInspector.ToolbarButtonBase.prototype.setEnabled.call(this, enabled);
    },

    /**
     * @override
     * @param {!Event} event
     */
    _clicked: function(event)
    {
        this._longClickController.reset();
        this._action.execute();
    },

    /**
     * @override
     * @return {string}
     */
    title: function()
    {
        return this._action.title();
    },

    /**
     * @override
     * @param {string} title
     */
    setTitle: function(title)
    {
        this._action.setTitle(title);
    },

    _titleChanged: function()
    {
        WebInspector.Tooltip.install(this.element, this._action.title(), this._action.id());
    },

    /**
     * @override
     * @return {string}
     */
    state: function()
    {
        return this._action.state();
    },

    /**
     * @override
     * @param {string} x
     */
    setState: function(x)
    {
        this._action.setState(x);
    },

    /**
     * @param {!WebInspector.Event} event
     */
    _stateChanged: function(event)
    {
        var data = /** @type {!{oldState: string, newState: string}} */ (event.data);
        this.element.classList.remove("toggled-" + data.oldState);
        this.element.classList.add("toggled-" + data.newState);
    },

    /**
     * @override
     * @return {boolean}
     */
    toggled: function()
    {
        return this._action.toggled();
    },

    /**
     * @override
     * @param {boolean} x
     */
    setToggled: function(x)
    {
        this._action.setToggled(x);
    },

    /**
     * @param {?function():!Array.<!WebInspector.ToolbarButton>} buttonsProvider
     */
    setLongClickOptionsEnabled: function(buttonsProvider)
    {
        if (buttonsProvider) {
            if (!this._longClickOptionsData) {
                this.makeLongClickEnabled();

                var longClickDownListener = this._showOptions.bind(this);
                this.addEventListener("longClickDown", longClickDownListener, this);

                this._longClickOptionsData = {
                    longClickDownListener: longClickDownListener
                };
            }
            this._longClickOptionsData.buttonsProvider = buttonsProvider;
        } else {
            if (!this._longClickOptionsData)
                return;

            this.removeEventListener("longClickDown", this._longClickOptionsData.longClickDownListener, this);
            delete this._longClickOptionsData;

            this.unmakeLongClickEnabled();
        }
    },

    _showOptions: function()
    {
        var buttons = this._longClickOptionsData.buttonsProvider();
        var mainButtonClone = new WebInspector.ToolbarButton(this.title(), this._action.icon(), this._action.statesCount());
        mainButtonClone.addEventListener("click", clicked.bind(this));

        /**
         * @param {!WebInspector.Event} event
         * @this {WebInspector.ActionToolbarButton}
         */
        function clicked(event)
        {
            this._clicked(/** @type {!Event} */ (event.data));
        }

        mainButtonClone.setState(this.state());
        buttons.push(mainButtonClone);

        var document = this.element.ownerDocument;
        document.documentElement.addEventListener("mouseup", mouseUp, false);

        var optionsGlassPane = new WebInspector.GlassPane(document);
        var optionsBar = new WebInspector.Toolbar("fill", optionsGlassPane.element);
        optionsBar._contentElement.classList.add("floating");
        const buttonHeight = 26;

        var hostButtonPosition = this.element.totalOffset();

        var topNotBottom = hostButtonPosition.top + buttonHeight * buttons.length < document.documentElement.offsetHeight;

        if (topNotBottom)
            buttons = buttons.reverse();

        optionsBar.element.style.height = (buttonHeight * buttons.length) + "px";
        if (topNotBottom)
            optionsBar.element.style.top = (hostButtonPosition.top + 1) + "px";
        else
            optionsBar.element.style.top = (hostButtonPosition.top - (buttonHeight * (buttons.length - 1))) + "px";
        optionsBar.element.style.left = (hostButtonPosition.left + 1) + "px";

        for (var i = 0; i < buttons.length; ++i) {
            buttons[i].element.addEventListener("mousemove", mouseOver, false);
            buttons[i].element.addEventListener("mouseout", mouseOut, false);
            optionsBar.appendToolbarItem(buttons[i]);
        }
        var hostButtonIndex = topNotBottom ? 0 : buttons.length - 1;
        buttons[hostButtonIndex].element.classList.add("emulate-active");

        function mouseOver(e)
        {
            if (e.which !== 1)
                return;
            var buttonElement = e.target.enclosingNodeOrSelfWithClass("toolbar-item");
            buttonElement.classList.add("emulate-active");
        }

        function mouseOut(e)
        {
            if (e.which !== 1)
                return;
            var buttonElement = e.target.enclosingNodeOrSelfWithClass("toolbar-item");
            buttonElement.classList.remove("emulate-active");
        }

        function mouseUp(e)
        {
            if (e.which !== 1)
                return;
            optionsGlassPane.dispose();
            document.documentElement.removeEventListener("mouseup", mouseUp, false);

            for (var i = 0; i < buttons.length; ++i) {
                if (buttons[i].element.classList.contains("emulate-active")) {
                    buttons[i].element.classList.remove("emulate-active");
                    buttons[i]._clicked(e);
                    break;
                }
            }
        }
    },

    __proto__: WebInspector.AbstractToolbarButton.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarButtonBase}
 * @param {string} title
 * @param {string} className
 * @param {number=} states
 */
WebInspector.ToolbarButton = function(title, className, states)
{
    WebInspector.ToolbarButtonBase.call(this, title, className, states);

    this._glyphElement = this.element.createChild("div", "glyph toolbar-button-theme");
}

WebInspector.ToolbarButton.prototype = {
    /**
     * @param {string} iconURL
     */
    setBackgroundImage: function(iconURL)
    {
        this.element.style.backgroundImage = "url(" + iconURL + ")";
        this._glyphElement.classList.add("hidden");
    },

    __proto__: WebInspector.ToolbarButtonBase.prototype
}

/**
 * @param {string} actionId
 * @return {!WebInspector.ActionToolbarButton}
 */
WebInspector.ToolbarButton.createActionButton = function(actionId)
{
    return new WebInspector.ActionToolbarButton(WebInspector.actionRegistry.action(actionId));
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarButton}
 * @param {string} title
 * @param {string} className
 * @param {function(!WebInspector.ContextMenu)} contextMenuHandler
 */
WebInspector.ToolbarMenuButton = function(title, className, contextMenuHandler)
{
    WebInspector.ToolbarButton.call(this, title, className);
    this._contextMenuHandler = contextMenuHandler;
}

WebInspector.ToolbarMenuButton.prototype = {
    /**
     * @override
     * @param {!Event} event
     */
    _clicked: function(event)
    {
        var contextMenu = new WebInspector.ContextMenu(event,
            false,
            this.element.totalOffsetLeft(),
            this.element.totalOffsetTop() + this.element.offsetHeight);
        this._contextMenuHandler(contextMenu);
        contextMenu.show();
    },

    __proto__: WebInspector.ToolbarButton.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarButton}
 * @param {!WebInspector.Setting} setting
 * @param {string} className
 * @param {string} title
 * @param {string=} toggledTitle
 */
WebInspector.ToolbarSettingToggle = function(setting, className, title, toggledTitle)
{
    WebInspector.ToolbarButton.call(this, "", className, 2);
    this._defaultTitle = title;
    this._toggledTitle = toggledTitle || title;
    this._setting = setting;
    this._settingChanged();
    this._setting.addChangeListener(this._settingChanged, this);
}

WebInspector.ToolbarSettingToggle.prototype = {
    _settingChanged: function()
    {
        var toggled = this._setting.get();
        this.setToggled(toggled);
        this.setTitle(toggled ? this._toggledTitle : this._defaultTitle);
    },

    /**
     * @override
     * @param {!Event} event
     */
    _clicked: function(event)
    {
        this._setting.set(!this.toggled());
        WebInspector.ToolbarButton.prototype._clicked.call(this, event);
    },

    __proto__: WebInspector.ToolbarButton.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarItem}
 */
WebInspector.ToolbarSeparator = function()
{
    WebInspector.ToolbarItem.call(this, createElementWithClass("div", "toolbar-divider"));
}

WebInspector.ToolbarSeparator.prototype = {
    __proto__: WebInspector.ToolbarItem.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarButtonBase}
 * @param {string} title
 * @param {string} className
 * @param {string} text
 * @param {number=} states
 */
WebInspector.ToolbarTextButton = function(title, className, text, states)
{
    WebInspector.ToolbarButtonBase.call(this, title, className, states);

    this._textElement = this.element.createChild("div", "toolbar-button-text");
    this._textElement.textContent = text;
}

WebInspector.ToolbarTextButton.prototype = {
    __proto__: WebInspector.ToolbarButtonBase.prototype
}

/**
 * @interface
 */
WebInspector.ToolbarItem.Provider = function()
{
}

WebInspector.ToolbarItem.Provider.prototype = {
    /**
     * @return {?WebInspector.ToolbarItem}
     */
    item: function() {}
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarItem}
 * @param {?function(!Event)} changeHandler
 * @param {string=} className
 */
WebInspector.ToolbarComboBox = function(changeHandler, className)
{
    WebInspector.ToolbarItem.call(this, createElementWithClass("span", "toolbar-select-container"));

    this._selectElement = this.element.createChild("select", "toolbar-item");
    this.element.createChild("div", "toolbar-select-arrow");
    if (changeHandler)
        this._selectElement.addEventListener("change", changeHandler, false);
    if (className)
        this._selectElement.classList.add(className);
}

WebInspector.ToolbarComboBox.prototype = {
    /**
     * @return {!HTMLSelectElement}
     */
    selectElement: function()
    {
        return /** @type {!HTMLSelectElement} */ (this._selectElement);
    },

    /**
     * @return {number}
     */
    size: function()
    {
        return this._selectElement.childElementCount;
    },

    /**
     * @return {!Array.<!Element>}
     */
    options: function()
    {
        return Array.prototype.slice.call(this._selectElement.children, 0);
    },

    /**
     * @param {!Element} option
     */
    addOption: function(option)
    {
        this._selectElement.appendChild(option);
    },

    /**
     * @param {string} label
     * @param {string=} title
     * @param {string=} value
     * @return {!Element}
     */
    createOption: function(label, title, value)
    {
        var option = this._selectElement.createChild("option");
        option.text = label;
        if (title)
            option.title = title;
        if (typeof value !== "undefined")
            option.value = value;
        return option;
    },

    /**
     * @override
     */
    _applyEnabledState: function()
    {
        this._selectElement.disabled = !this._enabled;
    },

    /**
     * @param {!Element} option
     */
    removeOption: function(option)
    {
        this._selectElement.removeChild(option);
    },

    removeOptions: function()
    {
        this._selectElement.removeChildren();
    },

    /**
     * @return {?Element}
     */
    selectedOption: function()
    {
        if (this._selectElement.selectedIndex >= 0)
            return this._selectElement[this._selectElement.selectedIndex];
        return null;
    },

    /**
     * @param {!Element} option
     */
    select: function(option)
    {
        this._selectElement.selectedIndex = Array.prototype.indexOf.call(/** @type {?} */ (this._selectElement), option);
    },

    /**
     * @param {number} index
     */
    setSelectedIndex: function(index)
    {
        this._selectElement.selectedIndex = index;
    },

    /**
     * @return {number}
     */
    selectedIndex: function()
    {
        return this._selectElement.selectedIndex;
    },

    /**
     * @param {number} width
     */
    setMaxWidth: function(width)
    {
        this._selectElement.style.maxWidth = width + "px";
    },

    __proto__: WebInspector.ToolbarItem.prototype
}

/**
 * @constructor
 * @extends {WebInspector.ToolbarItem}
 * @param {string} text
 * @param {string=} title
 * @param {!WebInspector.Setting=} setting
 */
WebInspector.ToolbarCheckbox = function(text, title, setting)
{
    WebInspector.ToolbarItem.call(this, createCheckboxLabel(text));
    this.element.classList.add("checkbox");
    this.inputElement = this.element.checkboxElement;
    if (title)
        this.element.title = title;
    if (setting)
        WebInspector.SettingsUI.bindCheckbox(this.inputElement, setting);
}

WebInspector.ToolbarCheckbox.prototype = {
    /**
     * @return {boolean}
     */
    checked: function()
    {
        return this.inputElement.checked;
    },

    __proto__: WebInspector.ToolbarItem.prototype
}

/**
 * @constructor
 * @extends {WebInspector.Toolbar}
 * @param {string} location
 * @param {!Element=} parentElement
 */
WebInspector.ExtensibleToolbar = function(location, parentElement)
{
    WebInspector.Toolbar.call(this, "", parentElement);
    this._loadItems(location);
}

WebInspector.ExtensibleToolbar.prototype = {
    /**
     * @param {string} location
     */
    _loadItems: function(location)
    {
        var extensions = self.runtime.extensions(WebInspector.ToolbarItem.Provider);
        var promises = [];
        for (var i = 0; i < extensions.length; ++i) {
            if (extensions[i].descriptor()["location"] === location)
                promises.push(resolveItem(extensions[i]));
        }
        Promise.all(promises).then(appendItemsInOrder.bind(this));

        /**
         * @param {!Runtime.Extension} extension
         * @return {!Promise.<?WebInspector.ToolbarItem>}
         */
        function resolveItem(extension)
        {
            var descriptor = extension.descriptor();
            if (descriptor["separator"])
                return Promise.resolve(/** @type {?WebInspector.ToolbarItem} */(new WebInspector.ToolbarSeparator()));
            if (descriptor["actionId"])
                return Promise.resolve(/** @type {?WebInspector.ToolbarItem} */(WebInspector.ToolbarButton.createActionButton(descriptor["actionId"])));
            if (!descriptor["className"])
                return Promise.resolve(/** @type {?WebInspector.ToolbarItem} */(new WebInspector.ToolbarButton(WebInspector.UIString(descriptor["title"]), descriptor["elementClass"])));
            return extension.instancePromise().then(fetchItemFromProvider);

            /**
             * @param {!Object} provider
             */
            function fetchItemFromProvider(provider)
            {
                return /** @type {!WebInspector.ToolbarItem.Provider} */ (provider).item();
            }
        }

        /**
         * @param {!Array.<?WebInspector.ToolbarItem>} items
         * @this {WebInspector.ExtensibleToolbar}
         */
        function appendItemsInOrder(items)
        {
            for (var i = 0; i < items.length; ++i) {
                var item = items[i];
                if (item)
                    this.appendToolbarItem(item);
            }
        }
    },

    __proto__: WebInspector.Toolbar.prototype
}

redpajama_set_name: RedPajamaGithub