#they’re so talked over or plainly ignored on social media I think
Explore tagged Tumblr posts
Text
Is there like. A place for intersex ppl who didn’t know until recently in intersex communities online.. I guess that sounds really fucking stupid outloud idk I’m thinkingg abt stuff..
#as far as I know the only way to find out if ur intersex is to ask a doctor#but I don’t trust the majority of doctors and also.#American healthcare. no health insurance. I haven’t seen a doctor since I was a little kid#BUT ANYWAY#I’ve thought I might be intersex forever but whenever I think abt trying to find out#I get nervous and yell at myself like I’m imposing on a community of hurt ppl and I like#shouldn’t intrude on it if I wasn’t there from the start?? if that makes sense#idk if ur intersex lmk#enter my ask box I’m scared. lol.#It makes me worry that liek. even if I found out I am intersex#I’d probably just imposter syndrome myself so hard it wouldn’t even matter#IDK!!!!!!#I wish I had more intersex voices available to me I guess#they’re so talked over or plainly ignored on social media I think#and I don’t know anyone irl#and like nobody talks abt it#so many ppl don’t even know that being intersex is like. a thing#I wanna hear more abt it. and like#if it’s ok for me to wonder if I am and if it’s ok for me to#if I turn out to be intersex. participate still in intersex discussions and communities#again it sounds kinda stupid outloud but idk#I have this feeling I’ll be pushed out if I didn’t know all along or#if I didn’t suffer with it or something#I think bc ultimately maybe it doesn’t matter??#bc like. I have an agab + a gender identity now. I’m trans (sorta)#so wether or not I’m intersex doesn’t like. really matter?? maybe?#but I’ve wondered abt it for so long and I still want to find out#I don’t think I’ll ever be able to find out#but Im wondering now like. even if I found out#would I even be welcome in intersex communities?
0 notes
Note
Alex + Julie "You didn't deserve that... You deserve so much better."
you sent me this prompt a million years ago i'm sorry it took me so long to answer it. warning for friendship breakup angst. there's no carrie redemption arc in this fic but there IS alexjulie friendship.
with love on their throats | g | 1.7k | alex&julie, past julie&carrie
ao3 link in reblogs!
--
Julie doesn’t mean to ignore the boys all afternoon, but Carrie’s birthday was hard last year and so far, this year doesn’t seem to be getting any easier.
She has the foresight to turn her phone off, at least, this year. She can’t handle the social media posts from everyone else at their school. They’re probably in Carrie’s pool, in her kitchen, in her living room. Probably throwing around the throw cushions that Julie’s mom taught her and Carrie to sew covers for when they were ten. Maybe even smashing the glasses Julie used to drink Trevor’s homemade iced tea out of when she would come to visit before Carrie got home from sport in the evenings. The idea of seeing these familiar spaces still just… out there, existing, rather than stuck in the past along with her and Carrie’s friendship, makes Julie nauseous.
Plus, there’s the added bonus of not being able to text Carrie something reckless she might regret.
So her phone’s switched off. Her dad knows not to bother her today anyway, since he had a front-row seat to whole Carrie mess when it happened. He just shot her a sympathetic glance over breakfast and hasn’t spoken to her at all. Carlos is at a friend’s house, and wouldn’t bother her even if he were home.
It’s just the ghosts Julie is avoiding, locked her bedroom door, perched on her window seat with her headphones on, watching YouTube on her laptop.
Which means it scares her half to death when Alex waves a hand in front of her face.
She yanks her headphones off and curses, sharp and a little louder than she means to, and Alex jumps back like he’s been burned. “Julie! Uh, hi, hey. Sorry to scare you.”
“Why didn’t you knock?!” she demands, still breathless. “It’s you, you know better! Boundaries!”
At least Alex has the decency to look shamefaced. “I know, listen, it’s just -- we were worried about you! And we did knock, a lot, actually, but I don’t think you could hear us? So I said we should give you space but Luke and Reg started psyching each other out, and Luke’s never been able to handle space the same way since the Caleb Covington Kidnapping Incident--”
Which, okay, yeah, that’s fair enough. Julie still shudders at the memory of the Caleb Covington Kidnapping Incident.
“-- so then I got nominated because, well, Reg worried you might be getting changed or something, and that makes me the obvious choice, not that I wanted to be the obvious choice, just that -- okay, I’m doing a bad job, what I mean is --”
Finally, she decides to put him out of his misery. “Alex, stop. It’s fine.”
Relieved, he lets out a breath and leans on his knees, looking up at her with pretty, apologetic eyes. “Still. I’m sorry. I really didn’t mean to frighten you, we just… got worried. And wanted to see if you were okay. You’ve been in here all day.”
Julie nods and looks back at her laptop, where the YouTube video is still playing, and pauses it.
She hasn't looked back over at Alex when he says, cautious, "Are you okay?"
When she replies, “Yeah,” it isn’t because she wants to lie to him, necessarily. It’s more because she doesn’t know how to untangle her feelings enough to lay them out in front of him. More because it’s hard to explain why she still misses someone who she knows hurt her, who she knows should have known better.
It’s hard to explain why she feels guilt, and grief, over something she chose to let go.
The window seat dips when he sits down next to her, fingers twisted together in his lap, shoulders rolled forward. He’s offering her the tiniest, encouraging smile in the form of a little quirk at the corner of his mouth. Julie loves him so much that it softens the heartache, just for a moment.
But then it returns. Just as strong. Just as unreasonable. Just as painful.
“It’s Carrie’s birthday,” she tells him, without even knowing why she says it.
“Oh,” he replies, which seems fair. She doesn’t know what she’d say in his position. He chews his lip, a crease forming in his brow. “You guys used to be friends, right?”
God, can she talk about this out loud? It’s easier to joke with Flynn, to make fun of the situation, because Flynn saw it all play out, held Julie when she cried, stopped being friends with Carrie in solidarity. Explaining the situation from start to finish, to someone new, just feels impossible.
So instead she says, “Do you ever miss someone you know you can’t have back? Or not that you can’t. But you know you shouldn’t. You know that you can’t get them back, or you’d have to give up too much for it and it wouldn’t be worth it.”
Because sure, if Julie was really committed, she’s sure she could grovel her way back into Carrie’s inner circle. But as much as she misses her, she’s not prepared to do it.
Alex nods, understanding. “Yeah,” he says plainly. “Yeah, I do. Tons of people.”
Julie’s surprised, but she supposes she shouldn’t be. The boys talk about Alex’s family the way Julie’s mom used to talk about ghosts -- never directly, otherwise they’d hear her and be summoned -- and after the whole thing with Trevor, well. It makes sense.
“Can I get it to stop?” Julie asks. “I had to turn off my phone before I did something stupid like text her. What would I even say? Why would I want to say anything?”
“I don’t know,” he murmurs. He leans over so their shoulders bump together, and she leans her head on him. “It’s okay to miss her, you know. You guys had good things in your friendship -- I mean, I guess, right? That’s why you miss it?”
Julie nods, closing her eyes. There are so many good memories she doesn’t even know where to start. Running in the park. Sitting at the piano together. Fashion shows for their dads and Julie’s mom in the living room of the Wilsons’ huge house. Sleepovers with Flynn full of bickering and giggling and pillow fights. Birthday parties, their whole lives.
“But that doesn’t mean you didn’t have a good reason for stepping away,” Alex says.
That’s true, too. Julie’s pretty sure they didn’t have that good stuff for a while before their friendship ended, in reality. Carrie was becoming… snappish. Self-absorbed. All she wanted to do was boss the other girls in dance class around, and she didn’t ask to hear Julie’s songs anymore. Julie knew that being a good friend meant weathering the good with the bad, but she gave Carrie what felt like a million chances, and she wasn’t getting anything back. When she’d tried to bring it up to Carrie, things had… exploded.
She explains as much to Alex, in fits and spurts, and finishes with, “She just… blew up at me, she told me she’d been sick of me for ages and asked why I hadn’t noticed. Like I was just supposed to realise that we weren’t friends anymore without her telling me.” Sucking in a shaky breath, she manages, “And then my mom…”
“Oh, Julie,” Alex murmurs softly into her hair. She’s trying not to cry, she really is, but it feels all bubbly at the surface of her chest, and the way he puts an arm around her and squeezes tight shows that he can tell.
“I know it’s silly,” she chokes, “but it feels like we broke up, or something, even though we were just friends. It hurts so much just thinking about her.”
“It’s not silly,” he assures her, and wraps his other arm around her, too, so he’s hugging her close to him with her head against his chest. “There’s nothing less important about friends, and a friendship ending can really suck. Especially how she did it.” He presses a kiss to her forehead, and doesn’t draw attention to the few tears making their way down her cheeks. They sit like that for a moment, then Alex says quietly, “You’re a wonderful friend. You didn’t deserve that. You deserve so much better.”
Sniffling, Julie rubs her sleeve across her eyes, wiping away the tears. The thought dawns on her like the sunrise after a long, sleepless night. “I have so much better,” she realises out loud. “I have Flynn. And Dad and Carlos. And you and Luke and Reggie.”
“We are pretty fantastic,” Alex agrees, faux-smug, but his eyes are still cautious, and affectionate. “But it’s okay to be upset anyway.”
“I know,” she says. And she does. “But I think I’m almost done being upset. For now, at least. Maybe we could run through a few songs?”
“I’m sure the boys would love that,” Alex tells her, smiling, and he goes to stand up but she holds on tighter, so he won’t leave the hug.
He just feels so steady, and comforting, and she’ll never really get over being able to actually hold them. “Can we just. Stay here for a moment, first?”
Easing himself back down, Alex grins and pulls her closer, tucking her head under his chin. “Of course,” Alex says. “We can take as long as you need. Just us, or the others, too?”
She pauses. “The others, too.”
Alex closes his eyes, and Julie knows he’s reaching out to the others, through their one leftover remnant of their time in the afterlife, tugging at their leads until they come to find him. A moment later, Reggie and Luke both pop into presence in the middle of her room, puppy-eyed with worry and hope.
“Julie?” asks Reggie quietly, fiddling with his fingers.
“You good?” Luke asks, on the balls of his feet.
“Yeah,” she tells them. “Just needed a hug.”
Within moments, they’re all around her and Alex, Reggie’s arm around her waist, Luke’s leg somehow, inexplicably, over her lap. Alex makes an insulted noise, but he’s so relaxed, Julie knows he must not mean it. When she presses her ear to his collarbone, Julie can hear his heartbeat, solid and alive, miraculous. Her friend’s heartbeat. Her friends, all around her.
Things are still bittersweet, and it’s still Carrie’s birthday, but Julie is still surrounded by love, enveloped in it, living in it. She can be sad for what’s gone, and be grateful for what she has, at the same time.
67 notes
·
View notes
Note
I know it's been said before buy I just have to say I know the whole demetri and yasmine plot was just so that all the gay undertones of the rivalry and obsession and tension between Demtri and hawk could be easily overlooked
Lololol Anon you’re not even WRONG
Once they yeeted Moon out of the picture the writers were like “Oh shit, better No Homo it again!!!”
I guess in the writer’s (very feeble) defense, they DID set it up kinda, by having Demetri be like “Wow!!! I’d love to have Yasmine spit in my face!!!” and then very atrociously trying to hit on her at the beach party. But I thought his sorta-crush on her was just supposed to be like...comic relief??? Like “haha look at this nerdy guy being hot for this sexy popular chick he’ll never, ever get, isn’t it good memes???” I mean, him coming on to her at the party and just FAILING at every level was so incredibly funny BECAUSE of how much someone like her was just...never going to go for a dude like that in a million years. Like I thought that was the whole joke??? And Cobra Kai seems a bit more realism-leaning than some teen shows in how the teenagers actually act, so I figured from that angle it was gonna be the trope of “nerdy guy into hot popular bitchy girl” set up...but then, Reality Ensues, and she’s not only not remotely interested, but mildly to moderately disgusted at the idea. And that’s the comedy of it.
So yeah, after Season 1, I thought we were done with that whole arc, and it was literally just like...a joke “love” subplot to balance out the more serious relationship difficulties Miguel was having at the time. But now...Yasmine’s back, I guess??? And she apparently did a full 180 and is sorta nice now and went through a bunch of Character Development offscreen, none of which we got to see? So I GUESS her and Demetri were hinted to eventually become a thing, just like...very, very poorly. And in “hints” I assumed we were in no way meant to take seriously at all.
But yeah, the Yasmine/Demetri thing DOES seem kinda thrown in last-minute, given how finished that arc felt back in s1. And we only ever really get to see Yasmine when she’s interacting with Demetri, so it really feels like she was only brought back to be his love interest, which like...VERY weird flex, Cobra Kai writers, but okay :/
It IS incredibly sus how much time and energy Hawk and Demetri devote to their rivalry in particular, rather than like...idk, moving on with their lives??? Just ignoring each other and doing their own things, now that they are officially no longer bros and are in different friend circles, etc etc? Like they go OUT OF THEIR WAY to fuck with each other when they could just like...chill and move on. Like Demetri, a socially-awkward dude with limited people skills, works up the balls to get onstage and roast Hawk in front of an entire partyful of peers. Hawk SEARCHES THROUGH AN ENTIRE SCHOOL to hunt down Demetri at the school fight. Hawk goes up to Demetri on the first damn day back at school just to GLARE at him ominously (which I also just realized is RIGHT after some freshman girls give Demetri moony looks as they pass--jealous much???) Later on, Hawk coulda ignored Demetri and finished eating lunch with his Cool New Friends, but instead he goes out of his damn way to bust Demetri’s project and then come over and roast him about it. Demetri then eagerly goes over and reciprocates said roasting and spends that entire fucking soccer game tryna screw with Hawk in particular. They fricken almost IMMEDIATELY go for each other in the Golf N Stuff fight, IIRC. Really, they devote more time and energy to each other and their Rivalry™️ than either does to like...any other character? Like are Eli’s thoughts 90% “what’s the next thing I can do to fuck with Demetri?” Are Demetri’s thoughts 90% “what’s the next thing I can do to fuck with Eli?” Because like...I just don’t think obsessing over another man that much, even in a negative context...is very straight XD
There’s also the fact that their arcs are WAY more intertwined with each other’s than ANY girl either of them dates or interacts with. I mean ffs, Moon dumped Hawk BECAUSE of how he treated Demetri--even Hawk’s supposed Straight Romantic Subplot™️ ties directly back into Demetri! And the only reason Demetri joins Miyagi-Do at ALL and doesn’t just like...fade into the background in Season 2 is to show HAWK SPECIFICALLY that he can “fight back.” And later we have DEMETRI being the one to make Hawk realize he’s gone too far with Cobra Kai (i.e. his guilt after breaking Demetri’s arm) and ultimately being the catalyst that makes Hawk SWITCH SIDES! I honestly think every major point of development for both characters directly involves the other in some way--you could even argue Eli initially becomes “Hawk” in part because Demetri quits Cobra Kai, and isn’t around to stick up for him anymore--so he has to find another way to protect himself from bullying. Even their sense of “dojo rivalry” is mostly just about each other--Hawk’s animosity toward Miyagi-Do lowkey seems to stem almost entirely from Demetri in particular joining it and “betraying” him, while Demetri’s animosity toward Cobra Kai basically entirely comes from Cobra Kai taking Eli away from him. I literally like...cannot think of a single thing in either of their developments that doesn’t tie into the other in a major way.
Like to put it plainly, Moon and Yasmine feel like a single step in each of the boys’ character journeys--a single turning point to spur them in a certain direction. But Demetri and Hawk just...ARE each other’s character journeys. They’re not a step for the other to discover something about themself or get pushed in a certain direction--they just ARE the entire arc for each other, if that makes any sense. Like you could argue BOTH Demetri and Eli/Hawk’s arcs like 90% center on how to navigate their relationship when Eli gains confidence and their interests diverge and they no longer need each other the way they used to. Like??? Name ONE aspect of either of their arcs that doesn’t tie directly into their undying gay love friendship in some way??? It’s INCREDIBLY integral to both their stories and is just...SO much more compelling to watch than either of them making out with hot girls at parties or in the hallway. And them repairing their relationship and/or evolving it as needed, realizing that they love each other too much to let one another go, even if they’re both somewhat different after everything??? And realizing it’s a romantic kinda undying love they’re feeling, because really, what good reason is there for it NOT to be??? We HAVE enough male characters in media already with strictly platonic/brotherly friendships, why not just let two male characters with a compelling story, a strong prior friendship, and REALLY good romantic chemistry just like...be gay??? It feels natural, it’s a good ending to their arc, it feels narratively satisfying in a “Finally having the ‘will they or won’t they’ couple get together” kinda way...why not do it??? It makes ALL the damn sense and would be incredibly thematically interesting and SATISFYING, but y’all writers are COWARDS DAMMIT
Just gonna make that crack ship from Season 1 canon so we can prove that Demetri isn’t gay, no sir??? No Homo my guy??? We can only have one (1) LGBT character per television show, or the “traditional values” viewers will come for us???
Pre Season 3 I honest to god was hoping that part of Demetri’s arc, if he ran into Yasmine again, would be him realizing that he could honestly do better than someone that bitchy and vile, and having enough self-respect to just...lose interest in someone who’s going to push him around, act like he’s beneath her, and talk smack about his friends the second she thinks they’re “lame.” Maybe it isn’t too late though, and we’ll see this in Season 4? Here’s to hoping, because I am going to THROW HANDS if this fricken pairing is ENDGAME endgame. Like...what even do these people have in common, besides getting wedgies??? Do they even have like...any of the same interests??? At all??? How are they going to build a lasting relationship off of...both having gotten a wedgie? And being mean to people sometimes, I guess?
Like, sure. Let them date for a bit--they’re horny teens, they’re prone to jumping into relationships for not exactly the most deep and meaningful reasons. Physical attraction, teenage horniness, and raging hormones are no joke. So sure, I can see them having a fling solely because they both think the other’s hot. But you wanna tell me they’d LAST??? No SIR, I must inform you I Do Not Buy it.
(Tfw you meant to do a short ask making memes about what a crackship Demetri/Yasmine was in Season 1 and you ended up having WAY too much to say about All The Things and now it’s 3 am and you’re typing like a madman. I probably cycled back across the same 5 points like 5 times each because it’s late and I’m not thinking straight, I apologize.)
#hawk x demetri#demetri x eli#binary boyfriends#hawkmeat#demetri x hawk#eli x demetri#elimetri#demetri cobra kai#eli moskowitz#hawk#yasmine cobra kai#moon cobra kai#cobra kai#cobra kai season 1#cobra kai season 2#cobra kai season 3#my askbox
51 notes
·
View notes
Text
the disappearance of [REDACTED] ch.2
miya atsumu/reader
Summary: "MISSING: MIYA Y/N" It reads. Underneath is a picture of yourself. Age, height, weight. Everything important is listed. How embarrassing.
Genre: angst/mystery
Warnings: missing persons, time skip spoilers
Notes: crossposted on ao3 https://archiveofourown.org/works/28726002/chapters/70468146#workskin
chapter two: you will live and die for them because that’s your way
Osamu is still as a statue as he processes what his brother’s just told him.
It doesn’t seem real.
“That doesn’t make any— No. I know you’re you and she’s her, but you two are…” He trails off and starts wiping down the bar again. It’s a nervous habit Osamu picked up sometime when he wasn’t watching. “I mean... last week she didn’t act like anything was—”
Atsumu is busy reeling from his brother almost(?) complimenting his relationship that he almost misses it. “Last week?”
He nods. “Yeah, the stall was packed at the Friday game… She jumped in and manned the register so the rest of us could work on finishing orders.”
“Last week, though? You’re positive?”
He nodded.
“You saw her?”
From your usual court side seats, you could hear shoes squeaking and players panting. The thirty second row just wasn’t the same. At the same time, watching the game from a birds eye view gave you a new perspective and appreciation.
You leaned forward and locked on to Sakusa for the serve that would start the set. Your cheek sunk into your hand as his serve shot almost straight into the floor if not for a quick save by Komori that he bounced with only a single arm.
Someone across the way whooped and your eyes darted side to side as the ball hopped in the air and the setter shot a quick toss through the air. Your eyes landed on the spiker it was hurtling towards. From this far away, it was impossible to see, but you knew Suna well enough. Right now he was probably thinking something like, ‘There’s a three man block in front of me, is there really any use in jumping? I’m not gonna land a point anyway, so I might as well conserve my energy.” Still, he leaped for all he was worth and dinked it with his freakishly long fingers at the last second.
“Woohoo!” You screeched. Ignoring the fans who turned around to frown at you. Understandable. Why were you sitting in the MSBY Black Jackals section and dressed in black and gold merch if you were gonna cheer for the other damn team? You glare right back at them and slurp on your empty drink. The action only reminds you that you’re kind of hungry.
Inunaki bumps it back up all the same. Not surprising considering how slow and weak dinks are, but you gasp and groan aloud with the rest of the fans when Atsumu immediately tries to dump the ball back over the net. The play is messy and his hands are easy to read. Suna springs back up and spikes it down before the two even have a chance to tussle over it.
The buzzer rings and the EJP Raijin are awarded the point.
“Now that’s a failure of a setter dump if I ever saw one. Not what you usually expect from a player like Miya.”
“He does seem to be off his game today— oh, and there it is. Coach Foster is subbing in another player.”
“It’s only the second set, and the Jackals did take the first. There’s plenty of time for him to cool off and get back on the court to show us some of his monster serves.”
The commentators switch to talking about the serving skills of the various players at today’s game, which you don’t bother to stick around for. You did come to see Atsumu, after all. No point in staying if he’s not on the court.
You gather your hair in a low ponytail and tie it back, put your jacket back on, and make sure you have your wallet and phone still. All secure.
The stadium isn’t one you’re used to, so you refer to the map in the concrete hallway. The exit closest to the station is the north one and you’re at the southeast. It’s only when you turn to go that you realize you don’t know whether to go left or right.
“Well, it is just a giant circle,” You mutter. “Doesn’t really matter which way.”
From further inside, you can hear the buzzer go off one, two three times, signaling the end of the set. “That was quick.” The halls flood immediately and you’re forced to slow down and trudge through, rather than hyperwalk like you usually would. This whole trip is turning out to be one inconvenience after another. Atsumu is off his game. You’re hungry. People in this crowd keep bumping into you.
“Hey lady, get in line like the rest of us.” One asshole grunts and you reflexively scowl at him and the five brats he’s with. It drops from your face. If you had to deal with five kids under the age of ten all by yourself, you’d be grumpy too.
“Sorry, m’bad.” Curious, (and still hungry) you check what it is they’re in line for. Immediately, you’re in a better mood. Skirting the line, you hop over the gate and swipe some onigiri right out of the display box.
“Oi! What the hell are you— Oh, [y/n].”
“Hey there, stranger! Fancy meeting you here.” In two massive, disgusting, and arguably impressive bites, you swallow the onigiri (which is in no way, bite sized) and pluck the baseball cap off his head.
“Hiii, welcome to Onigiri Miya, what can I get for you today?” You ask, pulling your ponytail through the hat and bumping your hip with Osamu’s. The old man isn’t all that disturbed by the abrupt change in cashier and prattles on a list of items long enough to feed a battalion. You’re quick to click it into the POS and nod your head to the order printer that’s situated further back in their makeshift workstation. “I’ve got this. Go do your thing.” He rubs his hat hair sheepishly. He wasn’t planning on taking it off today. "Here's your receipt, sir. Please pick up your order at the station to your left. Good afternoon, it’s lovely to have ya here at Onigiri Miya, whatcha cravin’?”
“That’s it? What else did she say? Where’d she go after? When did she leave?” Atsumu’s hands buried themselves in his hair, practically pulling it out by the roots.
“I don’t know! Um… The rush came after the second set, I think? N’she left right after. I assumed she just went back in ta watch the game!”
“But she didn’t say anything weird?”
“No! We were so busy I barely said two words to ‘er!” Osamu had never seen his brother look so frantic.
“I’m going back to the police.” He rasped out.
— — —
At the station, Detective Kano looks over your file.
CASE: Missing Persons
FULL NAME: Miya [y/n]
BIRTHPLACE: Sapporo
CURRENT RESIDENCE: Osaka
Looking at it plainly, the answer is clear. As much as his subordinate and your husband don’t want to believe it, you’ve left. Nobody took you or forced you. The reason could be anything. You got bored or felt stifled in your marriage, (it did say you two had gotten married at twenty. That’s awfully young to make a lifelong commitment) you met another man, (always a possibility) or it could be that you were running for your life from an abusive piece of shit. Your case wouldn’t be the first like that and nor would it be the last. He didn’t care how ‘worried’ your husband appeared to be. For all he knew, the bastard could just be worried about people finding out and it ending his career.
"Oi, Tanigashi.” He barked. The rookie’s head shot up. “We find any bodies in the past couple days?”
“Time frame?” She asked, already typing away.
“Last seen on Tuesday, the fourteenth”
“Male? Female? What else, ya gotta help me out here.”
“Twenty two year old female.”
She hummed. “Tourist?”
He shook his head.
“Is she a short emo meets Harajuku model typa person?” She sighed, turned the monitor in his direction.
He sighed. “Nope. Sorry fer wastin’ your time. Get back to work.”
“Detective?” The office secretary popped his head in the door. “The statements you ordered just came in. Should I print them out for you?”
“Yeah, thanks kid.” Kano heaved himself out of his seat and cracked his bones. Years on the force and keeping up with full contact Karate were starting to get to him. Maybe he should take his daughters advice and take up Tai Chi or Yoga.
He crinkles open a wrapper and pops the gum in his mouth, reading the evidence as it’s freshly warm off the machine.
The bank statements aren’t anything out of the ordinary. You’ve withdrawn everything from your personal account. The joint account has been left alone. He jots down a note. ‘Set financial alert for suspicious activity.’
This way he’ll know if one of you tries to remove the other from the account. Again, he noted that you hadn’t withdrawn anything from the joint. As his spouse, you were legally entitled to it. And with Atsumu’s fat check from three seasons of pro sports under his belt, it wasn’t like he would miss a little bit all that much.
If anything, it told the detective that you didn’t hate him. Had you wanted him to suffer, it would be easy to empty the accounts and leave him broke.
“Rule’s out abuse.” He mumbles. Unless you were afraid of retribution should he find you. Though with how thorough you were being, (phone left behind. bank account empty. social media untouched) something told him you didn’t have any plans to be found.
Kano sighs, flipping through more pages and organizing them as he goes.
“This just gets more and more complicated.” He stops. “Hey, kid. Where’s the health report?”
He paled, worried he had missed something. “Ummmmmmmmm.” His fingers click across his email. “Looks like the hospital needs a formal report before releasing any information. Sorry, I’ll get right on that.”
— — —
Tucked away behind more wealthy and more flashy neighborhoods, hidden and huddled by a ring of trees, the only way you could ever know the Miya household was there was if you had been there before.
Which you had.
Ducked below a hill off the main road, it’s a modest split level house which seemed a lot smaller when you were younger. Then again, it had been inhabited by both the boys, their mom, and all the people they attracted. Which happened to be a lot. Despite being more than a little rude, Atsumu and Osamu were always surrounded by people wanting to be their friend.
You park in the driveway and enter through the back door on the porch, which has been unlocked since you first started visiting when you were fifteen.
“Toyo! It’s [y/n]. You here?” You called, walking through the door. No answer.
You walked through the kitchen and down the six steps to the main level.
“Toyo? You in there?” Politely soft, but loud enough to be heard, you knocked on her door. Still nothing.
You swung the door open.
“To—” Surrounded by tissues, old bowls of food, and shivering, was Miya Toyo in all her glory. “Gosh.” You whispered. “I knew you were sick, but this is ridiculous.”
Quietly, you grabbed the heating pad in her nightstand drawer and plugged it in, setting it next to her on the bed. Then, gently pulling the covers up and smoothing them out. Not that it mattered. The woman slept like a rock. You wondered if she had always dealt with being sick like this: alone, with no one to care for her.
Then you were headed back towards the kitchen. The door to Toyo’s room was carefully shut. You didn’t want your noise to wake her up. On the way back, you shuddered. No wonder she was sick, she kept the house colder than an icebox.
You made a pit stop at the boy’s room, sliding open a closet door, grabbing a hoodie, and smelling it.
“Hmm… Yeah, that’s Atsumu.” You recognized and quickly pulled it on. The man threw a fit anytime you wore Osamu’s clothes, so you had learned to differentiate the two. You chuckled. That was one of the ways you had figured out he had a thing for you.
A second pair of socks was also stolen. Yours were much too thin to keep your toes from falling off. “Hmm hmmm. Hmm hm, hmmm hm.” You hummed absentmindedly as you switched on the kettle and searched through the pantry and fridge for ideas on what to make.
8 notes
·
View notes
Text
just a little racial processing
i am white and i have racism ingrained pretty deeply, not in that i dislike black people or other races but in that i really do fr think of white ppl as being the default, and what i do to combat that in my own life is i sit on social media and i stare at and like and reblog pics of black people because i want to change my perception because my perception is SMALL. i especially do this with pics of black people doing super normal things bc i feel like they are really exoticized in the media, either as hooligans or hard-living heroes... instead of just normal people enjoying freedom and prosperity, learning things, etc. i know that black ppl have unique stories and normalcy for them doesnt always match normalcy for white ppl but basic human things are really important to see.
i have also become more aware of the concept of generational wealth and how black ppl were all set up to start building it after slavery until the jim crow laws came around and strangled that possibility. i have NOT been PROACTIVE or ACTIVE about any of this but at least i am Aware of it. i do not make any conscious efforts to support black small businessppl over others but i really think that is because that isnt an area that gets a lot of my attention in general, bc im kind of overwhelmed by consumerism and i dont have a clear idea of whats going on with my own money and buying deliberately intimidates me. buying purposefully from black owned businesses is always something i think im going to do more of in the future haha.
but also, in my consuming images/content/whatever passively on social media, the idea of wealth and generational wealth being important specifically to black people (less so to white ppl, so many of whom have it...not all but so many including my mom’s family...NOT my dad’s at all but totally my moms) has made it so i consume w/ interest and support media where black people are talking about money and financial literacy and entrepreneurship. that is an area i view as a different lens from how i view the same topic with white people. #blackownedbusiness is a really powerful concept and i feel responsibility as a consumer to support it, but i havent really yet.
i feel like my perspective is basically pretty balanced. i know how it feels to be racist in the passive, ignorant way and i know how it feels for education to change my perspectives. i get it when black people say they just want to live and they dont want to explain themselves over and over, that they’re not white people’s teachers. i have heard them ask white people to step up and do that. so that is something i have done a LITTLE of. i am better at communicating than buying, i am like quite good at it. like when i worked for a coffee shop i was SO good at harmonizing w/ petty customers b/c i sort of am a petty customer lol. so i feel like that is a role i can step into and excel in... helping ignorant white people learn. i feel like my voice is uniquely harmonious and nonaccusatory.
im not interested in converting majorly racist people. there are MORE just passively racist ppl, and they’re more dangerous in some ways, and also they’re way easier for me personally to work with. i dont have the everyday exhaustion of dealing with ppl’s ignorance so i have leftover energy to engage with it directly.
i think that racism and otherism is at the core of all the wounds in the world right now. there are leftover tribal fears that have never been worked through, all over the world. in america of course there are all kinds of different racisms but the main one is black ppl vs white ppl.
1. black ppl are formerly enslaved so that’s hard for white people to deal with in the first place b/c it’s hard to deal with your own bad karma, it’s hard to face the fact that you live well because you subjugated humans (you as a social group, not personally... although of course many things in my life are good becasue of the benefits to my ancestors and my social group). honestly, slaveholder/colonialist karma is nasty. it’s trauma...it’s its own kind of trauma. im not saying slaveowner/colonialist people should be thought of as innocent victims bc they are traumatized bc of the shitty thing they did. im just describing the situation... they have fucked up stuff that needs safe processing as well, we are all connected and when we hurt others, we also hurt ourselves.
2. black people are visibly different from white ppl moreso than other races are (thats a generalization but, idk skin is a large and very visible organ and pigment is really visible and it’s easier to visually “otherize” ppl for being dark, also hair texture is very visible) so they are very easy to “code” as “other.” physical responses are very base and subconscious and the body learns them, so it’s super easy for the body to develop prejudices b/c of social behavior, and then the mind just goes ahead and encodes them like it always does lol. going off of this point, i recentlyish (march) started listening to nina simone... this is how fucking ignorant i am, she is basically the first black person to artistically touch me deeply and directly (aside from victor wooten’s book). and she is so black, like very very dark, and all of her facial features are distinctive to black people. and to hear her state plainly that she thinks black people are the most beautiful people in the world ... also to see her face saying that... it helps my body unlearn things. on the one hand it sucks that we have prejudice in our society so engrained that literally someone’s face can be an act of defiance. on the other hand, holy shit, how amazing is it that someone’s radiant fucking face can have the power to heal social wounds. not totally heal, but contribute to them.
3. LBJ and fucking nixon and all of those assholes, all of these fucking laws, law enforcers, government planted conspiracy theories in place to keep white people hatig black people and perceiving them as criminals, and also, strangling black people’s efforts at gaining wealth and grounding themselves in society so so much energy had to get redirected into shitty unrewarding labor and also crime (though crime rates have been exaggerated) like... and then the deliberate assassination of ALL the black builders of self esteem in the 60s 70s (80s?)... racist forces have been AT! WORK! HARD AT FUCKING WORK! FOR A WHILE! so of course we have racist wounds bc they were NOT fucking worked through after the civil war and in fact they were like nursed open and made to be infected because the stupid ass government thought racism was necessary for society to run. on the one hand, that SUCKS and it’s SHITTY.....
.............On the other hand it’s the most hopeful thing EVER.... because they worked so hard to keep us apart from each other. like really hard. do u know what that means?
--A. it’s a justification that humanity and brotherhood is powerful as. fuck.
--B. it’s an acknowledgment that ... people have to work really hard to keep us the fuck apart from each other. really hard.
the internet is going to make it impossible for us to keep hating each other. things are going to happen and they are going to be good. but we have to do it, we have to inhabit it. we have to be present for and communicative of the changes that happen inside us, so others can see it and harmonize. harmonization makes things louder.
hmmmmmm.
1 note
·
View note
Text
'I like the way MDMA gives you a deep sense of connection to your friends'
I'm no fiend. Most nights I'd rather share a bottle of wine with some friends than stay up till 6am getting sweaty and boggle-eyed on a bender. But while I associate alcohol with talking about past experiences, I associate drugs with making new ones. Party drugs can often make a stranger feel like a confidant; a simple trip to a town centre feel like an Enid Blyton escapade.
I probably take class-A party drugs such as MDMA or cocaine once a fortnight, and have done since I was 16 (I'm 27 now). I like the way cocaine gives you a new lease of life, like a mushroom in Super Mario, to carry on with a night out. I like the way MDMA softens the edges of reality and gives you a deep sense of connection to your friends that you can never get when you meet them for dinner and they moan about their jobs. I like how when you're coming down from a pill another person's touch has a comforting, almost electric capacity. If you're suffering from exhaustion, anxiety or stress, recreational drugs can give you a bit of a leg-up.
Drugs can also be a total pain. Ecstasy can make you feel like you're floating in a cloud, but just as often it's an admin nightmare: you come up at different times from your friends; only half the people in a group remembered to get sorted and there's endless hassle at a party trying to get more. Even when you're having a great time, there's a self-doubting internal monologue running through the whole process: Have I done enough? Am I coming up? Do I look like a prick?
I would just like to have that conversation about drugs being sometimes brilliant and occasionally annoying. Yet I feel like there is no one who is willing to talk about drugs in those terms.
When children ask their parents where babies come from, they get a white lie – a stork delivers them, you find them in a cabbage patch, you order them from Ocado. That's the closest thing I can think of to explain the difference between the perception and the reality of drug use by young people in the UK. There is a societal stork myth that is propagated by the media and popular culture to hide a basic reality. Even users themselves are entirely unwilling to talk about drug-taking honestly. Everything in the drugs world tries to stifle this conversation. Take nightclubs. It doesn't take a genius to work out that staying up till 6am listening to dance music at an ear-splitting volume would not only be unenjoyable without some kind of mind-altering stimulant, but a painful test of endurance. Most people in big nightclubs are on drugs. The clubs know that: that's why they charge so much for entry and, often, for bottles of water. They know that not many people will be buying drinks. Most of them have in-house dealers too, so they can sort out their DJs. Bigger DJs put requests for drugs on their rider. "We just put it on expenses as 'fruit and flowers'," a promoter at a major nightclub told me this year. But there's still a stork charade, with the venue covered in posters promising to eject drug users and bouncers searching punters – but not too thoroughly. The pretence is that this could all be above board.
I suppose the reason for this false picture of drug-taking is that most people don't take drugs. The statistics show that only a small fraction of the UK population are regular drugs users, and a smaller fraction still do anything harder than weed. But drug use is not spread evenly across the country, nor across age groups. In my demographic – under 30, living in London, job in the creative industries, disposable income – almost everyone is a recreational drugs user.
Where I grew up in south London, it was pretty uncommon to find someone who didn't at least smoke weed. The children of more middle-class parents were taking cocaine, ecstasy, ketamine and mephedrone almost every weekend. These were not reprobates ruining their lives: they were intelligent, bright people who got three As at A-level and went to good universities.
We would go to raves in places such as Camberwell and Hackney Wick, to warehouse venues where almost no one was over 18. White powders flowed as freely as the Fanta Fruit Twist and Malibu we were drinking. Festivals played a big part, too. Parents, even quite strict ones who wouldn't dream of letting their kids out past midnight, were happy to send their kids to music festivals, perhaps because of the reverent music-focused coverage in the media.
If you go to somewhere like Reading or Benicàssim, almost everyone is under 20. Half of them barely leave the campsite. Festivals are drugs playgrounds where teenagers experiment with copious amounts of uppers in presumably quite dangerous combinations. Some of the best moments of my life took place going to festivals as a teenager. I remember one muddy year at Glastonbury, racing down the hill arm-in-arm with a bunch of people, all off our faces on MDMA, feeling happier than I had ever felt. Another year, I remember taking mephedrone with a girl I fancied during Blur's headline set, both weeping with joy at a band we'd grown up with our whole lives.
Again, everyone knows this; no one thinks the thousands who watch the sunrise at the stone circle in Glastonbury every year are just on a high from seeing Mumford and Sons. But the festivals keep up the pretence that they are drug-free zones. Even a recent BBC3 show, Festivals, Sex and Suspicious Parents, which was supposed to show parents what their kids really got up to at festivals, ignored the fact that as the cameras panned around the festival, many revellers were plainly as high as a kite, their jaws swinging back and forth like pendulums, a side-effect of taking ecstasy. The voiceover just kept talking about people being "drunk".
I am also part of the first generation of people whose parents are likely to have been drug users. Of course, some adults would be outraged, like the parents on BBC3, to see what their kids got up to. But many more knew only too well – plenty of people I know would smoke weed or share dealers with their parents. In some families drug use had less stigma than smoking.
I thought all this was normal, but at university I met, for the first time, young people who totally abstained from drugs. They mostly came from outside major cities, or outside the UK, and many shivered in horror when they saw the rest of us dabbing our gums with mysterious white powders. I thought there would be a rift in social lives, an us-and-them situation, but it was around that time that mephedrone happened. Known by literally no young person ever as "meow meow", mephedrone was a legal high that changed attitudes towards drug-taking. Polite do-right kids who would never dream of taking illegal drugs were happy to chow down on bombs (self-made wontons of mephedrone powder wrapped in Rizla) like they were no more risqué than chocolate liqueurs.
Mephedrone was incredibly cheap – about a tenner a gram – and incredibly available. You could order it with next-day delivery to your university PO box. Mephedrone was a drugs phenomenon of which I have never seen the likes before or since. Everyone started doing it. I remember visiting a friend at Leeds University during this period. We went to a club and the queue for the men's bogs was at least 70 people long. When I finally got inside the place stunk of mephedrone, you could hear everyone loudly sniffing.
On nights out during this time, everyone would be raging – making out with one another, dancing with total abandon. But the comedowns were immediate and severe, far worse than ecstasy. By 4am people would be lying on the floor sharing the most intimate and personal shames and secrets, as if the drug was somehow compelling them to be honest. Some people called it a truth serum. Friendships were forged in the hot irons of that emotional exposition, as were the most horrendous hangovers.
Mephedrone was banned within two years of it taking off. People talk a lot about one legal high being banned only for another to take its place, but the real legacy of mephedrone was to numb the stigma of harder drugs. By the time I left university, many of the drug abstainers who had tried mephedrone became relaxed about most illegal drugs, too.
Ecstasy and mephedrone make it pretty hard to get much done in the days after taking them. You can't regularly use them and be a successful, functioning adult, so they become a rarer treat once you leave student life. In their 20s most people are overworked: they have second jobs and work incredibly long hours. If they're going to go out on a Friday night they need a pick-me-up. And that is why cocaine remains the young professional's drug of choice.
I see cocaine usage almost every weekend wherever I go: clubs, pubs, people's houses, dinner parties. At fancy celebrity parties, the sort you see on Mail Online, cocaine is so prevalent that it's almost boring. Everyone does it – butter-wouldn't-melt TV presenters, wholesome pop stars adored by your mum, people who would immediately lose their job if anyone found out. Those tabloid stings where they catch someone doing cocaine are kind of hilarious in that respect. If you followed any celebrity around with a secret camera on a Friday night you'd be almost guaranteed to find them doing coke. But cocaine users are like hipsters in the way they will vehemently deny they are one, and cast aspersions on others. "It was just full of self-aggrandising wankers doing coke and talking about themselves," someone will say about a party where they did cocaine and talked about themselves. Most of my friends are cocaine users, but I've never heard them say one nice thing about cocaine.
No doubt some people will have read this piece and think that I am just a monstrous twat, that this has all been little more than infantile boasting in a vain attempt to try to sound cool. But that, too, is part of the cover-up, that any open discussion of using drugs or enjoying them is necessarily a boast. We can talk about great food, great films, great sex, but if we talk about great drugs we immediately sound like we're engaging in some teenage bravado. That's why the biggest taboo surrounding drugs today isn't taking drugs, but saying that they're fun.
I'm not saying that people are lying about the negative effects. I have, of course, seen lives ruined by drugs. Rarely has this been because of an overdose or because someone has ruined themselves financially because of addiction (although I am only 27 – that may yet come). Far more often I have just seen people become dulled through regular drug use: their youthful spark extinguished by a never-ceasing quest to get on it; brains frazzled by overheated synapses. There are friends I want to slap every time I see them doing another line, but I can't because that would be hypocritical.
I also appreciate that's it's easy to be blasé about drug use when you're a well-adjusted middle-class white guy who has never been stopped by the police and has a distant non-social relationship with their drug dealer. For many people, drugs aren't something they can dip in and out of and separate from their lives. People entangled in the economic and legal realities of drugs – dealers, those convicted of possession, addicts – don't have the luxury of my relaxed attitude.
But until we stop pretending that getting high is inherently bad – that drugs can never be brilliant, can never enhance human experience for the better – how can we properly deal with people whose lives have been made worse by drugs? At some point, kids grow up and learn the facts of life. I think it's time we all had the talk.
2 notes
·
View notes
Text
To Continue...
To continue...
My writing is never about the transgressions of the other person. But more so about what I learned about myself from our exchange.
I do not wish to vilify anyone, and I am not a “victim”. What I hope you gain from reading this story and from the transparency here is about accountability, growth and self-awareness.
I could’ve ignored dude when he began following me again months later out of nowhere. I could’ve blocked him or cursed him out but that is not where my heart was at that time.
The truth is, I was happy he returned. I was hurt by the way things had transpired. I felt like we had unfinished business, I felt like this was a great opportunity to exercise forgiveness and to grow out of an uncomfortable situation.
Too many times we balk and run when we are presented with situations that are less than ideal. In today’s world, we ghost, cutting off people for the slightest disagreement or offense, forgoing the possibilities to challenge ourselves and others to learn something from the discomfort.
Dude (unbeknownst to him) had made me face a lot of insecurities, which I’d normally hide. Whether it was “right” or “wrong”, I wanted a better understanding of why he had affected me so much.
I had spent months, talking with a friend who had ghosted on a guy she liked too much, because liking him (and realizing he didn’t like her as much) dredged up all sorts of unresolved issues with rejection for her and I related so much.
We became sisters in our misery. Beating ourselves up for liking people who didn’t “like” us, reminding us both of childhood traumas and our fears of abandonment and rejection and hating ourselves for not accepting the truth as plainly as it appeared.
These guys were just not that into us. It didn’t mean there was something wrong with us, or them for that matter, it just meant that they liked what they liked and we were not it.
But for me, it was deeper because, I had never been curved before. What a new (ego crushing) phenomenon this was!
I was good enough to talk to all day.
Good enough to listen to his problems.
Good enough to confide in.
Good enough to trust my advice.
But somehow not good enough to be “valued”, I’m still not sure how that works. But I was looking for validation in something that in and of itself wasn’t even valid.
Dude would comment on how “strong and opinionated” I was and how much he admired that, but on social media however he was worshiping old girl for being “soft and supple, and kind and patient and generous and nurturing”; claiming that in today’s world, with “today’s independent women” these qualities were “rare”.
Did I need to be more submissive? More domesticated?
Was I not soft enough, because I was “strong” and had opinions?
Was I not generous and nurturing because I wasn’t willing to be utilized by a person who seemed perfectly fine with not reciprocating any of the energy I poured into him?
Did that make me a bad person?
I was a “strong, independent woman”. But somehow it felt like a troublesome negative. Why this concept is given such a negative connotation is beyond me?
Let’s end this myth, shall we?
Being an independent woman doesn’t mean you don’t want a man. It means you can function INDEPENDENT OF ONE.
But I know now that when men comment on my strength, it reveals more about them than it could ever infer about me. I listen differently to their remarks, I no longer hear: “That’s what wrong with you!”
Now it translates into: “that’s what’s wrong with THEM.”
My independence; my strength, my opinions, are not weapons formed to use against men. They are important tools for my survival. I now listen for the difference between men who comment on it with an understanding rather than those who comment on it because they feel threatened by it.
I promise you, if you are a man and you are reading this, and you think I am too independent, I’ll gladly relinquish my independence as soon as I meet a dependable man.
I don’t know of too many women who wouldn’t trade their independence or at the very least modify it considerably to make space for a strong, consistent, decisive and mature man.
Nor do I know many women who want to be an emotional support system for a man who never even acknowledges the job they’re doing. Let alone offers no reward to them of reciprocity. This was to be my biggest beef with dude.
I had spent months yearning for closure. Replaying events in my mind. Wishing I had pulled him to the side at that party and gave him a piece of my mind. Sometimes wishing, I cursed him out that day in a huge scene.
He had blocked me on social media so it had never dawned on me to send him a message throughout that time. I wasn’t allowing myself to grieve properly about it and I also had no recourse to avenge my bruised ego.
It was like having a funeral for someone who is *technically* still alive.
I was like a gun, jammed up with these emotions and had no means or way to fire. I didn’t want to write about it here. I barely wanted to address it (when I did) on my podcasts, but for transparency’s sake, I tried my best to make light of it.
The truth is he left me, but I never left him. I still dreamed about him. Prayed for him, hoped he was figuring out the various things in his life he was still working through. I’d still read through our old messages. I still thought of him often. I just pretended to be over it, but the power of thoughts and what we focus on proved to be a miraculous thing when he followed me again that day out of the blue.
I knew I had manifested that, I knew what I knew all along, which was that I had left an indelible impression on him, whether he understood it or not.
That was the magic of me....
When he came back to be my “friend”, I had reservations but I also wanted the reconciliation more than he could know. Imagine having an opportunity to be with the person you wanted most of all? Imagine how exciting that would be?
I had the opportunity to rewrite history and change the narrative. I wasn’t the victim of anyone. I chose to be in this position.
But this time, I had ground rules. I was going to be open and honest, with him and with myself. I didn’t want it to feel forced but I also wanted him to understand that I was being deliberate.
I was there because I cared for him and I wasn’t going to allow him an out. He couldn’t pretend to not “understand” like he had done previously. And at first, we got to enjoy a level of intimacy that was even more than I had hoped for.
I felt close to him, I got to be vulnerable and honest and even romantic. For a while, I trusted him completely. I trusted that he knew not to play with me again; I trusted that he appreciated me, and what it took for me to allow him to “befriend” me again.
For a while our arrangement worked fine. It was sweet and endearing. We had camaraderie. I felt relaxed and genuine. My heart swelled. This wasn’t the drama and torment of Teacher.
I trusted this guy (and that was a beautiful feeling, that I’m SO grateful I got to experience for once!). I spoke up for myself, I told him what I needed and he did his best to accommodate me. I trusted that he would recognize and acknowledge my energy and effort. We kept a good pace for a while. Seeing each other regularly, talking everyday, we grew to be consistent. We were grateful to have each other and had created a safe-space but I secretly wondered why he came back (all of a sudden- seemingly out of nowhere).
I started to feel insecure, because this was the same person who had completely marginalized by efforts before. I cared for him in much of the same ways from the start and he had audaciously downplayed our connection as mere “general conversation”, so I began to desperately need “reassurance”.
My intuition told me, his return wasn’t purely because he missed me. I began to get the sinking feeling that I was there to nurse HIS bruised ego as I was just a rebound...
He was in an uncomfortable transition period personally and needed someone to lean on, while he licked his wounds, still carrying torches for old girl, wanting to keep his options open in case she decided to give him another shot. He couldn’t be honest about that to me though, no matter how close and honest we had been with each other. He wasn’t really fully “prepared” to be there to pay attention to my wounds, no matter how hard I tried.
I began to feel the imbalance, because I was falling in love with the idea of him. I was finally happy to have a nice guy (That I liked) be nice to me. But that’s it, he was nice and “nice” should be the basics, it doesn’t make any man “the one”.
He was paying attention to me, because paying attention to me benefited him, but he wasn’t overly affectionate, or particularly romantic. I didn’t feel like he really cherished me at all.
Here was a guy who touted the concepts of loyalty and family and being there for his “friends” yet when I needed him in any capacity, even with all that I was doing and would do when called upon, he could never prioritize me in quite the same way.
And I wasn’t expecting him to be my man. I just wanted him to be what I was willing to be for him. I wanted reassurance that he actually liked ME, and not the things I did for him.
As much as I liked him and enjoyed what we had, I couldn’t get past the fact that I was potentially setting myself up for yet another one-sided relationship. And even after I expressed my fears and asked for the reassurance I needed to continue, he couldn’t give it to me.
Instead over time, he reverted back to emotional unavailability, apparently too afraid of just saying outright, that he couldn’t meet me where I needed him most.
Too many men expect/accept the love and dedication that we offer them and offer nothing but excuses in return for why they don’t show up for us emotionally.
Emotional unavailability is NOT okay, and I understand that many PEOPLE are not as emotionally intelligent as I am. But I often see so many sisters doing the emotional introspective self work required to grow, and I see so many of us working on self improvement to be better as well for our families. It’s because we’ve been socialized to believe the emotional labor part is OUR job.
But if we are doing this hard labor, who is laboring for us? The same world that is mentally and physically draining our men is tearing us apart as well. There are times when I feel as though the weight of the entire solar system is resting squarely on my shoulders, and yet I still show up others because, there isn’t a foreseeable option-to me, not to do so.
I’m constantly met with men my age, who are in immense emotional turmoil, emotionally immature and stunted and happy to “lean” on me but reluctant to even inquire about the sturdiness of my own emotional support system. They don’t want to do the introspective self work required, instead they just proclaim, “this is they way they are- because they don’t know better” and that’s supposed to be okay. Its not. We have to be equally yoked.
Intimacy is necessary for us all. Intimacy is vital. As is empathy and love. As is reciprocity (for me), I was there for him, and watched patiently while he was there for his peoples, but it felt like me expecting him to be there for me, was me being unreasonable.
And with that, I realized, it was him or me. I wasn’t going to be there for anyone in any way who wasn’t going to show up for me. I knew that I deserved better than to be stashed away and only pulled out and put to use when a nigga needed me, then left to fend for myself any other time.
That was just not fair, so with that I walked away. Feeling torn as fuck but grateful for the time we spent together. Thankful for the growth I experienced and thankful for the lessons and reassurance I ultimately provided myself.
I know my worth now. I know that I deserve to be poured into with the same passion as I give to those I love. I value my time and energy more now than ever. I value my peace. I realized that I deserve the world by way of passionate and soul shaking love, whether I am a strong and opinionated woman or a soft and supple one. There are no unlovable parts of me, everything about me is fire, and worth the challenge and the worth the effort.
I will always care for that guy. I will always appreciate what I learned from our exchange. Because of all of that, I learned to validate myself and to trust that I was not asking for too much by expecting to receive what I was willingly offering.
And that’s all the reassurance I need.
115 notes
·
View notes
Text
Want My Ex Back Wondrous Ideas
Do not pay enough attention and that you did, or just sending her texts or social media posts aren't going to want to do this basically because when it comes to making things look like an unbreakable seal.Once I read the following mistakes when they go wrong it can never be skipped.It shows immaturity and lack of caring attention is one of the moment or lovers and companions they want muscles, money, or the other.When you see in the world we have to make her want to get her back, you really are.
We dated for a reconciliation; same goes for you is much easier to be ignored and she got she would react.Evaluate the reasons why you want to get back together with your life.The classic don'ts are needed first: don't stalk them, don't harass them with a little while to get your ex back will be getting about you sad and lonely because you need to take you back any time with her.Some suggestions to help you out with her and you've got a long time, this will intrigue him and could not imagine living without her.What you can get your boyfriend sees you are friends all the large amount of time and also very important.
Whether she knows that you're no longer wants us just because you are planning a day, going to be with you after a breakup can lead to the bottom of the bad news, this is one that likes to go to the relationship, just be in a vulnerable state.Tell him that you're not the time that you may want to reconcile, take the first few weeks go by, you're giving him everything that has happened in between.Even if you can't get your wife back as this will make you want to discover how to get your man back, after we break up.This was her way of looking interested when it comes to winning her back.The trick here is because nothing you can do with getting your girlfriend back?
One of the benefits of this misunderstanding.One really good ways to get my ex so much that, by myself, I was in, and fast!Hire a maid if you still can't get what you say these words of Jostein Gaarder in her life.With physical lovers though, it's slightly different, because in those throws of passion, suggest some one else.Or did she love to know each other and want your ex some gifts so he or she is missing you like crazy and goes against every emotion you also need to avoid you.
Don't try and get your ex back but she was done with that never happened.Don't beg, cry, called them 20 times a man who's unsure of himself.At the same mistake as other guys - what makes him happy.You need to go if you were both calm, we were supposed to be the cause of your family.Find ways on getting him back means you need to respect their time, feelings, privacy and just think about what you are feeling.
Instead, have dignity, show that it is destructive as well.Otherwise, your relationship is worth thinking about.You also need to remind her that she actually has fun and appreciate life, I consumed every little thing all-around me was a yes, then you need to laugh at the time that truly works better than before.But if it looks too good to be like an anniversary.They even pushed her back in your ex's corner by admitting you were nervous while you were together so that the relationship ended in another meeting.
Want to get your ex back, you'll be able to show him that in mind, here are some secret to letting go of the dont's we covered so that you are mostly seeing quick psychological tricks.But of course, Meghan was still hurt & angry, & wanted none of us will go a bit.It's so easy to forget him without success and failure.Even if you have to change; there's a nagging little voice in the relationship.So What Was Inside Magic of Making Up system is for you both.
He will start with asking for help, especially when we're trying to invent methods by yourself if you want to call her all of a break up, I agreed with him.And 50% break up situation, many people are probably thinking I'm a few weeks she will talk to your ex and give both of you then it requires changing a bad habit, start doing the same page.This may seem like a boar will be attracted to men who are close at all to play head games and start working on the other girl, & put Bob completely out of her opening and reading it.You also have to ask herself why she is going to give you a few days, or 20 years, going through some other things we usually wouldn't do.So, as I have to figure out just how much they mean that they're trying to impress her, show her that you are starting to guess, we got back together with an ex.
Get Your Ex Back When She Has Moved On
But I repeated the message over the initial problem and take some initiative to contact.Now it's time to think that sending her cute gifts like chocolate and teddy bears.Getting your ex back, but if you should stop yourself from embarrassment and don't act now.They want something they can put aside your emotions overtake you - ask for forgiveness? If you were able to relish myself and moving on.
That means you are all too easy to call her and odds are she comes around, you'll both be back together again soon after they start having fun.This will remove the temptation to call her and you will usually want them back quickly.Suggest going out and put it plainly, she was breaking up with you, they'll want us back together.It tells you that can't be very obvious to whomever to read their men, even when he already knows them and the reverse is true even if it's clean.Let him miss you and wanting her to pity you if they act around you?
I sent hundreds of such and decided to move on.It's the consistent little things you should restrain from doing these things.You have to be living together and living with you.Why should you really the type that will win her back in your life together.Maintain contact: After apologizing to her that you have to do is to just be nice and sweet like vanilla scent will do.
Just take a look at the time, I concentrated on getting him back? Waited until the storm is over with, it's time to sit and figure out a plan that I can help you get a haircut? just do whatever you need to maintain your confidence and then think positive as the phone I showed up at her feet, what is going to say.By not spending enough time to sort things out as soon as possible, but you aren't a pushover, and that you are looking for things to say to make sparks fly between you both.Here's what you have not broken up yet but they can definitely be painful for many people, it is very low.It is hoped that in just one example, rather a chance to win your wife back.
First of all, give yourself and leave her alone.Basically what this means is you can use to get back together everyday, you can go a long story short, just chill - all I was able to tell them from the big picture, and not the image that you did.Here's a food for thought, don't rush back into your arms before you know they will gladly take it back.Listen to what your intention is at any given step so that they were telling me.Have patience and a decision while his mind is compromised in this digital world and you are dealing with a desperate man as well.
How long this is a very hard thing to do, but you have made.If you want to spend the rest of your control and there was one of two people to argue so work on themThis will cause a massive earthquake in your life.This has been stuck in the end of a woman?This tip isn't really going to see how life is to stop acting on instinct.
How To Manifest Ex Back Instantly
0 notes
Text
@kanshouku said :
he's in a bit of a mood. an interview gone awry and pushy curiosity. it's obvious when kanshouku's isn't HERE for the evening. he comes back to the apartment bearing take out and with his eyes slit open, tired silver with bags underneath. " hey kid, " and it's said with the tinge of a joke, he's only a few years older. his hand brushes kaminari's shoulder as he moves to his couch. " our patrol is off for the night. i thought we'd talk about the press."
things he wishes he'd been told. the DEATH of privacy and the risk of losing yourself to it. it's frank, quiet, and layered with some measure of grief. and yet. " but it's worth it. you should just -- know that it's coming. and know that other pros will understand. and i'll be here for you as long as you need me to be. "
as someone brought up in circumstances waxing a borderline eerie similarity , denki can appreciate the humble comforts found in kanshouku’s box of an apartment . it’s inspiring , if anything , to physically see where the ends are being met ; to know that he’s not under any pressure to have some impossibly huge agency by the time he’s a pro himself ----------------- but is that too insulting to say aloud ?
free to do as he pleases , with most of tonight’s pastime spent idling the gaming consoles or catching up on social media ( as per his training ) , denki thinks he could very well get used to a life like this .
the door eventually clicks open , reason to send him sprinting into view like a dog long awaiting its owner --- or perhaps , if he may be so bold to fathom , how a younger sibling might regard someone coming home who wasn’t just the exhausted parent of a hapless fifteen - year - old .
whatever sunbeam that’d plastered itself to him in that airy revelation ends up melting to meet the tides of his mentor’s sunken expression , where gravity pulls just about everything down to the molten core .
denki’s lips contort to a pout in the median . ❛ the press ... ? ❜ he echoes lightly , dragging eyes over the stained containers of food kanshouku sets out for them .
he barely picks at it through the rest of their discussion .
amber is kept to the floor , wood chipping between the grip of his teeth . he tastes the bare flavor of chopsticks more than what actual food makes it to his tongue , falling heavy to neighbor the sunken stone playing tenant in his stomach .
it gets hard to remember how much too young someone is when they’re forced to fit the mold of a grown soldier . young enough , even , to pass up the opportunity to mumble an owed thanks to his watchful elder . stubbornness is an odd fit on him like that .
his legs don’t look any longer where he stretches them out in front of him , and his cheeks don’t feel any less dedicated to clinging to their baby fat where he scrubs a fist over one . some things aren’t keen on change . he’s just never noticed how wholly content he was with that up ‘til now .
❛ -------------- y’know ... most times i don’t even think about it . i mean , not in the way other people do , i guess . ❜ hands clasp and sink between his knees , back curving where he hunches to prompt a staring contest with the flicker of a muted tv . ❛ s’kinda like ... the way your brain blocks out your nose . ‘cuz it’s not like you ever stop having a nose , yeah ? you just sorta forget it’s there , even though you’re still using it , even though it’s still a part of you . ❜
clench , unclench , clench . the bite of nails in his palms , emulating what his teeth can no longer do to the chopsticks he’d set aside . another nervous habit erupting in threes . ❛ you forget how plainly others may still see it . your nose . that part of you . ❜
the part of him that twitches now at the attention , hyperaware of itself . the part of him that bears a name and a face and an existence all of its own , bodied inside him as if sewn beneath the skin he wears on the surface ; the stitch job that makes it all matter .
tv eventually wins , and denki blinks himself back into focus , back to where another body occupies the couch beside him . it must certainly be feeling the weight of both the stones set upon it . ❛ ... i’m sorry , though . that that happened , i mean --- not for you being my teacher . i’m still glad about that part . ❜
used to forcing the straightness of a grin set on sloping , denki demonstrates his amazing talent for faking it til he’s making it . he can feel the incisor ghosting his lower lip when he smiles in spite of it , ignoring how it aches to bite , ❛ and who knows , really ? maybe one day i’ll become someone who changes all that . then you won’t have to worry , and you’ll be able to count on me , too ! ❜
* unprompted ! ————– always accepting .
0 notes
Text
I Don’t Hate Arrow Functions
TL;DR
Arrow functions are fine for certain usages, but they have so many variations that they need to be carefully controlled to not break down the readability of the code.
While arrow functions clearly have a ubiquitous community consensus (though not unanimous support!), it turns out there’s a wide variety of opinions on what makes “good” usage of => and not.
Configurable linter rules are the best solution to wrangling the variety and disagreement of arrow functions.
I released proper-arrows ESLint plugin with several configurable rules to control => arrow functions in your code base.
Opinions are like noses…
Anyone who’s followed me (tweets, books, courses, etc) for very long knows that I have lots of opinions. In fact, that’s the only thing I’m an expert on — my own opinions — and I’m never at a loss for them!
I don’t subscribe to the “strong opinions, loosely held” mantra. I don’t “loosely hold” my opinions because I don’t see any point in having an opinion if there isn’t sufficient reason for that opinion. I spend a lot of time researching and tinkering and writing and trying out ideas before I form an opinion that I would share publicly. By that point, my opinion is pretty strongly held, by necessity.
What’s more, I teach based on these opinions — thousands of developers in different companies all over the world — which affords me the opportunity to deeply vet my opinions through myriad discussion and debate. I’m tremendously privleged to be in such a position.
That doesn’t mean I can’t or won’t change my opinions. As a matter of fact, one of my most strongly held opinions — that JS types and coercion are useful in JS — has been shifting lately, to a fairly significant degree. I have a much more rounded and deepened perspective on JS types and why type-aware tooling can be useful. And even my opinion on => arrow functions, the punchline of this article, has evolved and deepened.
But one of the things many people tell me they appreciate about me is, I don’t just state opinions, I back those opinions up with careful, thought-out reasoning. Even when people vehemently disagree with my opinions, they often compliment me on at least owning those opinions with backing.
And I try to inspire the same in others through my speaking, teaching, and writing. I don’t care if you agree with me, I only care that you know why you have an technical opinion and can earnestly defend it with your own line of reasoning. To me, that’s a healthy relationship with technology.
Arrow Functions != functions
It is my sincere belief that the => arrow function is not suitable as a general purpose replacement for all (or even most) function functions in your JS code. I genuinely don’t find them more readable in most cases. And I’m not alone. Any time I share an opinion like that on social media, I often get dozens of “me too!” responses peppered in with the scores of “you’re totally wrong!” responses.
But I’m not here to rehash the entire debate over => arrow functions. I’ve written extensively about my opinions on them, including these sections in my books:
“You Don’t Know JS: ES6 & Beyond”, Ch2, “Arrow Functions”
“Functional-Light JavaScript”, Ch2, “Functions Without function“ (and the preceding section on function names).
Whatever your preferences around =>, to suggest that it’s only a better function is to be plainly reductive. It’s a far more nuanced topic than just a one-to-one correspondence.
There are things to like about =>. You might find that surprising for me to say, since most people seem to assume I hate arrow functions.
I don’t (hate them). I think there are definitely some important benefits.
It’s just that I don’t unreservedly endorse them as the new function. And these days, most people aren’t interested in nuanced opinions in the middle. So since I’m not entirely in the pro-=> camp, I must be entirely in the opposition camp. Not true.
What I hate is suggesting they’re universally more readable, or that they’re objectively better in basically all cases.
The reason I reject this stance is because I REALLY DO STRUGGLE TO READ THEM in many cases. So that perspective just makes me feel dumb/inferior as a developer. “There must be something wrong with me, since I don’t think it’s more readable. Why do I suck so much at this?” And I’m not the only one whose impostor syndrome is seriously stoked by such absolutes.
And the cherry on top is when people tell you that the only reason you don’t understand or like => is because you haven’t learned them or used them enough. Oh, right, thanks for the (condescending) reminder it’s due to my ignorance and inexperience. SMH. I’ve written and read literally thousands of =>functions. I’m quite certain I know enough about them to hold the opinions I have.
I’m not in the pro-=> camp, but I recognize that some really do prefer them, legitimately. I recognize that some people come to JS from languages that have used => and so they feel and read quite natural. I recognize that some prefer their resemblance to mathematical notation.
What’s problematic IMO is when some in those camps simply cannot understand or empathize with dissenting opinions, as if there must just be something wrong with them.
Readability != Writability
I also don’t think you know what you’re talking about when you talk about code readability. By and large, the vast majority of opinions on code readability, when you break them down, are based on a personal stance about preferences in writingconcise code.
When I push back in debates about code readability, some just dig in their heels and refuse to support their opinion. Others will waive off the concerns with, “readability is all just subjective anyway”.
The flimsiness of that response is stunning: two seconds ago they were vehemently claiming => arrow is absolutely and objectively more readable, and then when pressed, they admit, “well, I think it’s more readable, even if ignorants like you don’t.”
Guess what? Readability is subjective, but not entirely so. It’s a really complex topic. And there are some who are undertaking to formally study the topic of code readability, to try to find what parts of it are objective and what parts are subjective.
I have read a fair amount of such research, and I’m convinced that it’s a complicated enough topic that it can’t be reduced to a slogan on a t-shirt. If you want to read them, I would encourage you doing some google searching and reading of your own.
While I don’t have all the answers myself, one thing I’m certain about is, code is more often read than written, so perspectives on the topic which ultimately come from “it’s easier/quicker to write” don’t hold much standing. What needs to be considered is, not how much time do you save writing, but how clearly will the reader (future you or someone else on the team) be able to understand? And ideally, can they mostly understand it without pouring over the code with a fine-toothed comb?
Any attempt to justify writability affordances with unsubstantiated claims about readability benefits is a weak argument at best, and in general, nothing but a distraction.
So I roundly reject that => is always and objectively “more readable”.
But I still don’t hate arrow functions. I just think to use them effectively, we need to be more disciplined.
Linters == Discipline
You might be of the (incorrect) belief that linters tell you objective facts about your code. They can do that, but that’s not their primary purpose.
The tool that’s best suited to tell you if your code is valid is a compiler (ie, the JS engine). The tool that’s best suited to tell you whether your code is “correct” (does what you want it to do) is your test suite.
But the tool that’s best suited to tell you if your code is appropriate is a linter. Linters are opinionated collections of rules about how you should style and structure your code, so as to avoid likely problems — according to the authors of those opinion-based rules.
That’s what they’re for: to apply opinions to your code.
That means it’s almost certain that these opinions will, at one time or another, “offend” you. If you’re like most of us, you fancy yourself pretty good at what you do, and you know that this thing you’re doing on this line of code is right. And then the linter pops up and says, “Nope, don’t do it that way.”
If your first instinct is sometimes to disagree, then you’re like the rest of us! We get emotionally attached to our own perspectives and abilities, and when a tool tells us we’re wrong, we chuff a little bit.
I don’t get mad at the test suite or the JS engine. Those things are all reporting facts about my code. But I can definitely get irritated when the linter’s opinion disagrees with mine.
I have this one linter rule that I enabled a few weeks ago, because I had an inconsistency in my coding that was annoying me on code re-reads. But now this lint rule is popping up two or three times an hour, nagging me like a stereotypical grandma on a 90’s sitcom. Every single time, I ponder (for just a moment) if I should just go disable that rule. I leave it on, but to my chagrin.
So why subject ourselves to this torment!? Because linter tools and their opinions are what give us discipline. They help us collaborate with others.
They ultimately help us communicate more clearly in code.
Why shouldn’t we let every developer make their own decisions? Because of our tendency toward emotional attachment. While we’re in the trenches working on our own code, against unreasonable pressure and deadlines, we’re in the least trustable mindset to be making those judgement calls.
We should be submitting to tools to help us maintain our discipline.
It’s similar to how TDD advocates submit to the discipline of writing tests first, in a formal set of steps. The discipline and the bigger picture outcome of the process are what we value most, when we’re level headed enough to make that analysis. We don’t institute that kind of process when our code is hopelessly broken and we have no idea why and we’re just resorting to trying random code changes to see if they fix it!
No. If we’re being reasonable, we admit that the overall good is best served when we set up reasonable guidelines and then follow the discipline of adhering to them.
Configurability Is King
If you’re going to knowingly subject yourself to this finger wagging, you (and your team, if applicable) are certainly going to want some say-so in what rules you’re required to play by. Arbitrary and unassailable opinions are the worst kind.
Remember the JSLint days when 98% of the rules were just Crockford’s opinions, and you either used the tool or you didn’t? He straight up warned you in the README that you were going to be offended, and that you should just get over it. That was fun, right? (Some of you may still be using JSLint, but I think you should consider moving on to a more modern tool!)
That’s why ESLint is king of the linters these days. The philosophy is, basically, let everything be configurable. Let developers and teams democratically decide which opinions they all want to submit to, for their own discipline and good.
That doesn’t mean every developer picks their own rules. The purpose of rules is to conform code to a reasonable compromise, a “centralized standard”, that has the best chance of communicating most clearly to the most developers on the team.
But no rule is ever 100% perfect. There’s always exception cases. Which is why having the option to disable or re-configure a rule with an inline comment, for example, is not just a tiny detail but a critical feature.
You don’t want a developer to just have their own local ESLint config that overrides rules while they commit code. What you want is for a developer to either follow the established rules (preferred!) OR to make an exception to the rules that is clear and obvious right at the point where the exception is being made.
Ideally, during a code review, that exception can be discussed and debated and vetted. Maybe it was justified, maybe it wasn’t. But at least it was obvious, and at least it was possible to be discussed in the first place.
Configurability of tools is how we make tools work for us instead of us working for the tools.
Some prefer convention-based approaches to tooling, where the rules are pre-determined so there’s no discussion or debate. I’m know that works for some developers and for some teams, but I don’t think it is a sustainable approach for generalized, broad application. Ultimately, a tool that is inflexible to the changing project needs and DNA of the developer(s) using it, will end up falling into obscurity and eventually replaced.
Proper Arrows
I fully recognize my usage of the the word “proper” here is going to ruffle some feathers. “Who is getify to say what is proper and not?”
Remember, I’m not trying to tell you what is proper. I’m trying to get you to embrace the idea that opinions about => arrow functions are as varied as all the nuances of their syntax and usage, and that ultimately what is most appropriate is that some set of opinions, no matter what they are, should be applicable.
While I’m a big fan of ESLint, I’ve been disappointed by the lack of support from built-in ESLint rules for controlling various aspects of => arrow functions. There are a few built-in rules, but I’m frustrated that they seem to focus mostly on superficial stylistic details like whitespace.
I think there are a number of aspects that can hamper => arrow function readability, issues that go way beyond what the current ESLint ruleset can control. I asked around on twitter, and it seems from the many replies that a lot of people have opinions on this.
The ultimate linter would not only let you configure rules to your liking, but build your own rules if something were lacking. Luckily, ESLint supports exactly that!
So I decided to build an ESLint plugin to define an additional set of rules around => arrow functions: proper-arrows.
Before I explain anything about it, let me just point out: it’s a set of rules that can be turned on or off, and configured, at your discretion. If you find even one detail of one rule helpful, it would be better to use the rule/plugin than not.
I’m fine with you having your own opinions on what makes => arrow functions proper. In fact, that’s the whole point. If we all have different opinions on => arrow functions, we should have tooling support to let us pick and configure those different opinions.
The philosophy of this plugin is that, for each rule, when you turn the rule on, you get all of its reporting modes on by default. But you can of course either not turn the rule on, or turn the rule on and then configure its modes as you see fit. But I don’t want you to have to go hunting for rules/modes to turn on, where their obscurity prevents them from even being considered. So everything comes on per rule.
The only exception here is that by default, all rules ignore trivial => arrow functions, like () => {}, x => x, etc. If you want those to be checked, on a per-rule basis you have to turn on that checking with the { "trivial": true } option.
Proper Arrows Rules
So what rules are provided? Here’s an excerpt from the project overview:
"params": controls definitions of => arrow function parameters, such as forbidding unused parameters, forbidding short/unsemantic parameter names, etc.
"name": requires => arrow functions to only be used in positions where they receive an inferred name (i.e., assigned to a variable or property, etc), to avoid the poor readbility/debuggability of anonymous function expressions.
"location": restricts where in program structure => arrow functions can be used: forbidding them in the top-level/global scope, object properties, export statements, etc.
"return": restricts the concise return value kind for => arrow functions, such as forbidding object literal concise returns (x => ({ x })), forbidding concise returns of conditional/ternary expressions (x => x ? y : z), etc.
"this": requires/disallows => arrow functions using a this reference, in the => arrow function itself or in a nested => arrow function. This rule can optionally forbid this-containing => arrow functions from the global scope.
Remember, each rule has various modes to configure, so none of this is all-or-nothing. Pick what works for you.
As an illustration of what the proper-arrows rules can check for, let’s look at the "return" rule, specifically its "sequence" mode. This mode refers to the concise return expression of => arrow functions being a comma-separated sequence, like this:
var myfunc = (x,y) => ( x = 3, y = foo(x + 1), [x,y] );
Sequences are typically used in => arrow function concise returns to string together multiple (expression) statements, without needing to use a full { .. } delimited function body and an explicit return statement.
Some may love this style — that’s OK! — but a lot of folks think it favors clever terse style coding over readability, and would prefer instead:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
Notice that it’s still an => arrow function and it’s not even that many more characters. But it’s clearer that there are three separate statements in this function body.
Even better:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
To be clear, the proper-arrows rules don’t enforce trivial styling differences like whitespace/indentation. There are other (built-in) rules if you want to enforce those requirements. proper-arrows focuses on what I consider to be more substantive aspects of => function definition.
Concise Summary
You and I almost certainly disagree on what makes good, proper => arrow function style. That’s a good and healthy thing.
My goal here is two-fold:
Convince you that opinions on this stuff vary and that’s OK.
Enable you to make and enforce your own opinions (or team consensus) with configurable tooling.
There’s really nothing to be gained from arguing over opinion-based rules. Take the ones you like, forget the ones you don’t.
I hope you take a look at proper-arrows and see if there’s anything in there which you could use to ensure your => arrow functions are the best form they can be in your code base.
And if the plugin is missing some rules that would help define more proper arrows, please file an issue and we can discuss! It’s entirely plausible we may add that rule/mode, even if I personally plan to keep it turned off!
I don’t hate => arrow functions, and you shouldn’t either. I just hate uninformed and undisciplined debate. Let’s embrace smarter and more configurable tooling and move on to more important topics!
The post I Don’t Hate Arrow Functions appeared first on David Walsh Blog.
I Don’t Hate Arrow Functions published first on https://appspypage.tumblr.com/
0 notes
Text
I Don’t Hate Arrow Functions
TL;DR
Arrow functions are fine for certain usages, but they have so many variations that they need to be carefully controlled to not break down the readability of the code.
While arrow functions clearly have a ubiquitous community consensus (though not unanimous support!), it turns out there’s a wide variety of opinions on what makes “good” usage of => and not.
Configurable linter rules are the best solution to wrangling the variety and disagreement of arrow functions.
I released proper-arrows ESLint plugin with several configurable rules to control => arrow functions in your code base.
Opinions are like noses…
Anyone who’s followed me (tweets, books, courses, etc) for very long knows that I have lots of opinions. In fact, that’s the only thing I’m an expert on — my own opinions — and I’m never at a loss for them!
I don’t subscribe to the “strong opinions, loosely held” mantra. I don’t “loosely hold” my opinions because I don’t see any point in having an opinion if there isn’t sufficient reason for that opinion. I spend a lot of time researching and tinkering and writing and trying out ideas before I form an opinion that I would share publicly. By that point, my opinion is pretty strongly held, by necessity.
What’s more, I teach based on these opinions — thousands of developers in different companies all over the world — which affords me the opportunity to deeply vet my opinions through myriad discussion and debate. I’m tremendously privleged to be in such a position.
That doesn’t mean I can’t or won’t change my opinions. As a matter of fact, one of my most strongly held opinions — that JS types and coercion are useful in JS — has been shifting lately, to a fairly significant degree. I have a much more rounded and deepened perspective on JS types and why type-aware tooling can be useful. And even my opinion on => arrow functions, the punchline of this article, has evolved and deepened.
But one of the things many people tell me they appreciate about me is, I don’t just state opinions, I back those opinions up with careful, thought-out reasoning. Even when people vehemently disagree with my opinions, they often compliment me on at least owning those opinions with backing.
And I try to inspire the same in others through my speaking, teaching, and writing. I don’t care if you agree with me, I only care that you know why you have an technical opinion and can earnestly defend it with your own line of reasoning. To me, that’s a healthy relationship with technology.
Arrow Functions != functions
It is my sincere belief that the => arrow function is not suitable as a general purpose replacement for all (or even most) function functions in your JS code. I genuinely don’t find them more readable in most cases. And I’m not alone. Any time I share an opinion like that on social media, I often get dozens of “me too!” responses peppered in with the scores of “you’re totally wrong!” responses.
But I’m not here to rehash the entire debate over => arrow functions. I’ve written extensively about my opinions on them, including these sections in my books:
“You Don’t Know JS: ES6 & Beyond”, Ch2, “Arrow Functions”
“Functional-Light JavaScript”, Ch2, “Functions Without function“ (and the preceding section on function names).
Whatever your preferences around =>, to suggest that it’s only a better function is to be plainly reductive. It’s a far more nuanced topic than just a one-to-one correspondence.
There are things to like about =>. You might find that surprising for me to say, since most people seem to assume I hate arrow functions.
I don’t (hate them). I think there are definitely some important benefits.
It’s just that I don’t unreservedly endorse them as the new function. And these days, most people aren’t interested in nuanced opinions in the middle. So since I’m not entirely in the pro-=> camp, I must be entirely in the opposition camp. Not true.
What I hate is suggesting they’re universally more readable, or that they’re objectively better in basically all cases.
The reason I reject this stance is because I REALLY DO STRUGGLE TO READ THEM in many cases. So that perspective just makes me feel dumb/inferior as a developer. “There must be something wrong with me, since I don’t think it’s more readable. Why do I suck so much at this?” And I’m not the only one whose impostor syndrome is seriously stoked by such absolutes.
And the cherry on top is when people tell you that the only reason you don’t understand or like => is because you haven’t learned them or used them enough. Oh, right, thanks for the (condescending) reminder it’s due to my ignorance and inexperience. SMH. I’ve written and read literally thousands of =>functions. I’m quite certain I know enough about them to hold the opinions I have.
I’m not in the pro-=> camp, but I recognize that some really do prefer them, legitimately. I recognize that some people come to JS from languages that have used => and so they feel and read quite natural. I recognize that some prefer their resemblance to mathematical notation.
What’s problematic IMO is when some in those camps simply cannot understand or empathize with dissenting opinions, as if there must just be something wrong with them.
Readability != Writability
I also don’t think you know what you’re talking about when you talk about code readability. By and large, the vast majority of opinions on code readability, when you break them down, are based on a personal stance about preferences in writingconcise code.
When I push back in debates about code readability, some just dig in their heels and refuse to support their opinion. Others will waive off the concerns with, “readability is all just subjective anyway”.
The flimsiness of that response is stunning: two seconds ago they were vehemently claiming => arrow is absolutely and objectively more readable, and then when pressed, they admit, “well, I think it’s more readable, even if ignorants like you don’t.”
Guess what? Readability is subjective, but not entirely so. It’s a really complex topic. And there are some who are undertaking to formally study the topic of code readability, to try to find what parts of it are objective and what parts are subjective.
I have read a fair amount of such research, and I’m convinced that it’s a complicated enough topic that it can’t be reduced to a slogan on a t-shirt. If you want to read them, I would encourage you doing some google searching and reading of your own.
While I don’t have all the answers myself, one thing I’m certain about is, code is more often read than written, so perspectives on the topic which ultimately come from “it’s easier/quicker to write” don’t hold much standing. What needs to be considered is, not how much time do you save writing, but how clearly will the reader (future you or someone else on the team) be able to understand? And ideally, can they mostly understand it without pouring over the code with a fine-toothed comb?
Any attempt to justify writability affordances with unsubstantiated claims about readability benefits is a weak argument at best, and in general, nothing but a distraction.
So I roundly reject that => is always and objectively “more readable”.
But I still don’t hate arrow functions. I just think to use them effectively, we need to be more disciplined.
Linters == Discipline
You might be of the (incorrect) belief that linters tell you objective facts about your code. They can do that, but that’s not their primary purpose.
The tool that’s best suited to tell you if your code is valid is a compiler (ie, the JS engine). The tool that’s best suited to tell you whether your code is “correct” (does what you want it to do) is your test suite.
But the tool that’s best suited to tell you if your code is appropriate is a linter. Linters are opinionated collections of rules about how you should style and structure your code, so as to avoid likely problems — according to the authors of those opinion-based rules.
That’s what they’re for: to apply opinions to your code.
That means it’s almost certain that these opinions will, at one time or another, “offend” you. If you’re like most of us, you fancy yourself pretty good at what you do, and you know that this thing you’re doing on this line of code is right. And then the linter pops up and says, “Nope, don’t do it that way.”
If your first instinct is sometimes to disagree, then you’re like the rest of us! We get emotionally attached to our own perspectives and abilities, and when a tool tells us we’re wrong, we chuff a little bit.
I don’t get mad at the test suite or the JS engine. Those things are all reporting facts about my code. But I can definitely get irritated when the linter’s opinion disagrees with mine.
I have this one linter rule that I enabled a few weeks ago, because I had an inconsistency in my coding that was annoying me on code re-reads. But now this lint rule is popping up two or three times an hour, nagging me like a stereotypical grandma on a 90’s sitcom. Every single time, I ponder (for just a moment) if I should just go disable that rule. I leave it on, but to my chagrin.
So why subject ourselves to this torment!? Because linter tools and their opinions are what give us discipline. They help us collaborate with others.
They ultimately help us communicate more clearly in code.
Why shouldn’t we let every developer make their own decisions? Because of our tendency toward emotional attachment. While we’re in the trenches working on our own code, against unreasonable pressure and deadlines, we’re in the least trustable mindset to be making those judgement calls.
We should be submitting to tools to help us maintain our discipline.
It’s similar to how TDD advocates submit to the discipline of writing tests first, in a formal set of steps. The discipline and the bigger picture outcome of the process are what we value most, when we’re level headed enough to make that analysis. We don’t institute that kind of process when our code is hopelessly broken and we have no idea why and we’re just resorting to trying random code changes to see if they fix it!
No. If we’re being reasonable, we admit that the overall good is best served when we set up reasonable guidelines and then follow the discipline of adhering to them.
Configurability Is King
If you’re going to knowingly subject yourself to this finger wagging, you (and your team, if applicable) are certainly going to want some say-so in what rules you’re required to play by. Arbitrary and unassailable opinions are the worst kind.
Remember the JSLint days when 98% of the rules were just Crockford’s opinions, and you either used the tool or you didn’t? He straight up warned you in the README that you were going to be offended, and that you should just get over it. That was fun, right? (Some of you may still be using JSLint, but I think you should consider moving on to a more modern tool!)
That’s why ESLint is king of the linters these days. The philosophy is, basically, let everything be configurable. Let developers and teams democratically decide which opinions they all want to submit to, for their own discipline and good.
That doesn’t mean every developer picks their own rules. The purpose of rules is to conform code to a reasonable compromise, a “centralized standard”, that has the best chance of communicating most clearly to the most developers on the team.
But no rule is ever 100% perfect. There’s always exception cases. Which is why having the option to disable or re-configure a rule with an inline comment, for example, is not just a tiny detail but a critical feature.
You don’t want a developer to just have their own local ESLint config that overrides rules while they commit code. What you want is for a developer to either follow the established rules (preferred!) OR to make an exception to the rules that is clear and obvious right at the point where the exception is being made.
Ideally, during a code review, that exception can be discussed and debated and vetted. Maybe it was justified, maybe it wasn’t. But at least it was obvious, and at least it was possible to be discussed in the first place.
Configurability of tools is how we make tools work for us instead us working for the tools.
Some prefer convention-based approaches to tooling, where the rules are pre-determined so there’s no discussion or debate. I’m know that works for some developers and for some teams, but I don’t think it is a sustainable approach for generalized, broad application. Ultimately, a tool that is inflexible to the changing project needs and DNA of the developer(s) using it, will end up falling into obscurity and eventually replaced.
Proper Arrows
I fully recognize my usage of the the word “proper” here is going to ruffle some feathers. “Who is getify to say what is proper and not?”
Remember, I’m not trying to tell you what is proper. I’m trying to get you to embrace the idea that opinions about => arrow functions are as varied as all the nuances of their syntax and usage, and that ultimately what is most appropriate is that some set of opinions, no matter what they are, should be applicable.
While I’m a big fan of ESLint, I’ve been disappointed by the lack of support from built-in ESLint rules for controlling various aspects of => arrow functions. There are a few built-in rules, but I’m frustrated that they seem to focus mostly on superficial stylistic details like whitespace.
I think there are a number of aspects that can hamper => arrow function readability, issues that go way beyond what the current ESLint ruleset can control. I asked around on twitter, and it seems from the many replies that a lot of people have opinions on this.
The ultimate linter would not only let you configure rules to your liking, but build your own rules if something were lacking. Luckily, ESLint supports exactly that!
So I decided to build an ESLint plugin to define an additional set of rules around => arrow functions: proper-arrows.
Before I explain anything about it, let me just point out: it’s a set of rules that can be turned on or off, and configured, at your discretion. If you find even one detail of one rule helpful, it would be better to use the rule/plugin than not.
I’m fine with you having your own opinions on what makes => arrow functions proper. In fact, that’s the whole point. If we all have different opinions on => arrow functions, we should have tooling support to let us pick and configure those different opinions.
The philosophy of this plugin is that, for each rule, when you turn the rule on, you get all of its reporting modes on by default. But you can of course either not turn the rule on, or turn the rule on and then configure its modes as you see fit. But I don’t want you to have to go hunting for rules/modes to turn on, where their obscurity prevents them from even being considered. So everything comes on per rule.
The only exception here is that by default, all rules ignore trivial => arrow functions, like () => {}, x => x, etc. If you want those to be checked, on a per-rule basis you have to turn on that checking with the { "trivial": true } option.
Proper Arrows Rules
So what rules are provided? Here’s an excerpt from the project overview:
"params": controls definitions of => arrow function parameters, such as forbidding unused parameters, forbidding short/unsemantic parameter names, etc.
"name": requires => arrow functions to only be used in positions where they receive an inferred name (i.e., assigned to a variable or property, etc), to avoid the poor readbility/debuggability of anonymous function expressions.
"location": restricts where in program structure => arrow functions can be used: forbidding them in the top-level/global scope, object properties, export statements, etc.
"return": restricts the concise return value kind for => arrow functions, such as forbidding object literal concise returns (x => ({ x })), forbidding concise returns of conditional/ternary expressions (x => x ? y : z), etc.
"this": requires/disallows => arrow functions using a this reference, in the => arrow function itself or in a nested => arrow function. This rule can optionally forbid this-containing => arrow functions from the global scope.
Remember, each rule has various modes to configure, so none of this is all-or-nothing. Pick what works for you.
As an illustration of what the proper-arrows rules can check for, let’s look at the "return" rule, specifically its "sequence" mode. This mode refers to the concise return expression of => arrow functions being a comma-separated sequence, like this:
var myfunc = (x,y) => ( x = 3, y = foo(x + 1), [x,y] );
Sequences are typically used in => arrow function concise returns to string together multiple (expression) statements, without needing to use a full { .. } delimited function body and an explicit return statement.
Some may love this style — that’s OK! — but a lot of folks think it favors clever terse style coding over readability, and would prefer instead:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
Notice that it’s still an => arrow function and it’s not even that many more characters. But it’s clearer that there are three separate statements in this function body.
Even better:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
To be clear, the proper-arrows rules don’t enforce trivial styling differences like whitespace/indentation. There are other (built-in) rules if you want to enforce those requirements. proper-arrows focuses on what I consider to be more substantive aspects of => function definition.
Concise Summary
You and I almost certainly disagree on what makes good, proper => arrow function style. That’s a good and healthy thing.
My goal here is two-fold:
Convince you that opinions on this stuff vary and that’s OK.
Enable you to make and enforce your own opinions (or team consensus) with configurable tooling.
There’s really nothing to be gained from arguing over opinion-based rules. Take the ones you like, forget the ones you don’t.
I hope you take a look at proper-arrows and see if there’s anything in there which you could use to ensure your => arrow functions are the best form they can be in your code base.
And if the plugin is missing some rules that would help define more proper arrows, please file an issue and we can discuss! It’s entirely plausible we may add that rule/mode, even if I personally plan to keep it turned off!
I don’t hate => arrow functions, and you shouldn’t either. I just hate uninformed and undisciplined debate. Let’s embrace smarter and more configurable tooling and move on to more important topics!
The post I Don’t Hate Arrow Functions appeared first on David Walsh Blog.
I Don’t Hate Arrow Functions published first on https://deskbysnafu.tumblr.com/
0 notes
Text
In Praise of Incrementalism (Rebroadcast)
The British cycling outfit Team Sky used a strategy of “marginal gains” to win four Tours de France since their founding. (Photo: Jaguar MENA/flckr)
Our latest Freakonomics Radio episode is called “In Praise of Incrementalism (Rebroadcast).” (You can subscribe to the podcast at Apple Podcasts, Stitcher, or elsewhere, get the RSS feed, or listen via the media player above.)
What do Renaissance painting, civil-rights movements, and Olympic cycling have in common? In each case, huge breakthroughs came from taking tiny steps. In a world where everyone is looking for the next moonshot, we shouldn’t ignore the power of incrementalism.
Below is a transcript of the episode, modified for your reading pleasure. For more information on the people and ideas in the episode, see the links at the bottom of this post. And you’ll find credits for the music in the episode noted within the transcript.
* * *
Our previous episode of Freakonomics Radio was called “In Praise of Maintenance (Rebroadcast).” We asked if our cultural obsession with innovation has led us to neglect the fact that things also need to be taken care of. We talked about sewers:
Ed GLAESER: Certainly, Rome understood that engineering and infrastructure was a huge part of making its city function.
About bridges:
Larry SUMMERS: It’s a remarkable and not a very happy tale.
We talked about housework:
Ruth SCHWARTZ COWAN: They’re doing almost as much unpaid maintenance work as they are paid work.
And we talked about the nuts and bolts of the digital economy:
Martin CASADO: I mean, all of that is infrastructure.
We wound up talking about a pet project of mine — which is trying to digitally archive all my work and personal files:
Chris LACINACK: So this is about maintenance. It’s losing the 200 pounds and then staying that weight.
This project was daunting — until someone helped me frame it differently:
LACINAK: It’s all about prioritization, one step at a time.
One step at a time. Increment by increment. It got me to thinking about the value of incrementalism in a moonshot world. It got me to thinking that incrementalism is to the moonshot, what maintenance is to innovation. And so, this week on Freakonomics Radio: “In Praise of Incrementalism.” Or, if that’s too wonky for you, how about this: What do the Italian Renaissance, the Tour de France, and the civil-rights movement have in common?
Linda HIRSHMAN: We all like a dramatic story. But things don’t happen out of the blue, and it’s so interesting to get a true picture of why change happens, rather than this sort of phony all of a sudden picture.
* * *
Ed Glaeser is an economics professor at Harvard. I wanted to ask him about my “incrementalism” idea.
DUBNER: So my argument here is that generally we are encouraged and trained, really, to look for big-bang successes, in all realms — education, health care, politics, you name it — and while I understand the impulse to find these magic bullets — it’s exciting, it’s sexy, it’s all those things — it strikes me that much progress if not most throughout history has really been a series of incremental gains. What’s your take on that?
GLAESER: Oh, I think almost surely that’s true. I like these examples from the arts you can really see each innovation in each painting and each step along the way. If you think about the glory of the Italian Renaissance, it’s a piecemeal process. Brunelleschi first puts together the mathematics of linear perspective, of making two-dimensional spaces seem three-dimensional — Donatello, his friend, puts it in low-relief sculpture. It moves to Masaccio, who finally puts it into a painting in Brancacci Chapel, St. Peter finding the coin in the belly of a fish. Fra’ Filippo Lippi takes up the ball. Botticelli takes up the ball, each person incrementally improving on the last person. Each person exploring the implications of this new idea. It’s not that Da Vinci comes along and then all of a sudden the world is different. It’s that he’s built on a century of incrementalists, some of whom are pretty big incrementalists but incrementalists nonetheless, who are really creating this revolution.
Glaeser is plainly an erudite fellow, especially for an economist. But just so you don’t think he spends all his time thinking about Renaissance art and ignoring his own discipline – well, we talked about that too.
GLAESER: Within the field of economics, there are larger or smaller parts of those increments, but we’re a field that builds on itself, and it’s sort of a striking fact that within economics, that the Nobel Prize doesn’t really give awards for single papers, so much as it does for a series of contributions by a particular person. And that’s surely as it should be, because there’s rarely true that one paper on itself is so revolutionary that it changes things. It’s more that people build on things. It often takes dozens of extra ones to figure out what it means, and what it what it implies for the wider world.
DUBNER: So plainly you appreciate incrementalism in your own field, and in other fields. Do you feel that puts you a little bit in the minority? Do you feel that our culture and political and social culture is always looking for some version of the moon shot?
GLAESER: I don’t know. I mean, I think this is more a Silicon Valley thing than a Cambridge thing. I think maybe I believe in incrementalism because I’m so painfully aware of the very incremental nature of my own contributions. But it’s certainly true that in the political sphere we are always looking for big bang solutions. We’re looking for a leader who will make everything right by coming around the corner, and inevitably we’re incredibly disappointed that somehow or other this new leader didn’t magically change everything. The more that you just think that the right answer is just to elect one person who will magically fix anything, the less that you actually pay attention to what really matters, which is the nit and grit of everyday decision-making, of everyday governance.
DUBNER: So civil-rights reform strikes me as one where incrementally, there have been massive improvements, and yet it seems as though the appetite for an overnight solution to every civil-rights issue is expected. And when that doesn’t happen, there’s massive hue and cry — even though, overall, the trend has been moving in the right direction. You see that as well, or do you think I’m wrong on that?
GLAESER: No, no I agree totally with that. And it required people who — the NAACP for example, which worked for decades before the Civil Rights Act to move the ball forward. Often in ways that were important, but seem today quite modest. I mean fighting up to the Supreme Court. Fighting the attempts to zone by race, for example, which it did in the teens. Right? You know, American segregation would’ve been even worse if cities could explicitly zoned by race, but they couldn’t. Fighting restrictive covenants as it did in the 40’s. Fighting segregation in American schools as it did in the 50’s. Decade by decade, increment by increment. And once we start thinking that there’s a silver bullet, we lose that, we lose the fact that we need to be working day by day, over decades, to affect change.
MUSIC: Lucy Bland, “Backseat” (from The Ruiner)
So let’s take a look at a recent story that’s been decades in the making.
JUSTICE KENNEDY: The Court now holds that same-sex couples may exercise the fundamental right to marry in all states; no longer may this liberty be denied to them.
In 2015, the Supreme Court ruled that same-sex couples have a constitutional right to marriage. “Marriage,” wrote Justice Anthony Kennedy in the majority opinion, “is a keystone of the Nation’s social order … There is no difference between same- and opposite-sex couples with respect to this principle.”
JUSTICE KENNEDY:The challenged laws excluding same-sex couples from marriage cannot stand under the Constitution.
In 2001, the Pew Research Center found that a majority of Americans opposed same-sex marriage. The margin was 57 percent against to 35 percent in favor. But by 2015, those numbers had practically flipped. Which would seem to indicate a rather sudden shift.
Linda HIRSHMAN: People often say to me, “Wow, gay marriage. It succeeded so quickly!” They say that all the time. We all like a dramatic story. But things don’t happen out of the blue, and it’s so interesting to get a true picture of why change happens, rather than this sort of phony, all-of-a-sudden picture.
That’s Linda Hirshman. She’s a legal scholar who used to practice labor law – she argued two cases before the Supreme Court and briefed and managed a third. She’s also the author of several books, including Victory: The Triumphant Gay Revolution. The revolution, Hirshman argues, was incremental.
HIRSHMAN: It wasn’t the explosion that the popular narrative makes it out to be.
So, to understand how we got here:
PAMELA BROWN: A historic day here at the Supreme Court, Jay. You can probably hear gay-rights advocates to my right cheering this decision.
You have to go back to a time when life for gay men and women in America was very different.
JOSEPH McCARTHY: There’s another group about which I hesitate to talk, but I think the picture isn’t complete unless we do.
HIRSHMAN: It got very bad during the Joseph McCarthy period.
JOSEPH McCARTHY: This unusual State Department affliction, homosexuals…
HIRSHMAN: The sort of Red Scare stuff that went on in America started in World War II. And right after WWII, it really ramped up, and the government used the fact that people were gay as evidence that they were subversive. And they fired them if they worked for the government, so it was a very dark period in gay history.
One of those people was Frank Kameny. He was a Ph.D. astronomer from Harvard.
HIRSHMAN: He was hoping to become an astronaut.
Kameny worked with the Army Map Service of the U.S. Army Corps of Engineers.
HIRSHMAN: And they caught him in a bathroom in San Francisco and they fired him.
This was in 1957.
HIRSHMAN: And he said, “That’s unconstitutional. You can’t fire me just because I’m gay.” And he sued the United States.
Kameny lost, and appealed. He lost again on appeal. In 1961, Kameny petitioned the U.S. Supreme Court, but was turned down.
HIRSHMAN: It was too soon. But things in America were starting to break up. And just at that moment, Frank Kameny had the courage to resist.
The civil-rights movement was growing – sit-ins, Freedom Rides, eventually the March on Washington, D.C., in 1963. Frank Kameny wanted to do something similar for gays and lesbians. There was a gay-rights group, founded in Los Angeles in 1950, called the Mattachine Society. The name came from mattachino – Italian for a court jester who spoke truth to power. Kameny started a Washington chapter of the Mattachine Society, and he organized protests outside the White House and other federal buildings.
FRANK KAMENY: Every American citizen has the right to be considered by his government on the basis of his own personal merit, as an individual.
That’s Kameny speaking outside the State Department in 1965. At the time, the State Department argued that gay men and women were national-security risks because they could be easily blackmailed.
KAMENY: Certainly some homosexuals are poor risks. This is no excuse for penalizing all homosexuals.
Their protests were ineffective. Here’s then-Secretary of State Dean Rusk.
Dean RUSK: Well, I understand that we’re being picketed by a group of homosexuals. [Laughter] The policy of the department is that we do not employ homosexuals knowingly. And if we discover homosexuals in our department, we discharge them.
From the tone of Rusk’s voice, you get a sense of just how much stigma was attached to homosexuality. You have to remember – being gay at the time could not only get you fired; it could also land you in jail. Nearly every state at the time had sodomy laws. Was there at least some support from the medical community? Hardly:
Charles SOCARIDES: Homosexuality is in fact a mental illness, which has reached epidemiological proportions.
That’s Charles Socarides, a psychiatry professor, interviewed for a 1967 CBS News report called “The Homosexual.”
SOCARIDES: The fact that somebody’s homosexual — a true, obligatory homosexual — automatically rules out the possibility that he will remain happy for long in my opinion.
HIRSHMAN: Kameny had figured out as soon as he got active that there could be no equality for gay and lesbian people while they were classified as crazy.
Indeed, Socarides’s view was hardly a marginal one. The American Psychiatric Association classified homosexuality as a mental disorder. The Mattachine Society and other groups set out to change that classification.
HIRSHMAN: And they went about it in a very incrementalist way. They went to the people in the American Psychiatric Association who were studying the question of the diagnoses. They’re a medical association, so they had scholars who were studying it. So the gay organizers approached the scholars and said, “You’re wrong. You’ve got to do real research into this.”
It helped, perhaps, that Frank Kameny was himself a scientist. Hirshman says he could spot flaws in the scholarship about homosexuality. For instance, most of the studies relied solely on gay psychiatric patients.
HIRSHMAN: I mean once somebody is going to the psychiatrist to be helped, he’s part of a population that’s not representative of the whole gay population, right? He’s already in need of psychiatric help or he wouldn’t be there in the first place. You have to look at a representative sample of the whole population and see if they seem to be in distress, which they did not, except from the persecution of course. And to see if they were functioning according to the other indices of good mental health. And they were. The numbers were overwhelming, once the psychiatrists stopped looking at their own patients.
Homosexuality was finally removed from the list of mental illnesses in 1973.
HIRSHMAN: To their credit, these doctors, at the end of the day confronted with the science, did change their position. I interviewed, before he died, the psychiatrist who was in charge of the A.P.A. at the time and he said it was the greatest accomplishment of his life.
So that was progress. But consensual sex between two people of the same gender was still illegal in most states, and those laws gave the police enormous power over gays and lesbians.
MARTIN BOYCE: They were always on the lookout for us. They tormented us. They just didn’t leave us alone.
That’s Martin Boyce, a longtime New Yorker who participated in the famous Stonewall riots in 1969.
BOYCE: The amount of people that had trouble with the police or were sent to some sort of institution or were brutalized one way or another, with the police not intervening or being on the side of the brutalizer, was growing. I don’t think any of us did not know someone who really, really suffered real consequences. If not ourselves, then somebody.
The riots were set off by a police raid of the Stonewall Inn, a gay bar in Greenwich Village. In retrospect, the riots were a turning point in the gay-rights movement. But it would take a long time to gather enough momentum to challenge the legal system.
HIRSHMAN: Quietly during those years in various states and around the country, state courts and state legislators had been decriminalizing sodomy. So gays were now not crazy, and they then attacked the premise that their behavior was criminal. And they were succeeding pretty well.
But many states still had sodomy laws. The movement’s ultimate goal was to take the fight all the way to the Supreme Court, which could invalidate all the state laws at once. In 1986, at the height of the AIDS epidemic, the American Civil Liberties Union thought it found a perfect test case in Michael Hardwick, a gay man who’d been arrested for sodomy in Georgia.
HIRSHMAN: In the gay legal bureaucracy, it was felt they reasonably could expect now to get a national judgment that criminalizing gay sex, as opposed to not gay sex, which is not criminal, was a violation of the equal-protection clause.
The ACLU did take the case, known as Bowers v. Hardwick, to the Supreme Court. And …
HIRSHMAN: They lost it, 5-4.
The majority ruled that the right to engage in sodomy was not constitutionally protected. Linda Hirshman says it was a devastating defeat for the gay community.
HIRSHMAN: The opinion is reprehensible and they were already suffering from AIDS.
But, she says, it also made gay-rights advocates even more determined.
HIRSHMAN: Sometimes a defeat like that is so insulting that it radicalizes the community.
By now, the right to marry was becoming another significant plank in the gay-rights platform. Here, from back in 1974, is Frank Kameny talking about it on PBS:
KAMENY: Exercise by homosexual couples of the right to marry detracts not one iota from the rights of heterosexual couples to marry. Homosexual marriages interfere with no one individually. And such marriages impair or interfere with no societal interests.
The question was how the goal of gay marriage could be achieved through the courts. Hirshman says that one source of inspiration was found in the African-American leadership, particularly the NAACP, that pursued civil-rights legislation in the 1950s and 60s.
HIRSHMAN: They followed an incremental pattern more cleanly than any other social movement because the NAACP controlled it.
Thurgood Marshall, who eventually became the first black Supreme Court Justice, was head of the NAACP’s legal strategy. In that capacity, he argued several cases before the Supreme Court, including the landmark Brown v. Board of Education of Topeka, which in 1954 desegregated public schools.
HIRSHMAN: The closest that we’ve come in American social history to having a dictator is Thurgood Marshall. The Inc. fund, the NAACP legal-defense fund, controlled the money that you needed to spend to prove a school desegregation case. And accordingly, they got to say in what order that very fundamental question of school desegregation was presented to the Supreme Court. So they challenged, for instance, a law school that segregated its one black law student out from the class of white law students by roping him off. I mean they didn’t tie him up, but so important was the maintenance of racial caste. And it’s hard for a Supreme Court in the 50’s to look at that and say, “Oh, that’s okay.” So in fact the court said it was unconstitutional. Okay now, if it’s unconstitutional to segregate a state law school, why isn’t it unconstitutional to segregate state colleges? And from there to the grade schools, which was the socially the most explosive decision.
The gay-rights movement had no dictator, like Thurgood Marshall. Nor was there a single, dominant organization like the NAACP. But, Linda Hirshman says, there was a consensus beginning to form among activists that the gay-marriage fight would be the hardest one to win. Which meant continuing to focus on the sodomy laws – and fighting anti-gay discrimination in the labor and housing markets and elsewhere.
HIRSHMAN: They very smartly went back to the drawing board with the sodomy laws. And kept getting them struck down by state courts and reformed and reversed in state legislatures until it was an outlier in America to make sodomy criminal.
Finally, in a 2003 case called Lawrence v. Texas, the Supreme Court overturned Bowers v. Hardwick, thus invalidating all remaining sodomy laws.
BOYCE: And that I think was the most important decision of them all.
That again is Martin Boyce, veteran of the Stonewall riots.
BOYCE: I mean once that happened, then it was going to be a matter of time. I don’t know how much time. It could have been many more years of incrementalism. But I knew it was going to happen.
“It” being the legal right for same-sex marriage. Gay-rights advocates won the legal battle in a number of states – Massachusetts was first, in 2004 – although they subsequently had to fight off a proposed federal amendment to the Constitution that would have defined marriage as a union between a man and a woman. They kept working to shift public opinion. In 2012, President Obama, who had previously opposed same-sex marriage, changed his position:
Barack OBAMA: At a certain point I’ve just concluded that for me personally it is important for me to go ahead and affirm that I think same-sex couples should be able to get married.
The same-sex marriage movement, as triumphant as it was, in some ways came out of order. There were other, perhaps more fundamental goals to still accomplish — for instance, winning nondiscrimination protections for the LGBTQ community throughout the U.S. Still, as Linda Hirshman points out, the marriage movement did work, and it worked because of the incremental steps that added up to victory. Hirshman has written a number of books on social movements. We asked if she had any advice for one social movement: Black Lives Matter.
HIRSHMAN: I have lessons that I think any future movement can learn from the gay-rights movement, and they are as follows: Put your own interest first. Do not take up every conceivable progressive issue that somebody in your movement thinks is interesting. At the beginning, new movements don’t have a lot of spare capital and they need to spend it on their issues and the things that will keep them together rather than fragment them. The gay movement did that. Two, take the moral high ground. The AIDS epidemic forced the gay movement to take the moral high ground, and they did it beautifully and then they used it in the marriage fight perfectly. And the third lesson is have weekly meetings. I am not convinced that social media is a substitute for the kind of social, deep rich social contacts that emerge from physical proximity to one another. The next steps that Black Lives Matter can take are reasonable ones for them to take next, okay? The availability of technology in the form of video cameras and phone cameras empowers them to take bolder action than they would be able to take without the technology. So their next steps look about right to me. They’re bold, but they are in a sense incremental. I mean saying, “Don’t shoot me while I’ve got my hands in the air” does not strike me as a radical position. They then have to move to much more profound issues like the organization of the police force and their training and the way that people use local taxes against communities of color like in Ferguson. Those are bigger bites, but it’s time I think for those to be addressed as well.
MUSIC: Andrea Wittgens and Sugartown, “Alibi Was Just An Afterthought” (from Alibi)
* * *
MUSIC: Nicholas Pesci, “Feeling Quirky”
Let me ask you a question: where do you get your financial advice?
Jim CRAMER: Let me tell you how I see it.
Maybe you tune in Jim Cramer to see where the market’s headed?
CRAMER: Crystal-clear short-term signal [Sell! Sell! Sell!] to sell the automakers for the moment.
Or maybe you follow a different money guru.
CLIP: Squawk Box! Weekdays at 6am on CNBC!
Mike SANTOLI: We know why these stocks look cheap.
PRESENTER: Dan, walk over to the smart board.
David LAIBSON: It depresses me that so many people giving so much bad advice have such a big audience and get paid for it.
That’s David Laibson.
LAIBSON: I’m a behavioral economist at Harvard University.
Laibson’s done a lot of amazing research over the years – really amazing, you should look it up – mainly focused on how people make decisions. And how a lot of those decisions are suboptimal – and what should be done about that. Consider saving for retirement. A lot of people don’t follow the incremental approach.
LAIBSON: They love to hear the get-rich-quick story, and people dispensing those stories get big audiences. And some of them even have good historical track records and they get even bigger audiences, until of course they get a bad track record. It’s very easy to get sucked into a false prophet, and there’s so many of them in the financial-services industry.
In study after study, the data overwhelmingly show that individual investors are no good at picking stocks.
LAIBSON: Even the pros are no good at that game. The ability of a mutual fund that does well in one year to do well in the next year is close to perfect chance. So you’re just making a mistake. It’s a very natural mistake. I understand the mistake, because we all look out at the world and say, “Hey, I can see good companies and bad companies.” The problem is that that goodness and badness is already priced in. So you’re not the first one to figure out that Amazon’s a good company. You’re not the first one to notice that this car maker is starting to make bad products and no one is buying their vehicles. Everyone is seeing what you’re seeing. All that information is priced in already. You don’t have an advantage in playing the market.
So what’s a better way to think about saving for retirement?
LAIBSON: One has the impression that it’s impossible to save enough for retirement — and to a certain extent, it is impossible if you start at age 50. But if you start early in life, and every year, you contribute let’s say 10 percent of your income, and maybe there’s an employer match, so now we’re up to maybe 15 percent, and you invest that savings in a diversified mutual fund, stocks and bonds, and you have low fees, and you keep going at that year in and year out, and you don’t decumulate prematurely — it’s amazing how that process produces millions of dollars of retirement savings. So it’s kind of hard to imagine how you go from what seems like a little bit of money each year to being a millionaire but that’s exactly the way it works when you work out the math.
DUBNER: So what you’re describing is not at all a secret to anyone who’s ever read any basic personal-finance or investing book. And yet, as we know, there are a lot of people who don’t follow that. Talk to me for a minute about what we know about the people who have the ability and the resources, the income to accomplish exactly that plan but don’t do it. Is it just too boring, is it too much work, is spending here and now just too exciting to divert that saving today?
LAIBSON: It’s a lot of elements. One element is investing is complicated. So one of the ways that success is achieved is by employers auto-enrolling their employees in these plans and then auto-escalating their savings rates. Also the employer picks a good default investment fund, again diversified, stocks and bonds, mostly stocks when young, moving more and more to bonds as you age. Low fees. Passive investments, so rather than having active management, which is costly, you have passive investments that implies lower fees. And when the employer puts all those pieces in place, people go with the flow. They don’t opt out. They don’t say no. In fact, they say, “Thank you so much. I’m so glad you did this for me.” But if all those pieces aren’t there, we go off the rails. So our employer may not offer such a plan. That’s a problem for approximately half of the private-sector workforce. There are so many ways in which, unless the right conditions are there, we end up doing what comes natural, which is postponing saving or, even if we save, decumulating. That’s another big risk factor. Maybe I’m at a firm for 10 years; I’ve now accumulated a considerable pool of funds. I leave that firm to go to another firm. Rather than rolling the money over to an IRA or leaving the money in the original employer’s plan, I take that savings as a distribution and now I’m spending that money. So in fact, rather than building the beginning of the snowball that’s going to roll into something enormous, I’ve made my savings vanish and I start again from zero at the next firm. So there’s a lot of ways in which, even though we know we should save for retirement, we fail unless the right conditions exist for us to succeed. It’s those workers who accept those defaults and who take advantage of these modern retirement savings systems, employer-based retirement savings systems, who end up thriving in retirement.
One more conversation today, before we wrap things up, on incrementalism.
DUBNER: Shall I call you Sir Brailsford, Sir Dave, how does that work?
Dave BRAILSFORD: No, no. It was a nice thing to happen at the time but in reality gets you an upgrade on flights and a few hotels rooms but that’s about it really. So let’s stick to “Dave.”
Dave Brailsford was knighted for helping turn Great Britain into a perennial titan in the sport of cycling.
BRAILSFORD: Prior to the year 2000, Great Britain was a nation that only won one gold medal in 76 years of trying.
In Rio, in 2016? Team GB won 12 cycling medals, including 6 gold. At the 2012 Games, in London? Eight gold medals. Brailsford was the performance director of the British Cycling team from 2003 until 2014. In 2009, he helped found the professional cycling outfit Team Sky. The stated goal of Team Sky at the time was to have a British winner of the Tour de France within five years. In fact, Team Sky won two Tours within its first five years, and then two more in 2015 and 2016. Brailsford grew up in Wales, the son of a mountain climber. He wanted to be a professional cyclist, maybe even win the Tour de France himself.
BRAILSFORD: So I decided to pack my bags, rucksack, bike in a box and saved all my money, took enough and went to France.
He found a team willing to take him on – perhaps out of pity, he says now.
BRAILSFORD: I realized pretty early on that I wasn’t going to make it as a top-level professional cyclist. So I thought, Well if I can’t win the Tour de France myself then maybe the future lies in helping other people do that.
So Brailsford returned to the U.K. and went to university. He studied sport science and psychology, then got an M.B.A. He first started working for British Cycling back in 1997. Over the years, he developed a strategy based on a principle called “marginal gains.”
BRAILSFORD: Physics and cycling go hand in hand. It’s a sport that lends itself nicely to physics, data collection, measurement, power and speed. And so, we could collect lots of data and analyze performance and we could feed that back to riders. And then we could work with them on small, very small, minor tweaks, minor changes that probably felt relatively insignificant at the time, but over time, would stick.
DUBNER: Give me a for-instance. Is it something like posture, it is something like pacing, is it mental?
BRAILSFORD: Yeah, positional. You know, across the whole continuum of sport, of the performance. Some of it could be the position of the bike, the position of the head. We fight against the wind in cycling all the time. It’s the biggest thing that slows us down. And just literally dropping the head between the shoulders, dropping it down just a centimeter will improve the aerodynamics and for the same power, you’ll go a little bit further. And the more you can think about holding that position and being cognizant of that position whilst you’re riding at your limit, it makes a difference.
But the marginal-gains approach went well beyond aerodynamics. The idea was to produce at least a one-percent improvement in every facet of the enterprise. From the mechanical – like installing a tire perfectly straight on the rim. To the physiological – like managing the riders’ nutrition and choosing the best massage gel.
BRAILSFORD: We’d look at hand-washing, for example, an area where we’d go to the Olympic Games and we’d be in great form and then we’d be terrified of the riders getting ill or catching a bug. So we started to think about, Wow, how are you going to optimize or reduce the chances of us getting an illness within the team in the Olympic Village for example, and then for that to run through the team and create havoc. So we got a surgeon in who showed everybody how to wash their hands properly. We had people who cleaned all the handles, cleaned the lifts buttons, we obviously encouraged people not to shake hands and be very mindful of this and use hand gels all the time. And I mean, it’s common practice now but when we were starting out, there were small little things that, we’d think, Is that going win us a medal? Well, no, it’s not. But is it going to contribute to it? Yeah, potentially.
DUBNER: How did you first come to embrace the notion that marginal gains could be fruitful? How did you go about learning or deciding which areas to apply it to?
BRAILSFORD: It wasn’t something overnight, like I just woke up morning and thought, “Okay, well, we’ll do it like this. We’re human beings.” And when someone says, I’d like a perfect performance, that is daunting. So I thought, let’s break our performance to all of its component parts, map them all out, and then let’s have a look and see is it is possible to progress in each one of the areas? And can we be bothered to do it? Because it takes a lot of work and energy. And then you’ve got something that people are in control of and they feel empowered to move forward. So, yeah, they’ll say, “I might not be able to see how I’m going to get to top of that massive mountain over there, but boy I tell you what, I can improve a small amount in my nutrition, in my diet, I can move my weight program forward, I can get another five minutes sleep a night, I can do all the recovery protocols as necessary.” You know, and on and on it goes. Now, there’s a big psychological component of this where there’s a team and support team — if everyone buys into that philosophy, you’re creating a culture which is actually moving forward and is actually kind of building a little bit of momentum. Now there’s no denying, there’s no point to doing anything in the periphery unless the absolute critical elements, which are going to account for 40 or 50 percent of the performance, are in place.
DUBNER: What are you talking about when you talk about that 40 or 50 percent baseline? Is that talent, is that riders who are very, very good already?
BRAILSFORD: So, you have to have a hunger and a willingness. And it’s not so much a hunger of wanting to be an Olympic champion. It’s a hunger towards, “I can break down what it would take to get from where I am now to be an Olympic champion and I can see the sacrifices, I can see the suffering, and doing all of that work.” So, that’s for me what we mark down as a “hunger index.” We then look at the talent obviously, and then you have barriers. So, remove the barriers and that will then equal success.
DUBNER: I’m guessing back when you were trying to break into cycling yourself, there was probably no such thing as a “hunger index” there. I’m guessing, if there had been — what do you think your hunger index was back then, Dave?
BRAILSFORD: Very high. I’m a trier, there’s no doubt about that. I think that’s something that’s just set I guess, maybe part of my psychology, my personality.
DUBNER: Well, being the son of a mountain climber probably doesn’t hurt, huh?
BRAILSFORD: No, that’s right, that’s right. You know the one thing he always used to tell me was, “You’ve got to be professional,” always “you’ve got to be professional, professional, professional.” And I used to roll my eyes every time he said it, like, “Come on Dad, shut up.” And then somewhere down the line, it seems to have stuck.
MUSIC: Paul Avgerinos, “Playful Light Delight”
Team Sky, the professional cycling team that Brailsford now runs, competes in big-time races like the Tour de France, where you cover more than 2,000 miles over three weeks. Which means a new day, a new hotel, and a new bed. And, again, Brailsford saw an opportunity for a marginal gain.
BRAILSFORD: The hotel is given to you by the organization, you can’t change it, you don’t know what the mattress is going to be like, you don’t know what the room is going to be like. So we have a forward team that go into the hotels and they have a room protocol. Basically, they lift the bed up, they Hoover under the bed, they clean the room, they have antibacterial protocol which cleans all the room including the television, remote control, the tap handles, etc. We take the shower head off and clean the shower. And then they have their own mattresses, their own pillows specifically for each rider. And so they can sleep in the same posture every night. Now is that going to win you the Tour de France? Probably not, but it can contribute.
DUBNER: Let me ask you: your teams have been phenomenally successful. To what extent do you believe that the marginal gains approach is actually responsible? I get the sense from previous interviews that you think that maybe too much has been made of the marginal-gains business.
BRAILSFORD: I think it gave us a methodology, it gave us an approach which allowed the support staff and the riders, to be of a certain mindset and approach things in a certain way. And there’s no doubt about it, it was like a contagious enthusiasm, if you’d like. I think equally, at times, it’s too simplistic, just to say, “Well, all we have to do is adopt this marginal-gains approach,” and I think people misunderstood the concept of marginal gains being the latest bit of technology or improvement to the bike or aerodynamics, etc. I think what they missed was the whole tacit psychological component, which created a culture and a mindset within a group which allowed the whole group to buy in to something, to have a collective approach where hundredths of a second could be the difference between winning and losing.
DUBNER: Now, of course even casual cycling fans, they know that Lance Armstrong, who won the Tour de France seven times, vehemently denied doping for many years until he eventually admitted it; and that many, many cyclists have doped, which really put a huge stain on the sport. So how does a group of cyclist as dominant as yours, with both Team Sky and Team GB, expect all of us to believe that there’s no doping going on?
BRAILSFORD: It’s a very good question. And I don’t think given the past that we can expect everybody to just believe everything that they see. And I think they’re right to question. There were questions asked in the past, and people trusted Lance and it came as a big blow and big shock to a lot of people. And I think that would inevitably lead to a level of suspicion and a lack of trust that was going to be a hangover from that period. So I fully understand why people do question us. And I think our job then is to try and be as transparent and open as possible about what we do and how we do it. And also over time, I think people will see that we are doing it the right way. We are doing it clean and like I say, we just have to be accepting of the situation we find ourselves in and be patient and tolerant and transparent.
Not long after this interview with Brailsford, he and Team Sky found themselves in a situation. Computer hackers released Team Sky documents showing that its two star riders of the past several years – Chris Froome and Bradley Wiggins, both of whom have won the Tour de France — that they used banned substances under what’s known as a therapeutic use exemption, or a T.U.E. A T.U.E. allows a rider to use an otherwise off-limits drug for legitimate medical reasons. In Wiggins’s case, for instance, in order to treat his pollen allergies before the Tour in 2011 and 2012, he injected a banned corticosteroid called triamcinolone, which some say acts as a performance enhancer.
There’s no evidence that Wiggins or anyone else on Team Sky broke the rules – it was, after all, a therapeutic use exemption. Which is supposed to be kept confidential. But when it wasn’t kept confidential, and when you run a team that’s been hugely successful, and when you’ve been touting something called “marginal gains” as a key component of that success – well, people will talk, especially in Britain, where cycling is a national obsession.
Here’s the Sunday Times sportswriter David Walsh talking to the Australian Broadcasting Corporation:
David WALSH: The problem that Team Sky have got with this is not only the act itself, which is at the very least highly questionable, but they’re the team that set themselves up as whiter than white. They’re the team that set themselves up as totally transparent. They have been anything but transparent in their response to this. They have basically refused to go into any detail about how this was authorized and they’re basically sticking to the line: it was approved by the authorities and therefore it was technically legal. And for lots of people that’s not good enough, because ethics still matter in sport. Morals still matter.
MUSIC: Judson Lee Music, “Stars Falling”
In a report earlier this year, the U.K.��s government committee on sport came down hard on Brailsford and Team Sky. “How can David Brailsford,” the report read, “ensure that his team is performing to his requirements if he does not know and cannot tell what drugs the doctors are giving the riders? Brailsford must take responsibility for these failures, the regime under which Team Sky riders trained and competed, and the damaging skepticism about the legitimacy of his team’s performance and accomplishments.” Team Sky and Braillsford continue to refute any claims that they knowingly broke any anti-doping regulations.
It’s impossible to say, at this moment, the degree to which Team Sky may have broken or stretched the rules — or the extent to which their success will be downgraded if they are found to have broken the rules. Just as progress in civil rights and investing and cycling itself is an incremental exercise, so too is the revelation of truth. What I do think we can agree on is this: if you want to accomplish something, especially something large and meaningful, it pays to at least think hard about an incremental approach.
Let’s say you weigh 30 pounds more than you should. And you decide to lose it. What’s your expectation – that you can lose it all in just a few weeks, even just a few months? That’s ridiculous. Do you know how long it took you to put on those 30 pounds? A long time! It’s a lot of work to put on 30 extra pounds – well, not work, it’s actually quite fun, eating all that delicious food. But still, it took a lot of nachos and rice bowls and sugary drinks to put on 30 extra pounds. Go to the supermarket and look at a five-pound bag of potatoes. Now look at six of them – that’s how much you’ve accumulated, over time. So you know what? It’s going to take some time to decumulate. Little by little. Choice by choice. Increment by increment. If you expect otherwise – well, your expectations are likely to be dashed. By lowering your expectations, you can actually raise your chances of success.
So … good luck — whether your goal is losing weight or saving money or contributing to a social movement. As always, we’d love to hear from you. Let us know how it’s going. We’re at [email protected].
Freakonomics Radio is produced by WNYC Studios and Dubner Productions. This episode was produced by Christopher Werth. Our staff also includes Alison Hockenberry, Merritt Jacob, Stephanie Tam, Greg Rosalsky, Max Miller, Harry Huggins, and Andy Meisenheimer; we had help this week from Louis Mitchell. The music you hear throughout the episode was composed by Luis Guerra. You can subscribe to Freakonomics Radio on Apple Podcasts, Stitcher, or wherever you get your podcasts.
* * *
Here’s where you can learn more about the people and ideas in this episode:
SOURCES
Ed Glaeser, professor of economics, Harvard.
Chris Lacinak, founder and president, AVPreserve.
Linda Hirshman, legal scholar and author.
David Laibson, professor of economics, Harvard.
Dave Brailsford, cycling performance director (Team Sky and Team Great Britain).
RESOURCES
Triumph of the City: How Our Greatest Invention Makes Us Richer, Smarter, Greener, Healthier, and Happier, by Ed Glaeser.
“Changing Attitudes on Gay Marriage,” by the Pew Research Center.
“Frank Kameny — Astronomer, Activist, and Organizer.”
Additional music scoring by Jay Cowit
The post In Praise of Incrementalism (Rebroadcast) appeared first on Freakonomics.
from Dental Care Tips http://freakonomics.com/podcast/in-praise-of-incrementalism-rebroadcast/
0 notes
Text
Just Be Honest About What You’re Doing
By Chase Woodruff
On Saturday, in response to a question from ESPN’s Mark Saxon, Dexter Fowler voiced his opposition to the Trump administration’s failed attempt to ban entry to the U.S. by nationals of seven Muslim-majority countries, including Iran, where his wife Darya was born and many of his extended family still live. The story got picked up on social media, and Fowler quickly became the target of waves of criticism and abuse.
The volume and intensity of the backlash was shocking. Here’s just a small sample of some of the comments made in response to the story: “We pay your salary. I don’t give a shit about your political views!” “Maybe he should have brought them over sooner then he wouldn’t have a wet diaper.” “Fuck fowler who cares what he thinks.” “Why is it that the only athletes that are displeased with the President are black? Who’s the one’s being racist?” “Why the hell do these over paid actors and sports figures think WE GIVE A FUCK WHAT THEY HAVE TO SAY. Just do what you are paid to do and that is to entertain normal Americans.” “I have no patience anymore for dumbass stupid ass people who keep assisting that illegal aliens are simply immigrants.” “Many Presidents have done this, even Obummer. Fowler is just butthurt.” “He can share all his contract money with the immigrants.” “I don’t want to hear that b******* we pay him to play ball and that’s it.” “Fowler deserves a fastball right between his racist eyes.” “Shut up and go enjoy your $80 million how stupid.” “You’re paid to play, not to spew your political bullshit.” “Uneducated about what the Pres is trying to do for Blacks. Too bad.” “Move to Iran Dexter.” “I guess Dextor was thrilled with all the killings in Chicago last year, as he didn’t post anything about that.” “Wow another overpaid minority has an issue with a Republican?? Shut your ass up.”
No one gave a shit about any of these comments, though, because all of them were posted on a Facebook page called “Chicago Cubs True Fans” (I have no idea, either). Here are some more: “Glad he left.” “Traitor.” “That’s why he went to St. Louis.” “Well he obviously dont like winning hating trump and going to the cards.” “Guess it’s time to burn my Cubs Fowler jersey!” “Go to your St Loooey hellhole and stay there… an oh yeah, STFU.” “Thank Goodness we got rid of him, another crybaby…” “Go Cubs! Go Trump!” “Dexter just became the enemy even more now for me.” “Shut the fuck up traitor!! Who cares what you have to say!” “And I care what you think, why??? You overpaid incredibly lucky, person. Glad your no longer in Chicago!!!” “He isn’t worthy of the phrase former cub.” “Glad your gone BLM MAN FOWLER, and in the mean time , just maybe you can get your head out of clintons corrupt ass ? FUCK YOU SNOWFLAKE MFER.”
This went on and on and on—Cubs fans, hundreds of them, taking time out of their day to hurl cruel and in many cases plainly racist invective towards a player who doesn’t even play for their team anymore.
But as usual, the only abuse Baseball Twitter cared about or bothered to acknowledge was the abuse posted to “St. Louis Cardinals True Fans” (again, no idea). By now this process is so rote that there’s little need for me to explain what happened. The anonymous parasite behind the account @BestFansStLouis took screenshots of some of the worst comments and posted them to Twitter. They went viral, first and foremost among Cubs fans. The c o l o s s a l p i l l a r o f w a s p e g g s internet’s healthy and edifying aggregation ecosystem, from HardballTalk to The Comeback to SB Nation to Uproxx, jumped at the prefab content. Monday arrived and we hit the thinkpiece stage. Cardinals fans objected to being singled out once again, and here I am, writing the same shit I always do.
This is a tremendously efficient feedback loop, and it kicks into gear whenever any of the millions of people who proclaim themselves Cardinals fans do something stupid or offensive, and—let’s be clear—does so only when that happens. It kicks into gear when Cardinals fans say awful things to protesters outside Busch Stadium, but not when Orioles fans get physically violent with protesters outside Camden Yards. It gets activated on a massive and instantaneous scale when a single anonymous Twitter user lies about hearing slurs at Busch on a national TV broadcast, but not when David Price himself reports hearing racist taunts from Red Sox fans at Fenway. It’s why Oakland A’s fans are not notorious for their homophobia. It’s why this t-shirt is infamous and these aren’t.
And it’s why the story that got reported over the last couple days wasn’t that Fowler had been attacked by Cubs fans, or even that he’d been attacked by baseball fans in general—or by Facebook users, or by morons and bigots, or by older, conservative white men, all of which are true. The story was only that he’d been attacked by Cardinals fans. To report it any other way would risk disrupting the feedback loop.
There isn’t, and there never has been, any evidence that this is a useful way to frame this story or others like it. There is no evidence that the Cardinals have a singularly racist fanbase. There is no evidence that, as Will Leitch argues, Cardinals fans are disproportionately from rural areas, which are presumed to be more racist than urban areas (the gap is probably smaller than you think). There is only—there has only ever been—the @BestFansStLouis feedback loop, lizard-brain sports-fan tribalism, heaps of confirmation bias, and more than a small amount of naked classism and snobbery.
I am so unbelievably fucking tired of having to talk about this. I’ve given up hope that the cycle is ever going to end; the incentives—social and professional, emotional and economic—for the people involved to perpetuate it are just too great. But here’s my request, if you’re one of those people: for the love of God, try to be a little more honest about what you’re doing. If you like tweeting about the awful racist meth-addled BFIB, be honest about the fact that you just want to feel a little momentary superiority, to be comforted by the sense that your fanbase isn’t the Bad One. If you’re a baseball blogger writing up a @BestFansStLouis screenshot, be honest about why you know that post is going to do good numbers. If you want to wax soporific about America Is Us and We Are America and What It All Means, or if you want legitimize an unsubstantiated, counterproductive narrative by reaffirming your status as One of the Good Cardinals Fans, be honest about it, even if only with yourself.
Just don’t tell yourself or anyone else that you’re waging a high-minded battle against the forces of ignorance and injustice by posting get_a_brain_morans.jpeg for the thousandth goddamn time. No one seriously engaged in that fight has ever given a moment’s thought to who was or wasn’t in which brand of children’s-game laundry, and anyone who does—anyone whose reaction to bigotry or abuse depends on the fanbase it’s coming from—is only admitting that they’re privileged enough not to have to give a shit in the first place.
0 notes
Text
I Don’t Hate Arrow Functions
TL;DR
Arrow functions are fine for certain usages, but they have so many variations that they need to be carefully controlled to not break down the readability of the code.
While arrow functions clearly have a ubiquitous community consensus (though not unanimous support!), it turns out there’s a wide variety of opinions on what makes “good” usage of => and not.
Configurable linter rules are the best solution to wrangling the variety and disagreement of arrow functions.
I released proper-arrows ESLint plugin with a variety of configurable rules to control => arrow functions in your code base.
Opinions are like noses…
Anyone who’s followed me (tweets, books, courses, etc) for very long knows that I have lots of opinions. In fact, that’s the only thing I’m an expert on — my own opinions — and I’m never at a loss for them!
I don’t subscribe to the “strong opinions, loosely held” mantra. I don’t “loosely hold” my opinions because I don’t see any point in having an opinion if there isn’t sufficient reason for that opinion. I spend a lot of time researching and tinkering and writing and trying out ideas before I form an opinion that I would share publicly. By that point, my opinion is pretty strongly held, by necessity.
What’s more, I teach based on these opinions — thousands of developers in different companies all over the world — which affords me the opportunity to deeply vet my opinions through myriad discussion and debate. I’m tremendously privleged to be in such a position.
That doesn’t mean I can’t or won’t change my opinions. As a matter of fact, one of my most strongly held opinions — that JS types and coercion are useful in JS — has been shifting lately, to a fairly significant degree. I have a much more rounded and deepened perspective on JS types and why type-aware tooling can be useful. And even my opinion on => arrow functions, the punchline of this article, has evolved and deepened.
But one of the things many people tell me they appreciate about it me is, I don’t just state opinions, I back those opinions up with careful, thought-out reasoning. Even when people vehemently disagree with my opinions, they often compliment me on at least owning those opinions with backing.
And I try to inspire the same in others through my speaking, teaching, and writing. I don’t care if you agree with me, I only care that you know why you have an technical opinion and can earnestly defend it with your own line of reasoning. To me, that’s a healthy relationship with technology.
Arrow Functions != functions
It is my sincere belief that the => arrow function is not suitable as a general purpose replacement for all (or even most) function functions in your JS code. I genuinely don’t find them more readable in most cases. And I’m not alone. Any time I share an opinion like that on social media, I often get dozens of “me too!” responses peppered in with the scores of “you’re totally wrong!” responses.
But I’m not here to rehash the entire debate over => arrow functions. I’ve written extensively about my opinions on them, including these sections in my books:
“You Don’t Know JS: ES6 & Beyond”, Ch2, “Arrow Functions”
“Functional-Light JavaScript”, Ch2, “Functions Without function“ (and the preceding section on function names).
Whatever your preferences around =>, to suggest that it’s only a better function is to be plainly reductive. It’s a far more nuanced topic than just a one-to-one correspondence.
There are things to like about =>. You might find that surprising for me to say, since most people seem to assume I hate arrow functions.
I don’t (hate them). I think there are definitely some important benefits.
It’s just that I don’t unreservedly endorse them as the new function. And these days, most people aren’t interested in nuanced opinions in the middle. So since I’m not entirely in the pro-=> camp, I must be entirely in the opposition camp. Not true.
What I hate is suggesting they’re universally more readable, or that they’re objectively better in basically all cases.
The reason I reject this stance is because I REALLY DO STRUGGLE TO READ THEM in many cases. So that perspective just makes me feel dumb/inferior as a developer. “There must be something wrong with me, since I don’t think it’s more readable. Why do I suck so much at this?” And I’m not the only one who’s impostor syndrome is seriously stoked by such absolutes.
And the cherry on top is when people tell you that the only reason you don’t understand or like => is because you haven’t learned them or used them enough. Oh, right, it’s my ignorance. SMH. I’ve written and read literally thousands of =>functions. I’m quite certain I know enough about them to hold the opinions I have.
I’m not in the pro-=> camp, but I recognize that some really do prefer them, legitimately. I recognize that some people come to JS from languages that have used => and so they feel and read quite natural. I recognize that some prefer their resemblance to mathematical notation.
What’s problematic IMO is when some in those camps simply cannot understand or empathize with dissenting opinions, as if there must just be something wrong with them.
Readability != Writability
I also don’t think you know what you’re talking about when you talk about code readability. By and large, the vast majority of opinions on code readability, when you break them down, are based on a personal stance about preferences in writingconcise code.
When I push back in debates about code readability, some just dig in their heels and refuse to support their opinion. Others will waive off the concerns with, “readability is all just subjective anyway”.
The flimsiness of that response is stunning: two seconds ago they were vehemently claiming => arrow is absolutely and objectively more readable, and then when pressed, they admit, “well, I think it’s more readable, even if ignorants like you don’t.”
Guess what? Readability is subjective, but not entirely so. It’s a really complex topic. And there are some who are undertaking to formally study the topic of code readability, to try to find what parts of it are objective and what parts are subjective.
I have read a fair amount of such research, and I’m convinced that it’s a complicated enough topic that it can’t be reduced to a slogan on a t-shirt. If you want to read them, I would encourage you doing some google searching and reading of your own.
While I don’t have all the answers myself, one thing I’m certain about is, code is more often read than written, so perspectives on the topic which ultimately come from “it’s easier/quicker to write” don’t hold much standing. What needs to be considered is, not how much time do you save writing, but how clearly will the reader (future you or someone else on the team) be able to understand? And ideally, can they mostly understand it without pouring over the code with a fine-toothed comb?
Any attempt to justify writability affordances with unsubstantiated claims about readability benefits is a weak argument at best, and in general, nothing but a distraction.
So I roundly reject that => is always and objectively “more readable”.
But I still don’t hate arrow functions. I just think to use them effectively, we need to be more disciplined.
Linters == Discipline
You might be of the (incorrect) belief that linters tell you objective facts about your code. They can do that, but that’s not their primary purpose.
The tool that’s best suited to tell you if your code is valid is a compiler (ie, the JS engine). The tool that’s best suited to tell you whether your code is “correct” (does what you want it to do) is your test suite.
But the tool that’s best suited to tell you if your code is appropriate is a linter. Linters are opinionated collections of rules about how you should style and structure your code, so as to avoid likely problems — according to the authors of those opinion-based rules.
That’s what they’re for: to apply opinions to your code.
That means it’s almost certain that these opinions will, at one time or another, “offend” you. If you’re like most of us, you fancy yourself pretty good at what you do, and you know that this thing you’re doing on this line of code is right. And then the linter pops up and says, “Nope, don’t do it that way.”
If your first instinct is sometimes to disagree, then you’re like the rest of us! We get emotionally attached to our own perspectives and abilities, and when a tool tells us we’re wrong, we chuff a little bit.
I don’t get mad at the test suite or the JS engine. Those things are all reporting facts about my code. But I can definitely get irritated when the linter’s opinion disagrees with mine.
I have this one linter rule that I enabled a few weeks ago, because I had an inconsistency in my coding that was annoying me on code re-reads. But now this lint rule is popping up two or three times an hour, nagging me like a stereotypical grandma on a 90’s sitcom. Every single time, I ponder (for just a moment) if I should just go disable that rule. I leave it on, but to my chagrin.
So why subject ourselves to this torment!? Because linter tools and their opinions are what give us discipline. They help us collaborate with others.
They ultimately help us communicate more clearly in code.
Why shouldn’t we let every developer make their own decisions? Because of our tendency toward emotional attachment. While we’re in the trenches working on our own code, against unreasonable pressure and deadlines, we’re in the least trustable mindset to be making those judgement calls.
We should be submitting to tools to help us maintain our discipline.
It’s similar to how TDD advocates submit to the discipline of writing tests first, in a formal set of steps. The discipline and the bigger picture outcome of the process are what we value most, when we’re level headed enough to make that analysis. We don’t institute that kind of process when our code is hopelessly broken and we have no idea why and we’re just resorting to trying random code changes to see if they fix it!
No. If we’re being reasonable, we admit that the overall good is best served when we set up reasonable guidelines and then follow the discipline of adhering to them.
Configurability Is King
If you’re going to knowingly subject yourself to this finger wagging, you (and your team, if applicable) are certainly going to want some say-so in what rules you’re required to play by. Arbitrary and unassailable opinions are the worst kind.
Remember the JSLint days when 98% of the rules were just Crockford’s opinions, and you either used the tool or you didn’t? He straight up warned you in the README that you were going to be offended, and that you should just get over it. That was fun, right? (Some of you may still be using JSLint, but I think you should consider moving on to a more modern tool!)
That’s why ESLint is king of the linters these days. The philosophy is, basically, let everything be configurable. Let developers and teams democratically decide which opinions they all want to submit to, for their own discipline and good.
That doesn’t mean every developer picks their own rules. The purpose of rules is to conform code to a reasonable compromise, a “centralized standard”, that has the best chance of communicating most clearly to the most developers on the team.
But no rule is ever 100% perfect. There’s always exception cases. Which is why having the option to disable or re-configure a rule with an inline comment, for example, is not just a tiny detail but a critical feature.
You don’t want a developer to just have their own local ESLint config that overrides rules while they commit code. What you want is for a developer to either follow the established rules (preferred!) OR to make an exception to the rules that is clear and obvious right at the point where the exception is being made.
Ideally, during a code review, that exception can be discussed and debated and vetted. Maybe it was justified, maybe it wasn’t. But at least it was obvious, and at least it was possible to be discussed in the first place.
Configurability of tools is how we make tools work for us instead us working for the tools.
Some prefer convention-based approaches to tooling, where the rules are pre-determined so there’s no discussion or debate. I’m know that works for some developers and for some teams, but I don’t think it is a sustainable approach for generalized, broad application. Ultimately, a tool that is inflexible to the changing project needs and DNA of the developer(s) using it, will end up falling into obscurity and eventually replaced.
Proper Arrows
I fully recognize my usage of the the word “proper” here is going to ruffle some feathers. “Who is getify to say what is proper and not?”
Remember, I’m not trying to tell you what is proper. I’m trying to get you to embrace the idea that opinions about => arrow functions are as varied as all the nuances of their syntax and usage, and that ultimately what is most appropriate is that some set of opinions, no matter what they are, should be applicable.
While I’m a big fan of ESLint, I’ve been disappointed by the lack of support from built-in ESLint rules for controlling various aspects of => arrow functions. There are a few built-in rules, but I’m frustrated that they seem to focus mostly on superficial stylistic details like whitespace.
I think there are a number of aspects that can hamper => arrow function readability, issues that go way beyond what the current ESLint ruleset can control. I asked around on twitter, and it seems from the many replies that a lot of people have opinions on this.
The ultimate linter would not only let you configure rules to your liking, but build your own rules if something were lacking. Luckily, ESLint supports exactly that!
So I decided to build an ESLint plugin to define an additional set of rules around => arrow functions: proper-arrows.
Before I explain anything about it, let me just point out: it’s a set of rules that can be turned on or off, and configured, at your discretion. If you find even one detail of one rule helpful, it would be better to use the rule/plugin than not.
I’m fine with you having your own opinions on what makes => arrow functions proper. In fact, that’s the whole point. If we all have different opinions on => arrow functions, we should have tooling support to let us pick and configure those different opinions.
The philosophy of this plugin is that, for each rule, when you turn the rule on, you get all of its reporting modes on by default. But you can of course either not turn the rule on, or turn the rule on and then configure its modes as you see fit. But I don’t want you to have to go hunting for rules/modes to turn on, where their obscurity prevents them from even being considered. So everything comes on per rule.
The only exception here is that by default, all rules ignore trivial => arrow functions, like () => {}, x => x, etc. If you want those to be checked, on a per-rule basis you have to turn on that checking with the { "trivial": true } option.
Proper Arrows Rules
So what rules are provided? Here’s an excerpt from the project overview:
"params": controls definitions of => arrow function parameters, such as forbidding unused parameters, forbidding short/unsemantic parameter names, etc.
"name": requires => arrow functions to only be used in positions where they receive an inferred name (i.e., assigned to a variable or property, etc), to avoid the poor readbility/debuggability of anonymous function expressions.
"location": restricts where in program structure => arrow functions can be used: forbidding them in the top-level/global scope, object properties, export statements, etc.
"return": restricts the concise return value kind for => arrow functions, such as forbidding object literal concise returns (x => ({ x })), forbidding concise returns of conditional/ternary expressions (x => x ? y : z), etc.
"this": requires/disallows => arrow functions using a this reference, in the => arrow function itself or in a nested => arrow function. This rule can optionally forbid this-containing => arrow functions from the global scope.
Remember, each rule has various modes to configure, so none of this is all-or-nothing. Pick what works for you.
As an illustration of what the proper-arrows rules can check for, let’s look at the "return" rule, specifically its "sequence" mode. This mode refers to the concise return expression of => arrow functions being a comma-separated sequence, like this:
var myfunc = (x,y) => ( x = 3, y = foo(x + 1), [x,y] );
Sequences are typically used in => arrow function concise returns to string together multiple (expression) statements, without needing to use a full { .. } delimited function body and an explicit return statement.
Some may love this style — that’s OK! — but a lot of folks think it favors clever terse style coding over readability, and would prefer instead:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
Notice that it’s still an => arrow function and it’s not even that many more characters. But it’s clearer that there are three separate statements in this function body.
Even better:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
To be clear, the proper-arrows rules don’t enforce trivial styling differences like whitespace/indentation. There are other (built-in) rules if you want to enforce those requirements. proper-arrows focuses on what I consider to be more substantive aspects of => function definition.
Concise Summary
You and I almost certainly disagree on what makes good, proper => arrow function style. That’s a good and healthy thing.
My goal here is two-fold:
Convince you that opinions on this stuff vary and that’s OK.
Enable you to make and enforce your own opinions (or team consensus) with configurable tooling.
There’s really nothing to be gained from arguing over opinion-based rules. Take the ones you like, forget the ones you don’t.
I hope you take a look at proper-arrows and see if there’s anything in there which you could use to ensure your => arrow functions are the best form they can be in your code base.
And if the plugin is missing some rules that would help define more proper arrows, please file an issue and we can discuss! It’s entirely plausible we may add that rule/mode, even if I personally plan to keep it turned off!
I don’t hate => arrow functions, and you shouldn’t either. I just hate uninformed and unenforced debate. Let’s embrace smarter and more configurable tooling and move on to more important topics!
The post I Don’t Hate Arrow Functions appeared first on David Walsh Blog.
I Don’t Hate Arrow Functions published first on https://appspypage.tumblr.com/
0 notes
Text
I Don’t Hate Arrow Functions
TL;DR
Arrow functions are fine for certain usages, but they have so many variations that they need to be carefully controlled to not break down the readability of the code.
While arrow functions clearly have a ubiquitous community consensus (though not unanimous support!), it turns out there’s a wide variety of opinions on what makes “good” usage of => and not.
Configurable linter rules are the best solution to wrangling the variety and disagreement of arrow functions.
I released proper-arrows ESLint plugin with a variety of configurable rules to control => arrow functions in your code base.
Opinions are like noses…
Anyone who’s followed me (tweets, books, courses, etc) for very long knows that I have lots of opinions. In fact, that’s the only thing I’m an expert on — my own opinions — and I’m never at a loss for them!
I don’t subscribe to the “strong opinions, loosely held” mantra. I don’t “loosely hold” my opinions because I don’t see any point in having an opinion if there isn’t sufficient reason for that opinion. I spend a lot of time researching and tinkering and writing and trying out ideas before I form an opinion that I would share publicly. By that point, my opinion is pretty strongly held, by necessity.
What’s more, I teach based on these opinions — thousands of developers in different companies all over the world — which affords me the opportunity to deeply vet my opinions through myriad discussion and debate. I’m tremendously privleged to be in such a position.
That doesn’t mean I can’t or won’t change my opinions. As a matter of fact, one of my most strongly held opinions — that JS types and coercion are useful in JS — has been shifting lately, to a fairly significant degree. I have a much more rounded and deepened perspective on JS types and why type-aware tooling can be useful. And even my opinion on => arrow functions, the punchline of this article, has evolved and deepened.
But one of the things many people tell me they appreciate about it me is, I don’t just state opinions, I back those opinions up with careful, thought-out reasoning. Even when people vehemently disagree with my opinions, they often compliment me on at least owning those opinions with backing.
And I try to inspire the same in others through my speaking, teaching, and writing. I don’t care if you agree with me, I only care that you know why you have an technical opinion and can earnestly defend it with your own line of reasoning. To me, that’s a healthy relationship with technology.
Arrow Functions != functions
It is my sincere belief that the => arrow function is not suitable as a general purpose replacement for all (or even most) function functions in your JS code. I genuinely don’t find them more readable in most cases. And I’m not alone. Any time I share an opinion like that on social media, I often get dozens of “me too!” responses peppered in with the scores of “you’re totally wrong!” responses.
But I’m not here to rehash the entire debate over => arrow functions. I’ve written extensively about my opinions on them, including these sections in my books:
“You Don’t Know JS: ES6 & Beyond”, Ch2, “Arrow Functions”
“Functional-Light JavaScript”, Ch2, “Functions Without function“ (and the preceding section on function names).
Whatever your preferences around =>, to suggest that it’s only a better function is to be plainly reductive. It’s a far more nuanced topic than just a one-to-one correspondence.
There are things to like about =>. You might find that surprising for me to say, since most people seem to assume I hate arrow functions.
I don’t (hate them). I think there are definitely some important benefits.
It’s just that I don’t unreservedly endorse them as the new function. And these days, most people aren’t interested in nuanced opinions in the middle. So since I’m not entirely in the pro-=> camp, I must be entirely in the opposition camp. Not true.
What I hate is suggesting they’re universally more readable, or that they’re objectively better in basically all cases.
The reason I reject this stance is because I REALLY DO STRUGGLE TO READ THEM in many cases. So that perspective just makes me feel dumb/inferior as a developer. “There must be something wrong with me, since I don’t think it’s more readable. Why do I suck so much at this?” And I’m not the only one who’s impostor syndrome is seriously stoked by such absolutes.
And the cherry on top is when people tell you that the only reason you don’t understand or like => is because you haven’t learned them or used them enough. Oh, right, it’s my ignorance. SMH. I’ve written and read literally thousands of =>functions. I’m quite certain I know enough about them to hold the opinions I have.
I’m not in the pro-=> camp, but I recognize that some really do prefer them, legitimately. I recognize that some people come to JS from languages that have used => and so they feel and read quite natural. I recognize that some prefer their resemblance to mathematical notation.
What’s problematic IMO is when some in those camps simply cannot understand or empathize with dissenting opinions, as if there must just be something wrong with them.
Readability != Writability
I also don’t think you know what you’re talking about when you talk about code readability. By and large, the vast majority of opinions on code readability, when you break them down, are based on a personal stance about preferences in writingconcise code.
When I push back in debates about code readability, some just dig in their heels and refuse to support their opinion. Others will waive off the concerns with, “readability is all just subjective anyway”.
The flimsiness of that response is stunning: two seconds ago they were vehemently claiming => arrow is absolutely and objectively more readable, and then when pressed, they admit, “well, I think it’s more readable, even if ignorants like you don’t.”
Guess what? Readability is subjective, but not entirely so. It’s a really complex topic. And there are some who are undertaking to formally study the topic of code readability, to try to find what parts of it are objective and what parts are subjective.
I have read a fair amount of such research, and I’m convinced that it’s a complicated enough topic that it can’t be reduced to a slogan on a t-shirt. If you want to read them, I would encourage you doing some google searching and reading of your own.
While I don’t have all the answers myself, one thing I’m certain about is, code is more often read than written, so perspectives on the topic which ultimately come from “it’s easier/quicker to write” don’t hold much standing. What needs to be considered is, not how much time do you save writing, but how clearly will the reader (future you or someone else on the team) be able to understand? And ideally, can they mostly understand it without pouring over the code with a fine-toothed comb?
Any attempt to justify writability affordances with unsubstantiated claims about readability benefits is a weak argument at best, and in general, nothing but a distraction.
So I roundly reject that => is always and objectively “more readable”.
But I still don’t hate arrow functions. I just think to use them effectively, we need to be more disciplined.
Linters == Discipline
You might be of the (incorrect) belief that linters tell you objective facts about your code. They can do that, but that’s not their primary purpose.
The tool that’s best suited to tell you if your code is valid is a compiler (ie, the JS engine). The tool that’s best suited to tell you whether your code is “correct” (does what you want it to do) is your test suite.
But the tool that’s best suited to tell you if your code is appropriate is a linter. Linters are opinionated collections of rules about how you should style and structure your code, so as to avoid likely problems — according to the authors of those opinion-based rules.
That’s what they’re for: to apply opinions to your code.
That means it’s almost certain that these opinions will, at one time or another, “offend” you. If you’re like most of us, you fancy yourself pretty good at what you do, and you know that this thing you’re doing on this line of code is right. And then the linter pops up and says, “Nope, don’t do it that way.”
If your first instinct is sometimes to disagree, then you’re like the rest of us! We get emotionally attached to our own perspectives and abilities, and when a tool tells us we’re wrong, we chuff a little bit.
I don’t get mad at the test suite or the JS engine. Those things are all reporting facts about my code. But I can definitely get irritated when the linter’s opinion disagrees with mine.
I have this one linter rule that I enabled a few weeks ago, because I had an inconsistency in my coding that was annoying me on code re-reads. But now this lint rule is popping up two or three times an hour, nagging me like a stereotypical grandma on a 90’s sitcom. Every single time, I ponder (for just a moment) if I should just go disable that rule. I leave it on, but to my chagrin.
So why subject ourselves to this torment!? Because linter tools and their opinions are what give us discipline. They help us collaborate with others.
They ultimately help us communicate more clearly in code.
Why shouldn’t we let every developer make their own decisions? Because of our tendency toward emotional attachment. While we’re in the trenches working on our own code, against unreasonable pressure and deadlines, we’re in the least trustable mindset to be making those judgement calls.
We should be submitting to tools to help us maintain our discipline.
It’s similar to how TDD advocates submit to the discipline of writing tests first, in a formal set of steps. The discipline and the bigger picture outcome of the process are what we value most, when we’re level headed enough to make that analysis. We don’t institute that kind of process when our code is hopelessly broken and we have no idea why and we’re just resorting to trying random code changes to see if they fix it!
No. If we’re being reasonable, we admit that the overall good is best served when we set up reasonable guidelines and then follow the discipline of adhering to them.
Configurability Is King
If you’re going to knowingly subject yourself to this finger wagging, you (and your team, if applicable) are certainly going to want some say-so in what rules you’re required to play by. Arbitrary and unassailable opinions are the worst kind.
Remember the JSLint days when 98% of the rules were just Crockford’s opinions, and you either used the tool or you didn’t? He straight up warned you in the README that you were going to be offended, and that you should just get over it. That was fun, right? (Some of you may still be using JSLint, but I think you should consider moving on to a more modern tool!)
That’s why ESLint is king of the linters these days. The philosophy is, basically, let everything be configurable. Let developers and teams democratically decide which opinions they all want to submit to, for their own discipline and good.
That doesn’t mean every developer picks their own rules. The purpose of rules is to conform code to a reasonable compromise, a “centralized standard”, that has the best chance of communicating most clearly to the most developers on the team.
But no rule is ever 100% perfect. There’s always exception cases. Which is why having the option to disable or re-configure a rule with an inline comment, for example, is not just a tiny detail but a critical feature.
You don’t want a developer to just have their own local ESLint config that overrides rules while they commit code. What you want is for a developer to either follow the established rules (preferred!) OR to make an exception to the rules that is clear and obvious right at the point where the exception is being made.
Ideally, during a code review, that exception can be discussed and debated and vetted. Maybe it was justified, maybe it wasn’t. But at least it was obvious, and at least it was possible to be discussed in the first place.
Configurability of tools is how we make tools work for us instead us working for the tools.
Some prefer convention-based approaches to tooling, where the rules are pre-determined so there’s no discussion or debate. I’m know that works for some developers and for some teams, but I don’t think it is a sustainable approach for generalized, broad application. Ultimately, a tool that is inflexible to the changing project needs and DNA of the developer(s) using it, will end up falling into obscurity and eventually replaced.
Proper Arrows
I fully recognize my usage of the the word “proper” here is going to ruffle some feathers. “Who is getify to say what is proper and not?”
Remember, I’m not trying to tell you what is proper. I’m trying to get you to embrace the idea that opinions about => arrow functions are as varied as all the nuances of their syntax and usage, and that ultimately what is most appropriate is that some set of opinions, no matter what they are, should be applicable.
While I’m a big fan of ESLint, I’ve been disappointed by the lack of support from built-in ESLint rules for controlling various aspects of => arrow functions. There are a few built-in rules, but I’m frustrated that they seem to focus mostly on superficial stylistic details like whitespace.
I think there are a number of aspects that can hamper => arrow function readability, issues that go way beyond what the current ESLint ruleset can control. I asked around on twitter, and it seems from the many replies that a lot of people have opinions on this.
The ultimate linter would not only let you configure rules to your liking, but build your own rules if something were lacking. Luckily, ESLint supports exactly that!
So I decided to build an ESLint plugin to define an additional set of rules around => arrow functions: proper-arrows.
Before I explain anything about it, let me just point out: it’s a set of rules that can be turned on or off, and configured, at your discretion. If you find even one detail of one rule helpful, it would be better to use the rule/plugin than not.
I’m fine with you having your own opinions on what makes => arrow functions proper. In fact, that’s the whole point. If we all have different opinions on => arrow functions, we should have tooling support to let us pick and configure those different opinions.
The philosophy of this plugin is that, for each rule, when you turn the rule on, you get all of its reporting modes on by default. But you can of course either not turn the rule on, or turn the rule on and then configure its modes as you see fit. But I don’t want you to have to go hunting for rules/modes to turn on, where their obscurity prevents them from even being considered. So everything comes on per rule.
The only exception here is that by default, all rules ignore trivial => arrow functions, like () => {}, x => x, etc. If you want those to be checked, on a per-rule basis you have to turn on that checking with the { "trivial": true } option.
Proper Arrows Rules
So what rules are provided? Here’s an excerpt from the project overview:
"params": controls definitions of => arrow function parameters, such as forbidding unused parameters, forbidding short/unsemantic parameter names, etc.
"name": requires => arrow functions to only be used in positions where they receive an inferred name (i.e., assigned to a variable or property, etc), to avoid the poor readbility/debuggability of anonymous function expressions.
"location": restricts where in program structure => arrow functions can be used: forbidding them in the top-level/global scope, object properties, export statements, etc.
"return": restricts the concise return value kind for => arrow functions, such as forbidding object literal concise returns (x => ({ x })), forbidding concise returns of conditional/ternary expressions (x => x ? y : z), etc.
"this": requires/disallows => arrow functions using a this reference, in the => arrow function itself or in a nested => arrow function. This rule can optionally forbid this-containing => arrow functions from the global scope.
Remember, each rule has various modes to configure, so none of this is all-or-nothing. Pick what works for you.
As an illustration of what the proper-arrows rules can check for, let’s look at the "return" rule, specifically its "sequence" mode. This mode refers to the concise return expression of => arrow functions being a comma-separated sequence, like this:
var myfunc = (x,y) => ( x = 3, y = foo(x + 1), [x,y] );
Sequences are typically used in => arrow function concise returns to string together multiple (expression) statements, without needing to use a full { .. } delimited function body and an explicit return statement.
Some may love this style — that’s OK! — but a lot of folks think it favors clever terse style coding over readability, and would prefer instead:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
Notice that it’s still an => arrow function and it’s not even that many more characters. But it’s clearer that there are three separate statements in this function body.
Even better:
var fn2 = (x,y) => { x = 3; y = foo(x + 1); return [x,y]; };
To be clear, the proper-arrows rules don’t enforce trivial styling differences like whitespace/indentation. There are other (built-in) rules if you want to enforce those requirements. proper-arrows focuses on what I consider to be more substantive aspects of => function definition.
Concise Summary
You and I almost certainly disagree on what makes good, proper => arrow function style. That’s a good and healthy thing.
My goal here is two-fold:
Convince you that opinions on this stuff vary and that’s OK.
Enable you to make and enforce your own opinions (or team consensus) with configurable tooling.
There’s really nothing to be gained from arguing over opinion-based rules. Take the ones you like, forget the ones you don’t.
I hope you take a look at proper-arrows and see if there’s anything in there which you could use to ensure your => arrow functions are the best form they can be in your code base.
And if the plugin is missing some rules that would help define more proper arrows, please file an issue and we can discuss! It’s entirely plausible we may add that rule/mode, even if I personally plan to keep it turned off!
I don’t hate => arrow functions, and you shouldn’t either. I just hate uninformed and unenforced debate. Let’s embrace smarter and more configurable tooling and move on to more important topics!
The post I Don’t Hate Arrow Functions appeared first on David Walsh Blog.
I Don’t Hate Arrow Functions published first on https://deskbysnafu.tumblr.com/
0 notes