#give it up for the module i used (heavily customized) when i run my first vtm campaign
Explore tagged Tumblr posts
di-kut · 5 years ago
Note
Please give us more backstory! I will eat it up! Even if we don't fully delve into reader's background I would like to know what lead to her meeting Mando! She obviously worked before but what exactly made her turn to crime?? Had she been in trouble before? Like petty theft and stuff? She obviously saw the consequences of her actions but continued on. Why did she side with the Empire first? Was it because that's all she knew? Was it easier than accepting the alternative? Please gimme, gimme!!
Ask and you shall receive! This was originally written to be the beginning (or near the beginning) of this story however it was abandoned long ago. It doesn’t fit the storyline or the mood of the rest of the story very well but... well! Here it is. Thank you @namay for always showing this story so much love and support! 💕
Rated: T 
Summary: A series of paths crossing when our Reader meets the Mandalorian for the first time while working in a mech shop on Batuu. This is not their full backstory but it is a little piece of it. 
Batuu is a warm planet, but that day is a particularly hot one. The suns are beating thick and heavy through the market outside and through the canvas covering over the back room of Staf’s shop. You can hear the sluggish sounds of the day from the street. The crowded street moves like through oil, slick and slow. Three years was enough for you to acclimatise to warmth, but sweat stings your eyes and collects in a salty line alone your top lip. You can hear voices from the front of the shop where you sit, separated by crumbling walls and a curtain. You stare at a light patch against the plaster where Staf had drilled off the old Imperial insignia, listen to the whirring of BG-719 in the shop with the customer. Fight the temptation to close your eyes and lean back against your work bench.
The curtain pushes back. You glance over at the droid as he comes through it, track his progress out of the corner of your eye. He stops in front of your workbench and waits as you place the part you are rewiring down on it.
“There is a Mandalorian here looking for you.”
You stare at BG-719 blankly.
“There’s a – ”
“A what?” You say.
“A Mandalorian.” BG puts his hands up like goal posts. “They are a warrior race native to – ”
“I know what a Mandalorian is.” You lean around him to try and peer into the front room but the curtain has fallen back into place. “What do you mean, there’s a Mandalorian looking for me?”
“It means on the other side of this curtain there is a heavily armoured man with a very large gun who is asking for you.” The droid whirred slightly, a gimmick which has developed into something of a sarcastic sigh in the time you’d known him. “He’s asking for you by name. Not your normal name, it’s a different name. He says you’re the same person.”
You stomach drops. “Are you sure?”
“Well let me just go and check, shall I? I’m sure he’s the kind of man used to repeating himself. Won’t be a minute.” BG-719 drops his hands and turns like he will make good on his threat. You catch him by the arm and haul him backwards. He whirs again as he stumbles. His armature is hot, you think vaguely, you need to talk to Staf about installing a better cooling system in the front for the droids.
“How does he know my name?”
“Your real name? I didn’t even know your real name. I didn’t ask him.”
“What does he want?”
“I didn’t ask him that, either.”
You sigh and drop your hands to your sides. “Great.”
“Do you think he’s here to kill you?” The droid asks.
“I hope not,” you mutter. Can’t really be sure, because you know your bounty doesn’t require you to be alive for the credits. Hope he isn’t here for the bounty but know there is only one way he got your real name. “Kriff.”
“If you would like me to go and question him, I will put in a request now that the repair works on my head after he’s shot me be done by you, and not the WAC units, please.” BG doesn’t move again though. “I don’t think he likes droids.”
“What gave you that idea?”
“He threatened to shoot the WAC units. And me, not that it seems to matter.”
This time you rub your grease covered hands down your face as you sigh. “I won’t let him shoot you.”
“I doubt you’ll have much say in the matter, but I appreciate the sentiment.”
The Mandalorian is waiting for you in the front room when you finally emerge. The WAC units are nowhere to be seen, but there is a hovering durasteel orb which certainly hadn’t been there that morning. The Mandalorian steps in front of it as you approach the back of the counter. His armour glints in the shaded shop, brushed smooth and meticulously maintained. Beautiful, or it would have been if it wasn’t so terrifying. He seems to take up the whole room. Your eyes slip between him and the dome. He just stares at you, or you assume he does, unnerving in his silence. You note the handle of a rifle which peaks over one shoulder, another holster on his thigh. You feel the weight of the small blaster you had tucked into the back of your trousers against you spine. It takes you several long moments to build up the nerve to speak.
“Can I help you?”
He doesn’t move. Doesn’t speak. Just stands there, silent and imposing. You run your gaze the length of his armour, taking stock. You can see catches in the metal, almost invisible indentations. They aren’t poor workmanship, any mechanic worth half a credit would be able to see it, they are buttons. You know enough about Mandalorians to know you don’t want to be in the firing line if he decides to push any of them. You work your jaw, tap against the countertop for something to distract yourself from the buzzing in your fingertips.
“You threatened to shoot the droids,” you say.
His helmet tilts slightly. A nod, maybe – you aren’t sure.
“Well.” Your tapping grows faster.
He just – keeps standing there. Staring. You can’t see his eyes through the visor of his helmet, can’t guess at the shape of him beneath the armour. But you can feel him looking at you, feel the assessment happening beneath the surface. Some sort of conclusion being reached. Your hands twitches towards your blaster.
“Are you here for a repair?” You try. You point at his floating dome. “That, maybe – ”
“That’s fine. That’s not why I’m here.”
You jump. His voice crackles slightly through the vodocor in the helmet, but it is deep and calm. You feel the hairs along your arms stand in response. “Oh. Oh okay. I just – ”
“I’m looking for information.”
Immediately you are wary. You step back from the counter and fold your arms in front of you. “Information about parts?”
“Information about Empire records. You are ex-Empire, aren’t you?” He doesn’t expect an answer. Already knows the answer. You think of the fob somewhere with your name on it. Your face projected in blue above it. Some miniscule number which defines your life’s worth. Traitor. Your punishment for aiding the rebellion. The Mandalorian just stands there, waiting. “I’m trying to find a planet.”
“Maybe you should try a map,” you say. Sharp. Testy.
“The planet I’m looking for isn’t on a map.”
“Sounds like you’re in trouble then.” You lean back against the workbench behind the front counter and uncross your arms. Try not to make it obvious you were thinking about reaching for your blaster. Your heart is beating so fast it almost hurts. “If there’s no mechanic work I can help you with, then I’ll be getting back – ”
He does know your name, as it turns out. Not the name you had told people on Batuu. Not the name BG-719 called you when a customer needed help. Not the name Staf had stared dubiously at on your holochip when you’d given it to him, looking for work, three years ago. Not the name you had boarded ships under, heading for some forgotten planet in the outer rims where you thought the remnants of a dying Empire wouldn’t look for you. You hadn’t heard the name the Mandalorian calls you in years, but it feels like dropping out of hyperspace too fast when you hear it through the modulator in the empty shop on Batuu.
You know, suddenly, even if you manage to get to your blaster first there was no way you’d beat him. “What do you really want?”
“I’m not here to turn you in for the reward, if that’s what you’re asking.” The Mandalorian says. “I don’t do Guild work. Anymore.”
“So.” You grip your hands together so hard your knuckles turn white. “What do you want?”
“I’m trying to find a planet.”
.
You don’t know the planet he needs. Have never heard of anything like it. But you worked for the Empire, and on Batuu, and you hear things. You tell him about a small planet on the edge of the outer rim, close to the unchartered territory. Tell him there is an alien there who may be able to help him, untouchable by even the Empire and the Republic before that. A keeper of reliquaries and ancient knowledge. You tell him you only handled weapons orders for the Empire and you don’t know anything about finding lost, ancient planets. But that maybe this alien will. You send him with a warning to be careful and feel silly for it the second it leaves your mouth. He tilts his helmet, and you think he is amused beneath it. He offers you a small bag of credits. You refuse it.
“Why?” He asks.
“Didn’t really do anything, did I?” You shrug, keep wiping down a greasy piece of engine.
He stares at you, this time you see the helmet move as he scans you up and down. And then he is gone. You think you will never see him again. And your life goes on in much the same way as it had. You rise before the suns can begin to bake the ground hard and make your way to Staf’s shop. BG-719 doesn’t mention again that the name the Mandalorian had given for you was not the name you went by, and the whole thing is better forgotten. You wonder, one day weeks after meeting him, if he had ever found his planet. And when you dream that night you dream of gleaming armour somewhere deep in space, of death and blood and the smell of smoke. The next morning you try your best to forget it.
It is almost two months later when he reappears. Is inexplicably leaning against the wall outside the shop before it opens. The street is pale in the early morning light, and in the grey he looks almost like a ghost. You stop before him, close enough that you could touch the Beskar if you wanted. He just watches you, the same as before. There’s the scoring of recent blaster fire on his chest plate. He seems otherwise exactly as you remember him. Calm. You stay there, toe to toe outside the shop. You don’t say anything and neither does he. You just punch in the code to the shop and stand back, hold out your arm to gesture for him to go in first. He stares at you a moment longer, like he is trying to place some thought, and then steps out of the street. You pause at the door behind him. And then you follow him inside.
“He’s back.” BG is powered up and looks at you accusingly around the bulk of the Mandalorian.
“I know,” you say.
“Why is he back?”
“None of your business,” the Mandalorian snaps.
BG whires in distinct irritation, picks up his tray of parts and sets them down firmly on the front counter. The Mandalorian’s hand twitches over his gun and you roll your eyes. “I’m not leaving,” BG-719 says. Incensed.
“You don’t have to. If any work comes for me just leave it out the front, I’ll come and get it in a while.”
“Trust me,” the droid has begun to aggressively unscrew a broken piping cover from what looked like a shot hyperdrive. “I won’t be coming near him.”
“Good,” The Mandalorian says as he follows you through the curtain.
You pull out a measly breakfast from the shelving unit in the back room. Your tiny quarters in the block of rented rooms further back from the main streets of the market come only with a bed and a toilet, and barely enough room for that. And Staf didn’t seem to mind you keeping some personal items out the back, so. You stare down at the wrapped fruit and dense bread and then offer them unsurely up to your companion. You aren’t sure if he can eat in front of you, but it feels too rude not to ask. He shakes his head and leans back against one of the walls, crosses his arms in front of him.
“So,” you sit at your workbench. Start into your breakfast.
The Mandalorian tilts his helmet ever so slightly. “I have a job for you, Gotabor.”
“I don’t want work. I have a job.” You tear a piece of bread off the loaf and chew it slowly. Narrow your eyes at what you can sense is a name. A title maybe, from the way he says it. The word is unfamiliar. “I’m not supposed to take under the counter jobs. Staf doesn’t like it.”
“It’s just once.” The Mandalorian pushes off from the wall and walks towards you. Pulls out a holodisk from the pack strapped to his side and holds it out for you. You can’t see his eyes, that hasn’t changed, but you can still feel the lifting sensation along your shoulders of his eyes on you. When you don’t take it from him and places it down on the only clear part of the bench, right next to your breakfast. “Can you get into this?”
You eye the disk. “That’s Pre-Empire records.”
“I know.”
“Super illegal.”
He tilts the helmet again. You think he might be laughing at you, is he hadn’t been so still. He sounds like he’s smiling. “No Empire anymore.”
You know you shouldn’t ask. You should just give the thing back to him. You should ask him to leave. But. “What is it?”
“I don’t know.” He backs up until he is against the wall again. Leans back, crossed his arms and sits into one of his hips, crosses his legs at the ankles. “That’s why I’m here.”
“And here I thought it was for BG’s company.”
You aren’t surprised when he doesn’t laugh. You pick up the disk, inspect it briefly, and put if back down. You shake your head at him. “I don’t want another job,” you say, but you haven’t looked away from the disk. The Mandalorian doesn’t say anything. He just lets you sit there and wrestle with your better judgement. You look at the disk, then back to him, and then down to the disk again. “This is a bad idea. You know some of these had trackers in them.”
He still just infuriatingly stands there.
“I might not even be able to get into it. I never dealt with the Pre-Empire stuff. That was a different level of classified.”
Silence.
“And there’s all sorts of ancient coding and programming in this. I mean look at it. It’s a relic.”
The Mandalorian shrugs his shoulder slightly, rolls them back. A silent yawn.
You groan and swing out of your chair. “I’m not doing this,” you mutter. You dig around in the mess of found parts and tools. You will have to make something to hook the old Republic system up to a holopad, so you could read in the information. You toy with the idea of trying to just convert the file system onto a new holodisk, but you aren’t even sure how the data output would work. “I’m not doing this.”
“How long will it take?” The Mandalorian asks.
You throw your hands into the air. Wave the tools you were collecting at him. “I’m not helping you.”
“I have to get supplies. My ship is running low.” He moves towards the curtain, places a small bag of credits on the table. “This is for last time as well.”
“You might want to move your ship to long term docking,” you ignore the credits. “I’m assuming you have a ship.”
“It’s already in long term docking,” he calls as the curtain swings back into place.
You click your tongue against the roof of your mouth. It should be in irritation, but you can’t stop the small smile. Shake your head. “Confident.”
He returns late that night, after the droids had powered down. You had planned to be home already. But he finds you there anyway, hunched over your work table in the back room. He lips under the curtain into the dimly lit room and lowers himself into the chair opposite you. You don’t look up from the work you are doing, two pliers in your hands, holding back wiring from the inside of the old holodisk. It isn’t as complicated as you had suspected, but it would be slow and tedious work to extract the information without corrupting the whole disk. The Mandalorian watches you for some time, so still that you think maybe he had fallen asleep.
“I hope you didn’t break that lock on the way in, Mandalorian.”
“I didn’t, Gotabor.”
You hum sceptically, continue to work. Ignore the new name. “I think I can do this. But I’m not sure. I’ve never done this before, not with a disk this old.” You cast a glance over towards the silent warrior. “It’s still gonna take time.”
He nods and leans back into the chair. Shuffles to get comfortable and seems content to just sit. You watch him, take him in, hulking in the tiny room, seemingly completely at ease. You are surprised how easy you feel with him. How comfortable. You feel him watching you back and wonder if he is thinking the same. You break and look away, shake your head. Return to trying to piece apart the holodisk in front of you. You see his helmet tip back out of the corner of your eye. He strikes his legs out straight in front of him and crosses them. You scoff slightly and settle into your work. You stay there together late into the night.
.
It takes you three weeks to finish the task the Mandalorian has given you. The days are reserved for your work at the shop. Staf visits you to check up, he takes his time going through inventory with you. Checking through the WAC unit work. He doesn’t bring up the Mandalorian until the end of his visit, when you are standing alone in the front room. Staf is a small man, wiry with something of a gut, and no hair. He is missing an ear from what looked like blaster fire, but you had never asked. It wasn’t the kind of thing your asked about on Batuu.
“I heard there’s been a Mandalorian coming in,” he says. You feel your arm jolt at the comment, but do your best to keep your hand steady screwing a bolt out of a fuel covering. You shrug, can’t tell from his tone whether he is suspicious or not. Know he is paranoid about you skimming the tills. “Mandalorian’s get talked about, you know.”
“His ship is busted,” you decide to play dumb. Not mention the holodisk.
“And he doesn’t want it worked on at the yard?”
You shrug again. “He doesn’t like droids.” You hope that lie will cover it. You have not asked the Mandalorian where his ship is, what kriffing model it is. You wish you had thought to now. “It’s mostly the hyperdrive anyway. Unwired it, brought it in. I thought he was gonna shoot BG.”
“He pay good money?”
So it was the money. You feel the relief instantly. You aren’t sure exactly why you are so worried about Staf finding out about the disk. Not sure what you’re protecting yourself from, the Mandalorian from. Staf doesn’t care about Empire laws, defunct after the collapse and never really enforced in the out rim besides. But whatever instinct which had told you to trust the Mandalorian told you not to spread knowledge of the disk. You don’t even really debate the lies before they start.
“It’s alright. I figure a guy like that can afford to pay a bit above average though. With all the Beskar. Looks real new.” You finally get the rusted screw loose, drop it into the tray on the counter. “He gave me credit chips. Here.”
You step out the back. Have to close your eyes and breathe for a moment before you retrieve the bag of credits. You dig around for the bag of credits he’d left there, glad now you had never moved them or given them back to the Mandalorian. You push back through the curtain and toss the bag to Staf and let out a shaking breath. Your hands are miraculously steady as you retrieve your fuel covering and begin on removing the next screw. Staf makes some sort of pleased noise and you hear him pull the drawstring of the bag closed again.
“Well you just tell that Mandalorian he can bring in any part of the ship he likes. You know what, if he wants, if he doesn’t like the droids are the yard that bad,” Staf rubs a hand over his jaw, “you just tell him we can send you out there to work on it for him.”
You look at your employer. He’s pocketing the bag of credits and rubs his bony hands together. “You know I don’t like working out of the shop.”
“You will for money like this. I’ll give you a cut.”
You shake your head, make a show of being unimpressed. Staf walks around the shop a few more times, patting the jingling purse of credits in his pocket all the while, whistling a tuneless song and not listening to anything else you say. You even bring up a cooler for the droids and he makes some noncommittal answer. He doesn’t stay long afterwards.
Later, when it is dark again, the Mandalorian returns. He sits in his usual place across from you, has his hovering durasteel dome with him. You want to ask about it but resist the urge. The Mandalorian is more relaxed, lets you get close enough to it to touch. You have barely finished your work from the shop, but he has brought you food from the stalls in the market. A spiced meat and a tough, flat bread. They are warm still, and delicious. He assures you he ate before coming.
“Eat, Gotabor.” He insists.
“What does that mean?”
“Eat? It means put the food in your mouth, chew and swallow.”
You shoot him a look. “Not that.”
“It means Engineer.” He says. He has his feet stretched out again, propped now on a box of spare parts. Seems tired. He had cleaned the armour after the first day he had reappeared, so it had been free of wear and the signs of blaster fire. But it sports new, different marks now. “Eat.”
You do, and you enjoy it. Even think you will ask him which stall he had bought it from. Instead you ask, “How many credits were in that bag?”
“What?”
“In the little bag you gave me. How many were in there?”
“You didn’t look?”
You shove another piece of bread in your mouth and pull the holodisk out from the compartment under the false bottom of your tool drawer. “Didn’t get a chance to.”
“Where is it?”
“Staf – he owns the shop – he came sniffing around because he heard about your visits. There’s a Mandalorian coming in,” you attempt a terrible impression of your employer’s nasal tone. You shrug. “So I told him you were paying me extra to fix the hyperdrive ‘cause you didn’t want the droids at the yard doing it.”
The Mandalorian drops his feet off the box and leans forward in his chair. Braces one of his forearms across his knee. You can feel his gaze again. He’d been in enough times now, not all nights but most, that you know he is studying you with some forcefulness behind it. You get a tingle ripple across your shoulder blades from the attention.
“Where is your ship, by the way?” You have almost finished rewiring an old ship holodisk reader to accommodate the technology sitting on your workbench. It had been a lucky find, one of the droids Staf sent out scavenging brought the whole console back. Pre-Empire. It even had an old Republic logo emblazoned over the top, some old embassy vessel long abandoned. Your mother would have said the force is with you. You were just relieved. It meant you could fix the temperamental wiring in the holodisk and not try to extract the information. Not risk corrupting it. “I should probably know,” you continue. “Since apparently now I am fixing your hyperdrive, if anyone asks. Staf said I could go work at the ship in the yard after I gave him the bag, so I figure there was probably a bit in it.”
“You just gave it to him?”
You can’t place if he sounds relieved or angry. Maybe somewhere in the middle. Certainly sounds disbelieving. “Yes? I figure it’s the best way to keep his nose out of your business.”
The Mandalorian shakes his head. “And now you’re coming to work on my ship?”
“I don’t want to.”
“Thanks.”
“No offence. I don’t like working out of the shop.”
The Mandalorian hums quietly and relaxes back into his chair. “Why did you give him the credits? Did he ask about them?”
“No. He asked about you.” You inspect your work carefully. Bite into the bread again and put it to the side. You still have your goggles around your neck and you pull them up over your eyes. Tuck a spare rag up underneath the bottom edge of them to protect the lower half of your face. The soldering required was small and quick, and the final touch to finishing. Soon it won’t matter if Staf sent you off to the Mandalorian’s ship, because it would be long gone and his holodisk with it. “There.”
“Why not tell the truth?” The Mandalorian asks. You pull the rag down. “That is going to catch fire.”
“I’m careful.”
You pull the goggles down as well and hold your work up to the light for a last check. Twist it back and forth before giving a small satisfied nod. The charges should all match, the circuit is closed. Everything was where it needed to be.
“Why not tell him the truth?” The Mandalorian asks again.
You replace the covering on the reader. “I don’t know. Seemed like a bad idea. I figured the less people who know the better.” The holodisk fits perfectly into the waiting slot. You pull it back out again and find the portable generator under your bench. Plug the reader in. You hold your breath as it flickers to like. The projector unit at the top takes longer, whirring slowly until finally a rim of blue lights around it. You hold the disk up to the Mandalorian. “You ready?”
He pushes himself to standing. You insert the disk slowly, heart in your mouth, knowing if it doesn’t work or the system shorts you will be left with nothing but a melted pile of metal and a ruined disk. The whirring is awful. For a few terrible seconds you think it is blown, and then there is a gentle hum and the projector plate flickers to life. Blue light bounces around the tiny room, static balls of light hover through the air, numbers and letters appearing beside them. You scramble for the shop lights, the detail of the projection are too pale to make out, and once you turn them off the projection begins to slowly rotate. The Mandalorian stand the in the centre of the room, a tiny galaxy turning around him.
“It’s a map,” you say together.
You move slowly, weaving through planets and star systems. Each one has a floating label beside it, but in an unfamiliar alien language. There are numbers too, but what they represent you aren’t sure. The Mandalorian has begun pacing, occasionally prodding at some planet or other. Some respond, longer paragraphs of the same alien language appearing beside them, until the Mandalorian touches them again with a gloved finger, and they blip back out of existence. You try the same to some of the planets near you. Nothing gives any signifier of which part of the galaxy you are looking at, which systems. You wander through your floating galaxy for what could be hours, until finally slumping back into your chair.
“Know what it means?” You ask him.
He heaves a heavy sigh. “No. But it’s something.”
“You think one of these is your planet?”
“Maybe. Don’t know.” He presses the power on the projector unit and the tiny galaxy disappears. The room goes black without the floating blue light, and you swear and fumble for the switch. When they flicker on you feel suddenly drained. Are tempted to put your head down on the bench and sleep. It must be well into the early hours of the morning. “I’ll find someone who knows.”
You nod. Too tired to do more.
“It’s time for us to move on.” He says. “We’ve been here too long.”
Your stomach drops. Only hours ago you had been glad at the thought of him leaving, and taking the threat of outsider eyes and Imperial trackers with him, fallen Empire or not. And now you are nervous. “When will you go?”
“Soon as we can. Tomorrow.” He taps the projector unit. “Can I take this?”
“Well, yeah. I’ve got no use for it. It’s for you.”
He nods, rests his hand on top of it. Looks back towards his floating dome. You had forgotten it in the excitement of a breakthrough. He stares at it for what feels like an eternity. And then, “You could come with us.”
You blink at him. “What?”
“I’ll pay your for the work. And I could use someone who knows how to do repairs on the Crest. And this,” he turns away from his dome, back to face you, and taps the projector unit again. “Whatever that piece of Bantha shit boss is paying you I can promise it’ll be more.”
“I – I’m – ” You close your mouth and try to gather your thoughts. “Go with you?”
“Yeah.”
“On your ship?”
“Unless you have your own and want to follow us.”
You spare him a look. “Out there?”
“Sure.”
You stare at your reflection dumbly in the helmet. As dark blur against the shining Beskar. You think about it, briefly. Living on a ship with the Mandalorian. Stuck in there with him, in space. Travelling to strange planets. The centre of attention everywhere you go, next to him. You know the talk circulating the markets on Batuu every day he stays, think of the greedy way Staf pocketed his credits. About the danger. He doesn’t wear his weapons for nothing. Of the new smudges of blaster fire on his chest plate. You shake your head slowly.
“I’m… No.”
He tilts his head. “No?”
“No. I – I mean. I’m sorry. But no.”
He stare6s at you, more intense even that the first time you’d met, so that the tingles which normally live across the backs of your shoulders spread out along your spine and around you ribs. You wonder if he’s ever been denied something like this before. Then wonder if he’s ever asked anyone. You swallow thickly. He shrugs, finally, and you let out a sigh of relief.
“Okay.”
You don’t sleep the rest of the night. You stare at the dark ceiling of your room and strain to hear the sound of a ship taking off in the distance. You hear nothing. He’d walked you back to your room, through the empty market. A quiet walk. When he turns to leave, the last time you know you will ever see him, you almost catch his arm and say you’ve changed your mind. That you do want to come with him. But you don’t. You watch him turn and leave. His hovering dome following behind him. You watch until he turns a corner and is gone.
You lay there until the suns begin to peak over the horizon and colour the world in pale grey. You force yourself back out of bed. Dress slowly. Fold your night things. Make your bed. Pass through the motions of your morning and make your way to the shop with dragging feet.
The droids are still powered down when you arrive, and you leave them, glad for the time alone. You pass into the back room and reach for your breakfast. Slump into your chair. You don’t eat anything. Just wrap it up again and replace it on the shelf. The sounds of early arrivals in the market begins to fill the air around you, the sounds of life continuing on, marching ahead and pulling you with it.
You knock over a nearly empty box and it crashes to the floor. You rub at your forehead and bend to pick it up. The generator is where you left it, under the table, but the projector which you had been keeping on top of it is gone, but you have no time to grieve the loss of the Mandalorian, whose quiet company you realise you looked forward to every night. Because in place of the projector unit there is a gleaming welding mask, staring up at you. You stare at it. Hesitate to reach for it and lift it towards you, crouched on the ground behind your work desk. Something falls from the back of it and lands at your knees with a heavy thunk. You scoff and then find yourself laughing. The sound has an edge of hysteria to it. You pick up the bag of credits. It is bigger than the last one, much heavier. You slip it into your pocket and turn back to the mask. It has a proper strap and padded interior and a switch next to the visor.  
That rag is going to catch fire.
Your eyes well with tears. You know it is from him. Have no idea when he would have found the time to conceal it there. Wonder if the whole night he had been hiding it and placed it there without you noticing, or if he came back later. The mask a work of such fine craftsmanship you do not know where he would have found it on Batuu. It gleams in the brightening early light. It reminds you of the Mandalorian’s Beskar.
Tags: @btillys @vercopaanir @absurdthirst @sistasarah-sallysaidso @adikaofmandalore @babyomen @purpleeeslurpppp @fleurdemiel145 @hdlynn @sinnamon-bun @toilet-keeper  @dartheldur @no-droids-allowed
174 notes · View notes
zhantesblog · 4 years ago
Text
3)Research and analysis into brand structure (making a brand)
Tumblr media
A brands is more than just a logo; Although it might help with the brands identity you have to take into account other factors such as the vision and purpose, the customer-who is the target demographic?, price- how much are these products being sold for?, products- what is being sold?, place- where are these products being sold (online or in store), promotion-How are these products being promoted? and the packaging.
Vision and Purpose
Tumblr media
The vision and purpose is at the heart of every successful brand. It provides businesses with guiding principles and values for the development and delivery of their brand and its outcomes.  A vision and purpose can range from serious to life-changing or just a bit of fun. It helps us to create a deeper meaning into the context of a brand.  In order for a brand to be successful, the vision and purpose must be authentic and the brand must live up to its values from the way it treats its staff to the products it sells and the way it speaks to their customers.
”… the most important brands in the world make you feel something. They do that because they have something they want to change. And as customers, we want to be part of that change...
Yes, we admire the product they make. But the thing we love most about them is the change they are making”  
David Hieatt 
SELFRIDGES Vision and Purpose:
“Our vision is to be the destination for the most extraordinary customer experience, and our people are central to achieving this. Team members across our business maintain our vision through the values we live day-to-day and the unique Selfridges spirit we bring to every project.”
Sourced from: https://careershub.selfridges.com/members/modules/job/detail.php?record=153
Tumblr media
Image taken and found: https://envirotecmagazine.com/2020/08/17/selfridges-unveils-ambitious-initiative-incorporating-new-retail-models-and-an-attempt-to-shift-shopping-mindsets/
Selfridges is a shop run on imagination: a place where the world’s most covetable brands combine with the most extraordinary spectacles, events and ideas for an experience like no other. Selfridges began when Harry Gordon Selfridge moved from London from Chicago in 1906 with his heart set on opening his dream store. Selfridge had a revolutionary understanding of publicity and the theatre of retail and with this knowledge, Selfridges Oxford Street opened its doors to the public for the first time in 1909 and has two more stores located in Manchester and Birmingham. In 2016 Selfridges was the first ever store to be awarded the title of ‘World’s Best Sustainability Campaign by a Department Store’ in line with its focus on buying better and inspiring change and on three unprecedented consecutive  occasions in 2010, 2012 and 2014 also won the coveted ‘Best Department Store in the World’ award, underlining its place at the forefront of retail.
“Here at Selfridges we have 5 values which are the core of everything we do. They are the way we do things, they are actions not words, our moral code and guide how we behave. They are what holds us together and gives us authenticity and integrity.”
WE OWN CUSTOMER EXPERIENCE
WE TAKE RESPONSIBILITY AND DELIVER
WE SHARE OUR KNOWLEDGE
WE LEAD AND INSPIRE
WE SHOW RESPECT
Sourced from: https://careershub.selfridges.com/members/modules/job/detail.php?record=153
To secure the vision and purpose of any brand you must take these questions into consideration:
Is it a good idea?
Is it a new idea? 
Is it scalable? 
Will people want it? 
What change will it bring about?
Does it matter to you?
Does it matter to your customer?
How do you know?
Is it good for the planet? 
Is it good for the human? 
What is your niche? 
Is it a common problem? 
Does this problem need solving?
Do you love it?
Brand Identity
A brand identity is what makes your brand recognisable to your customer and how you want your brand to be perceived.
Brand Identity is created by bringing together:
Brand name.
Logo.
Slogan or taglines.
Tone of voice.
Colour palette.
Typography & graphic styles.
Visual identity.
These form a ‘toolkit’ or guideline which is to be applied across your entire brand.
LEVI’S brand identity:
Tumblr media Tumblr media Tumblr media
Images sourced from: https://www.behance.net/gallery/40403081/Levis-Brand-Identity
Levi’s has a clear and distinctive logo that is pushed across throughout all of their branding and promotional front. It’s made very clear to their audience that they are an all American brand. The colour red is consistent and used throughout behind a brown background and two horses on their tags to create that rustic western look and feel.        
Customer
A successful brand puts the customer at the heart of everything they do. You can’t know your customer by relying on Google searches or reports. The only way to really get to know your customer is through reaching out to them and getting to know who they are.  In order to create lasting brand loyalty you must understand the past, current and future needs of our customer – where are they now and where will they be in 5, 10, 15 years. 
To begin you can consider creating a customer profile through the use of in depth questions such as:
Where do they shop and what do they buy? 
What do they do for a living?
What kind of income do they have?
What does their family life look like?
Where do they live?
How do they socialise?
What kind of holidays do they go on?
What car do they drive?
What media do they consume?
Why are they your customers?
What can you do for them?
Identifying your competitors is a great way to help gain more insight into who your customer is. Identifying your competitors means that you are able to identify what your customer expects in a product and what your customer will expect to pay for the products. If there is a brand that traditionally serves your current market but are now not doing well, this could be an opportunity for you to see the flaws that these brands are making and use this to do things differently and adapt how you interact with your customers and If there are already similar offerings on the market doing well, this demonstrates that a market exists for your products.
In our research it would be useful to conduct a survey of people from our chosen target demographic, to help gain a better understanding of our customer which will be useful in shaping both our brand and the type of products we want to sell.
GLOSSIER Customer:
Tumblr media
Image sourced from: https://transparencydigital.ca/owning-customer-relationships-glossier-case-study/
“If we can engage customers further up the [sales] funnel and earlier in product development and brand strategy, we will be in a position to create what people actually want,”  
Glossier’s president and CFO, Henry Davis
Tumblr media
Image found and taken from: https://mireillebobbert.medium.com/aarrr-startup-metrics-applied-to-glossier-a-story-about-the-user-journey-of-a-lifetime-2f287d0c3d93
Tumblr media
Image taken and found from: https://www.slideshare.net/ChrisOrcutt1/glossier-customer-needs-and-persona
Customer engagement- 
Glossier’s SVP of marketing, Ali Weis has developed Glossier’s marketing team and strategy with one goal in mind: to truly understand and serve their customers. Weis has said, “We were able to test, learn and scale our structure and processes with the customer as our ‘true north’.” Weiss focuses more on customer engagement than traditional bottom-line results. This means that Glossier didn’t go down the traditional route of spending huge amounts on advertising or offering discounts and special promotions. Glossier’s cult-like following is a result of customers feeling like the company was created just for them and, in a way, by them. Because of this, their customers are made to feel like they are co-creators of the brand .Beyond the standard product development and performance measurement teams, Glossier in addition to this have what they call a Customer Experience Team- which embodies the heart and soul of the company. They are the eyes and ears of the brand, constantly collecting feedback from their community of customers and assuming responsibility for creating the best experience possible with the brand. Glossier has made it a top priority to make sure the customer’s voice is always heard and have built a structure that keeps the customer front and centre through the process.
I believe that this is a good approach in helping to build customer morale and engaging closely with your target audience. It makes them feel included and as if the products are made with them in mind- it becomes more personal. I believe that when creating our own brand, me and my group should look further into this and try to use this approach to make our customers feel more connected to our products and to create a better engagement rate with them.
Price 
The method of how you plan to trade your product will also impact your pricing significantly:
Wholesale: You produce a product and sell it to another retailer.
Wholesaler: You buy a product produced by somebody else and sell it.
Direct to customer: You produce a product and sell it directly to your customer without the middle man
A few of the factors affecting price include but not limited to are:
Economic factors & physical limitations.
Value perception.
Price psychology.
Tumblr media
Although you might start as Direct to Customer, your margin should also take into account the potentially to wholesaling your products. Not taking this into consideration could end up with you losing money if you decide to work with a retailer in the future. You tend to make less in your margin by wholesaling, however, having your product in well respected retailers can be a great marketing strategy. Not only could it introduce your product to potential new customers, it will also add value to your product/s. You can look at is as it as a stamp of approval. Large and global retailers have also invested heavily into their online stores and distribution meaning your product will be able to reach new international markets.
Here are some economic factors to consider: 
Retail model. 
Marketing you are selling to.
Cost to develop product. 
Cost to produce product. 
Material costs. 
Packaging costs. 
Taxes / VAT. Exchange rates.  
Shipping costs. 
Marketing costs.  
Store overheads. 
Staffing costs.
Perceived value
Brands tends to adjust pricing which reflects their customers perception of a products value.
Things that can add perceived value to your product include :
Packaging Social media campaign 
Catwalk/fashion show 
Ethical/moral interests of the brand eg. Sustainability  
Materials used 
Ecommerce experience
Instore experience
Press coverage 
Brand heritage 
Celebrity endorsement 
Availability 
Pricing Psychology
Brands use strategies to influence customers to spend money. Through a variety of psychological pricing strategies, stores are specifically designed to encourage you to spend more than you intend using this tactic can help drive sales. These techniques are not limited to retail stores but are also very effective when applied to other industries as well.
Tumblr media
Psychological pricing involves setting prices lower than a whole number. The idea behind psychological pricing is that customers will read the slightly lowered price and treat it lower than the price actually is. An example of psychological pricing is an item that is priced £2.99 but conveyed by the consumer as £2 instead £3, treating the £2.99 as a much lower price than paying £3.00. This is called charm pricing.
 Psychological pricing techniques come in many forms. Four examples of psychological pricing strategies include: 
Artificial Time Constraints
Limited time sales where everything is half price or a quarter of the price for a set amount of time- we can see these tactics in action on sites like boohoo and pretty little thing. This is known as artificial time constraints. Stores place these restrictions on their sales because they act as a catalyst for consumers to spend. If your customers believe that the sales are only temporary, they’re more likely to make their purchases today, rather than next week. This creates a sense of urgency and makes the customer feel as if they have to buy something in fear of missing out on these deals.
Tumblr media
Charm Pricing
Charm pricing is the official name for all the prices ending in 9’s (£1.99) Studies done by researchers at MIT and the University of Chicago have shown that prices ending in ‘9′ creates an increase in customer demand for products.
Tumblr media
Image sourced: https://www.nayax.com/psychological-price/
This phenomena is driven by the fact that we read from left to right, so when you encounter a new price at £1.99, you’ll see the ‘1′ first and perceive the price to be closer to £1.00 than it is to £2.00. In essence, ending your price in a 9 convinces customers that you’re offering a great deal even when in actuality there's not much difference. 
Charm pricing can also have the opposite effect with more higher end products. While prices ending in ‘9′ connote a “value price”, prices ending in ‘0′ suggest a “prestigious price.” So, if you’re selling more valuable items such as a diamond ring it would be wise to end the price in a ‘0′ to give your customers the impression that they’re paying for something that is expensive and worthwhile.
Innumeracy
According to a study done by researches at the University of Minnesota, most people would prefer to spend money on items labeled as ‘ Buy one get one free’ as opposed to ‘50% off two items’ even though the two options are identical (buying two items at 50% off is the same as paying full price for one and getting the second free).
Tumblr media
Image sourced: https://www.natalieoshea.co.uk/buy-one-get-one-free/
This phenomenon is known as innumeracy, where consumers are unable to recognise or understand fundamental math principles that they apply to everyday life. 
Price Appearance
The design of your prices have a tremendous impact on how your customers perceive the value of your products. Many Restaurants for example will most likely be in a much smaller font and won't have the added zeroes at the end of the prices. They’ll be presented as ‘19′ instead of ‘£19.00′.
The reason for this is because longer prices appear to be more expensive for consumers than shortened prices, even if they represent the same number. This is due to the fact that subconsciously, the longer prices take more time to read. This effect is compounded by the use of a ‘£’ sign for prices. Not only does it make the price longer, but it also firmly relates the number to consumers’ wallets, which increases the idea of being more expensive.
Product
It is essential to select the right products for your customer.
When deciding on the type of products you want to sell you must consider:
If your product is timely and relevant?
If your product is responding to a need or a desire?
Why would a customer want to buy this product? Is it desirable?
Always refer back to your customer and your vision and purpose.
There are two routes for sourcing a product:
Product development: This is where you design & manufacture your own product.
Product buying: This is where you buy and sell products that have already been developed by a brand. 
The two most common product types are seasonal and continuity.
Seasonal: Product developed to be sold for a short period of time. 
Continuity: Also known as carry over, this product is sold all year round.
Place
 It is important to consider:
Where you want your brand to be seen.
Where your products will be sold.
What your store (physical or digital) will look and feel like.
How your products will be displayed?
What experience do you want your customers to have?
Every business must consider where they want their customers to interact with their brand. In todays retail environment this does not necessarily mean a physical place. Due to the current pandemic it would be a good idea to consider focusing on selling products mostly online. Although a web store can be much cheaper than a physical shop, you have to be aware that all elements of your online presence should be cohesive and communicate your vision and purpose clearly.
There are still a lot of costs associated with having an effective web store though. You have to make sure that your website is not only visually engaging but that it is updated regularly and that there is enough information about all of your products to assist the customer when purchasing their product.
Due to companies like ASOS and Amazon offering same day or next day delivery for free, expectations of online shopping are increasing and many small brands cannot compete with this.
You also have to take into account how your customers are going to find out about your website and even physical shops will always have a certain amount of foot fall so it is important to consider how you promote your place.
“Generation Z enjoy visiting malls, seeing people, socialising and being with their friends”
Robert Conrad, professor, LIM College
It is important not to assume that all Gen Z customers will only want to shop online as 67% still prefer to shop in stores. However, the way they shop is different from previous generations. Gen Z value technology, and want to push old boundaries.
The current pandemic has shifted many businesses focus when considering Place as global lockdowns are enforced. However, this doesn’t mean that an online shop is enough to keep customers engaged.
Due to the loneliness and digital burnout that consumers are currently facing due to the pandemic, businesses should consider how they can create a “third space” for consumers to foster an idea of community.The pandemic drove a shift from traditional high street shopping to a focus on supporting their local communities and independent businesses.
Tumblr media
Image sourced: https://bcuadvantage.co.uk/grow/ways-to-support-local-business-this-christmas/
Promotion
How are you going to stand out?
While online tools like Instagram, Shopify and Depop have made it easier to start an online business, attracting attention from potential consumers to your products has proven difficult. Acquiring customers in this environment requires a level of creativity and ingenuity as social media is flooded with so many brands both old and new competing with each other for noticeability.
Tumblr media
In order to successfully promote your brand you should have a detailed plan in place which covers all areas in:
PR:
Press Release.
Target publications.
Collaborators.
Influencers.
Events:
Customer events.
Industry events.
Marketing:
Advertising including photoshoots.
Media partners.
Digital marketing:
Website.
Editorial content.
Social Media.
Agree a hashtag.
Multi-media content.
Tumblr media Tumblr media
Images sourced from: https://sendpulse.com/support/glossary/cross-promotion
Brands that have common interests and audiences that aren't competing with each other can cooperate for mutual benefit- this is referred to as cross promotion. This is a great way to promote products as it allows pre existing customers from one brand to be introduced to yours. According to Partnerize’s research, 54% of companies mentioned that partnerships drive more than 20% of total company revenue.
Cross-promotion is a convenient and profitable way to promote products. Because it is quick and effective, cross-promotion became especially popular during the financial crisis. If a partnership is built right, it can help double your audience. Companies exchange knowledge and ideas, give advice, and mention each other in articles on their websites, social media pages, and in emails, all while developing their promotional programs.
The main benefits of cross-promotion include:
An influx of new leads
Increased brand awareness
Increased sales
Audience growth
Lower advertising costs
Improved reputation
Packaging
Product packaging is an important customer touchpoint. Packaging can highlight and determine the value perception of your products to the consumer. Cheap packaging=Cheap product. Packaging can also form a significant element of your cost price which will also affect your retail price.
Environmental factors play a huge role when deciding on how you will package your products. What is the packaging made out of? is it sustainable? Is it cost effective? These are some of the things you have to take into consideration when thinking about how you're going to package your products.Looking at where and who is manufacturing your products can also have a significant impact and is also important to research and look into.
The type of product and method of sales (online or in store) will drive and determine your packaging needs.
Tumblr media
Image sourced from: uk.Mimmosa.com
Brands use packaging families to ensure a consistent look and feel across their products. The colour used throughout your packaging is an important tool in growing brand recognition. 
Luxury brands invest heavily in packaging as part of the sales ritual.
0 notes
themarginalartist · 7 years ago
Text
Listening, Respect, and Conversations
So I know I added my two cents to the post with the TED Talk from @mythmica, but I wanted to delve a little deeper into the subject.
A little background on me first though; I am currently in college, I have a first degree black belt in Tae Kwon Do which I earned at the end of my freshman year in high school, and have been in numerous leadership programs and in leadership roles. Of these programs one was within my dojo where at the time I did not recognize the entire value of what I was doing. Later on in high school I was a member of the National Honors Society, a member of Key Club, and during my final year the President of the Writing Club at my school. (Side note: I didn’t think I was all that great at writing at the time, but the idea from the prompt game actually came from running the Writing Club.)
When I entered college I was invited to join a budding first year leadership program that was being offered, I accepted and have since continued to the final leadership program that they offer. I also was the Treasurer of the Linux user’s group my second year, and the next year became the Vice President. That same year I was VP I also became the treasurer for my residence hall’s hall government and was an RTA, residential technology assistant which is like an RA or residence advisor except that we focus on helping students with their technology both for personal use and school, and I have returned to being an RTA this year. I also for the last three years have held a summer job as a museum tour guide and an on campus job at our campus Apple Store.
Long story short I have spent a long time doing this kind of thing. But what does this all have to do with listening, respect, and conversations? A lot to be quite honest.
Starting with listening. Listening is fundamental to everything you are ever going to do in life. If you can’t listen you aren’t going to hold a job for very long, you won’t have good relationships with family and friends, and you won’t have good relationships with your significant other. Listening is the basis of all interactions. Not talking, obviously if you are listening to someone else then they are talking of course, but for your sake right now we are talking about listening.
So what exactly is listening?
Listening is actively engaging with the other person. Taking what they say to you and internalizing it. Your goal as the listener is to be open and willing to be there, you should have eye contact with the other person, be aware of both your and the other person’s body language, and to not enter in until the other person is done speaking. And it is not an easy task.
When listening make sure that your mind is not wandering to what you would like to add in next, what you are going to have for dinner, or other fears and worries that you have. You should be focused on what they are saying to you.
For example: One of Apple’s training modules requires understanding of what a customer is seeking when purchasing new technology. In order to do this you have to approach the customer, begin a conversation with them and ask them what they are looking for. Say Customer X is looking for a new computer. One of the main questions I ask in the beginning is what Major that person is in, partially due to the store being a campus store. If they answer one way I begin by showing lower end computers at first, but also ask them what hobbies they have. I have to take all of what they answer those questions with and find a computer that would best suite their needs.
But let’s jump out of listening for a second and talk about respect.
Respect means many things to many people, but in this case I am referring to the basic respect that all people are owed. No matter who you are you deserve respect and just as you do you need to show other’s that. Respect is about giving people the space to speak and be open to others.
In regards to the main topic here, respect in this case is allowing people to be open with their ideas. You don’t send anonymous or even direct messages of hatred. You don’t shut other people down. You give people longer than a few minutes to talk to you. And you do not react with emotions.
I have seen numerous interactions online where the person responding views a message in a certain light and responds with their emotions immediately. Emotions are one hundred percent normal, everyone has them, everyone feels them, but it is what you do with them that is key.
One situation I faced in real life as the President of the Writing Club was that we were trying to plan a small fundraiser event. The basic idea was that there were movies and snacks and such. I had spent some time creating a quick basic outline for what the morning advertisement should say, only to find that the club secretary had gone ahead and sent in an advertisement which I had not approved and had found many issues with. I of course was rather angered by this. However I calmed down and thought it through, so that when I approached them I could state my reasoning behind why I was upset with them in regards to that and how we could move ahead in the future.
The main point from that scenario that I would like to state here is that, yes you are going to be angry and upset by other’s actions or words at some point. But that doesn’t mean that you don’t treat them any differently than if you weren’t upset by them. You need to be aware that your reactions do have a huge affect on how others will view you in the future. It may be the difference between getting that promotion at your place of work or continuing forward in a relationship.
And finally let’s blend both listening and respect into the final topic, conversations.
So what is a conversation? One version is when you are talking with someone face to face, another is on the phone, another is via email, then there are here on tumblr asks, and finally direct messaging (this encompasses direct messages via tumblr, other chat services, and texting).
Let’s start with the traditional idea of a conversation being that you are talking with someone face to face. In this case both of you have sat down somewhere and are discussing something. In a respectful conversation, both people have their phones put away, they are making eye contact, they are listening to what each person has to say and how they say it before jumping in and discussing what they want to say which still follows the current topic flow of the conversation. Most of the time I don’t see that from others, of course I am not a perfect example all the time either, but it is very common that the other person is multitasking in some aspect.
So what about online? An online conversation is still a conversation. But it is also difficult sometimes, you can’t hear the other person’s tone, you can’t see their face, you can’t watch their body language. It is a very difficult thing to fully get a grasp on. The biggest thing to remember in the online world is to read carefully, a lot of times understanding the way someone writes really helps in guessing at how they will interact with you.
But online conversations, especially with someone new are incredibly difficult to start, not just because of your nerves or fears for talking to them, but also how you start those conversations. Too many times I’ve seen an ask that someone answers harshly or a person attempting to use direct messages to engage the other user. I also have seen a lot of pretending to be something you aren’t, either by stating some sort of lie, or just how someone messages. There is a difference between confidence and the fake it until you make it mentality and being false with who you are as a person.
Confidence is not fake. Can you fake it, yes easily. But it can be off putting for the person on the other side of the screen if done wrong. Saying that you are a bit nervous is fine, asking a question or making a comment is fine, but as soon as you dip into the realm of being ‘buddy-buddy’ you are just going to drive people away. You have to remember that everyone on the internet is a stranger. You are talking to an individual that you have never met in real life, that you don’t know very much about, and that has different levels of comfort than you.
I have had a number of messages where I was quite shocked that a person would be that comfortable with how they spoke to me, especially when I have absolutely no idea who they are! I am also always off put by someone using terms of endearment when I have no relationship with them (these are terms like sweetie, darling, honey, sugar), and while I do recognize that that is just how some people speak and that I even do that myself, it is something that you should reserve for those you have made a connection with.
On that same hand of overfamiliarity, and the TED Talk mentions this as one of the points. Don’t ever share your darkest secrets. One of the most off putting things is when people come and just, start talking about how their family member passed away, how their school work is the hardest most terrible thing, how they had a terrible day at work and everything, with no warning just smack dab in the middle of you going about your day. Medical conditions fall under this category as well, which I’m just going to throw in, if you were eating lunch and someone started to talk about the nitty gritty details of their last surgery and such you’d most likely feel nauseous right? Yeah, don’t share the details, state the general, like oh I just got my wisdom teeth removed is fine but telling us about how much blood there was is not.
Your personal issues should remain private until both parties have built up that comfort level with each other, and even then they probably should not be shared heavily. And that comfort level takes a very, very, very long time to build up, you can’t just message someone once and expect friendship. You can’t say that oh we like the same things we are now best friends. You can’t expect that the other person feels the same way about you that you do about them.
My final example of things that happened in my real life that I’ll share was my freshman year I had a roommate. At first things were fine, we hung out during the move in week, went to see movies and do other activities on campus and stuff, everything was going smoothly. Then the school year began. We were in entirely different majors, I can’t recall what hers was, and were entirely opposite personalities. We fought a lot. Almost every week there would be some sort of argument. We didn’t meet with the Residence Hall Director until half way through the second semester, and even then it was only because the people that shared our suite told the RA which went to the RED that we were having these issues. Truthfully we were both at fault, I was just as stubborn as she was, and as we were talking with the RED it came out that she expected that we would become best friends, because that is what happens in the movies right, you become besties with your roommate and call them up and talk all the time. But the main reason we kept arguing is because we wouldn’t talk to each other. I attempted multiple times, told her to write her thoughts if she couldn’t say them to me and so on. But I was also at fault, I didn’t want to listen to her at the time because of everything. In the end we were separated, a few other issues came up for me later, but I won’t say anymore on it.
It is so incredibly important to talk to people, to listen to them, to show them respect. Both in the real world and online. It is such an incredibly important and necessary skill. You have to be able to do it in order to get anywhere that you want to go in life.
Thank you for spending the time reading this. I know that this was a ridiculously large thing to get through. But thank you.
34 notes · View notes
suzanneshannon · 5 years ago
Text
What I Like About Craft CMS
Looking at the CMS scene today, there are upwards of 150 options to choose from — and that’s not including whatever home-grown custom alternatives people might be running. The term “Content Management System” is broad and most site builders fit into the CMS model. Craft CMS, a relatively new choice in this field (launched in 2013) stands out to me.
My team and I have been using Craft CMS for the past two years to develop and maintain a couple of websites. I would like to share my experience using this system with you.
Note that this review is focused on our experience with using Craft and as such, no attempt has been made to compare it to other available options. For us, using Craft has been a very positive experience and we leave it up to you, the reader, to compare it to other experiences that you may have had.
First, a quick introduction to Craft
Craft is the creation of Pixel & Tonic, a small software development company based out of Oregon. Founded by Brandon Kelly, known for premium ExpressionEngine add-ons. While developing some of the most used add-ons, Pixel & Tonic set out to build their own CMS, known as "Blocks." This was all the way in 2010, during its development the name was changed to Craft CMS.
Looking at the market we can see that Craft is well adopted. At the time of writing this article, there are around ~70 000 websites using Craft.
Tumblr media
Showing market growth over the five year period.
Craft was set out to make life enjoyable for developers and content managers. In 2015, Craft proved this by winning the Best CMS for Developers award by CMSCritics. Over the years, Craft has won multiple awards that prove that Craft is on the right path.
When I am asked where Craft fits in the overall CMS landscape, I say it's geared toward small-to-medium-sized businesses where there is a staff of content managers that don't require a completely custom solution.
At the heart of things, Craft is a CMS in the same vein as WordPress and other traditional offerings — just with a different flavor and approach to content management that makes it stand out from others, which is what we're covering next.
Craft's requirements
Server requirements for a Craft setup are simple and standard. Craft requires the following:
PHP 7.0+
MySQL 5.5+ with InnoDB, MariaDB 5.5+, or PostgreSQL 9.5+
At least 256MB of memory allocated to PHP
At least 200MB of free disk space
Out of the box, you can get Craft up and running fast. You don’t need an extensive PHP or Database background to get started. Hell, you can get away with little-to-no PHP knowledge at all. That makes both the barrier to entry and the time from installation to development extremely small.
It’s both simple and complex at the same time
Craft is unique in that it is both a simple and a complex CMS.
You can use Craft to design and develop complex sites that and are built with and rely heavily on PHP, databases, and query optimizations. 
However, you can also use Craft to design and develop simple sites where you do none of those things.
This was one of the main selling points for me. It’s simple to get up and going with very little, but if you need to do something more complex, you can. And it never feels like you are “hacking” it do anything it wasn’t meant to.
Craft abstracted all the field creation and setup to the admin panel. You only need to point it to the right Twig and then use the fields you connected. Furthermore, it provides localization and multi-site management out of the box with no need for plugins. This is essentially what makes it different from other content management systems. You can create the structure, fields and all the forms without ever touching any code.
Tumblr media
Some CMSs like to make a lot of decisions for you and sometimes that leads to unnecessary bloat. Front- and back-end performance is super important to me and, as such, I appreciate that Craft doesn’t leave a lot of that up to me, should I need it. It provides a full customization experience that supports beginners right out of the box, but doesn’t constrain folks at the professional level.
Craft’s templating engine
Some developers are not keen on this, but Craft uses Twig as its template engine. The word “use” should be emphasized as a requirement, as there is no option of writing raw PHP anywhere inside the template. Here are my thoughts on that:
It is standardized in a way that, when I look at my team's Pull Requests, I don’t expect to see 100 lines of custom PHP that make no sense. I only see the code related to templating.
Twig is already powerful enough that it will cover nearly all use cases while being extensible for anything else.
Let’s say you’re not digging Twig or you would rather use one of the latest technologies (hello static site generators!). Craft’s templating system isn’t the only way to get content out of Craft. As of Craft 3.3, it provides a “headless” mode and GraphQL built-in with Craft's Pro features. That means that you can use tools like Gatsby or Gridsome to build static sites with the comfort of Craft CMS. That brings Craft in line with the like of WordPress that provides its own REST API for fetching content to use somewhere else.
Tumblr media
There's a fully functional GraphQL editor built right inside the Craft UI.
Speaking of REST, there is even an option for that in Craft if, say, you are not a fan of GraphQL. The Element API is a REST read-only API that is available via the first-party Element API plugin. Again, Craft comes with exactly what you need at a minimum and can be extended to do more.
Craft’s extensibility
This brings me to my next point: Craft CMS is super extensible. It is built on the Yii Framework, a well-known PHP framework that is robust and fast. This is important, as all the extensibility is either through modules or plugins written in Yii and Craft API. Modules are a concept passed down from Yii modules and they provide a way to extend core functionality without changing the source. On the other hand, plugins are a Craft concept and they do the same thing as modules, but can be installed, disabled and removed. If you would like to read more about this, you can find it in Craft’s docs.
Both modules and plugins have full access to Craft and Yii’s API. This is a huge bonus, as you can benefit from Yii’s community and documentation. Once you get used to Yii, writing plugins is easy and enjoyable. My team has built multiple custom plugins and modules over the last two years, like a Pardot form integration, a Google reCAPTCHA integration, custom search behavior, and others.  Essentially, the sky is the limit. 
Writing plugins and modules is covered in the docs but I think this is where Craft's system has room to grow. I would recommend opening a well-known plugin on GitHub to get a sense of how it’s done because I’ve found that to be much more helpful than the docs.
Initially, you may find this aspect of the system difficult, but once you understand the structure, it does get easier, because the code structure essentially consists of models, views, and controllers. It is like building a small MVC app inside your CMS. Here is an example of a plugin structure I’ve worked with:
. ├── assetbundles ├── controllers ├── migrations ├── models ├── records ├── services ├── templates │ ├── _layouts │ └── _macros ├── translations │ └── en ├── variables ├── icon-mask.svg ├── icon.svg └── Plugin.php
If you don’t feel like writing PHP and tinkering with Yii/Craft, you can always download plugins from the official Craft plugin store. There is a variety of plugins, from image to building on top of the WYSIWYG editor. One of many things that Craft got right is that you can try paid plugins in development mode as much as you like rather than having to first make a purchase.
Tumblr media
The Craft plugins screen.
During the course of two years, we have tried multiple plugins, there are a few that I not only recommend, but have found myself using for almost every project.
ImageOptimize - This is a must for performance enthusiasts as it provides a way to automatically transform uploaded images to responsive images with compression and convert to more modern formats.
Navigation - Craft doesn’t come with navigation management built right in, even though you technically can do it with custom fields. But Verbb did an awesome job with this simple plugin and for us it’s one of the very first plugins we reach for on any given project.
Seomatic - This is what is the Yoast SEO plugin is to WordPress: an out of the box solution for all your SEO needs.
Redactor - This is a must and should be included in every project. Craft doesn’t come with a WYSIWYG editor out of the box but, with Redactor, you get a Redactor field that includes one.
Super Table - This powerful plugin gives you an option to create repeatable fields. You can use built-in Craft field types to create a structure (table) and the content manager creates rows of content. It reminds me of ACF Repeater for WordPress.
Craft’s author experience
While we’ve covered the development experience so far, the thing that Craft got extremely right — to the point of blowing other CMSs out of the water, in my view — is the author's experience. A CMS can do all kinds of wonderful things, but it has to be nice to write in at the end of the day.
Tumblr media
Craft provides a straightforward set of options to configure the site right in the admin.
The whole concept of the CMS is that it is built with two simple things; Fields and Sections, where fields are added to sections and entries are created by content managers.
Tumblr media
Craft's default post editor is simple and geared toward blog posts. Need more fields or sections? Those are available to configure in the site settings, making for a more open-ended tool for any type of content publishing.
One of the neatest author features is version control. "Wait, what?" you ask. Yes, all content is version controlled in a way that lets authors track changes and roll back to previous versions for any reason at all.
Tumblr media
Craft shows revisions for each entry.
At any point in time, you can go back to any revision and use is as a current one. You don't know how much you need this feature until you've tried it. For me, it brings a sense of security that you can't lose someone's edit or changes, same a with Git and developers.
The fun doesn't stop here because Craft nailed one of the hardest things (in my opinion) about content management and that is localization. People still find this hard in 2020 and usually give up because it is both difficult to implement and properly present to authors in the UI.
Tumblr media
You can create as many sites as you want.
Oh, and you can host multiple websites in a single Craft 3 instance. You can define one or more sites at different domains, different versions of the entry content and using a different set of templates. Like with everything in Craft, it is made so simple and open-ended (in a good way) that it is up to you what the other sites are going to be. You can create a site with the same language but different content or create a site with another language, solving the localization problem.
All the features above are already built-in inside Craft which for me is a must for a good author experience. As soon as you start patching the essential author functionality with plugins, great author experience is lost. This is because usually when you want to add functionality there are multiple plugins (ways) to do it, which aids a different author experience on the same platform but different instances.
Craft’s community
It’s worth underscoring the importance of having a community of people you can to turn to. To some degree, you’re probably reading this post because you enjoy learning from others in the development community. It’ no difference with CMSs and Craft has an awesome community of developers.
Tumblr media
Craft's Stack Exchange is full of questions and answers, but a lot of the information needs to be updated to reflect Craft 3.
At the same time, the community is still small (compared to, say, WordPress) and doesn’t have a long track record — though there are many folks in the community who have been around quite a while having come from ExpressionEngine.  It’s not just because Craft itself is relatively new to the market. It’s also because not everyone posts on the Craft CMS Stack Exchange to the extent thatmany of the older answers haven’t even been updated for Craft 3. You’ll actually find most of the community hanging out on Discord, where even the creators of Craft, Pixel & Tonic, are active and willing to answer questions. It is also very helpful when you see Craft core members and big plugin creators, like Andrew from nystudio107 (shout out to a great performance freak), are there to assist almost 24/7.
Tumblr media
Craft's discord has always someone to help you. Even the core team responds often.
One thing I also want to touch on is the limited learning resources available but, then again, you hardly need them. As I said earlier, the combination of Craft and Twig is simple enough that you won’t need a full course on how to build a blog.
Craft's conference, Dot All, is a great resource all its own. Chris attended last year with a great presentation, which is available to the public.
And, lastly, Craft uses and enforces open source. For me, open source is always a good thing because you expose your code to more people (developers). Craft did this right. The whole platform and also plugins are open source.
Pricing
This is the elephant in the room because there are mixed feelings about charging for content management systems. And yes, Craft has a simple pricing model: 
It’s free for a single user account, small website.
It’s $299 per project for the first year of updates. It’s only $59 each year after that, but they don't force you to pay for updates and you can enable license updates for an additional year at any time at the same price.
Tumblr media
Craft's Solo version is totally capable of meeting the needs of many websites, but the paid Pro option is a cost-effective upgrade for advanced features and use cases.
I consider this pricing model fair and not particularly expensive — at least to the point of being prohibitive. Craft offers a free license for a small website you can build for a friend or a family member. On the other hand, Craft is more of a professional platform that is used to build mid-size business websites and as such their license cost is negligible. In most cases, developers (or agencies) will eat up the initial cost so that clients don’t have to worry about this pricing.
Oh, and kudos to Craft for providing an option to try the Pro version for free on a local domain. This also applies to all plugins.
Conclusion
To conclude, I would like to thank Craft CMS and the Pixel & Tonic team for an awesome and fun ride. Craft has satisfied almost all our needs and we will continue to use it for future projects. It’s flexible to fit each project and feel like CMS built for that use case.
It boils down Craft for me is a content management framework. Out of the box, it is nothing more than nuts and bolts that needs to be assembled to the user's needs. This is the thing that makes Craft stand out and why it provides both great author and developer experience.
As you saw in the licensing model it is free for a single user, try it out and leave your feedback in the comments.
The post What I Like About Craft CMS appeared first on CSS-Tricks.
What I Like About Craft CMS published first on https://deskbysnafu.tumblr.com/
0 notes
manektechworld · 5 years ago
Text
How to Speed Up Mobile App Development Process and Save Time
Needless to say, having an enterprise mobile app is one of the best strategies to acquire more customers. For any organization, the major goal is to stay ahead in the competition, expand customer base and generate tremendous revenue. The businesses must plan their application development strategies in order to attain these goals.
The mobile app development is a pretty expensive and intensive task. Considering the fierce competition, the first-to-market app can make all the difference. However, it gets very challenging to develop an app that is not only fully functional, but also doesn’t break your bank. One good way to keep your mobile application development budget intact is to reduce the development time. Since time is money, the longer you take to develop the app, the more expensive it will get. In this post, we will discuss some exceptional time saving tips that will make the development process much easier and give you competitive advantages.
1 Understand Your Audience
Before commencing mobile app development, try to identify potential customers of your application in the target market, such as your customer interest, their needs, why would they use it, how your users will be benefitted and whether there are enough users to purchase your app. Considering all these questions will make sure you are not targeting wrong people and your time and resources are not wasted. Clarity of such concerns will not only save your time, but amplify your success.
2 Consider Cross-platform Development
One big question that all enterprises struggle with is what platform do I choose for my mobile app? If you are looking to target the audience of either iOS or Android users, native platform may serve your purpose. But, if you are looking to develop an app that supports multiple platforms, then you should consider cross-platform development. With cross-platform development, you can significantly reduce the time as you can create a single codebase that will run flawlessly across different operating systems.
3 Opt for Wireframe Designing
Once your project requirements are defined, don’t just start developing your app. Produce a blueprint of the application that represents its design, architecture and structure. A wireframe is an essential part of the mobile app development process, since it allows mobile app developers to get a better idea of the required features. Creating a Wireframe ensures every member of the team is progressing simultaneously in the app development life cycle.
4 Make Use of Ready-made Components
Presently, there are so many websites that offer ready-made components, modules, templates, libraries and even code that you can directly use in your application. Most of them are available at free of cost, while premium assets may be available at a small cost. Using reliable third-party tools and app elements like graphics, music, animations and so on will help you reduce development time as well as deliver high-quality application.
5 Go for Automated Testing
If you want to deliver high quality and secure mobile app, then you will need to perform rigorous app testing. App testing can be very time consuming and tedious, but when you opt for automated testing, it will considerably reduce the development cycle. Enterprises can run several tests simultaneously in the same amount of time, which makes testing faster and easier. Implementation of automated testing will save a significant amount of time and improves security and quality of the app as well.  
6 Regular Code Check and Quality Assurance
It is highly recommended that you run code reviews at the regular time intervals rather than doing it after the project completion. According to a survey conducted by SmartBear, an organization that did regular code check saved $150 that they would have spent fixing bugs otherwise. By examining the quality of code when every milestone is accomplished, you can easily resolve the errors as they arise. The issues may get heavily ingrained in your application if you wait for the project to reach the end of the development cycle.
7 Outsource to Experts
If you are looking for complex and feature-rich applications, it is suggested that you outsource to expert mobile app development company. The company, like ManekTech, that has worked for numerous industry verticals, and has wide experience in leading systems, such as Android as well as iOS, can design and implement innovative features of your industry domain. Moreover, outsourcing to a reputed company will also give you access to a large pool of talents, so you can focus on your core business operations.
Conclusion
If you follow above-mentioned practices, it will definitely help you slash down mobile app development time. ManekTech has acquired immense experience in delivering best in class applications in a faster and cheaper way. Choose us and we will help you improve time-to-market, better customer engagement and ultimately more.
0 notes
sevralships · 7 years ago
Text
“Worlds Apart”
(So, the other day I watched ‘Blendin’s Game’. At one point, Dipper has the throwaway comment “No one should be alone on their birthday.” The line is made in reference to Soos, but Stan is standing right there when it’s spoken and BOOM just like that, my brain started cooking up some Stangst).
It’s been a few months since Ford was accidentally sucked into the portal. Ford tries to avoid being captured in a dimension far from home, while Stan closes up the new and flourishing Murder Hut. Angst, good grief, so much angst. SFW. 4,429 words.
Fic below cut! Enjoy!
“Thank you for exploring the mysteries of the Murder Hut!” Stan said jovially, as he ushered the last patrons out of the gift shop, “And thank you for buying our over-priced souvenirs! Don’t forget to tell your friends and remember, no refunds!” The couple chuckled as they got into their station wagon, as if he were joking about the no refund policy. Stan watched the car pull out, leaving tire treads in the torn up lawn. As the tail lights disappeared from view, he flipped the sign on the door so that the side that read CLOSED faced outward, resolutely turning the deadbolt.
Stanley turned around and appraised the gift shop. There was merchandise on the shelves that needed to be restocked or tidied, but apart from that he thought it had really come together. It almost looked at if the racks of punny tee shirts and shelves of tchotchkes were the use for which this room had always been intended. It had been some kind of storage room before, and alone he had hauled all of the mysterious sciencey boxes and crates to the lab below or to the junkyard. It wasn’t the first time Stan considered the irony that the weirdness he was peddling wasn’t half as strange as whatever dumb research had been going on here before.
He sighed heavily, and grabbed dad’s old fez off his head, placing it on the counter with some disdain. Stan glared at the symbol of the Holy Mackerel for a moment, absentmindedly running his hand through his hat-flattened hair. Whaddya think of my latest scam, pops? he asked in his head. Sure, he’d probably never become a millionaire at this gig, but people were forking over the dough like you wouldn’t believe. If he’d only known sooner what a natural he was at the sideshow business, he never would have wasted all that time on Stanco Enterprises.
So, yeah, he was making decent money, but it wasn’t like that would matter to dad at this point. Even if he could present the old man with millions, would that explain away the car crash in which he’d ‘died’? Or the reason no one had called him by the name ‘Stanley’ in months? Or why the real Stanford was nowhere to be found?
“The hell with you, old man…” Stan muttered dismissively, flicking the fez and watching it topple over.
-
Well, then, onwards and upwards, Ford thought bitterly to himself as he awkwardly clambered up the ladder of some sort of fire escape. The beings in this dimension had six limbs and as a result, their gait was quite different from that of a human, and the rungs were spaced impractically for a four-limbed biped such as himself. His twelve fingers had made him a freak in his own dimension, and they were no advantage to him here either.
He swiped stinging sweat out of his eyes with one of the aforementioned abnormal hands and kept climbing. He huffed and puffed as he went, cursing the abysmal heat of this dimension. He wished he could ditch his pack, the extra exertion of carrying it contributing to his unreasonably high internal body temperature, but he didn’t dare risk it. Everything he owned was on his back, and some of his belongings had been hard won. Most expendable were the outer layers of clothing he had discarded in an effort to survive the temperature of this world without heat stroke, but he didn’t even dare toss those. For all he knew, the next dimension he found himself in might very well be a frozen tundra, and he would be damned if he was felled by something as avoidable as hypothermia.
“There it is!” A voice behind him called, modulated strangely by his dimensional translator, “The interloper must not get away!”
Stanford cursed under his labored breath, forcing his burning limbs to move faster. Interloper? He didn’t know what he had done to get on these beings’ bad side, but they certainly didn’t sound happy with him. He racked his mind for some perceived infraction. The two chasing him now were the same that had given him food and shelter, and he had no idea what had precipitated their change of heart. What custom had he failed to follow? What offense had he committed? Nothing came to mind, and as he reached the rooftop, he hoped he was overlooking some innocent mistake. If not, there could only be one other explanation, he thought grimly, they struck a deal with someone who made my capture worth their while.
-
Stan’s grumbling stomach led him into the kitchen. He flipped the switch and the exposed bulb overhead came to life, bathing the room in light. The wood-burning stove was cold, useful as it had been in the winter and spring, it was unnecessary in the humid heat of Oregon summer. The climate reminded him of his childhood summers in New Jersey, but it clammier here in the western mountains. He opened the fridge, appreciating the cool air that gushed out at him as he looked over its meager contents. He grabbed a couple things before closing the door and setting about making himself a bologna sandwich just as he had the last three nights.
Stan’s evenings had been too full to devote too much time to making dinner. Instead, his nights were spent wishing he had paid attention to his science classes in high school instead of cheating off of Ford’s work all the time. He wouldn’t have been West Coast Tech material even if he had studied his tail off, but some of that nerd stuff might have come in handy now. Ford’s portal was undeniably well beyond anything the brothers might have learned in their bare minimum public school curriculum, but at least Stan wouldn’t have started right at square one.
It’s useless, he thought to himself, I’ll never be able to get him back. The bite of sandwich Stan was chewing tasted ashen in his mouth. No! He told himself stubbornly, his free hand curling into a determined fist, Stan Pines doesn’t give up that easy! He felt a pang of guilt for even considering it. Sure, it might be impossible, but he’d be damned if that meant he wasn’t going to give it his best shot.
Would Ford do the same for me? Stan couldn’t help wondering, not for the first time. He had never stopped considering Ford his brother and best friend, even as a decade of silence and estrangement passed between them. It didn’t matter. As far as he was concerned, it would take more than ten years to come between twins. Apparently, it would take more than the mysterious gulf of time and space between them too. But would Stanford feel the same way? When he’d first brought Stan here, it wasn’t as a brother. It wasn’t as a friend. It was as a pawn, a partner at best. If he didn’t want anything to do with me then, Stan thought, his shoulders slumping with blame, why would he want anything to do with me now?
-
Finally on the roof, Ford desperately ducked behind a large funnel-like structure to hide. It very seldom rained here, he had been informed, and it was crucial for the six-limbed humanoids here to gather as much of the rainwater as they possibly could. Grateful for the slightly less suffocating heat in the shade of the funnel, Ford dug into the satchel at his waist for the device that allowed him to move between dimensions at will. It was not of his making, but rather a very important acquisition he had made shortly after escaping the Nightmare Realm. Hopefully he’d get a chance some time soon to tinker with the thing and make it more practical. Had he designed such a device, he would surely have given the user the power to choose which dimension they would be transported to. Whatever lunatic was responsible for the design of this device had thought to include all sorts of features, a day-counter, an external thermometer, something like a compass, but hadn’t thought to give the user any way of controlling or predicting where they ended up. It was a gamble of which his pragmatic mind was not too fond.
Holding the device in his hands now, Ford was perturbed to find that the thermometer on it read a higher temperature than he’d ever seen on it. He wasn’t sure what unit it measured in, not celsius or fahrenheit or even kelvin, but he’d gotten a rough idea of the conversion rate from observation and the number he saw before him did nothing to ease his mind. Don’t be foolish, Stanford, he scolded himself, you did not need a thermometer reading to ascertain that this dimension is unbearably hot.
Ford’s unease doubled however, when his attempt to leave this god-forsaken dimension was unsuccessful. Instead of doing as he had told it to do, the device gave him some sort of error message. He was still deciphering the language the device had been programmed to display, but he knew enough to figure out that the device was too overheated to function. He muttered a curse to himself as he heard his pursuers reach the roof.
“Where did it go?” One of them asked, “Did it go down the other side?”
“I still smell it,” the other replied plainly, “It was complaining of the heat, maybe its weak body gave out.”
“You’d better hope not,” the first creature replied, “Not if you want One-Eye to keep up its end of the wager, at least.”
“Of course, I do,” came the reply, “You check that side of the roof, I’ll check around the rain-catcher.”
So it is as I feared, Ford thought grimly, blowing on the overheated device in his hand in a vain attempt to cool it down, He’s found me again. Who knows what he promised these fools in exchange for my capture. He could hear the four feet of one of his pursuers grow near, and slipped the device back into his satchel and clenched his fists. All my education and sometimes I swear those boxing lessons are the only thing on which I can rely.
-
With the hunger in his belly acceptably sated, Stanley set to work getting the gift shop ready for the following day. It had been a decent day for sales. He hadn’t realized the summer drew so many tourists to Roadkill County, Oregon but he was more than happy to clean out their wallets for them. He tried to quiet his worries as he set about replacing shirts on emptied hangers, filling in gaps on the shelves, adding more Murder Hut pens and bumper stickers to the trays by the cash register. It wasn’t working.
This place was strange. It was the key to the Murder Hut’s success. Despite the offbeat wackiness of the fake attractions he had been fabricating, it was the pervasive weirdness of this place that really sold it. None of the outlandish attractions he was showing were as bizarre as the real things he’d seen around Gravity Falls. It had seemed like a nondescript enough place when first he had arrived this past winter, but his first impression had been wrong. He could have sworn he’d seen small bearded men scurrying across the forest floor, had seen butterflies that upon closer inspection sure looked like some sort of pixies or fairies.
His nerdy brother had always been fascinated with oddities, had always been drawn to the strange creatures and monsters of science fiction, fantasy, and folklore. It made sense that Poindexter had chosen the freakiest town in the country to throw away his grant money. Some things about his house, however, didn’t seem to add up. His eyes traveled on their own to the rug beneath his feet. He’d moved it in here to give the gift shop a more welcoming, kitschy vibe, on account of the mysterious one-eyed triangle design. He’d only ever seen something like the design on dollar bills, but doubted Ford’s otherwise shabby, unfinished home drew any decor inspiration from money. It was a motif he had found all over the house, windows, paintings, glass prisms, everywhere he looked he seemed to find more triangles. He remembered Ford excelling at and enjoying trigonometry in high school, but even Ford didn’t love math enough to let it dictate how he decorated his home. Most of the triangles had eyes, never more than one, giving Stan the skin-crawly sense that he was being watched.
Well, I’ll just have to ask him, Stan decided, using his foot to smooth a wrinkle in the eerie rug, I’m sure he has some dumb explanation for the triangle obsession, and just as soon as I get him back, I’ll find out what it is.
-
Without hesitation, Ford threw a punch, his fist connecting loudly with the face of one of the beings that had been following him. His knuckles landed square against the creature’s nose and he felt the brittle exoskeleton fracture. An instant later he was running across the rooftop, towards the edge. It was only a few feet between this building and the next, and without allowing himself time to hesitate he leapt, easily clearing the gap. It was not a maneuver that would come easily to the scuttle-y movements of this dimensions inhabitants, and he wanted to put as much distance between them and himself as possible.
The sky was a strange wash of greens and purples, something he had come to recognize as an equivalent to the vibrant sunsets in dimension 46’/. He was outside the settlement where his two betrayers had taken him in, and he knew they wouldn’t dare pass into ‘the wilds’ as they called them, especially not past nightfall. The climate here was like that of a very extreme earthly desert; once the sun was below the horizon the temperature would drop drastically. Had Ford been planning to spend another night here, he would be worried for his life. Between the cold and the mysterious beasts that inhabited the wilds, it was not a place he would like to try and make camp. However, he only intended to stay long enough to get his overheated device back in working order so he could get the hell out of dodge.
Stanford did not slow down until he approached a strange cluster of plants, large as the maples and pines of Oregon but more like cacti in structure. The sandy ground would have been shaded here for some time already and with the sky growing dark the temperature would be plummeting soon. He sat down in the sand and placed the device on the ground in front of him, impatiently checking the temperature every few seconds.
He nearly fell over with shock at the sight of Stanley on the small glossy screen, only to realize with a start that it was his own reflection he was seeing. He touched the fingertips of one six-fingered hand to the scruffy facial hair on his chin and jaw, hiding the cleft chin that was easiest distinguishing mark to tell the twins apart. He wasn’t wearing his glasses, having been too worried he would lose or break the precious tool in the chase, and he looked scruffy and wild-eyed, with a few scuffs and scrapes on his face. It was startling to realize the resemblance when it was normally like night and day for the twins to tell themselves apart in photographs. He sighed, and realized to his own surprise that he was actually disappointed that he couldn’t see Stanley. This is all his fault, he reminded himself stubbornly, pushing away the thought before it could distract him too much, If only he’d listened to me, instead of letting his emotions run rampant yet again…
Finally the device in his hand was back to a functional temperature, and not a moment too soon as the cold air was making goosebumps rise on his sweaty skin. It’s no use thinking about Stanley, he told himself sternly, It doesn’t matter where the blame may lie, you’re never going to see him again. He’s not the one you should concern yourself with. The device began whirring in his hands, sending small surges of power through his fingers, feeling almost like static shocks. As the ground seemed to fall out from under him, and he was pulled into the tight vacuum of teleportation, Ford reminded himself obstinately, Bill Cipher. It’s not my reckless brother, but my deceitful Muse who is to blame.
-
Stan gingerly rolled the snack cart aside, revealing the door down to the lab in the basement. He reminded himself again to find something better to cover the door. What lay beneath the house was too important, and too dangerous, to risk some dumb tourist wandering down there by mistake. He moved down the dim stairs carefully, reluctantly even. He didn’t really want to go down there, he had to.
He emerged into the lab and once again the enormity of his mistakes weighed heavily on his shoulders. All of Ford’s machines, many of which he did not know the function of, hummed and beeped along, absolutely indifferent to their creator’s absence. He couldn’t have disagreed more. This place, more than anywhere else in Gravity Falls, more than anywhere else in the Murder Hut, was Ford. It was of Ford, and for Ford, and every panel, lever, monitor, and jarred specimen seemed to bear Ford’s name.
Guilt gnawed in Stanley’s gut. I never meant for any of this to happen, he thought, desperate for some kind of forgiveness. But what sort of forgiveness could he find? Not from his parents, who thought him dead. Not from Ford, who was worlds away if he was even still alive. Certainly not from himself. There was no way he could forgive himself until Ford was home safely, but it was hard to believe in the probability of that. Stan’s jaw tightened as he gazed through the glass at the mysterious portal, dormant and showing no signs of ever having come alive.
How many times had he replayed that fateful day in his head in the past few months? He was dying to make more sense of it, but it had just all happened so fast. Ford had seemed so different from the moment Stan had arrived and in hindsight, that should have made him behave more cautiously. Ma always said hindsight is 20/20, Stan thought absently, and tried to ignore the stab of loneliness for his mother he felt in his chest. Grow up, he scolded himself at one, what grown man wishes for his mommy?
Even if there were some way he could reach out to his parents, there was nothing they could do. This was his mistake, his fault, his crime. And only he could fix it.
-
The intense pressure lifted and Stanford felt solid ground beneath his feet. His stomach heaved but he managed to keep from vomiting. It was nighttime in this dimension as well and quite dark, although the sky was littered with an unbelievable amount of stars. He crouched down, touching the ground tentatively with one hand, and was relieved to find soft grass beneath him. He lied down immediately, eager to rest after yet another day of running and betrayal. An indignant twinge ran through him, Have I not had a lifetime’s worth of running and betrayal already?
Ford drew a deep breath in through his nose and slowly let it out his mouth. He stretched out on the soft ground and looked up at the sea of stars, telling himself that he would figure out where he was come morning. No sooner had he shut his eyes than Bill was there, applauding patronizingly, “BRAVO, FORDSY,” he said, his eye smiling smugly, “QUITE  A SHOW YOU PUT ON TODAY!”
“This is a dream,” Ford said stubbornly, turning his back on Bill and trying to ignore the dim shadow of Glass Shard Beach around them.
Bill was instantly in front of him, his small black hands at his sides as if on his hips, “OF COURSE IT IS, THAT’S NO EXCUSE TO BE RUDE.”
“You have no authority to be giving me lessons in decorum,” Ford sneered. He jabbed his chest with a finger, “I escaped your goons.”
Bill shrugged concedingly, “PITY FOR THEM,” he said off-hand, “BREAKING A DEAL WITH ME TENDS TO BE FATAL.”
“Well, it would appear that isn’t always the case,” Ford said, determined not to let Bill bully him.
“OH, I DON’T MEAN YOU, FORDSY,” Bill corrected, practically batting his eyelashes, “YOU STILL HAVE A PART TO PLAY IN MY PLANS.”
“You’ll have to catch me first.” Ford snarled challengingly, only to garner a bone-chilling cackle from his ex-Muse.
“YOU CAN’T RUN FOREVER, FORDSY,” Bill said, his voice almost genial.
“I’m not scared of you, Bill!” Ford insisted, shutting his eyes tight and willing the dream to end.
Bill laughed again, “C’MON, PAL, WE BOTH KNOW YOU’RE SMARTER THAN THAT!”
Ford opened his eyes, a fiery retort ready to leap from his tongue, only to find a serene starry sky before him instead of his traitorous foe. He hoped Bill was bluffing about killing the beings from that desert dimension that had taken him in and then betrayed him. Yes, they had sold him out to Bill, but who knew what he had promised them. In their world, even water was a commodity, no doubt Bill had presented a reward they couldn’t turn down. Bill cannot win, he told himself for the umpteenth time, pushing away his pity for the two new casualties, Destroying him may very well be impossible, but I’d sooner die trying than be a pawn to him ever again.
He sighed heavily and sat up, grabbing his inter-dimensional teleportation device, hoping to distract himself trying to learn something about this new dimension. He observed the temperature, the compass reading, other various readings about the atmosphere. His eye was drawn to the day-count feature. He had acquired the device only a couple days after going through the portal, by his rough estimation, and he had managed to re-program the feature to count up from that point in hopes of measuring how long he had been away from his home dimension. Like a prisoner or a castaway’s tally marks on the walls of their cell or cave, there was something sickening and yet satisfying about seeing the number grow. It read one hundred twenty; about four months.
He reminded himself that the count might be somewhat off, but it did little to ease the queasiness he felt all of a sudden. It was likely that some of that was a result of hunger or teleportation, perhaps some a response to something unique to the air in this dimension, but there was no denying that some of it was regret. Regret for trusting a lying beast like Bill Cipher, regret for turning his back on his brother, regret for calling on him the way that he had. It had been selfish, blind, and he knew it. What good does regret do you now? He reminded himself, trying to shake off the feeling, You were only doing what had to be done. But whatever his motives had been, the result was still he and Stanley spending the eleventh consecutive birthday alone.
Just at that moment, a deep menacing growl issued from a spot a few feet away from Stanford and he was back on his feet in an instant. Well, maybe not exactly alone, he thought wryly. The unseen creature growled again, and Ford thought bleakly, Happy birthday, Stanley.
-
Stan groaned in frustration, slamming Ford’s journal shut. It was no use. I’m too tired and too stupid and too fucking sad to make sense of any of this, he fumed to himself. He had been dreading today for weeks. Missing Stanford and hating himself for losing him were central to all of his days lately, but he knew it would only cut that much deeper today.
As children, they’d loved their birthday. It didn’t matter much what they did with the day, they were best friends and just the fact that the day was shared made it special. But that very same thing was what had made it impossible to enjoy the day ever since he’d lost everything. He still swore it had all been a big misunderstanding. Of course, he hadn’t wanted his best and only friend to move across the country and move onto a life in which he was out of place, but not enough to ever commit the crime of which he’d been accused. Stanford was the most important person in the world to him, he would never have sabotaged his chance at happiness and fulfillment. Sure, he was selfish, but he could never be that selfish.
But somehow it had happened twice. A fit of hurt and anger had pulled Ford from his life yet again, and this time he wasn’t going to take it lying down. He had worked hard trying to find some way to earn back his place in the family the first time around, but this time it wasn’t about pops or about acceptance or a pat on the head. The most important person in his world was no longer actually in his world, and he needed to fix it. He had broken it, and he needed to know that he could fix it.
But he had to accept that it wasn’t getting fixed tonight. He grabbed a permanent marker from the cup that held several writing implements on the desk. He stood up, popping his back, and walked over to the very utilitarian calendar that hung on the wall. At first after Ford had been snatched away from him by the bizarre portal, he had been numbering the days, before it had become apparent that he wouldn’t be able to just get the portal going with a little elbow grease and ingenuity. It had been too depressing, watching the numbers grow, and he had opted just to cross off each box with an x as the days passed.
He drew an x through June 15th and sighed again, dropping the marker back in the cup. He turned his back on the inexplicably lifeless portal. As he started up the stairs, despite knowing there would be no reply, he softly muttered, “Happy birthday, Ford.” to the empty room that held his only hope for redemption.
62 notes · View notes
mbaljeetsingh · 5 years ago
Text
The Next.js Handbook
I wrote this tutorial to help you quickly learn Next.js and get familiar with how it works.
It's ideal for you if you have zero to little knowledge of Next.js, you have used React in the past, and you are looking forward diving more into the React ecosystem, in particular server-side rendering.
I find Next.js an awesome tool to create Web Applications, and at the end of this post I hope you'll be as excited about it as I am. And I hope it will help you learn Next.js!
Note: you can download a PDF / ePub / Mobi version of this tutorial so you can read it offline!
Index
Introduction
The main features provided by Next.js
Next.js vs Gatsby vs create-react-app
How to install Next.js
View source to confirm SSR is working
The app bundles
What's that icon in the bottom right?
Install the React DevTools
Other debugging techniques you can use
Adding a second page to the site
Linking the two pages
Dynamic content with the router
Prefetching
Using the router to detect the active link
Using next/router
Feed data to the components using getInitialProps()
CSS
Populating the head tag with custom tags
Adding a wrapper component
API routes
Run code on the server side, or on the client side
Deploying the production version
Deploying on Now
Analyzing the app bundles
Lazy loading modules
Where to go from here
Introduction
Working on a modern JavaScript application powered by React is awesome until you realize that there are a couple problems related to rendering all the content on the client-side.
First, the page takes longer to become visible to the user, because before the content loads, all the JavaScript must load, and your application needs to run to determine what to show on the page.
Second, if you are building a publicly available website, you have a content SEO issue. Search engines are getting better at running and indexing JavaScript apps, but it's much better if we can send them content instead of letting them figure it out.
The solution to both of those problems is server rendering, also called static pre-rendering.
Next.js is one React framework to do all of this in a very simple way, but it's not limited to this. It's advertised by its creators as a zero-configuration, single-command toolchain for React apps.
It provides a common structure that allows you to easily build a frontend React application, and transparently handles server-side rendering for you.
The main features provided by Next.js
Here is a non-exhaustive list of the main Next.js features:
Hot Code Reloading
Next.js reloads the page when it detects any change saved to disk.
Automatic Routing
Any URL is mapped to the filesystem, to files put in the pages folder, and you don't need any configuration (you have customization options of course).
Single File Components
Using styled-jsx, completely integrated as built by the same team, it's trivial to add styles scoped to the component.
Server Rendering
You can render React components on the server side, before sending the HTML to the client.
Ecosystem Compatibility
Next.js plays well with the rest of the JavaScript, Node, and React ecosystem.
Automatic Code Splitting
Pages are rendered with just the libraries and JavaScript that they need, no more. Instead of generating one single JavaScript file containing all the app code, the app is broken up automatically by Next.js in several different resources.
Loading a page only loads the JavaScript necessary for that particular page.
Next.js does that by analyzing the resources imported.
If only one of your pages imports the Axios library, for example, that specific page will include the library in its bundle.
This ensures your first page load is as fast as it can be, and only future page loads (if they will ever be triggered) will send the JavaScript needed to the client.
There is one notable exception. Frequently used imports are moved into the main JavaScript bundle if they are used in at least half of the site pages.
Prefetching
The Link component, used to link together different pages, supports a prefetch prop which automatically prefetches page resources (including code missing due to code splitting) in the background.
Dynamic Components
You can import JavaScript modules and React Components dynamically.
Static Exports
Using the next export command, Next.js allows you to export a fully static site from your app.
TypeScript Support
Next.js is written in TypeScript and as such comes with an excellent TypeScript support.
Next.js vs Gatsby vs create-react-app
Next.js, Gatsby, and create-react-app are amazing tools we can use to power our applications.
Let's first say what they have in common. They all have React under the hood, powering the entire development experience. They also abstract webpack and all those low level things that we used to configure manually in the good old days.
create-react-app does not help you generate a server-side-rendered app easily. Anything that comes with it (SEO, speed...) is only provided by tools like Next.js and Gatsby.
When is Next.js better than Gatsby?
They can both help with server-side rendering, but in 2 different ways.
The end result using Gatsby is a static site generator, without a server. You build the site, and then you deploy the result of the build process statically on Netlify or another static hosting site.
Next.js provides a backend that can server side render a response to request, allowing you to create a dynamic website, which means you will deploy it on a platform that can run Node.js.
Next.js can generate a static site too, but I would not say it's its main use case.
If my goal was to build a static site, I'd have a hard time choosing and perhaps Gatsby has a better ecosystem of plugins, including many for blogging in particular.
Gatsby is also heavily based on GraphQL, something you might really like or dislike depending on your opinions and needs.
How to install Next.js?
To install Next.js, you need to have Node.js installed.
Make sure that you have the latest version of Node. Check with running node -v in your terminal, and compare it to the latest LTS version listed on https://nodejs.org/.
After you install Node.js, you will have the npm command available into your command line.
If you have any trouble at this stage, I recommend the following tutorials I wrote for you:
Now that you have Node, updated to the latest version, and npm, we're set!
We can choose 2 routes now: using create-next-app or the classic approach which involves installing and setting up a Next app manually.
Using create-next-app
If you're familiar with create-react-app, create-next-app is the same thing - except it creates a Next app instead of a React app, as the name implies.
I assume you have already installed Node.js, which, from version 5.2 (2+ years ago at the time of writing), comes with the npx command bundled. This handy tool lets us download and execute a JavaScript command, and we'll use it like this:
npx create-next-app
The command asks the application name (and creates a new folder for you with that name), then downloads all the packages it needs (react, react-dom, next), sets the package.json to:
Tumblr media
and you can immediately run the sample app by running npm run dev:
Tumblr media
And here's the result on http://localhost:3000:
Tumblr media
This is the recommended way to start a Next.js application, as it gives you structure and sample code to play with. There's more than just that default sample application; you can use any of the examples stored at https://github.com/zeit/next.js/tree/canary/examples using the --example option. For example try:
npx create-next-app --example blog-starter
Which gives you an immediately usable blog instance with syntax highlighting too:
Tumblr media
Manually create a Next.js app
You can avoid create-next-app if you feel like creating a Next app from scratch. Here's how: create an empty folder anywhere you like, for example in your home folder, and go into it:
mkdir nextjs cd nextjs
and create your first Next project directory:
mkdir firstproject cd firstproject
Now use the npm command to initialize it as a Node project:
npm init -y
The -y option tells npm to use the default settings for a project, populating a sample package.json file.
Tumblr media
Now install Next and React:
npm install next react react-dom
Your project folder should now have 2 files:
and the node_modules folder.
Open the project folder using your favorite editor. My favorite editor is VS Code. If you have that installed, you can run code . in your terminal to open the current folder in the editor (if the command does not work for you, see this)
Open package.json, which now has this content:
{ "name": "firstproject", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "next": "^9.1.2", "react": "^16.11.0", "react-dom": "^16.11.0" } }
and replace the scripts section with:
"scripts": { "dev": "next", "build": "next build", "start": "next start" }
to add the Next.js build commands, which we're going to use soon.
Tip: use "dev": "next -p 3001", to change the port and run, in this example, on port 3001.
Tumblr media
Now create a pages folder, and add an index.js file.
In this file, let's create our first React component.
We're going to use it as the default export:
const Index = () => ( <div> <h1>Home page</h1> </div> ) export default Index
Now using the terminal, run npm run dev to start the Next development server.
This will make the app available on port 3000, on localhost.
Tumblr media
Open http://localhost:3000 in your browser to see it.
Tumblr media
View source to confirm SSR is working
Let's now check the application is working as we expect it to work. It's a Next.js app, so it should be server side rendered.
It's one of the main selling points of Next.js: if we create a site using Next.js, the site pages are rendered on the server, which delivers HTML to the browser.
This has 3 major benefits:
The client does not need to instantiate React to render, which makes the site faster to your users.
Search engines will index the pages without needing to run the client-side JavaScript. Something Google started doing, but openly admitted to be a slower process (and you should help Google as much as possible, if you want to rank well).
You can have social media meta tags, useful to add preview images, customize title and description for any of your pages shared on Facebook, Twitter and so on.
Let's view the source of the app. Using Chrome you can right-click anywhere in the page, and press View Page Source.
Tumblr media
If you view the source of the page, you'll see the <div><h1>Home page</h1></div> snippet in the HTML body, along with a bunch of JavaScript files - the app bundles.
We don't need to set up anything, SSR (server-side rendering) is already working for us.
The React app will be launched on the client, and will be the one powering interactions like clicking a link, using client-side rendering. But reloading a page will re-load it from the server. And using Next.js there should be no difference in the result inside the browser - a server-rendered page should look exactly like a client-rendered page.
The app bundles
When we viewed the page source, we saw a bunch of JavaScript files being loaded:
Tumblr media
Let's start by putting the code in an HTML formatter to get it formatted better, so we humans can get a better chance at understanding it:
<!DOCTYPE html> <html> <head> <meta charSet="utf-8" /> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1" /> <meta name="next-head-count" content="2" /> <link rel="preload" href="/_next/static/development/pages/index.js?ts=1572863116051" as="script" /> <link rel="preload" href="/_next/static/development/pages/_app.js?ts=1572863116051" as="script" /> <link rel="preload" href="/_next/static/runtime/webpack.js?ts=1572863116051" as="script" /> <link rel="preload" href="/_next/static/runtime/main.js?ts=1572863116051" as="script" /> </head> <body> <div id="__next"> <div> <h1>Home page</h1></div> </div> <script src="/_next/static/development/dll/dll_01ec57fc9b90d43b98a8.js?ts=1572863116051"></script> <script id="__NEXT_DATA__" type="application/json">{"dataManager":"[]","props":{"pageProps":{}},"page":"/","query":{},"buildId":"development","nextExport":true,"autoExport":true}</script> <script async="" data-next-page="/" src="/_next/static/development/pages/index.js?ts=1572863116051"></script> <script async="" data-next-page="/_app" src="/_next/static/development/pages/_app.js?ts=1572863116051"></script> <script src="/_next/static/runtime/webpack.js?ts=1572863116051" async=""></script> <script src="/_next/static/runtime/main.js?ts=1572863116051" async=""></script> </body> </html>
We have 4 JavaScript files being declared to be preloaded in the head, using rel="preload" as="script":
/_next/static/development/pages/index.js (96 LOC)
/_next/static/development/pages/_app.js (5900 LOC)
/_next/static/runtime/webpack.js (939 LOC)
/_next/static/runtime/main.js (12k LOC)
This tells the browser to start loading those files as soon as possible, before the normal rendering flow starts. Without those, scripts would be loaded with an additional delay, and this improves the page loading performance.
Then those 4 files are loaded at the end of the body, along with /_next/static/development/dll/dll_01ec57fc9b90d43b98a8.js (31k LOC), and a JSON snippet that sets some defaults for the page data:
<script id="__NEXT_DATA__" type="application/json"> { "dataManager": "[]", "props": { "pageProps": {} }, "page": "/", "query": {}, "buildId": "development", "nextExport": true, "autoExport": true } </script>
The 4 bundle files loaded are already implementing one feature called code splitting. The index.js file provides the code needed for the index component, which serves the / route, and if we had more pages we'd have more bundles for each page, which will then only be loaded if needed - to provide a more performant load time for the page.
What's that icon on the bottom right?
Did you see that little icon at the bottom right of the page, which looks like a lightning?
Tumblr media
If you hover it, it's going to say "Prerendered Page":
Tumblr media
This icon, which is only visible in development mode of course, tells you the page qualifies for automatic static optimization, which basically means that it does not depend on data that needs to be fetched at invokation time, and it can be prerendered and built as a static HTML file at build time (when we run npm run build).
Next can determine this by the absence of the getInitialProps() method attached to the page component.
When this is the case, our page can be even faster because it will be served statically as an HTML file rather than going through the Node.js server that generates the HTML output.
Another useful icon that might appear next to it, or instead of it on non-prerendered pages, is a little animated triangle:
Tumblr media
This is a compilation indicator, and appears when you save a page and Next.js is compiling the application before hot code reloading kicks in to reload the code in the application automatically.
It's a really nice way to immediately determine if the app has already been compiled and you can test a part of it you're working on.
Next.js is based on React, so one very useful tool we absolutely need to install (if you haven't already) is the React Developer Tools.
Available for both Chrome and Firefox, the React Developer Tools are an essential instrument you can use to inspect a React application.
Now, the React Developer Tools are not specific to Next.js but I want to introduce them because you might not be 100% familiar with all the tools React provides. It's best to go a little into debugging tooling than assuming you already know them.
They provide an inspector that reveals the React components tree that builds your page, and for each component you can go and check the props, the state, hooks, and lots more.
Once you have installed the React Developer Tools, you can open the regular browser devtools (in Chrome, it's right-click in the page, then click Inspect) and you'll find 2 new panels: Components and Profiler.
Tumblr media
If you move the mouse over the components, you'll see that in the page, the browser will select the parts that are rendered by that component.
If you select any component in the tree, the right panel will show you a reference to the parent component, and the props passed to it:
Tumblr media
You can easily navigate by clicking around the component names.
You can click the eye icon in the Developer Tools toolbar   to inspect the DOM element, and also if you use the first icon, the one with the mouse icon (which conveniently sits under the similar regular DevTools icon), you can hover an element in the browser UI to directly select the React component that renders it.
You can use the bug icon to log a component data to the console.
Tumblr media
This is pretty awesome because once you have the data printed there, you can right-click any element and press "Store as a global variable". For example here I did it with the url prop, and I was able to inspect it in the console using the temporary variable assigned to it, temp1:
Tumblr media
Using Source Maps, which are loaded by Next.js automatically in development mode, from the Components panel we can click the <> code and the DevTools will switch to the Source panel, showing us the component source code:
Tumblr media
The Profiler tab is even more awesome, if possible. It allows us to record an interaction in the app, and see what happens. I cannot show an example yet, because it needs at least 2 components to create an interaction, and we have just one now. I'll talk about this later.
Tumblr media
I showed all screenshots using Chrome, but the React Developer Tools works in the same way in Firefox:
Tumblr media
Other debugging techniques you can use
In addition to the React Developer Tools, which are essential to building a Next.js application, I want to emphasize 2 ways to debug Next.js apps.
The first is obviously console.log() and all the other Console API tools. The way Next apps work will make a log statement work in the browser console OR in the terminal where you started Next using npm run dev.
In particular, if the page loads from the server, when you point the URL to it, or you hit the refresh button / cmd/ctrl-R, any console logging happens in the terminal.
Subsequent page transitions that happen by clicking the mouse will make all console logging happen inside the browser.
Just remember if you are surprised by missing logging.
Another tool that is essential is the debugger statement. Adding this statement to a component will pause the browser rendering the page:
Tumblr media
Really awesome because now you can use the browser debugger to inspect values and run your app one line at a time.
You can also use the VS Code debugger to debug server-side code. I mention this technique and this tutorial to set this up.
Adding a second page to the site
Now that we have a good grasp of the tools we can use to help us develop Next.js apps, let's continue from where we left our first app:
Tumblr media
I want to add a second page to this website, a blog. It's going to be served into /blog, and for the time being it will just contain a simple static page, just like our first index.js component:
Tumblr media
After saving the new file, the npm run dev process already running is already capable of rendering the page, without the need to restart it.
When we hit the URL http://localhost:3000/blog we have the new page:
Tumblr media
and here's what the terminal told us:
Tumblr media
Now the fact that the URL is /blog depends on just the filename, and its position under the pages folder.
You can create a pages/hey/ho page, and that page will show up on the URL http://localhost:3000/hey/ho.
What does not matter, for the URL purposes, is the component name inside the file.
Try going and viewing the source of the page, when loaded from the server it will list /_next/static/development/pages/blog.js as one of the bundles loaded, and not /_next/static/development/pages/index.js like in the home page. This is because thanks to automatic code splitting we don't need the bundle that serves the home page. Just the bundle that serves the blog page.
Tumblr media
We can also just export an anonymous function from blog.js:
export default () => ( <div> <h1>Blog</h1> </div> )
or if you prefer the non-arrow function syntax:
export default function() { return ( <div> <h1>Blog</h1> </div> ) }
Linking the two pages
Now that we have 2 pages, defined by index.js and blog.js, we can introduce links.
Normal HTML links within pages are done using the a tag:
<a href="/blog">Blog</a>
We can't do do that in Next.js.
Why? We technically can, of course, because this is the Web and on the Web things never break (that's why we can still use the <marquee> tag. But one of the main benefits of using Next is that once a page is loaded, transitions to other page are very fast thanks to client-side rendering.
If you use a plain a link:
const Index = () => ( <div> <h1>Home page</h1> <a href='/blog'>Blog</a> </div> ) export default Index
Now open the DevTools, and the Network panel in particular. The first time we load http://localhost:3000/ we get all the page bundles loaded:
Tumblr media
Now if you click the "Preserve log" button (to avoid clearing the Network panel), and click the "Blog" link, this is what happens:
Tumblr media
We got all that JavaScript from the server, again! But.. we don't need all that JavaScript if we already got it. We'd just need the blog.js page bundle, the only one that's new to the page.
To fix this problem, we use a component provided by Next, called Link.
We import it:
import Link from 'next/link'
and then we use it to wrap our link, like this:
import Link from 'next/link' const Index = () => ( <div> <h1>Home page</h1> <Link href='/blog'> <a>Blog</a> </Link> </div> ) export default Index
Now if you retry the thing we did previously, you'll be able to see that only the blog.js bundle is loaded when we move to the blog page:
Tumblr media
and the page loaded so faster than before, the browser usual spinner on the tab didn't even appear. Yet the URL changed, as you can see. This is working seamlessly with the browser History API.
This is client-side rendering in action.
What if you now press the back button? Nothing is being loaded, because the browser still has the old index.js bundle in place, ready to load the /index route. It's all automatic!
Dynamic content with the router
In the previous chapter we saw how to link the home to the blog page.
A blog is a great use case for Next.js, one we'll continue to explore in this chapter by adding blog posts.
Blog posts have a dynamic URL. For example a post titled "Hello World" might have the URL /blog/hello-world. A post titled "My second post" might have the URL /blog/my-second-post.
This content is dynamic, and might be taken from a database, markdown files or more.
Next.js can serve dynamic content based on a dynamic URL.
We create a dynamic URL by creating a dynamic page with the [] syntax.
How? We add a pages/blog/[id].js file. This file will handle all the dynamic URLs under the /blog/ route, like the ones we mentioned above: /blog/hello-world, /blog/my-second-post and more.
In the file name, [id] inside the square brackets means that anything that's dynamic will be put inside the id parameter of the query property of the router.
Ok, that's a bit too many things at once.
What's the router?
The router is a library provided by Next.js.
We import it from next/router:
import { useRouter } from 'next/router'
and once we have useRouter, we instantiate the router object using:
const router = useRouter()
Once we have this router object, we can extract information from it.
In particular we can get the dynamic part of the URL in the [id].js file by accessing router.query.id.
The dynamic part can also just be a portion of the URL, like post-[id].js.
So let's go on and apply all those things in practice.
Create the file pages/blog/[id].js:
import { useRouter } from 'next/router' export default () => { const router = useRouter() return ( <> <h1>Blog post</h1> <p>Post id: {router.query.id}</p> </> ) }
Now if you go to the http://localhost:3000/blog/test router, you should see this:
Tumblr media
We can use this id parameter to gather the post from a list of posts. From a database, for example. To keep things simple we'll add a posts.json file in the project root folder:
{ "test": { "title": "test post", "content": "Hey some post content" }, "second": { "title": "second post", "content": "Hey this is the second post content" } }
Now we can import it and lookup the post from the id key:
import { useRouter } from 'next/router' import posts from '../../posts.json' export default () => { const router = useRouter() const post = posts[router.query.id] return ( <> <h1>{post.title}</h1> <p>{post.content}</p> </> ) }
Reloading the page should show us this result:
Tumblr media
But it's not! Instead, we get an error in the console, and an error in the browser, too:
Tumblr media
Why? Because.. during rendering, when the component is initialized, the data is not there yet. We'll see how to provide the data to the component with getInitialProps in the next lesson.
For now, add a little if (!post) return <p></p> check before returning the JSX:
import { useRouter } from 'next/router' import posts from '../../posts.json' export default () => { const router = useRouter() const post = posts[router.query.id] if (!post) return <p></p> return ( <> <h1>{post.title}</h1> <p>{post.content}</p> </> ) }
Now things should work. Initially the component is rendered without the dynamic router.query.id information. After rendering, Next.js triggers an update with the query value and the page displays the correct information.
And if you view source, there is that empty <p> tag in the HTML:
Tumblr media
We'll soon fix this issue that fails to implement SSR and this harms both loading times for our users, SEO and social sharing as we already discussed.
We can complete the blog example by listing those posts in pages/blog.js:
import posts from '../posts.json' const Blog = () => ( <div> <h1>Blog</h1> <ul> {Object.entries(posts).map((value, index) => { return <li key={index}>{value[1].title}</li> })} </ul> </div> ) export default Blog
And we can link them to the individual post pages, by importing Link from next/link and using it inside the posts loop:
import Link from 'next/link' import posts from '../posts.json' const Blog = () => ( <div> <h1>Blog</h1> <ul> {Object.entries(posts).map((value, index) => { return ( <li key={index}> <Link href='/blog/[id]' as={'/blog/' + value[0]}> <a>{value[1].title}</a> </Link> </li> ) })} </ul> </div> ) export default Blog
Prefetching
I mentioned previously how the Link Next.js component can be used to create links between 2 pages, and when you use it, Next.js transparently handles frontend routing for us, so when a user clicks a link, frontend takes care of showing the new page without triggering a new client/server request and response cycle, as it normally happens with web pages.
There's another thing that Next.js does for you when you use Link.
As soon as an element wrapped within <Link> appears in the viewport (which means it's visible to the website user), Next.js prefetches the URL it points to, as long as it's a local link (on your website), making the application super fast to the viewer.
This behavior is only being triggered in production mode (we'll talk about this in-depth later), which means you have to stop the application if you are running it with npm run dev, compile your production bundle with npm run build and run it with  npm run start instead.
Using the Network inspector in the DevTools you'll notice that any links above the fold, at page load, start the prefetching as soon as the load event has been fired on your page (triggered when the page is fully loaded, and happens after the DOMContentLoaded event).
Any other Link tag not in the viewport will be prefetched when the user scrolls and it
Prefetching is automatic on high speed connections (Wifi and 3g+ connections, unless the browser sends the Save-Data HTTP Header.
You can opt out from prefetching individual Link instances by setting the prefetch prop to false:
<Link href="/a-link" prefetch={false}> <a>A link</a> </Link>
Using the router to detect the active link
One very important feature when working with links is determining what is the current URL, and in particular assigning a class to the active link, so we can style it differently from the other ones.
This is especially useful in your site header, for example.
The Next.js default Link component offered in next/link does not do this automatically for us.
We can create a Link component ourselves, and we store it in a file Link.js in the Components folder, and import that instead of the default next/link.
In this component, we'll first import React from react, Link from next/link and the useRouter hook from next/router.
Inside the component we determine if the current path name matches the href prop of the component, and if so we append the selected class to the children.
We finally return this children with the updated class, using React.cloneElement():
import React from 'react' import Link from 'next/link' import { useRouter } from 'next/router' export default ({ href, children }) => { const router = useRouter() let className = children.props.className || '' if (router.pathname === href) { className = `${className} selected` } return <Link href={href}>{React.cloneElement(children, { className })}</Link> }
Using next/router
We already saw how to use the Link component to declaratively handle routing in Next.js apps.
It's really handy to manage routing in JSX, but sometimes you need to trigger a routing change programmatically.
In this case, you can access the Next.js Router directly, provided in the next/router package, and call its push() method.
Here's an example of accessing the router:
import { useRouter } from 'next/router' export default () => { const router = useRouter() //... }
Once we get the router object by invoking useRouter(), we can use its methods.
This is the client side router, so methods should only be used in frontend facing code. The easiest way to ensure this is to wrap calls in the useEffect() React hook, or inside componentDidMount() in React stateful components.
The ones you'll likely use the most are push() and prefetch().
push() allows us to programmatically trigger a URL change, in the frontend:
router.push('/login')
prefetch() allows us to programmatically prefetch a URL, useful when we don't have a Link tag which automatically handles prefetching for us:
router.prefetch('/login')
Full example:
import { useRouter } from 'next/router' export default () => { const router = useRouter() useEffect(() => { router.prefetch('/login') }) }
You can also use the router to listen for route change events.
Feed data to the components using getInitialProps
In the previous chapter we had an issue with dynamically generating the post page, because the component required some data up front, and when we tried to get the data from the JSON file:
import { useRouter } from 'next/router' import posts from '../../posts.json' export default () => { const router = useRouter() const post = posts[router.query.id] return ( <> <h1>{post.title}</h1> <p>{post.content}</p> </> ) }
we got this error:
Tumblr media
How do we solve this? And how do we make SSR work for dynamic routes?
We must provide the component with props, using a special function called getInitialProps() which is attached to the component.
To do so, first we name the component:
const Post = () => { //... } export default Post
then we add the function to it:
const Post = () => { //... } Post.getInitialProps = () => { //... } export default Post
This function gets an object as its argument, which contains several properties. In particular, the thing we are interested into now is that we get the query object, the one we used previously to get the post id.
So we can get it using the object destructuring syntax:
Post.getInitialProps = ({ query }) => { //... }
Now we can return the post from this function:
Post.getInitialProps = ({ query }) => { return { post: posts[query.id] } }
And we can also remove the import of useRouter, and we get the post from the props property passed to the Post component:
import posts from '../../posts.json' const Post = props => { return ( <div> <h1>{props.post.title}</h1> <p>{props.post.content}</p> </div> ) } Post.getInitialProps = ({ query }) => { return { post: posts[query.id] } } export default Post
Now there will be no error, and SSR will be working as expected, as you can see checking view source:
Tumblr media
The getInitialProps function will be executed on the server side, but also on the client side, when we navigate to a new page using the Link component as we did.
It's important to note that getInitialProps gets, in the context object it receives, in addition to the query object these other properties:
pathname: the path section of URL
asPath - String of the actual path (including the query) shows in the browser
which in the case of calling http://localhost:3000/blog/test will respectively result to:
And in the case of server side rendering, it will also receive:
req: the HTTP request object
res: the HTTP response object
err: an error object
req and res will be familiar to you if you've done any Node.js coding.
CSS
How do we style React components in Next.js?
We have a lot of freedom, because we can use whatever library we prefer.
But Next.js comes with styled-jsx built-in, because that's a library built by the same people working on Next.js.
And it's a pretty cool library that provides us scoped CSS, which is great for maintainability because the CSS is only affecting the component it's applied to.
I think this is a great approach at writing CSS, without the need to apply additional libraries or preprocessors that add complexity.
To add CSS to a React component in Next.js we insert it inside a snippet in the JSX, which start with
<style jsx>{`
and ends with
`}</style>
Inside this weird blocks we write plain CSS, as we'd do in a .css file:
<style jsx>{` h1 { font-size: 3rem; } `}</style>
You write it inside the JSX, like this:
const Index = () => ( <div> <h1>Home page</h1> <style jsx>{` h1 { font-size: 3rem; } `}</style> </div> ) export default Index
Inside the block we can use interpolation to dynamically change the values. For example here we assume a size prop is being passed by the parent component, and we use it in the styled-jsx block:
const Index = props => ( <div> <h1>Home page</h1> <style jsx>{` h1 { font-size: ${props.size}rem; } `}</style> </div> )
If you want to apply some CSS globally, not scoped to a component, you add the global keyword to the style tag:
<style jsx global>{` body { margin: 0; } `}</style>
If you want to import an external CSS file in a Next.js component, you have to first install @zeit/next-css:
npm install @zeit/next-css
and then create a configuration file in the root of the project, called next.config.js, with this content:
const withCSS = require('@zeit/next-css') module.exports = withCSS()
After restarting the Next app, you can now import CSS like you normally do with JavaScript libraries or components:
import '../style.css'
You can also import a SASS file directly, using the @zeit/next-sass library instead.
From any Next.js page component, you can add information to the page header.
This is handy when:
you want to customize the page title
you want to change a meta tag
How can you do so?
Inside every component you can import the Head component from next/head and include it in your component JSX output:
import Head from 'next/head' const House = props => ( <div> <Head> <title>The page title</title> </Head> {/* the rest of the JSX */} </div> ) export default House
You can add any HTML tag you'd like to appear in the <head> section of the page.
When mounting the component, Next.js will make sure the tags inside Head are added to the heading of the page. Same when unmounting the component, Next.js will take care of removing those tags.
Adding a wrapper component
All the pages on your site look more or less the same. There's a chrome window, a common base layer, and you just want to change what's inside.
There's a nav bar, a sidebar, and then the actual content.
How do you build such system in Next.js?
There are 2 ways. One is using a Higher Order Component, by creating a components/Layout.js component:
export default Page => { return () => ( <div> <nav> <ul>....</ul> </hav> <main> <Page /> </main> </div> ) }
In there we can import separate components for heading and/or sidebar, and we can also add all the CSS we need.
And you use it in every page like this:
import withLayout from '../components/Layout.js' const Page = () => <p>Here's a page!</p> export default withLayout(Page)
But I found this works only for simple cases, where you don't need to call getInitialProps() on a page.
Why?
Because getInitialProps() gets only called on the page component. But if we export the Higher Order Component withLayout() from a page, Page.getInitialProps() is not called. withLayout.getInitialProps() would.
To avoid unnecessarily complicating our codebase, the alternative approach is to use props:
export default props => ( <div> <nav> <ul>....</ul> </hav> <main> {props.content} </main> </div> )
and in our pages now we use it like this:
import Layout from '../components/Layout.js' const Page = () => ( <Layout content={( <p>Here's a page!</p> )} /> )
This approach lets us use getInitialProps() from within our page component, with the only downside of having to write the component JSX inside the content prop:
import Layout from '../components/Layout.js' const Page = () => ( <Layout content={( <p>Here's a page!</p> )} /> ) Page.getInitialProps = ({ query }) => { //... }
API Routes
In addition to creating page routes, which means pages are served to the browser as Web pages, Next.js can create API routes.
This is a very interesting feature because it means that Next.js can be used to create a frontend for data that is stored and retrieved by Next.js itself, transferring JSON via fetch requests.
API routes live under the /pages/api/ folder and are mapped to the /api endpoint.
This feature is very useful when creating applications.
In those routes, we write Node.js code (rather than React code). It's a paradigm shift, you move from the frontend to the backend, but very seamlessly.
Say you have a /pages/api/comments.js file, whose goal is to return the comments of a blog post as JSON.
Say you have a list of comments stored in a comments.json file:
[ { "comment": "First" }, { "comment": "Nice post" } ]
Here's a sample code, which returns to the client the list of comments:
import comments from './comments.json' export default (req, res) => { res.status(200).json(comments) }
It will listen on the /api/comments URL for GET requests, and you can try calling it using your browser:
Tumblr media
API routes can also use dynamic routing like pages, use the [] syntax to create a dynamic API route, like /pages/api/comments/[id].js which will retrieve the comments specific to a post id.
Inside the [id].js you can retrieve the id value by looking it up inside the req.query object:
import comments from '../comments.json' export default (req, res) => { res.status(200).json({ post: req.query.id, comments }) }
Heres you can see the above code in action:
Tumblr media
In dynamic pages, you'd need to import useRouter from next/router, then get the router object using const router = useRouter(), and then we'd be able to get the id value using router.query.id.
In the server-side it's all easier, as the query is attached to the request object.
If you do a POST request, all works in the same way - it all goes through that default export.
To separate POST from GET and other HTTP methods (PUT, DELETE), lookup the req.method value:
export default (req, res) => { switch (req.method) { case 'GET': //... break case 'POST': //... break default: res.status(405).end() //Method Not Allowed break } }
In addition to req.query and req.method we already saw, we have access to cookies by referencing req.cookies, the request body in req.body.
Under the hoods, this is all powered by Micro, a library that powers asynchronous HTTP microservices, made by the same team that built Next.js.
You can make use of any Micro middleware in our API routes to add more functionality.
Run code only on the server side or client side
In your page components, you can execute code only in the server-side or on the client-side, by checking the window property.
This property is only existing inside the browser, so you can check
if (typeof window === 'undefined') { }
and add the server-side code in that block.
Similarly, you can execute client-side code only by checking
if (typeof window !== 'undefined') { }
JS Tip: We use the typeof operator here because we can't detect a value to be undefined in other ways. We can't do if (window === undefined) because we'd get a "window is not defined" runtime error
Next.js, as a build-time optimization, also removes the code that uses those checks from bundles. A client-side bundle will not include the content wrapped into a if (typeof window === 'undefined') {} block.
Deploying the production version
Deploying an app is always left last in tutorials.
Here I want to introduce it early, just because it's so easy to deploy a Next.js app that we can dive into it now, and then move on to other more complex topics later on.
Remember in the "How to install Next.js" chapter I told you to add those 3 lines to the package.json script section:
"scripts": { "dev": "next", "build": "next build", "start": "next start" }
We used npm run dev up to now, to call the next command installed locally in node_modules/next/dist/bin/next. This started the development server, which provided us source maps and hot code reloading, two very useful features while debugging.
The same command can be invoked to build the website passing the build flag, by running npm run build. Then, the same command can be used to start the production app passing the start flag, by running npm run start.
Those 2 commands are the ones we must invoke to successfully deploy the production version of our site locally. The production version is highly optimized and does not come with source maps and other things like hot code reloading that would not be beneficial to our end users.
So, let's create a production deploy of our app. Build it using:
npm run build
Tumblr media
The output of the command tells us that some routes (/ and /blog are now prerendered as static HTML, while /blog/[id] will be served by the Node.js backend.
Then you can run npm run start to start the production server locally:
npm run start
Tumblr media
Visiting http://localhost:3000 will show us the production version of the app, locally.
Deploying on Now
In the previous chapter we deployed the Next.js application locally.
How do we deploy it to a real web server, so other people can access it?
One of the most simple ways to deploy a Next application is through the Now platform created by Zeit,  the same company that created the Open Source project Next.js. You can use Now to deploy Node.js apps, Static Websites, and much more.
Now makes the deployment and distribution step of an app very, very simple and fast, and in addition to Node.js apps, they also support deploying Go, PHP, Python and other languages.
You can think of it as the "cloud", as you don't really know where your app will be deployed, but you know that you will have a URL where you can reach it.
Now is free to start using, with generous free plan that currently includes 100GB of hosting, 1000 serverless functions invocations per day, 1000 builds per month, 100GB of bandwidth per month, and one CDN location. The pricing page helps get an idea of the costs if you need more.
The best way to start using Now is by using the official Now CLI:
npm install -g now
Once the command is available, run
now login
and the app will ask you for your email.
If you haven't registered already, create an account on https://zeit.co/signup before continuing, then add your email to the CLI client.
Once this is done, from the Next.js project root folder run
now
and the app will be instantly deployed to the Now cloud, and you'll be given the unique app URL:
Tumblr media
Once you run the now program, the app is deployed to a random URL under the now.sh domain.
We can see 3 different URLs in the output given in the image:
Why so many?
The first is the URL identifying the deploy. Every time we deploy the app, this URL will change.
You can test immediately by changing something in the project code, and running now again:
Tumblr media
The other 2 URLs will not change. The first is a random one, the second is your project name (which defaults to the current project folder, your account name and then now.sh.
If you visit the URL, you will see the app deployed to production.
Tumblr media
You can configure Now to serve the site to your own custom domain or subdomain, but I will not dive into that right now.
The now.sh subdomain is enough for our testing purposes.
Analyzing the app bundles
Next provides us a way to analyze the code bundles that are generated.
Open the package.json file of the app and in the scripts section add those 3 new commands:
"analyze": "cross-env ANALYZE=true next build", "analyze:server": "cross-env BUNDLE_ANALYZE=server next build", "analyze:browser": "cross-env BUNDLE_ANALYZE=browser next build"
Like this:
{ "name": "firstproject", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "dev": "next", "build": "next build", "start": "next start", "analyze": "cross-env ANALYZE=true next build", "analyze:server": "cross-env BUNDLE_ANALYZE=server next build", "analyze:browser": "cross-env BUNDLE_ANALYZE=browser next build" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "next": "^9.1.2", "react": "^16.11.0", "react-dom": "^16.11.0" } }
then install those 2 packages:
npm install --dev cross-env @next/bundle-analyzer
Create a next.config.js file in the project root, with this content:
const withBundleAnalyzer = require('@next/bundle-analyzer')({ enabled: process.env.ANALYZE === 'true' }) module.exports = withBundleAnalyzer({})
Now run the command
npm run analyze
Tumblr media
This should open 2 pages in the browser. One for the client bundles, and one for the server bundles:
Tumblr media Tumblr media
This is incredibly useful. You can inspect what's taking the most space in the bundles, and you can also use the sidebar to exclude bundles, for an easier visualization of the smaller ones:
Tumblr media
Lazy loading modules
Being able to visually analyze a bundle is great because we can optimize our application very easily.
Say we need to load the Moment library in our blog posts. Run:
npm install moment
to include it in the project.
Now let's simulate the fact we need it on two different routes: /blog and /blog/[id].
We import it in pages/blog/[id].js:
import moment from 'moment' ... const Post = props => { return ( <div> <h1>{props.post.title}</h1> <p>Published on {moment().format('dddd D MMMM YYYY')}</p> <p>{props.post.content}</p> </div> ) }
I'm just adding today's date, as an example.
This will include Moment.js in the blog post page bundle, as you can see by running npm run analyze:
Tumblr media
See that we now have a red entry in /blog/[id], the route that we added Moment.js to!
It went from ~1kB to 350kB, quite a big deal. And this is because the Moment.js library itself is 349kB.
The client bundles visualization now shows us that the bigger bundle is the page one, which before was very little. And 99% of its code is Moment.js.
Tumblr media
Every time we load a blog post we are going to have all this code transferred to the client. Which is not ideal.
One fix would be to look for a library with a smaller size, as Moment.js is not known for being lightweight (especially out of the box with all the locales included), but let's assume for the sake of the example that we must use it.
What we can do instead is separating all the Moment code in a separate bundle.
How? Instead of importing Moment at the component level, we perform an async import inside getInitialProps, and we calculate the value to send to the component. Remember that we can't return complex objects inside the getInitialProps() returned object, so we calculate the date inside it:
import posts from '../../posts.json' const Post = props => { return ( <div> <h1>{props.post.title}</h1> <p>Published on {props.date}</p> <p>{props.post.content}</p> </div> ) } Post.getInitialProps = async ({ query }) => { const moment = (await import('moment')).default() return { date: moment.format('dddd D MMMM YYYY'), post: posts[query.id] } } export default Post
See that special call to .default() after await import? It's needed to reference the default export in a dynamic import (see https://v8.dev/features/dynamic-import)
Now if we run npm run analyze again, we can see this:
Tumblr media
Our /blog/[id] bundle is again very small, as Moment has been moved to its own bundle file, loaded separately by the browser.
Where to go from here
There is a lot more to know about Next.js. I didn't talk about managing user sessions with login, serverless, managing databases, and so on.
The goal of this Handbook is not to teach you everything, but instead it aims to introduce you, gradually, to all the power of Next.js.
The next step I recommend is to take a good read at the Next.js official documentation to find out more about all the features and functionality I didn't talk about, and take a look at all the additional functionalities introduced by Next.js plugins, some of which are pretty amazing.
You can reach me on Twitter @flaviocopes.
Also check out my website, flaviocopes.com.
Note: you can download a PDF / ePub / Mobi version of this tutorial so you can read it offline!
via freeCodeCamp.org https://ift.tt/2CUTAfk
0 notes
askmerriauthor · 8 years ago
Note
You want to tell them about what we've been doing recently? I thought last session was pretty good.
You’re just saying that because your sub-plot kicked into gear last game and you got to enjoy the narrative spotlight for a while.  :3c
That said, some other folk have been asking about the tabletop game, so why not?
Each Friday with my local group of friends (@ihavenoideahowthisworks here included in that number) I’ve been running a Pathfinder game, as I’ve had the DM bug recently.  I tend to roll heavy with “Rule of Cool” and “Rule of Funny”, so I err on the side of fun rather than sticking strictly to the hard numbers in the books.  Lots of house rules, lots of alcohol, good times all around.
The current party, all freshly 10th level as of last session, consists of:
Shaemus Sigmindson, a Chaotic-Good Half-Elf Rogue and the party’s friendly neighborhood backstabber.  Due to him hastily putting on what turned out to be a Cursed Ring and a few other magical hijinks, he’s now really good at climbing any and all surfaces at a rate of 60′ per round.  So he pretty much never touches the floor if he can help it and Xenomorph-scurries all around dungeons to literally get the drop on enemies.
Abby Noh Rahmael, a Chaotic Neutral Tiefling Magus.  Despite being highly fiendish in many literal ways, she’s the bubbly, wide-eyed heart of the team.  She has a particular knack for getting along with monsters, which leaves her heartbroken when the party inevitably kills them.  She’s recently adopted a young Cloaker and is raising it as a Monstrous Animal Companion.
Valka, a Neutral Evil Human Kineticist.  He’s a people person… with a drinking problem.  Valka is a former pirate/mafia smuggler who’s since become landbound for reasons unknown, and boy howdy does he make the land work for him.  He’s the party’s personal canon capable of putting out massive volumes of damage via Earth and Fire elemental attacks, Korra-style.  The hard part is getting him to cooperate, not fly into vengeful murderous rages over the tiniest of slights, or do really anything without first being paid.
Wenden Jardecha, a Neutral Good Human Warpriest.  Acts a whole lot like a Paladin despite not actually being one, primarily due to his method of worship.  He follows the goddess Sarenrae - a deity of forgiveness and righteousness, though she draws a line as to when evil people are beyond redemption.  Wenden prefers to enforce that line with a sword.  He’s also proven himself really good at crowd control by locking down Boss-Level enemies with status effects.
Henc Jardecha, a Neutral Good Human Arcanist.  The younger brother of Wenden.  Henc is a know-it-all spellcaster who likes to hang in the background mostly being unobtrusive, maybe casting a little Prestidigitation here and there for dramatic effect.  Until he suddenly decides to Summon a horde of powerful monsters and start tossing around Lightning Bolts when the whim takes him.  He has all of the Knowledge Skills and then some, and boy howdy does he love to rub those high info rolls in everyone’s face.
The game began with an Episode 0 where the party played pre-generated base characters not their own.  They delved into a Goblin-infested ruin after getting word of a mysterious monster living there that had been terrorizing local farmlands.  They met a Kobold Sorceress outside who joined the group and sort of helped them along, discovered a Goblin Chieftain who was weirdly upset with his role of leadership, and eventually faced off with the monster in question - a young Black Dragon.  Despite nearly dying in the process, the party managed to drive off the Dragon… only for the Sorceress and the Chieftain to reveal themselves to be a pair of Kobold thieves in disguise.  They’d been casing the joint before the party showed up and, after using them to get rid of the Dragon, pilfered a small box from the treasure hoard and made their escape.
Following that, Episode 1 kicks in.  The plot so far is that the group - a team from the Pathfinder Society of Adventurers - has been dispatched to the coastal city of Sandpoint upon hearing reports of Werewolves in the region.  Their investigation has taken them to Fangwood Keep - a module I’ve heavily edited and customized - and brought them into conflict with a horde of Hobgoblins that had taken over the castle.  After teaming up with a small militia of irregulars the Hobgoblins had kicked out of said keep, the party took back the structure and discovered that it was actually built from the ruins of an Elven wizard’s tower.  However, nothing was really clean-cut about the whole ordeal.  The party kept finding strange markings set everywhere, oddly mutated creatures, and even Goblinoids altered into far more powerful states wielding unusual magical weapons.  When they finally cornered and confronted the leader of the Hobgoblin tribe, it was revealed that the tribe had been hired by an unknown benefactor to take the Keep so that he could explore its secrets.  After a bit of quick decision-making and some fisticuffs between the Tiefling and the Hobgoblin Leader in an honor duel, the Hobgoblins actually cut a deal to leave unmolested and escape back to their own territory.
Digging deeper revealed the presence of an odd pocket space where the Elven wizard’s inner sanctum lay, filled with Fae and other odd creatures from the First World who had somehow become trapped there.  Some were hostile, others were friendly, but they all just want to go home.  In delving further in, the party uncovered evidence of the strange man who’d hired the Hobgoblins performing foul experiments.  After making their way to a buried chamber deep within the ruins, they finally came face to face with him… so to speak.  Not only was the stranger disguised entirely in a suit of fiendish living armor, but he was accompanied by two Black Dragons: the same young one that the first party had faced in Episode 0 and its mother, a terrifyingly powerful sorceress Dragon.  While their intentions for being in the Keep remained unclear, it all seemed to be part of the Strange Man’s experiments and research.
In the brief conflict that followed, the Strange Man readily offered a bribe to the party to simply turn around and leave without confrontation.  As the value of the bribe rose steadily to over 100k Gold Pieces, Valka happily accepted the deal (Shaemus was incredibly tempted and left his decision up to a die roll).  The Dragons weren’t happy about the Strange Man using their hoard as collateral though and decided to just kill the party instead.  Wenden ended up taking the worst of it and was briefly slain, though oddly the Strange Man exercised magic that kept him from dying even as his associates continued to fight…
While the party fended off the Mother Dragon to varying degrees of success, Wenden ended up being visited by his goddess Sarenrae and one of her Astral Deva heralds in a near-death-experience vision.  It was there the herald explained that the Strange Man they’d encountered was once a follower of Sarenrae as well.  And that he still is, to this present day, a Paladin.  He’s completely turned his back on his faith and has been doing everything he could think of to get the goddess to cut him loose of her influence, yet for reasons unexplained Sarenrae has refused to let him go.  Thus Wenden is given a divine quest: aid those the Strange Man has harmed, destroy his blasphemous Fiendflesh armor, and put a stop to his experiments.  However, the catch is that they cannot, under any circumstances, kill him - there’s too much risk of dark forces just waiting to snatch his soul and put his dangerous knowledge to use.
So, last we left off, the party had driven off their foes, so to speak.  The Strange Man cut the battle short when it became apparent the group was a genuine threat.  After halting time through some arcane scroll, he marked the group as part of his experiments and equipped them with a strange, magical deck of cards they’ve yet to fully understand.  With the Strange Man and the Dragons escaped for the time being, the party is left in possession of Fangwood Keep and a number of its First World occupants all relying on them to find a way home to their native plane.  As if that wasn’t enough, it also turned out that the Strange Man awakened some of his other test subjects on his way out, unleashing a pack of highly intelligent, magically capable Barghest Lycanthropes onto the land to give the party something to worry about rather than chasing him.
9 notes · View notes
prestasoo · 7 years ago
Text
Starting Your Own Subscription Business with Prestashop
Tumblr media
Subscription Business is not new and quite common, especially for the services.
Since consumer buying habits are trending toward more simple and hassle-free shopping experiences, more and more companies are jumping into the subscription space and seeing incredible growth. It's not difficult to use it on your Prestashop website.
Selling a one-off digital product, service or course may offer you instant gratification. You get an email saying you've made a sale and the money turns up in your bank account. However, you then need to work hard to get a new customer to make a purchase.
One of our clients, Rajković, sell animal food and feeds in Prague, Czech. His products are very good and his clients are very lovely.
But he told me "Frank, i'm losing. I'm spending too much money on advertising."
This costs time and money. So why not try maximising your revenue – and easing your cash flow – by persuading customers to sign up to a membership/subscription? That way your initial marketing investment pays off month after month after month.
Most dogs seem to generally share a common lifespan, bringing us roughly 10-13 of the best years we've ever had. And they also need to eat everyday. If Rajokvic's clients buy some products today, that means they might want to buy next week.
Businesses across all industries seem to have a complicated relationship with millennials, and subscription-based businesses are no different. Most love the buying power and brand loyalty of millennials but struggle with attracting and connecting with them as customers.
Get ready to unlock the mystery — or have it unlocked for you, really. This millennial is spilling the secrets on how to sell subscriptions on your Prestashop website.
Before diving into all the details of selling subscriptions, let’s quickly address what is subscription and why we’re so attracted to subscriptions.
I. What is the subscription
How are you paying for your newspapers or even the milk that is delivered to your doorstep? Do you pay on a daily/one-time basis ? No. We pay on a monthly basis. Our credit card or the bank account is automatically charged at a given date every month. And that is called Subscriptions.
Another example : Think about the aerobic clubs for ladies. They collect a bi-annual or annual subscription from us in the name of membership.
Do you see that ? People are used to the subscription economy. So why not we sell our products and services on a subscription basis and collect recurring payments on a monthly or annual basis?
II. Why should you start your own subscription business
Way back in 2008, when I was a student, I got a gig with my cousin - the CEO of a small Accounting Education that had started by selling individual training series that matched up with one career certification exam.
That business grew to around $500.000 per year, doing that, with an average customer value somewhere around $170.
Then, rather than selling one training series, for one exam, they started bundling all the videos for an entire certification program together, and selling that all at once. The business grew up to about $2 million.
After I got there, we launched subscription access to all our training content and it changed everything - we had customers paying $800 per year, instead of $400 over their entire life with the business. My cousin's business grew to $4 million within a couple years, simply by focusing on selling subscriptions.
The subscription model owes its success to the optimal balance of value it provides to both the company and the customer.
For customers, the value lies in the convenience.
First, there’s the autopilot simplicity of subscriptions that removes the thinking out of a purchase decision. Subscribers never have to remember to reorder every month, which gives them the reassurance that they will have whatever they need before they actually need it.
Second, subscriptions offer a flat rate which helps customers stay within their budget -- always. Lastly, subscriptions usually bring added value to the customer through bundling or getting it all for the price of one.
For businesses, the value of a subscription is the ability to predict revenue through recurring sales.
In fact, recurring revenue is perhaps one of the most compelling factors in a company valuation. This consistency in revenue also allows subscription-based companies to easily calculate the lifetime value of a customer, manage inventory, offer simple pricing and many other business benefits.
Do you know how much money your Prestashop website will make in any given month ? The obvious answer will be NO. But if you sell your products on a recurring payments basis, you know how much you are going to generate by selling online.
Offering Subscription on your Prestashop store offers a very good return on investment. Because, a newly acquired customer is likely to make repeated payments / purchases for your products and services.
Every online business invests heavily on acquiring customers. What would be the use if you had spent hundreds of dollars on acquiring a customer and could not retain him with repeated purchases?
Better Customer Retention
The higher percentage of customer retention is one of the most trusted ways of increasing the profitability of any business. Your Prestashop website will have a better chance of success if you get the customers to return and make repeated purchases.
Loyalty and trust
The first step to success in the business is establishing loyalty and trust among customers. It is not the money. Never. Customers hunt for values through experience. If you offer a very good product or a service, they will stick with you.
We have launched SOO Paypal Subscriptions & Recurring Payment about 1 year ago in a small way. We wanted to offer a simple, easy-to-use subscription solution for Prestashop merchants, and we have more than 500+ downloads!
Even if your product or service does not have a large advertising budget than the competition, they will recommend your product with their partners or customers.
The cross-channel marketing report says 70% of the company has shifted or chosen subscription based business after seeing an upsurge in the profit line. So, don't be lated!
III. What you can sell through a Prestashop subscription product
Find something in your house or routine that you don’t want to run out of, is easy to ship (not heavy or perishable), doesn’t have a ton of legal red tape and presents a reason for a subscription so you can generate monthly recurring revenue.
What do you got?
Food
Animal Feeds
Skincare
Hair dye
Underwear
Candy
Toothpaste/toothbrush
Baby diapers
Vitamins or Whey Protein
Almost anything can be sold on a subscription basis, with varying levels of success.
The really successful ones, though, are the boxes that create the sense of need in their subscribers.
Rules for Selling Subscriptions
People buy because of what they can get right now - This is, first and foremost, the biggest rule of selling subscriptions. People want instant gratification.  And if you offer it as part of your subscription offer, you’ll get a lot more customers.
Paypal Subscriptions & Recurring Payment module allows you to setup the delivery date for the subscription plan. This module is working well and compatible with Prestashop 1.6, Prestashop 1.7. When the customers buy the subscription product, they can choose the date that you know.
On the next payment date of a subscription, Paypal Subscriptions & Recurring Payment will generates a new order then you always know to delivery the product ASAP.
Your customers do like convenience
And you know they will accept ongoing payments if the benefit justifies it. Your customers can choose the delivery date. They can cancel the subscription (churn) on your website (if you allow) - that means cancel an order on the future. You see ? Everything is very simple!
Your customers will eventually become your cash cow.  Because a new subscriber costs a lot to get in the first place. But a previous subscriber usually costs a pittance to maintain.  Make sure you’re staying connected and still delivering a ton of value, and you’ll keep them happy for a very long time.
This will cause your subscriber base to continue to grow and grow and grow, and your profits with it.
0 notes
tradingprotools-blog · 7 years ago
Photo
Tumblr media
[GET] Ryan Deiss and Perry Belcher – Traffic and Conversion Summit
http://www.tradingprotoolsnews.com/2018/03/02/get-ryan-deiss-and-perry-belcher-traffic-and-conversion-summit/
Ryan Deiss and Perry Belcher – Traffic and Conversion Summit 2 (2010) | 10.1 GB Just One Short Weekend You’ll Discover How You Can Now MASTER Online Traffic and Conversion – Using Our Hottest New Strategies, Tatics and Tricks – So Powerful and Cutting Edge We Will ONLY Share Them Face-to-Face Finally,You’ll Get Unprecedented FACE-TO-FACE Access to Me, Ryan Deiss and My Trusted Team for 3 Full Days – Plus You’ll Get a “License to Legally* Steal” Our Little-Known and Most Jealously Guarded Traffic and Conversion Secrets in – This Private “Closed-Door” 100% Content” Brain Dump 100% Plug and Play Money Pumping, Models, Tactics and Tricks The vast majority of what you’ll learn during the 3-day event are what I call “Plug and Plays”. Quick fixes and tweaks that take minutes each to implement in your business, but when used in concert have a compound effect. You can easily double your business or multiply it 3X, 5X, 10X even 20X by the end of the weekend. And if you haven’t started yet that’s even better! Why? Because I can’t even begin to tell you how much money I’ve LOST by not using my S.M.A.R.T. Tactics. MILLIONS! You have an advantage. You’ll start right the 1st time and insure that even your earliest projects will be positioned for success. PLUS, you won’t have any bad habits to break or crap to un-learn. What Will One Weekend in Austin Do For You? Answer: A Lot! DAY ONE: TRAFFIC Session One: Boomerang Traffic “Re-Targeting is changing EVERYTHING about online advertising once you understand it you could easily TRIPLE your sales – You’ll learn exactly how it works and our best strategies like…” “Buyer Tipping” How to bring back buyers to your site that almost ordered and just needed a tiny push. “Big Deal Status” How to appear the “obvious expert” in your niche and rub out your competitors at the same time with FREE re-targeting. “No Opt-In Lists” How to create a brand new list without EVER a single new opt-in. “The Webinar Wheel” Re-targeting in this manner can generate big ticket sales of $1000 each or more 100% on autopilot. “The Big 5” The 5 Biggest bribes to bring back your buyers and how to impliment all 5 in about 30 minutes. Session Two: Dirt Cheap Traffic “MAJOR Changes in Google and the merger of Yahoo and Bing have opened up new opportunities for dirt cheap paid traffic as low as 2-3 cents a click – here’s how we are taking advantage of it…” “Make Google Your Affiliate” ONLY pay for ads when you make a sale using these little known “commission only ads” “Green ROI Keywords” How to divine overlooked “MONEY” keywords that make 5 to 1 ROI sales common place. “Red Pinning” Find EXACTLY where your customers live and how to target them on a LOCAL level for 10% of the cost of National Ads. “Tweet 2 Bing” How to leverage the new Twitter/Bing partnership using your own Twitter account even if you have 3 followers. “Magnetic Ads” How to create ads that ONLY draw customers to to click and keep the tire kickers from costing you a bundle. Session Three: Fusion Marketing 2.0 “Mail2Web is maybe the most overlooked area of traffic generation today. One of my associates built just built a list of 50,000+ buyers in a VERY competitive market using just postcards – I’ll share…” “Old Yeller” The 2 cent UGLY postcard formula that simply CAN’T be beat for lead generation from direct mail – you get the template. “Classified Ad Traffic” Turn dirt-cheap national classified ads that run for pennies a paper per week into “solid gold” green buyer leads for almost any niche. “My, Drop Me a Line” Trick that increase offline opt-ins by 1000% instantly. (I absolutely guarantee you’ve never heard about this sneaky little trick until now.) “Mail to VM” How to use a simple voice mail system as your 24 hr a day pitch man and how the “Press One” feature closes 20% of the calls. “Rip-Out the page” On simple little trick that triples the response rate for every single person that uses it. This one is shocking – Again, you get the template. Session Four: Mass Media Blueprint “One of the biggest mistakes marketers make is NOT maximizing winning campaigns. Did you knowthere is as much a 500X more traffic available from buying media than there is in PPC, It’s TRUE But you have to know how to play the game. In this module you’ll…” “The Big Boy Method” How to get the media rates of $1,000,000 company by uttering 3 little words to any sales rep. Guess what they are? “CPV Domination” How to swipe customers from right under your competitor’s nose. Imagine walking into a store, lining up all the customers and walking them across the street to your place… with their credit cards in their hands… We’ll lead the way. “Starve the Ponies and Feed the Stallions” 18,000 sales a month! Imagine. That’s what happens when you hit a winner in the CPA networks. It’s kind of like an Internet marketer winning “American Idol” only it ain’t that hard. This is where the whales swim. “Page Leaping” Most people glaze over content advertising because they don’t understand it or have screwed it up in the past. Here is a FACT: Content accounts for a full 2/3 of our traffic on Google Bing and Yahoo. Best of all, it’s wicked-cheap and it converts better than search. “Billy Club Ad-Buying” Got a winning offer? Don’t even screw with PPC. There is 20X – 50X more “Placement” traffic available online than PPC. Here’s how you can CRUSH IT in even hyper-competitive niches like FOREX (not for the faint of heart). Session Five: SEO Brain Suck! “This will be a heavily moderated multi-speaker PANEL talking about what’s working TODAY in SEO, both black hat and white hat. Yes, I said black hat, I didn’t say you have to use it, but it’s good to know what’s going on. You will leave with some information ONLY inner circle SEO’ers have, including…” “Link Buying the RIGHT way” Yes, you can BUY your way to the top of the search engines if you are in a big hurry. It’s real easy to make unforgivable mistakes here. Pay attention! “Automation Nation” Here which SEO Automation tools will get you on top and which ones will get you sand-boxed from real SEO experts that use these tools every single day. “Press Release Secrets” How would you like 1000 “Instant Links” from authority news sites for just a few bucks? This is a GREAT way to get some instant authority to your site. “The PDF Project” The best kept secret in Article SEO. This little trick can get you on top of Google for almost any niche term, sometimes in as little as 24 hours. PDF Files have a a HUGE shelf life that can get you clicks and opt-ins for years. “Back Link Boosting” Getting links is simply not enough, the real SEO pros know that by boosting the quality of the links coming in to you, your positions will increase 10 FOLD! DAY TWO: CONVERSIONS Session Six: Proven Conversion Boosters “Ok, I’m a testing maniac and if you have ever seen my “43 Split-Tests” know that my positive results combined can boost conversions over 1000%. YES 10 TIMES. I’ll be revealing live, tons of new conversion boosters that we have proven in large volume split testing.” “Talking Heads” This one is tricky. It can increase sales 50% or more or totally destroy them. The message is key and you will never guess the one that wins in a million years. Invisible Buy Button Trick” This one really shocked us with a HUGE bump and it only takes 30 seconds to set-up. I’m gonna give you the code. “Found Money” 34% of all online orders decline on the first attempt. Do this one simple thing and watch your declined orders drop by half overnight. “Domainer NO Brainer” Reduce your advertising cost by 40% -90% while watching your sales boost by as much as 50% using this new domain strategy. “Piggy Backing Competitors” This ‘brand” marketing strategy will increase your sales in highly competitive markets, drop you ad costs buy up to half and improve your reputation in the market. “Sticky Mails” Discover two simple messages that you can send out to your customers after they’ve already bought that were reduced return rate by 17% and increase your testimonials by as much as 300% Session Seven: Undercover Listbuilding 2.0 “BIG LIST = Power. That’s a fact and over the last year we have uncovered several new “covert” methods of list building that you may have seen us using but didn’t even notice. I have to admit some of these are pretty sneaky but all 100% above board. In this segment you’ll discover…” “Ninja Conversion Models” Understanding our two ninja conversion models will help you a ton. Either one of these produces an average of 10X the result of the ordinary list building pages. “Red Hot Lead Magnets” Want to convert 5X as many opt-ins? A hot lead magnet is the answer. This one change will easily double most businesses overnight. “Selling The Opt-In” 5 Simple bullets that sell your prospects on becoming customers, plus our proven and tested TEMPLATE to go along with it. “Kiss Pages” This little known tactic from the dating market crushes over free, ebooks, videos or mini-courses and only takes 5 minutes to create. “Sniping Leads From Google” You can GAME Google for leads, even though people say Google hates salesletters and squeeze pages we have proven both are WRONG! “Blogging for Opt-ins” I get tons of opt-ins from my blogs and you can’t hardly find the form. Less is more when it comes to blogs…but it has to be done just right. “NLP Arrows” We have proven in several of our niche markets that subtle arrows that you may not even see with the human eye effect opt-in rats by up to 50%. We’ll show you how to use them and give you our graphics TEMPLATES to rip-off for your own. “Free Standing Report Sites” Creating landing pages designed 100% to give away a lead magnet got me 22,373 new leads on my last launch with just two mails. [DESIGN TEMPLATE INCLUDED] “Opt-In Action Triggers” Opt in borders, placement, form fields and action button can sway an offer by 50% easy. Session Eight: Amazon Marketing “I predict that leveraging “The River” will be the #1 online marketing strategy for the next 18-24 months. Almost NOBODY really knows how to harness the power of this giant, but we do. Information products, hard products, even your own book… Amazon can change EVERYTHING for you in the instant that you “Get It”” “Free Google Ads from AMAZON” Yes, Amazon will buy ads for your products on Amazon, but you have to know the one hidden button that makes this happen. Of course we’ll share this with you. “High Ticket Amazon” Most people use AMAZON to sell books, music and low cost products, but did you know that you can sell $1500 high end trainings on AMAZON using their traffic and borrowing their credibility. Yes you can! “Amazon Strong Arm” This one really turns me on! Discover how AMAZON will help you to SEO your products in Google and with this 5 minute lesson you can get on page one for Google on Amazon for almost ANY term in 24 hours or less… Using Amazon’s strong arm. “The Selection Secret” By making this ONE tweak in AMAZON you can TRIPLE your sales of any item and it only takes a few seconds. This seems so basic, but I screwed it up and it cost me a FORTUNE to fix. “Amazon Warehousing” The Amazon FBA program can move your product above 100’s of competitors and reduce your workload by 95% all at the same time. AMAZON without this is just plain DUMB! You’ll get the whole system. “Amazon Domains” This one is for AFFILIATES! One simple domain trick that can turn a $12 domain into $12,000 a year in affiliate revenue with ZERO financial risk. Just 3 quick steps. You’ll get them all. Session Nine: Triple X Method 2.0 “Upsells, downsells, cross sells, and click button upgrades can make you TEN TIMES as much money as your core sales do – Marketer’s who don’t uses these actions are amateurs. Don’t be a chuckle-head…you can do this!” “Checkbox Ad-On Sales” Simple checkbox add on can pay ALL your overhead every month. This is a simple change to make no matter how non-technical you are. “Single Click Upsells” The BIGGEST news in the “A” list Internet marketing world. Understanding how to put the upsells in place will be critical to your SURVIVAL in the future. Who else is going to show you this? “Physical Copy Upsells” 40% conversions on an upsell? Yes! If you sell digital information you NEED this upsell, but if you over do it you’ll screw it up for sure…we’ll show you the right way. “The Bucket Offer” If apples cost $1 wouldn’t a basket-full for $2 be a slam-dunk sale? That’s the bucket offer, our second best converting upsell. (HINT: It works because people can easily do the math in their heads.) “Slack Adjusters” Big ticket upsells and downsells can totally change a slow day into a major victory. We are currently offering $1000 upsells on $27 product sites with a 4% conversion rate. Do the math on that. “Instant JV Backend Promotions” Don’t have a high-ticket backend product? Promote someone else’s and start raking in cash on the back end of your sales. We’ll show you where to find the highest converting offers and make the JV deals to assure the highest payout. “Webinar Trials” Webinar registrants buy BEFORE the webinar. I can show you how to make big money before your webinars even air. This is simple…but VERY easy to screw up. “The Un-Coaching Model” High ticket coaching makes tons of money but usually is a giant time suck. We have perfected a coaching model that our students love but requires only 4 hours a month to maintain no matter how many students you have. We’ll show you how to set one up in your own business… Session Ten: The Machine 2.0 “We automate EVERYTHING! If you think you have to do all the work you couldn’t be more WRONG! In the Machine, we’ll explain how we continue to build a set it and forget it business that works for us 24/7 and why you should too.” “Atomic Email Followup” The 15 part follow-up system that we use that generates 66% of all our sales! Learn this and triple your income OVERNIGHT! “Flipping The Affiliate’s Switch” Our #1 source of new affiliates are customers. This can be a delicate transition but you will never find a better affiliate than an uber-satisfied customer. I’ll show you how… “Membership Uprising” This simple strategy can take a reasonable number of your email subscribers to paying members and paying members to VIP level members every month on auto-pilot. Really slick and man does it ever work! “Evergreen Webinar Replay Traffic” How to get affiliates to promote webinar replays forever and keep s****** leads from their lists… “Mock Up Signups” Use our G2W clone webinar sign-up template to generate fresh leads for old webinars. “Rolling Launches” This is a BIGGIE! Imagine a product launch in your business going off every single week. This requires software [INCLUDED] and just a little planning (we have three every weeks). You’re gonna love this… DVD List DVD 1 The State of Online Traffic DVD 2 Traffic Boomerang DVD 3 Perry’s Picks and Proen Conversion Boosters DVD 4 List building Loopholes DVD 5 SEO Round Table DVD 6 More Perrys Picks and Boosters DVD 7 Reading Customers Minds DVD 8 Triple X Method DVD 9 Fusion Marketing Panel DVD 10 Still More Perrys Picks and Mobile Advertising DVD 11 Mobile Advertising Continued DVD 12 The PPC Guru
0 notes
attendantdesign-blog · 8 years ago
Text
New Post has been published on Attendantdesign
New Post has been published on http://attendantdesign.com/varnish-software-how-to-avoid-the-tendency-for-multiple-dependencies/
Varnish Software: How to avoid the tendency for multiple dependencies
We’ve come to agree with packaging is essential for turning in something from sofas to Software program, but is it truly?
This is a visitor post for the Computer Weekly Open Source Insider blog via Arianna Audio in her position as discipline engineer at Varnish Software — Varnish is a content transport specialist and its HTTP accelerator era powers content-heavy dynamic website (as well as heavily ate up APIs) inclusive of Vimeo, Twitch and The NY Instances.
Audio writes as follows…
  Take Ikea, which has teams devoted to optimizing packaging, warehouse space and especially, fees. however is all this actually greatest for the customer? No. Due to the fact after a patron finishes unloading their roof rack of satisfactory, neat software, they’ll then must ‘extract’ the whole thing themselves, collect multiple dependencies after which – in the event that they have any electricity and sanity left – recycle all the boxes and tidy up. True tale time
The real story: I just sold a brand new sofa from Ikea and when I used to be completed placing it all together, I discovered 4 screws left over and I needed to start all yet again.
This is precisely the equal kind of maddening scenario you could come upon while preparing Software program packaging, for instance, as a launch supervisor or as a quit-user putting in programs.
Ikea, of direction, can’t truly get rid of packaging without risking damage to the bodily products. Fortunately, Software has greater alternatives. cease users don’t want to waste time putting in applications; they just need to use the Software. So how can we free them from the so-called ‘dependency hell’, having to make investments a number of their own time looking to collect plenty of moving parts?
A dependency tendency ascendency
I’ve given this a number of concept sporting certainly one of my many hats, 2nd-line technical support. Our Software helps multiple operating machines and we’ve got several variations of it available.
when a purchaser calls with a problem, I frequently need to install the version he or she is working on. Always, the purchaser’s installation has more than one dependencies. This means I need to download the identical libraries to duplicate the trouble… and so forth and on.
In Software program, additives evolve all the time, at the side of dependencies. Reducing thru these dependencies is unnecessarily time eating. Containers like Docker are the nice remedy I’ve come across to clear up all this. Once you’ve invested the time defining the supply record for every of your Bins you may then installation your favorite Software program, avoiding the ‘hell’.
every container runs a unique piece of Software program/application and it’s as much as you to determine if you want them to interact or now not.
I’m dreaming of Software program heaven
In my dream situation – and I see this simply taking place – the Software program industry moves to an area in which packaging is no longer vital in any respect.
For most builders, the very best choice could be to construct the Software program directly from the Source code. however, because the tune is going “you couldn’t always get what you want”, proper?
Happily, Packing containers like Docker give us what we need!
  Agile and Scrum Certification Schooling
In a bid to improve their activity possibilities and venture management competencies, many a college students are passionate about attending an Agile Scrum Master certification Education. Let us take a close observe why it’s far critical, what are the numerous certifications in the market and which one is the first-rate for you.
assignment management had a drastic exchange when Agile and Scrum practices came into being. As an end result, the personnel certified with Agile and Scrum certification started getting greater mileage from the recruiters and their existing employers.
Corporations and industries across numerous domain names use Agile and Scrum to better manage their projects. Scrum enables its practitioners to turn out to be greater Agile. Organizations are benefitting from Agile inside the following regions: Agile facilitates discover ways to reply speedy and correctly to risks and cut-off dates. Faster choices that assist in quicker shipping of products. allows broadening complicated software via breaking them into attainable modules and preserving song of module transport. Enhance the best of latest deliverables as well as current merchandise by way of making sure sound trying out, development and collaboration among teams. Commercial enterprise will become more dependable and credible as an end result.
Certifications on Provide
Permit’s do around off of the market. There are numerous certifications devised by exclusive Agencies. Some famous ones are:
certified Scrum Master from Scrum Alliance: Scrum alliance, a company centered on Schooling applications has devised this certification. it is a beneficial certification for practitioners looking to achieve success in mission control, overlaying basics to advanced level principles. The certification ensures check takers are now gifted in Scrum values, practices, and packages.
Scrum certifications from Scrum.Org: A stringently devised certification this is granted to the ones who have displayed a suitable level of understanding within the evaluation. The disadvantage is that the certification is broken into many tracks. The certificate is lifelong and does not require any additional payments or renewals.
Agile PMP: Certified project managers are always in demand. The Agile PMP certification helps examine a candidate’s expertise over Agile in an assignment management state of affairs. How prepared they’re for the actual world. The certification is dependent on the route material based on standards posted by means of the venture control Institute requirements Committee. A direction that has matured with time. However, slightly antique wherein a market prefers new buzzwords and new certifications.
But, one certification that has set itself other than the gang and is the maximum trendy component in your resume is – the Agile and Scrum certification from EXIN.
Agile and Scrum Certification from EXIN
EXIN Agile Scrum Grasp certification is aimed at all professionals who need to prove their mettle within the arena of software engineering and assignment management practices. Evolved by using worldwide professionals, it’s far in which competencies meet actual global understanding. The certification direction covers various modules like product provider making plans, utility design, software development, testing and so on.
There are exams a candidate is required to take, the first is the EXIN Agile Scrum Foundation and the next EXIN Agile Scrum Master. There are a number of job roles an authorized practitioner can circulate to including Business Records Supervisor, carrier Supervisor, Corporation Architect and in the end a first-rate Statistics Officer. You can go for an Agile Scrum Certification Online direction along your job and get destiny and market-geared up very quickly. The Worst Form of Multiple Sclerosis
What exactly is the Worst Form of A couple of Sclerosis? What occurs whilst you are diagnosed with it? whilst do you get it? How will my health practitioner realize I have it? These are superb query while it you understand not anything or very little approximately More than one Sclerosis. Many human beings with MS are actually afraid when they’re first identified with this ailment. This will be especially actual in the event that they’ve recognized someone who has had a hard path of MS.
Due to the fact, More than one sclerosis is the main motive of incapacity inactive young adults, it is thought to be a especially traumatizing infection. Many humans don’t even recognize what it’s miles or what takes place to you when you get it. MS has often been fallacious for one of the illnesses “Jerry’s kids” suffers from. Here is a short clarification of what it’s far.
A Brief clarification
A couple of sclerosis is, in short, an ailment of the CNS or valuable worried system. The nerves that visit and from the brain short circuit after becoming damaged as a result of infection. Because of this damage, your frame doesn’t acquire the best signals it desires to carry out properly.
This nerve damage can purpose false sensations, like burning or tingling within the arms and palms or legs and feet. It could purpose numbness or tightness around the chest. It could additionally purpose you to lose your balance, slur your speech, or lose manage of your bladder.
Four Foremost Types
The Four Important types of MS are Relapsing-Remitting (RRMS), Secondary-Progressive (SPMS), Modern-Relapsing (PRMS), and Primary-Innovative More than one Sclerosis (PPMS). the primary is the most commonplace and the remaining is the maximum rare Form of MS.
RRMS
Every kind is characterized through a distinct sample or direction. inside the first, RRMS, a person will have acute attacks of one or greater symptoms. These assaults can final from some days to weeks, accompanied via complete or partial recuperation of all or some of the symptoms.
SPMS
The second one, SPMS, normally develops after having the primary Form of MS for some years. it’s miles characterized via an extra steady development of symptoms ensuing in extra disability as time goes by.
PRMS
The third Shape of MS, PRMS, shows greater Progressive incapacity from the very beginning. However, Due to the fact it’s far a relapsing Shape of the sickness, you may have A few recuperation from the signs of the preliminary attack. more than likely, you may keep an awful lot of the incapacity introduced on via the attack and hold to worsen through the years.
PPMS
The maximum rate Shape of MS, PPMS, is characterized by means of development of incapacity from the very beginning. You’ll rarely have any enhancements in any of the signs that increase from Every assault. With Each attack, You will get step by step worse. Fortuitously, as I stated earlier, this is a completely rare Shape of MS. Dependencies and Contingencies
A Gantt chart is a beneficial device for studying and planning initiatives. It facilitates you to devise the activities and the schedules to complete the duties. Additionally, It could guide you in making plans the resources for Every pastime as regards to the wide variety and type of resources.
Once a mission is ongoing, a Gantt chart assists you to monitor the development of the undertaking. Any assignment not completed on schedule may be identified and remedial movements may be taken to put the other responsibilities lower back on timetable.
As you establish the sports for the project, you will be aware sequential and parallel activities. Sequential sports are activities must be finished in the collection. The undertaking needs to be completed before the following venture may be started. they’re based sports due to the fact they rely on the finishing touch of the previous venture before the subsequent challenge may be commenced.
Parallel sports are sports that may be commenced concurrently. They do not rely on the finishing touch of any challenge for them to be started. As such, the Supervisor has the option off while to start the interest as long as they meet the scheduled venture deadline.
The benefit is managers can agenda the activities in the course of the length whilst assets are to be had. The threat is humans would possibly tend to take away the interest until the very end and if all parallel activities are driven to the very cease, it would result in a scarcity of assets. A few parallel sports is probably depending on the of completion of Some obligations before they could begin.
There are two sorts of dependencies to be considered, the predecessor and successor activities. The predecessor sports are essential due to the fact These are the activities which if now not finished on time will affect the start of this project. The successor sports are equally as vital because Those will tell you the impact and repercussions on the prospective obligations if this activity isn’t always finished on the timetable. Watch each dependency intently.
while drawing up the Gantt chart, begin with the list of activities. Start with the principal activities. You may enlarge the fundamental sports afterward with the subtasks. At the start, it is vital which you recollect all of the predominant sports Because missing a prime hobby should imply the downfall of the challenge.
Set an anticipated period for Every of the major sports. Offer for Some contingency in your estimates. As an instance, human beings ought to get unwell, inclement climate or other uncontrollable conditions could stand up and affect your schedules. Offering contingencies will assist limit adjustment of challenge cut-off dates. Depending on the kind of mission and your enjoy, contingencies ought to range from twelve to 20 percentage of the full challenge length. This is not a trendy and any contingency, if ever, relies upon at the judgment of the assignment Manager.
management and stakeholders will try and reduce down the mission time since the longer the task takes, the more costs could be incurred. challenge managers and crew participants could choose to have more time to permit them A few flexibility and time to atone for unexpected events.
0 notes
renaroo · 8 years ago
Text
Twisted Legacy (11/25)
Disclaimer: Transformers and related properties belong to Hasbro Warnings: Canon-typical language and violence, Psychological torture and horror, Post-war politics, Canon divergence/Loose canon, Hospitalization and illness, Cultist indoctrination Rating: T Synopsis: [Canon Divergence from MTMTE and exRID #54] The legacy of the Primes has had a tainted past, one that weighs heavily on Optimus, his supporters, and those who seek the legacy for the future. But as they look forward for themselves and for Cybertron, a darkness looms that threatens to further corrupt the unsteady peace of their planet with its curious claim to be the Hand of Primus himself.
It’s up to Optimus, Windblade, Rodimus, and their teams to try and save all Cybertronians from this mysterious threat and, perhaps, change the future for the better if they can.
A/N: Thanks everyone for waiting on this one! We’re on part THREE! All things are coming together, all the different gears are getting turned, and I hope you all enjoy what’s in store because it’s about to get, let’s say, complicated ; ) 
Special thanks to @secretlystephaniebrown, squiggol, and Isame for the feedback! I really appreciate it!
Part III: The Risk of Saving the Guilty Chapter 3.1: The Whispers Travel
In a reasonable world -- which Cybertron seemed determined to prove it was not -- but in a reasonable world, there would have been some sort of system in order that would have given Knock Out the immediate access he deserved for the laboratory he had spent the last several weeks of his life and work in for Starscream.
And Starscream -- that was another untrusting blunder within itself. 
If only Knock Out did not find himself so weak for a decent paintjob. He probably would have made certain his arrangements were more permanent. 
Ever since the Lost Light survivors had come through the space bridge, it was a literal struggle each solar cycle to get back into the room and to his research. Most of which had been left completely abandoned by his fellow doctors. 
Honestly, Breakdown would have been more assistance in the lab at that point than the Cybertronians. 
With a long vent, Knock Out threw out his credentials again for the snarling guards and did his best to ignore the way being a colonist was giving him extra looks that most of Cybertron did not. Then he looked, with annoyance, once more to see the galactically famous Ratchet alongside the other doctors busied with the same assortment of bots. 
“Well,” Knock Out drawled out, running his sharpened nails across his desk of untouched research. “What is that idiom I keep hearing about if you can’t beat them...” 
Strolling over to the medical bay, Knock Out earned those funny looks once again, as if it was a Cybertronian thing to always wear one’s faceplate like it was about to fall off, but he was then promptly ignored. 
“Wheeljack, can you give me anything at all that soft-melds to protoform?” Ratchet barked out. “I know it’s out there--”
“Was out there, Doc,” Wheeljack informed him with an awkward rub of his neck. “Cybertron’s been in short supply of hot spots since before the war. The sort of melding material used to treat sparkling injuries would be basically a lost art.”
"You are the highest scientific mind on Cybertron, and you’re telling me you can’t work something up to suit our needs?” Ratchet asked harshly.
From behind them, one of the awake patients -- a blue and yellow jet who Knock Out was unfamiliar with -- made a point of waving a hand in the air at them. “Since I’m here on Cybertron now, too, I can actually contest that claim--”
Rounding on the jet without hesitation, Ratchet pointed a thick finger at him. “Brainstorm, you are a weapons expert. I’m not going to let you build him into a giant gun. We already have a captain who was a giant gun. I’m not willing to have a second!”
Brainstorm crossed his arms and tilted his helm, looking positively offended. “It’s not only guns. I made an entire time machine out of brief cases, in case you forgot--”
“We didn’t!” they all said at once. 
The green medic from Caminus that Knock Out hadn’t bothered to learn the name of yet then apathetically patted Brainstorm’s head. “You’ve been stuck on repeat about the briefcase for days now, Brainstorm. It’s time to move on to something else.”
“I know,” Brainstorm grunted, rubbing at his neck tenderly. “I don’t know why, but it’s at the forefront of my brain module.”
“Well, either shut your brain module off again or move it back to thinking about guns, because we don’t have time to waste on this anymore,” Ratchet snapped before looking back to Wheeljack. “Can you whip me something up to help rebuild the protoform layer?” 
“Undoubtedly,” Wheeljack said. “I’m just worried about how the mesh will hold, Ratchet. Injuries this deep and this bad... Well, in the war weren’t they mostly Cold Constructed bodies?”
“I’ve made it work on forged and constructed cold millions of years before the war. As far as I’m concerned, I’ll just be proving to Rodimus again that his tailpipe isn’t shinier than the rest of ours,” Ratchet said with a wave of his hand.
"I just feel like patience would get us along much further,” First Aid encouraged. “The more time we allow for self-healing--”
“The more time Starscream has to weave whatever version of the story he feels like it,” Ratchet interrupted the younger doctor. “Especially since Brainstorm’s questioning was no help.”
“I can’t help what I can’t remember -- no one’s driven more crazy by unused brainpower than me, I assure you!” Bainstorm defended.
Having been left out of the intellectual loop for long enough, Knock Out stepped forward toward the CR tank in question, hand on his chin as he hummed slightly to himself. It was a vain attempt at getting the other scientists’ attention, but at the very least it worked. 
Raising a brow, Knock Out looked back at his fellow doctors. “On Velocitron, most every mech is, what do you call them again, ah yes, forged. And given the frequency of racing and the dangers that come with it, we get plenty of deep protoformic injuries. As a doctor, I keep protomatter synthesized in my labs. It’s not exact, but it is nearly seamless when worked with the right hands.”
The doctors stared at him for a moment, most seemingly impressed, before turning toward the one face that was far from ecstatic about Knock Out’s explanation. 
Ratchet crossed his arms. “Do you have access to Velocitron at the second?”
Knock Out cycled his optics. “Well, no one has access to the space bridge at the moment--”
“And do you have any of this here?” Ratchet continued harshly.
“Well, no--”
“Then you’re wasting our time and Wheeljack still needs to make some of our own,” Ratchet snapped, then turned to Wheeljack. “Are you going to get me what I need?”
Knock Out couldn’t help but drop his shoulders at being so quickly iced out of the conversation again. He stepped toward the CR chamber to get another look at the half mangled mech inside. “Fine, be that way. I swear, it’s as if you don’t even really want help.”
“I assure you,” a deep voice said from the shadows on the other side of the CR chamber, nearly causing Knock Out to jump back in shock. The quiet swordsmech who had been in the lab since Ratchet’s arrival leered at Knock Out. “We are giving Rodimus all the help he needs.”
“You’re still here? Tell me, do you bots ever take a recharge?” Knock Out asked. 
The swordsmech’s steely blue gaze merely narrowed at the notion.
“Nevermind,” Knock Out sighed. “Honestly, forget trying to help any of you with these Eukarian casualties.” He strolled toward First Aid. “I’m more interested in the Rust Killers and how our research is going anyway.”
First Aid tilted his head at Knock Out. “Seriously? Knock Out, I haven’t had any time to vent, let alone continue working on that project since the injured came in--”
Having had enough of the social customs, Knock Out dropped his half cocked smile and showed a full scowl toward the doctor. “That project? Terrorists nearly wiped out your planet and all of the colonies in the Council of Worlds, and it’s just some side project?” 
“To my oath as a doctor, everything is a side project,” First Aid responded snippishly. 
“What do they teach Cybertronian doctors? The needs of the few outweigh the many?” Knock Out growled. He turned toward the Camien doctor. “And what about on Caminus? Is a doctor’s duty only to those they’re loyal to first and foremost?”
Velocity quickly raised her servos. “I’m not really here to fight. I’m not even working right now. I was just leaving with Brainstorm to meet with the rest of our amicas--”
"Everyone has their own little projects,” Knock Out sighed before walking back toward the door. “If no progress is being actively made on the Red Rust research, then there’s no reason for my brand of genius to be around. Though if you believe the Council of Worlds will continue to sponsor this lab and its experiments without further progress, you have another thing coming.”
First Aid threw up one of his hands. “But you’re on the Council of Worlds.”
“And I’m interested in the Red Rust research,” Knock Out reminded him threateningly. “I’m going to take a nice drive, test my engines and blow off some steam before I reconsider making a report about this misplacement of funds, First Aid. I’ve enjoyed working with you while you’re on task. Hopefully we can do that again.”
No one stopped him as he left the room, but of course none of them probably knew a proper retort for the slew of accusations Knock Out had just flung at them. 
After all, his interests in the Red Rust were for his own self interests -- that and his conjunx. 
As always with Cybertron, though, there was more than simply their own concerns going on. 
He was in the halls for maybe twenty seconds before Windblade collided into him. 
“Why, I never!” Knock Out ground out, checking his paint job for any scratches. He then leered at the cityspeaker. “Delegate Windblade, if you wish for my attention, use your voice box.”
“Apologies, Knock Out,” she said, mid-vent. “I am in a rush and I need to get to the shipyard before it’s too late.”
“No you don’t!” Chromia called out in pursuit of her delegate. “Windblade, you can’t leave with the Prime--”
Surprised, Knock Out tilted his head at the jet. “I must concur with the bodyguard.”
Unlike with the doctors, his suggestion seemed to at least carry some weight where the cityspeaker was concerned and Windblade stopped in her tracks, looking toward Knock Out. 
“There’s something bigger going on and it involves Optimus Prime directly -- you’ve had to have seen the news! If this Error is after the Prime and the Matrix, then there is no reason to send him alone into space--”
“Unless it’s to keep the rest of us safe,” Knock Out said, raising his brow. “You are right, Windblade, in that there is something bigger going out here. And considering I have been approached by Lord Starscream for my scientific knowledge already, I have to say he seems to already understand that perhaps even more than you.”
Her optics narrowed. “What do you mean?”
“Sometimes, Delegate Windblade, it is our job as leaders, as doctors, as mechs of power, to understand when the needs of many outweigh the needs of the few,” Knock Out explained. “And if the danger lies with the Prime, there was probably more than one incentive for Lord Starscream to send him alone into space and away from the citizenry.”
Chromia vented with relief at someone spouting sensical words for once.
But Windblade’s jaw merely squared itself. “The holy and powerful position of the Prime, for many of us -- that hope only the Prime’s light can provide? It can squash a whole lot of the many when in the wrong hands, Delegate Knock Out.”
“Maybe,” Knock Out said, crossing his arms. “But are you willing to leave your position here? Let Lord Starscream run the Council of Worlds without you? Alone?”
Windblade’s wings dropped slightly.
“Energon for thought,” Knock Out shrugged before continuing on his way out. “Do try to make the right decision. For all of us.”
Without further interruptions to his day, Knock Out went for his drive. 
Ultra Magnus was not sure what gave him more work -- when Rodimus was in charge himself, or when he was forcibly co-captaining with Megatron. But there was one thing he was certainly learning under the current fear and unease: Megatron in control of a ship of Autobots, by himself, under highly suspicious circumstances, and just after most of the original crew had mutinied, was the hardest of the three options.
So hard, in fact, that the captain had hardly left his quarters in the last week of disfunction, and their ship had not yet left Eukaris’ airspace as they awaited news of the survivors. 
The former second-in-command should have happily taken charge of their situation. After all, he mostly ran things while Rodimus was the sole captain. But the burden was greater.
There was a burden of knowledge. Of injustice.
And as the former Duly Appointed Enforcer of the Tyrest Accord, there was quite possibly nothing that caused his fuel tank to turn more in on itself than the idea that he was assisting severe injustice.
Excusing himself from the bridge, not that anyone there was doing anything under their inactive orders, Ultra Magnus walked to the captain’s office and knocked politely once. 
When there was no answer, he sighed and overrode the code to let himself in.
Megatron did not even budge from his desk. 
“I have been making contact with Cybertron over the last week,” Ultra Magnus informed his captain. “The next inbound ship will have Velocity, Brainstorm, one of the other recovered members of the away team, and the others who had departed for Cybertron.” When the former Decepticon did not look up, Ultra Magnus tilted his head. “I assumed you would want to be informed that we were about to have a medical officer again. There have been far too many unattended injuries from barfights without one.”
“Which made me wonder why you had not closed down Swerve’s,” Megatron replied before finally glancing up to Ultra Magnus. 
Ultra Magnus stood in complete attention. “Are you asking me as captain to do that, Sir?” he asked. 
“No, that would elicit more distrust and anger from an already formerly mutinous crew. As well as upset Swerve who is among the few of our group that I trust after that mutiny,” Megatron responded. “Given, he is vocal about his hatred of me, but of course, it’s the vocation of it that makes me trustful.”
“Then that, sir, would by why I have not made any such action yet,” Magnus responded. “We are in a precarious situation.”
“We are,” Megatron agreed, folding his servos together before his face. “We’re having two conversations at the moment, aren’t we, Ultra Magnus?”
“About the crew and about the situation with the recording?” Ultra Magnus asked. “Yes, we are.” He stepped closer to the desk so that more hushed tones could be used by them both. “Have you determined yet who we may trust with the information?”
“I’m not entirely convinced there is anyone to be trusted with it,” Megatron replied briskly, optics flickering in Magnus’ direction. Their steady redness was deep, calculating. As sharp as ever. “We may need to discuss with Ratchet, either directly or indirectly, and bring him in. If he understands the enormity, he would understand the need to move Rodimus onto the Lost Light for the rest of his recovery. He needs to explain what happened to us directly. Having him on Cybertron, having only half the information, it makes everyone at risk.”
“Agreed,” Ultra Magnus said. “Velocity’s arrival may give us that direct link to Ratchet we need. It would require more time without a medic in the long term, unfortunately, but you are not allowed on Cybertron and I am not comfortable abandoning my post by you under the current climate.”
Megatron nodded slowly in agreement. “We have to move quickly.”
Pressing his lips into a thin line, Ultra Magnus vented loudly.
Tilting his helm suspiciously, Megatron glared at Magnus. “What? What is it?” 
“We may need to move quicker than originally planned, Sir,” Magnus explained reluctantly. “I came in here because the same ship which is carrying crew members back from Cybertron has... another passenger.”
“What?” Megatron demanded. He gritted his denta and shook his head. “Damn Starscream.” He looked back to Magnus. “Who did he send?”
“This is where we may find a silver lining,” Ultra Magnus attempted to break the news easily. “It is someone who is going to be on Rodimus’ side, and our side if we can appeal to him.” 
Undeterred, Megatron narrowed his optics. “Who did he send, Magnus?”
Venting again, Ultra Magnus answered, “Optimus Prime is inbound for the Lost Light.”
At first, Megatron sat in his seat patiently. Only his tapping finger on the desk gave any testament to the rage building up inside. 
“I may need my office to myself for a moment, Ultra Magnus. Please be the one to greet the Prime upon his arrival,” Megatron said formally. 
Already on his way out, Ultra Magnus did not bother to look back even at the sound of a fist going through a metal table. “It will be my pleasure, Captain.”
"Rattrap, I need to know where these cultists are in my city.”
Lord Starscream had not needed to speak twice for Rattrap to know what his role was -- what his usual role was. He was, after all, the rat in every wall throughout Metroplex. He had his optics and audial receptors set everywhere. 
There were the usuals that Starscream wanted close watch on, knowing the comings and goings. Any of the delegates from the Council of Worlds, and especially Windblade and her ever present bodyguard. 
Citizens of Cybertron in high concern were also Blurr and Ironhide, any of the most outspoken against Starscream’s rule. He especially wanted attention paid to the disgruntled former Decepticons in the slums. Of those he watched, though, Rattrap found the most interest in Blurr’s bar. 
When Rattrap could manage to be one step ahead of Blurr and not be bounced from the establishment, of course. A most difficult thing considering the speedster’s famous quick feet. 
But lately there had been higher priorities that Rattrap found himself concerned with. 
There was Optimus Prime and his crew, the followers of the Primal religion who flocked to him. The former Lost Light crew trying to integrate to the Cybertron they formerly had rejected, and more. 
As a spymaster of sorts, Rattrap was finding his work cut out for him. 
And the cult -- this Error and his followers -- were such a nonentity for the most part that each day passed without so much as a sign breathed about them other than the general fear. 
They were getting dangerously close to Starscream’s plan of rounding up any and all bots with a red and black paintjob becoming a reality. Whispers of it were to the point that every paint shop and body work house in the city were booked for weeks. 
Rattrap needed to find information. Whether he got the credit for it or not, he was one of the pillars keeping their crumbling society from utterly collapsing. 
Then, slowly, it came to Rattrap’s attention that of all his rounds searching the city, he had yet to check the depths -- Metroplex’s underground and the very energon rivers that Starscream himself had tapped into before. 
“Well, if there’s not anything up here, it’s gotta be down there, right?” Rattrap asked himself, heading toward the nearest underground entrance. 
At first, his hunch yielded little. 
The reservoirs of energon, both used and unused, were weak and diluted, which at least made travel somewhat easier. Especially in Rattrap’s beastmode. 
He was nearly ready to give up on the idea entirely when he began to hear hushed tones from one of the less populated, and thus less energon flowing, districts’ pipelines. 
Suspicious, he followed the noise along the pipes, the vibrations riding up his limbs as he walked across the pipes and toward the constant rumble. Until those rumbles became words, low and distant. Then louder.
The closer he came, the more Rattrap was put in mind of an old sermon in the days before the War. Words about the Primes and Primus and things that Rattrap had hardly given consideration then and certainly had grown some skepticism toward these days. 
And he worked for a genuine Chosen One. 
After what felt like hours of travel, Rattrap finally came to where the rumbles became words he could make out, and a soft glow of fire light gave him warning for what was around the corner. 
“Bingo,” he whispered to himself. 
“Primus’ Hand has guided us to this point,” a deep voice, unmistakably the same a the mech who had multiple times at that point taken over on the airways. “His fire has lit the way, and it has showed us his chosen vessel. Fire cleanses this world and all others which owe Primus its domain. And it shall soon judge those who have come forth as false Primes. As nonbelievers. As unworthy. And it will be with your assistance, with your sacrifices, that Primus’ will shall be done.”
There were cries and screams of desperate jubilation in response. 
“Well, scrap,” Rattrap muttered quietly to himself. “Just my luck. I missed the descriptive part of the meeting and made it in time for preaching to the choir.” 
“And we shall start now,” the voice continued -- deeper, louder. “By lighting a fire to destroy those who would put our work in danger.” 
Rattrap tilted his helm at that just before the light grew brighter from around the corner and then, suddenly, he saw the trickles of energon that were in that corridor begin to spark with an unsettling light.
“Oh, damn!” Rattrap cried out, realizing what was happening and turning to race away just as the sounds of roaring flames began coming his way. 
"Well isn’t this just a rotten way to go!” Rattrap cried out somewhat hysterically as he could feel the flames licking at his tail and back paws. Then there was the tell-tale crackle of the energon reservoirs catching fire. 
Despite imminent death, Rattrap leaped uselessly in an attempt to race ahead of the upcoming explosion. His cries echoed nearly as loud as the boom to follow. 
But before his body burned and his spark extinguished, he turned off his optics. 
It kept him from seeing whoever it was that grabbed him, hard, almost like a collision. It nearly knocked the steam out of him before darting through the air, its coolness rushing over Rattrap’s beastform in comparison to the growing heat they were leaving behind. 
His spark was still skipping pulses as it all came to a stop and he realized that the explosions were a great distance away from wherever he was currently.
“I’m alive,” he said, cycling on his optics as he was gently laid on the ground and allowed to transform back into botmode. “I’m alive! Oh sweet Primus!”
“I told you, this was an interference that was supposed to happen. It was a good thing, calm down, Prime.”
Recognizing the voice immediately, Rattrap turned around to face his savior. “Windblade? But you were at the capital and--” he paused, looking over the jet curiously. Her paintjob was different, and there was something different about the decorations of her faceplate. And there was no other color but black and red. “What the...”
“I still think this is a mistake,” a second mech said, drawing Rattrap’s attention to him. “Even if Rattrap is supposed to be around later... does he have to be? He never made my life any easier after all this. Or yours.”
Rattrap looked at the mech in shock. Like Windblade, the paint was different, even the build was different in little details that amounted more and more the longer Rattrap stared. 
But beyond the black and red and the increased size, there was no mistaking it.
“Rodimus?” Rattrap asked, optics wide. “But you’re in the CR chamber.”
A displeased look grew on the mech’s face and Windblade gave a little vent. 
“And this is where our job is about to get very complicated,” she said toward Rodimus. 
0 notes