text:
Excerpt and giveaway: 'Tortured Souls' by Kimber Leigh Wheaton
Posted: July 17, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: contests, romance, urban fantasy, young adult | 2 Comments
Tortured Souls (The Orion Circle #1)
by Amazon Bestselling Author Kimber Leigh Wheaton
YA Paranormal Romance
Amazon * Goodreads
Sometimes Rest in Peace isn't an option
Kacie Ramsey sees ghosts—and it's ruining her life. Her mother left, her father blames her, and no matter how hard she tries, she can't keep the ghosts away. Now a new power has emerged. Nightly visions of grisly murders and a relentless predator draw her to the brink of insanity.
When the phantom appears at a party, Kacie's longtime crush, Logan, saves her. He invites her to join the Orion Circle, a group of supernatural hunters with chapters in schools all over the country. Through the Circle, Kacie learns to embrace her spiritual powers, and for the first time in her life she feels in control rather than a victim.
But the Foxblood Demon will not give up so easily. A demented serial killer in life who trapped the souls of the thirteen children he murdered, imprisoning them within the walls of his mansion. Now in death, he plots his return while drawing power from the pure souls of the children. He recognizes something in Kacie he's never seen before—a medium powerful enough to provide a vessel for his tainted soul.
Kacie can't ignore the tortured souls of the children crying out to her every night. With Logan at her side, she will fight the Foxblood Demon. But can they banish this powerful phantom, or will Kacie lose not only her body, but her eternal soul to the monster.
Deafening music shakes the walls, vibrates the floor, and pounds a rhythmic beat in my skull. Gyrating bodies turn every bit of space into a dance floor. Sweat breaks out on my forehead, and my heart races. Strobe lights flash, teens dance with wild abandon. Shrieking laughter bubbles around me.
"Gotta take a leak!" my dance partner shouts over the music.
He races off, weaving through the thick wall of bodies. Mike or Mick or something—I didn't catch the name he yelled when he asked me to dance. Doesn't matter, he wasn't my type at all. I mean, the guy guzzled beer while dancing. After grabbing a diet soda from a nearby cooler, I'm about to search for my friends when a dark feeling washes over me. My feet refuse to move, and I stand rooted in place.
The once loud music is now hollow in my ears. I gasp for breath, choking on the lack of air around me. Tiny hairs on the nape of my neck rise to attention. Something wicked is behind me. I know I'm the only one here who feels a difference in air pressure. An oppressive weight presses against my skin, making me feel as though I'm underwater. I blink a few times, watching the people around me continue their manic dancing—oblivious to the bogeyman that just entered the room.
Afraid to turn around, I stand my ground, sipping my soda. I pretend I'm unaware of the shuffling noises behind me, sounds I shouldn't be able to hear over the blaring music. Swaying my hips, I hum along with the music, trying to ignore the ominous presence crushing me.
Whatever it is, I can't let it know I sense it. Evil pours off it in waves, blanketing the entire room. I close my eyes, willing the creature to go away, return to whatever mausoleum or grave it calls home. Malevolent spirits feed on fear. I must control mine at all costs.
When I open my eyes, I'm gazing into the face of an angel. Not literally, but he may as well be in my book. Logan glances behind me, and I know he sees the spirit. He doesn't gasp or scream or faint dead away. His golden eyes narrow as though he's in a staring contest with the specter.
"You're not welcome here," Logan says to the presence behind me. He meets my gaze again. "You know it's there."
It's not a question but a statement. I nod, a weak bob of my head, unsure whether this intimate moment with my dream guy is a good thing or not. Meeting over a nasty phantom is not my idea of romantic. And yet I can't stop staring at the way his blue t-shirt hugs his broad shoulders and chest—how his light brown hair curls around his earlobes. I don't know whether to laugh or cry. For six weeks I've wanted out of the friendship box with Logan, but I was hoping for girlfriend, not crazy girl.
"Kassandra," a voice rasps behind me.
Enter to win HERE!
Kimber Leigh Wheaton is a bestselling YA/NA author with a soft spot for sweet romance. She is married to her soul mate, has a teenage son, and shares her home with three dogs, four cats, and lots of dragons. No, she doesn't live on a farm, she just loves animals. Kimber Leigh is addicted to romance, videogames, superheroes, villains, and chocolate—not necessarily in that order. (If she has to choose, she'll take a chocolate covered superhero!) She currently lives in San Antonio, TX but has been somewhat a rolling stone in life, having resided in several different cities and states.
Website | Twitter | Goodreads | Facebook | Pinterest
Release day blitz: 'Endre' (Elsker Saga #2) by ST Bende
Posted: July 17, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: book launch, romance, urban fantasy | 3 Comments
Before I launch into the festivities, I just wanted to add a little note to this post. I've read both the first book in the series, Elsker, and the novella prequel, Tur (which, by the way, you can get for free if you want to try ST's style before you buy — there are links at the bottom of this post!). I'm planning to put a review of Tur up in the next few days, and Endre is on my TBR list. The series is a sweet romance with hot Norse gods in it. If that sounds like your thing, these are the books for you! — Cass
Endre (Elsker Saga #2) by S.T. Bende
Upper YA/NA Paranormal Romance
Sometimes, finding your destiny means doing the exact opposite of what The Fates have planned.
Winning the heart of an immortal assassin was a dream come true for Kristia Tostenson. Now she's knee deep in wedding plans, goddess lessons, and stolen kisses. But her decision to become immortal could end in heartbreak — not only for Kristia, but for the god who loves her. Because while Ull would do anything to protect his bride, even the God of Winter is powerless against the Norse apocalypse. Ragnarok is coming.
And the gods aren't even close to ready.
Goodreads | Amazon | Amazon UK | Barnes & Noble | Kobo
The Amazon bestselling Upper YA Paranormal Romance series inspired by Norse mythology and featured in USA Today.
What reviewers are saying about The Elsker Saga:
"The characters will leave an imprint on your heart and mind for a long time to come." — Lisa (Bound by Books)
"Bende takes classic bits of Norse mythology and throws in original elements to create her own tasty Nordic blend… I'll definitely be checking out the sequel!" — Bookalicious Reviews
"One of my favorite books of the year." — White Zin Bookends
"Action packed with a heart pounding romance!" — Curse of the Bibliophile
"This book was nearly impossible to put down and I'm dying for the sequel!" — Brittany and Bianca Blab Books (now BiblioBelles)
When I came to, my chest heaved with sobs. Cold sweat cloaked my body from my forehead to the backs of my knees. My hair was damp, my pulse was racing, and my fingers gripped the sheets so tightly my knuckles ached. I was in my room at Ýdalir, the one place I had always felt safe. Only now I was absolutely terrified.
I ripped the covers off and wrapped my arms around my legs. My nose twitched at an unfamiliar smell. I pulled the cord on the bedside lamp, and looked around to see what might be burning. There was no smoke in the room; all of the furniture seemed to be intact. But when I glanced down, I saw the hems of my pajamas. They were black, singed from the fire I'd desperately hoped had been part of a dream.
This time things had gone too far. If my smoldering pant legs were any indication, being injured in a vision could have far-reaching worldly consequences. And if Elfie had come that close to killing me . . .
Ull had his rules, but I no longer cared. I jumped out of bed and raced down the hallway. When I reached his door I pounded on the distressed wood. Tears streamed down my face but I didn't bother to wipe them away. The downpour was too intense; it wouldn't have done any good anyway.
The door flew open and Ull stood on the other side. He wore a loose pair of grey sweatpants and nothing else. Oh hot bejeebus. There was no way this guy was for real. It just wasn't humanly possible to look that good.
Oh, right. Ull wasn't human.
Despite the agony coursing through my awakening consciousness, this was a moment of glory I'd remember forever—the first time I saw Ull's naked torso. His sweats hung low on his hips, affording me a view of the cut just above the bone.
Holy Lord.
"Kristia?" Ull rubbed the sleep from his eyes. He took in my matted hair, tear-streaked face, and shaking hands. "Great Odin. What happened?"
He pulled me to him, crushing my face against the muscles of his chest. The knot in my stomach loosened infinitesimally. Just being near Ull gave me peace, but being this near Ull was like taking a sedative. Breathing in his woodsy smell made my panic subside. And when he pressed his hands against me—one to my hair, the other against the small of my back—my gut knew I was safe. Nothing bad could happen to me so long as I was in Ull's arms. I inhaled again, letting his familiar scent fill me from the inside until my shaking stilled. Then I pressed my lips against his skin. Hard.
"Sweetheart?" he asked again.
"I had another vision and it freaked me out. Can I stay with you?" I didn't take my lips off his chest as I spoke. I couldn't. He tasted divine—like spruce and soap and home. There was a very real possibility my mouth might be permanently adhered to his flesh, like a kid who'd tried to lick a frozen railing.
Only this was far less unpleasant.
Enter to win an ebook copy of Endre HERE!
Tur: An Elsker Saga Novella (Prequel)
AMAZON – BARNES&NOBLE – KOBO
Inga Andersson is the envy of every girl in Asgard. On the surface she has it all — great friends, a job as Odin's personal fight choreographer, and a happy ever after with her realm's hottest assassin. But when evil invades Asgard, her perfect world comes crashing down. Someone is planning to kill off the gods, and Inga's best friend Ull is first on their list. With the Norse apocalypse a nanosecond away, Inga has to decide how she'll spend her final moments of freedom. Because from the moment this battle begins, Inga's happily ever after will be nothing more than a memory.
Some things are worth fighting for.
Elsker: The Elsker Saga Book One
You don't win the heart of an immortal assassin without making a few enemies along the way. Kristia Tostenson prefers Earl Grey to Grey Goose and book clubs to nightclubs, but when she transfers from her one-stoplight town to Cardiff University in Wales she falls in love with Ull Myhr. Her new boyfriend isn't exactly what she was expecting. He's an honest to goodness Norse God – an immortal assassin fated to die at Ragnarok, the battle destined to destroy Asgard and Earth. Kristia's crazy visions are the only thing that can save their realms.
Her orderly life just got very messy.
Before finding domestic bliss in suburbia, ST Bende lived in Manhattan Beach (became overly fond of Peet's Coffee) and Europe… where she became overly fond of McVities cookies. Her love of Scandinavian culture and a very patient Norwegian teacher inspired the books of The Elsker Saga. She hopes her characters make you smile and that one day, pastries will be considered a health food.
Find ST on Twitter @stbende or her blog. While you're at it, introduce yourself to @UllMyhr — when he's not saving the cosmos from dark elves, he loves meeting new friends. Especially the human kind.
This Writer's Space: Amber A. Bardan
Posted: June 4, 2014 | Author: Cassandra Page | Filed under: On writing | Tags: erotica, romance, this writer's space | 3 Comments
Today's guest is the lovely Amber A. Bardan, whose debut, For Her Protection, came out on 30 May; as I draft this post it is climbing the Amazon charts! And because it's her release week this post also includes a fabulous giveaway! Prizes include a $100 Amazon Gift Card, Romantic Swag, and 3 eBook copies of For Her Protection.
It used to be the lounge room couch with my laptop balanced on my knee. For the first time I now have my very own work space. I'm more than a little in love with it. It contains everything I need to work—including a closable door!
Mum's you get it.
My favourite thing about where I write is that I'm surrounded by things that boost my creativity and inspire me—colours, scented candles, writing awards, my wedding photo, favourite books, not to mention it overlooks the backyard where I can watch my children play as I work.
Where I'm Inspired
There really is no one place. I'm inspired by so many things, but if I had to choose one thing or place that inspires me it would have to be Pinterest. In the time sucking arms of Pinterest I can create boards and fill them with all kinds of inspiration—pictures of characters, places, quotes and anything that matches my theme for a plot or story.
I mostly buy eBooks these days so I keep track of what I want to read on Goodreads. It's really a mix, but romance and fantasy top my lists.
For Her Protection
Barnes & Noble | Kobo | Amazon US | Amazon UK
You shouldn't mix business with pleasure.
Yet pleasure seems to be the one and only thing on Charlize's mind the moment Connor steamrolls into her life. Desperate to save her family company, prove she's more than a pretty face and worthy of being CEO, pleasure is a distraction she can't afford.
She doesn't want a bodyguard, especially not one whose caveman heroics kick her libido into hyperdrive. But surrounded by enemies and an attacker on the loose, there's only one man she can trust with her life.
Connor knows better than to get personal with clients. Yet there couldn't be anything more personal about his feelings for Charlize. From the moment he clapped eyes on her he wanted nothing more than to throw her over his shoulder and really give her something to scream about. He'll get his uptight she-cat to unwind, preferably one orgasm at a time.
With Connor in her office, her home, driving her to sweet, merciless distraction, there's only so long Charlize can resist his sexy, dominant brand of protection
About Amber
After spending years imagining fictional adventures, Amber finally found a way to turn daydreaming into a productive habit. She now spends her days as a graphic designer but her nights writing gritty, raw, erotic romance with heart.
She lives with her husband and children in semi-rural Australia, where if she peers outside at the right moment she might just see a kangaroo bounce by.
Website | Facebook | Twitter | Goodreads | Pinterest
Review: 'Wicked After Midnight' by Delilah S. Dawson
Posted: June 2, 2014 | Author: Cassandra Page | Filed under: Reviews | Tags: delilah s. dawson, reviews, romance, steampunk | 1 Comment
A contortionist and a rakish brigand navigate the cabarets of Paris to rescue a girl taken by slavers in the third steampunk-tinged romance of the Blud series.
Life as a contortionist in Criminy's Clockwork Caravan should be the height of exotic adventure, but for Demi Ward, it's total dullsville. Until her best friend, Cherie, is stolen by slavers outside of Paris, and Demi is determined to find her.
On the run from his own past, Vale Hildebrand, a dashing rogue of a highwayman, hides Demi from the slavers…but why? He pledges to help her explore the glittering cabarets of Paris to find her friend, but much to Vale's frustration, Demi soon attracts a host of wealthy admirers. The pleasures of music, blood, and absinthe could turn anyone's head, and it would be all too easy to accept Cherie's disappearance as inevitable—but with Vale's ferocious will and Demi's drive to find her friend, they soon have a lead on a depraved society of Parisian notables with a taste for beautiful lost girls. Can Demi wind her way through the seedy underbelly of Paris and save her best friend before she, too, is lost?
Wicked After Midnight is the third and final book in the Blud series, a set of three steampunk fantasy romance novels set in the same world but with each following a different pair of main characters. You could pick up any of the three and read it without having read the other two, and you'd be fine.
I love this series. Love love love. The world, a sort of medieval parallel to modern day Earth, is rich and dark and has clockworks and magic in equal measure. Plus Dawson's love interests in each book are smoking hot, strong, dangerous to their enemies and respectful of their leading ladies (which is one of the reasons they are smoking hot, in my book!). Wicked After Midnight brought us more of the same in that sense, while telling a different story.
The bulk of this book is set in the Blud equivalent of Paris, populated mostly by daimons — magical creatures that feeds on emotions — and the humans they need to survive. The main character, Demi, is a bludman (basically a vampire but with a bunch of unique aspects that separate them from your typical Dracula or Edward), and — due to her awesome contortionist abilities — quickly becomes a star in the cabaret. I love the movie Moulin Rouge and there were a lot of elements of that in here. I pretty much had the soundtrack stuck in my head the whole time I was reading.
The only fly in the ointment for me is that Demi is a bit of a diva. At the start of the book she basically harrasses her best friend, Cherie, into running away from the caravan to join the cabaret (despite all the warnings she gets about how this isn't the glamorous life she thinks it is). When Cherie goes missing, Demi decides the best way to find her is to follow through on her original plan and become a star. She then gets so swept up in her new life that at times she completely forgets about her friend. If it wasn't for Vale, quietly reminding her every so often that he's still pursuing her friend, Cherie would probably never be found.
Now, in Demi's defence, a lot of cabaret girls have gone missing, presumably taken by the same people that took Cherie, and her plan to make herself bait and investigate the clientele for hints of her friend isn't a bad one in and of itself. And she does regret the self-absorption, when she realises what she's done. But I would've liked to see more active searching as well, maybe a couple of scenes early on that involved her actually going out into the city looking for clues, just so I didn't feel like her decision to join the cabaret was her deluding herself into thinking she was "helping".
The overall theme of this book is quite pertinent despite its fantasy setting: mysogyny, rape culture and women's fight against it. And any qualms I had about Demi were blown right out of the water by her defiant reaction to that culture and the things that are expected of her as a dancer and a courtesan. There's no doubt that if anyone actually tried to force themselves on her, she'd gut them. For example, I love this quote:
My only choices were play nice, get raped or die?
Yeah, no.
The Blud series is a great read, and definitely worth your time if you like stories about carnivals and dancers; hot vampires; steampunk technology (and let's take a moment to acknowledge the awesomeness that is Coco in this book — she's only in two scenes and she steals them both); respectful men who are apparently fantastic in bed (*fans self*!); and strong women who know what they want and aren't afraid to take it.
Interview: Rachel Schieffelbein, contemporary romance author
Posted: June 1, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: Interview, romance | 4 Comments
Today I'm interviewing Rachel Schieffelbein, young and new adult contemporary romance author. Her newest release, Don't Fall, came out on 27 May.
Don't Fall is acontemporary version of Rapunzel (and I love the pun in the name, by the way!). What is it about fairy tales that inspires you?
I'm kind of a romantic. I love true love, and magic, and all that stuff. I wanted Anya and Zander's story to still have that magical, fairy tale feel to it.
Tell us about Anya and Zander. What is their relationship like?
It's very sweet, I think. They're very tender to each other. But Zander does get frustrated with the secrecy, and he doesn't understand Anya's relationship with her mom.
What about Anya's relationship with her adoptive mother?
It's a bit more complicated. Anya desperately wants her mom's approval, and her mom isn't a very demonstrative person. Her mom loves Anya, but because of things in her past she's very over-protective, and has a hard time expressing that love.
What trend in publishing do you feel the most strongly about, either positively or negatively?
I try not to pay too much attention to trends, to be honest. But I have noticed that we seem to be moving away from the bad boys, and there are more 'good guy' characters out there. Which I love. I don't mind a bad boy, but some of the ones out there have really straddled the line of being dangerous. Plus, I dated a bad boy in high school, and I learned they aren't as glamorous as they seem. 😉 I married a good guy and he's worth a hundred bad boys.
What advice would you give to new writers?
The obvious one, read a lot and write a lot. You'll write a lot of stuff you don't like before you start writing stuff you do like, so don't let the bad stuff stop you. Also, connect with other writers. I heard that advice a lot when I started. Find critique partners! But I'm from a small town and didn't know how to do that. The answer, as it turned out, was online! Start blogging, tweeting, whatever works for you. There are so many wonderful, supportive writers out there.
If you could have dinner with three characters from any books, which would you choose?
Hmm, this is a tough one! I'd say Zuzanna from the Daughter of Smoke and Bone series by Laini Taylor, because she's hilarious and awesome. Sierra from the How To series by Cassie Mae, because she's so sweet and spunky. And Death from The Book Thief by Markus Zusak, because how fascinating would that be?
Quick questions:
What was your favourite childhood toy?
A plastic dog I got when I was three. I actually still own it and my kids play with it now.
What secret talent do you have?
Um . . . I don't know if this counts as a secret talent, but I ride and show Arabian horses. I've won several National Champion and Reserve Champion titles in the US and Canada.
What book are you reading right now?
Right now I'm reading Catch a Falling Star. I'd never heard of it before when I saw it at my kids' book fair and it sounded good. Plus the books were buy one get one free. 😉 So far it's super cute. I'm also beta reading a MG fantasy by Jenny Morris that is fantastic. I swear one of the best parts of being a writer is getting to read stuff by your CPs before the rest of the world!
Seventeen-year-old Anya leads a very secluded life in a house on the edge of town with her adopted mother. She doesn't go to school, but instead has a private tutor. Her over-protective mom keeps her so sheltered that she doesn't even have a best friend.
But Anya doesn't seem to mind. She has her books, her photography, and her daydreams, and would do anything to please her mom. Until one day at the library, the only place she's allowed to go, she takes a picture of a beautiful boy.
Before long she's lying to her mom, and sneaking out late at night to meet Zander. But Zander wants more than a secret romance. If Anya wants to be with the boy of her dreams, she will have to risk her relationship with the only other person she's ever cared about.
Rachel grew up in a tiny town in Minnesota. She still lives there, with her husband and their four kids. She coaches high school speech and theater, rides Arabian horses, reads as much as she can, and writes stories.
Blog | Goodreads | Twitter | Facebook
'One Lucky Night' excerpt and giveaway
Posted: May 26, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: anthology, romance, self-publishing | 4 Comments
One night can change everything…
The crew at Boston's Brazen Head Pub hasn't been very lucky in love. Can a mysterious visitor inspire them to look past old hurts and misconceptions and give romance a chance? One Lucky Night is a collection of five sexy interwoven novelettes by Aria Kane, Grace Teague, Ana Blaze, Constance Phillips and Melinda Dozier.
Lucky Break by Aria Kane
Four years ago, chef Derek Chase walked out of Andrea Rivera's life after a tragedy neither of them were prepared to deal with. When she's called to the Brazen Head to repair a dishwasher, old sparks ignite buried feelings.
Lucky Star by Grace Teague
When her life is threatened by a mugger, Charlotte Price realizes she's in love with her best friend, Tommy Leung. The Brazen Head seems like the perfect neutral place to confess her feelings, but nothing goes according to plan.
A New Tune by Ana Blaze
When it comes to dating, Holly Hall has one unbreakable rule: no musicians. Not even gorgeous ones. Especially not gorgeous ones. Dating them only leads to heartbreak. So why did she let singer-songwriter Cian O'Neill kiss her? And why is she thinking about doing it again?
Lexi's Chance by Constance Phillips
As a bartender, Sean Whalen meets all kinds of women every night, but none turn his head the way that Lexi has. She's been playing cat and mouse with him for weeks. Tonight, Sean's determined to get Lexi to quit teasing and take a real chance on him.
Drink or Dare by Melinda Dozier
A bachelorette party Drink or Dare game pairs paramedic students, Rachel Robertson and Killian Whelan, in a flirting match. Soon, the dares threaten to turn their academic rivalry into something much more.
Now available from:
Amazon | iTunes | Barnes & Noble | Other Retailers
"Lexi's Chance" by Constance Phillips from One Lucky Night
How many hours had she wasted on this bar stool laughing at Sean's jokes and doing her best to flirt back with someone who'd mastered the art? She'd spent way too much time looking for a sign of sincerity in the compliments he paid her and wishing on some abstract four leaf clover he'd suddenly become the kind of guy who'd be happy with just one lady.
Was she just pretty enough to flirt with, but not over-the-top hot, unlike the nearly six-foot red-head with willowy legs and ample breasts he poured drinks for now? Why was that woman at The Brazen Head instead of walking a fashion runway in New York?
She used her shoulder to tap Julie. "What is it about her?"
"The woman Sean can't take his eyes off of."
Only his gaze wasn't as locked as she believed. As if he could feel her stare on him, he turned and caught her. One wink from him and her heart turned into a gooey mess.
She pivoted away, hoping he didn't catch the blush that warmed her cheeks. "How does he do
that to me? I'm not fifteen anymore."
Julie snickered. "I think the bigger question is why do you keep resisting him? He is so gorgeous!"
"And he knows it!" Lexi shifted her weight on the stool. "I'm an intelligent woman. I should be able to see through all that flirting."
"If you want to leave—"
"No!" She could no longer imagine herself anywhere else on a Friday night. Especially tonight, this is where she wanted to be. Three years had passed since her choices had inflicted life-altering pain on her sister. Going home and facing Alissa and the past hovered low on her to-do list. It took all the strength she could muster to deal with the not-so-distant past repeating itself with Billy.
"We've already ordered our food." Lexi reached for her wine glass, hoping to drown the regrets.
"We can have it boxed up to go."
Julie pushed her buttons on purpose. She'd been advising Lexi to take the lead and speak her heart for weeks now.
Book launch giveaway
The authors are giving away two Amazon giftcards!
Aria Kane is a recovering mechanical engineer and romance writer. As a military brat, she grew up all over the country, but now lives in sunny Florida with a 60 lb mutt who thinks he's a chihuahua.
Website | Twitter | Facebook | Pinterest | Goodreads
Grace Teague lives in Pittsburgh with her spouse, children and a cat named Mr. Sushi.
Website | Twitter | Facebook | Goodreads
Ana Blaze lives near Washington DC with her charming husband and three cats who firmly believe they are royalty. Ana is a member of Romance Writers of America.
Website | Twitter | Facebook | Pinterest | Goodreads | Tumblr
Constance Phillips lives in Ohio with her husband, two ready-to-leave-the-nest children, and four canine kids. Her perfect fantasy vacation would involve hunting Dracula across Europe with her daughter, who also digs that kind of stuff.
Melinda Dozier teaches English to middle schoolers by day and writes at night. She lives in Guatemala, Central America with her college sweetheart and three sons.
Interview: Tamara Mataya, new adult author
Posted: May 25, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: Interview, new adult, romance | 2 Comments
Today I'm interviewing Tamara Mataya, whose new adult contemporary, Just Breathe, came out on 6 May. This one is totally on my TBR, you guys!
Elle, the main character in Just Breathe, has synaesthesia, a condition you have direct experience with. What can you tell us about it?
Amazon | Barnes & Noble
It's not as rare as people think, and there are MANY types. Basically, it just means there are extra connections in my brain between different senses. Most people know about the synesthetes who taste sound, or "see" the music. Mine's tactile/audio. The exact same as Elle's, but to a way lesser degree. It can be a challenge, but when I love a song, I REALLY love a song!
What is your favourite thing about Elle, Dominic and Jason?
That they're real, and make mistakes, and aren't perfect. A reviewer expressed disappointment in Elle making a bad choice near the end of the book. Of course she does! She's 21-years-old! She's going to make crappy choices, react emotionally, be impulsive! It's part of that age. Hell, it's part of being human. Things happen, and people aren't perfect. Jason's a douche, but not necessarily an evil guy. He's just incredibly self-centred. Dominic is delightful. I love how considerate he is.
What draws you to writing new adult books? Does the category have its own section in your library yet?
I've always written NA – or rather what I think NA is. My New Adult isn't as… angsty as some that's out there. Sure there's conflict and angst, but so many in the category are so dark and depressing. Mine tend to be a little more fun (I hope!). I think it's just such a fun age to play around in. My library doesn't have its own NA section, but we're still in a temporary Sprung Structure because of last year's flash flood. Our collection is only about 1/3–1/4 of what it was. 😦
Can you tell us about your next project?
My next book comes out in December, and is loosely based on my experiences during the flash flood last year. Though I never had sex on a pool table with a dirty talking firefighter. But all the stories in the book actually happened to people in my town. They're awful, and real, and people are still recovering 11 months later. The book is called, Taken By Storm.
You're a co-creator of the PitchMas contest. What inspired you to start a pitching contest? Given how time-consuming they are to run, are there ever moments when you want to throw in the towel?
Jessa Russo came to me and said, 'I want to do a pitch contest, and I want to do it with you!' So that was how it started. At the time, neither of us had agents ourselves, so we were sort of paying it forwards, but in reverse. Contests are INSANE to run, and take up a surprising amount of time, but they're so rewarding. Knowing we've played a small part in helping someone's dream come to fruition is AMAZING. Its ultimately up to the writers, but we're a sort of bridge. They're a lot of work, but worth it.
What new releases are you looking forward to?
Burned by Karen Marie Moning, and Shaman Rises by CE Murphy
If you could go back in time and give yourself one piece of advance, what would it be?
Ooo this is tough. There are so many things I'd love to warn myself about, but I feel like by getting my past self NOT to do them, I'd be robbing myself of great life lessons, and hard-won wisdom. Change enough of my past and I might be unrecognizable today. BUT if I could, I'd stay in piano lessons when I was 9 years old, and NOT go on that ski trip when I was 16 – I had an accident and twisted my knee and tore all the ligaments and tendons in my hips. Oh, and not hauling those 50 pound bottles of water that month when I was 26 – that screwed up my wrists and I had to stop playing guitar for years because of the damage. NOT getting those injuries would be excellent.
Choose one! Coffee or tea? Spike or Angel? Sweet or savoury?
-Tea! (I've been drinking it since I was three, and my mum is British).
-SPIKE. ALL THE SPIKE! Obv. Is it weird that I thought Angel was cuter when he was full on ripply browed vampire?
-Savoury. Or sweet. But not together. I haven't yet hopped on the salted caramel bandwagon, but maybe only because I haven't tried it.
About Tamara
Tamara Mataya is currently a librarian; she lurked there for so long recommending books to patrons and shushing people, that she suspects they only hired her so it would be less creepy. Now she's armed with a name tag, and a thin veneer of credibility. She's also a musician with synaesthesia – which isn't an issue until someone plays a wrong note, which makes her want to squirm inside out. It makes for a good live show. Twitter | Facebook | Goodreads | Blog
Excerpt and giveaway: 'Wonderfully Wicked' by CJ Burright
Posted: May 13, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: book launch, fantasy, romance | Leave a comment
Wonderfully Wicked
by CJ Burright
A dreamcaster with the ability to channel creatures from her nightmares, headstrong and cynical Kalila Montgomery longs for a peaceful, picket-fence life…until the man literally of her dreams kidnaps her. Survival quickly becomes her number one goal, yet a growing attraction to the man in her nightmares is impossible to ignore. While she fears he will kill her, other, more terrifying enemies surround her, and Kalila succumbs to his scheme to escape. She may be his one hope for freedom…A deadly combination of power, cunning, and cold-hearted charm, Lydon v'al Endrian fears nothing. Feels nothing.
Chained to a brotherhood of men with the supernatural ability to invade dreams, he hunts dreamcasters to be harvested for their dreams and killed. His target: Kalila Montgomery. But Kalila awakens an undeniable dark desire and a longing for a freedom long-lost. To gain everything he craves, Lydon must seduce Kalila before his plot is discovered…a hopeless challenge which, if failed, will earn him a death-sentence. Caught up in a dangerous world of secrets and obsession, doubt and betrayal, Kalila and Lydon face the nightmare of their lives, where love will either deliver them—or destroy them both.
Goodreads | Amazon | Kobo
"I took great effort to see you." His tone hinted the act made him deserving. "You sleep; I'll keep watch. And my vow of yesterday stands. I won't molest you."
To her annoyance, her pulse danced a country jig. Whatever efforts he took on her behalf were of questionable nature, not romantic. She made a rude noise in case he held any such illusions.
"Keep watch for what? No one besides you could reach my window and my door's bolted."
Lydon laced his hands behind his head, his lips twitching as though fighting a smile. "Then I'll watch you. Like before."
Horror prickled over her in a rushing tide. She leapt up. "You watched me sleep? Not skulked around in my bedroom to attack me?" She groaned, imagining him watching her drool, snore, or grind her teeth.
He laughed, low and warm. "You're so lovely when you dream, Lils. An angel." He patted the empty spot beside him.
Her traitorous body, defenseless against him, obeyed. The red, silken comforter hissed beneath her knees while she climbed onto the opposite side of the giant bed. The lone lamp by the bed cast a mystical glow over Lydon, catching golden highlights in his light hair, the silver shards in his eyes. "Watching people sleep is creepy."
He shrugged. "Not people, just you. Besides, I am creepy."
Definitely not creepy. Kalila settled into a cross-legged position and fixed him with a no-nonsense look. "Since it seems you have nothing better to do than lie there like a sloth, be useful and fess up. Why am I being treated as some freaking porcelain doll in a glass case? How can my nightmares benefit the V'alkara? Can the V'alkara really take my dreams away? None of you seem sick—and no, mental doesn't count—so what's wrong? And when will you take us home?"
Lydon jiggled one black boot. What she thought might be disapproval flickered in his eyes. "I won't waste our alone time answering inquiries. I have other plans."
She swallowed hard. Maybe she'd misjudged him. Maybe he was so confident in his assassin abilities—and her helplessness—he felt sneakiness was unnecessary.
He sat up in a blink of an eye, moving with inhuman speed. One large hand was planted next to her knee. His breath fanned her chin. The scent of the outdoors and a tinge of smoke drifted from his clothes. His voice whispered spider-soft.
"Do you care to know what other less attractive names some call me?" The world seemed to shrink to Lydon and the force of his gaze. "Angel of Ruin. Living Nightmare. Scourge." His eyes gleamed, darkened. "As you might guess from such monikers, peace in my life is rare. I'll relish any fragments of it I happen to stumble across for as long as possible."
His fingers trailed her cheek to cup her chin. In the span of a heartbeat, his face changed. From beautiful man to skeletal beast then back to beautiful man. A chill coiled around her soul, deep and cold as a winter storm. Who—what—was this guy?
"Do you feel it too?"
Kalila's heartbeat rumbled in her ears, kicked at her throat. Her fingers jerked with a fierce need to touch him. Instead, she fisted the blanket. Admit nothing to the enemy. Yet the urge to nestle her cheek into his palm and purr grappled with reason. She had to take control before she did something stupid.
CJ blames her love for reading and all things Medieval on her father, who plied her often with fantasy novels ranging from Sir Lloyd Alexander to Piers Anthony. Her love for romance, however, lies completely at the feet of her best friend Michelle, who dared to give her a romance novel for her birthday. She smiled, politely said thank you, and tossed it in the corner, where it gathered dust. In a moment of desperation, when only the revolting romance remained in her almost-always toppling stack of awaiting books, she sucked it up and read the romance. Doomed.
She started writing fantasy and paranormal romance for the cathartic experience, decided she liked it, and after two overlong, horribly written novels joined RWA and the Fantasy, Futuristic & Paranormal special interest chapter. Best classes and critique groups ever. Double doomed. Now, writing is a necessity, not just a hobby.
In her spare time, when she's not writing or reading or actually working, CJ might be found in the dojang (4th Dan Black Belt, baby), rooting on the Mariners (who will some day win the World Series), working out (P90X, anyone?), gardening (a little dirt never hurt anyone), or playing Music of the Night on the piano (without mask or cape). She lives in Oregon with her fabulous husband and daughter. Not to mention her minions, a herd of cats.
WONDERFULLY WICKED is CJ's Burright's first novel.
Website | Goodreads | Twitter | Facebook
Book launch: 'One Lucky Night' anthology
Posted: May 10, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: romance, self-publishing | 1 Comment
Book (re)launch, excerpt and contest: 'The Best Man' by Ana Blaze
Posted: April 28, 2014 | Author: Cassandra Page | Filed under: On Books | Tags: novella, romance, self-publishing | 2 Comments
Those of you with especially keen memories may recall that I've promoted The Best Man before. This was another of the books published by Entranced. It's now being re-launched, with a cover that I personally love more than the original. And do you know what the best part is for you, as a reader? Another giveaway! Also, that excerpt makes me want to rush out and buy the book RIGHT NOW!
by Ana Blaze
Genre: Contemporary Romance Novella
Rating: Steamy
Available now in e-book or audiobook!
Beth Chase is too busy planning perfect weddings to worry about the lack of action in her own love life. But if she was looking for a man, she wouldn't be looking at Colin Pratt. Her boss swears that Best Man Colin is a quiet scholar and science fiction writer who couldn't possibly cause a fuss at his own brother's wedding. He's clearly never met the man in question.
Snarky, sexy and more than a little inebriated, Colin is the final obstacle between Beth and the last perfect wedding she needs to make partner. Of course, when she helps him into a taxi at the end of the night she has no idea that he's only just begun to poke holes in her professional exterior. Colin might have the skills to seduce a romance professional, but can he convince her that he's the best man to share her happy ever after?
Amazon | Barnes & Noble | Goodreads
Enter here to win a $10 Starbucks gift card (open internationally)!
Colin was right; she let him take her to dinner. He wanted to call and have a limo pick them up, but Beth insisted on driving. She did let him pick the restaurant from a list of suggestions.
They were seated at a very nice Italian place with an old stone fireplace and a dozen small round tables covered by pristine white cloths. Classical music played quietly, allowing for the possibility of private conversations.
Colin smiled at her from across the small table. "You look lovely."
"You already said that."
"It's still true."
"Thank you. You look rather handsome yourself."
"Wait until you see me without any clothes. I'll blow your mind."
She bit her lip to keep from chuckling too loudly. "I have seen you without your clothes on."
He nodded. "That's right. How did that go over again?" His head dipped to the side and studied her.
"I was under the impression you knew how to behave in public as long as you weren't dosed with Xanax and the entire contents of the courtesy bar. Should I have prepared a list of appropriate dinner topics for you?"
"Ah, like the rain in Spain? No worries, love. If I have learned anything from television we are now expected to surreptitiously survey the couples around us and guess at their lives."
Beth giggled. "Is that so?"
"Definitely. Take this lovely couple to our right." He inclined his head in the direction of a grey-haired woman who was arguing with the white-haired man across from her. "Oh. Don't look directly at them! Sneakiness is an essential part of this mating ritual. So, what do you think, first date or high-priced escort?"
Charmed and feeling playful, she leaned closer. "No way. Clearly, they're spies. Only they work for enemy organizations. Twenty-five years ago they met on an assignment that involved seducing each other and accidentally fell in love. Now they meet in secret once a year in honor of the life they couldn't have because of their duty to their respective groups." She sat back in her chair and grinned.
"That's good." Colin nodded. "Damn, that's brilliant. You must go on a lot of dates because you are very good at this game."
She nodded to a young couple across the room. "Go ahead. Try again."
He nodded. "Cause a distraction so they don't see me looking." He glanced over at them quickly and then back. "Challenging."
"If you're not up for it …"
Colin held up his hands. "I didn't say that. I'm just suggesting that successful completion of this mission should allow me access to the next level."
"The next level of what?"
"Us. I want to know your middle name, at least one honestly embarrassing story, and I want to be in your bedroom tonight."
Grinning, she shrugged. "Deal. Impress me."
"This is their third first date."
Beth raised an eyebrow.
"Hear me out, love. Their first, first date went horridly awry. He made an utter fool of himself but knew immediately that she was the only girl for him. Seeing no other option he obviously created a vessel for time travel and went back to try again. Their second date went only slightly better, so he is trying a third time in hopes that she will agree to go out with him again."
"Do you think she's going to say yes tonight?"
His eyes softened when they met hers. "I hope so. But if she doesn't he'll keep trying until she does."
"He does seem persistent — what, with the whole time machine thing."
"He has to be. He's never fallen for a woman quite so hard before, and first impressions are very difficult to override."
Beth nodded. "My middle name is Rose."
"That's … My mother was named Rose." His voice took on a wistful note.
"If another man told me that I'd be sure it was a pickup line."
He smirked. "And it no doubt would be. All other men are total scum. You should give up dating them completely."
She rolled her eyes. "What kind of stuff do you write? You write, don't you? You said that last night."
He stared at her for a moment before responding. "How do you feel about poetry?"
Her lips twitched. "You write poems. Poems?"
"Of course not." He shook his head. "Only total saps write poetry. I write manly guides to … manliness, and also … motorcycles."
"So that's a yes on the poetry? I thought you said something about short stories."
He sighed. "I write, in general, everything. The poetry is the worst. I'm complete rubbish at it, but I like it the best. I also write short stories — generally in the science fiction genre. I have one entirely un-publishable novel and a few more unfinished, but almost equally unlikely to find an audience."
"Tell me one of your poems."
He leaned across the table. "No."
Beth leaned in and dropped a sweet kiss on his mouth, smiling as she sat back again. "I'm glad I came out with you tonight." She was having fun, nearly too much fun given their temporary status. The air sparked between them.
He grinned and sat back in his chair. "I am too, Beth. But, I'm still not going to recite any of my poetry."
"Fair enough, though I'll bet hearing one would have gotten me all … hot for you."
Colin snorted. "Doubtful. Besides, we both know you just changed the subject so that you could get out of telling me your embarrassing story."
Beth nodded to the waitress as she placed their food on the table. Colin gave the woman a quick smile and said, "Thank you."
"I don't have any embarrassing stories." She twirled some pasta around her fork, brought it to her mouth, and groaned in appreciation. Colin was smirking at her. Beth blushed. "This is really good."
"I'm very happy to see you enjoying it."
"This whole don't-mind-me-I'm-just-a-shy-book-guy thing is totally an act, isn't it?"
"Book guy?"
"You know what I mean. The nice manners and excellent vocabulary come in handy by getting girls to lower their shields, and then you swoop in with all the innuendo and … touching."
"Ah, yes. You've got me. I'm a dreadful rogue."
Ana lives just outside Washington, DC, with her very supportive husband and three rather demanding cats. She loves the ocean, Indian food, Ikea, and cooking. Before settling down as a writer, Ana was an elementary school teacher, a preschool teacher, a camp counselor, a waitress, a research assistant, a canoe tour guide, and one glorious summer during college she spent eight hours a day placing stickers inside library books so they would be part of the fancy new automated checkout system. She won't say which job she liked best.
Ana is a member of Romance Writers of America.
Website |Twitter |Facebook |Pinterest |Goodreads |Tumblr


text:
using System;

namespace OOPEx
{
    public abstract class Vehicle
    {
        private double fuelQuantity;

        private double fuelConsumption;

        private double distanceTravelled;

        private double tankCapacity;

        public double TankCapacity
        {
            get
            {
                return this.tankCapacity;
            }
            protected set
            {
                this.tankCapacity = value;
            }
        }

        public virtual void Refuel(double fuel)
        {
            if (fuel <= 0) throw new ArgumentException("Fuel must be a positive number");
            if (this.fuelQuantity + fuel > this.tankCapacity) throw new ArgumentException("Cannot fit fuel in tank");

            this.fuelQuantity += fuel;
        }

        private double DistanceTravelled
        {
            get
            {
                return this.distanceTravelled;
            }

        }

        public override string ToString()
        {
            return $"{this.GetType().Name}: {this.fuelQuantity:f2}";
        }

        public void Drive(double distance)
        {
            if (distance * this.FuelConsumption > this.FuelQuantity)
            {
                throw new Exception($"{this.GetType().Name} needs refueling");
            }

            this.AddDis(distance);
            this.FuelQuantity -= this.FuelConsumption * distance;
            Console.WriteLine($"{this.GetType().Name} travelled {distance} km");
        }

        protected void AddDis(double dis)
        {
            this.distanceTravelled += dis;
        }

        public Vehicle(double fuelQ, double fuelCons, double tCap)
        {
            this.FuelQuantity = fuelQ;
            this.FuelConsumption = fuelCons;
            this.TankCapacity = tCap;
        }

        public virtual double FuelQuantity
        {
            get
            {
                return this.fuelQuantity;
            }
            protected set
            {
                this.fuelQuantity = value;
            }
        }

        public virtual double FuelConsumption
        {
            get
            {
                return this.fuelConsumption;
            }
            protected set
            {
                this.fuelConsumption = value;
            }
        }

    }
}

redpajama_set_name: RedPajamaGithub


text:
CNN: Ted Cruz tells Trump administration to 'follow the damn law' on foreign arms sales
News|7.10.19
Texas Republican Sen. Ted Cruz had a simple message for the Trump administration during Wednesday's hearing on foreign arms sales: "Follow the damn law."
Cruz said he supports the administration's underlying reason for selling arms to regional partners. He voted against a joint resolution disapproving of the proposed sales in late June. However, on Wednesday he issued a scathing rebuke of how the situation was handled while grilling Assistant Secretary of State for Political-Military Affairs R. Clarke Cooper during the Senate Foreign Relations hearing.
"I voted with the administration on the substance because of the threat of Iran but I'll tell you from my end, if the administration does it again and there is not a live and exigent emergency, you will not have my vote and I predict you will not have the vote of a number of other Republicans as well. The simpler process is follow the damn law and respect it," Cruz said.

redpajama_set_name: RedPajamaCommonCrawl


text:
Kim Foxx Refuses to Resign Over Jussie Smollett Case [VIDEO]
EntertainmentFilm & TVNewsPolitics & Society0 Comments 0
Kim Foxx, Cook County's top prosecutor, said Saturday that she would not resign from her position due to a backlash by the Chicago police union over the decision to drop charges against Jussie Smollett.
Foxx spoke at Rev. Jesse Jackson's Rainbow PUSH Coalition and said she was "undaunted" by the criticism. It has been two weeks since her office dismissed charges against the "Empire" actor. He had been indicted by a grand jury in Chicago on 16 felony counts after allegedly lying to police about being the victim of a racist and homophobic hate crime in March.
Mayor Rahm Emanuel and the police unions were angered by the decision to drop all charges and the city announced April 4 that it was drafting a lawsuit for $130,106 against the actor. The administration and police unions also believe Foxx may have acted inappropriately.
"I cannot run an office that is driven by anger and public sentiment," Foxx said. "I must run an office that looks at the facts, the evidence and the law on every case. That is my responsibility."
Foxx had recused herself from the Smollett case because of a prior conversation with one of Smollett's relatives. She had doubts about whether the prosecution's case was strong enough to proceed. Foxx also took exception to her integrity being questioned.
"I think we have to ask ourselves, what is this really about?" Foxx said. "As someone who has lived in this city — who came up from the projects of this city to serve as the first African-American woman in this role — it is disheartening to me, and to the women and men who I represent … that when we get in these positions, goal posts change.
Foxx wanted those who disagreed with her to show more professionalism. Kevin Graham, president of the Fraternal Order of Police Lodge 7, called on Foxx to resign two days before her appearance. He cited a "no confidence" vote.
"I stand with our partners in law enforcement every day. I will never speak ill about our partners in this work," Foxx said. "And even though there are challenges between any relationship, you have never seen the Cook County state's attorney stand at any podium, stand in any room, and disrespect or disregard any of those partners."
U.S. Rep. Bobby Rush said the FOP attacks against Foxx were rooted in racism.
"The FOP is the sworn enemy of black people," Rush said.
Watch the video of the press conference below.
Jussie SmollettKim Foxx
Previous ArticleMaya Angelou Life And Works Being Developed For Broadway Stage
Next ArticleVirginia Police Officer Disciplined For Threatening Black Middle Schoolers
Jussie Smollett Prosecutor Kim Foxx Receiving 'Racially Charged' Threats
Nu Origins April 23, 2019
Rahm Emanuel Says Jussie Smollett Got Special Treatment After Charges Dropped
Nu Origins March 27, 2019
Charges Against Jussie Smollett Dropped
Jussie Smollett Orchestrated Hate Crime Hoax Due to Salary Demands
Nu Origins February 21, 2019
Jussie Smollett Named a Suspect by Chicago Police for Filing False Report
Jussie Smollett's Role in 'Empire' Reportedly Cut, Alleged Attackers Speak Out


In order to increase website traffic, your website needs to be optimized for both search engines as well as your target audience. The stepping stone in realizing this goal is to develop a website that is search engine friendly and attractive to the readers. With some basic knowledge of search engine optimization and your target audience, you can create a website that is optimized for search engines and engages your readers.
Before you begin writing the content for your website it's critical to start with your target audience in mind. You need to understand their problems, how you can solve their problems, and what keywords they use to search for solutions to their problems. Creating user personas are a great way to uncover information about your target audience.
Once you have a basic understanding of your target audience, it's time to do some keyword research to more accurately determine which keywords your target audience uses to find your products/services. For example, you might assume your target audience is searching for website design, when in reality, they are searching for responsive web design. These differences alone can determine the success or failure of your website optimization efforts.
After you've selected the right keywords, it's time to write your content and include your keywords. You should only include one primary keyword for any given page, and it should be repeated throughout your content so that you achieve a maximum keyword density of 5.5%. Be careful not to exceed a keyword density of 5.5% or you might be penalized by the search engines for keyword stuffing. In addition, include keyword rich anchor text links at the beginning, middle and end of your content. For example, instead of click here to download my internet marketing 101 guide, use download my guide to Internet Marketing 101. Search Engines like keyword rich hyperlinks.
With more than ninety percent (90%) of all consumers shopping online, understanding the basics of internet marketing 101 has become critical to the online success of business today. Getting online sales no longer means solely launching a website. It involves an online marketing strategy, long term commitment, and sustained effort. This series of internet marketing 101 articles is intended to teach you how to adopt a systematic approach to lead generation, and turn your website into a lead generation tool.
There are several tactics used to generate leads on the internet, and webmasters often make use of a variety of tools in order to track, measure, and improve their results. Here are the main steps of online marketing to increase traffic, generate leads, and nurture leads into sales. Now, isn't this what every business wants from their website?
Driving a constant flow of organic traffic towards your website is critical, because without traffic, you don't have the opportunity to convert visitors into leads. Some of the tactics used to drive traffic include: Blogging, Social Media, Pay Per Click Campaigns, inbound links and Search Engine Optimization. However, at the center of them all is compelling content. In addition, spend some time performing keyword research, so you can determine what keywords your potential customers use when searching for your products/services online. Integrate your keywords into your content and you'll increase the probability of being found online.
However, having a lot of visitors go to your website is not enough. If your aim is to turn them into customers, you must present them with content relevant to their needs, and encourage them to provide you with their contact information in exchange for something of value. For instance, if you sell swimming pools, then you might offer a free whitepaper titled "10 mistakes to avoid when building your inground swimming pool".
The keys to increasing your landing pages' conversion rates are compelling content, a valuable offer, and a call-to-action. Giveaways are great lead conversion boosting techniques too. You don't have to promise huge incentives. Your bonus can be an e-book, free entrance to a webinar, or a free trial for using your service (this works wonderfully for software). Whatever you do, don't deceive your potential customers with empty promises, and let them know you will be there tomorrow.
Internet Marketing 101: Why should I buy from you?
In my previous article, I talked openly with you about one of the most challenging phases to a website design project - making a website demonstrate your true worth to potential customers. I also said that many of these challenges could be resolved if business owners took the time to create a marketing toolkit.
Let's talk about another topic that often comes up with businesses trying to launch an effective website. Whenever I first speak with a client, one of the first questions I ask is, "What makes your business unique?" To put this another way, from your clients' perspectives, "Why should I buy from you?" The typical response from clients is, "I provide quality work and fair pricing".
Unfortunately, those aren't unique differences. Those are expectations.
Defining your unique difference should be a high priority and the foundation for all marketing activities.
Being different for the sake of being different isn't good enough in the business world. Your unique difference as a company must solve current frustrations, eliminate problems or enhance customer experience, in order to rise above the competition. So, how do you define your unique difference?
But the work doesn't stop there. Once you've developed your unique difference, then everything you do in your business must support your unique difference. In many cases, you're already doing something that's unique; you're just not effectively communicating your difference to others. Not communicating your difference leads to mediocrity and therefore, competing on price alone. Unless you are Wal-Mart, that's not going to work for your business and a low pricing strategy won't help you generate enough business to sustain growth.
Why did you decide to hire us/buy from us?
What did we do better than others you do business with?
Would you recommend us to others, and if so, why?
What keyword phrases would you use to find us online?
For example, here at Jango Studios we don't just build attractive websites. There are plenty of companies that design attractive websites. Instead, we build websites that are packed with lead generation tools designed to support and enhance your lead generation and customer conversion efforts. This is, in fact, a small part of what makes us unique!
Is Your Website Costing You Hundreds if Not Thousands of Dollars in Lost Sales?
As a continuation of my series on how to market your small business on the internet, this article discusses what, based on my experience, is the third most feasible way to increase sales via the internet.
When a prospect visits your website you have a golden opportunity to make a good impression. Once a prospect leaves your site, they may be gone forever, without you even knowing they had some momentary interest in your products or services.
To resolve this issue every small business website should include a system and strategy for capturing some amount of contact information from your prospects. This involves creating a compelling offer and placing a sign-up form on a landing page. Now the trick to persuading prospects to give you their contact information hinges on how interesting they find your offer. To create a compelling offer you should think about your prospects' problems and how to solve them, and then provide tidbits of this information as a FREE download in exchange for their contact info.
When done properly this strategy allows you to inexpensively maintain "Top-Of-Mind presence with your prospects while building their trust which will overtime result in more sales..
Inbound Marketing - What is it, and how is your website related?
As a small business owner, running a business can at times seem like an overwhelming task, especially when it comes to developing an effective lead generation strategy. To complicate matters, consumers tend to have a negative outlook on direct mail, telemarketing and other types of invasive outbound marketing techniques, so your message is more than likely to go unnoticed. This is where inbound marketing enters the picture and serves as an efficient, low cost way to drive highly qualified leads to your doorstep.
Inbound Marketing is the practice of a attracting qualified leads into your sales funnel as opposed to reaching out to prospects.
1. Search Engines - By properly optimizing your website, it gets found by your prospects before your competitors' sites when searching for related products or services that you provide.
2. Blog - Allows you to publish fresh content on a regular basis which serves to drive more traffic to your website.
3. Social Networking - As you post new information to your blog, this information can be distributed automatically into social networking sites such as Facebook, Linkedin and Twitter, thereby increasing your exposure.
4. Newsletter - As prospects visit your website, they are encouraged to give their contact information in order to receive your free offering. This contact information feeds into your auto-responder system so that you can maintain top of mind presence in a low cost, efficient way using email marketing. In essence, email marketing allows you to put your marketing on auto-pilot.
If your current website isn't generating the leads you want, it may be because you are not benefitting from any of the four key lead generation components listed above.


Self drive van hire in Grays and Essex from our trusted partners. Huge selection of cheap van hire options available in Grays. Compare prices & book online.
When deciding that you want to make a reservation for Van Hire, you may be a little confused and worried about where to start. Well, with Anything for Hire, you do not have to be, offering you an easy, free way to shop for, compare and book services such as Van Hire, Cheap Van Hire and Van Rental.
While you may have a deadline to get your Van Hire booked and sorted, you must always be sure that you are aware of ALL of your options. This is because you do not want to be overcharged for Van Hire or worse; underwhelmed with the service you are presented with. My running a comparison on anythingforhire.com, you get a full picture of your options, allowing you to gain a clearer picture of what will best suit you when it comes to Van Hire. What's more is that it can save you a whole load of time and money!
So, if you are looking for the best deal possible, make your way over to the anythingforhire.com homepage. After filling in the basic details of your Van Hire search, we will provide you with a snapshot of the most suitable deals.
We offer Cheap Van Hire in all local areas including Harlow, Basildon, Holland On Sea, Braintree, Tilbury, Billericay, Frinton On Sea, Maldon, Burnham On Crouch, Brentwood, Stanfield Le Hope, Clacton On Sea, Colchester, Romford, Walton On The Naze, Hockley, Ingatestone, Coggeshall. Our visitors who search for Van Hire also tend to search for Vans, Lorry, Transport, Van Hire, Self Drive Van, Truck Hire.


text:
package storage

import (
	"database/sql"
	"fmt"

	"github.com/pkg/errors"

	sq "github.com/Masterminds/squirrel"
	workflowapi "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1"
	"github.com/golang/glog"

	api "github.com/kubeflow/pipelines/backend/api/v1beta1/go_client"
	"github.com/kubeflow/pipelines/backend/src/apiserver/common"
	"github.com/kubeflow/pipelines/backend/src/apiserver/list"
	"github.com/kubeflow/pipelines/backend/src/apiserver/model"
	"github.com/kubeflow/pipelines/backend/src/common/util"
	"k8s.io/apimachinery/pkg/util/json"
)

var runColumns = []string{"UUID", "ExperimentUUID", "DisplayName", "Name", "StorageState", "Namespace", "ServiceAccount", "Description",
	"CreatedAtInSec", "ScheduledAtInSec", "FinishedAtInSec", "Conditions", "PipelineId", "PipelineName", "PipelineSpecManifest",
	"WorkflowSpecManifest", "Parameters", "RuntimeParameters", "PipelineRoot", "pipelineRuntimeManifest", "WorkflowRuntimeManifest",
}

type RunStoreInterface interface {
	GetRun(runId string) (*model.RunDetail, error)

	ListRuns(filterContext *common.FilterContext, opts *list.Options) ([]*model.Run, int, string, error)

	// Create a run entry in the database
	CreateRun(run *model.RunDetail) (*model.RunDetail, error)

	// Update run table. Only condition and runtime manifest is allowed to be updated.
	UpdateRun(id string, condition string, finishedAtInSec int64, workflowRuntimeManifest string) (err error)

	// Archive a run
	ArchiveRun(id string) error

	// Unarchive a run
	UnarchiveRun(id string) error

	// Delete a run entry from the database
	DeleteRun(id string) error

	// Update the run table or create one if the run doesn't exist
	CreateOrUpdateRun(run *model.RunDetail) error

	// Store a new metric entry to run_metrics table.
	ReportMetric(metric *model.RunMetric) (err error)

	// Terminate a run
	TerminateRun(runId string) error
}

type RunStore struct {
	db                     *DB
	resourceReferenceStore *ResourceReferenceStore
	time                   util.TimeInterface
}

// Runs two SQL queries in a transaction to return a list of matching runs, as well as their
// total_size. The total_size does not reflect the page size, but it does reflect the number of runs
// matching the supplied filters and resource references.
func (s *RunStore) ListRuns(
	filterContext *common.FilterContext, opts *list.Options) ([]*model.Run, int, string, error) {
	errorF := func(err error) ([]*model.Run, int, string, error) {
		return nil, 0, "", util.NewInternalServerError(err, "Failed to list runs: %v", err)
	}

	rowsSql, rowsArgs, err := s.buildSelectRunsQuery(false, opts, filterContext)
	if err != nil {
		return errorF(err)
	}

	sizeSql, sizeArgs, err := s.buildSelectRunsQuery(true, opts, filterContext)
	if err != nil {
		return errorF(err)
	}

	// Use a transaction to make sure we're returning the total_size of the same rows queried
	tx, err := s.db.Begin()
	if err != nil {
		glog.Error("Failed to start transaction to list runs")
		return errorF(err)
	}

	rows, err := tx.Query(rowsSql, rowsArgs...)
	if err != nil {
		return errorF(err)
	}
	runDetails, err := s.scanRowsToRunDetails(rows)
	if err != nil {
		tx.Rollback()
		return errorF(err)
	}
	rows.Close()

	sizeRow, err := tx.Query(sizeSql, sizeArgs...)
	if err != nil {
		tx.Rollback()
		return errorF(err)
	}
	total_size, err := list.ScanRowToTotalSize(sizeRow)
	if err != nil {
		tx.Rollback()
		return errorF(err)
	}
	sizeRow.Close()

	err = tx.Commit()
	if err != nil {
		glog.Error("Failed to commit transaction to list runs")
		return errorF(err)
	}

	var runs []*model.Run
	for _, rd := range runDetails {
		r := rd.Run
		runs = append(runs, &r)
	}

	if len(runs) <= opts.PageSize {
		return runs, total_size, "", nil
	}

	npt, err := opts.NextPageToken(runs[opts.PageSize])
	return runs[:opts.PageSize], total_size, npt, err
}

func (s *RunStore) buildSelectRunsQuery(selectCount bool, opts *list.Options,
	filterContext *common.FilterContext) (string, []interface{}, error) {

	var filteredSelectBuilder sq.SelectBuilder
	var err error

	refKey := filterContext.ReferenceKey
	if refKey != nil && refKey.Type == common.Experiment {
		// for performance reasons need to special treat experiment ID filter on runs
		// currently only the run table have experiment UUID column
		filteredSelectBuilder, err = list.FilterOnExperiment("run_details", runColumns,
			selectCount, refKey.ID)
	} else if refKey != nil && refKey.Type == common.Namespace {
		filteredSelectBuilder, err = list.FilterOnNamespace("run_details", runColumns,
			selectCount, refKey.ID)
	} else {
		filteredSelectBuilder, err = list.FilterOnResourceReference("run_details", runColumns,
			common.Run, selectCount, filterContext)
	}
	if err != nil {
		return "", nil, util.NewInternalServerError(err, "Failed to list runs: %v", err)
	}

	sqlBuilder := opts.AddFilterToSelect(filteredSelectBuilder)

	// If we're not just counting, then also add select columns and perform a left join
	// to get resource reference information. Also add pagination.
	if !selectCount {
		sqlBuilder = s.AddSortByRunMetricToSelect(sqlBuilder, opts)
		sqlBuilder = opts.AddPaginationToSelect(sqlBuilder)
		sqlBuilder = s.addMetricsAndResourceReferences(sqlBuilder, opts)
		sqlBuilder = opts.AddSortingToSelect(sqlBuilder)
	}
	sql, args, err := sqlBuilder.ToSql()
	if err != nil {
		return "", nil, util.NewInternalServerError(err, "Failed to list runs: %v", err)
	}
	return sql, args, err
}

// GetRun Get the run manifest from Workflow CRD
func (s *RunStore) GetRun(runId string) (*model.RunDetail, error) {
	sql, args, err := s.addMetricsAndResourceReferences(
		sq.Select(runColumns...).
			From("run_details").
			Where(sq.Eq{"UUID": runId}).
			Limit(1), nil).
		ToSql()

	if err != nil {
		return nil, util.NewInternalServerError(err, "Failed to get run: %v", err.Error())
	}
	r, err := s.db.Query(sql, args...)
	if err != nil {
		return nil, util.NewInternalServerError(err, "Failed to get run: %v", err.Error())
	}
	defer r.Close()
	runs, err := s.scanRowsToRunDetails(r)

	if err != nil || len(runs) > 1 {
		return nil, util.NewInternalServerError(err, "Failed to get run: %v", err.Error())
	}
	if len(runs) == 0 {
		return nil, util.NewResourceNotFoundError("Run", fmt.Sprint(runId))
	}
	if runs[0].WorkflowRuntimeManifest == "" && runs[0].WorkflowSpecManifest != "" {
		// This can only happen when workflow reporting is failed.
		return nil, util.NewResourceNotFoundError("Failed to get run: %s", runId)
	}
	return runs[0], nil
}

// Apply func f to every string in a given string slice.
func Map(vs []string, f func(string) string) []string {
	vsm := make([]string, len(vs))
	for i, v := range vs {
		vsm[i] = f(v)
	}
	return vsm
}

func (s *RunStore) addMetricsAndResourceReferences(filteredSelectBuilder sq.SelectBuilder, opts *list.Options) sq.SelectBuilder {
	var r model.Run
	resourceRefConcatQuery := s.db.Concat([]string{`"["`, s.db.GroupConcat("rr.Payload", ","), `"]"`}, "")
	columnsAfterJoiningResourceReferences := append(
		Map(runColumns, func(column string) string { return "rd." + column }), // Add prefix "rd." to runColumns
		resourceRefConcatQuery+" AS refs")
	if opts != nil && !r.IsRegularField(opts.SortByFieldName) {
		columnsAfterJoiningResourceReferences = append(columnsAfterJoiningResourceReferences, "rd."+opts.SortByFieldName)
	}
	subQ := sq.
		Select(columnsAfterJoiningResourceReferences...).
		FromSelect(filteredSelectBuilder, "rd").
		LeftJoin("resource_references AS rr ON rr.ResourceType='Run' AND rd.UUID=rr.ResourceUUID").
		GroupBy("rd.UUID")

	// TODO(jingzhang36): address the case where some runs don't have the metric used in order by.
	metricConcatQuery := s.db.Concat([]string{`"["`, s.db.GroupConcat("rm.Payload", ","), `"]"`}, "")
	columnsAfterJoiningRunMetrics := append(
		Map(runColumns, func(column string) string { return "subq." + column }), // Add prefix "subq." to runColumns
		"subq.refs",
		metricConcatQuery+" AS metrics")
	return sq.
		Select(columnsAfterJoiningRunMetrics...).
		FromSelect(subQ, "subq").
		LeftJoin("run_metrics AS rm ON subq.UUID=rm.RunUUID").
		GroupBy("subq.UUID")
}

func (s *RunStore) scanRowsToRunDetails(rows *sql.Rows) ([]*model.RunDetail, error) {
	var runs []*model.RunDetail
	for rows.Next() {
		var uuid, experimentUUID, displayName, name, storageState, namespace, serviceAccount, description, pipelineId,
			pipelineName, pipelineSpecManifest, workflowSpecManifest, parameters, conditions, pipelineRuntimeManifest,
			workflowRuntimeManifest string
		var createdAtInSec, scheduledAtInSec, finishedAtInSec int64
		var metricsInString, resourceReferencesInString, runtimeParameters, pipelineRoot sql.NullString
		err := rows.Scan(
			&uuid,
			&experimentUUID,
			&displayName,
			&name,
			&storageState,
			&namespace,
			&serviceAccount,
			&description,
			&createdAtInSec,
			&scheduledAtInSec,
			&finishedAtInSec,
			&conditions,
			&pipelineId,
			&pipelineName,
			&pipelineSpecManifest,
			&workflowSpecManifest,
			&parameters,
			&runtimeParameters,
			&pipelineRoot,
			&pipelineRuntimeManifest,
			&workflowRuntimeManifest,
			&resourceReferencesInString,
			&metricsInString,
		)
		if err != nil {
			glog.Errorf("Failed to scan row: %v", err)
			return runs, nil
		}
		metrics, err := parseMetrics(metricsInString)
		if err != nil {
			glog.Errorf("Failed to parse metrics (%v) from DB: %v", metricsInString, err)
			// Skip the error to allow user to get runs even when metrics data
			// are invalid.
			metrics = []*model.RunMetric{}
		}
		resourceReferences, err := parseResourceReferences(resourceReferencesInString)
		if err != nil {
			// throw internal exception if failed to parse the resource reference.
			return nil, util.NewInternalServerError(err, "Failed to parse resource reference.")
		}
		runtimeConfig := parseRuntimeConfig(runtimeParameters, pipelineRoot)
		runs = append(runs, &model.RunDetail{Run: model.Run{
			UUID:               uuid,
			ExperimentUUID:     experimentUUID,
			DisplayName:        displayName,
			Name:               name,
			StorageState:       storageState,
			Namespace:          namespace,
			ServiceAccount:     serviceAccount,
			Description:        description,
			CreatedAtInSec:     createdAtInSec,
			ScheduledAtInSec:   scheduledAtInSec,
			FinishedAtInSec:    finishedAtInSec,
			Conditions:         conditions,
			Metrics:            metrics,
			ResourceReferences: resourceReferences,
			PipelineSpec: model.PipelineSpec{
				PipelineId:           pipelineId,
				PipelineName:         pipelineName,
				PipelineSpecManifest: pipelineSpecManifest,
				WorkflowSpecManifest: workflowSpecManifest,
				Parameters:           parameters,
				RuntimeConfig:        runtimeConfig,
			},
		},
			PipelineRuntime: model.PipelineRuntime{
				PipelineRuntimeManifest: pipelineRuntimeManifest,
				WorkflowRuntimeManifest: workflowRuntimeManifest}})
	}
	return runs, nil
}

func parseMetrics(metricsInString sql.NullString) ([]*model.RunMetric, error) {
	if !metricsInString.Valid {
		return nil, nil
	}
	var metrics []*model.RunMetric
	if err := json.Unmarshal([]byte(metricsInString.String), &metrics); err != nil {
		return nil, fmt.Errorf("failed unmarshal metrics '%s'. error: %v", metricsInString.String, err)
	}
	return metrics, nil
}

func parseRuntimeConfig(runtimeParameters sql.NullString, pipelineRoot sql.NullString) model.RuntimeConfig {
	var runtimeParametersString, pipelineRootString string
	if runtimeParameters.Valid {
		runtimeParametersString = runtimeParameters.String
	}
	if pipelineRoot.Valid {
		pipelineRootString = pipelineRoot.String
	}
	return model.RuntimeConfig{Parameters: runtimeParametersString, PipelineRoot: pipelineRootString}
}

func parseResourceReferences(resourceRefString sql.NullString) ([]*model.ResourceReference, error) {
	if !resourceRefString.Valid {
		return nil, nil
	}
	var refs []*model.ResourceReference
	if err := json.Unmarshal([]byte(resourceRefString.String), &refs); err != nil {
		return nil, fmt.Errorf("failed unmarshal resource references '%s'. error: %v", resourceRefString.String, err)
	}
	return refs, nil
}

func (s *RunStore) CreateRun(r *model.RunDetail) (*model.RunDetail, error) {
	if r.StorageState == "" {
		r.StorageState = api.Run_STORAGESTATE_AVAILABLE.String()
	} else if r.StorageState != api.Run_STORAGESTATE_AVAILABLE.String() &&
		r.StorageState != api.Run_STORAGESTATE_ARCHIVED.String() {
		return nil, util.NewInvalidInputError("Invalid value for StorageState field: %q.", r.StorageState)
	}

	runSql, runArgs, err := sq.
		Insert("run_details").
		SetMap(sq.Eq{
			"UUID":                    r.UUID,
			"ExperimentUUID":          r.ExperimentUUID,
			"DisplayName":             r.DisplayName,
			"Name":                    r.Name,
			"StorageState":            r.StorageState,
			"Namespace":               r.Namespace,
			"ServiceAccount":          r.ServiceAccount,
			"Description":             r.Description,
			"CreatedAtInSec":          r.CreatedAtInSec,
			"ScheduledAtInSec":        r.ScheduledAtInSec,
			"FinishedAtInSec":         r.FinishedAtInSec,
			"Conditions":              r.Conditions,
			"WorkflowRuntimeManifest": r.WorkflowRuntimeManifest,
			"PipelineRuntimeManifest": r.PipelineRuntimeManifest,
			"PipelineId":              r.PipelineId,
			"PipelineName":            r.PipelineName,
			"PipelineSpecManifest":    r.PipelineSpecManifest,
			"WorkflowSpecManifest":    r.WorkflowSpecManifest,
			"Parameters":              r.Parameters,
			"RuntimeParameters":       r.PipelineSpec.RuntimeConfig.Parameters,
			"PipelineRoot":            r.PipelineSpec.RuntimeConfig.PipelineRoot,
		}).ToSql()
	if err != nil {
		return nil, util.NewInternalServerError(err, "Failed to create query to store run to run table: '%v/%v",
			r.Namespace, r.Name)
	}

	// Use a transaction to make sure both run and its resource references are stored.
	tx, err := s.db.Begin()
	if err != nil {
		return nil, util.NewInternalServerError(err, "Failed to create a new transaction to create run.")
	}
	_, err = tx.Exec(runSql, runArgs...)
	if err != nil {
		tx.Rollback()
		return nil, util.NewInternalServerError(err, "Failed to store run %v to table", r.Name)
	}

	err = s.resourceReferenceStore.CreateResourceReferences(tx, r.ResourceReferences)
	if err != nil {
		tx.Rollback()
		return nil, util.NewInternalServerError(err, "Failed to store resource references to table for run %v ", r.Name)
	}
	err = tx.Commit()
	if err != nil {
		tx.Rollback()
		return nil, util.NewInternalServerError(err, "Failed to store run %v and its resource references to table", r.Name)
	}
	return r, nil
}

func (s *RunStore) UpdateRun(runID string, condition string, finishedAtInSec int64, workflowRuntimeManifest string) (err error) {
	tx, err := s.db.DB.Begin()
	if err != nil {
		return util.NewInternalServerError(err, "transaction creation failed")
	}

	sql, args, err := sq.
		Update("run_details").
		SetMap(sq.Eq{
			"Conditions":              condition,
			"FinishedAtInSec":         finishedAtInSec,
			"WorkflowRuntimeManifest": workflowRuntimeManifest}).
		Where(sq.Eq{"UUID": runID}).
		ToSql()
	if err != nil {
		tx.Rollback()
		return util.NewInternalServerError(err,
			"Failed to create query to update run %s. error: '%v'", runID, err.Error())
	}
	result, err := tx.Exec(sql, args...)
	if err != nil {
		tx.Rollback()
		return util.NewInternalServerError(err,
			"Failed to update run %s. error: '%v'", runID, err.Error())
	}
	r, err := result.RowsAffected()
	if err != nil {
		tx.Rollback()
		return util.NewInternalServerError(err,
			"Failed to update run %s. error: '%v'", runID, err.Error())
	}
	if r > 1 {
		tx.Rollback()
		return util.NewInternalServerError(errors.New("Failed to update run"), "Failed to update run %s. More than 1 rows affected", runID)
	} else if r == 0 {
		tx.Rollback()
		return util.Wrap(util.NewResourceNotFoundError("Run", fmt.Sprint(runID)), "Failed to update run")
	}

	if err := tx.Commit(); err != nil {
		return util.NewInternalServerError(err, "failed to commit transaction for run %s", runID)
	}
	return nil
}

func (s *RunStore) CreateOrUpdateRun(runDetail *model.RunDetail) error {
	_, createError := s.CreateRun(runDetail)
	if createError == nil {
		return nil
	}

	updateError := s.UpdateRun(runDetail.UUID, runDetail.Conditions, runDetail.FinishedAtInSec, runDetail.WorkflowRuntimeManifest)
	if updateError != nil {
		return util.Wrap(updateError, fmt.Sprintf(
			"Error while creating or updating run for workflow: '%v/%v'. Create error: '%v'. Update error: '%v'",
			runDetail.Namespace, runDetail.Name, createError.Error(), updateError.Error()))
	}
	return nil
}

func (s *RunStore) ArchiveRun(runId string) error {
	sql, args, err := sq.
		Update("run_details").
		SetMap(sq.Eq{
			"StorageState": api.Run_STORAGESTATE_ARCHIVED.String(),
		}).
		Where(sq.Eq{"UUID": runId}).
		ToSql()

	if err != nil {
		return util.NewInternalServerError(err,
			"Failed to create query to archive run %s. error: '%v'", runId, err.Error())
	}

	_, err = s.db.Exec(sql, args...)
	if err != nil {
		return util.NewInternalServerError(err,
			"Failed to archive run %s. error: '%v'", runId, err.Error())
	}

	return nil
}

func (s *RunStore) UnarchiveRun(runId string) error {
	sql, args, err := sq.
		Update("run_details").
		SetMap(sq.Eq{
			"StorageState": api.Run_STORAGESTATE_AVAILABLE.String(),
		}).
		Where(sq.Eq{"UUID": runId}).
		ToSql()

	if err != nil {
		return util.NewInternalServerError(err,
			"Failed to create query to unarchive run %s. error: '%v'", runId, err.Error())
	}

	_, err = s.db.Exec(sql, args...)
	if err != nil {
		return util.NewInternalServerError(err,
			"Failed to unarchive run %s. error: '%v'", runId, err.Error())
	}

	return nil
}

func (s *RunStore) DeleteRun(id string) error {
	runSql, runArgs, err := sq.Delete("run_details").Where(sq.Eq{"UUID": id}).ToSql()
	if err != nil {
		return util.NewInternalServerError(err,
			"Failed to create query to delete run: %s", id)
	}
	// Use a transaction to make sure both run and its resource references are stored.
	tx, err := s.db.Begin()
	if err != nil {
		return util.NewInternalServerError(err, "Failed to create a new transaction to delete run.")
	}
	_, err = tx.Exec(runSql, runArgs...)
	if err != nil {
		tx.Rollback()
		return util.NewInternalServerError(err, "Failed to delete run %s from table", id)
	}
	err = s.resourceReferenceStore.DeleteResourceReferences(tx, id, common.Run)
	if err != nil {
		tx.Rollback()
		return util.NewInternalServerError(err, "Failed to delete resource references from table for run %v ", id)
	}
	err = tx.Commit()
	if err != nil {
		tx.Rollback()
		return util.NewInternalServerError(err, "Failed to delete run %v and its resource references from table", id)
	}
	return nil
}

// ReportMetric inserts a new metric to run_metrics table. Conflicting metrics
// are ignored.
func (s *RunStore) ReportMetric(metric *model.RunMetric) (err error) {
	payloadBytes, err := json.Marshal(metric)
	if err != nil {
		return util.NewInternalServerError(err,
			"failed to marshal metric to json: %+v", metric)
	}
	sql, args, err := sq.
		Insert("run_metrics").
		SetMap(sq.Eq{
			"RunUUID":     metric.RunUUID,
			"NodeID":      metric.NodeID,
			"Name":        metric.Name,
			"NumberValue": metric.NumberValue,
			"Format":      metric.Format,
			"Payload":     string(payloadBytes)}).ToSql()
	if err != nil {
		return util.NewInternalServerError(err,
			"failed to create query for inserting metric: %+v", metric)
	}
	_, err = s.db.Exec(sql, args...)
	if err != nil {
		if s.db.IsDuplicateError(err) {
			return util.NewAlreadyExistError(
				"same metric has been reported before: %s/%s", metric.NodeID, metric.Name)
		}
		return util.NewInternalServerError(err, "failed to insert metric: %v", metric)
	}
	return nil
}

func (s *RunStore) toListableModels(runs []model.RunDetail) []model.ListableDataModel {
	models := make([]model.ListableDataModel, len(runs))
	for i := range models {
		models[i] = runs[i].Run
	}
	return models
}

func (s *RunStore) toRunMetadatas(models []model.ListableDataModel) []model.Run {
	runMetadatas := make([]model.Run, len(models))
	for i := range models {
		runMetadatas[i] = models[i].(model.Run)
	}
	return runMetadatas
}

// NewRunStore creates a new RunStore.
func NewRunStore(db *DB, time util.TimeInterface) *RunStore {
	return &RunStore{
		db:                     db,
		resourceReferenceStore: NewResourceReferenceStore(db),
		time:                   time,
	}
}

func (s *RunStore) TerminateRun(runId string) error {
	result, err := s.db.Exec(`
		UPDATE run_details
		SET Conditions = ?
		WHERE UUID = ? AND (Conditions = ? OR Conditions = ? OR Conditions = ?)`,
		model.RunTerminatingConditions, runId, string(workflowapi.NodeRunning), string(workflowapi.NodePending), "")

	if err != nil {
		return util.NewInternalServerError(err,
			"Failed to terminate run %s. error: '%v'", runId, err.Error())
	}

	if r, _ := result.RowsAffected(); r != 1 {
		return util.NewInvalidInputError("Failed to terminate run %s. Row not found.", runId)
	}

	return nil
}

// Add a metric as a new field to the select clause by join the passed-in SQL query with run_metrics table.
// With the metric as a field in the select clause enable sorting on this metric afterwards.
// TODO(jingzhang36): example of resulting SQL query and explanation for it.
func (s *RunStore) AddSortByRunMetricToSelect(sqlBuilder sq.SelectBuilder, opts *list.Options) sq.SelectBuilder {
	var r model.Run
	if r.IsRegularField(opts.SortByFieldName) {
		return sqlBuilder
	}
	// TODO(jingzhang36): address the case where runs doesn't have the specified metric.
	return sq.
		Select("selected_runs.*, run_metrics.numbervalue as "+opts.SortByFieldName).
		FromSelect(sqlBuilder, "selected_runs").
		LeftJoin("run_metrics ON selected_runs.uuid=run_metrics.runuuid AND run_metrics.name='" + opts.SortByFieldName + "'")
}


The sleek Blossoms Restaurant brings Asian flavors to the Caribbean in a classy yet relaxed setting, complete with Japanese-style furnishings and décor.
Tantalize your taste buds with authentic flavors of the Orient in three unique culinary styles: a sushi bar; Teppanyaki tables and innovative Hunan and Szechuan specialties.
Located on the Mirador Level of the resort, Blossoms offers a menu packed with outstanding fish, meat and rice dishes. Sit at the Teppanyaki tables and watch in awe as the specialist chefs prepare your meal, or tuck in to the immaculate, hand-rolled sushi.
Make a table reservation online. We look forward to seeing you.


text:
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>http::basic_fields::has_content_length_impl</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Chapter 1. Boost.Beast">
<link rel="up" href="../boost__beast__http__basic_fields.html" title="http::basic_fields">
<link rel="prev" href="get_target_impl.html" title="http::basic_fields::get_target_impl">
<link rel="next" href="insert.html" title="http::basic_fields::insert">

Home
Libraries
People
FAQ
More

http::basic_fields::has_content_length_impl

Returns true
          if the Content-Length field is present.

          Synopsis

bool
has_content_length_impl() const;

          Description

Copyright © 2016, 2017 Vinnie Falco

        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)


Excavate and thoroughly compact area to be paved.
Establish a 90º starting point.
Install and compact base in 2-4" layers (1 1/2" processed gravel or 3/4 crusher run).
Install Pave-Edge® restraints directly on the base and secure with 10" steel spikes.
Spread coarse concrete sand and screed to a uniform depth of 1" thick.
Starting from a 90º corner, place pavers in desired pattern and cut where necessary to fit. Use 2 3/8" thick pavers for most residential applications and 3 1/8" thick pavers for commercial vehicles.
Compact the pavers into the sand bed with a plate compactor or rubber mallet.
Sweep dry sand into joints and compact. Repeat procedure until the joints are full.
Note: Poor draining soils, such as clay, may require additional excavation and base material and the use of a woven geotextile fabric.


Prince Harry and Meghan Markle will finally tie the knot this Saturday at St George's Chapel in Windsor.
The ceremony will be followed by a carriage procession and two receptions, including a private party at Frogmore House.
No doubt people will be glued to their TVs on Saturday as the wedding celebrations will be broadcast worldwide, but what time is everything actually kicking off?
Well, just so you know exactly what time you'll get a glimpse of Meghan's dress, we've broken down the schedule for Meghan and Harry's big day.
As we already know, the service will take place at St George's Chapel on the grounds of Windsor Castle, where Prince Harry was christened back in 1984.
The lucky members of the public that have been invited to watch from the grounds of Windsor Castle have been asked to arrive from 9am.
According to The Telegraph, wedding guests will arrive between 9:30am and 11am by coach, and they will be put through security checks and asked to show identification.
They will then travel to Windsor Castle on a bus, where they will enter the chapel through the south door.
Then at 11.20am, members of the Royal Family will arrive and enter the chapel through the Galilee Porch.
At 11.45am, Prince Harry and his best man and brother Prince William will arrive at the chapel's west steps by foot, and Harry will acknowledge the 200 representatives from charities he is associated with.
Of course, The Queen will be the final member of the Royal Family to arrive at the chapel at 11.55am.
Meghan is then expected to arrive at the chapel's west steps at 11.59am, for the service to start at 12pm.
The bride has chosen to travel with her mother Doria Ragland, which is a break from tradition as the bride usually travels with her father.
Meghan was then supposed to meet her father, Thomas Markle, at the chapel's west door before walking down the aisle, however, it's since been confirmed that Harry's father, Prince Charles, will do the honours – while Meghan's dad recovers from heart surgery.
The ceremony will be conducted by the Dean of Windsor, The Rt Revd. David Conner, and the Archbishop of Canterbury Justin Welby will officiate their marriage.
The wedding ceremony will end at 1pm, and newlywed Harry and Meghan will leave the chapel at the west steps, before being met by their carriage, an open-topped Ascot Landau, which will be led by six Windsor Grey horses.
The couple will be driven for two miles along Castle Hill, the High Street and into Windsor town centre before returning along the Long Walk for their reception. This is expected to take around 25 minutes.
While Prince Harry and Meghan are driven around Windsor, wedding guests will head to St George's Hall for a lunchtime reception hosted by the Queen.
The 600 guests who were invited to the ceremony will be invited to the Queen's reception, and sources say the guest list was restricted to those who have a direct relationship with the couple.
Then from 7pm, 200 guests (personally selected by Harry and Meghan) will attend an after party hosted by the Groom at Frogmore House, which is about half a mile away from Windsor Castle.
According to reports, the party will be a 'festival-themed' bash, and major stars like Ed Sheeran, Coldplay, and even the Spice Girls, are expected to perform.
As we mentioned before, the royal wedding will be broadcast worldwide thanks to a single pool camera.
The BBC, Sky News and ITV will broadcast coverage throughout the day.
The BBC's coverage will start at 9am on Saturday, and will be hosted by Huw Edwards, Kirsty Young and Dermot O'Leary from the grounds of Windsor Castle.
Kirsty and Dermot will be presenting live from the castle's moat, while Huw will present from the roof of the Windsor Guard Room.
The One Show's Alex Jones and former Strictly star Ore Oduba will also be there to capture the crowd's reactions.
Meanwhile, ITV's coverage will start at 9.25am, and will run until 3pm. The coverage will be hosted by Phillip Schofield and Julie Etchingham from a purpose-built studio in Windsor.
Sky's coverage will also start at 9am until 3pm, and will be presented by Kay Burley, Anna Botting, Jayne Secker, Sarah-Jane Mee, Colin Brazier and Jonathan Samuels.


text:
Fortified Cultural Heritage - Full of Life
Forte Cultura
Fortified Heritage
Experience World
Single Fortress
Fortified Ideal City
Fortified City
Fortified Palace
Fortified Castle
Fortified Sacred Building
Fortified System
Fortified Defence Lines
Fortified Monuments
2000 years of fortified defence lines
Long stretched lines of defence for the protection of bigger regions as border installation, line fortress or territory fortress.
Border installations are provided with distinctive constructional reinforcements and defensive systems in order to hinder attackers and to defend the claimed territory. The Roman Limes is classified as the ideal of high fortified border and defensive lines between hostile nations and religions. Today, this fascinating fortification with several museums and archeological sites belongs to the UNESCO World Heritage and to touristic attractions.
Line fortresses often consist of wide-spread but powerful fortress buildings which are connected with ramparts, ditches or walls. With regard to the bastioned fortress construction, defensive lines were seldom used. One of the most interesting is the biggest European mountain fortress chain around Fenestrelle (Italy) which should hinder the old enemy France to invade Italy. After 22 years of construction and since 1750, a two-kilometre-long wall on the back of the mountain combines the three fortresses to a compact chain. The Alpine region with its valleys and passes was well suited for border fortifications, road blocks and customs facilities – so called Klausen (Austrian).
Territory fortresses evolved prior to the First World War and especially between both world wars in order to prevent the annexation of territories. Mussolini's Italian Alp embankment with 350 infantry or artillery works in South Tyrol was ironically directed against the unified German Reich as of 1938. Other deep-staggered fortification systems of the 20th century are, for instance, the Stalin- and Molotov-Line (Soviet Union), the East and West Embankment (German Reich) or the Rupnik-Line (Yugoslavia). Quite famous as well is the Maginot Line in North France which was built for the protection against an attack of the German Reich. Its bunkers, ditches, tank turrets and the logistics net remain as monstrous as well as in their gigantism fairly fascinating memorials in the landscape and remind of Europe's martial history.
A special memorial of the Cold War and a monument with fortified border installations is the "Iron Curtain" ranging from the Baltic Sea to the Adriatic Sea and can be experienced as an interesting landscape journey.
©2019 Forte Cultura info@forte-cultura.de
ContactPrivacy PolicyImprint Webdesign: firmennest.de


text:
Jutanugarn up by three in Prattville
Thailand's Ariya Jutanugarn fired a career-best nine-under-par 63 to claim a three-shot lead at the Yokohama Tire LPGA Classic.
Jutanugarn, who is on 14-under, is followed by Minjee Lee and Ryan O'Toole as they sit in a tie for second on 11-under.
So Yeon Ryu occupies fourth place on 10-under, while Stacy Lewis and Morgan Pressel are in a tie for fifth on nine-under.
Jutanugarn, who is on track to win her maiden LPGA Tour title, got off to a mediocre start as she made two birdies and a bogey on the front nine. It was on the back nine where the 20-year-old made her charge as she made five consecutive birdies from the 10th to 14th before going on to tie the tournament's 18-hole scoring record with a hat-trick of birdies from the 16th to 18th.
Lee once again had a solid round as she carded a 68, which began with her making three birdies on the front nine. Despite proceeding to make two birdies and a bogey on the back nine, the Australian retained her position on the leaderboard.
O'Toole continued to impress on Saturday as she also recorded a 68, which saw her start with a duo of birdies and a bogey on the front nine. The American had a stellar back nine though as she started with an eagle at the par-five 10th before going on to make a birdie at the 14th.
Ryu only made two birdies and a bogey during her round of 71, while 2012 champion Lewis registered a 68, which consisted of five birdies and a bogey. Pressel meanwhile fired a 70, which included four birdies and two bogeys.