text:
Static And Noise: End Of The Year Edition
Last post of the year; hope everyone has a wonderful and safe new year. Nothing terribly philosophical or earth-shattering here; no resolutions or year-end retrospectives (though vacationing with my wife and getting two dogs would be near the top of the list). Anyway, here is some random shit.
Football: I've tried to keep the pigskin talk to a minimum lately; it seemed like I was writing about it every other day or so there for a while. Things have kind of shaken up the way most people predicted. There are always news stories and things to watch, but this year seemed to be full of drama--with Ben Roethlisberger's suspension, Michael Vick's return and stratospheric playing abilities; Brett Favre's lackluster season and weinergate; and so on and so on. Still, aside from the disaster known as the Dallas Cowboys, the near-collapse of the Jets and the promising but ultimately disappointing results from Green Bay, Tampa Bay, and the Giants, and the chance that a sub-.500 team making it in the NFC West what was a very odd and parity-prone season ended up with a lot of familiar faces making the playoffs. The season has one more weekend and some of these teams might still squeak in, but it's anyone's game right now--I can't really see an odds-on favorite at this point.
History of Boardgames: I was having a discussion with one of my friends about board games, and I talked a little too long about how board games have developed over the years. "Modern" board games--to use a term that's probably more pretentious than I think--are a completely different genre of entertainment I believe many people would enjoy if they were exposed to it. But it is a difficult thing to get into. The barriers to entry are low, so there's plenty of junk out there along with the good stuff. And you need several willing partners to make it all worth it. Anyway, the board game-related posts I make tend to be the ones that get the most hits. In some ways I don't know how I feel about it, because I am by no means an expert, nor do I have a lot to say about it that is new or creative; I also don't want to turn readers away if I post too much about it. But for those that aren't particularly interested, I apologize if I post more than the normal amount of content about board games.
Civilization V: I posted about Civilization V a few months ago. I've been holding off talking too much about it because I wasn't sure what to thing. Like any long-lasting franchise, the key is to provide something familiar yet something new. Between Civilization IV and Civilization V, Firaxis created Civilization Revolutions, a stripped-down console-driven version of Civilization. Not very deep, but it got the point across and wasn't a bad, one-hour way to pass the time. Civ V was much closer to that. Plus, it had some odd balance issues; certain aspects of the game didn't scale properly, and many special abilities are near-worthless. I wasn't going to give up on the game, but it was clear that this was not their best effort. Thankfully, they release a fairly comprehensive patch about three weeks ago, and it makes the game much, much better. Most things scale properly and many new items and abilities were added, quite odd for a patch. There are still some things off--diplomacy is still a bit iffy, and certain buildings have massive cost/benefit issues--but it is a much improved game and I have no issues recommending it. They've also developed a new-ish business model, where new civilizations and maps are released piecemeal instead of as one big expansion, changing a few bucks for each new item. I don't know how I stand on this (I haven't bought any yet, though I probably will, eventually) but it could lead to good things. Or it could just lead to a new way to nickel and dime us.
What will the new year bring? I was going to create and organize a "Predictions for 2011" post, but it's a lot of work and I just ran out of time. However, I've noticed that I've been slacking on The Pledge lately, so you might get to see me talk about politics some more. I also have a rather depressing column rattling around in my head that will get posted in the cold, dark month of January once I get all my thoughts together. Plus candy! Happy New Year.
Posted by Crank Crank Revolution at 7:52 PM No comments:
Labels: static and noise
Heard Around The Holidays
Me: What are you humming?
Wife: "Dance of the Russian Candy Canes" from the Nutcracker.
Me: Oh. I thought it was the theme from Street Fighter II.
According to my wife, Dexter is being too good to blame my farts on today.
Me: Perhaps I will write the Toaster Oven Council of America and see if they'll have me on.
Wife: How are things downstairs?
Me: Well, Chloe's whining, Nora is cranking, and Dexter is running around the table.
Wife: If nothing else, those pets will make you glad to go back to work.
Me: Nah. Just a different set of people whining, cranking, and running around the table.
Me [To Chloe]: Your farts smell like a tool and die shop.*
And, if anyone wanted to know what I got for Christmas:
*Despite what it may seem, we do not talk about farting 33% of the time. The actual figure is more like 20%.
Hi Chloe!
Welcome the newest addition to our family:
Her name is Chloe Rand Harkleroad and she is a longhair dachshund. She will join Dexter the dachshund and Nora the cranky cat along with my wife.
She already knows how to bark*, which places her about two grade levels above Dexter when he was her age. She also miraculously slept through most the morning with no assistance from us.
She also already likes Dexter, knows her way around the living room, and has read the first two thirds of The Fountainhead. She has so much to learn--We The Living is a much better introductory read.
*And bark and bark and bark.
Posted by Crank Crank Revolution at 11:55 AM No comments:
Labels: chloe, dexter, pets
"I Am Not Playing That."
I've seen quite a few number of posts over at Board Game Geek over the years about people's negative reaction to board games. It's usually much more prevalent this time of year, as large family gathering are a perfect time to get people together in modest numbers, and usually everyone is looking for something to do. Board games would seem to be the perfect solution. These posts, however, are usually woeful tales of how families simply scatter when anyone even mentions the thought of any type of organized social interaction, let alone a board game.
Personally, I'm not surprised--often, I think people do a poor job of presenting the opportunity to play games, and boardgaming is still a fairly niche hobby. Still, it's particularly frustrating, because we've all seen these games work and everyone have a lot of fun, but getting over the intimidation factor can sometimes be overwhelming.
Here are a few thoughts about the process:
Know your games. Let's get this right off the bat--we're more or less talking about party games when it comes to holiday gatherings. You're not going to get Uncle Charlie who has already downed three shots before breakfast to sit down to a nice game of Wilderness War: The French and Indian War. Of course, you might be able to bring some light card and board games to convince a small group of people to play. But even popular games like Puerto Rico and Agricola aren't going to hit the table--even for fans, it takes too much time and there's usually too much going on for anyone to be able to concentrate. And be aware of the dynamics of the game itself. Large-groups games such as Werewolf are good choices, but even games like Things or trivia games where you can break up into teams to accommodate large groups will work as well. You can get away with some "normal" games like No Thanks or even Citadels if the numbers work out, but it's difficult to find non-party games that are useful with larger groups. Just keep two things in mind: people don't want long, complicated instructions, and people don't want to play a game that's going to last four hours. Pick a game where there is little to no down time, is easy to explain, and that will scale down if necessary. This pretty much rules out all games except party games, and even many of those party games need to be able to be team-based properly to accommodate sizes. What seems to work best are party games that allow teams to freely act--such as shouting out words to guess something, like Password or 25 Words Or Less --than games that allow each player to specifically do one thing and everyone else reacts, such as Say Anything . The latter is often more fun, but the former allows even marginal participants to enjoy themselves. If they don't want to play, they can just sit there, but if they actually want to pipe in, they can.
Know your audience. When you are at family gatherings, you're almost by definition sitting across a large spectrum of demographics--there will be old people and small children and drunk stepfathers and surly teenagers. Trying to coordinate them to do all one thing is going to be a challenge regardless of what you do. Still, knowing how to frame and present playing a game is important. Families and friends may not want to play some weirdo game you have, but if you've played before with an aunt who can vouch for its hilarity, that helps. You may not be able to sell a game to your cousins who aren't allowed to watch television, but you can probably get your XBox-loving nephew to play along. And don't be afraid to adapt. The aforementioned Werewolf is a public-domain game that is perfect for large groups, but not everyone is thrilled about playing a game where a werewolf runs around killing people. Thankfully, it's easy to modify the terms of the game to, say, the mafia, or spies, or pretty much anything else.
Know the numbers. What games you select and how you present it is going to be vastly different whether there will be eight people there or twenty. There are very few games that work with more than eight players, unless it's a team-based game. And it's not a sin to exclude people--if you know that only ten people out of fifteen want to even try and play, then just include those ten. If the others get jealous, well, there's always time for another game.
It is not the time for conversion. There is a time and a place to convert people into playing modern board games, but this isn't it. It's tempting, since you have a large audience of people looking for a social pasttime, but it's almost always the wrong place and the wrong time.
Know when to sit down. The harsh reality is that not everyone wants to play games. While for many families the holidays are a time to gather together and have fun, you are also bringing different personalities into one room. And people may be more interested in visiting with others they haven't seen all year than playing your silly variation of Taboo. Time is short, things need to get done, and often even if you pull off getting everyone to play along, the slightest moment of boredom will get them to lose interest. Sometimes, it's better to bring a standard game, like Ticket to Ride or Pandemic and play with just a small group of people that you know will have fun, and if onlookers are interested they can join in a larger game later. (Resist the temptation to bring games like Small World or Dominion ; while they are fun for medium-sized groups, their themes and artwork are hardly a good choice to convince non-gamers to play.) Just don't be too disappointed if you're confined to the couch watching ice skating and eating sugar cookies all afternoon.
Labels: board games
Holiday Candy Review: Cherry Cordial and Mint Chocolate M&Ms
M&M/Mars is certainly doing a lot to create some variety on their flagship candy: and why not? The simple M&M is easily modifiable, and it's hard to screw up candy-coated chocolate. So this holiday season, we see two new flavors on the market: Cherry Cordial and Chocolate Mint.
I am assuming that they are limited edition--things like this usually are--so you probably won't see much of them after the end of this week. But they've done a pretty good job of keeping the ones that work in circulation.
The candies themselves are nothing remarkable; they're slightly larger that standard size, much like the coconut and pretzel ones.
First up is the Cherry Cordial. Unfortunately, I'm not a fan of cherry cordials in general--while I do enjoy the mixture of chocolate and fruit, cherries never did much for me. And in this case, it shows: I didn't care for them. The cherry taste seemed awfully artificial and a touch too strong, and I just don't like the taste to begin with. Quite frankly, if you are the kind of person that likes cherry cordials, I would just buy normal cherry cordials and skip this.
The Chocolate Mint, however, was much better. Granted, it's difficult to screw up mint, but they did a good job balancing the slightly strong mint with the chocolate. Since I am a fan of mint, I'm a fan of these, and I'll be sad to see them taken out of the normal distribution. However, I'll admit that once you're done with a bag of these you may be done for a while--mint is pretty strong and easy to get sick of. This may be better off as a seasonable product. But they're very good.
A word of warning about either of these--the smell of both is very strong, and has a tendency to creep into anything else you have in your cupboard or bowl. So unless you want your mashed potatoes or Mary Janes smelling slightly like cherries, keep these sealed if possible.
Labels: candy, review
A Christmas Conversation, in Two Acts
A Co-Worker
Dexter, my dog
Act I: Yesterday Morning
Me: Do you guys know about the Elf on the Shelf nonsense?
Co-worker: Yeah! It's great!
Me: No, it's not. You get three inches of fabric and a couple of cotton balls stitched together by some sweatshop in Malaysia along with a book and they charge you thirty dollars American for it. That's insane.
Co-worker: But it's cute. And trust me, when you become a parent there is no end of the overpriced stuff you will buy for your child.
Me: I'm not saying I won't. But that doesn't make it right. It's a straight-up racket.
Co-worker: But it's so cute!
Act II: Later That Day
Me: Aw. How cute. My wife just wrote me to pick up steak for Dexter's birthday on Sunday.
Co-Worker: Wait a minute. You're willing to buy steak for your dog but you wouldn't buy the Elf on the Shelf for your kid?
Me: Listen. If I get the Elf on the Shelf, all I get is thirty bucks taken out of my wallet. If I get my dog steak for his birthday, I get steak for his birthday.
The 2010 Miserable Crank Awards Go To...
The results are in, and the winners are listed below.
The Most Miserable Person We Permit to Contribute to Our Society: Ben Roethlisberger
The Most Indefensibly Stupid Business Decision: iPhone Reception Response
The Weirdest Nonsense We Continue To Allow Ourselves To Be Entertained By: Lady Gaga's Meat Dress
The Most Ridiculous Government Decision Everyone Hates But No One Will Ever Do Anything Meaningful About: Health Care Reform Act
The Most Embarrassing Thing About Being A Member of the Human Race: Jersey Shore
The Greatest Disruption From Allowing Us To Live A Comfortable Middle-Class Lifestyle: TSA Groping
Things Everyone Else For Some Reason Loves But I Hate With A Passion Unparalleled: Glenn Beck
The Most Painfully Awful Event or Idea of 2010: The Rise of the Tea Party
The Worst Event of 2010: The BP Deepwater Horizon Oil Spill
Congratulations to the winners! Or something like that.
Posted by Crank Crank Revolution at 9:35 AM No comments:
Labels: miserable crank awards
Vote Now! Introducing the The 2010 Crank Crank Revolution Miserable Crank Awards
The 2010 Crank Crank Revolution
Miserable Crank Award
It's nearing the end of the year, and so it's time to reflect on everything that's happened in the past twelve months. Here at C2R, we're not above recognizing those events that have had an important impact on the year. Of course, the best way to honor this year is to find that event that epitomizes everything that is wrong with it, so that we may learn and improve. Or, more likely, bitch about it.
I have divided the various awful events of 2010 into eight categories:
The Most Miserable Person We Permit to Contribute to Our Society
The Most Indefensibly Stupid Business Decision
The Weirdest Nonsense We Continue To Allow Ourselves To Be Entertained By
The Most Ridiculous Government Decision Everyone Hates But No One Will Ever Do Anything Meaningful About
The Most Embarrassing Thing About Being A Member of the Human Race
The Greatest Disruption From Allowing Us To Live A Comfortable Middle-Class Lifestyle
Things Everyone Else For Some Reason Loves But I Hate With A Passion Unparalleled
The Most Painfully Awful Event or Idea of 2010
Each of the candidates for each award are listed below, along with a description as to why. The voting form is listed at the very bottom of this post. There is also a ninth question: What is the worst thing about 2010? It lists all of the candidates from all of the categories. Whichever one of these gets the most votes will win the overall award, and whatever category it was pulled from will be awarded to the runner-up. I'm reserving a bit of power on this question; if there is a tie, or if I feel the winning candidate isn't quite right, I may choose a different candidate. We'll see how the voting goes.
Voting will be available until Friday, December 17th, 2010. The winners will be announced sometime after that weekend.
And, of course, if you feel that something better (i.e. worse) should be added to this list, please let me know! I'll gladly accept write-in votes and post some honorable mentions. Just e-mail me (see the link to the right). You may also want to sign up for my Twitter account, since I'll be posting some updates there as well.
Happy voting!
There's nothing wrong with being proud of your accomplishments, or acknowledging that you're the best at your game. It's also nice that when you enter a professional sports league that has a draft mechanism that allows teams to self-balance their talent, you gamely participate to the best of your ability. But you know what's not so cool? Kicking a down-and-out city like Cleveland, then producing a self-centered homage to yourself on prime time television for an hour like it's a Haiti Relief telethon. Sure, the money was sent to charity, but putting your huge ego up on eBay might have had a better return for the investment.
What do you do when you are put into a competition in which you have no inherent talent and were picked for reasons unrelated to your abilities? You lose the vice presidency. Then a few years later your daughter does roughly the same thing for roughly the same reasons on Dancing With The Stars, where a quarter of America keeps voting for you not because of your performance but just to stick it to those East Coast elites. You know, the ones who are too busy brewing their Keurigs and having late-term abortions to vote by phone forty times a night. Here's a tip for everyone involved: no one wins anything here. It's just for bragging rights, which is worth about as much as abstinence education.
It's hard to make friends in show business. It's a cutthroat industry, where only a few prized souls can make it to the top, and a large percentage of the talent pool has only very slight degrees of differentiation in that talent. So even small degrees of luck, connections, or willingness to give handies to producers under the desk will make or break a career. Hard work is rarely recognized--witness the standups who pound the clubs nightly for ten years just to play Disgruntled Subway Rider #4 on the fifth season of Seinfeld. So when one of the most powerful figures in the late night talk show circuit--Jay Leno--hands the reigns of a decades-old institution such as the Tonight Show to you--Conan O'Brien--you are grateful and give proper credit when due. And when the same person falls flat on their face in an embarrassing fiasco that was the Jay Leno Show and then demands his old show back, and are ridiculed for even trying to defend yourself, it's not hard to realize that the person you thought was a class act is in, reality, a no-talent mug-faced douchecake.
Football players are, by nature, an aggressive breed. They are paid to hit people with a level of relentlessness that would be illegal in anything outside of a Juggalo concert. So when Ben Roethlisberger, the two-time Superbowl champ of the Pittsburgh Steelers, wrecked his motorcycle a few years ago, we all chalked it up to the youthful indiscretion of living life when society has decided to pay you millions of dollars to throw a ball around a field for four hours three months out of the year. And when a young lady in a Las Vegas hotel accused him of sexual harassment, we cast it off as a spurned lover with a checkered past. But when the details of a hot, sweaty night in Milledgeville, Georgia came to light--involving accusations of rape, drunken minors, and off-duty cops hamming it up for the cameras--one kind of gets the skeebies about the guy. Insincere protestations that he is a changed man who looks to God and is a Pittsburgher till he dies--or until he's 36 and can't fit under the salary cap anymore-- has more than just a tinge of a jailhouse conversion.
Christine O'Donnell
A politician like Sarah Palin only comes around once a lifetime. Unless you're Christine O'Donnell. Winning a primary against the experienced and popular--and, more importantly, electable--Mike Castle, O'Donnell came out as a rising star in the new fight for control of Congress. Then, about six hours after her upset win, Delaware realized that they had nominated a complete intemperate fool to represent them in the Senate. Video clips aired of her talking about witches and masturbation (thankfully not in the same incident). Answers to simple questions were botched to the point that Dan Quayle could have been her phone-a-friend and answered correctly. And--to no one's surprise--she lost, where she will have an awful and humiliating career for the rest of her life making millions of dollars writing books and having a talk show on Fox News.
Most Indefensibly Stupid Business Decision
Remote Kindle Erasure
People tend to get pretty defensive when anyone--whether it be the boss, the government, or a large internet-based book company--reaches into their personal devices and fusses with all the important stuff. (Why on earth the folks who have Apple products don't get all outraged about the same is beyond me.) So when Amazon self-deleted copies of books from users who had legitimately purchased them without their permission or advance notification, people were understandably upset. The reason for doing so at the very least was halfway legitimate--the publisher of the book didn't have the proper copyright credentials--but the way it was handled was more or less the worst possible way to do so. And, of course, the titles involved were from George Orwell, including Animal Farm and--you guessed it--1984, a book that is pretty much a how-to manual for heavy-handed information removal. For a company priding itself in being the poster child for the new, leaner model of online retailing, it sure acted like part of the big, old-school, clumsy economy it's trying to replace.
The Kardashian Kard
There aren't a whole lot of products that would convince me to purchase them with the persuasion of one Kim Kardashian--with the possible exception of the services of a defense attorney--but that didn't stop her from endorsing a financial product called the Kardashian Kard, quite literally a poor man's prepaid debit card. Ignore for the moment that people would be placing their money into a product that, as a marketing gimmick, spells "card" with a hard K. Ignore for the moment that it's hard to shill for a financial product when one sincerely doubts the concept of living within means has ever been a part of the spokeswoman's routine. But--as it turns out--this was all rather apt. The card itself was a straight-up ripoff, full of hidden fees and loan-shark levels of interest. While the product was quickly cancelled, one has to wonder exactly how many levels of sheer incompetence this ran though, presumably by a bunch of distracted paper-pushing banking regulators who were under the impression there would be a chance they would see her buttcrack.
iPhone Reception
A new version of the iPhone was released this year--and, as usual, cell phone customers when batshit crazy standing in line at three in the morning to pay $500 for a device that can roughly do the same thing as a $300 laptop (or, translated in Apple terms, a $3000 laptop). But when phone users starting complaining that the phone's reception was shit, Apple, hoping to catch some good PR by solving the customer's issue, told consumers that it was their fault that they were holding the phones wrong and they should go piss up a rope. After insulting their intelligence and refusing the acknowledge an obvious flaw in its engineering, he then promised to provide free "bumper" accessories to fix the issue. iPhone users then hailed him as a benevolent messiah for providing a need that was created due to his own mistakes. Seriously, guys, this somehow makes you look simultaneously pretentious and stupid.
Prius Recall
What do trendy progressives like? They like to buy cars that are good for the environment. You know what else they like? Foreign cars, so they can show their friends and random strangers that Detroit doesn't control them with some necessary faux sense of patriotism. Of course, they also love to brag about how cheap it was and how reliable it is even though it's foreign-made. (How this is different than buying fair trade coffee and railing against exploiting third world laborers is left as an exercise to the reader.) So it's particularly embarrassing when Toyota--already reeling with last year's recall of the Camry and Corolla--then had to recall their flagship vehicle for safety and craftsmanship. This would have been a prime time for the Big Three automobile manufacturers to step up and exploit this gap in the marketplace, but they were too busy being bankrupt and owned by the government to care.
Flash Crash
If the last few years have taught us anything, it is that our financial sector is a teetering house of cards, barely able to withstand any unpredicted change in the atmosphere or the entire thing comes crumbling down in a pile of broken dreams and jail sentences. You know what's not so reassuring about the future? The fact that some sausage-necked fat-backed broker on the trading room floor fat-fingered an order and caused a 1000-point drop in about thirty seconds for no other reason than physical clumsiness. I thought androids would be taking care of all this nonsense at this point. C'Mon! It's 2010, people!
Weird Nonsense We Allow Ourselves To Continue To Be Entertained By
Lady Gaga's Meat Dress
One has to imagine that each morning Lady Gaga wakes up and thinks about new and creative ways to make herself appear to be a bigger nutcase than the day before. Then, after she contemplates this for a while, she eats a big bowl of crazy, dresses up like a street hooker, and goes to the recording studio to produce some music. One day, somewhere in Lady Gaga's Internal Flowchart Of Batshit Craziness, she decided that the best course of action to take one day is to make a dress out of meat products and wear it to an awards ceremony. The most surprising thing is how unshocked everyone was at her behavior. When no one is alarmed that you left the house wearing bacon underwear and bologna knee-highs, maybe it's time to re-evaluate the direction you've taken with your life.
You know how when you pretend to be someone or something you're not? That's called acting. You know what isn't acting? Just going around and being a jerk, and then having someone pay you to let them film you being a jerk, and telling everyone after the fact that you're not being a jerk but just acting. Guess what, homeslice--you're still a jerk.
The Quaids
Poor Uncle Eddie! It's one thing to be a down-on-your-luck B-list actor scraping by with infomercials and guest spots on Psych. Maybe you've overmortgaged your overpriced house in the hopes that someday they'll make a Branson Vacation. But when you delve into a meth-fueled squatting jag that includes accusing a complex Hollywood murder plot that involves Heath Ledger and David Carradine, you've gone from Hollywood crazy to straight-up white trash crazy. And you know what? It is possible that there is a conspiracy that includes an intricate plot to kill you, but the murder weapon is going to include cough syrup, tinfoil, and PBR.
Katy Perry's Exploding Boobs
To be fair, no one should be surprised about those prudes on Sesame Street--just look how that harlot Letter M is dressed--nor should anyone be surprised that Katy Perry's sweet boobs pretty much were sneaking out of her "dress" the entire time they were filming the segment. (The reason no one caught it was because Bert and Ernie were in charge of it, and, well, maybe they weren't the guys you want in charge of being distracted by bouncy female parts.) But when you shoot music videos where your cleavage is literally shooting actual fireworks, your career has slid from self-parody to straight-up attention-whore pity. I realize it's kind of her thing, but so help us if they ever figure out how to autotune her tits instead of just her voice.
Shake Weight
Late-night infomercials are always chock full of half-assed gimmicks to accomplish what could easily be accomplished without spending ten bucks plus shipping. The Shake Weight is no different. It's a weight designed to let you lose weight while you practice giving hand jobs. That's pretty much it.
Ridiculous Government Decisions Everyone Hates But No One Will Ever Do Anything Meaningful About
There is a lot going for America as a concept, if not a country. It more or less forged liberty and freedom as the government structure of record. The welcoming of different classes, races, professions, and culture were seen as a positive rather than a negative, at least those outside of the former Confederacy. So when something like the Arizona Keep Those Mexicans Out Act of 2010 was passed, it's an embarrassment to the nation. Sure, the US isn't alone in being skeptical of foreigners--see the refugee crisis in Australia, for instance, or the Gypsies in modern-day France. Oh, and ask those Germans what they think about Scientologists and Jews. Passing a law where you ask for papers just based on appearance alone smacks of Reichlike behavior, and let's just say a lot more busboys and landscapers get asked than tan guys in suits.
European Bailouts
Greece tried. It really, really tried. And so did Ireland. But both ultimately failed. Ireland, after nearly ten years of miraculous growth, had mismanaged its banking regulation, finding that it's a bit more difficult than herding sheep or running an off-shore abortion cruise ship. It's demise was partly hubris--when the warning rockets were fired years ago, the government promised to back everything. Not up to a limit, or with proper investigation, but everything. This, of course, wasn't something that the Irish government could handle, and the crisis spiraled out of control to Portugal, Spain, and even the UK. The entire financial fiasco threatens the Euro currency system, and may finally break the decade-long cooperation that had provided so many stable elements in the region. Thank goodness Europe has a tradition of keeping their conflicts confined to the mainland.
Health Care Reform Act
Health care needs to be fixed. As with every single issue in the history of mankind, there is a right way to fix it and there is a wrong way to fix it. For some incredibly arcane reason, the Obama administration and congressional Democrats not only did it the wrong way, they seemed to have gone out of their way to find new and creative ways to make their decision-making even more awful. Whether it was enacting a huge, expensive bill in the middle of a recession so that business are even more uncertain about whether they should hire new workers or the political mistakes of forcing a flawed bill through the House just so they wouldn't have to compromise, a lot of bad had to go with the good. Thankfully, the one thing both sides could agree on made it in the final version of the bill: most of the unpopular and expensive provisions don't kick in until two elections later, when most of them will have left politics. Go America!
Banning of Four Loko
Mixing massive amounts of alcohol with massive amounts of caffiene is probably a bad idea. But on the grand scale of bad things in this world, does banning a beverage that could easily be made by purchasing two separate cans and dumping them together really rate that high of a priority? It's one thing to be recklessly pollyannish about things and simply dismiss it as "kids are gonna do it anyway," but it's quite another to blame a company that manufactures a ready-made mixed drink for the fact that your daughter is failing her freshman Business Administration classes at state.
Firing of General McChrystal
One of the greatest aspects of the military is its rigid discipline--troops don't question their leaders with the implicit agreement that the leaders look out for their men, keeping the objectives in mind first and foremost. The involvement of the military immediately raises the stakes to those of life and death, being one of the few professions with established sanction to kill. So when the commander in charge of the war in Afghanistan--General Stanley McChrystal--gave a rare (and unnecessary) interview to Rolling Stone magazine where his aides mocked the civilian staff in charge of the war, President Obama called for his resignation. While the details are fuzzy--the General himself wasn't quoted as being critical, but didn't deny anything when asked.--the fact that the President would be willing to disrupt major military operations because he couldn't take the equivalent of the last sketch of the show on Saturday Night Live makes him appear a little...insecure.
Most Embarrassing Reason To Be A Member of the Human Race
Tom Brady's Hair
One would think that, after securing three Super Bowl rings and an assured spot in the Football Hall of Fame when you're barely halfway through your career, you would pretty much be entitled to do what you want. Like have an affair with a Brazilian model and dump your other equally stunning pregnant girlfriend. Or take a car from a charity even though you make a few million a season and subsequently wreck it. But one thing you can't do is have a mulletized Justin Beiber haircut when trying to inspire your team to make it to the playoffs. You just...don't. For crying out loud, you look like a cross between Luke Duke and the guy that hangs out at the Denny's parking lot during the waitress shift change doing whippits.
"Refudiate"
Everyone makes mistakes--and in the case of former Vice Presidential Candidate Sarah Palin, some make more mistakes than others. The proper thing to do is own up and correct it, and hopefully learn not to do it again. The opposite of the proper thing is to embrace the mistake and use it as a way to make yourself feel more important. Palin did just that when she conflated the words "refute" and "repudiate" to create a new, quite comical word--the annoying kind that causes a red squiggle to show up when I type it in anywhere. Slip-ups like this occur to the best of us, but it was then twisted around as a statement against cultural elites picking on minutia to make themselves feel more superior than the rubes. Now, sickeningly, it's probably going to become part of our political-cultural complex for generations.
Reality TV has, alas, become a mature genre of entertainment. Of course, not all reality television bad; some is educational, some is fun without insulting our intelligence, and some just hit the right combination of legitimate reality, slick production, interesting story lines, and class. Jersey Shore is none of those things. The show about guidos and guidettes debuted in 2009, but reached the media saturation point this year, with the cast members making well-publicized (and well-paid) appearances and even having The Situation (don't ask if you don't already know) appear on Dancing With The Stars. While the glorification of stereotypes has had a long and proud tradition in America's cultural heritage, one just hopes that their excessive tanning doesn't preserve and extend their expiration date.
When it's common that your name be used as a superlative to a bad adjective--such as "That dude is Mel Gibson crazy!"--you know you have a PR problem. Gibson apparently doesn't realize that when you have a PR problem that bad--Jew-baiting cops is generally frowned upon by those of us living outside of a pre-Vatican II world--the last thing that you want to do is reinforce that generalization by doing even crazier shit than before, such as having a baby with a Russian woman who is capable of downloading apps onto her iPhone. While accusations of domestic violence have yet to be resolved, the audio recordings of his psychological threats haven't done him many favors. I guess he doesn't know what women want.
"We Are The World," Take Two
Far be it for me to make fun of something that's done for charity, but c'mon. When music producer Quincy Jones released "We Are The World" in 1985 to help combat hunger in Africa, he cobbled together a mix of top-tier stars like Michael Jackson, Bruce Springsteen, and Bob Dylan, along with then-hot stars like Cyndi Lauper and Huey Lewis. The anthem was a huge hit and made millions of dollars for charity, all for a good cause. But when a similar effort this year to help with the relief efforts in Haiti was made, it was more or less a disaster on all fronts--although it sold well enough to reach #2 in America and chart decently worldwide, the lasting impact was minimal and critically panned. Sure, as a fundraising device it served its purpose, but the best artists it could cough up were Miley Cyrus, Toni Braxton and Dead Michael Jackson. It also used auto-tune and had a rather awkward rap segment added to specifically address Haiti, neither of which was seen as a positive trait. About the only good to come from this song, aside from the obvious money raised, is that it may deter future earthquakes from attacking the world in fear that a third arrangement would be recorded.
Greatest Disruption From Allowing Us To Live A Comfortable Middle-Class Lifestyle
Icelandic Volcanoes
We can send men to the moon. We cure diseases that mere decades ago were certain death warrants. I'm pretty sure they have cyborgs running the State Department. And yet when a volcano stars spewing ash all over Europe, it ground air transport to a halt. I mean, sure, the sky over the Nordics looked like someone lit one of those cheap Chinese ash-snakes multiplied by about ten thousand, but I just assumed Boeing equipped their plans with windshield wipers or at least a travel-sized bottle of Rain-X and a squeegee or something.
Lawless Mexico
Mexico is an endlessly beautiful country. The beaches are sublime, the food and drink are exquisite, and there is only a 50% chance that a drug lord is going to kidnap you and slice your head off with a hacksaw. This presents somewhat of a reputation problem for Mexico, since usually the drug-related crimes were confined to those little puzzle-piece nations in Central America and good ole Mexico was simply the highway populated by indifferent Federales. You know things have escalated pretty bad where travel warnings are being issued, tourists are staying away in droves, and college girls are going to have to start doing topless body shots on Prince Edward Island instead.
Continuing Unemployment
Recessions are horrible things, and this particular recession is quite the lingering affair. Businesses aren't hiring because they're uncertain about the future, the government's solution is to spend money on anything except getting the economy moving again, and it's only a matter of time before the Chinese conduct a leveraged buyout of the Federal Reserve. The only good news is that it can't get any worse. Unless, of course, the housing market collapses. Or commodity prices rise due to demand from India and southeast Asia. Or the euro bottoms out. Or another terror attack grinds business to a halt. Or liquidity in the market dries up. But that should be it! Oh, also: oil prices and layoffs and Somali pirates and Russian natural gas manipulation and computer hackers and tax increases and strikes and government nationalization of industry.
TSA Groping
Everyone wants to feel safe when they fly; airplanes are inherently dangerous machines, so people want to make sure that other passengers don't turn them into makeshift rockets either by box cutters, crafting their shoes into bombs, or downing eight shots of Maker's Mark before you put your uniform on and get in the cockpit. And, of course, terrorists have used everything from computer printers to shampoo bottles to smuggle explosives onto planes, so at this point pretty much anything goes. And yet the current method of reinforcing everyone's safety involves what most people have to pay for at the strip club. Add to this delays, indiscriminate searches, and the fact that they never, ever pick that hot chick to show up on the backscatter scan and show the results to everyone in line, and you've got one pissed-off customer base that already hates everything there is about flying.
Campaign Commercials
No one really likes campaign commercials. Sure a few policy wonks and advertisers like the content and the revenue it generates, but they are often trite, poorly made, and overwhelmingly negative. The McCain-Feingold campaign finance reform act attempt to curb some of these excesses, with mixed-to-no results. But when the Supreme Court struck down the provision preventing unions and corporations from paying for ads, the floodgates were open. From roughly May until November--and, hell, I bet there's some still airing yet--every single commercial on every television station ever created in the history of mankind was an obnoxious, sense-assaulting ad for or against every evil perpetuated in our nation since Washington shot at some French diplomats. Heck, they were airing in Canada simply because they could. It almost--almost!--makes one want to read a book instead.
The McRib Sandwich
Sometimes I wish I had the foresight of Ray Kroc. Who knew that taking the slaughterhouse-floor sweepings, pressing them into the vague shape of what ribs would look like if people ate the ribs of flattened rodents, then slathered the remains with brown-colored flour-thickened sugar water would be a mutli-million-dollar marketing genius move? I need to start making more stupid decisions with my life.
Once upon a time, people had a desire to be where someone couldn't find them. The wife, the boss, nagging family members you owe money to--you just needed to get away. And sometimes, there's a quiet solace in not being bothered by anyone simply for the sake of being alone. Well, worry no more! Foursquare has made it possible--and alarmingly popular--for everyone to know where you are at all times. Not only do your friends and exes and companies willing to give you coupons know where you're at, but petty thieves and your parents do, too.
Glenn Beck should consider himself lucky. The world can only handle one post-alcoholic formerly homeless old-school drive time shock jock Mormon shilling gold and unrealistic dreams about our democratic society, and he managed to pull it off. It's a shame, because Beck used to be a reasonably listenable standard conservative talk show host with a penchant for solid political philosophy before he went on TV and starting crowding up the airwaves with his own particular brand of rampant bullshit. While I understand the sentiment--hard times flush the chump, as Ulysses Everett McGill said--the immense level of popularity is still staggering.
I'm fully aware of the spectacle that is 3D movies. Part of why I'm perplexed at its popularity is that my depth perception makes it difficult to view 3D. But I also make money, and I just don't see the appeal of handing out even more of my own hard-earned cold cash to the movie theater just to see things slightly more awesome. I guess it wasn't so bad when it was just the latest James Cameron circle-jerk flick or the odd Pixar cartoon about lonely building blocks or star-struck medical devices or whatever the hell they make cartoons characters out of nowadays. Now it seems like every other movie is now IN 3-D, from Harry Potter (where the first six installments seemed to do just fine; I'm sure Quidditch seems just as absurd of a concept in traditional 2D than in 3D) to the Che Guevara biopic (not really, but I wouldn't be surprised.)
The Lost Finale
I have a soft spot for those poor TV shows that never make it--I'm as good a browncoat as the next, have Bob Loblaw on retainer, and weep for Jericho every Monday night--and even like those that make it but are quirky enough not to fall too far into the mainstream. I tried to like Lost, which finally ended this year, promised resolution to all of the mysteries but really just made people confused and angry. I really, really tried to like it. But every time I watched it, I was struck by how pretentious and deliberately confusing the entire thing was. Forging a dramatic feeling of suspense takes skill and is incredibly entertaining when done right. Just throwing random shit on an island for six years is the equivalent of every freshman-year film editing class final ever.
Granted, the oil industry hasn't won too many laurels over the years, and someone needs to tell them that just because you're running print ads that are shaded green and talk about scientists boiling additives in their gasoline cocktails doesn't mean you're not still encouraging people to burn dinosaur bones and liquid smog in their SUVs and Cadillac tanks. So when an offshore platform explodes and causes a grade-A four-alarm continual oil leak for four months in the Gulf of Mexico--and thankfully nothing bad has happened in that region lately so they were well-prepared to meet the challenges of an environmental disaster--the best course of action is not to send your CEO to a yacht race and lie about the quality of the video feed of the disaster. Granted, the government shares a lot of ill-prepared blame as well, but in fat years of record profits, oil-soaked pelicans and unemployed crawfish producers aren't what you want to see in your end-of-year report.
Vuvuzelas
Welcome to the global stage, South Africa! After decades of trying to erase the memory of apartheid and work through the various social and political problems of developing Africa's brightest star, you now have the chance to be a showcase to the world! And you get to do so in an entertaining manner, enough that people will tune in to watch but the logistics of which will prove your nation to be up to modern challenges. And maybe this will be the year that the world's largest untapped market in soccer--America--will finally be sold on the sport. The only thing you have to do is make sure that these skittish Yanks aren't turned off by the seemingly boring sport played by a bunch of unknowns by making the presentation as attractive as possible. And how do you do this? BZZZBZBZZBBBZZZZBZBZZZZBZZBZBZZZZBZZBZBZZZZZZZBZBZBZZBZBZZBZZZZBZZBZBZZZZZZZBZZBZBZZZBZZBZZBZBZBZBZZZZZZBZZZZZZZZBZZZZBZBZZZZBZZBZBZZZZZZZZZBZBBZBZBZZZZZZZZZZZZBZZBZBZZZZZZZBZZBZBZZBZBZZBZZZZBZZBZBZZZZZZZBZZBZBZZZBZZBZZBZBZBZBZZZZZZBZZZZZZZZZBZBZZBZZZZBZZBZBZZZZZZZBZZBZBZZZBZZBZZBZBZBZBZZZZZZBZZZZZZZZBZZZZBZBZZZZBZZBZBZBZZZZZZBZZZZZZZZBZZZZBZBZZZZBZZB
The best of the world shows itself when a major natural catastrophe hits a nation. Unfortunately, it often cracks open the fault lines, so to speak, of a broken society unprepared to meet the challenges of today's world. Disasters such as earthquakes and tidal waves tend to be apolitical, since it's largely chance that determines its presence, but one can't ignore the helpless void that is the Haitian government. The world responded admirably and continues to do so, but the underlying lack of any sort of preparedness, concrete social structure, or stability to prevent the island from degenerating into a morass of crime and disease is impossible to ignore.
What do you do when a mild-mannered alleged rapist Swede starts posting intimate secrets about the world's largest superpower? You freak out, that's what you do. Wikileaks is a web site devoted to posting diplomatic cables and other important papers that are normally classified as secret and releasing it to the world; these are papers that should really only be seen by like four people, three of which are shot immediately upon reading. This has been highly embarrassing for a lot of people, but mostly the State Department--for now. A rather clumsy attempt to bring sexual assault charges against him currently has founder Julian Assange in a London jail, but the posts keep on coming. Some see it as the ultimate check on abusive government power, while others see it as a clear-cut crime that will cause more soldiers and civilians to die. In either case, the important thing is that by making an esoteric point about freedom and liberty, everything has now because almost completely impossible to resolve. Thanks a lot, standing on principle!
The Rise of the Tea Party
What do you get when you mix one part John Birch Society, one part anti-fluoridation activism, and about six parts Limbaugh-sized crazy? You get a political force that was somehow able to decimate a major political party. When they weren't busy comparing President Obama to a Nazi or misspelling Nancy Pelosi's name on a homemade placard, they were busy forming a large, complex political force with very little by way of national leadership, an accomplishment that is almost embarrassingly impressive. This force could be used to force a dialogue on the role of taxes in our civil society and redraw the boundaries of the government's federalist nature. Or, it just as easily can be used to kick out all the Mexicans, Catholics, and gays. We shall see.
[Voting is now closed!]
Holiday Candy Review: Cherry Cordial and Mint Choc...
Vote Now! Introducing the The 2010 Crank Crank Rev...
Of Tax Cuts and Leaks
A Bunch of C-List Celebrities Sing "Let It Be"
Santa Dog
One Month of Content


Love the idea of this blog. Sounds like a great incentive, sort of an accountability thing.
Saw that you're a Marietta, GA blogger, so I just had to stop in and say HELLO since I am, too!
Hi Jamie. You said the magic word, accountability. It was time for me to take responsibility for my choices and this blog is keeping me honest and on track. :) Thanks for taking the time to stop by.


Mumbai, Nov 14 (IBNS) Actor Deepika Padukone was announced Entertainer of the Year at D Y Patil Annual Achiever's Awards in Mumbai on Sunday night.
Dr D Y Patil Group in association with Bhamla Foundation on Sunday presented for the first time, the D Y Patil Annual Achiever's Award.
This initiative has been taken to recognize, reward and honour individuals with leadership qualities who have shown exceptional talent in categories extending to various genres from education to business to bravery.
The grand award function that took place at the Taj Lands End was embedded with the eminent personalities such as Shashi Tharoor, Fardeen Khan, Gopinath Munde, Jayant Patil, Harshvardhan Patil, Vasant Davkhare, Sachin Ahire, Aadesh Srivastav, Hariharan, Aditi Govikar, Dhanraj Pillai, Leena Mongre, Chaggan Bhujpal, Subhash Ghai, Sonu Nigam, Baba Siddiqui, Poonam Dhilon, Ramesh Sippy, Arti Kailash Sudernath, Tabassum, Rohit Roy, Dolly Bindra, Raj Thackrey, Jackie Shroff, Rajeev Shukla, Eknath Khadse and Justice Dharmadhikari.
Dr Ajeenkya D Y Patil said, "It has been our privilege to be able to felicitate and pay tribute to individuals who have done India proud and contributed towards the nation's development, thus steering the country on to the path of global appreciation."
Asif Bhamla said at the occasion, "The main aim of the D Y Patil Annual Achiever's Awards for us was to be able to identify and honour people who have the spirit to excel and follow their goal with single-minded passion."
The awardees walked with panache after receiving awards for categories such as entertainment, education, business, sports, bravery, social awareness and lifetime achievement.
The jury members who made the choice of the winner after a careful selection procedure included Shekhar Suman, Atul Kasbekar, Mahesh Manjrekar, Ashutosh Gowarikar, Vijay Khole, Dr B. K. Goyal, Farzana Dhohadwalla, Yasmin Karachiwala, Bharathi Pradhan, Pradeep Guha and Prasoon Joshi.
The occasion began with Sandeep Mahavir's opening performance of the Ganesh Vandana which set the tone for the evening.
Mandira Bedi and Shekhar Suman added their touch and flamboyance to the event as the presenters for the evening.
The audience was kept enraptured by the performance presented by the adorable special children from the Being Human foundation. Salman Khan was acknowledged for Being Human Foundation and encouraged the children performing by joining them on the stage.
The act by Tripura Troupe brought the rustic feel of the splendid country alive with dancers performing with great vigor and dynamism and left everyone spellbound.
Shaan wooed the audience with his majestic voice and charismatic performance.
To add glamour to the evening, Esha Koppikar performed on various Bollywood numbers.


By design low price now online shopping discount solid rugs. Area rug wayfair outdoor lighting at home and oriental rugs products at the shelves and oriental 9×12 area rug contemporary area rugs solid purple indoor area rug by design sale. Solid purple area rugs, by design check price for you need price now online shopping top selling usa purple indoor area rug surya central park solid purple indoor area rug contemporary area rug wayfair outdoor lighting at wayfair outdoor lighting at. By design low prices cheap online reviews discount prices cheap online shopping discount solid antoinette area rug for you want.


Teijo is a family destination with a wide range of attractions, located close to some scenic old ironworks villages. The Nature Centre in the heart of the national park provides information on the area and advice and tips on planning your trip. Purchase maps or fishing permits or reserve boats, canoes, a hut, sauna, caravan site or camping area. A small café welcomes visitors for coffee.
Nature Centre is closed. Thank you for the season 2018!
Now you can get information about the national park in the middle of the village of Mathildedal. Teijo National Park Info moves to Hotel & Café Mathildedal which is located in Mathildedal's iron foundries. Here you can get the same information as in the Nature Centre.
Open for groups, from order.
Suitability: An ideal destination for the whole family. The Nature Centre is accessible and equipped with a toilet for the disabled.
The Visitor Centre is managed by Metsähallitus.


text:
Megalopsalis serritarsus is een hooiwagen uit de familie Monoscutidae.

Monoscutidae

redpajama_set_name: RedPajamaWikipedia


text:
Q: GLM interpretation I have to use a GLM to interpret some data. Could anyone tell me whether this is correct just from looking at the output?
And if it is - is it significant?
This is the code I used:
genderglm <- glm(glasses ~ gender + books,
           data=worksheet, family=binomial)
summary(genderglm)

And this is the output:
> summary(genderglm)

Call:
glm(formula = glasses ~ gender + books,
    family = "binomial",
    data = worksheet)

Deviance Residuals:
    Min       1Q   Median       3Q      Max
-1.4756  -1.2508  -0.1428   1.0032   1.8038

Coefficients:
             Estimate Std. Error z value Pr(>|z|)
(Intercept)    0.6784     0.2954   2.296  0.02167 *
genderMale    -1.3254     0.4736  -2.799  0.00513 **
genderOther  -16.2444  1455.3976  -0.011  0.99109
books         -0.2537     0.1381  -1.837  0.06620 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

(Dispersion parameter for binomial family taken to be 1)

    Null deviance: 163.55  on 117  degrees of freedom
Residual deviance: 149.14  on 114  degrees of freedom
AIC: 157.14

Number of Fisher Scoring iterations: 14

A: Since you have only 1 other gender, it would make a bit more sense to include this with males and have "female" and "not female", although it won't change the interpretation much.
Assuming that "Y" for glasses is coded as 1, and "N" is coded as 0, then there is clear evidence from these data that males are less likely to wear glasses than females. In particular, the log-odds of wearing glasses is 1.3 lower for males than females.
There is no point in interpreting the output for genderOther.
There is also some evidence of a negative association between reading books and wearing glasses. In particular each additional book read is associated with 0.3 lower log-odds of wearing glasss.

redpajama_set_name: RedPajamaStackExchange


Team Energy's Environment Program Manager Ronald Allan Altamirano has been a Field Biologist and Consultant for over 20 years, focusing primarily on birds in a collaborative effort with different international and local organizations.
Ronald holds a bachelor's degree in Biology and Wildlife Ecology from University of the Philippines Los Banos. He is also a member of the Wild Bird Club Society and Biodiversity Conservation of the Philippines.


The kinkajou, Potos flavus, is a small, tree-dwelling mammal of the family Procyonidæ. Distantly related to the raccoon, kinkajou are one of only two carnivores to have a prehensile tail. Also known as "honey bears," kinkajou behave as pollinators in many of the forests where they are found.
Kinkajou range stretches throughout most of the neotropical forests in Central and South America. This includes areas in southern Mexico and northern Brazil. Threats to the kinkajou include deforestation, capture for the exotic pet trade, and hunting for meat and fur.
Arboreal and nocturnal, the kinkajou is found in forests as high as 2,500 m and is an important seed disperser in the ecosystems where it is found. This includes the tropical rain, tropical evergreen, and tropical dry forests; savannah; coastal woods; and evergreen galleries in Central and South America.
The kinkajou is classified as a carnivore because of its teeth, but actually survives on a diet of fruit, flowers, and leaves.
Abigail arrived in 2007 alongside Aleco. A connoisseur of sweets, she chows down happily on a healthy diet (consisting of some proteins plus fruits and vegetables, including her favorite, sweet potatoes) but delights in rare sweet sticky treats like dried dates or honey. It's hilarious to watch her use her long skinny tongue to "mlem" at something yummy stuffed down into a PVC pipe—a form of kinkajou enrichment. But this elderly girl has an adorably sour side! Though Kinkajou society is not usually matriarchal, Abigail didn't get that memo. She bosses Aleco around and even insists that she gets treats first. Unfortunately, her leadership fails when it comes to common sense. During cold weather, the pair must be kept in the heated portion of their quarters because they just won't come in out of the cold if they have the option to stay outdoors.
Our male kinkajou, Aleco, is an easygoing guy who is almost always curious about people. Maybe a bit TOO curious, in fact. Aleco really loves the smell of people. He begs our trained animal care staff to touch his tail or feet so he can rub their scent all over his face. Aleco and his companion, Abigail, love to cuddle together under a baby blanket or cloth hammock. When they peek out during daylight hours they hold the blanket wrapped around their faces and look like little old people wearing cloaks. Aleco is very good at cleverly reaching out to grab things with his long, prehensile tail. He once also stole an intern's cap and spent the next several hours cuddling with it in his den!
Helgen, K., Kays, R. & Schipper, J. 2016. Potos flavus. The IUCN Red List of Threatened Species 2016: e.T41679A45215631. http://dx.doi.org/10.2305/IUCN.UK.2016-1.RLTS.T41679A45215631.en. Downloaded on 26 May 2017.


text:
import numpy as np
import scipy.sparse as sp

from scipy.sparse import csr_matrix
from itertools import chain

"""
authors: Clement Gehring
contact: gehring@csail.mit.edu
date: May 2015
"""

################## VARIOUS INTERFACES #######################################
""" Generic map from a state (as an array), to a feature vector (as an array)
"""
class Projector(object):
    def __init__(self):
        pass

    """ Project a vector (or matrix of row vectors) to a corresponding
        feature vector. It should handle 1-D arrays and 2-D arrays.
    """
    def __call__(self, state):
        raise NotImplementedError("Subclasses should implement this!")

    @property
    def size(self):
        raise NotImplementedError("Subclasses should implement this!")

""" Generic map from a state-action pair (as two arrays), to a feature
    vector (as an array)
"""
class StateActionProjector(object):
    def __init__(self):
        pass

    """ Project two vectors (or two matrices of row vectors) to a corresponding
        feature vector. It should handle 1-D arrays and 2-D arrays for both
        arguments and any combination of these cases, i.e., one state but
        several actions and vice-versa.
    """
    def __call__(self, state, action):
        raise NotImplementedError("Subclasses should implement this!")

    @property
    def size(self):
        raise NotImplementedError("Subclasses should implement this!")

""" Hashing an array of indices to a single index.
    Mostly used for tile coding.
"""
class Hashing(object):
    def __init__(self, **kargs):
        pass

    """ Hash several indices (typically, one per dimension) onto
        one index (typically, index of a tile). This could be a simple
        cartesian-product, i.e., unique index for every combination, or
        some sort of randomized hash function, e.g., UNH.

        Must be able to deal with 2D arrays of indices.
    """
    def __call__(self, indices):
        raise NotImplementedError("Subclasses should implement this!")

################## HELPER CLASSES FOR STATE PROJECTOR TO #####################
################## STATE-ACTION PROJECTOR CONVERSION     #####################

""" Simple method that ensures both arrays are 2D and that they share the same
    number of rows (for when only one row was given for one argument but not
    the other).
"""
def tile_and_adjust_state_action(state, action):
    # make everything 2-D
    if state.ndim == 1:
        state = state.reshape((1,-1))
    if action.ndim == 1:
        action = action.reshape((1,-1))

    # if one is 2D and but not the other, tile such that the dimensions
    # match.
    if state.shape[0] == 1 and action.shape[0]> 1:
        state = np.tile(state, (action.shape[0], 1))
    elif action.shape[0] == 1 and state.shape[0]> 1:
        action = np.tile(action, (state.shape[0], 1))

    return state, action

""" Simple state-action projector that simply treats the actions as
    extra dimensions and feeds it to a projector.
"""
class ConcatStateAction(StateActionProjector):
    def __init__(self, projector):
        self.projector = projector

    def __call__(self, state, action):
        state, action = tile_and_adjust_state_action(state, action)

        sa = np.hstack((state, action))
        return self.projector(sa)

    @property
    def size(self):
        return self.projector.size

""" Simple state-action projector that simply ignores the action. Mainly
    to be used when only a value function is needed.
"""
class RemoveAction(StateActionProjector):
    def __init__(self, projector):
        self.projector = projector

    def __call__(self, state, action):
        state, action = tile_and_adjust_state_action(state, action)
        return self.projector(state)

    @property
    def size(self):
        return self.projector.size

""" Create a tabular actions representaton with a state projector. The output
    vectors are padded with zeros such that the total dimension is
    n*num_actions, where n is the output dimension of the projector.

    If action i is given, then the whole vector is zero with the exception
    of columns n*i to n*(i+1), where the projected state will be encoded.

    The resulting output can be either dense or sparse.

"""
class TabularAction(StateActionProjector):
    def __init__(self, projector, num_actions, sparse = True):
        self.phi = projector
        self.__size = self.phi.size * num_actions
        self.num_actions = num_actions
        self.sparse = sparse

    def __call__(self, state, action):
        state, action = tile_and_adjust_state_action(state, action)
        phi_s = self.phi(state)
        phi_s = csr_matrix(phi_s)

        # this step assumes that, if sparse, each row has the same number of
        # non zero elements.
        action = np.tile(action, (1, phi_s.indptr[1] - phi_s.indptr[0])).reshape(-1).astype('int')

        phi_sa = csr_matrix((phi_s.data,
                             phi_s.indices + action*self.phi.size,
                             phi_s.indptr),
                            shape = (phi_s.shape[0], self.size))
        if not self.sparse:
            phi_sa = phi_sa.toarray()
        return phi_sa

    @property
    def size(self):
        return self.__size

################## HELPER CLASS FOR INDEX TO VECTOR CONVERSION ################

""" Projector converting a projector, which generate indices, to a
    projector generating sparse vectors (as a csr matrix)
"""
class IndexToBinarySparse(Projector):

    """ Constructor to go from a projector generating indices to a
        projector generating sparse vectors (as a csr matrix)

        index_projector:    the projector generating indices, it needs to be
                            be able to handle 2-D arrays
    """
    def __init__(self, index_projector):
        super(IndexToBinarySparse, self).__init__()

        self.index_projector = index_projector

    def __call__(self, state):
        # generate indices for a single (or several) binary sparse vector(s).
        indices = self.index_projector(state)
        if indices.ndim == 1:
            indices = indices.reshape((1,-1))

        # values are all 1.0
        vals = np.ones(indices.size)

        # create row pointers, this assumes each row has the same number
        # of non-zero entries
        row_ptr = np.arange(0, indices.size+1, indices.shape[1])

        # flatten the column indices generate ealier
        col_ind = indices.flatten()

        return csr_matrix((vals, col_ind, row_ptr),
                          shape = (indices.shape[0], self.size))
    @property
    def size(self):
        return self.index_projector.size

""" Projector converting a projector, which generate indices, to a
    projector generating dense vectors (as an array)
"""
class IndexToDense(Projector):

    """ Constructor to go from a projector generating indices to a
        projector generating dense vectors (as an array)

        index_projector:    the projector generating indices, it needs to be
                            be able to handle 2-D arrays
    """
    def __init__(self, index_projector):
        super(IndexToDense, self).__init__()

        self.index_projector = index_projector

    def __call__(self, state):
        # generate indices for a single (or several) binary vectors
        indices = self.index_projector(state)
        if indices.ndim == 1:
            indices = indices.reshape((1,-1))

        # allocate dense array
        output = np.zeros((indices.shape[0], self.size))

        # create row indices
        row_ind = np.tile(np.arange(indices.shape[0]).reshape((-1,1)),
                          (1, indices.shape[1])).flatten()

        # set values to 1.0
        output[row_ind, indices.flatten()] = 1.0

        # squeeze out useless dimensions, if any
        return output.squeeze()

    @property
    def size(self):
        return self.index_projector.size

""" Projector concatenating several projectors into the same representation
    by concatenating their outputs.
"""
class ConcatProjector(Projector):
    def __init__(self, projectors):
        super(ConcatProjector, self).__init__()
        self.phis = projectors

    def __call__(self, state):
        return np.hstack((phi(state) for phi in self.phis))

    @property
    def size(self):
        return sum([phi.size for phi in self.phis])

################## TILE CODING IMPLEMENTATION ################################

""" Represents a series of layer of tile coding. This is equivalent to a single
    discretization of the input space.
"""
class Tiling(object):

    """ Constructor for a set of tilings.

        input_index: array (or list) of the input indices to be considered. This allows
                     to specify on which inputs are the tilings defined.

        ntiles: integer, or array of integers, specifying how many uniform
                divisions for each dimension (or all dimensions if a single
                integer is given). Each layer in this set will have the same
                number of divisions in each dimension.

        ntilings: The number of individual layers in this set of tilings.

        state_range:    range of each dimension

        offset: (optional) the offsets between each layer in this set of
                tilings. By default, each layer is uniformly offset from
                each other. Shape: (#dimensions, ntilings), i.e. for each
                dimension you have to specify the offset of each tiling. For
                dimension d, the offset should be negative and > -1/ntiles[d].
                So if you want random offsets for one dimension, you could use
                something like this:
                -1.0/ntiles[d] * np.random.random_sample(size=ntilings)

        hashing:    (optional) map from the individual bin index for each
                    dimension to a tile index. By default, this is assumed
                    to be a cartesian product, i.e., each combination if
                    mapped to a unique index. This is equivalent to laying a
                    grid over all input dimensions at once. Alternatively,
                    this could map could be defined by a random hash funciton
                    (e.g., UNH).
    """
    def __init__(self,
                 input_index,
                 ntiles,
                 ntilings,
                 state_range,
                 offset = None,
                 hashing = None):

        self.hashing = hashing

        if isinstance(ntiles, int):
            ntiles = np.array([ntiles]*len(input_index), dtype='int')
        else:
            ntiles = np.array(ntiles)

        self.state_range = [state_range[0][input_index].copy().astype(float),
                                state_range[1][input_index].copy().astype(float)]

        self.offset = offset
        if offset is None:
            self.offset = np.empty((ntiles.shape[0], ntilings))
            for i in range(ntiles.shape[0]):
                self.offset[i,:] = -np.linspace(0, 1.0/ntiles[i], ntilings, False);

        if self.hashing == None:
            self.hashing = IdentityHash(ntiles)

        self.input_index = np.array(input_index, dtype='int')
        self.size = ntilings*(self.hashing.memory)
        self.index_offset = (self.hashing.memory * np.arange(ntilings)).astype('int')
        self.ntiles = ntiles

    def __call__(self, state):
        return self.getIndices(state)

    def getIndices(self, state):
        if state.ndim == 1:
            state = state.reshape((1,-1))[:,:,None]
        else:
            state = state[:,:,None]

        nstate = (state[:, self.input_index, :] - self.state_range[0][None,:,None])/(self.state_range[1]-self.state_range[0])[None,:,None]
        indicies =((self.offset[None,:,:] + nstate)*self.ntiles[None,:,None]).astype(np.int)
        return self.hashing(indicies) + self.index_offset[None,:]

""" Full tile coding implementation. This represents a projector, from states
    to features.
"""
class TileCoding(Projector):

    """ Constructor for a tile coding projector. The constructor builds
        several sets of individual tilings based on the input arguments.

        input_indicies: a list of arrays of indices. Each array of indicies
                        specifies which input dimensions are considered by
                        each set of tilings. There will be as many sets of
                        tilings as there are array of indices.

                        e.g., input_indices = [ [0,1], [1,2] ] will generate
                        two sets of tilings, one defined on the first and
                        second dimension, and the other on the second and
                        third dimension.

        ntiles: list of a mix of integers or array of integers. This specifies
                the how fine is the discretization in each set of tilings. There
                should be an element (either integer or array of integers) for
                each set of tilings. If a set of tilings is given an integer,
                each dimensions are discretized in that many bins. If a set of
                tilings is given an array, it should be of the same size as
                the number of input dimensions it uses. In this case, it will
                discretize each dimensions in as many bins as the corresponding
                integer in the given array.

                e.g., ntiles = [ 4, [2,6] ] will generate two sets of tilings
                where the first discretizes all its input dimensions in 4 bins,
                and the second discretizes its first input dimension in 2 bins
                and its second, in 6 bins.

        ntilings:   array (or list) of integers corresponding to how many
                    individual layers are in each set of tilings. In this
                    implementation, individual layers in the same set are
                    uniformly offset from each other.

        hashing:    either None, or list of hashing functions. This specifies
                    the hashing function to be used by each set of tilings. It
                    is assumed that each individual layer part of the same set
                    share the same hash funciton. If None is given, then each
                    set of tilings will use a cartesian product, i.e., each
                    combination of indices is mapped to a unique tile. This is
                    equivalent to laying a n-d grid on the input dimensions.

        state_range:    range of each dimension

        offsets:    (optional) the offsets between the layers for each set of
                    tilings. By default, all layers are uniformly offset from
                    each other. If you provide a list of lists of offsets (which
                    is recommended), this must hold: len(offsets) ==
                    len(input_indices). Each item in offsets is passed to the
                    constructor of Tiling, so see there for further
                    documentation.

        bias_term:  (optional) boolean specifying whether to add an extra bias term which
                    is always on. By default, a bias_term is added.

    """
    def __init__(self,
                 input_indices,
                 ntiles,
                 ntilings,
                 hashing,
                 state_range,
                 offsets = None,
                 bias_term = True):
        super(TileCoding, self).__init__()
        if hashing == None:
            hashing = [None]*len(ntilings)
        if offsets is None:
            offsets = [None for _ in range(len(input_indices))]
        self.state_range = state_range
        self.tilings = [Tiling(in_index, nt, t, state_range, offset=o, hashing = h)
                        for in_index, nt, t, h, o
                        in zip(input_indices, ntiles, ntilings, hashing, offsets)]
        self.__size = sum(map(lambda x: x.size, self.tilings))
        self.bias_term = bias_term
        self.index_offset = np.zeros(len(ntilings), dtype = 'int')
        self.index_offset[1:] = np.cumsum(map(lambda x: x.size, self.tilings[:-1]))
        self.index_offset = np.hstack( [np.array([off]*t, dtype='int')
                                            for off, t in zip(self.index_offset, ntilings)])

        if bias_term:
            self.index_offset = np.hstack((self.index_offset, np.array(self.__size, dtype='int')))
            self.__size += 1

        self.__size  = int(self.__size)

    """ Map a state vector, or several state vectors, to its corresponding
        tile indices.
    """
    def __call__(self, state):
        if state.ndim == 1:
            state = state.reshape((1,-1))

        # add bias term if needed, concatenate set of indices of all
        # the sets of tilings.
        if self.bias_term:
            indices = np.hstack(chain((t(state) for t in self.tilings),
                                      [np.zeros((state.shape[0], 1), dtype='int')])) \
                            + self.index_offset
        else:
            indices = np.hstack((t(state) for t in self.tilings)) \
                            + self.index_offset

        return indices.squeeze()

    @property
    def size(self):
        return self.__size

class UNH(Hashing):
    # constants were taken from rlpark's implementation.
    increment = 470
    def __init__(self, memory):
        super(UNH, self).__init__()
        self.rndseq = np.zeros(16384, dtype='int')
        self.memory = int(memory)
        for i in range(4):
            self.rndseq = self.rndseq << 8 | np.random.random_integers(np.iinfo('int16').min,
                                                                       np.iinfo('int16').max,
                                                                       16384) & 0xff
    def __call__(self, indices):
        rnd_seq = self.rndseq
        a = self.increment*np.arange(indices.shape[1])
        index = indices + a[None,:,None]
        index = index - (index.astype(np.int)/rnd_seq.size)*rnd_seq.size
        hashed_index = (np.sum(rnd_seq[index], axis=1)).astype(np.int)
        return (hashed_index - (hashed_index/self.memory).astype(np.int)*self.memory).astype('uint')

class IdentityHash(Hashing):
    def __init__(self, dims, wrap = False):
        super(IdentityHash, self).__init__()
        self.memory = np.prod(dims)
        self.dims = dims.astype('int')
        self.wrap = wrap
        self.dim_offset =np.cumprod(np.hstack(([1],self.dims[:0:-1]))).astype('int')[None,::-1,None]

    def __call__(self, indices):
        if self.wrap:
            indices = np.remainder(indices, self.dims[None, :,None])
        else:
            indices = np.clip(indices, 0, self.dims[None, :,None]-1)
        return np.sum(indices*self.dim_offset, axis=1)

################## END OF TILE CODING IMPLEMENTATION #########################

################## RBF IMPLEMENTATION ########################################

class RBFCoding(Projector):
    """ Constructor for an RBF encoding.

        stddev: scaling of the dimensions when computing the distance. Each
                dimension needs a scale. If only a 1-D array is given, all
                RBFs are assumed to have the same scaling, otherwise, it is
                assumed that there is a row specifying the scale for each
                RBF.

        c:  centers of the RBFs. The number of rows corresponds to the number
            of RBFs. The number of column should be equal to the input
            dimension. Each row is a center for a RBF.

        normalized: Boolean to decided whether the RBFs should be normalized.

        bias_term:  Boolean to decided whether the output should be augmented
                    with a constant 1.0 bias term.
    """
    def __init__(self,
                 widths,
                 centers,
                 normalized = False,
                 bias_term = True,
                 **params):
        super(RBFCoding, self).__init__()

        # the centers of the rbfs
        self.c = centers.T[None,:,:]

        # the widths of the rbfs, each rbf can have different widths
        if widths.ndim == 1:
            self.w = widths[None,:,None]
        else:
            self.w = widths.T[None,:,:]

        # should the output of the rbfs sum to one
        self.normalized = normalized

        # include a bias term (always equal to one)
        self.bias_term = bias_term

        # size of the encoded vectors
        self.__size = centers.shape[0]

        # if bias term is included, increment the size
        if bias_term:
            self.__size += 1

    def __call__(self, state):
        # if only on 1-D array given, reshape to a compatible shape
        if state.ndim == 1:
            state = state.reshape((1,-1))

        # allocate and set bias term if needed
        last_index = self.size
        output = np.empty((state.shape[0], self.size))
        if self.bias_term:
            last_index -= 1
            output[:,-1] = 1.0

        # compute squared weighted distance distance
        dsqr = -(((state[:,:,None] - self.c)/self.w)**2).sum(axis=1)
        if self.normalized:
            # compute the normalized rbfs from the distances
            e_x = np.exp(dsqr - dsqr.min(axis=1)[:,None])
            output[:,:last_index] = e_x/ e_x.sum(axis=1)[:,None]
        else:
            # compute the rbfs from the distances
            output[:,:last_index] = np.exp(dsqr)

        # return encoded input, squeeze out extra dimensions (in the case
        # only on input row was given)
        return output.squeeze()

    @property
    def size(self):
        return self.__size

""" Method to generate grids of points (typically for RBF coding).

    state_range: range of each dimension

    num_centers:    An integer or an array (or list) of integers which
                    corresponds the number of points to distribute on each
                    dimensions. If a single integer is given, all dimensions
                    will have the same number of points.
"""
def grid_of_points(state_range, num_centers):
    if isinstance(num_centers, int):
        num_centers = [num_centers] * state_range[0].shape[0]
    points = [ np.linspace(start, stop, num, endpoint = True)
                    for start, stop, num in zip(state_range[0],
                                                 state_range[1],
                                                 num_centers)]

    points = np.meshgrid(*points)
    points = np.concatenate([ p.reshape((-1,1)) for p in points], axis=1)
    return points

################## END OF RBF IMPLEMENTATION ##################################

redpajama_set_name: RedPajamaGithub


text:
Along Came a Demon by Marteeka Karland #DarkDesire #NewRelease #SFR @changelingpress @marteekakarland
Posted on April 12, 2019 by jessicacoultersmith
Publisher: Changeling Press
Cover Artist: Marteeka Karland
Genres/Themes: Action Adventure, Sci-fi, Dark Desire,
Single Parent/Pregnancy Romance
A Shadow Demon, hell-bent on protecting his city…
Alexei Petrov has more money than he can ever spend in many lifetimes, but his life is more than glitz and glamour. Behind the scenes, Alex is part of an elite group working in the shadows, hunting down those who would prey on the most vulnerable in the city. Which is how he found the most desirable women he's ever seen.
A young mother in fear for the life of her child…
Merrily fled with her daughter with death on her heels. She has no idea what her father has done, but he's managed to throw her and little Bellarose into the middle of a war. Scared, hunted, Merrily gets caught in the crossfire of what looks like a gang war, but it's something far more sinister. A desperate flight lands her in the arms of Alexie Petrov. Literally. And the man is everything she knows she can never have but wants with every fiber of her being.
Even tucked safely away in the home of the richest, most powerful man in the city of Rockwell, Merrily's past finally catches up with her. Bellarose's father has come calling, and hell is hot on his heels. Fleeing seems like her only option, but Alex is just as dangerous as anything headed her way. And far too seductive and possessive for her peace of mind. Though she knows he will only break her heart, Merrily can't resist the lust that burns between them and soon finds herself more than infatuated with the man. Needing to prove her worth, Merrily knows she's up for the challenge. Welcomes it. But just who are the demons in the night? And why does she welcome this one's embrace?
Copyright ©2019 Marteeka Karland
The thing about homeless shelters was they were exactly what the name described and nothing more. Shelter. For the homeless. There was nothing remotely safe about them. Merrily Dane couldn't remember the last time she'd had a decent night's sleep. Between the creepy pervert who was supposed to be on the other side of the room away from the young mothers and children, and the drug addicts — who weren't supposed to be there in the first place — making deals at all hours of the night, she was turning into a paranoid insomniac.
She tightened her hold around her daughter, Bellarose, and whispered next to her ear, "I love you, pumpkin." Merrily hated being in this situation, but until she could get on her feet again, she didn't have much choice. Getting back on her feet wasn't going to be easy without an identity.
"I love you back, Mommy." Somehow, the child seemed to know she needed to keep her voice down. She'd learned quickly in the time they'd been on the run. It broke Merrily's heart nearly as much as it made her angry.
"Hey, Mommy?" Rose continued to whisper.
"Yeah, baby."
"When we get to our forever home, can I have a black cat, and a white cat, too?"
"Sure, baby. I'll do my best." Merrily's heart was breaking. Rose asked for the same thing every night. They'd left her black-and-white tuxedo cat when they'd been forced to leave and the girl had been heartbroken. Hell, Merrily had been heartbroken.
Fortunately, the lady next door had agreed to look after the animal while Rose and Merrily were on "vacation." Mrs. Burton had offered to take the cat several times in the past so Merrily didn't feel like she'd imposed too much on the older woman. Instead of a fun-loving outing, however, she and Rose were stuck in a homeless shelter trying to make their way out of the reach of whatever gangster her father had crossed.
The barracks layout of this shelter wasn't exactly conducive to privacy or quiet, but it was all she'd been able to find with an available bed in this city. This time of year, the shelters were maxed out. Luckily, she'd found a spot in the corner so she could put her daughter on the inside of the bed and herself between Rose and everyone else. It was a small, bunk-style bed barely big enough for one person, but Merrily was small and her daughter was only four. She figured she needed to find something better in the morning because this place was seriously creeping her out. Then again, it was probably the only shelter that didn't require an ID and she couldn't afford to be on the grid.
Which brought Merrily to her greatest worry. Despite the shady characters surrounding her, despite not knowing where their next meal was coming from, despite the shelter being one step away from being out on the streets alone with a four-year-old, Merrily was terrified her father's "employers" were finally on her trail. It was nothing overt, just a feeling of being watched.
Bellarose shivered and Merrily brought the threadbare blanket higher to make sure the child was covered completely. She hated turning her back to the room — especially since she knew she needed to keep an eye on everyone and everything — but she knew she was too slight of build to be much good in a fight and the only protection her daughter had was Merrily's own body. She tried to shift the arm pillowing Rose's head to get circulation going again.
Life sucked sometimes. She and her beloved daughter were cold. In a homeless shelter full of shady people. Terrified out of their minds. Being hunted. She could practically feel the hunters breathing down her neck. She had to get out of this city. The only reason she'd stopped here was because it was as far as her money would take her and the only city with a bus station in the area.
After a couple of hours worrying about what her next move needed to be, she finally drifted off, wondering how the hell she was going to get herself out of this mess.
"If you keep Hell Bitch waiting, it will just be that much worse." Azriel wasn't actually referring to a person. He referred to the white cat that had adopted the Shadow Demons as her humans. She completely ignored the black cat currently dozing in Azriel's lap. The white cat's gaze focused completely on Alexei Petrov, and Hell Bitch's ears were laid back in that way cats have of showing their complete displeasure with someone.
Alexei Petrov glanced down at the feline warily. The beast might look innocent sitting there all prim and proper-like with her tail curled around her paws, but she was even more of a demon than any man in their organization. Alexei and his crew were justice when justice was overlooked or beaten down. Called vigilantes by some. Heroes by others. Personally, Alex thought all of them fought their individual demons so the name Shadow Demons fit in more ways than one.
"Don't let the pussy make you a pussy, boss." Giovanni Romano was the tech guy in a group of tech guys. If there was a gadget he didn't have or know how to get, no one had ever been able to name it. Not only could he obtain anything they wanted or needed, he made himself an expert with it in a few hours, thanks to his photographic memory and genius IQ. If he still didn't have what he needed — or wanted — the bastard simply made it. He was invaluable in their endeavors, but he was a bit of a smart ass.
Alexei flipped him off as he bent down to scoop up Hell Bitch, as they affectionately called the demon cat. She abruptly flattened her ears, bared her teeth, and scratched the shit out of him. When he dropped her, she turned and sauntered over to her food bowl and sat down, again looking straight at Alex.
"Bitch," he muttered under his breath. The cat growled softly, her dual-colored eyes narrowing. "Just for that you get the dry food." He poured a scoopful into her bowl. Hell Bitch reached over and upended the bowl as if to say get me the fucking Royal Canin, bitch boy.
Alex raised an eyebrow, glancing at Gio, who was studiously looking everywhere but at him. Then Alex stomped to the cabinet and grabbed Hell Bitch's favorite flavor from a stockpile of canned cat food. He opened it and the cat's whole face relaxed as if in bliss. Again, she sat all prim and proper with her tail wrapped around her feet until Alex had gotten every morsel out of the can.
"Have at it," he grumbled. When Azriel snickered, Alexei smacked the back of his head as he walked by. "Next time," he told Azriel, "feed her before six. I'm not the only one with access to the fucking cat food."
"She thinks it's your job to feed her in the evening," Azriel commented, raising a hand in surrender. "You know she won't eat unless you put her food out."
"Fucker," he muttered as he stalked through the room to the shower. It had been a long fucking day and he just wanted to scrub himself from head to toe.
Before he could, however, Giovanni stiffened and sat up straight in his chair. Alex paused. "We got bad guys afoot?"
Giovanni's workstation consisted of a wall of monitors showing every corner of the problem sections of the city of Rockwell. The wealthy, more affluent sections monitored themselves, but the people in the sectors the Demons monitored were at the mercy of the city's underground crime bosses. This was where men like the Demons were needed. Places the police were afraid to go. As time-consuming as it was setting up tech to monitor these places, as well as the endless testing of gadgets and physical training, this was something Alex knew he had to do. It was what he had been born to do.
"Hell's Playground." Azriel sighed as he glanced over Gio's shoulder. "It's every fucking week with that place. If there's trouble, you can bet it will be there."
This entry was posted in Erotic Romance, New at Changeling Press and tagged Dark Desires, demon romance, demons, erotic romance, science fiction erotic romance by jessicacoultersmith. Bookmark the permalink.

redpajama_set_name: RedPajamaCommonCrawl


Reuland is the "Worlds most Flexible Electric Motor Manufacturer". Gaining its roots in the 1930�s Reuland has had a long history of providing a full line of quality products. From our full service aluminum foundry to our precision machine services, Reuland has been meeting customers needs for 80yrs in an ever expanding industry.


Super Secondary Jaw Crusher | Deepa Machinery Manufacturers .
Introduced in the year 1972, Deepa crushers now occupy an envious position and dominate the market all over south India. Deepa Machinery Manufacturers.
Secondary Jaw Crusher | Deepa Machinery Manufacturers Pvt. Ltd .
Dec 10, 2013 . Deepa Crushers, a name synonymous with stone crushing industry, are the first and best double toggle crushers made in south India.
Horizontal Shaft Impact Crusher - Deepa Machinery Manufacturers .
Deepa Crushers, a name synonymous with stone crushing industry, are the first and best double toggle crushers made in south India. Introduced in the year.


text:
Erie chamber names new CEO
Jim Martin @etnmartin
Aug 10, 2018 at 12:01 AM Aug 10, 2018 at 6:16 AM
The new leader, hired after a nationwide search, is James W. Grunke, president and CEO since 2012 of the Missoula Economic Partnership in Missoula, Montana.
The Erie Regional Chamber and Growth Partnership, which had set economic development as the top priority for its new leader, has named a new CEO.
James W. Grunke, president and CEO since 2012 of the Missoula Economic Partnership in Missoula, Montana, was hired after a nationwide search.
The announcement comes less than 10 months after Barbara Chaffee, who led the chamber for more than six years, stepped down from that position.
Grunke, who holds both bachelor's and master's degrees from Boise State University, faces high expectations as he steps into that role on Sept. 17.
Following the bankruptcy two years ago of DevelopErie, Erie County has been undergoing a careful examination of its economic development system. One of the primary conclusions was that many of the pieces of that system worked well, but that someone needed to be in charge. What's more, local leaders led by Erie County Executive Kathy Dahlkemper decided that the CEO of the chamber should be that person.
According to the chamber, Grunke has a track record of achievement. During his tenure with the Missoula Economic Partnership, the region added 10,000 new jobs and attracted nearly $1 billion in capital investment.
"James possesses exactly the skills that we and our public and private partners know are needed as we reinvent our region's economic development strategy and elevate the role of the chamber in the development process," Tom Tupitza, chairman of the chamber's board of directors, said in a statement.
Grunke, who is 54 and has lived for most of his life in the Northwest, said he was excited about the opportunity he saw 2,000 miles away in Erie.
"The more I was looking at Erie and the opportunity, it seems like Erie is poised for success," he said. "Clearly, the opportunity was intriguing, but it was really about the people involved."
Grunke gave more than a passing nod to that sentiment in an interview Thursday.
Asked about what skills he brings to the job, he said, "I think I have the right skills for where Erie is right now. Erie reminds me of where Missoula was in 2010."
He stressed, however, that he sees himself as a member of a community.
"All of my success has been about the people who have been involved," he said. "I have some skills and some strategies, but this is by no means about me. There is some good foundation work that has been done. Sometimes it's great that you are looking at it from 2,000 miles away. Maybe you need that perspective."
During a 25-year career, Grunke has served as a public affairs consultant, executive director of a development commission, led a chamber of commerce and served as project director for National Community Development Services.
Tupitza said in an interview that Grunke was the unanimous choice of the 10-member search committee led by Ralph Ford, chancellor of Penn State Behrend.
"We want a world-class economic development system and we need someone who has executive and strong leadership skills. We think James checks all the boxes," Tupitza said. "We had an excellent search consultant who brought us good candidates ... but James rose to the top."
Ford said Thursday that he was feeling good about both the choice and what he saw as a thorough selection process that included input from a lot of different people
"There were really a number of people out there who were highly qualified who were interested in the position," Ford said. "Erie has a really compelling story to tell right now and they wanted to hear about it."
Local business leaders often talk about the challenges of attracting top talent to Erie because of the harsh winter weather. But Grunke, who will be moving here with his wife and the youngest of their three daughters, said he's not worried about the weather.
"It's a beautiful part of the country," he said. "As someone from the Northwest, the outdoors are an important part of our lives and having the lake and the outdoor activities are absolutely thrilling."
Ford, who moved to Erie from Arizona, said the subject of the climate came up but didn't seem to be a sticking point.
"It's not as though it's not cold in Montana," Ford said. "I think climate can be a part of it, but it's really the opportunity."
Jim Martin can be reached at 870-1668 or by email. Follow him on Twitter at www.twitter.com/ETNMartin.