In 2018, th e Village worked with online Civic Engagement firm Polco to conduct a community survey. The survey was available to Village residents from January 3, 2018 through February 28, 2018. In all, the Village received 320 responses and several additional written responses. Village staff presented the results to the Village Board at the April 25, 2018 regular meeting of the Village Board. Below are links to the presentation slides as well as the written comments.
Questions about the survey can be directed to Jared Heyn, Assistant to the Administrator, at (920) 468-5225 or by email by clicking here.


text:
"Trophy drought preventing players from joining Chiefs" – Cardoso
Kaizer Chiefs barren run is discouraging top players from joining the club, acording to Daniel Cardoso.
Kaizer Chiefs defender Daniel Cardoso believes the club's current trophy drought is standing in the way of top players making a move to Naturena.
Amakhosi are staring at four seasons without silverware, having last hoisted a cup when they won the league under Bafana coach, Stuart Baxter in 2015.
They do, however, have a chance to end the barren run, as they are still in the running for the Nedbank Cup, and have an outside chance of claiming a fifth PSL title.
Cardoso – who arrived at the club from Free State Stars shortly after their league triumph – revealed his main motivation for signing with the Glamour Boys was to win trophies, and believes that many players may now be discouraged from joining the club.
"You know' everyone comes to Chiefs to win trophies'" Cardoso said.
"But at the moment' I don't even think anyone wants to come here because we're not winning anything.
"It's still a big club' still a great brand. But' I mean' if you're not winning trophies and all of that people start turning around and saying that they want to win trophies.
"So I think once we can get that culture back, people are going to want to come in here.
"I came here to win trophies. It's just unfortunate I haven't won one yet. Maybe I brought the bad luck…No' I'm joking."
Daniel Cardoso
The Bafana defender said he was confident that he can win a few trophies with the club.
"I think since Ernst [Middendorp] came in, he's changed it around. And I think once we have a full preseason under him things will be a lot different. You can see how the style of football has changed.
Chiefs' next assignment is the Nedbank Cup quarterfinal against Cape Town City – their first top-flight opponent in this year's competition, having made it this far through scrappy wins against third-tier sides.
Cardoso noted the step up in intensity that will be required against the Mother City outfit.
"We've got to be on our toes. It's not a small team we are playing against now.
"In the past two rounds we played ABC Motsepe League sides' and it was tough. I think we made it tough on ourselves because we didn't take our opportunities' didn't kill the games.
"The last one went to extra time, and I think if we can learn to kill games a lot earlier' and not let it drag' it will be a lot easier for us."
Kick off on Sunday is at 15:00.
Previous PSL: A good weekend for the underdogs
Next Everything you need to know about the Blues vs Stormers

redpajama_set_name: RedPajamaCommonCrawl


Leh: Reiterating his Party's commitment for grant of UT status to Ladakh region, former national president of BJP, Nitin Gadkari today asked the Partymen to gear up for coming Assembly elections in the State and work hard to give the Party an absolute majority in the Assembly for abrogation of Article 370. Addressing a victory rally here today organized by the Party for winning the Ladakh Lok Sabha seat for the first time and creating a history in the State, Mr Gadkari said for granting UT status to Ladakh region abrogation of Article 370 which gives special status to J&K State is must. He said if BJP is voted to power in the State in the coming Assembly elections also it will abrogate the Article 370 which will ultimately pave the way for grant of UT status to the region, a long cherished demand of the people of Ladakh. Mr Gadkari also congratulated the people of the region for the victory of Party candidate Thupstan Chhewang from this Parliamentary Constituency and complimented them for voting in favour of the Party. Taking a dig at National Conference (NC), he asked the people to defeat the father -son duo Party in the State also as they defeated the mother- son party at Delhi because the two parties were the main cause for all the mess in the country as well as in this border State. The BJP leader, while assuring full support to the people in development of Ladakh region, said all the promises made in the elections will be fulfilled which included construction of Zojila Tunnel, inclusion of Boti language into 8th Schedule of Indian Constitution, opening of Kailash -Mansarovar road for yatris via Ladakh etc. While referring to the growing demand of the people for opening of Central University in Ladakh, Mr Gadkari said that in case the impediments were created in its way, the Government will encourage the private sector for opening a University in Ladakh on the pattern of other States of the country to provide the opportunities to students of this region for higher education so that they have not to go outside for the same. Addressing the rally, BJP co-convener J&K and MLA Delhi, R P Singh allayed the fears that BJP was against any section of society and said that party believes in justice to all and appeasement to none. He said BJP is secular in true sense as it did not believe in appeasement policy like Congress and others for vote bank politics. These parties exploited minorities for last over 60 years for vote bank and did nothing for their upliftment and betterment practically, he added. 'To grind their own axe Congress created a false notion among the people that BJP is anti Muslims when there is nothing like that, he said, adding after the BJP Government is installed at New Delhi, equal attention will be paid for the development of all regions and there will be no discrimination on the basis of region or religion. He said the BJP Government will pay special attention for the development of backward areas of Ladakh region by constructing hospitals, roads etc. The Government will also concentrate on boosting solar energy in Ladakh to make the region power surplus, he added. Addressing the rally, newly elected MP from Ladakh Thupstan Chhewang thanked the people of the region for voting in favour of the Party and ensuring his victory. He said he will strive hard for fulfilling the promises made by him during the campaigning.


Character » Zephyr Noble appears in 69 issues.
Zephyr Noble is the youngest child of the Noble Family and only daughter. She is an aerokinetic.
Many were upset by new, but mostly Zephyr's friend Krennick who was Draconis's son and wished to be with Zephyr romantically. They even allowed people to believe he was the father of the baby and not his own father. After she gave birth the baby died, but this was revealed o have been a lie by the doctor who had been paid by Draconis's daughter Necrona and has been raising the boy as her own.
At some point in time Zephyr severed her ties with the family and went to live a normal life due to help from a friend Detective Ryan O'Mega. She used the name Gretchen Lewis a prostitue Krennick had paid to sleep with due to her likeness and died. She lived like a normal person and befriended Bobby a man living in the same apartment as her. Later she found out he was Slate Blackthorne who's family was the evil opposite of her own. He wanted to escape from his own family and the twos relationship soon became intimate and five years later they are now married and the two have now become active members of the Nobles.
Noble Causes: First Impressions #1 - Guess Who's Coming To Dinner...?


We concede that there's nothing quite like your own home but we do try to come close to it with well furnished comfort either in the main building (and yes, with a crackling log fire in the foyer) or in the adjacent coach house and garden rooms, all with easy access to ample parking space.
There are 7 rooms, all with private facilities, and some are for family use with an extra bed. All have colour TV, direct dial phone, trouser press, etc.
All rates are per night and include full breakfast and all taxes.
Copyright © 2011 Sodbury House. All Rights Reserved.
Website designed by Dcypher (Bristol).


The Model S-4 weigh/fill system is a great first step from hand scooping to automation. Your bulk product is placed in the supply hopper and an electromagnetic vibratory feeder moves the product to the weigh hopper where it is weighed. When the target weight is reached, the controller stops the feeder and the weigh hopper opens automatically or with the foot switch to dump the product into a container. For weights up to 10 pounds.
Supply Hopper cup, 3.5 cu.ft.


CHRONIC PAIN ? SCIATICA PAIN? PAIN FROM INJURY? SUFFERING FROM STRESS? Welcome to the website of licensed massage therapist Mark Lechtner NC LMBT 9399. I am A Certified Medical Massage Practioner. I take a holistic approach to pain management by taking the time to look at your overall health. I use a health intake and then assess your body, how you stand, sit, walk, and any work related issues. I listen, observe and connect with you. My services are not intended to take the place of doctor recommended treatment for pain management.
Assessing your body, I see where your motions are constricted, which motions cause you pain or stiffness, and I take a look at any postural distortions you may be living with on a regular basis which are contributing to your pain.
I then apply the proper modality. Customized manual therapy sessions utilizing the following modalities: Orthopedic Massage,NMT,Medical Massage, Deep Tissue, Sports Massage,Myofascial Release and some Myoskeletal Alignment techniques. Let me help you bring your body into balance. Serving Catawba, Caldwell, Burke and Lincoln counties. Online gift cards available! Click the Book Now button below to get your appointment today! Now offering a 75 min Stress-Tension Relief Massage!! New, create your own massage package!Bundle and save more!
A member of the Muscle Docs Clinical and Therapeutic Massage group, voted "Finest Massage in Catawba County 2017"
Support me with your reviews and photos on Google!
"Mark is the best massage therapist in the Unifour, especially for pain management. He has an extensive knowledge of how the body is supposed to work and by combining this with his natural intuition he provides great results in a short amount of time. Don't waste your time or money on anyone else. "
"Mark has an exceptional ability to identify areas of need and addresses them with the appropriate techniques. I always leave feeling much improved!!"
"Mark has an exceptional ability to identify areas of need and addresses them with the appropriate techniques. I always leave feeling much improved!!"
"I went to Mark to work out some knee and foot issues, but he also worked on my rounded back and opened my shoulders,, which no other MT has ever pointed out. He also showed me how to tape my heel and Achilles for my plantar fasciitis, which I am now using."
"3 back surgeries later I've had many massage therapists along my journey. New to this area I found Mark on the web. Within 5 minutes of my first visit I knew he was the best I've experienced. I more than highly recommend him. He has saved me from going over the edge in controlling my pain due to a severe disability."


text:
HAPPY NEW YEAR TO YOU HERE COMES 2019
Hello lovelies and Welcome to the first blog post of 2019 ... Happy New Year to you all .....
Right, where do I start ? Hmmmmm let me see .... Well really the first update has to be the Stitch'n'Shenanigans Christmas party. Thankfully the soirée went very well with a only a few minor hiccups, With all the invitations sent out and the RSVP's returned we had a good idea of who would and would not be attending so as we could get the catering organised. The catering was not as straight forward as we had first anticipated as we found that more than a few of attendees had changed their dietary requirements since their adoptions with highfalutin requests for Celeriac remoulade, Caramelised Turnip, Wild mushroom and Garlic Ravioli to name but a few, making the buffet arrangements more complicated than originally planned, but made for the menu for all the distinguished guests interesting ( there was of course the staple favourites of wild flowers, Cheese and mixed seed) With the cuisine sorted, we set about what drinks to get for the esteemed bunch which was where our first big surprise happened ....... Reggie, he of numerous drunken shenanigans and Felix's drinking partner as well as being a share holder of the Hopping Hare ale house, informed us that he is a reformed character and not another drop of Dandelion Wine or Himbeergeist Raspberry Brandy pass his lips !!! Well, as you can imagine we were completely shocked and sceptical that this may have been one his and Felix's scams that had been cooked up, but No ..... Elaine contacted us to relay that Reggie has had his head turned and is in the process of straightening his self out to win the affections of a Lady who is yet to be named (Watch the blog for further updates).
Moving back onto the Christmas party it was wonderful to spend time with the likes of Hugo Hare, Octavia Crow, Mrs Miggins, Darcy Hare and Violet Mouse to name but a few, with everyone in attendance drinks in paws it soon became apparent that word of Reggie's reformation had got around which which had an effect on the vast majority of guests, who chose to support "the new Reggie" by abstaining from the Dandelion wine and Daisy & Lilac cocktails opting for the Gooseberry crush instead ,which turned out to be a new firm favourite amongst them.
This in turn led to the next hiccup of not enough drinks to go around which was looking to be quite disastrous for all, when in waltzed Tiger who soon had everyone's attention with an incredibly loud two clawed whistle, as we all turned to see what all the Hoo-ha was about, in walked two of his trusted assistants, Lady Lavina Hare and Cleo the cat, each one carrying a large box of the Gooseberry refreshment that was going down a storm.
With order restored it was time for us to take a back seat and let everyone tuck into the buffet as old friendships were rekindled with lots of new ones being made. As the evening progressed we slipped into a lovely session of songs with everyone in fine voice as we were treated to renditions of The Christmas Mouse and Hark the Herald Hares sang ,the evening was brought to a close by a very noisy and raucous version of the Carol of the Bells (which was a sight and sound to behold)
Introducing Mr Timothy who was commissioned by a fellow member of the Sussex Guild as a Christmas present for her hubby.
He is dressed in Harris tweed houndstooth trousers with a boiled wool tail coat and just to stop the chills of winter he has a scarf handknitted in Stein Fine Wool from The Little Grey Sheep. Mr Timothy was incredibly excited to be going to his new home to meet his new adoptive family.
Coming soon will be the first pictures of a very special commission that I have undertaken for a lovely couple who I met at one of the Sussex Guild shows from last year. This commission could only start after the Stitch'n'Shenanigans workshop could once again magic itself back to how it was before all the Christmas festivities (we did leave some party string up though for the fun element)
With my head full 0f new designs my heart full of fresh beginnings, and my tummy full of mince pies (diet!!) I started on this special commission. He is a very flamboyant character who loves to be the centre of attention and he has told us that he really wants to travel and explore his new surroundings. I have also been busy with producing new members who will be greeting prospective adoptive parents at various shows with the Sussex Guild amongst others this year.
So peeps, time for me to leave you in peace now, hoping that you all had a wonderful Christmas (which seems like an age ago now!!) and wishing you a Prosperous year ahead, with plenty of Shenanigans!!!


text:
Chase & Briceno(Greensboro College) Earn USA South Weekly Honors
Chase & Briceno Earn USA South Weekly Honors
from Wes Gullett, Greensboro College SID
GREENSBORO, N.C. – Greensboro College had two student-athletes earn weekly awards from the USA South Athletic Conference, the conference announced Monday.
Alexis Chase was named women's soccer Player of the Week, while Jordy Briceno earned the men's Player of the Week honors.
Women's Soccer Player of the Week
Alexis Chase, Greensboro – The Wendell, North Carolina sophomore forward tallied four goals and two assists in a 3-0 week for the Pride. In an 8-0 win over Piedmont International, Chase was notched two goals along with an assist on the eventual game-winning goal. In a 2-1 win over USA South foe Pfeiffer, Chase was held scoreless with one shot. Finally, in a 4-2 victory over USA South rival Methodist, Chase scored twice and assisted on the eventual game-winning goal.
Men's Soccer Player of the Week
Jordy Briceno, Greensboro – The sophomore forward from Cali, Colombia scored three goals in a 2-0 week for the Pride. In a 3-1 win over Piedmont International, Briceno notched the first goal of the match in the 28th minute. In a 5-2 victory over USA South foe Berea, Briceno scored to put the Pride up 2-1 and again to finalize the scoring.
For more information on Greensboro College athletics, continue to follow www.greensborocollegesports.com.
Published October 8, 2018 By Press Release
Categorized as College Tagged Greensboro College student-athletes
Greensboro College Pride Athletes Assist In Community With Triad Panthers Challenger Teams
A Look at this Week's Carolina Preps High School Football Power Rankings


We've been busy in the studio updating our classic Vintage Bow designs, making each one even more delicate, detailed and unique. Each stud features an intricately formed twisted silver rope-detail design that will add a subtle textural appeal to your look. We love these 18k gold-plated earrings alone, or paired with other pieces from our Bow collection for the ultimate coordinated vibe.


text:
Carole Maczkovics
Brussels +32 2 545 7515
Emailcmaczkovics@cov.com
Carole Maczkovics has developed a cutting-edge expertise in State aid law, with a strong background in the economic regulation of network industries (energy and transport) and in public contracting (EU subsidies, public procurement, concessions).
Carole has a proven track record of advising public and private entities, which she successfully represents in administrative and judicial proceedings on complex State aid and regulatory matters before the European Commission as well as before the Belgian and European courts. She also assists clients with the application of the new EU Foreign Subsidy Regulation and UK subsidy control regime.
Carole has published many articles on State aid law and on regulated network industries, and contributes to conferences and seminars on a regular basis. She is a visiting lecturer at King's College London and at the Brussels School of Competition on the application of regulation and competition law (including State aid) in the railway sector. Carole gives trainings on State aid law at EFE, in Paris. She has been recently appointed as Academic Director of the European State aid Law Institute (EStALI).
Regulatory and Public Policy
Antitrust/Competition
State Aid and Foreign Subsidies
Represents clients in complaining with the European Commission against EU Member States for State aid granted to competitors and in restoring a level playing field notably by assisting on issues relating to privatizations, restructuring of firms in difficulty, settlements, economic continuity of the beneficiary of aid.
Assists a client in a preliminary investigation launched by the European Commission against an EU Member State for alleged State aid granted to the client.
Represents public authorities and undertakings in national court cases regarding State aid matters such as the recovery of recoverable advances, the setting aside of a regulatory measure allegedly amounting to unlawful State aid and alleged unlawful fiscal exemptions.
Represented clients to challenge the funding of an energy infrastructure before the Commission under State aid, public procurement and energy rules as well as challenged a previous Commission's positive decision on the funding of that energy infrastructure before the General Court of the EU.
Assisted the commercial subsidiary of a public utility on its restructuring (financial intervention of the mother company, transfer of concession contracts, repatriation of strategic assets to the mother company through purchase or through expropriation, sales of assets, privatization, etc.) under State aid and administrative law, including public procurement rules and defended the client before Court against a potential buyer challenging the restructuring process.
Provided a legal opinion on the financing of a support scheme to RES-electricity producers.
Represented companies before the General Court of the EU for the annulment of a recovery decision relating to a guarantee scheme as well as before national courts and the Court of Justice in a preliminary ruling relating to the same recovery decision.
Analyzed the various funding sources of an energy distributor under State aid law and made recommendations.
Advised a large media company on the potential State aid qualification of differentiated tariffs for broadcasting the Football World Cup on giant screens.
Advised under State aid law a public authority promoting tourism on the implementation of the policy consisting of subsidising some specific projects (museums, artistic and cultural centres, MICE).
Advised a private company on the possibility for a public authority to support undertakings in difficulty pursuant to the principle of Market Economy Operator or to the Commission's guidelines on State aid for rescuing and restructuring firms in difficulty.
Assisted a public undertaking under State aid and public procurement laws regarding its entrustment with the public service that it initially provided in monopoly.
Advises clients in the energy and railway sectors on regulatory matters such as access to infrastructure, wholesale services prices, vertical separation obligations and the powers of the regulatory body.
Represented a client before the European Court of Justice in a preliminary ruling on the status under public procurement law of the subsidiary of a State owned railway company.
King's College London, LL.M., 2008
European Law
University of Liège, 2001
Licence in law
Lecturer on competition law and rail regulation at King's College London.
Lecturer on competition law and regulation of the railway sector at the Brussels School of Competition.
Trainer at the EFE (Paris) on State aid.
Government commissioner to a large public company (2004-2008)
Expert in the office of the Belgian Federal Minister of Transport (2003-2007)


Make packing comfortable and efficient with our range of pack station systems, trollies and workstations. The Pacplan® Mobile Heat Sealer Station positions the Optimax S620 sealer at the correct height for the Ergoline PPE1600 packing table. It also holds two rolls of 24" lay flat tubing. Our manual 2 and 2.5-tonne pallet trucks make easy work of moving pallets around the warehouse and our heavy duty trollies are perfect for transporting sacks. All of our pack stations are ergonomically sound resulting in greater comfort and efficiency.


text:
Antimicrobial pharmacodynamics is the relationship between the concentration of an antibiotic and its ability to inhibit vital processes of endo- or ectoparasites and microbial organisms. This branch of pharmacodynamics relates the concentration of an anti-infective agent to its effect, specifically to its antimicrobial effect.

Concentration-dependent effects
The minimum inhibitory concentration (MIC) and minimum bactericidal concentration are used to measure in vitro activity of antimicrobial agents. They are good indicators of antimicrobial potency, but don't give any information relating to time-dependent antimicrobial killing (the so-called post antibiotic effect).

Post-antibiotic effect
The post-antibiotic effect (PAE) is defined as persistent suppression of bacterial growth after a brief exposure (1 or 2 hours) of bacteria to an antibiotic even in the absence of host defense mechanisms. Factors that affect the duration of the post-antibiotic effect include duration of antibiotic exposure, bacterial species, culture medium and class of antibiotic. It has been suggested that an alteration of DNA function is possibly responsible for the post-antibiotic effect following the observation that most inhibitors of protein and nucleic acid synthesis (aminoglycosides, fluoroquinolones, tetracyclines, clindamycin, certain newer macrolides/ketolides, and rifampicin and rifabutin) induce long-term PAE against susceptible bacteria. Theoretically, the ability of an antibiotic to induce a PAE is an attractive property since antibiotic concentrations could fall below the MIC for the bacterium yet retain their effectiveness in their ability to suppress the growth. Therefore, an antibiotic with PAE would require less frequent administration and it could improve patient adherence with regard to pharmacotherapy. Proposed mechanisms include (1) slow recovery after reversible nonlethal damage to cell structures; (2) persistence of the drug at a binding site or within the periplasmic space; and (3) the need to synthesize new enzymes before growth can resume. Most antimicrobials possess significant in vitro PAEs (≥ 1.5 hours) against susceptible gram-positive cocci. Antimicrobials with significant PAEs against susceptible gram-negative bacilli are limited to carbapenems and agents that inhibit protein or DNA synthesis.

References

Antibiotics
Pharmacodynamics

redpajama_set_name: RedPajamaWikipedia


text:
Tag Lovecraftian
Dark Blood Comes From the Feet: An Interview with Emma J. Gibbon
May 22, 2020 May 20, 2020 Michelle R. Lane	1 Comment
Emma J. Gibbon is a horror writer, speculative poet and librarian. Her stories have appeared in various anthologies including Wicked Weird, Wicked Haunted, and The Muse & the Flame and on the Toasted Cake podcast. She also has a story upcoming in Would but Time Await: An Anthology of New England Folk Horror from Haverhill Publishing. This year, she has been nominated twice for the Rhysling Award for her poems "Fune-RL" (Strange Horizons) and "Consumption" (Eye to the Telescope). Her poetry has also been published in Liminality, Pedestal Magazine and is upcoming in Kaleidotrope. Emma is originally from Yorkshire and now lives in Maine in a spooky little house in the woods with her husband, Steve, and three exceptional animals: Odin, Mothra, and M. Bison (also known as Grim). She is a member of the New England Horror Writers, the Science Fiction & Fantasy Poetry Association, the Angela Carter Society, and the Tuesday Mayhem Society. Her website is emmajgibbon.com.
I recently had the pleasure of reading Emma J. Gibbon's anthology of short horror fiction, Dark Blood Comes From the Feet. I thoroughly enjoyed reading this collection of literary horror tales that put relatable characters under the microscope to show us the darker side of the human condition. Gibbon takes us to weirdly familiar settings that quickly turn macabre, like a strip club in Purgatory, a Lovecraftian orphanage, a day at the beach that would make Cronenberg proud, and a haunted house on a hill that I won't forget any time soon.
GMM: Welcome to Girl Meets Monster, Emma. Congratulations on the release of your short story collection, Dark Blood Comes From the Feet, that comes out today! I really loved reading your stories, not just because they were well written, but also because I couldn't help wondering where the stories came from. You write about a diverse group of characters from different backgrounds with different experiences and I kept wondering which of those characters were you. That might seem like a strange thing to wonder for some people, but because I write dark fiction as well about women of color, there is a part of me in each story. Some really terrible things happen to the people in your stories, but at the most basic level, they're human. How much of yourself is in this collection? Where do the lines blur between you and your characters?
EJG: Thank you so much! I'm so glad you enjoyed it! That's a really tough question to answer because in a way, they are all from me but are separate at the same time. I've had an interesting and varied time on this earth so far, so it does sometimes feel like I've lived a lot of lives. There is no doubt that I use elements of myself and my life when I create characters, some on a surface level and some on a deep emotional level. When I do the latter, it's often not a conscious decision but something I realize later, sometimes years later. For example, on a surface level, the narrator of "Cellar Door," Karen, resembles me in that some of her memories she mentions are my memories and she lives in my house. That house is my house! That basement is real! I'm not convinced it was the best idea, it's like I haunted my own house. But personality-wise, she's not like me. Janine in "Janine" is a character I have enormous sympathy for. She is someone who had the cards stacked against her from the start, who made some bad choices and has really suffered for them, much more than she deserves. I have the sense that I could have easily been someone like Janine, but I was just luckier.
Ultimately, there is a lot of me in this collection, probably more than I like to admit. Dark Blood Comes from the Feet, is a line from "Cellar Door" and it's a reference to having old trauma that you have trouble letting go of. I have a lot of stuff that I psychologically scratch at, over and over, old wounds. They're in my stories but I skew it and dress it up in monsters and distinct voices and the supernatural so that I don't even recognize it myself at times.
GMM: While reading the stories, I compared your work to other writers in the genre, including Poe, Lovecraft, Shirley Jackson, Stephen King, Clive Barker, Cronenberg, and there's even a reference to Donnie Darko (Tolkien), which brought a smile to my face. Which writers have had the most impact on your own writing style? Whose stories inspired you the most?
EJG: I do love Donnie Darko! And thank you so much! That's a very flattering and intimidating list! I definitely have a group of authors whose work has inspired me. I know I'll forget a major influence but a very obvious one is Shirley Jackson, but also Angela Carter, Daphne du Maurier, Neil Gaiman, Mervyn Peake, M. Rickert, Kelly Link. I think Brooke Bolander is astonishing. I'm inspired by many people writing horror right now. More than that though, I think the key is I was an early and voracious reader who came from a family that weren't huge readers. We didn't go to the library. My parents bought me books, but there was no way they could have kept up with me. I read everything and did a lot of rereading (I've slowed down since then, I mean, the internet exists now.) I'd get books from car boot sales (the British equivalent of yard sales). Half the time I didn't have to pay. I think people were a bit weirded out by this little girl carrying a stack of Stephen King and Alfred Hitchcock books, I especially liked the ones with the yellow edges, so they just gave them to me. Because my reading was very autodidactic and random, I have a personal canon that's my own. I had no sense of high or low culture (which I still think is nonsense anyway,) or genre or nonfiction vs fiction, so I'd read One Flew Over the Cuckoo's Nest then V. C. Andrews, an anthology of classic ghost stories and Salem's Lot with a book of feminist stories. Much later, I'd carry on this habit even as I specialized in English—Macbeth with The Mammoth Book of Vampires Stories, a nonfiction book about the cultural effects of tuberculosis with The Name of the Rose, Wide Sargasso Sea with The Secret Diary of Laura Palmer. So all of these stories are all in there and they come out in my stories in a completely unconscious way.
GMM: You have an incredible talent for showing us the horror and reality of the settings in each of your stories. I'm an avid reader, but I also have spent a lot of time watching and studying films in many genres, which I think has had an impact on how I tell stories. Would you say that the written word, or film images have inspired your work more? What films have influenced the way you craft a scene?
EJG: Thank you so much! That really means a lot to me because I have aphantasia. This means that I don't imagine or think in visual images. It's hard to describe but I have a strong internal dialogue and think in concepts (almost as if my mind can feel the edges of a 3D representation that I can't see.) Some of my settings are based on places where I have lived or visited—as I said, the house in "Cellar Door" is mine, the tunnel in "Bobby Red-Eyes" really existed when I was a kid (and Bobby is an urban legend in my hometown), the Black Shuck Tavern is based on a famous Hollywood nightclub. Others were research, I've never been to any of the places in "Whitechapel," for example.
I am very influenced by film too. I grew up in the peak-VHS 80s with very little screen supervision, so we watched a lot of horror films. My big ambition as a teen was to be a music video director. I was a double major in college in English and Art History but most of my art history classes were the history of film or film theory and honestly; it burnt me out a little. A lot of my favorite films are before then. So films like Heathers, The Lost Boys, Donnie Darko, Amadeus, The Faculty, Beetlejuice, The 'Burbs, Bram Stoker's Dracula, Nightbreed and May have had an enormous impact on me. Despite the aphantasia, it's the colors of the scenes that I often remember and the way they affect mood.
That said, I've been influenced and inspired by all kinds of things—personal anecdotes, scenes from my own life, books and movies, music videos, songs, photographs and other pieces of art, TV shows and video games. It's the story that I'm always most interested in, not necessarily the format.
GMM: I enjoyed reading all of the stories in your collection, but I have a few favorites, including "Devour," "Cellar Door," "Whitechapel," and "St. Scholastica's Home for Children of the Sea." Which stories in the collection are your favorites, and why? Which were the most difficult to write?
EJG: As far as being hard to write, two stand out particularly. "Cellar Door" because it was the kind of story I have always wanted to write and fear of failure meant I couldn't get out of my own way for the longest time. In the end, I made it a NaNoWriMo project and got a good chunk of it done by not looking back as I wrote. "This is Not the Glutton Club" was hard because I hand wrote it while bedridden with pneumonia! It was also the story that needed the most research, and my Facebook friends really saved the day on that one!
It's really hard to have favorites, they're like children (I'm guessing). What is nice is that I've got enough distance between them all that I like them all. I don't regret putting any of them in there. I do really like "Sermon from New London." It was a lot of fun to write. Should we get to the other side of the apocalypse, I think there are worse ways to survive than being part of a matriarchal cult based on punk music. It was first published on the Toasted Cake podcast performed by the editor, Tina Connolly, and there had to be a language warning because there is so much swearing in it. What really makes me laugh is that when I played it to my husband, he didn't notice, which I think tells you about the level of discourse in our house!
GMM: While you write from the POV of both male and female characters, your strongest characters seem to be women and girls. And, even though terrible things happen to them, not all of them are victims. Many of your female characters make the most of the bad situations they find themselves in, and become survivors. Would you say that feminism has had an impact on how you create your female characters? Or, are you simply showing us the strength of the human spirit? Rarely, do your stories have what I would consider a happy ending, and I really appreciate that. How would you describe your writing style to someone who has never read your work?
EJG: Feminism definitely plays into it. Don't get me wrong, I don't mind straight white guys, I even married one! But they have had their time being at the center of stories. They've had centuries of being the heroes and saving the day. I've made a conscious decision to give people who don't traditionally get to be the protagonists take center stage or have the happy ending—women without children, women who are not straight, trans women, working-class women. Part of it is being a woman from a working-class background who has not conformed to social convention and having mainstream fiction just not resonate with me at all because of that. I still have a way to go. My writing is far too white, for example, and that is something I have to work on—my experience of the world is not a default and I think the more that I reflect the world as it is, the more powerful it is when I tilt it somewhat. Something that is at the core of who I am is that I will always root for the underdog, always. There is never a time when I'm on the side of the people with all the power so that's going to come through.
I've had to pull myself up from the ashes a few times in my life, start again from nothing and reinvent myself. I've seen people, especially women, do that again and again and I like to reflect that in some of my stories. It makes you stronger, like tempering steel, but it has a cost, you can get brittle and break. Even the phoenix has to go through the fire.
Describing my writing style is difficult. It's one of those things where I would be interested to know how other people describe it. A lot of it is instinctual. Once I get the voice of a story, it usually pulls me along. That said, I like to challenge myself to see if I can write in a wide a range as possible—can I write a nested story in the voice of a Victorian gentleman? What if I had an unreliable narrator talking to someone who wasn't there? Can I write a speech in mostly misheard punk lyrics? What would Shirley Jackson do? I think that is what it comes down to mostly: What would Shirley Jackson do?
Fiction Fragments: Ronald J. Murray
January 3, 2020 December 27, 2019 Michelle R. Lane	2 Comments
Last week, Girl Meets Monster had a delightful conversation about how music inspires the writing process with J. Edwin Buja. This week, I welcome fellow horror writer, Ronald J. Murray.
Ronald J. Murray lives in Pittsburgh, Pennsylvania. His fiction has appeared in The Ladies and Gentlemen of Horror 2017 charity anthology, Bon Appetit: Stories and Recipes for Human Consumption cannibal-themed anthology and recipe book, and the forthcoming Lustcraftian Horrors: Erotic Stories Inspired by H.P. Lovecraft from Infernal Ink Books. He is a member of the Horror Writers Association. You can find him enjoying his umpteenth cup of coffee at some ungodly hour while a film he's seen a million times before plays in the background.
GMM: Tell me a little bit about your fragment. You gave me just enough to be hooked. Is this a traditional ghost story, or can I expect to see something different than the expected horror tropes?
RJM: Without giving anything major away, I can tell you that this story contains a lot of psychological elements, as in psychological manifestations of memories, feelings, and the consequences of actions taken in the past by two protagonists. These characters will be put through a gauntlet of horrors specially designed for them as individuals with some elements that are objectively observable and experienced by both.
In short, yes, there will be ghosts, literally and figuratively. But would I feel comfortable calling this a traditional ghost story? Definitely not.
What I hope to accomplish with this first novel, From Out of the Black Fog, is an anthology series of novels with new characters experiencing something different in an alternate version of Monongahela, Pennsylvania.
GMM: Speaking of tropes, I see that you have a short story in a collection called Lustcraftian Horrors: Erotic Stories Inspired by H.P. Lovecraft. What is the title of your story in this collection? Lovecraftian Horror is familiar to most people who read horror fiction, but the concept of Lovecraft meets erotica is intriguing. Have you written other horror erotica? What challenges did you face working within that subgenre?
RJM: The title of this short story is In the Labyrinth, about a sex-addict seeking extra-marital thrills that ends up wrapped up with a cult that worships the perverse fertility goddess Shub-Niggurath. I imagine that Lovecraft is rolling over in his grave at the creation of this anthology, considering his suspected aversion to sex and women.
I have had other horror erotica published, one of which was Cornelia in Bon Appetit. The biggest challenge I've faced working within the subgenre is weaving a sex plot in with a horror plot. I've reconciled the issue with the perspective that sex is one of the most intimate and vulnerable places a person can put themselves in. If something horrifying happens as a result, that subverts something that's safe and pleasurable under normal circumstances. It's a real Junji Ito solution!
GMM: Cannibalism is a taboo subject that makes a lot of people uncomfortable, which is probably why it is a recurring theme in horror fiction. One of my favorite fictional cannibals is Hannibal Lecter, because he is a complex character that blurs the line between the horror of murder and our fascination with the macabre. Which cannibals, real or fictional, inspired your short story in Bon Appetit: Stories and Recipes for Human Consumption?
RJM: I can't say that I was inspired by a real or fictional cannibal to write this story. My inspiration for the cannibalistic antagonist in this story stemmed from the horrors of war. Doyle was a Vietnam War veteran who'd been separated from his unit during battle. He developed the taste for human flesh while surviving in the dense jungles of Vietnam until he was eventually rescued.
From Out of the Black Fog, A Novel by Ronald J. Murray
Lorne kept his eyes forward and high enough that he wouldn't walk face-first into anything. He watched the glow and fade of streetlights illuminate the sidewalk, and he listened to the occasional whish of cars that rolled along Main Street beside him. He didn't want to shift his vision elsewhere. He didn't want to look up again and into any window that he'd passed. He just wanted to keep going forward, keep walking to his car, which he'd parked at the lot at the Aquatorium.
He looked up. His skin crawled. It's like when your head knows there's something you shouldn't look at for too long or it'll really screw you up, you just keep staring. You can't help it.
He shut his eyes and turned his head. The snap motion was almost dizzying. He didn't care. Then, he looked again. He swallowed hard. His eyes locked to it this time. He'd heard of people seeing their dead loved ones in their peripheral vision or in the faces of others while they grieved. It started like that, earlier in the day, but it devolved to this disturbing level.
In every window that he passed, he saw Amber's face. Drained of color and cold, expressionless. Her empty eyes looked at him, unblinkingly. She followed him, seemingly crossed the alleyways he'd passed unseen, and appeared again in the dark windows of the next building. Over and over. When the window was large enough, he saw more than her face. He saw her hunched walk that kept pace with him. He saw her head kept turned nearly ninety-degrees to watch him.
No. He shut his eyes tight. He shook his head. No. He was cracking. That was it. That had to be it. He was having a psychotic break or something. You don't see shit like this if you're a normal person with a quiet normal life who loses a loved one just like everyone else in the world.
He turned his head. He opened his eyes. He began walking again. Someone passed him from behind, and he shoved his hands deeper into his jacket pockets. He drew his arms tighter against his body. The person went into Jim's Bar just ahead. The scent of fried food and cigarette smoke poured onto the street for a second.
Something thudded loudly beside him. Lorne jumped. A hand smacked glass beside him. Amber's face stared through the square window of a thick wooden door that led to the apartments above a shop. Her hand was still pressed against the pane. The doorknob began to rattle.
Adrenaline found his limbs. He jogged away. People, he thought. I need to get around other people. He tore the door to Jim's Bar open. A few patrons glared at him through a cloud of smoke illuminated by television screens. He took a few steps further inside and shot his eyes back and forth. He sucked a breath deep into his chest, and he hoped he wouldn't encounter anything to extraordinary here.
Next week, I'll be talking to EV Knight, so get excited. Do you have a fiction fragment to share? Send it my way at chellane@gmail.com. See you next week!
Fiction Fragments: Lucy A. Snyder
December 13, 2019 December 12, 2019 Michelle R. Lane	3 Comments
Last week, I talked with writer and film maker, Jeff Carroll, about Hip Hop horror and sci-fi fiction. This week, Girl Meets Monster welcomes Lucy A. Snyder. I met Lucy while earning my MFA in Writing Popular Fiction at Seton Hill University. She was my second mentor in the program. Her guidance, support, and dark sense of humor helped me finish writing my thesis novel and I couldn't be happier with the results.
Lucy A. Snyder is the Shirley Jackson Award-nominated and five-time Bram Stoker Award-winning author of over 100 published short stories and 12 books. Her most recent titles are the collection Garden of Eldritch Delights and the forthcoming novel The Girl With the Star-Stained Soul. Her writing has appeared in publications such as Asimov's Science Fiction, Apex Magazine, Nightmare Magazine, Pseudopod, Strange Horizons, and Best Horror of the Year. You can learn more about her at www.lucysnyder.com and you can follow her on Twitter at @LucyASnyder.
GMM: You mentioned that this fragment is from a novel that is being serialized at Eyedolon Magazine. Is the process of writing and submitting chapters of a novel as you complete them easier than submitting a completed novel? What is the writing process like? Are you typically a linear writer? What have you learned from this experience?
LAS: In some ways it's harder, but in some ways it's easier. One advantage to submitting a novel a chapter or two at a time is that I have to maintain good plot tension for every section I submit. It's a built-in way of avoiding middle-of-the-book narrative sag! Another advantage is that I get regular editorial feedback, so if something seems to be going off the rails I get questions about that and I can address potential problems early before they're entrenched.
A disadvantage is that I'm 75% a plotter, but 25% a discovery writer. One thing I discovered, ten chapters in, is that I needed another major character. Fortunately, I was able to introduce her in a way that would make sense to the readers who'd been following the serial, but I also went back and edited the existing novel to foreshadow her arrival so that she's a presence from the very first chapter.
I am typically a linear writer; I think writing a serial would be much harder if I were not. Or anyway I'd probably need to finish much more of the novel ahead of time. Right now, Broken Eye Books is pretty much publishing sections as I complete them, although I'll probably get further ahead in coming months because of the limitations of their publishing schedule.
GMM: What is a Lovecraftian space opera? Can you define the elements of this cross genre? Are there any tropes that readers of science fiction can easily identify? What makes a piece of fiction Lovecraftian?
LAS: It's pretty much what it says on the tin: it's a space opera with Lovecraftian themes.
Space opera, which has become more popular in recent years, is a science fictional narrative set in space (or on other planets) that focuses on adventure, epic battles, futuristic technology, etc. Star Wars is space opera, for instance. So it should be a fairly familiar subgenre to most readers!
Lovecraftian fiction refers to stories or novels that use elements from Lovecraft's fiction, particularly aspects of the Cthulhu mythos he created. Look for references to Elder Gods, tentacled horrors, madness-inducing knowledge, cosmic terrors, cults, fish gods, and general doom for mankind. Lovecraft's influences have worked their way into a whole lot of science fiction and horror. Stranger Things has some strong Lovecraftian themes in it, and The Shape of Water contains several nods to Lovecraft's work.
In my novel, the narrative takes place after the spawn of Azathoth (a deep-space deity in the Cthulhu mythos) invade Earth and wreak a variety of horrors. My protagonists, Joe and Bea, were physically and psychologically transformed by their experiences with the spawn, and they've been sent into space as part of a special mission to hunt down the spawn's hives on other planets and destroy them to eliminate any further threat to our planet.
GMM: Over the past several years, there has been quite a bit of controversy over whether or not we should be honoring the work of H. P. Lovecraft due to his racist beliefs. How do you approach a piece of fiction that mimics the work of Lovecraft and make it something wholly your own as someone who is very much against racism?
LAS: I've written a lot of stories and several novels that are inspired by and are in dialog with Lovecraft's fiction. That's a different thing than mimicking or honoring his fiction. I am often inspired by things that appall me or anger me.
Lovecraft's fiction, like Lovecraft himself, is complicated. Yes, there is a whole lot of xenophobia and racism — so much, in fact, that I've heard some critics claim that you can't separate xenophobia from Lovecraft's work. My take on that is that it's entirely possible to write a piece of Lovecraftian fiction that doesn't contain a trace of xenophobia. Or, you could write a narrative that addresses his racism directly and critically, as Victor LaValle does in The Ballad of Black Tom, which is a razor-sharp response to Lovecraft's most notoriously racist story ("The Horror at Red Hook"). But LaValle's novella also employs plenty of the kind of mind-blowing cosmic horror that made Lovecraft's work memorable in the first place.
Lovecraft himself openly borrowed a whole lot of ideas from other writers: Lord Dunsany, Ambrose Bierce, M.R. James, Arthur Machen, Algernon Blackwood, Edgar Allan Poe, and Robert Chambers (Ramsey Campbell's gonna argue with me about the influence Chambers had; regardless, Chambers' King in Yellow mythos has been absorbed into the Cthulhu mythos). Lovecraft in turn encouraged his writer friends to work with his worlds and he collaborated with other authors. So Lovecraftian fiction is much more than what Lovecraft himself wrote, and it's been that way from the beginning.
I think of Lovecraftian fiction as a microcosm of genre fiction as a whole. We can all point to classic horror or science fiction stories that are racist, ableist, misogynistic … or just plain horribly written. Those cringey parts are not a reason to abandon those genres. They're a reason to read the classics critically, identify why they're awful … but also why they captured people's imaginations in the first place. And then it's on us to take the good, engage critically with the bad, and use that as a jumping-off place to write even better stories and novels for our readers.
Excerpt from Blossoms Blackened Like Dead Stars, by Lucy A. Snyder
I rest my hand on the wrapped, dormant root ball as the autopiloted shuttle glides into the docking bay of the USS Flechette. The bay walls and deck are matte gray tarakium, same as all the other ships in the fleet. My dreams are turning this color. The shuttle lands with barely a bump, and after the clack of the pressure lock disengaging, the rear door slowly lowers with a hydraulic hiss. I unbuckle my flight harness and walk down the ramp, my booted steps light in the artificial gravity.
This is my first command. I feel a mix of pride and dread about being here, and I don't even properly know where "here" is, at least not in relation to Earth. There's only so much I can know about my own missions, just in case I'm compromised. Nobody tells me I can't ever be fully trusted, but distrust is baked into every scenario I or any of the other "enhanced" personnel are involved with. And frankly, I don't know if they can trust us, either.
It's chilly on the flight deck, which is fine. Extreme temperatures don't bother me nearly as much as they used to. The doctors tested me extensively after my transformation, and we discovered that I can handle temperatures of about 60°C without passing out and −10°C without suffering serious hypothermia or frostbite.
My spawn-hybridized cells produce a new polypeptide that acts as antifreeze in my blood and tissues. For one test, they entombed me in solid ice for over an hour. I couldn't move, couldn't breathe. Never lost consciousness thanks to my cells doing some dark-cycle chemosynthesis that produced enough oxygen to keep my brain working. If that sounds like a fun afternoon . . . it really, really wasn't. Cold that doesn't kill me still hurts plenty, and it turns out I'm more claustrophobic than I thought. But since there wasn't enough air to breathe, there wasn't enough air for me to start screaming, so I emerged from the frosty coffin with my dignity intact. I've gotten good at coping with whatever they do to me in the name of science or safety. I'll certainly encounter worse out in space with the spawn; there is only so much evil that the human mind is capable of imagining.
There's concern that the polypeptide might build up and damage my internal organs over time, but the only thing to do about it is wait and see. Nobody has any real idea of what condition my body will be in even a year from now. The unspoken worry, obviously, is that I'll transform into a spawn and kill everyone around me. Betray everyone in the name of Azathoth.
Of course, my spore-laden breath means I'm likely to kill people purely by accident. But I'm far too useful to lock away in a research lab, and so far, I've passed all the psych evals. The brass decided to give me command of my own small ship, point me at the spawn, and hope for the best.
Eight android drones stand at attention on the flight deck, patiently waiting for me. They're all the same drab, clay-white Boston Dynamics Xenophon model, clunky looking but dexterous. Each has a differently colored stripe around their torso so people can tell them apart when they're turned around. Some have metallic colors, and I'm guessing that they hold mission-critical roles. Their human pilots' faces are mapped onto the curved tarakium screens on their heads. The crewmembers are stationed light years away on warships or stations, linked to the drones by the new quantum paired network. They're certain to lose their connections during hyperspace jumps, and I'll probably never know where any of my crew actually are.
The irony of my command is that my crew will always know more about the brass's plans than I do. One of them—I don't know who—is authorized to take over the ship the moment I show signs of compromise. The situation would probably frustrate a lot of other commanders, but I never expected to be in charge of a ship. I had to take an alarmingly compressed command school curriculum in between the godawful medical tests. Honestly, I'm glad someone here is qualified to run things in case shit gets real. I'd have a raging case of impostor syndrome if I'd deliberately chosen any of this.
A human lieutenant commander stands behind the line of drones. My sole crewmate during jumps. I blink. At first glance, I thought he was wearing some kind of dark protective gear, but he isn't. He towers a head above the androids, and his skin is crocodile rough, blackened as if he's been charred by a fire. Is he even human? He's wearing a short-sleeved uniform, and his arms, neck, and face look as if he's been torn apart and put back together with steel staples.
As I stare, trying to make sense of what I'm seeing, recognition dawns. "Joe?"
His grisly face splits into a smile. "Yep, it's me. Good to see you, Bea."
"What happened?" I blurt before I can stop myself.
He gives a laugh like stones grinding together. "Long story. Let me introduce you to your Alpha crew."
Do you have a fragment you're dying to share with the world? Send it my way at chellane@gmail.com. See you next week!


Spider-Man: Into the Spider-Verse was the best Spider-Man movie since Sam Raimi directed them. There are plenty of Easter eggs and background jokes to get, and sophisticated animation to freeze frame, but mainly you'll just want to watch this movie over and over again. On Blu-ray you get a whole new version to watch too.
Alternate Universe Mode runs 2 hours 23 minutes in total as it adds deleted scenes and the Spider-Ham short into the movie. The deleted scenes in rough animatic form actually suits the alternate universe nature of the film. It's no different than Spider-Man Noir.
There's a hilarious Will Gluck joke that's also so meta about a world in which we are watching a spider-man movie on blu-Ray. Lord and Miller totally got him back for Moonquake Lake! The forest chase could've actually gone on longer, and there are a few new beats in the fight at Aunt May's house too.
This is a beautiful looking movie. The comic book colors are super bright on Blu-Ray and the textures of the pages really show through. The city is something else with smooth dark slick streets and bright colorful lights all around the buildings. The forest backdrop is stunning too.
A slew of "Making of…" bonus features are informative about the techniques used without overstaying their welcome. They include everyone. Seeing Nicolas Cage record his lines is worth it. Animation reference videos are interesting and of course lot's of rough animatic on the way to the complete layered look. The Spider-Ham short Caught in a Ham is like a meta new update of the classic short Duck Amuck.
Phil Lord, Chris Miller, Bob Perischetti, Rodney Rothman and Peter Ramsey give a fun commentary. They're self-deprecating and informative about animation techniques and storytelling, including story points they decided against. Someone added most of this to IMDB trivia already so you'll recognize those bits. The way this quintet irreverently points out Easter eggs and mocks their own mistakes (which all got rectified during production) makes it way more fun to hear them tell it. They make the same joke on the commentary track that's in the Will Gluck scene so it must be a running joke they have in real life.


holster options for a S&W Sigma .40, suggestions?
Thread: holster options for a S&W Sigma .40, suggestions?
I'm wondering who owns a Blackhawk Serpa Lvl 2 Sportster holster and has an opinion to offer on it? I'm looking at one for my new Sigma SD40 and for $33.99, I'm kind of curious as to the quality and the level of retention. Can anyone help me out before I make a decision? This is basically the same gun as the S&W SW40, if anyone has one... If you have any suggestions on other holsters as well, I would appreciate it.
I'm planning on taking it small game hunting, and I really rough it sometimes, so retention is a must. But I also prefer sturdier holsters. Canvass just won't do it because I've ripped a few of the cheaper blackhawk sportsters (the $12 models at walmart) just climbing trees.
I have the S&W Sigma 9VE, which I still think is basically the same frame and slide and so on.... I have a Blackhawk Serpa holster with the trigger finger unlock retention (don't exactly know what model....). I absolutely love these holsters. I also have one for my XD 40 SC.
The only thing I did, because I use the paddle attachments, is modify the little belt hooks that are on it, to make them easier to remove from your belt. If you want to know or see how I did that, let me know and I can show you.


text:
__author__ = 'Matt David'

from ecdsa.util import sigencode_der
from mock import patch, Mock, MagicMock
from test import AddressimoTestCase

from addressimo.util import *

TEST_PRIVKEY = '9d5a020344dd6dffc8a79e9c0bce8148ab0bce08162b6a44fec40cb113e16647'
TEST_PUBKEY = 'ac79cd6b0ac5f2a6234996595cb2d91fceaa0b9d9a6495f12f1161c074587bd19ae86928bddea635c930c09ea9c7de1a6a9c468f9afd18fbaeed45d09564ded6'

class Test_create_json_response(AddressimoTestCase):

    def setUp(self):

        self.patcher1 = patch('addressimo.util.request')
        self.patcher2 = patch('addressimo.util.current_app')
        self.patcher3 = patch('addressimo.util.Response')

        self.mockRequest = self.patcher1.start()
        self.mockCurrentApp = self.patcher2.start()
        self.mockResponse = self.patcher3.start()

        # Setup Referrer
        self.mockRequest.referrer = 'http://127.0.0.1'
        self.mockRequest.url_rule.rule = '/mockrule'

        # Setup App
        rule_obj = Mock()
        rule_obj.rule = '/mockrule'
        rule_obj.methods = ['POST', 'PUT', 'OPTIONS']

        app_obj = Mock()
        app_obj.url_map = Mock()
        app_obj.url_map._rules = [rule_obj]

        self.mockCurrentApp._get_current_object.return_value = app_obj

    def test_goright(self):

        # Run create_json_response
        ret_val = create_json_response(success=True, message='test message', data={'key':'value'}, headers={"X-Random":"w00t"})

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('{"message": "test message", "key": "value", "success": true}', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('application/json', respargs['mimetype'])
        self.assertEqual('X-Identity, X-Signature, X-Requested-With, accept, content-type, Content-Transfer-Encoding', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])
        self.assertEqual('w00t', respargs['headers']['X-Random'])

    def test_no_matching_methods(self):

        # Setup Testcase
        self.mockCurrentApp._get_current_object.return_value.url_map._rules = []

        # Run create_json_response
        ret_val = create_json_response(success=True, message='test message', data={'key':'value'})

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('{"message": "test message", "key": "value", "success": true}', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('application/json', respargs['mimetype'])
        self.assertEqual('X-Identity, X-Signature, X-Requested-With, accept, content-type, Content-Transfer-Encoding', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

    def test_open_origin_for_now_TODO(self):

        # Setup Testcase
        self.mockRequest.referrer = 'http://google.com'

        # Run create_json_response
        ret_val = create_json_response(success=True, message='test message', data={'key':'value'})

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('{"message": "test message", "key": "value", "success": true}', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('application/json', respargs['mimetype'])
        self.assertEqual('X-Identity, X-Signature, X-Requested-With, accept, content-type, Content-Transfer-Encoding', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertIn('Access-Control-Allow-Origin', respargs['headers'])
        self.assertEqual('*', respargs['headers']['Access-Control-Allow-Origin'])

    def test_message_message_success_override(self):

        # Run create_json_response
        ret_val = create_json_response(success=True, message='test message', data={'message':'value', 'success': False, 'key': 'value'})

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('{"message": "test message", "key": "value", "success": true}', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('application/json', respargs['mimetype'])
        self.assertEqual('X-Identity, X-Signature, X-Requested-With, accept, content-type, Content-Transfer-Encoding', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

    def test_status_204(self):

        # Run create_json_response
        ret_val = create_json_response(success=True, message='test message', data={'key':'value'}, status=204)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertIsNone(respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(204, respargs['status'])
        self.assertEqual('application/json', respargs['mimetype'])
        self.assertEqual('X-Identity, X-Signature, X-Requested-With, accept, content-type, Content-Transfer-Encoding', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

# TODO: Finish this up...placeholder
class Test_create_bip72_response(AddressimoTestCase):

    def setUp(self):

        self.patcher1 = patch('addressimo.util.request')
        self.patcher2 = patch('addressimo.util.current_app')
        self.patcher3 = patch('addressimo.util.Response')

        self.mockRequest = self.patcher1.start()
        self.mockCurrentApp = self.patcher2.start()
        self.mockResponse = self.patcher3.start()

        # Setup Referrer
        self.mockRequest.referrer = 'http://127.0.0.1'
        self.mockRequest.url_rule.rule = '/mockrule'

        # Setup App
        rule_obj = Mock()
        rule_obj.rule = '/mockrule'
        rule_obj.methods = ['POST', 'PUT', 'OPTIONS']

        app_obj = Mock()
        app_obj.url_map = Mock()
        app_obj.url_map._rules = [rule_obj]

        self.mockCurrentApp._get_current_object.return_value = app_obj

        self.mockWalletAddress = '1kjhdslkjghlsfdgkjhsdflgkhj'
        self.mockAmount = '75.4'
        self.mockPaymentRequestURL = 'https://site_url/address/id/resolve?bip70=true&amount=75.4'

    def test_goright(self):

        # Run create_bip72_response
        ret_val = create_bip72_response(self.mockWalletAddress, self.mockAmount, self.mockPaymentRequestURL)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('bitcoin:1kjhdslkjghlsfdgkjhsdflgkhj?amount=75.4&r=https%3A%2F%2Fsite_url%2Faddress%2Fid%2Fresolve%3Fbip70%3Dtrue%26amount%3D75.4', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('text/plain', respargs['mimetype'])
        self.assertEqual('X-Requested-With, accept, content-type', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

    def test_no_matching_methods(self):

        # Setup Testcase
        self.mockCurrentApp._get_current_object.return_value.url_map._rules = []

        # Run create_bip72_response
        ret_val = create_bip72_response(self.mockWalletAddress, self.mockAmount, self.mockPaymentRequestURL)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('bitcoin:1kjhdslkjghlsfdgkjhsdflgkhj?amount=75.4&r=https%3A%2F%2Fsite_url%2Faddress%2Fid%2Fresolve%3Fbip70%3Dtrue%26amount%3D75.4', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('text/plain', respargs['mimetype'])
        self.assertEqual('X-Requested-With, accept, content-type', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

    def test_open_origin_for_now_TODO(self):

        # Setup Testcase
        self.mockRequest.referrer = 'http://google.com'

        # Run create_bip72_response
        ret_val = create_bip72_response(self.mockWalletAddress, self.mockAmount, self.mockPaymentRequestURL)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('bitcoin:1kjhdslkjghlsfdgkjhsdflgkhj?amount=75.4&r=https%3A%2F%2Fsite_url%2Faddress%2Fid%2Fresolve%3Fbip70%3Dtrue%26amount%3D75.4', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('text/plain', respargs['mimetype'])
        self.assertEqual('X-Requested-With, accept, content-type', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertNotIn('Access-Control-Allow-Origin', respargs['headers'])

    def test_no_wallet_address(self):

        # Run create_bip72_response
        ret_val = create_bip72_response(None, self.mockAmount, self.mockPaymentRequestURL)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('bitcoin:?amount=75.4&r=https%3A%2F%2Fsite_url%2Faddress%2Fid%2Fresolve%3Fbip70%3Dtrue%26amount%3D75.4', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('text/plain', respargs['mimetype'])
        self.assertEqual('X-Requested-With, accept, content-type', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

    def test_no_amount(self):

        # Run create_bip72_response
        ret_val = create_bip72_response(self.mockWalletAddress, None, self.mockPaymentRequestURL)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('bitcoin:1kjhdslkjghlsfdgkjhsdflgkhj?r=https%3A%2F%2Fsite_url%2Faddress%2Fid%2Fresolve%3Fbip70%3Dtrue%26amount%3D75.4', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('text/plain', respargs['mimetype'])
        self.assertEqual('X-Requested-With, accept, content-type', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

    def test_no_payment_request_url(self):

        # Run create_bip72_response
        ret_val = create_bip72_response(self.mockWalletAddress, self.mockAmount)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('bitcoin:1kjhdslkjghlsfdgkjhsdflgkhj?amount=75.4', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('text/plain', respargs['mimetype'])
        self.assertEqual('X-Requested-With, accept, content-type', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

    def test_only_payment_request_url(self):

        # Run create_bip72_response
        ret_val = create_bip72_response(None, None, self.mockPaymentRequestURL)

        # Verify Response Data
        respdata = self.mockResponse.call_args[0]
        self.assertEqual('bitcoin:?r=https%3A%2F%2Fsite_url%2Faddress%2Fid%2Fresolve%3Fbip70%3Dtrue%26amount%3D75.4', respdata[0])

        # Verify Response Arguments
        respargs = self.mockResponse.call_args[1]
        self.assertEqual(200, respargs['status'])
        self.assertEqual('text/plain', respargs['mimetype'])
        self.assertEqual('X-Requested-With, accept, content-type', respargs['headers']['Access-Control-Allow-Headers'])
        self.assertEqual('PUT, POST, OPTIONS', respargs['headers']['Access-Control-Allow-Methods'])
        self.assertEqual('http://127.0.0.1', respargs['headers']['Access-Control-Allow-Origin'])

class TestGetId(AddressimoTestCase):

    def setUp(self):

        self.patcher1 = patch('addressimo.util.request')
        self.mockRequest = self.patcher1.start()
        self.mockRequest.url = 'http://addressimo.com/address/0123456789abcdef/sf'

    def test_go_right(self):

        ret_val = get_id()
        self.assertEqual('0123456789abcdef', ret_val)

    def test_no_id(self):

        self.mockRequest.url = 'http://addressimo.com/sf'
        ret_val = get_id()
        self.assertIsNone(ret_val)

    def test_paymentrequest(self):

        self.mockRequest.url = 'http://addressimo.com/paymentrequst/0123456789abcdef'
        ret_val = get_id()
        self.assertEqual('0123456789abcdef', ret_val)

# NOTE: Since we're also verifying the functionality of the ECDSA library and args passed, we cannot
# mock the VerifyingKey itself, just the way it's created
class TestRequiresValidSignature(AddressimoTestCase):

    def setUp(self):

        self.patcher1 = patch('addressimo.util.get_id')
        self.patcher2 = patch('addressimo.util.create_json_response')
        self.patcher3 = patch('addressimo.util.request')
        self.patcher4 = patch('addressimo.util.VerifyingKey', wraps=VerifyingKey)

        self.mockGetId = self.patcher1.start()
        self.mockCreateJsonResponse = self.patcher2.start()
        self.mockRequest = self.patcher3.start()
        self.mockVerifyingKey = self.patcher4.start()

        self.mockRequest.url = 'http://addressimo.com/address/0123456789abcdef/sf'
        self.mockRequest.data = 'this is some crazy random data, dude! you know you gotta love this!'

        from ecdsa.keys import SigningKey
        from ecdsa.curves import SECP256k1

        self.sk = SigningKey.from_string(TEST_PRIVKEY.decode('hex'), curve=SECP256k1)
        sig = self.sk.sign('GETaddressimo.com/address/0123456789abcdef/sfthis is some crazy random data, dude! you know you gotta love this!', hashfunc=sha256, sigencode=sigencode_der)

        self.mockRequest.headers = {
            'x-identity': VerifyingKey.from_string(TEST_PUBKEY.decode('hex'), curve=curves.SECP256k1).to_der().encode('hex'),
            'x-signature': sig.encode('hex')
        }
        self.mockRequest.method = 'GET'
        self.mockRequest.path = '/address/0123456789abcdef/sf'

        self.mockIdObj = Mock()
        self.mockIdObj.auth_public_key = TEST_PUBKEY

        # Mock the decorator function -> We run self.decorated
        self.mock_func = MagicMock(return_value='fake_response')
        self.mock_func.__name__ = 'mock_func'
        self.decorated = requires_valid_signature(self.mock_func)

    def test_go_right(self):

        self.decorated()

        self.assertEqual(1, self.mockGetId.call_count)
        self.assertEqual(1, self.mockVerifyingKey.from_der.call_count)
        self.assertEqual(self.mockRequest.headers['x-identity'].decode('hex'), self.mockVerifyingKey.from_der.call_args[0][0])
        self.assertEqual(1, self.mock_func.call_count)
        self.assertEqual(0, self.mockCreateJsonResponse.call_count)

    def test_missing_id(self):

        self.mockGetId.return_value = None

        self.decorated()

        self.assertEqual(1, self.mockGetId.call_count)
        self.assertEqual(1, self.mockVerifyingKey.from_der.call_count)
        self.assertEqual(self.mockRequest.headers['x-identity'].decode('hex'), self.mockVerifyingKey.from_der.call_args[0][0])
        self.assertEqual(1, self.mock_func.call_count)
        self.assertEqual(0, self.mockCreateJsonResponse.call_count)

    def test_missing_sig(self):

        del self.mockRequest.headers['x-signature']

        self.decorated()

        self.assertEqual(1, self.mockGetId.call_count)
        self.assertEqual(0, self.mockVerifyingKey.from_der.call_count)
        self.assertEqual(0, self.mock_func.call_count)
        self.assertEqual(1, self.mockCreateJsonResponse.call_count)
        self.assertFalse(self.mockCreateJsonResponse.call_args[0][0])
        self.assertEqual('Missing x-signature header', self.mockCreateJsonResponse.call_args[0][1])
        self.assertEqual(400, self.mockCreateJsonResponse.call_args[0][2])

    def test_verifying_key_creation_exception(self):

        self.mockVerifyingKey.from_der.side_effect = UnexpectedDER()

        self.decorated()

        self.assertEqual(1, self.mockGetId.call_count)
        self.assertEqual(1, self.mockVerifyingKey.from_der.call_count)
        self.assertEqual(self.mockRequest.headers['x-identity'].decode('hex'), self.mockVerifyingKey.from_der.call_args[0][0])
        self.assertEqual(0, self.mock_func.call_count)
        self.assertEqual(1, self.mockCreateJsonResponse.call_count)
        self.assertFalse(self.mockCreateJsonResponse.call_args[0][0])
        self.assertEqual('Bad Public Key Format', self.mockCreateJsonResponse.call_args[0][1])
        self.assertEqual(400, self.mockCreateJsonResponse.call_args[0][2])

    def test_bad_signature(self):

        self.mockRequest.headers['x-signature'] = self.sk.sign('NOT WORKING' + self.mockRequest.url + self.mockRequest.data, hashfunc=sha256, sigencode=sigencode_der).encode('hex')

        self.decorated()

        self.assertEqual(1, self.mockGetId.call_count)
        self.assertEqual(1, self.mockVerifyingKey.from_der.call_count)
        self.assertEqual(self.mockRequest.headers['x-identity'].decode('hex'), self.mockVerifyingKey.from_der.call_args[0][0])
        self.assertEqual(0, self.mock_func.call_count)
        self.assertEqual(1, self.mockCreateJsonResponse.call_count)
        self.assertFalse(self.mockCreateJsonResponse.call_args[0][0])
        self.assertEqual('Signature Verification Error', self.mockCreateJsonResponse.call_args[0][1])
        self.assertEqual(401, self.mockCreateJsonResponse.call_args[0][2])

    def test_bad_digest_error(self):

        self.mockVerifyingKey.from_der.return_value.verify.side_effect = BadDigestError()

        self.decorated()

        self.assertEqual(1, self.mockGetId.call_count)
        self.assertEqual(1, self.mockVerifyingKey.from_der.call_count)
        self.assertEqual(self.mockRequest.headers['x-identity'].decode('hex'), self.mockVerifyingKey.from_der.call_args[0][0])
        self.assertEqual(0, self.mock_func.call_count)
        self.assertEqual(1, self.mockCreateJsonResponse.call_count)
        self.assertFalse(self.mockCreateJsonResponse.call_args[0][0])
        self.assertEqual('Signature Verification Error', self.mockCreateJsonResponse.call_args[0][1])
        self.assertEqual(401, self.mockCreateJsonResponse.call_args[0][2])

    def test_bad_signature_error(self):

        self.mockVerifyingKey.from_der.return_value.verify.side_effect = BadSignatureError()

        self.decorated()

        self.assertEqual(1, self.mockGetId.call_count)
        self.assertEqual(1, self.mockVerifyingKey.from_der.call_count)
        self.assertEqual(self.mockRequest.headers['x-identity'].decode('hex'), self.mockVerifyingKey.from_der.call_args[0][0])
        self.assertEqual(0, self.mock_func.call_count)
        self.assertEqual(1, self.mockCreateJsonResponse.call_count)
        self.assertFalse(self.mockCreateJsonResponse.call_args[0][0])
        self.assertEqual('Signature Verification Error', self.mockCreateJsonResponse.call_args[0][1])
        self.assertEqual(401, self.mockCreateJsonResponse.call_args[0][2])

class TestSetupLogging(AddressimoTestCase):

    def setUp(self):
        self.patcher1 = patch('addressimo.util.LogUtil.loggers')
        self.patcher2 = patch('addressimo.util.os')
        self.patcher3 = patch('addressimo.util.logging')

        self.mockLoggers = self.patcher1.start()
        self.mockOS = self.patcher2.start()
        self.mockLogging = self.patcher3.start()

    def test_app_name_exists(self):

        LogUtil.setup_logging(app_name='my_test_app')

        self.assertEqual(self.mockLoggers.get.call_count, 2)
        self.assertFalse(self.mockOS.path.exists.called)
        self.assertEqual(self.mockLoggers.get.call_args_list[1][0][0], 'my_test_app')

    def test_log_path_exists(self):
        self.mockLoggers.get.return_value = None
        self.mockOS.path.exists.return_value = True

        LogUtil.setup_logging()

        self.assertEqual(self.mockLoggers.get.call_count, 1)
        self.assertTrue(self.mockOS.path.exists.called)
        self.assertFalse(self.mockOS.mkdir.called)
        self.assertEqual(self.mockOS.path.abspath.call_args_list[0][0][0], '/var/log/addressimo')

        self.assertEqual(1, self.mockLogging.getLogger.return_value.addFilter.call_count)
        self.assertTrue(isinstance(self.mockLogging.getLogger.return_value.addFilter.call_args[0][0], ContextFilter))

    def test_log_path_does_not_exist(self):
        self.mockLoggers.get.return_value = None
        self.mockOS.path.exists.return_value = False

        LogUtil.setup_logging()

        self.assertEqual(self.mockLoggers.get.call_count, 1)
        self.assertTrue(self.mockOS.path.exists.called)
        self.assertTrue(self.mockOS.mkdir.called)
        self.assertEqual(self.mockOS.path.abspath.call_args_list[0][0][0], '/var/log/addressimo')

        self.assertEqual(1, self.mockLogging.getLogger.return_value.addFilter.call_count)
        self.assertTrue(isinstance(self.mockLogging.getLogger.return_value.addFilter.call_args[0][0], ContextFilter))

    def test_log_to_file_false(self):
        self.mockLoggers.get.return_value = None

        LogUtil.setup_logging(log_to_file=False)

        self.assertEqual(self.mockLogging.StreamHandler.call_args_list[0][0][0].name, '<stdout>')
        self.assertTrue('handlers' not in dir(self.mockLogging))

        self.assertEqual(1, self.mockLogging.getLogger.return_value.addFilter.call_count)
        self.assertTrue(isinstance(self.mockLogging.getLogger.return_value.addFilter.call_args[0][0], ContextFilter))

    def test_log_to_file_true(self):
        self.mockLoggers.get.return_value = None
        LogUtil.setup_logging(log_to_file=True)

        self.assertEqual(self.mockLogging.StreamHandler.call_args_list[0][0][0].name, '<stdout>')
        self.assertEqual(self.mockLogging.handlers.TimedRotatingFileHandler.call_args_list[0][0][0], '/var/log/addressimo/app.log')

        self.assertEqual(1, self.mockLogging.getLogger.return_value.addFilter.call_count)
        self.assertTrue(isinstance(self.mockLogging.getLogger.return_value.addFilter.call_args[0][0], ContextFilter))

redpajama_set_name: RedPajamaGithub


text:
Get Woke, Go Broke
Gillette's insulting social justice-themed ads lead to a massive loss. Plus other items from hither and yon.
Epov Dmitry/Shutterstock.com
Are you interested in some social justice? Here's some …
"P&G reported a net loss of about $5.24 billion, or $2.12 per share, for the quarter ended June 30, due to an $8 billion non-cash writedown of Gillette. For the same period last year, P&G's net income was $1.89 billion, or 72 cents per share," Reuters reports.
That's one hell of a writedown, isn't it? Remember back in January when Gillette launched their ad campaign essentially accusing their customers of "toxic masculinity"?
This space had something to say on the topic you might not have heard about elsewhere:
One thing I will add is the decision-maker who opted to embark on the unwise course of insulting half the razor company's customers by accusing them of substandard character is a man named Pankaj Bhalla, who has been the brand manager for Gillette and Venus, the Procter & Gamble company marketing razors for women.
Bhalla is, as you might notice from his name, of Indian extraction and was in born and raised in that country. He didn't attend college in the United States — Bhalla received a baccalaureate degree in business and managerial economics from the Indian Institute of Management and Commerce, Hyderabad, and then earned a post-graduate degree in brand management from Mudra Institute of Communications, Ahmedabad. He then held several corporate posts upon entering the workforce, including an assistant brand manager position at Hero Honda Motors, Ltd. of India, Brand Manager, Gillette & Duracell — Middle East, located in Dubai, and Senior Brand Manager, Oral Care — Central, Eastern Europe, Middle East & Africa, located in Geneva, before moving to the United States to work for Procter & Gamble's Oral Care health franchise in Cincinnati in 2012.
You read that right. This man is not from the United States and has been working in brand management in this market for less than seven years, and he greenlit a commercial spot which assailed American men as boorish and barbarian. And prior to 10 years ago he'd spent his entire life in India and the Middle East.
Now how does it feel to be lectured to about your toxic masculinity by Pankaj Bhalla?
So far as we know Bhalla still has a job, which is somewhat surprising.
The other day one of the more underrated movies of the past 20 years or so, Elizabethtown, was back on one of the movie channels. It stars Orlando Bloom as a young designer of athletic footwear who debuts an ahead-of-its-time shoe that bombs badly in the marketplace and loses the company he works for, which is Nike in all but name, a billion dollars.
This, naturally, results in his job vanishing along with the company's capital, and — his career in ruins — Bloom's character plunges into a deep depression and contemplates suicide before he's rescued, ironically enough, by the death of his father and the need to reconnect with his family for the funeral. What results is a heartwarming, soulful tale of redemption.
Pankaj Bhalla lost his company $8 billion. If ever somebody needed a real-life re-enactment of Elizabethtown, it's this guy. Perhaps Bollywood could do the honors, complete with some line dancing.
There is nothing good which can be said about those two mass shootings over the weekend in El Paso and Dayton.
At this point it's clear we have a mental health crisis in this country specifically affecting a particular age group in disproportionate numbers, and it's time to re-evaluate what's being done to these kids that so many of them are so badly off track. Whether it's parenting, medication, school environments, entertainment, or culture — all of it needs to be on the table for discussion.
Instead, it all comes back to guns. A gun is a tool. To this date the worst example of a mass killing along the lines of what happened in El Paso and Dayton didn't even involve a gun but rather a bomb. The people demanding gun control every time one of these incidents happens never seem interested in talking about why someone wants to use a gun for evil rather than focusing on the tool.
And they need to be asked why. Because it's clear that unless you fix the problem of the maladjusted human who has fallen into such horrific evil you will not prevent atrocities like we saw over the weekend. And the numbers of those maladjusted, evil humans continue to grow.
Oh — and pray for Beto O'Rourke, that he might see the evil of his ways.
So Mario Lopez, the host of Extra, said this …
Look, I'm never one to tell anyone how to parent their kids, obviously, and I think if you come from a place of love, you really can't go wrong. But at the same time, my God, if you're three years old and you're saying you're feeling a certain way or you think you're a boy or a girl or whatever the case may be…. I just think it's dangerous as a parent to make that determination then — "Okay, well then you're going to be a boy or a girl," whatever the case may be. It's sort of alarming and my gosh, I just think about the repercussions later on.
… and it was controversial?
Lopez ended up retracting his "transphobic" statement a few days later, because you must retract such statements or you can't work in Hollywood.
I think the market is ready for a competing institution with Hollywood. I think the advent of streaming services creates a delivery mechanism for new players in the entertainment market to swiftly build mass audiences, just like the innovations in self-publishing are sweeping away publishing houses as gatekeepers deciding what books we can read.
I think the day is coming when the Mario Lopezes of the world won't have to kowtow to the moral degenerates who run Hollywood and can say what they believe without losing their jobs.
It's coming, and it can't come fast enough. A race is developing — the Left is trying to shut down our freedom of expression before we can throw off their control of the culture. Nothing less than the future of Western civilization might be at stake.
The Unbearable Lightness of Marianne
I Am the Anonymous Whistleblower
Ending School Violence
by Mark Hyman
'And I Solemnly Promise You'
by William Murchison
The Nation's Pulse
Looking for Something Manly to Do?
by Larry Alex Taunton
The Party of the Foul Mouths


text:
Kolumna Wężowa (stgr. Τρικάρηνος Ὄφις, tur. Yılanlı Sütun) – kolumna na Hipodromie w Stambule, odlana w 479 p.n.e. i przywieziona przez Konstantyna Wielkiego ze świątyni Apollina w Delfach w 324 n.e.

Monument symbolizował zwycięstwo greckich polis nad Persami w bitwie pod Platejami. Początkowo miał postać trzech węży splecionych ze sobą, unoszących na głowach złotą urnę (wazę) o średnicy 2 metrów. Urna zaginęła jeszcze przed przeniesieniem kolumny do Konstantynopola, natomiast w czasach Imperium Osmańskiego, w XVII wieku zniszczono głowy węży. Jedna z nich znajduje się w Muzeum Archeologicznym w Stambule, druga w Muzeum Brytyjskim w Londynie.

Kolumna miała wysokość 8 metrów, obecnie mierzy 5 metrów. W czasach bizantyjskich wykorzystywano ją jako fontannę. Brązowy trzon kolumny składa się z 29 zwojów.

Monument wspominany przez Herodota, Tukidydesa, Demostenesa, Diodoria Sycylijskiego, Pauzaniasza, Korneliusza Neposa oraz Plutarcha.

Przypisy

Linki zewnętrzne

Konstantynopol
Architektura bizantyńska w Turcji
Zabytki Stambułu
Kolumny


text:
package io.perbone.udao.query;

import static io.perbone.udao.query.Expression.ExpressionType.AND;
import static io.perbone.udao.query.Expression.ExpressionType.CLOSE_PARENTHESIS;
import static io.perbone.udao.query.Expression.ExpressionType.OPEN_PARENTHESIS;
import static io.perbone.udao.query.Expression.ExpressionType.OR;

import java.util.ArrayList;
import java.util.List;

import io.perbone.toolbox.collection.Pair;

/**
 * Represents storage access query.
 *

 * Can be used for any storage access operation as a filter for the targets.
 *

 * This is a stateful object with one way through creation. With you made mistakes just trash it and
 * create another one.
 *
 * @author Paulo Perbone <pauloperbone@yahoo.com>
 * @since 0.1.0
 */
public final class Query
{
    private final List<Expression> where = new ArrayList<Expression>();

    private final List<Pair<String, Boolean>> order = new ArrayList<Pair<String, Boolean>>();

    private Long limit = null;

    private Long offset = null;

    private Expression current = null;

    /**
     * Open parenthesis.
     *
     * @return this query object
     */
    public Query op()
    {
        where.add(new Expression(OPEN_PARENTHESIS));

        return this;
    }

    /**
     * Close parenthesis.
     *
     * @return this query object
     */
    public Query cp()
    {
        where.add(new Expression(CLOSE_PARENTHESIS));

        return this;
    }

    public Query and()
    {
        checkCurrentNull();

        where.add(new Expression(AND));

        return this;
    }

    public Query between(Object begin, Object end) throws IllegalStateException, IllegalArgumentException
    {
        checkValue(begin);
        checkValue(end);
        checkCurrent();

        current.between(begin, end);
        where.add(current);
        current = null;

        return this;
    }

    public Query element(String name) throws IllegalStateException, IllegalArgumentException
    {
        checkCurrentNull();

        // if (!StringValidations.isValid(name))
        // throw new IllegalArgumentException("Invalid element name");

        current = new Expression(name);

        return this;
    }

    public Query equal(Object value) throws IllegalStateException, IllegalArgumentException
    {
        checkValue(value);
        checkCurrent();

        current.equal(value);
        where.add(current);
        current = null;

        return this;
    }

    public Query greater(Object value) throws IllegalStateException, IllegalArgumentException
    {
        checkValue(value);
        checkCurrent();

        current.greater(value);
        where.add(current);
        current = null;

        return this;
    }

    public Query greaterEqual(Object value) throws IllegalStateException, IllegalArgumentException
    {
        checkValue(value);
        checkCurrent();

        current.greaterEqual(value);
        where.add(current);
        current = null;

        return this;
    }

    public boolean hasLimit()
    {
        return limit != null;
    }

    public boolean hasOffset()
    {
        return offset != null;
    }

    public boolean hasOrder()
    {
        return !order.isEmpty();
    }

    public boolean hasWhere()
    {
        return !where.isEmpty();
    }

    public Query in(Object... values) throws IllegalStateException, IllegalArgumentException
    {
        checkCurrent();

        if (values.length == 0)
            throw new IllegalArgumentException("Element values cannot be empty");

        current.in(values);
        where.add(current);
        current = null;

        return this;
    }

    public Query isNotNull()
    {
        checkCurrent();

        current.isNotNull();
        where.add(current);
        current = null;

        return this;
    }

    public Query isNull()
    {
        checkCurrent();

        current.isNull();
        where.add(current);
        current = null;

        return this;
    }

    public Query less(Object value) throws IllegalStateException, IllegalArgumentException
    {
        checkValue(value);
        checkCurrent();

        current.less(value);
        where.add(current);
        current = null;

        return this;
    }

    public Query lessEqual(Object value) throws IllegalStateException, IllegalArgumentException
    {
        checkValue(value);
        checkCurrent();

        current.lessEqual(value);
        where.add(current);
        current = null;

        return this;
    }

    public Long limit()
    {
        return limit;
    }

    public Query limit(long value) throws IllegalStateException, IllegalArgumentException
    {
        if (value < 0)
            throw new IllegalArgumentException("Limit cannot be negative");

        limit = value;
        return this;
    }

    public Query not()
    {
        checkCurrent();

        current.negate();

        return this;
    }

    public Long offset()
    {
        return offset;
    }

    public Query offset(long value) throws IllegalStateException, IllegalArgumentException
    {
        if (value < 0)
            throw new IllegalArgumentException("Offset cannot be negative");

        offset = value;
        return this;
    }

    public Query or()
    {
        checkCurrentNull();

        where.add(new Expression(OR));

        return this;
    }

    public List<Pair<String, Boolean>> order()
    {
        return order;
    }

    public Query order(String... names) throws IllegalStateException, IllegalArgumentException
    {
        if (names.length == 0)
            throw new IllegalArgumentException("Names cannot be empty");

        order.clear();

        for (String n : names)
        {
            String[] values = n.split(" ");
            Pair<String, Boolean> pair = new Pair<String, Boolean>(values[0],
                    values.length == 1 ? true : "ASC".equalsIgnoreCase(values[1]));
            order.add(pair);
        }

        return this;
    }

    public List<Expression> where()
    {
        return where;
    }

    private void checkCurrent() throws IllegalStateException
    {
        if (current == null)
            throw new IllegalStateException("Invalid syntax; elemente name should be first");
    }

    private void checkCurrentNull() throws IllegalStateException
    {
        if (current != null)
            throw new IllegalStateException("Invalid syntax; previous expression is unfinished");
    }

    private void checkValue(Object value) throws IllegalArgumentException
    {
        if (value == null)
            throw new IllegalArgumentException("Element value cannot be null");
    }
}