#Replace everything plastic with paper is nice but it's not without consequences
Explore tagged Tumblr posts
Text
Uncarefully worded Rant incoming but My country is up to bullshit again. And with the Epic Corona Mismanagement clouding every other issue, the deforestation matter is conveniently snuck under the radar. It's too abstract, not pressing enough, a slow burning disaster.
Because.
This is not a forest.
See the top pictures how there's just a single type of tree? How all the trees are straight and fast grown? The same height? How there's only blueberry brush and no small bushes and baby trees at all? That's because this is not a forest, but a tree farm. The pictures are from two different places, months and miles apart. They look identical. And they're not only spreading, they are now the dominating type of "forest" in this land. Two third of our surface is covered in woods, but this is what they're starting to look like. And it's a big fucking threat not only to the North. Because we're all connected.
"there are no clear cuts in Sweden anymore" says Herman Sundqvist, director of the national forest board. And sure, unlike the 1800s these days they replant pines on top of the scars. But logging hundreds of acres at a time and replacing old woods with plantations threatens biodiversity and is extremely short sighted as far as the economy goes. You make more money today but expose your new trees to storms and forest fires in a way that a mixed natural forest would handle better. Less than 5% are protected. The rest can easily be replaced by tree farms and noone would lift a finger. Teaming up with Bolsonaro on the road to ruin.
Not to mention its also messing with the cultural heritage the forests carry. I know they give zero fucks about how the land ties into the stories and songs and art, but just LOOK at the shit in these pictures up top. Do you see Trolls and Huldras and Lantern Men, Vättar, Vittror and Askefroa live there? Do they stir the imagination? These new woods are silent and whisper no names, no promises. They sing no songs. And I care. And I believe more people would, if they knew the extent of the damage that is done. How little is left of the Troll Forests that were vast no longer back then when I was a kid. By no coincidence is "the right to roam" one of the liberties that will be defended by even the slowest couch potato in the nation.
Now look at this :
This is a forest. Where the branches grow uneven. Where you'll see at least four different trees if you look to your left. Where there is dead wood, young green trees and old. Where there'll be birds and mushrooms and lichens. And where I can imagine the Skogsrå calling.
#Rant#It's an ongoing disaster but there's always some temporary crisis that need solving#And I don't really oppose forestry at all#But the habit of clear cutting large areas rather then selecting trees to fell#It would take more manpower but honestly#Things should not be as cheap as they are#As disposable as they are#Replace everything plastic with paper is nice but it's not without consequences#There need to be less... Things#Personal#Sweden#Sverige#'You want the smallest trace of culture respected? why not get a new heritage in your Happy Meal.'#It's everywhere#Like we just stopped a logging in Sapmi but congratulations they'll only grab old woods in the south instead where the outrage will be less#And I'm tired#Backaskogen#Skogsmissbruket
141 notes
·
View notes
Text
021. ‘I miss the way things used to be.’
This was prompted by an awesome anon! I think my brain gobbled up your awkward and replaced it with angsty. I tried to put it back in the end, though. I hope you like it!
Fandom: Detroit become human | Ship: Reed900 (Background Hannor) | AU: Hanahaki (Warnings: blood and a little bit of body horror, but nothing unusual for Hanahaki)
Nines looked himself over in the mirror, picking up a few loose petals and putting them in the bin to join the rest. Then he picked up the paper towels laying around and wiped the Thirium off his lips and torso. Then he put his shirt back on and straightened his high collar. Checking his perfect appearance one last time and pushing his hair back out of habit, the android left the bathroom for the break room. He scowled as he found it filled with people. Connor stood at the coffee machine and Gavin stood at the high table sipping his. Nines swallowed as he felt his already low Thirium levels from the pruning drop further upon seeing the man. He hurried over to the counter they stored their Thirium supplies in and took a bottle, drinking it deliberately slow to mask just how much he needed it.
‘Another refill, tin-can?’, Gavin asked. ‘Advanced model’, Nines answered matter-of-factly. ‘I need more than others.’ ‘Yeah, yeah, whatever you say. Just be back on time, okay? We have a job to do.’ ‘Says the right one’, Nines muttered, getting back to refilling his Thirium. Gavin chuckled at that and Connor turned around to them. ‘You should really tell him, Nines’, he said, worry evident in his voice. ‘Tell me what?’, the Detective wanted to know. Of course, he had overheard Connor. Nines could send Connor into forced stasis for that comment alone. The RK900 stepped away from Connor, looked Gavin in the eye and, with more force than necessary, he spat: ‘I should tell you to fuck off!’
Gavin flinched, looked up at the android and straightened. ‘Okay, fine, I’m going. Jeez, someone is pissed, I see.’ But as he was about to go, Connor jumped and held him back by the hood of his pullover. Gavin yelped, as the RK800 pulled him back into the break room and towards Nines. ‘This is not what I meant and you know this, don’t have me do this!’ But Nines stayed silent. ‘Don’t do what?’, Gavin asked, completely confused now. ‘Guys, I don’t wanna be part of your weird android-brother issues, okay? Let me just go and I pretend to never have heard-’ ‘Nines has Hanahaki’, Connor interrupted and earned himself a dangerous growl from the android in question.
Gavin frowned, then laughed. ‘Good one, plastic puppy! That’s impossible.’ ‘It is’, Connor held against it. ‘Nines, show him!’ ‘I won’t do anything and this will have consequences, you-‘ Connor moved towards him and pushed into the other android’s neck. Nines speech cut out as the compartment opened for maintenance. It was stopped halfway by his collar, but the latch was opened enough to let some white flowers show on the inside.
Gavin stared at it, then up to the android, whose LED was a hot burning red. Connor knew then that he had pushed to far, as Nines fist collided with his face and send him back against the table. Then the RK900 pushed the compartment back into place and brushed off his collar. ‘Don’t ever touch me again, or I will aim somewhere more vital, Connor. I love you, brother, but I also won’t hesitate.’ ‘So, this is the real thing?’, Gavin asked. ‘Yes. But it isn’t like in humans. It won’t kill me. It just grows when I’m around this person as an extension of my thirium system. It drains my Thirium levels. But regular pruning and it doesn’t impair my functionality at all.’ ‘So, you are basically a walking talking flowerpot?’, Gavin wheezed. ‘That is not funny!’, Connor cut in between. ‘It is a serious condition!’ ‘It is not’, Nines disagreed. ‘I won’t die.’ ‘That doesn’t mean it’s healthy!’, Connor reminded him.
But Gavin had lost it already. ‘You phcking asshole’, he laughed. ‘The all high and mighty Nines has fallen in love, but boohoo, their chosen one is not returning the favour. That’s fucking funny. Karma is a bitch, I guess. Maybe you should have been more open with your feelings and less uptight all the time.’ ‘Gavin, this is not helping!’, Connor shouted at the man. A simple scan told Connor despite the refill Nines’ Thirium levels were plummeting again. ‘Oh, bite me, Connor!’, Gavin screamed back. ‘The fucking tin-can got what he deserves! Always so certain androids are superior and speaking like a dictionary on legs. Always looking down on humans because they are “complete slaves to their feelings”! That’s what he gets now.’ Nines slumped back against the counter, holding himself upright on it. He felt his Thirium being literally sucked out of his system by the plant that was growing and had already surpassed the stage it had before the pruning a few minutes ago. He coughed and wiped away the Thirium dropping from his lips. ‘Gavin.’ The plant had reached his voice box and he doubted the man had heard him. He couldn’t die from it, he reminded himself and that at least let his panic subside. The worst would be induced stasis because of the Thirium drain. Whatever cruelties the Detective uttered could accelerate the growth and push him into stasis. That was all. That was all.
‘Maybe, if there was one nice thing about you, you were actually loveable! But no one could love a heartless, cold machine!’ Nines couldn’t move. The plant had taken over his joints and filled out his hollow parts to the brim. He forced his mouth shut not to lose all dignity. Instead he opened his chest to alleviate the growing pressure in his chest, ripping his spotless shirt. He coughed again, spilling flowers and Thirium, before falling on the ground and inducing stasis. ‘Gavin, fuck off to your desk and shut your goddamn mouth!’, Connor screamed, and Nines would have smiled at his brother cursing. But that was the last thing he heard before stasis and his lips were immovable.
-
As he was reactivated, he lied on a couch and analysing the pattern of the ceiling he was in Hank’s home. He sighed and sat up. Immediately Connor was next to him. ‘I’m sorry, Nines, I shouldn’t have pressed things.’ Nines scanned his systems. Connor had cut the plant back and refilled his Thirium. ‘You were only worrying for me. I’m sorry I punched you.’ ‘No, I shouldn’t have. And I deserved that. I have no rights to open your ports without your consent.’ ‘Stop taking the blame for everything!’, Nines insisted, raising his voice. ‘It is my fault for loving this idiot. But don’t worry, I will just suffer through it. You can learn to unlove someone, it just needs time. I thought it would be easy to hate him, but apparently hate doesn’t cancel out love.’
‘I just worry for you, Nines. Everyone deserves to find someone if they want it.’ ‘I don’t know if I still want it’, Nines muttered. ‘I wanted it a few weeks back. We are a good team and I saw glimpses of a heart of gold under all this tar he bathes in. When I saw you and Hank, I thought it would be nice to have something like that. But after yesterday… Maybe I fantasised too much.’ ‘Nines, I-‘
It rang at the door and both looked up. ‘I’m going!’, Hank called from somewhere deeper in the house and hurried past them. He opened the door, and there was a beat of silence. ‘No, not you! Fuck off, you did enough already!’ Nines turned around to the door. Then he stood up and followed his hunch. He appeared in the doorframe next to Hank and looked down on the man standing on the porch. ‘Err… Hi, Nines.’ Immediately the android’s Thirium levels sunk a bit. ‘Nines, I can-‘, Hank began, but the android just pushed forwards. ‘Thank you Hank, I think I will manage. Please, leave us alone.’ The man grumbled something, but left for the living room.
‘What do you want?’, Nines asked coldly. ‘I… Err… What do I want? I… Phck! Apologize! I wanted to apologize. I shouldn’t have made fun of you.’ ‘No, you shouldn’t have.’ ‘Yes!’ Gavin looked like he felt guilty. He was reasonably bad at apologizing too. He meant it. A fake apology would have gone far smoother. ’Yes, I know, I’m a huge asshole.’ ‘That’s true, too.’ ‘So, everything alright?’ It sounded so damn hopeful. ‘No’, Nines destroyed that illusion. ‘No. Not after what you told me today. That was cruel and unnecessary.’ ‘Listen, okay, this whole thing was completely wrong! I reacted shitty. I’m sorry. Can’t we just go back to before this whole thing?’ ‘I miss the way things used to be, too’, Nines said. ‘But you won’t forget I’m in love with you and I can’t forget you telling me I were a heartless, cold machine.’ ‘Wait. Wait, wait, wait! You are in love with me?’ Gavin looked shocked. ‘Yes. I thought that was obvious with how I reacted to your words.’
‘Holy shit.’ Nines didn’t know what to say, so he kept his mouth shut. ‘No shit? You really love me?’ ‘Yes.’ ‘Yeah, I didn’t believe it either’, Connor shouted from inside the house and Nines grinded his teeth, stepping out and pulling the door close behind him. ‘What… What could you possibly love about me?’, Gavin asked then. The android walked towards the stairs and sat down. ‘You are intelligent, you are funny, as long as I’m not subject to those jokes and very fascinating in your efforts to self-destruct.’ ‘Okay…’ Gavin spoke, pulling each sound and sitting down next to Nines. ‘Not what I would call attributes to love…’ ‘But not un-loveable’, Nines muttered. ‘Other than me apparently.’
Gavin brushed his thumbs against each other. Shit, this was awkward. ‘One could love your sense of clothing’, he tried to think of something. ‘It’s nice.’ ‘It’s Cyberlife clothing. The uniform, just without the markings.’ ‘But it looks good on you. Also… You are intimidating and throw a punch like no other.’ ‘That’s not something “nice” about me, as you put it.’ ‘Hey, as long as it’s not directed at me…’ Nines chuckled at that.
‘Listen, it had been some time since I last thought of anyone taking a liking to me’, Gavin explained, looking back at the house. ‘And I hope your weird brother is not listening right now, because shit’s personal. I accepted being alone. And I treat everyone like shit to make sure I never get that close to anyone again. But…’ He tentatively laid a hand on Nines’. ‘Maybe I could learn to love again?’ Nines looked at Gavin’s hand and shifted his to hold the human’s. ‘We can try. You to love and me to be loveable.’ ‘Sounds good.’
#detroit become human#dbh#Reed900#RK900#Gavin Reed#Connor dbh#RK800#background Hannor#My brain reading reacting bad: this means i canwrite angst right?#Me: They said awkward! Awkward!#Brain: I added a little part of awkward dialogue you okay now#this was my hands writing not me#But I like it#Gavin is an asshole but he is Nines asshole so it's alright
47 notes
·
View notes
Text
His Brightest Star
Request: anon: Request for Got7 JB: can you do a oneshot of mafia!AU where JB's girlfriend is on vacation and gets kidnapped? But she's in the dark and JB has to save her? Super angsty with a happy ending if you want? 💖
A/N: So, first of all, I am so sorry requests are taking so long! But I had to pause on my series because this just might be the perfect remedy to my sudden JB feelings recently! I hope you enjoy!
Genre: Mafia!AU, Angst
Pairing: Jaebum x Reader
**
The man was shaking so violently he was almost a blur. As he knelt on the plastic tarp that protected the carpeted floor, he had to have known what was waiting for him. Surrounded by seven of the most notoriously vicious gangsters in the entire country, he knew that there was no talking himself out of this. But that didn’t stop him from trying.
“P-please,” he begged. “I-I was just following orders.”
While there were several individuals glaring daggers at the man, there was one figure that was more terrifying than the rest.
Jaebum, leader of the infamous G.O.T. seven, was leaning up against the front side of his desk, hands in his pockets. His gaze was off to the side, ignoring the quibbling pleas of the man on the tarp.
“You should have known the consequences of following those orders,” Jackson spat behind the man.
The man was sweating so much that he was drenched as if he’d just come inside from a rain storm. His hair was plastered to his forehead and the neck of his white button down was stained where it touched skin. Just looking at him made one think that he’d been waterboarded. Not something that G.O.T. was against, but not a method they’d used this time around. This one had been too easy to make talk.
“Please, I’m not the one you want,” he sputtered. “Yes, I pulled the trigger, but it was on Seokmin’s orders. He’s the one who –hmph!”
Sick of listening to his blabbering, Jaebum shut him up with a hard fist to the jaw.
Seokmin was the greatest enemy of the G.O.T. but over the last few months, Jaebum had nearly dismantled his whole operation, taking over a majority of his territory. It’d been Jaebum’s greatest achievement.
Bending down to meet the man’s eye level, Jaebum calmly explained, “I don’t care who made the orders and who pulled the trigger. In the eyes of the law, they’re both equally responsible. And around here we respect the law, don’t we boys?”
Snickers bounced around the room, but Jaebum’s eyes never left the man who killed one of his own. Funny how brave he’d been when facing down a G.O.T. associate. Take away the gun and he had less courage than a child around a spider.
“I’ll give you anything you want,” the man desperately offered. “I have information. Seokmin knows. He knows about her!”
Even as he tried to keep his composure, Jaebum could feel the little twitch in his facial muscles, giving away his slight moment of panic.
“You know what I want,” Jaebum smirked, although there was no light behind it. “I want your blood.”
“No, please-”
Bang!
The man dropped to the floor with a nice sized hole in his head. Blood was splattered everywhere, but most of it landed on the tarp. A few droplets decorated Jaebum’s face and crisp white shirt. Now he would have to change. Standing up, he took a handkerchief out of the inside pocket of his jacket to wipe his face.
Bambam replaced his gun back into its shoulder holster, satisfied by his quick work.
Noticing what time it was, Jaebum held back a groan. Without a word, he started for the door.
“JB,” Jinyoung stopped him. It was a nickname that only the six of them could call him.
Jaebum glanced over his shoulder. “What?”
“They know about her,” Mark cut in. “What are you going to do?”
Inhaling deeply through his nose, Jaebum simply said, “Clean this up. I’m late for dinner.”
**
You sat there, alone, at the table set for two. This wasn’t an unusual situation. The man you’d been seeing steadily for the past two years was busy with his work often, but even then he would only be ten or fifteen minutes late. At the moment, he was going on over half an hour.
In the past if he wasn’t able to make it, he’d always call you before you even made it out of your apartment. How he always seemed to time his cancellations so perfectly was beyond you, but he always made sure to call you. As a director in an international corporation, those cancellations came a bit too often for your liking.
It was the sweet moments in between the called off dates that made it all worth the trouble. The times he’d surprise you at your apartment in the middle of the night with a new bracelet or the last minute vacations in exotic places. If you were honest with yourself, you sometimes wished the vacations and expensive gifts were replaced with more intimate moments, more domestic scenes. You wanted to cook him dinner or have a movie marathon on your couch that lasted all day. That type of life was just a sacrifice you had to make if you wanted to stay with Jaebum. And you loved him too much to give him up.
“I am so sorry I’m late.”
Jaebum came waltzing up to your table, placing a kiss on your cheek before sitting down across from you.
“I was beginning to think that you’d forgotten about me,” you whispered bashfully with pursed lips.
Leaning towards you, his eyes shined as he countered, “You are impossible to forget.”
That did it. A smile grew across your face that was impossible to fight. He always knew how to butter you up with precisely the right line.
“Did you order already?” he asked as he flipped open the menu.
You nodded. “I ordered your favorite but told them not to start cooking until you got here, in case you wanted something else.”
“No, that’s fine,” he sighed, putting the menu to the side. After taking a quick sip of the dark red wine in front of him, he lit up. “Oh, by the way, I have a surprise for you.”
Biting your tongue, you waited as you watch him pull a small envelope from the inner pocket of his suit jacket. The only surprise that you wanted was personal time with him.
Jaebum slid the envelope towards you and you picked it up with anticipation. It was a bit of a struggle to pull the papers out, but when you finally did, your jaw dropped. Inside was a plane ticket.
“Jeju Island?” you exclaimed. For the past six months, you’d been begging Jaebum to go with you.
Your father owned a small cabin in one of the more remote areas of the beautiful vacation spot. To you, it was the perfect place to have Jaebum to yourself. Cell reception was nearly non existent out there and the idea of no interruptions was about the closest you thought you could get to those little domestic moments. This was an example of a surprise vacation you would gladly take.
“I knew you would like it,” Jaebum grinned, obviously proud of making you happy.
As you put the ticket down on table next to your plate, you asked, “When do we leave?”
Knowing Jaebum, he already had everything worked out with your job and was just waiting to inform you. But the smile slipped from his face.
“Actually, I’m not going with you,” he admitted.
You blinked. “Oh. Um… why not?”
“After I booked the tickets, something came up at work and I have to stay behind,” he explained. “But I still want you to go. I know you’ve been itching to go for a while. If I can, I’ll join you in a few days.”
Completely deflated, you passed the ticket on the table towards him. “That’s okay. We can just reschedule it for another time when you can be there the whole time.”
“No, you should go,” Jaebum pushed, sliding the ticket right back to you. “It’s okay to go without me.”
You shook your head. “Jae, no, I’d rather just wait until you can go, too.”
“(y/n)!”
Jaebum’s sudden rise in volume made you flinch. Seeing your momentary fright, he relaxed into his seat.
“Please, just go,” he begged. “For me.”
His pleading worried you. With Jaebum you could usually get him to work around you with these kinds of things, but right now he wasn’t backing down. He seemed almost… desperate to get you out of the city.
“Jae, what’s going on?”
“Nothing,” he insisted. You didn’t believe him. “You’ve been complaining about work for a while so I figured you needed a break. I don’t want you to stress about your job. Life should be fun, not spent worrying about work.”
You wanted to argue. The fact that he was pushing you so hard to go was strange to you. There certainly something else going on. But Jaebum was the kind of person who couldn’t be suade once he’d already made up his mind.
Lightly running your finger over the rim of your water glass, you sighed. “Okay. I’ll go.”
**
You were mad at him. Jaebum knew that much as he waved goodbye to you at the gate. The smile on your face was strained, not the usual bright and joyful kind he was so used to seeing when you looked at him. But he was doing this for your own good. He needed to know that you were safe while he hunted Seokmin down and ended the threat for good. You were his world and he’d be damned if he’d let anything happen to you.
The easiest way to handle this would have been to tell you the truth.
All this time, he’d kept you in the dark from his true line of work. You knew that he ran a business - a fairly lucrative one at that. You knew the six men who followed his orders without question and helped him build his empire right under the nose of the law. But you didn’t know about his dirty, bloody hands. He couldn't tell you in fear that you would leave him, disgusted by who he really was.
The day that Jaebum met you was the day his dark life gained a ray of light.
You were lost downtown, having just moved to the big city after a life spent in the countryside. A crumbled up map was clenched tight in your hand while you compared it to the GPS on your phone.
At first, Jaebum had planned on walking right by you. Everyone needed to learn their own way. But during the brief second of eye contact between you two, there was something in your eyes that made him stop. He would never be caught agreeing to the idea of soulmates, but he figured you came pretty close.
He was sure that shine in your eyes was made possible by your innocence. You saw the good in people, never assuming the worst even if everyone else could see it. Somehow, you managed to see the good in him, he who was nowhere near sainthood.
Jaebum didn’t relax as he jumped back into the driver’s seat of his car outside the airport. The passenger’s side door opened and Jinyoung slid into the seat that you had occupied just an hour earlier.
“You still think this is the best idea?” Jinyoung asked.
With a short nod, Jaebum replied, “She’s out of the city. That’s all I can ask for. Has Youngjae found him yet?”
Jinyoung shook his head. “Not yet. But he thinks he’s getting close.”
“Well, he needs to hurry up,” Jaebum growled as he sped down the highway back to their headquarters. His grip on the gearshift was tight and stiff. Veins popped up under the skin near his knuckles, but he didn’t loosen his muscles for a second.
“He’s doing the best he can,” Jinyoung defended. Jaebum rarely got upset with any of them, much less Youngjae. That kid always got the easy life when it came to their leader. Jaebum’s anger beign directed towards him now just proved how stressful this ordeal was. “We won’t let anything happen her. We promise.”
Taking a deep breath, Jaebum moved on. “Did Mark get all the cameras installed in the cabin?”
“Up and running.”
“Good.” Jaebum took a sharp left and pulled up to a heavily armed garage door. He pressed a button on his cell and waiting as the door lifted up until it was clear enough for him to drive through.
Inside the main meeting room, Youngjae was hard at work at the computer, eyes scanning the multiple screens in front of him. Mark and Yugyeom were hovering over his shoulders, also searching the monitors in case the hacker missed anything.
Jackson and Bambam were sitting on the long, dark wood table in the middle of the room, cleaning their guns.
“She in the clear?” Jackson asked, clicking the pieces of his gun back together.
Jaebum checked his watched. “Plane took off about fifteen minutes ago.”
“Good,” Bambam nodded with a smile. “No need for the first lady to get involved or hurt.”
Jaebum didn’t even fight the roll of his eyes. All the boys called you that: First Lady. Queen was a bit too haughty for your personality, but First Lady fit the angelic aura about you perfectly.
“I’m sorry, JB,” Youngjae groaned, not even looking away from the computer. “I’m trying to find him, any trace of him, but he’s deep underground. I’m going to have to try some other method.”
“Just do it,” Jaebum sighed, running a hand through his hair. “I’ll be in my office.”
No one followed him as he shuffled to his private room. The door shut with a quiet click. At his desk, Jaebum tried to focus on the work that needed to be done rather than you. For hours, Jaebum poured over paperwork, looking over his assets and the incoming shipments. He was so lost in his work that when Mark came barreling into the office, Jaebum was spooked and dropped several papers on the floor.
“JB! It’s (y/n)!”
Jaebum jumped to his feet. “What do you mean? What happened?”
Mark didn’t answer, instead running back out of the office. Jaebum scrambled to his feet, following him.
All the others were gathered around the monitors. Every single screen had the same footage on it. Jaebum could feel his jaw clenching tight as he neared the group. Someone was tied to a chair with thick rope wrapped around them, unconscious by the way their head hung down. Even in that position, Jaebum could recognize exactly who the victim was.
You.
Seokmin stood behind you, running his sick fingers over your bare shoulder. You were still dressed in the shorts and tank top Jaebum had last seen you in before you got on the plane.
“She’s quite pretty,” Seokmin purred, moving his hand to under your chin. “I can see why you like her, Jaebum.” He smirked. “You should have kept a better eye on her. Letting her travel alone? Tsk, tsk. Not a very smart move. It was too easy to get her to go with my man as soon as she landed on Jeju.”
Shoving the others out the way, Jaebum slammed his hands down on the desk. “Where the hell is this coming from? Where is she!”
“I’m working on it!” Youngjae yelled, his fingers flying across the keyboard as quickly as they could. “The IP address is bouncing around everywhere!”
“If you want to see her again,” Seokmin’s image grinned manically. “Then come to Jeju. I believe this little cabin belongs to (y/n)’s father? Why don’t you join us? Maybe I’ll give her back.”
The screens went black. Letting out a yell, Jaebum punch the closest monitor, cracking the glass.
“He really is on Jeju,” Youngjae concluded. “The address landed there. It’s a pretty strong signal, too, considering where he was broadcasting from. Somehow he managed to break into our feed and misdirect it.”
“Pack up,” Jaebum ordered. “We leave within the hour.” He stormed away from the others, going over in his head the many different ways he was planning on killing Seokmin. His bare hands seemed the most satisfying.
**
The plane ride to Jeju was too long, too much idleness that left Jaebum trapped in his own thoughts.
Was Seokmin torturing you while Jaebum sat in his first class seat? Were you in hell because of him? If you both made it out alive, would you understand?
Now there was no way he could hide this world from you, not anymore. Would you leave him now as he’d always feared?
No. He couldn't let himself think like that right now. He had to focus on making you safe again. Then he could deal with the consequences.
When the plane landed, Jinyoung and Youngjae ran to get the rentals while the rest of them made sure that they were all aware of the plan. Bambam and Yugyeom were itching to get going, bouncing from one foot to the other. Those two idiots lived for rushes like this.
The drive to the cabin was even longer. Jinyoung followed the GPS coordinates while Jaebum stared out the window, fists clenched tight on his thighs. Jackson and Mark were sitting quietly in the back while the younger members followed in the other car behind them.
Slowing to a stop, Jinyoung parked the car outside the cabin and they all stepped out. With guns drawn, they practically tiptoed towards the front door.
Jaebum kicked open the door and stormed inside.
In the middle of the living room was you, still tied to the chair, but now conscious. Your eyes, wet and red from crying, met his. Screams from your throat were muffled by the gag that was tight over your mouth. Jaebum took one step in your direction before something cold and metal was pressed against his head.
“How good of you to join us,” Seokmin mock. “Your arrival was quick, just as I hoped.”
“You son of a bitch,” Jaebum growled, not taking his eyes off of you. “You should have just come straight for me.”
“But where’s the fun in that?”
The others, now disarmed and vulnerable, were herded into the cabin as well by Seokmin’s men. Removing the gun from Jaebum’s head, Seokmin took Jaebum’s only form of protection and rounded about until he came to you.
“You know,” Seokmin smirked. “At first, I thought I could get some wonderful pieces of information out of her when I first had my men following her, but it didn’t take long to discover that she actually has no idea what you really are.” He cocked the gun before aiming it at your head. “Since we’re all here, why don’t you tell her the truth?
“Just let her go!” Jaebum yelled. “She has nothing to do with this! Whatever you want, I’ll give it to you! Just let her walk out of here alive.”
Seokmin smirked. “Anything I want? Really? Because I want to see you crumble. I want to see you broken. And at first, I thought that meant taking everything from you like you with me. But that’s no use. You’re smart. You’ll just find a way to build it back up again. So, instead, I want you to confess to your love. Tell her about the devil she’s shared her bed with.”
**
You could hardly understand what was happening. Everything had been fine when you first landed on Jeju Island. It was beautiful, exactly how you remembered with the crashing waves and greenery for miles.
A man you had never met before was standing just outside the gate exit with a sign depicting your name in his hands. He told you that he was sent by Jaebum to make sure that you made it safely to the cabin. He was easy to believe as it sounded exactly like something your boyfriend would do. But as soon as you stepped through the front door of your father’s vacation home, someone hit you on the back of the head, effectively knocking you out.
When you came to again, you were tied to a chair in the living room while a different man leaned up against the wall opposite of you, his cold eyes laughing at you. A strip of cloth covered your mouth, stopping you from asking any of the questions that were bouncing around in your head. Tears formed in your eyes until they streamed down your cheeks.
You were going to die. That was your only conclusion. And you couldn’t even tell Jaebum goodbye.
You’d hardly spoken to him as he drove you to airport, still sour that he wasn’t coming with you. What would happen to him? How would he react if you never made it back to him?
Like a miracle, that’s when the very man you’d just been praying to see one last time came running into the cabin. He had a gun drawn and when he saw you, he looked relieved. You tried to scream at him, to warn him of the man that was now behind him, but it was too late. The man put his gun against Jaebum’s head and disarmed your one hope of escaping. Just a few seconds later, more men came inside the house, including Mark, Jackson, Jinyoung, Youngjae, Bambam, and Yugyeom. What were they doing here?
You couldn’t understand the conversation that Jaebum and the man who’d kidnapped you were having. What did he mean that you didn’t know what Jaebum was?
“JB, don’t do it!” Jackson hissed.
“There’s no point in hiding it now,” Jaebum snapped over his shoulder towards his friend. Glancing at you, there was pain in his eyes. And fear. Two emotions you’d never seen from him before. “(y/n). I’m sorry.”
With a harsh tug, the man removed the gag from your mouth.
“Jaebum,” you sobbed. “What is going on? I don’t understand!”
“Well, go on,” the man urged after Jaebum stayed quiet. “Explain to her what it is you do for a living. How you’re able to afford all those nice gifts and trips for her. Tell her or I’ll blow her head off.”
Swallowing hard, Jaebum inhaled and met your eyes. “(y/n)..... I’m not the good guy you think I am. I’m the leader… of an organized crime ring.”
You gaped at him. No. It wasn’t possible. Not your sweet, kind, easily embarrassed Jaebum. He couldn’t.
Shaking your head, you defied his explanation. “No, you can’t be. You’re just saying that. Right? Tell me you’re lying!”
“I’m not.” Falling to his knees right in front of you, Jaebum hung his head in shame. “I wanted to keep you, but I also wanted to keep you away from this world. So I lied. I told you that I was something that I’m not. I’m sorry.”
You said nothing. You couldn’t find a single word to say. For two years he’d lied to you, told you stories that never happened, talked about clients that never existed. How could you ever look at him the same way?
The man behind you laughed. “Never did I think I would see the day that Im Jaebum would be on his knees. What a wonderful sight it is.”
All the boys you’d come to call your friends were visibly angry at the sight of Jaebum - their boss - lowered to this point.
“That’s it,” Jackson mumbled angrily. “I’m over this shit.”
Turning on his heels, he took his guard by surprise and punched him in the face, giving the others the distraction they needed to fight their own handlers.
Jaebum jumped to his feet and leapt at the man who held a gun to your head. The firearm went off, missing you by maybe a foot judging by the fresh hole in the floor.
One by one, they overpowered the enemy until finally they were in control of the situation. Only Jaebum was left fighting the man, both struggling for control of the gun.
Bang!
Both the man and Jaebum fell to the floor. You screamed, fearing the worst.
At first, neither body moved. But then a grunt was heard in the silent room and the man was shoved off as Jaebum worked his way to his feet. Jinyoung, the true shooter, lowered the gun in his hand and tossed it to the side.
“(y/n)!” Jaebum cradled your face in his hands before he freed you from the ropes. He pulled you in close to his chest and you cried, your future, once so solid and clear, now completely shattered.
**
“Hey, (y/n), it’s your favorite flintstones character! Um, I know you aren’t answering any of our calls, but please, just hear him out. He had his reasons for keeping you in the dark. And he’s not the devil like Seokmin said. He’s a good guy. Really. And he loves you. He’s a mess without you. So, please, just call him. Or see him. Please.”
You pressed the delete button before tossing your phone on the bed.
Bambam was right. You had been avoiding all their calls. And the few times they came knocking on your door you pretended not to be home. Jaebum only called once, asking for you to give him a chance to explain. It was the one message you hadn’t deleted. But he never came directly to your apartment.
Maybe that’s what you were waiting on. Maybe you wanted him to come crashing through the door, demanding that you speak to him, that you hear him out and let him tell you why he did the things he did. Of course, he told you who Seokmin was and why he had it out for Jaebum and his… gang, mafia, whatever you wanted to call it. But those were the only details he’d given you, promising to tell you the rest at a later time. A chance you hadn’t given him.
Looking back, you should have known something was wrong. The little things that you blew off because you were too blind to stop and really look at them. The late night visits to your apartment and then him disappearing before you woke up. The occasional unexplainable injury that he brushed off as nothing. The strange way the other boys would relent to Jaebum without question. All the puzzle pieces fit together perfectly now that you had the picture for reference.
The worst part of it, though, was the amount of pain that you were in after breaking it off with Jaebum. Night after night, you lied there in your bed, crying with no end in sight as you reached out to the empty spot that used to be reserved just for him. You knew what he did was wrong and the right thing to do was to walk away before you were kidnapped again; before you were killed. But you were being torn in two. Your brain was yelling at you that survival was the only option while your heart was screaming out for the man you’d fallen in love with.
You hated him. So much. But hate and love intertwined so closely, they were nearly indistinguishable.
It was almost midnight and your head was pounding, perhaps due to your latest crying session. Shuffling to your kitchen, you poured yourself a glass of water and searched your cabinets for your bottle of aspirin.
In the quiet of the night, you heard soft sobs coming from the hallway. Peeking out the peephole, you saw nothing that could be the source of the noise. But you heard it again, louder and closer this time.
Taking the risk, you opened the door. You gasped as Jaebum fell inside your apartment. He scrambled to his feet, sputtering out apologies.
When he was done, he just stood there, staring at you. You stayed silent, too surprised at his appearance to attempt a single sentence.
When he was usually perfectly put together, his white shirt was now wrinkled and unbuttoned halfway down. Red, puffy eyes gazed at you in despair. His hair was in disarray and your reflexive instincts reached out to flatten the pieces before you could stop yourself.
“I’m sorry,” he whispered. There was so much he was apologizing for in those two little words. You could feel it.
Not seeing him for so long had made it easy to ignore him. He’d held you the whole way home from Jeju Island and you’d let him, but as soon as he’d left you at your apartment, you’d cut him out of your life. Now, though, you were falling apart all over again.
Jaebum shook his head violently. “I shouldn’t have come here.”
He turned swiftly away from you. Concluding that you were an absolute idiot, you stopped him, catching him by his wrist.
“Don’t go.”
Jaebum stared at you with his mouth hanging open in disbelief. A tear trickled down your cheek and with his free hand, Jaebum reached out to wipe it away with his thumb. Then, shutting the door behind him, he pulled you close to him and brought your lips to him.
The kiss was desperate and life-threatening. His mouth was soft and sweet, just like you remembered, cradling your own bottom lip perfectly. Grabbing your thighs, Jaebum lifted you up as you wrapped your legs around his waist. One of your hands cupped the back of his neck while your other fingers slid down his chest, his warm skin coming to life under your touch.
Needing air, you broke the kiss, leaning your forehead against his.
“I’m sorry,” Jaebum huffed once again, his words breathy from the long kiss. “I just wanted to keep you safe. I was selfish. The light you give off… I didn’t want to lose it. And in the end, I lost you anyway.”
You shook your head, moving your hands to his cheeks and delicately tracing the two little moles above his left eye. It was your favorite little detail that haunted your dreams in your time away.
“As much as I want to,” you whispered, “I don’t think I can live without you.” Leaning back just a bit, you looked into those two deep russet eyes. “Just promise me one thing.”
“Anything,” he agreed quickly.
“Please, don’t ever lie to me again. Don’t keep me in the dark. If I’m your light, then let me be it in all parts of your life.”
Jaebum kissed you to seal the promise. “You are the brightest star in my sky. If that’s what it takes to keep you, then I’ll tell you everything. Just promise me you won’t run away once you hear it all.”
“I won’t go anywhere,” you promised.
Happy to finally have you back in his arms, Jaebum carried you back to your bedroom where you would make sure that he’d stay until the sun rose high in the sky. Staying with a leader of a gang might be the greatest mistake of your life, but if it kept you with Jaebum, it was a risk you were willing to take.
#got7 fanfic#got7 fanfiction#got7 mafia au#got7 mafia!au#jaebum x reader#jb#im jaebum#got7 scenarios#got7 imagines#got7 gang au#got7 gang!au#kpop#angst
566 notes
·
View notes
Photo
“Hey, I know that place,” I said to my skeptical friend, pointing out a restaurant marked by a smiling pirate. “There’s one opening up near where I live.”
“The Captain’s Boil? Like a plague?”
“I think they mean a boiling pot.”
“What the hell,” quoth she. “I like seafood.”
It was the biggest mistake either of us would make that day, but we were taken in by cute marketing and a pleasing design and the promise of seafood. It’s a franchise, right? They’ve got stores all over the place. How bad could it be?
We would soon learn that everything good implied by this place was a lie.
Taking a cue from some Taco Bell-ruled dystopian nightmare, the interior looked like a fast-food place but signage asked that we wait to be seated. No worries, thought we, and we were seated promptly enough. It certain places this could be kitschy and misguided and very fifties, like the mixture of cute pirate wallpaper and sci-fi nightmare tile scheme.
“Do you want anything to drink?” asked our waitress. She had no name tag and never introduced herself, and that’s fine – when I worked retail I had a tendency to “lose” my name tags and never gave my actual name. I kinda approve of that; I know corporate wants employees using their real names in case compliments come in, which I always viewed as proof that corporate had never been in an actual store. Regardless…
“Coffee would be nice.”
“We don’t have coffee.”
“Tea?”
“No.”
“What do you have?”
“Water.”
“Two waters, please.” I looked at my friend. She nodded. “With a couple slices of lemon.”
The waters arrived but the lemons never did.
And that’s fine. It’s fine. New restaurant opening up, there’s going to be some issues as things get sorted. The Captain’s Boil is new. I get that. At least this one is new, right? It’s cool. This wasn’t a warning sign at all. The ghastly looks that twisted the faces from the single other full table was certainly not a warning. The words they silently spoke – get out – could be safely ignored.
The decor was okay: brown paper table clothe taped into place. A full thing of napkins. The glasses were plastic and cheap. The smiling face of the mascot leered down on us, staring with one eye.
“Odin gave up his eye for wisdom,” my friend said. “What do you think that guy gave his up for?”
I had no answer and the pirate would not reveal his secrets.
The menus came and we looked them over, a single poorly laid out double-sided laminated page designed by someone with an eye for everything but practicality. There were appetizers on one side and main courses on the other, the words hidden beneath garish colors and pictures that advertised food we would never see.
How could we know that then?
“I think I’d like a crab,” my friend said. I echoed her sentiment. We ordered corn, too, and selected a sauce for the crab to be marinated in. We settled in to wait for the food. The waters were refilled. No lemons were ever found.
We did not notice then the lack of any kind of price by the crab. We would suffer the consequences later.
Meanwhile, the mascot continued to leer from the walls. “Too late to run now, matey,” it crooned.
Plastic gloves and bibs were brought out, both one-size-fits-none. The gloves groped my finger-flesh like a club-bound dude-bro with any amount of beer inside him. The bib slipped away like his would-be victim protected by her sisters. Those gloves were not coming off without tearing and that bib was lost forever.
When the crabs arrived they came in a plastic bag – broken crabs boiled apart and still in the shell, the shell still holding and strong. There were no plates offered, nowhere to discard the shells we were given nutcrackers to sort through – and the shells came unscored, so we were going to have to work for our meal.
Reaching into the bag was a process that covered our forearms in what we originally thought was the yummy sauce that we’d chosen off the menu but which we became more convinced was actually pooling and congealed blood as the meal went on and it seeped through the plastic, giving the brown paper an unhealthy shine.
Without plates, utensils, or even a bucket, we had no choice but to dump the shells we’d managed to break and get some of the meat out of on the brown paper table clothe in front of us, adding to the wreck and ruin. The shattered shells piled up, hiding delicious crab meat between bits of cartilage and shell. Were we getting all the meat? Were we even getting our money’s worth? How much was this going to cost? How much waste was this one meal going to create? Only one of those questions would be answered. The waters were refilled without lemons. The family with the haunted expressions left us alone in the Captain’s Boil with disinterested waitstaff and silenced Nickelodeon.
My phone rang but the gloves continued to hold my hands prisoner. I asked the waitstaff if replacement gloves were possible and was told they were not. These were my designated gloves – there could be no others like them. Whoever was calling was going to have to wait if I wanted to keep my hands free of the congealing liquids that were sopping through the brown paper.
Hey, remember that corn we’d ordered?
We found it. It was in the bag the whole time, hidden underneath pieces of crab and soaking in blood and sauce.
“You’re sure this is blood?” I asked, eyeing the corn with uncertain hunger.
“Pretty sure,” my friend said, glaring. “I deal with more blood than you do.”
She was right, I knew.
We left the corn where it was as I struggled to free myself from the gloves, then excused myself to use my phone. Another friend of mine was in my neighborhood – I had to warn her.
“Do not go to the Captain’s Boil,” I whispered, still dealing with the trauma of the seafood blood cult that was even now watching my every move. The single beady eye of the mascot trailed me, mocking, a pirate that would never be satisfied until I had paid for my suffering. Grimacing, I went back in, forced a smile at the counter and spared a glance to my friend as she eyed the corn and weighed the risks.
Did we get all the crab? I wondered. We did not know. We would never know. The question continues to haunt us.
I used their bathroom, struggling past the mop that blocked the stall door, the cleaning supplies leaking under the sink and filling the air with a heady smell that seared the blood-scent from my nostrils. I left quickly, walked back to the front.
“How much do I owe you?” I asked the person behind the counter. She smiled at me, printing off a bill. Two Dungeness crabs, two waters, two pieces of uneaten corn, no lemons: $106.53.
I could have fought it. Maybe I would have, but my stomach was already beginning to ache. I paid, tipped, collected my friend and left.
“Nothing to do now but wait for the food poisoning to set in,” she said. Later, she continued: “That was a monstrous assemblage of seafood, waste, and the failed follow-through of a successful branding campaign, all of which has culminated in an over-priced, over-hyped, and literally stomach-churning result which will neither be soon missed or readily forgotten.”
That’s an actual quote. I know the best people.
We nabbed some ginger ale and Gravol elsewhere. She had a ferry to catch and I had my life to live. Between the two of us we had shared and survived an experience and now – now – there was nothing to do but warn people and keep them from making the same mistake as us.
And now you have been warned.
#the captain's boil#seafood#restaurants#restaurant reviews#coquitlam#british columbia#do not eat here
5 notes
·
View notes
Link
(Via: Hacker News)
Metaprogramming, or the ability to inspect, modify and generate code at compile-time (as opposed to reflection, which is runtime introspection of code), has slowly been gaining momentum. Programmers are finally admitting that, after accidentally inventing turing complete template systems, maybe we should just have proper first-class support for generating code. Rust has macros, Zig has built-in compile time expressions, Nim lets you rewrite the AST however you please, and dependent types have been cropping up all over the place. However, with great power comes great responsibility undecidable type systems, whose undefined behavior may involve summoning eldritch abominations from the Black Abyss of Rěgne Ūt.
One particular place where metaprogramming is particularly useful is low-level, high-performance code, which is what Terra was created for. The idea behind Terra is that, instead of crafting ancient runes inscribed with infinitely nested variadic templates, just replace the whole thing with an actual turing-complete language, like say, Lua (technically including LuaJIT extensions for FFI). This all sounds nice, and no longer requires a circle of salt to ward off demonic syntax, which Terra is quick to point out. They espouse the magical wonders of replacing your metaprogramming system with an actual scripting language:
In Terra, we just gave in to the trend of making the meta-language of C/C++ more powerful and replaced it with a real programming language, Lua.
The combination of a low-level language meta-programmed by a high-level scripting language allows many behaviors that are not possible in other systems. Unlike C/C++, Terra code can be JIT-compiled and run interleaved with Lua evaluation, making it easy to write software libraries that depend on runtime code generation.
Features of other languages such as conditional compilation and templating simply fall out of the combination of using Lua to meta-program Terra
Terra even claims you can implement Java-like OOP inheritance models as libraries and drop them into your program. It may also cure cancer (the instructions were unclear).
As shown in the templating example, Terra allows you to define methods on struct types but does not provide any built-in mechanism for inheritance or polymorphism. Instead, normal class systems can be written as libraries. More information is available in our PLDI Paper.
The file lib/javalike.t has one possible implementation of a Java-like class system, while the file lib/golike.t is more similar to Google’s Go language.
I am here to warn you, traveler, that Terra sits on a throne of lies. I was foolish. I was taken in by their audacious claims and fake jewels. It is only when I finally sat down to dine with them that I realized I was surrounded by nothing but cheap plastic and slightly burnt toast.
The Bracket Syntax Problem
Terra exists as a syntax extension to Lua. This means it adds additional keywords on top of Lua’s existing grammar. Most languages, when extending a syntax, would go to great lengths to ensure the new grammar does not create any ambiguities or otherwise interfere with the original syntax, treating it like a delicate flower that mustn’t be disturbed, lest it lose a single petal.
Terra takes the flower, gently places it on the ground, and then stomps on it, repeatedly, until the flower is nothing but a pile of rubbish, as dead as the dirt it grew from. Then it sets the remains of the flower on fire, collects the ashes that once knew beauty, drives to a nearby cliffside, and throws them into the uncaring ocean. It probably took a piss too, but I can’t prove that.
To understand why, one must understand what the escape operator is. It allows you to splice an abstract AST generated from a Lua expression directly into Terra code. Here is an example from Terra’s website:
function get5() return 5 end terra foobar() return [ get5() + 1 ] end foobar:printpretty() > output: > foobar0 = terra() : {int32} > return 6 > end
But, wait, that means it’s… the same as the array indexing operator? You don’t mean you just put it inside like–
local rest = {symbol(int),symbol(int)} terra doit(first : int, [rest]) return first + [rest[1]] + [rest[2]] end
What.
WHAT?!
You were supposed to banish the syntax demons, not join them! This abomination is an insult to Nine Kingdoms of Asgard! It is the very foundation that Satan himself would use to unleash Evil upon the world. Behold, mortals, for I come as the harbinger of despair:
function idx(x) return `x end function gen(a, b) return `array(a, b) end terra test() -- Intended to evaluate to array(1, 2) 0 return [gen(1, 2)][idx(0)] end
For those of you joining us (probably because you heard a blood-curdling scream from down the hall), this syntax is exactly as ambiguous as you might think. Is it two splice statements put next to each other, or is a splice statement with an array index? You no longer know if a splice operator is supposed to index the array or act as a splice operator, as mentioned in this issue. Terra “resolves this” by just assuming that any two bracketed expressions put next to each other are always an array indexing operation, which is a lot like fixing your server overheating issue by running the fire suppression system all day. However, because this is Lua, whose syntax is very much like a delicate flower that cannot be disturbed, a much worse ambiguity comes up when we try to fix this.
function idx(x) return `x end function gen(a, b) return `array(a, b) end terra test() -- This is required to make it evaluate to array(1,2)[0] -- return [gen(1, 2)][ [idx(0)] ] -- This doesn't work: return [gen(1, 2)][[idx(0)]] -- This is equivalent to: -- return [gen(1, 2)] "idx(0)" end
We want to use a spliced Lua expression as the array index, but if we don’t use any spaces, it turns into a string because [[string]] is the Lua syntax for an unescaped string! Now, those of you who still possess functioning brains may believe that this would always result in a syntax error, as we have now placed a string next to a variable. Not so! Lua, in it’s infinite wisdom, converts anything of the form symbol"string" or symbol[[string]] into a function call with the string as the only parameter. That means that, in certain circumstances, we literally attempt to call our variable as a function with our expression as a string:
local lookups = {x = 0, y = 1, z = 2, w = 3 }; vec.metamethods.__entrymissing = macro(function(entryname, expr) if lookups[entryname] then -- This doesn't work return `expr.v[[lookups[entryname]]] -- This is equivalent to -- return `expr.v "lookups[entryname]" -- But it doesn't result in a syntax error, becase it's equivalent to: -- return `extr.v("lookups[entryname]") else error "That is not a valid field." end end)
As a result, you get a type error, not a syntax error, and a very bizarre one too, because it’s going to complain that v isn’t a function. This is like trying to bake pancakes for breakfast and accidentally going scuba diving instead. It’s not a sequence of events that should ever be related in any universe that obeys causality.
It should be noted that, after a friend of mine heard my screams of agony, an issue was raised to change the syntax to a summoning ritual that involves less self-mutilation. Unfortunately, this is a breaking change, and will probably require an exorcism.
The Documentation Is Wrong
Terra’s documentation is so wrong that it somehow manages to be wrong in both directions. That is, some of the documentation is out-of-date, while some of it refers to concepts that never made it into master. I can only assume that a time-traveling gremlin was hired to write the documentation, who promptly got lost amidst the diverging timelines. It is a quantum document, both right and wrong at the same time, yet somehow always useless, a puzzle beyond the grasp of modern physics.
The first thing talked about in the API Reference is a List object. It does not actually exist. A primitive incarnation of it does exist, but it only implements map() and insertall(). Almost the entire section is completely wrong for the 1.0.0-beta1 release. The actual List object being described sits alone and forgotten in the develop branch, dust already beginning to collect on it’s API calls, despite those API calls being the ones in the documentation… somehow.
:printpretty() is a function that prints out a pretty string representation of a given piece of Terra code, by parsing the AST representation. On it’s face, it does do exactly what is advertised: it prints a string. However, one might assume that it returns the string, or otherwise allows you to do something with it. This doesn’t happen. It literally calls the print() function, throwing the string out the window and straight into the stdout buffer without a care in the world. If you want the actual string, you must call either layoutstring() (for types) or prettystring() (for quotes). Neither function is documented, anywhere.
Macros can only be called from inside Terra code. Unless you give the constructor two parameters, where the second parameter is a function called from inside a Lua context. This behavior is not mentioned in any documentation, anywhere, which makes it even more confusing when someone defines a macro as macro(myfunction, myfunction) and then calls it from a Lua context, which, according to the documentation, should be impossible.
Struct fields are not specified by their name, but rather just held in a numbered list of {name, type} pairs. This is documented, but a consequence of this system is not: Struct field names do not have to be unique. They can all be the same thing. Terra doesn’t actually care. You can’t actually be sure that any given field name lookup will result in, y’know, one field. Nothing mentions this.
The documentation for saveobj is a special kind of infuriating, because everything is technically correct, yet it does not give you any examples and instead simply lists a function with 2 arguments and 4 interwoven optional arguments. In reality it’s absolutely trivial to use because you can ignore almost all the parameters. Just write terralib.saveobj("blah", {main = main}) and you’re done. But there isn’t a single example of this anywhere on the entire website. Only a paragraph and two sentences explaining in the briefest way possible how to use the function, followed by a highly technical example of how to initialize a custom target parameter, which doesn’t actually compile because it has errant semicolons. This is literally the most important function in the entire language, because it’s what actually compiles an executable!
The defer keyword is critical to being able to do proper error cleanup, because it functions similar to Go’s defer by performing a function call at the end of a lexical scope. It is not documented, anywhere, or even mentioned at all on the website. How Terra manages to implement new functionality it forgets to document while, at the same time, documenting functionality that doesn’t exist yet is a 4-dimensional puzzle fit for an extra-dimensional hyperintelligent race of aliens particularly fond of BDSM.
You’d think that compiling Terra on Linux would be a lot simpler, but you’d be wrong. Not only are the makefiles unreliable, but cmake itself doesn’t seem to work with LLVM 7 unless you pass in a very specific set of flags, none of which are documented, because compiling via cmake isn’t documented at all, and this is the only way to compile with LLVM 7 or above on the latest Ubuntu release!
Perhaps there are more tragedies hidden inside this baleful document, but I cannot know, as I have yet to unearth the true depths of the madness lurking within. I am, at most, on the third or fourth circle of hell.
Terra Doesn’t Actually Work On Windows
Saying that Terra supports Windows is a statement fraught with danger. It is a statement so full of holes that an entire screen door could try to sell you car insurance and it’d still be a safer bet than running Terra on Windows. Attempting to use Terra on Windows will work if you have Visual Studio 2015 installed. It might work if you have Visual Studio 2013 installed. No other scenarios are supported, especially not ones that involve being productive. Actually compiling Terra on Windows is a hellish endeavor comparable to climbing Mount Everest in a bathing suit, which requires either having Visual Studio 2015 installed to the default location, or manually modifying a Makefile with the exact absolute paths of all the relevant dependencies. At least up until last week, when I submitted a pull request to minimize the amount of mountain climbing required.
The problem Terra runs into is that it tries to use a registry value to find the location of Visual Studio and then work out where link.exe is from there, then finds the include directories for the C runtime. This hasn’t worked since Visual Studio 2017 and also requires custom handling for each version because compiling an iteration of Visual Studio apparently involves throwing the directory structure into the air, watching it land on the floor in a disorganized mess, and drawing lines between vaguely related concepts. Good for divining the true nature of the C library, bad for building directory structures. Unfortunately, should you somehow manage to compile Terra, it will abruptly stop working the moment you try to call printf, claiming that printf does not actually exist, even after importing stdio.h.
Many Terra tests assume that printf actually resolves to a concrete symbol. This is not true and hasn’t been true since Visual Studio 2015, which turned several stdio.h functions into inline-only implementations. In general, the C standard library is under no obligation to produce an actual concrete symbol for any function - or to make sense to a mere mortal, for that matter. In fact, it might be more productive to assume that the C standard was wrought from the unholy, broiling chaos of the void by Cthulhu himself, who saw fit to punish any being foolish enough to make reasonable assumptions about how C works.
Unfortunately, importing stdio.h does not fix this problem, for two reasons. One, Terra did not understand inline functions on Windows. They were ephemeral wisps, vanishing like a mote of dust on the wind the moment a C module was optimized. A pull request fixed this, but it can’t fix the fact that the Windows SDK was wrought from the innocent blood of a thousand vivisected COMDAT objects. Microsoft’s version of stdio.h can only be described as an extra-dimensional object, a meta-stable fragment of a past universe that can only be seen in brief slivers, never all at once.
Luckily for the Terra project, I am the demonic presence they need, for I was once a Microsoftie. Long ago, I walked the halls of the Operating Systems Group and helped craft black magic to sate the monster’s unending hunger. I saw True Evil blossom in those dark rooms, like having only three flavors of sparkling water and a pasta station only open on Tuesdays.
I know the words of Black Speech that must be spoken to reveal the true nature of Windows. I know how to bend the rules of our prison, to craft a mighty workspace from the bowels within. After fixing the cmake implementation to function correctly on Windows, I intend to perform the unholy incantations required to invoke the almighty powers of COM, so that it may find on which fifth-dimensional hyperplane Visual Studio exists. Only then can I disassociate myself from the mortal plane for long enough to tackle the stdio.h problem. You see, children, programming for Windows is easy! All you have to do is s͏̷E͏l͏̢҉l̷ ̸̕͡Y͏o҉u͝R̨͘ ̶͝sơ̷͟Ul̴
For those of you who actually wish to try Terra, but don’t want to wait for me to fix everything a new release, you can embed the following code at the top of your root Terra script:
if os.getenv("VCINSTALLDIR") ~= nil then terralib.vshome = os.getenv("VCToolsInstallDir") if not terralib.vshome then terralib.vshome = os.getenv("VCINSTALLDIR") terralib.vclinker = terralib.vshome..[[BIN\x86_amd64\link.exe]] else terralib.vclinker = ([[%sbin\Host%s\%s\link.exe]]):format(terralib.vshome, os.getenv("VSCMD_ARG_HOST_ARCH"), os.getenv("VSCMD_ARG_TGT_ARCH")) end terralib.includepath = os.getenv("INCLUDE") function terralib.getvclinker() local vclib = os.getenv("LIB") local vcpath = terralib.vcpath or os.getenv("Path") vclib,vcpath = "LIB="..vclib,"Path="..vcpath return terralib.vclinker,vclib,vcpath end end
Yes, we are literally overwriting parts of the compiler itself, at runtime, from our script. Welcome to Lua! Enjoy your stay, and don’t let the fact that any script you run could completely rewrite the compiler keep you up at night!
The Existential Horror of Terra Symbols
Symbols are one of the most slippery concepts introduced in Terra, despite their relative simplicity. When encountering a Terra Symbol, one usually finds it in a function that looks like this:
TkImpl.generate = function(skip, finish) return quote if [TkImpl.selfsym].count == 0 then goto [finish] end [TkImpl.selfsym].count = [TkImpl.selfsym].count - 1 [stype.generate(skip, finish)] end end
Where selfsym is a symbol that was set elsewhere.
“Aha!” says our observant student, “a reference to a variable from an outside context!” This construct does let you access a variable from another area of the same function, and using it to accomplish that will generally work as you expect, but what it’s actually doing is much worse more subtle. You see, grasshopper, a symbol is not a reference to a variable node in the AST, it is a reference to an identifier.
local sym = symbol(int) local inc = quote [sym] = [sym] + 1 end terra foo() var [sym] = 0 inc inc return [sym] end terra bar() var[sym] = 0 inc inc inc return [sym] end
Yes, that is valid Terra, and yes, the people who built this language did this on purpose. Why any human being still capable of love would ever design such a catastrophe is simply beyond me. Each symbol literally represents not a reference to a variable, but a unique variable name that will refer to any variable that has been initialized in the current Terra scope with that particular identifier. You aren’t passing around variable references, you’re passing around variable names.
These aren’t just symbols, they’re typed preprocessor macros. They are literally C preprocessor macros, capable of causing just as much woe and suffering as one, except that they are typed and they can’t redefine existing terms. This is, admittedly, slightly better than a normal C macro. However, seeing as there have been entire books written about humanity’s collective hatred of C macros, this is equivalent to being a slightly more usable programming language than Brainfuck. This is such a low bar it’s probably buried somewhere in the Mariana Trench.
Terra is C but the Preprocessor is Lua
You realize now, the monstrosity we have unleashed upon the world? The sin Terra has committed now lies naked before us.
Terra is C if you replaced the preprocessor with Lua.
Remember how Terra says you can implement Java-like and Go-like class systems? You can’t. Or rather, you will end up with a pathetic imitation, a facsimile of a real class system, striped down to the bone and bereft of any useful mechanisms. It is nothing more than an implementation of vtables, just like you would make in C. Because Terra is C. It’s metaprogrammable C.
There can be no constructors, or destructors, or automatic initialization, or any sort of borrow checking analysis, because Terra has no scoping mechanisms. The only thing it provides is defer, which only operates inside Lua lexical blocks (do and end)… sometimes, if you get lucky. The exact behavior is a bit confusing, and of course can only be divined by random experimentation because it isn’t documented anywhere! Terra’s only saving grace, the singular keyword that allows you to attempt to build some sort of pretend object system, isn’t actually mentioned anywhere.
Of course, Terra’s metaprogramming is turing complete, and it is technically possible to implement some of these mechanisms, but only if you either wrap absolutely every single variable declaration in a function, or you introspect the AST and annotate every single variable with initialization statuses and then run a metaprogram over it to figure out when constructors or destructors or assignment operators need to be called. Except, this might not work, because the (undocumented, of course) __update metamethod that is supposed to trigger when you assign something to a variable has a bug where it’s not always called in all situations. This turns catching assignments and finding the l-value or r-value status from a mind-bogglingly difficult, herculean task, to a near-impossible trial of cosmic proportions that probably requires the help of at least two Avengers.
There Is No Type System
If Terra was actually trying to build a metaprogramming equivalent to templates, it would have an actual type system. These languages already exist - Idris, Omega, F*, Ada, Sage, etc. but none of them are interested in using their dependent type systems to actually metaprogram low-level code (although F* can produce it). The problem is that building a recursively metaprogrammable type system requires building a proof assistant, and everyone is so proud of the fact they built a proof assistant they forget that dependent type systems can do other things too, like build really fast memcpy implementations.
Terra, on the other hand, provides only the briefest glimpse of a type system. Terra functions enjoy what is essentially a slightly more complex C type system. However, the higher-level Lua context is, well, Lua, which has five basic types: Tables, Functions, Strings, Booleans and Numbers (it also has Thread, Nil, Userdata and CData for certain edge cases). That’s it. Also, it’s dynamic, not static, so everything is a syntax or a runtime error, because it’s a scripting language. This means all your metaprogramming is sprinkled with type-verification calls like :istype() or :isstruct(), except the top came off the shaker and now the entire program is just sprinkles, everywhere. This is fine for when your metaprograms are, themselves, relatively simple. It is not fine when you are returning meta-programs out of meta-meta-functions.
This is the impasse I find myself at, and it is the answer to the question I know everyone wants to know the answer to. For the love of heaven and earth and all that lies between, why am I still using Terra?
The truth is that the project I’m working on requires highly complex metaprogramming techniques in order to properly generate type-safe mappings for arbitrary data structures. Explaining why would be an entire blog post on it’s own, but suffice to say, it’s a complex user interface library that’s intended to run on tiny embedded devices, which means I can’t simply give up and use Idris, or indeed anything that involves garbage collection.
What I really want is a low-level, recursively metaprogrammable language that is also recursively type-safe, in that any type strata can safely manipulate the code of any layer beneath it, preferably via algebriac subtyping that ensures all types are recursively a subset of types that contain them, ad nauseam. This would then allow you to move from a “low-level” language to a “high-level” language by simply walking up the tower of abstraction, building meta-meta-programs that manipulate meta-programs that generate low-level programs.
Alas, such beauty can only exist in the minds of mathematicians and small kittens. While I may one day attempt to build such a language, it will be nothing more than a poor imitation, forever striving for an ideal it cannot reach, cursed with a vision from the gods of a pristine language no mortal can ever possess.
I wish to forge galaxies, to wield the power of computation and sail the cosmos upon an infinite wave of creativity. Instead, I spend untold hours toiling inside LLVM, wondering why it won’t print “Hello World”.
In conclusion, everything is terrible and the universe is on fire.
0 notes
Text
This is like, a super dumb, fluffy drabble I wrote based on some tags that @ticklefightharry left on a post earlier tonight. I don’t even know.
Harry drunkenly gives himself a haircut and then tries to break up with Zayn to avoid the embarrassment of Zayn seeing the carnage.
Harry tiptoed up the stairs of his mum’s house, trying not to wake her or Robin as he snuck back into his room. He was only an hour past curfew, and a significant chunk of that hour had definitely been spent messily making out with Zayn. They’d been parked in his driveway, grappling for each other in the front seat Zayn’s beat up car before he quietly slipped inside, still tipsy and giggling at the awkward positions they’d found themselves in.
After making it down the hallway to his room Harry huffed a sigh of relief before raking his hands through his hair. It was getting a bit long, and unruly, Zayn had chuckled at the length of his fringe a few times, tugging on the curls and pushing them out of the way when they fell into his face while snogging.
Harry stripped out of his jeans and polo shirt and headed straight to the bathroom next door. The tiles were cool on his feet before he stepped onto the cushy bathmat. Flicking the light on Harry winced a bit at the brightness, and surveyed himself in the mirror, eyes still glassy from the vodka redbulls that Niall had been handing him in sticky cups all evening.
As suspected, his curls were a mess, teased out from Zayn’s slender fingers combing through them all evening.
“I look like a bloody sheep,” Harry muttered to himself, eying the fluffy mess on his head before pushing at his fringe. No matter what he did it wouldn’t stay where he wanted it to, and he grunted in frustration.
His mum had been hinting that he needed a haircut for a few weeks now, but Harry hadn’t paid her any mind. But now, all of the sudden, he needed to do something about his dumb overgrown curls.
Shuffling away from the mirror and back into the hallway, Harry wandered further down the hall and pushed open the door to Gemma’s room. It looked odd, full of all of her stuff but still decidedly uninhabited. He hadn’t been in her room since she left for uni a month or so earlier, and it was weird seeing it so tidy. Squinting, he scanned the room, trying to remember where she kept her craft supplies. Finally his eyes landed on a box peeking out from under the bed with some ribbon and colored paper visible through the clear plastic, and he got down on his knees to drag it out.
Popping the lid, Harry fished around inside before his fingers landed on the rounded plastic handles of Gemma’s nice pair of scissors. He wiggled them out from under several stacks of glittery stickers and chopped up fashion magazines, eyeing them appreciatively once they were free. He didn’t even bother to replace the box before he was up and back in the bathroom.
He placed the scissors carefully on the sink next to his toothbrush before contemplating his reflection once more. Maybe just a little bit of the fringe and it would be better. Zayn had recently shaved the sides of his head, giving him a sort of mohawk, and it looked so nice. But Harry’s curls wouldn’t look good in a mohawk, and besides, he didn’t want Zayn to think he was being weird and copying him or anything. No, just a slight trim of his fringe would probably be fine, and if he wanted more in the morning he could go and get his hair cut proper.
Harry dragged his fingertips through his hair, pulling the curls down tight over his eyes and down to his nose. Grabbing the scissors he snipped a few times, tongue stuck out to the side in concentration. He repeated this process a few times before stopping to survey his work. He shook out his hair and pushed at the fringe, nodding to himself when it stayed put off his forehead like he had been trying to achieve earlier. Deciding that it was enough for now, he gathered up the small pile of hair from the sink and flushed it down the toilet before brushing his teeth and promptly falling into bed, asleep mere moments after his head hit the pillow.
Harry woke the next morning with the sun stabbing him through his closed eyelids, the bright reddish orange blaze disappearing back into darkness when he scrunched his eyes. Slowly opening one eye he groaned a bit, feeling a throbbing headache building behind his temples. Before he went out to the party last night he had set a glass of water on his bedside table, a trick he had learned after his first few times at one of Niall’s parties, but in all of the stress of giving himself a badly needed haircut he had completely forgotten to drink it before passing out.
Fuck. A haircut. Harry’s hands flew to his head before he shot out of bed and into the bathroom. Gemma’s scissors were still on the sink, and a few stray hairs lingered in the sink from his less than thorough clean up job. Harry exhaled before looking at his reflection, groaning when he took in the altered appearance. His fringe was chopped in an uneven line straight across his forehead, about a centimeter above his eyebrows. The curls were coiled tightly, adjusting to their newfound short length. No amount of flattening or tugging could get his fringe to sweep to the side the way he normally styled his hair.
“I look like someone’s deranged nan!” Harry whimpered, unable to look away from the horrific sight in front of him. After several minutes of devastating disbelief he trudged back to his room before curling up in bed again. How could he have been so stupid to think that giving himself a haircut while drunk would turn out okay. What would Zayn even think?
When his mind wandered to Zayn, Harry froze before crumpling further in on himself. There’s no way Zayn was going to continue to fancy him now. Things had been going so well, too.
Without bidding, his mind flickered back to the party at Liam’s house a few weekends ago. Harry had been sitting on the sofa by himself, because Niall had fucked off somewhere and never returned. Zayn wandered in from the backyard, exhaling the last bit of cigarette smoke as he closed the door and glanced around the room. Most people had already left, or passed out, and Harry was gonna give Niall 20 more minutes to return before he just walked back home.
When his eyes landed on Harry, Zayn’s mouth had quirked into a small smile. Harry hadn’t known what to do with this. Zayn hadn’t really spoken to Harry all year, usually staying quiet in when they hung out in groups. Harry had only realized his crush after he had gotten a bit hard one afternoon, watching Zayn and Louis play wrestle after they got high together. The way Zayn’s shirt had ridden up on his back, and his arms had flexed while pinning Louis to the ground, crowing triumphantly, had done things to Harry’s breathing.
Harry watched, with a slight degree of horror, as Zayn approached him and collapsed on the couch next to him, flinging both his arms out to rest along the back of the sofa, and consequently, against Harry’s shoulders. Cocking his head Zayn peered at him, pursing his lips and quirking an eyebrow.
“Why’re you all alone, Hazza?” he asked quietly, letting his arm rest more weight against Harry’s back.
“Niall wandered off somewhere, dunno when he’ll be back. I was thinking about just heading back home by myself,” Harry replied, trying to concentrate on keeping his breaths even in the face of Zayn’s ridiculously close presence. He didn’t catch the way Zayn’s eyes kept flicking down to his lips, as he slowly but shakily continued to inhale and exhale, eyes on his knees.
“Harry?” Zayn murmured, nudging his knee against Harry’s thigh. Harry’s eyes snapped back to Zayn.
“Can I kiss you?” Zayn asked, eyelashes fluttering hopefully. Harry had barely been able to gurgle out an affirmative noise before Zayn leaned in and brushed his lips, soft and sweet on the corner of Harry’s mouth. Turning his head more fully, Harry had kissed him back, sighing softly against Zayn’s lips.
“Been wanting to do this for so long,” Zayn mumbled, without pulling back, and then he had slipped a tentative tongue into Harry’s mouth.
Even now Harry couldn’t believe that Zayn, the Zayn of the gorgeous face and eyes and smile and everything really, wanted Harry to any extent. He certainly wasn’t going to want him now, with his stupid drunken mistake of a fringe. Harry fumbled around under his duvet for a moment before locating his phone. Sucking in a breath Harry slid the screen up and scrolled to Zayn’s contact.
Before losing his nerve he pressed the button to dial, holding his breath as the phone continued to ring. Right before it was about to cut off and go to voicemail the line clicked and Harry heard Zayn snuffling on the other end.
“Hey babes, what’s happenin’?” Zayn said, clearly muffling a yawn.
“We have to break up,” Harry blurted, voice cracking in the middle. Zayn was suddenly very silent on the other end before clearing his throat.
“Wait, what?” he asked, instantly more alert.
“I mean, we can’t fool around anymore, I’m sorry. It’s just…” Harry stuttered, cringing with complete embarrassment. All he could think about was the fact that he never wanted Zayn to see him with this terrible haircut. As awful as this was, it was undoubtedly better than the alternative. There’s no way Zayn would ever want to snog him when he looked like this.
“Harry, it’s 9 AM on a Saturday, what are you on about?” Zayn asked, voice getting more urgent.
“I’m sorry Zayn, I just can’t right now. Or anymore, or something…maybe I’ll like, see you around or something. I’m um, not gonna be around for a bit though.” Harry was rambling. He needed to stop, end the conversation, and then somehow find a way to erase this entire nightmare from his memory.
“I’ve got to go,” he tried again, interrupting a spluttering Zayn. “I’m really sorry,” and with that he hung up, and flung his phone across the room into his laundry basket before collapsing all the way down onto his bed.
He must have drifted back to sleep again, because at a certain point he woke up startled to hear a soft knock on his bedroom door.
“Harry, love. Zayn is here to see you and looks rather upset,” his mum called lightly from behind the door. “Shall I send him up?”
Cursing, Harry threw himself out of bed, dragging on a pair of flannel pajama pants and grabbing his nearest hoodie.
“Ummm, ok,” he called out, angrily grappling with his hair and trying to hide it entirely underneath the hood.
Zayn slowly opened the bedroom door, stepping in before closing it gently behind him. Even tired and disgruntled he looked beautiful, in baggy joggers and a soft jumper, quiff peeking out from underneath a gray beanie.
Harry froze awkwardly by his window once Zayn was in the room completely, hands fidgeting by his side. Zayn glanced up at him, a crease furrowed between his eyebrows.
“Harry, what the hell is going on?” he asked quietly, not moving from the door.
“Why did you come?” Harry replied miserably.
“Oh I dunno, probably because the bloke I fancy called me at arse o’clock this morning babbling about breaking up when we haven’t even talked about whether or not we’re together,” Zayn shot back. “And this is the same bloke who enthusiastically straddled a fucking gear stick to give me a hickey, mere hours ago…”
Harry remained motionless, still in shock and completely at a loss for words. Biting back a noise of irritation Zayn strode over toward him, until they were only inches apart. Harry looked down at his feet, but strong fingers curled underneath his chin to force his gaze back up, the side of Zayn’s thumb lingering against Harry’s bottom lip.
“What’s wrong?” Zayn asked, softer this time. Harry shrugged helplessly, hands moving unconsciously to fiddle with his hair. He knocked his hood off a little before realizing and yelping, tugging it back down over the monstrosity of his newly shorn fringe.
Zayn of course did not miss the sequence of gestures, and the look on his face shifted from anger and concern to that of bewilderment.
“What’s wrong with your hair?” he asked, hands snaking up to tug on Harry’s curls, and pausing when he noticed something off. Resigned to his fate, Harry made no move to stop him as Zayn slowly pushed the hood down and took inventory of the situation. His fingers tugged lightly at the short curls on Harry’s forehead.
“I cut it,” Harry offered, stating the obvious.
“I see,” Zayn replied, still uncertain.
“It’s awful! I don’t know what I was thinking, but I nicked scissors from Gemma’s room last night and cut it all off while still drunk because I’m such an idiot.”
Zayn’s nose and mouth twitched with Harry’s frantic outburst, but he waited in silence, sure Harry had more to say.
“I just didn’t want you to see,” Harry finally confessed, voice dropping to a whisper. At this Zayn leaned back, completely confused.
“Why?”
“Because….then you wouldn’t, I mean. It’s so ugly, and, you know. You’re not?”
At this Zayn snorted and rolled his eyes.
“Thanks babes,” he replied sarcastically. “But seriously you didn’t want me to see it? Did you think I’d tell you to fuck off or something?”
At this Harry shrugged and glanced down again, crossing his arms over his chest.
“Seriously. In what world would the length of your fringe change whether or not I want to snog you??” Zayn asked, pitch rising in indignation.
“It’s just so bad,” Harry whispered back, face flushing with the embarrassment. Zayn clucked at this, and tugged the beanie off his head before depositing it onto Harry’s. He fussed with it a bit, tucking most of the hair off Harry’s forehead under the edge, but tugging some of the untouched longer bits out to curl around the ears.
“Harry, no offence, but that’s the stupidest thing I’ve ever heard you say, and you once told a story about a friend of yours who turned out to be your neighbor’s pet turtle.”
At this Harry huffed out a breath, but glanced up under his lashes to see a smile starting to form on Zayn’s face.
“Can I kiss you?” Zayn asked, fingers still tucked slightly under the edge of the beanie. Harry nodded, and felt Zayn’s nose nudging at his, prodding him to meet his lips.
The kiss was tender and sweet, and Harry let out a soft little sniff before reaching out and dragging Zayn all the way in, fingers digging into his shoulder blades. When Zayn finally broke the kiss he stepped back, but remained boxed in inside Harry’s embrace.
Quirking an eyebrow he studied Harry’s face, tugging at the beanie a bit so that some of the short curls popped out.
“I have a lot of beanies, you can borrow whichever ones you’d like, if that would make you feel better.”
Harry nodded.
“I can’t believe you tried to break up with me because you drunkenly cut your hair. What even is that Styles?” Zayn joked, shaking his head fondly.
“Dumb,” Harry muttered, pressing his forehead against Zayn’s.
“Dumb,” Zayn confirmed, humming in agreement.
“Although, I guess if you had to break up with me, that means you want to be together.
Harry bit his lip at this, nodding, before looking back into Zayn’s eyes.
“Me too,” said Zayn, before he crowded back in, claiming Harry’s lips in another bruising kiss.
~fin~
#my fic#this may be the first piece of fic writing i've ever posted online?#i think i've just kept al the failed attempts at longer abandoned works to myself#although don't worry Meg#I am still working on the wolfstar fic#it's just slow going bc of thesis shit#lemme know what you think Jes#since you are the master of cute succinct yet heartfelt drabbles
7 notes
·
View notes
Link
Eye Makeup Eraser Pen - Product Review
We all make mistakes sometimes when applying certain eye makeup to our eyes, but don't you wish there was a way to erase the eye makeup mistakes? Well, there is! It is called, "Eye Makeup Eraser Pen."
The Eye Makeup Eraser Pen is just want it says it is. It's an eraser that removes eye makeup mistakes from your eyes quickly an easily so you can reapply your eye makeup all over again just the way you want to. The way you use the eye makeup eraser pen is by simply taking of the cap and taking the eraser pen and rubbing it up against the area of eye makeup you want to remove quickly an easily from your eyes. Now you can also use this eye makeup eraser pen for removing eyebrow makeup mistakes from your eyebrows as well which is super awesome. You can even use this makeup eraser for removing waterproof makeup from your face as well if you end up smudging it on your face some how and can't get it off.
Now the Eye Makeup Eraser Pen is made from ingredients like evening primrose, mineral oil, coconut oil, aloe, and vitamins. These ingredients not only help remove tough eye makeup mistakes, but they also help nourish your eyes with antioxidants to your eyes stay healthy and younger looking.
You can find the Eye Makeup Eraser Pen at Walmart, Target, your local drug stores, grocery stores, and beauty stores in the cosmetic isles. The pen usually cost around $8 up to $15, but is so worth getting if you tend to make a lot of mistakes when applying eye makeup to your eyes. You can even find this makeup eraser pen in online stores at a discount price which is also nice if you're on a tight budget.
amzn_assoc_placement = "adunit0"; amzn_assoc_search_bar = "true"; amzn_assoc_tracking_id = "blogabouintem-20"; amzn_assoc_ad_mode = "manual"; amzn_assoc_ad_type = "smart"; amzn_assoc_marketplace = "amazon"; amzn_assoc_region = "US"; amzn_assoc_title = "Popular Eye Makeup Eraser Pens: "; amzn_assoc_linkid = "f2cc1a4194b794e00393befd9aaac9e2"; amzn_assoc_asins = "B00P7CETC6,B00UMOSEXO,B00S4N8EAS,B01N29MG76";
Now the reason I love the Eye Makeup Erase Pen so much is because I can erase the makeup up mistake and not the rest of my makeup. I would definitely recommend this makeup remover pen to anyone who makes tons of mistakes applying makeup. I wish you all the best of luck at erasing your eye makeup mistakes as well quickly and easily if you do decide to use this pen.
Published by Elise Marie - This lovely lady has been freelancing for almost a decade and is educated in alternative medicines, cooking and baking, pet care and gardening. She loves sharing what she knows with others because she feels...
Make Over Your Make-Up Bag
Avoid Breakouts By Cleaning Out Your Make-Up Bag
If you haven't touched your electric blue eye shadow since you wore your mermaid Halloween costume last year, its time to throw it away. Using spoiled products can have ugly consequences from breakouts to eye infections. Even though it's contrary to what your parents taught you, do not share your makeup products. Would you want to borrow someone's toothbrush? When it comes to getting pretty, it's better to be safe than sorry.
Lips: Glosses applied with your fingers should be replaced every six months, since germs migrate easily into open-pot containers. Lip glosses with wands (or lipsticks) last longer, up to a year.
Eyes: Toss all of your eye shadows every three to six months. Because mascara comes into the closest contact with eyes (and the interior of the tube is a prime microbe-growing medium) replace it every three months.
Nails: Throw out nail polish after a year. By then, it starts to separate or dry up and when you apply it, it will go on streaky.
SPF: Once sunscreen is past its prime, you risk having no SPF protection. The best way to keep track of your sunscreen is to use enough that you don't have any left by the end of each season.
Brushes: If you splurge on your make up brushes, then protect your investments by using a brush cleaner to wash them off every two to three weeks.
Face: Replace foundations after one year. Loose or pressed powder stays fresh for up to two years. Use a new sponge every month to prevent skin irritation.
By abiding by these simple guidelines, you'll protect yourself from the ugly consequences of using old beauty products.
5 Makeup Brands for the Green Woman
Saving the World and Looking Gorgeous
Being green and being beautiful doesn't mean you have to be one or the other. It also doesn't mean that you have to sacrifice quality or spend more money either. The following are five makeup brands that offer green and organic makeup for the eco-conscious woman.
Burt's Bees
One of the most well known organic brand of makeup is Burt's Bees. This brand can be found anywhere, it's hard to miss the yellow and sometimes green packaging. Burt's Bees (link here) has everything from skin care products like lotion and cuticle creams to makeup, like lip glosses and lip sticks. Burt's Bees prides themselves on creating products that are made with as much natural ingredients as possible. Not only are their products natural but their packaging are made from recycled materials or materials that can be recycled. Burt's Bees prices are affordable since it's sold in most drug stores, Wal-Mart and Target.
Physicians Formula Organic wear makeup
In recently years many drug store brand cosmetics have jumped on the green/organic wagon and among them is Physicians Formula. Physicians Formula now has a line of organic makeup called Organic wear. Their organic line of makeup costs about the same as their regular line which keeps it affordable for everyone. Physicians Formula Organic wear line is 100 percent natural and certified organic color cosmetics. Not only are their makeup natural but the packaging uses paper for their compacts which is 93 percent less plastic than regular compacts, and their brushes are made with natural goat hair.
E.L.F mineral makeup
Another very affordable makeup line is E.L.F which stands for Eyes Lips Face. Some of their products are sold in store but only certain stores. I find it's much easier to just order from their website eyeslipsface.com though. Trying to find an E.L.F product I want in stores is harder than trying to find a needle in a haystack. E.L.F's regular line of makeup only cost a dollar but they have a mineral line that sells for higher, yet they're still affordable. The price range for E.L.F's mineral makeup is from $3 to $8. E.L.F's mineral makeup are made with 100 percent natural minerals that have been crushed into silky powders. Even their mineral lipstick is made with natural ingredients. The packaging for E.L.F's mineral makeup line are all made with recyclable material too.
Almay Pure Blends
Another drug store makeup brand that has joined the organic, green trend is Almay. Recently Almay has come out with their own organic line of makeup they call Pure Blends. Almay's Pure Blends makeup line consists of eye shadows, mascara, lipgloss, blush and bronzer, and loose finishing powder. All of their products are made with over 95 percent natural ingredients. Much like the other brands Almay's Pure Blends makeup line is also packaged in recyclable material.
Nvey Eco
Lastly there is Nvey Eco. This brand didn't become available in the states until 2006 and it claims to be the first truly organic collection of makeup. This brand hails from the land down under, Australia. You won't find Nvey Eco in drugstores or Wal-Mart and I'm not even sure if it can be found in Sephora, but if not Sephora you can always order off of their website at econveybeauty.com. Nvey Eco is a high end brand of makeup and thus it's more costly, but it costs as much as any brand of makeup you'll find at Sephora. Nvey Eco offers a wide selection of makeup to choose from, everything from foundation, to eyes to lip products.
With these five brands you can live green, doing your part to help the planet and your self, all the while looking fabulous.
Mineral Makeup: How to Enhance Beauty Without Harmful Additives
Mineral makeup is makeup without preservatives, fragrances or dyes. It consists of finely ground, all-natural minerals. It originated in the mid 1970's, but is currently exploding in market popularity.
Proponents claim that it's gentler and better for the skin than traditional makeup. Beauty experts describe it as light, hypoallergenic and luminescent. The product is more effective on non-ethnic skin tones. It's available for prices ranging from $10-$50 and is one of the most highly talked about forms of makeup available.
Some makeup has zinc oxide, which has skin anti-inflammatory properties. So certain types of makeup can actually have a calming effect on the skin. This makeup is non-comedongenic, meaning that it doesn't clog pores. This can be a very positive aspect to anyone who is acne prone.
Mineral makeup is also known for its sun protective properties. Some brands have a minimum of SPF rating as high as 15. The American Cancer Society has put its seal of approval for sun protection on this makeup. The titanium dioxide and zinc oxide are primarily responsible for the sun block.
Not all makeups labeled "mineral" are created equal and not all are free of colors and fillers. Just because the label says "all natural" doesn't mean that it is necessarily free of other chemicals. Nor does a label that says "all mineral formula" mean that there are no additives. You need to do your research. If pure and natural is your desire, read the fine print. The government doesn't define what the term means.
A pearlizing agent, bismuth oxycloride, is a by-product of lead and copper processing. In quantity, this product can cause skin irritation and cystic acne, but it is not found in all mineral makeup It is also used as a filler and binder. If you have sensitive skin, avoid this ingredient.
Makeup Tips for Prom
5 Tips for the Perfect Look on Prom Night
So you got your dress, your rental car is waiting to be picked up, your shoes are perfect and your hair is finally doing what you want it too and prom is in an hour. The only thing you're missing is prom makeup to make your face shine this night. These tips will guide you in applying your makeup - as a prom makeup perfectly for prom night.
Prom Makeup Tip #1
Foundation: Using a good foundation that blends with your skin tone not only works as a great base before applying your other makeup but also helps to even out skin tone and cover blemishes. To find the right shade of foundation for your skin tone in a cosmetic store use your inner wrist area as a guide. Turn your wrist so that it is facing you and place it against the different shades of foundation to find the matching color shade. Use the foundation that matches closest.
Prom Makeup Tip #2
Blush: Adding blush to your cheeks on prom night can give you that special flushed look that adds sex appeal with youthful bliss. Use the correct type of blush for your complexion, paler complexions should use cool tones like rose colored blush and darker skin complexions should use warmer colors like bronze shades.
Prom Makeup Tip #3
Highlight a Feature: Choose your eyes or your lips to enhance with your prom makeup look. Highlighting both will look overly dramatic and make your face overly made up. If you choose to highlight your eyes line them dramatically with eyeliner and if you choose to go with highlighting your lips choose a shiny lipstick that is long lasting. (Avon's Perfect Wear Lipstick lasts for 6 hours without touch ups!).
Prom Makeup Tip #4
Lashes: Even if you have decided to highlight your lips and not your eyes you should remember to add some mascara to your lashes. Black and brown mascaras compliment all skin tones so use those colors for your prom night makeup. Remember to blot and don't be afraid to use fake lashes if you really have none to start with!
Prom Makeup Tip #5
Don't Over Do It and Don't Rush: Take your time doing your prom makeup so that it gets done right the first time. Less is really more when it comes to doing makeup since it is not used to change your entire appearance but to enhance the beautiful features you already have. Apply delicately and you will look beautiful on prom night!
Fairy Halloween Makeup Tips
How to Get the Perfect Fairy Look This Halloween
One of my all-time favorite things to be for Halloween is a fairy. This cute costume is simple and fun and always gives you a chance to sparkle. But in order to make the most of your fairy inspired Halloween costume, you are going to need just the right makeup. Here are some tips that will help you get that perfect fairy look.
Start with the makeup you already have. You don't have to buy all new makeup for your fairy look. Most of the makeup you need will come from your regular makeup collection. By mostly using things you already have, you will save a lot of money on your Halloween look.
Find a few special makeup extras in the Halloween supplies. Halloween is a great holiday to find fun and unique makeup items. And it is often much cheaper than regular makeup. So don't think you'll have to spend a lot of money to add a few special touches. Try your local dollar store or Walmart for great Halloween makeup items.
Foundation. Start your fairy look with a great foundation. No need to buy anything special, just use your everyday foundation and apply as usual.
Eyeliner. The next step is eyeliner. Even if you don't wear this everyday, you will want to use it for fairy makeup. It will add a great pop to your eyes. It's fun to experiment with color. Using a bright blue, green, or purple eyeliner can add just the right touch of magic to your makeup. You can also keep it neutral with a brown or black eyeliner, if you'd rather use your eye shadow to play with color.
Eye shadow. If you choose a neutral eyeliner, then you'll definitely want to use color in your eye shadow. Shimmery shades will give you the best fairy inspired look. Think of the color of your costume, and choose an eye shadow shade that will complement it. If you decide to use a brightly colored eyeliner, you won't want to play too much with the color of your eye shadow. Try a shimmery bronze or pink.
Mascara. Finish your eyes with plenty of mascara to make your eyes the focal point of your face. Use any color or brand that you like for your every day look.
Blush. Blush will add just the right glow to your beautiful fairy face. Go for a soft pink that complements your eye makeup.
Lipstick. When choosing a lipstick color, you'll also want to choose something soft. Since your eyes are going to be your emphasis, you don't want to draw too much attention elsewhere. Choose a soft shade that matches your blush.
Sparkles. Your fairy inspired makeup is never complete until you add on the sparkles! You can find sparkles in almost any color. I like to use pearl or silver because they usually match any color makeup or costume. You can play with sparkles on any part of your face. I like to use them as an eye highlight over eye shadow. You can also use them on cheeks and lips, and even add them to your hair.
Finish with the perfect fairy costume. Now that your makeup looks great, finish with a great fairy costume. The nice thing about a fairy costume is that it can be as simple as a cute dress and wings. However you choose to costume, you can be sure that your beautiful fairy makeup will be the best part of your Halloween look.
Permanent Makeup: The Freedom of Permanent Cosmetics
You will love waking up each day with the color in your lips, on your eyes, and your eyebrows perfectly in place. No smudging, smearing, or washing off after showering or swiming. No wearing off at the end of a long day. Imagine the time you will save in front of the mirror in applications and touch-ups. Permanent cosmetic procedures should be performed by a master certified cosmetic artist for best results.
This is a state of the art method of appling natural pigment to the dermal layer of the skin. This technique was medically developed and specifically designed for the complete safety of various procedures such as eye brows, eyeliner, lip liner, lip color, scar camouflage, areola restoration, vitiligo, freckles and stretch marks.
Permanent cosmetics can be applied to look natural for the enhancemnet of your own personal features. This allows you the freedom to achieve a more dramatic look with the application of regular makeup as your mood dictates.
This new technology of makeup will impress those of us who are so busy, as well as the client with oily skin, who's makeup had faded or rubbed off by the end of the day. Anyone allergic to the use of regular makeup will find this procedure extremely beneficial.
Both men and women will look their best at all times, no matter how busy their lifestyles have become. Prices range from $400 and up per procedure. Many upscale Spas, including Jon Tomas Salon & Spa in St. Louis,MO, have a permanent cosmetic artist on staff.
Experience the freedom of permanent cosmetics for yourself!
Makeup Review: E.L.F.'s Eyeshadow Duo
Ordering makeup online is risky. You don't know how the product feels on your skin, if you like the quality, and so much more. There are questions that you want answered before you throw money into a product. I try to answer your questions about makeup products before you purchase. I have personally purchased and tested each product I review to optimize your overall opinion.
Right now we are going to take a peek at e.l.f.'s eyeshadow duo. This is a product recently developed by e.l.f. During this review we are going to take a look at the colors, texture, and application life.
Colors:
I had purchased e.l.f.'s eyeshadow duo creams a couple months back and got each color. When I was buying these eyeshadow duo's I noticed the colors were identical to e.l.f.'s duo creams. There's a total of six duo's available for purchase right now: Butter pecan, olive, mocha swirl, blueberry, berry mix, and black licorice.
I was very pleased with the colors because they were highly pigmented. Unlike most other e.l.f. eyeshadow products, these shadows were actually rather matte. There was a little shimmer to each color, but not a lot. The eyeshadow duo's were actually a breath of fresh air.
Texture:
Texture is a very big part of an eyeshadow to me and it should be to you as well. Skin around the eye is very sensitive and can easily be damaged by the slightest pulling, poking, and prodding. You want to ensure the makeup you apply to the eye area is very gentle and mild.
E.l.f.'s shadow duo is a friendly bunch to the eye. The texture is very soft and subtle. I like to test shadow products on my ring finger before my eye, and, needless to say, I was very happy with the results on both my finger and eyelid.
This shadow did not crease and it did not flake. It is very easy to work with in the blending area. Since each shadow comes partnered with another shadow of the like, you can easily form a new look each day.
Application life:
I was very impressed with the application life of these shadows. Most shadows I purchase online turn out to be very cheap and an overall waste of money. Not with these.
I judged this shadow in three different ways: with concealer, with primer, and on bare skin. Each of these application processes are used on a daily basis.
· On bare skin - I got approx. four hours of full application life from this duo. There was a little fading on the lighter shadows during this time, but not too much.
· On concealer - I applied a concealer before application and it only caused creasing, so I would not recommend doing that.
· On primer - I put the primer on before the shadow and got a lot better results. I got approx. five hours of full wear.
All-in-all, it's a good shadow for the price and I would recommend adding it to your makeup collection.
You can find this product starting from $5.00 at Amazon:
e.l.f. DuoEyeshadow, Butter Pecan, 0.34 Ounce - $5.95
e.l.f. DuoEyeshadow, Black Licorice, 0.34 Ounce - $5.90
E.L.F. Duo EyeshadowBlueberry - $5.00
e.l.f. Duo EyeshadowSet with Brush and Pencil, Night - $8.90
How to Pull Off the No Makeup Look Successfully
Ever wanted to try to walk out in public without wearing any makeup and not feel embarrassed or even almost naked at the same time? Don't be shy anymore, here are a few tips to get you started in the right direction of letting your face be "au naturale".
First of all make sure your face is cleansed thoroughly. Any dirty residue can make your facial skin appear dull or blotchy. I would recommend using the facial bar soap by Clinique that fits your skin type to make sure your skin is squeaky clean without drying it out. Afterwards follow up with a toner and moisturizer (I would also recommend using ones by Clinique as well). If you have fairer skin or are going to be outside for a longer period of time, make sure you use a moisturizer that has a good amount of SPF for protection against the sun's damaging effects, especially on your bare skin.
Do you have dark circles on your eyes or have puffy eyes? Soothe them with a de-puff eye gel such as the all natural Yes To Cucumbers brand. It goes on clear and leaves no trace of residue behind and does an excellent job of calming down the eye area. Make sure you get enough sleep the night before to prevent this from happening in the first place.
Make sure everything is neat about your face, especially your eyebrows. Keep your eyebrows tame with a tweezer, but try to do this the night before to avoid red, irritated skin on your upper eye area.
You hair plays a major part in giving you that fresh look. Make sure hair is not messy and all over the place or else it will contribute to a disarrayed, "I don't really care about my looks" appearance. A simple neat ponytail or your hair combed neatly will simply do the trick.
Do you have acne prone skin and simply cannot risk walking out showing off your blemishes for the whole wide world to see? Invest in a concealer specially formulated with salicylic acid that matches the exact skin tone of your skin and lightly dab it on to your blemishes, but don't over do it or else it will be obvious that you something foreign on your face. You can follow up with a tinted SPF moisturizer to make sure your skin tone looks even. Do you have sparse eyelashes and don't want to appear tired? Brighten them by using clear mascara on your lashes to still achieve the natural look.
Makeup Additives - Do You Know What You're Putting on Your Face?
In today's society many women apply makeup every morning before they leave the house but how many people really know what they're putting on their face?
Do you know what each additive does in your cosmetics? These are six additives found in makeup that you may not know their purpose: benzethonium chloride, candelilla wax, cetyl alcohol, para aminobenzoic acid, propylene glycol, and triethanolamine.
When you buy makeup you should always check the label to make sure that there is some sort of preserving agent that will prevent germs from growing. One of the most common preservatives and antiseptic compounds found in makeup is benzethonium chloride.
Candelilla wax is found in lipstick and lip balms and is what allows them to harden. Candelilla wax is derived from the leaves and stems of the candelilla shrub found in the southwestern states and northern Mexico.
The majority of additives that are used in makeup are found in foundation. Cetyl alcohol is an emollient, meaning it is used in makeup to soften and smooth the skin to which it is applied. This is used in foundations to create a soft look on the face.
Para aminobenzoic acid which is sometimes abbreviated to PABA used to be commonly found in foundations that offer sunscreen protection from UV rays. But according to the National Institute of Health: National Library of Medicine (2007), this compound isn't commonly used anymore since it has been found to increase the risk of skin cancer in certain people whose bodies are not able to repair cellular defects caused by this acid.
Another additive found in many foundations is propylene glycol which helps prevent your skin from drying out when applying makeup by retaining it's own moisture. This organic compound is also commonly used in body and facial moisturizers, not just makeup.
Triethanolamine stearate is an emulsifying agent used in foundations and other cosmetics to combine oil and water for a smooth appearance. This organic chemical compound can also be used as a pH balancer and is found in other beauty products, besides makeup, it is found in lotions, shaving foam, and shampoos.
These six additives are only some of those which you will find in the makeup you put on your face everyday and now you can feel a little more confident about what you're using. If your makeup has other additives in the ingredients, don't worry, cosmetic manufacturers use different products but FDA regulations prohibit the use of additives which may be dangerous in US produced makeup.
Tags for the article:
Makeup Mistakes
Eye Makeup
Waterproof Makeup
Cheap Makeup Websites
No Makeup
Calming Down
Tweezer
Makeup Review
Choosing Foundation Makeup
Foundation Makeup
Cream Foundation
Powder Foundation
Liquid Foundation
Applying Your Cosmetics Like The Pros
Blue Eye Shadow
Eye Infections
Makeup Products
Budget Friendly Makeup Tips
Organic Makeup
Physicians Formula
Sunscreen Protection
Applying Makeup
Best Cheap Lipsticks
Permanent Cosmetics
Permanent Makeup
Vitiligo
Fairy Makeup
Halloween Makeup Tips
Sparkles
Halloween Makeup
Makeup How To
Cystic Acne
Mineral Makeup Kit
Zinc Oxide
Mineral Makeup
Prom Makeup
Prom Night
Fake Lashes
Quick Tips for Makeup Removal
Simple, Natural Ways to Remove Makeup from Your Skin Gently and Effectively
Articles writed and published by: Elise Marie, Gwendolyn Taylor, TommiH, DoRae
Libby, Jen, janet defrancesco, Rae Harris, kjones29, Linda StCyr,
0 notes