#side note i spent a lot of time figuring out the html stuff on the blog page
Explore tagged Tumblr posts
Text
hey everyone! i've decided to set up a sideblog to post my fakemon on, just so i have a nice place for people to easily access them (and so i can use the square format i came up with for my instagram)
working through reuploading the awmaet dex here at the moment, including the shiny designs, which i've never uploaded to tumblr before!
i'll post any new fakemon to this side blog and reblog them to my main, so you'll see them either way, this'll just be an alternate way to check them out without having to sift through all my other stuff
Awmaet Dex
#1 Floralba
#2 Vamparka
#3 Nosfloratu
#side note i spent a lot of time figuring out the html stuff on the blog page#and i think it turned out really nicely
13 notes
·
View notes
Note
Hi! Gonna start off and say that I love the work you're doing with the Welcome Home neocities website! It's perfectly stylized for the project/puppet show and I can see the work you're putting into it.
I'd love to learn how to make my own neocities website (for fun? For a personal project??), so I was wondering if you could provide some tips and/or pointers for a first-timer.
Thank you!
HAHA well first of all i'm flattered that someone would think i'm skilled enough to be giving pointers in the first place. i still consider myself a novice when it comes to web design (for example, if you're wondering why every page on welcome to welcome home has its own CSS, it's because CSS is Way harder for me to wrap my head around than HTML) so i can't give any Super advanced tips, but i can at least write about what's helped me so far:
GUIDES. neocities has its own tutorial and list of HTML/CSS resources, but user-made guides are your best friend when it comes to figuring out where to go from there. a.n. lucas and pauli kohberger both have really good guides for beginners, but for the more advanced stuff, i found myself referencing the resources on solaria's webspace and sadgrl.online the most. w3schools is also very helpful when it comes to answering more specific questions like "how do i use two different fonts on the same page?" (and probably more.) if all else fails, then usually just googling "how to (x) in HTML" or "how to (x) in CSS" will yield at least one useful result. for making your website more accessible, there's the accessible net directory and this masterpost by foxpunk on tumblr.
it sounds obvious, but it helps to have a solid idea of what kind of site you want to build before you actually dive in, and then snoop around on neocities to get an idea of how other users approach the same topic. for example, i got the idea to start a welcome home wiki on neocities after being reminded of the 8:11 wiki on the same site, and then i spent a couple days just looking up stuff like "wiki" or "fansite" on neocities and then clicking on any page that caught my attention to study it.
layouts! there's no shame in using a premade one, and you can even learn more about HTML/CSS in real time just by messing around with the base code before implementing any intentional changes. sadgrl.online's layout builder is a VERY popular choice, since you can already do a lot with the basic options it offers and it's easy to further customize once you have it set up on your page; it's what i used to make welcome to welcome home. sadgrl.online's webmaster links also feature a bunch of other options under the "layouts" tag, and if none of those work for you, then you can even find something just by looking up template/templates/layout/layouts/HTML/CSS on neocities itself.
side note: if you're reading this and you want to make a wiki then you can also use this wikitable code. it came out after i had already established the Look of welcome to welcome home, so i probably won't implement it any time soon, but i TOTALLY WOULD HAVE if it was around when i first set the site up.
you can scale images up or down using percentage, with 100% being the image's default size. i don't know how helpful or acceptable that is, but i use it a lot.
don't feel pressured to get everything done at once, even if you expect people to be visiting your site frequently. usually if you just slap on an "under construction" gif or even just write "hey this site is still under construction" then people will understand. i don't think i've ever seen anyone get super huffy about slow updates on neocities, anyway.
EDIT: OH. GRAPHICS. i mention all of these on welcome to welcome home's front page but i Also wanted to note them here: betty's graphics and websets by lynn both have HUGE collections of background tiles and other graphics that work especially well if you're going for that old web charm. i also like to use this mirror of patterncooler for backgrounds bc of the customization options. you can also make your own background tile and then use a seamless tile maker like this if all else fails.
EDIT 2: ALSO. obviously. do not be like me and use discord or any other chat client as a filehost, no matter how promising it looks, because one day you WILL get a very nasty surprise when the request signature on those urls expire and the images are no longer accessible on other sites. there are a myriad of other filehosts out there, but personally i recommend file garden (and also donating to file garden if you can, even if only for a couple months. i know i said that just yesterday, but if it gets more folks to subscribe then i'm gonna keep saying it.)
#imaginatorofthings#ask#welcome to welcome home#web design#? yeah i'll slap that tag on there why not#neocities
20 notes
·
View notes
Text
A Proper Mandalorian Courtship - Chapter 2
Title: Hurt, Healing, Help Pairing: Paz x OFC, OFC x OMC Word Count: ~2350 Rating: MA Warnings: Cursing, canon-typical violence, crack humor that’s also serious Chapters::Ch 1 | Ch 3 | Ch 4 | Ch 5
📚 My Master List 📚
Notes: This chapter contains potentially triggering material. Warnings for: mentions of past child abuse, past violence, and a lot of cursing. No graphic details, just a passing mention of certain situations that have occurred. The flashback occurs ~ten years before the story is currently happening.
Also, your nickname is Shu'shika. It means tiny disaster. I've been trying to format the HTML for this update on AO3 for two hours now, I don't think I can handle any more of the text popups right now. Also posted on AO3, where you can hover over the stuff in Mandoa or unfamiliar terms to see translations and notes.
(See the end of the chapter for more notes and translations. Also let me know if you want to be tagged or something. @mandalorerose I am so sorry, pls don’t goor me from the server.)
[flashback]
The bright sunlight fills the clearing, bringing a touch of warmth to the smoky, frosty morning air. High up in the trees, the birds flit from branch to branch, watching the proceedings with unabashed curiosity. Occasionally, tiny creatures fight amongst themselves, scolding each other with a flurry of chirps.
Grinning, Paz sidesteps Neten’s blow easily, clamping down on his bracer tightly. Using the other man’s momentum, Paz latches onto Neten’s extended arm and pulls hard, causing him to lose his balance. Once he stumbles forward, Paz gives him a good shove, sending him careening forward into the soft grassy earth. A low ‘ooh’ goes up from the crowd as Neten trips and slams into the ground with a heavy thud. Paz nods, holding back, giving Neten enough time to recollect himself.
“Nice form, good strength,” Paz says, to encourage the younger man. “Let’s go through it one more time. Then we’ll break for water.”
“Sounds good, alor'ad,” Neten says.
“Swing at me,” Paz orders. “And I’ll show you the best way to…”
He trails off when he receives notification that his door alarm has been disabled. His brow furrows as he considers it for a few moments. Neten falters.
“Uh, you still with us, alor'ad?” Neten asks.
“Yeah, sorry,” Paz said. “Swing at me.”
Paz recently upgraded the locking mechanism to keep the kids out of his candy stash. He does not mind sharing, but when six kilos of candy disappear in one week, he has to put his foot down. That, or the other parents would strangle him. Paz shakes away the feeling of unease and catches Neten’s fist in his. Grasping firmly, he halts Neten’s attack, freezing him in place.
“You’re trying to build up momentum from too far away. See how this leaves you open while you're swinging? Get in a bit closer,” Paz says, showing Neten how his previous attack left him vulnerable with a solid blow to the gut. “Stick a bit closer and – “
The door chime goes off again. Then it disables itself a second time. Zeli said she would be busy helping in the kitchen today. Paz frowns.
“Uh, right. When I push you forward, roll into the fall,” Paz says. “It’ll give you some space to work. Now, try it again.”
Neten swings a third time. Paz pushes him harder this time. Instead of falling, Neten curls his body forward and rolls into the fall. He comes up on his feet, but quickly loses his balance. He falls over.
“Shit,” Neten sighs.
“Just takes practice,” Paz says. “Get up, you’ll get it right.”
After walking him through the proper counter a few times, Neten finally manages to roll directly onto his feet and absorb the momentum with his knees. Then Paz turns to the crowd.
“Partner up,” he says. “Neten, you partner up with Fen.”
As he assigns partners, he chooses to place the most advanced fighters with the novices to ensure they teach the others. Paz finds he still cannot shake that weird feeling in his gut. Something nags at him until he decides to go investigate.
“Revala,” he says. “Keep an eye on these idiots for a minute?”
“Sure thing alor'ad,” she says, coming forward. “Everything okay?”
“Yeah…I just need to check on something,” he says. “No more than a few minutes. If they give you any backtalk, you have my full permission to make them run until they drop.”
“Yes, sir,” Revala exclaims gleefully as she turns back to their drilling vod, “Alright, losers, I’m in charge, and I’m going to make you suffer.”
“Gaa’tayl, alor'ad!” someone yelps.
Rousing laughter fills the clearing at the plea for help.
“K’atini!” Paz snaps over his shoulder. Wimps.
He turns toward the entrance to the hideout. Their current home is situated deep in a granite canyon. It was at one point some sort of pirate bolt hole, but over the decades, other Mandalorians had come and gone, making the space larger and adding some basic furniture. It is cramped, but it is well-hidden and easy to defend. Not only that, the family quarters have separate showers, a perk he does not hesitate to abuse. He makes his way down the main hallway, avoiding the fistfight between Din and Terys.
“If you two are going to slap each other like whiny little aruetiise, do it outside,” Paz snaps.
“He ate my uj’ayali,” Din snaps in response. “I was saving that, you dickhead – “
“I didn’t eat your fucking uj’ayali,” Terys grunts as he elbows Din in the side.
Paz shakes his head and continues toward the living quarters. Winding through the hallways, he finds himself surrounded by a throng of scuffling children. He breaks it up with a firm growl and sends the guilty parties to time-out. At long last, he comes to his door. As his hand hovers over the pad, he feels that sense of dread worsen, like a block of lead has suddenly materialized in his belly.
Paz almost hesitates, but he pushes forward. Something isn’t right here. He types in the code and watches as the door silently unlatches and swings open. He steps into the living area, his feet heavy and uncooperative. That feeling in his gut warns him to stay silent.
When he sees Zeli’s boots on the floor, he frowns.
He sees the second pair, hidden just out of sight, at the same time he hears Zeli’s cry. Paz inhales sharply and turns toward the bedroom, thinking that someone is actively forcing themselves on his beloved.
“Yes, Liam!” she cries out, stopping him in his tracks.
Paz can only stare, his stomach roiling violently at the sight of the two figures entwined under the light sheets. For several seconds, he stands there, frozen. Taking in the sights and sounds of their lascivious coupling. The wet slap of sweaty flesh meeting and Zeli’s throaty, animalistic keening. The way her short pink nails dig into Liam’s shoulders. The way he fervently fucks into Zeli, repeating what Paz had done with her just hours before.
“Oh, gods, Liam! Harder, h-harder!” she sobs, her sinewy body arching under his.
“Ni copaani hailir gar,” he pants. “Gedet’ye, cyare."
From here, he can see her digging her heels into his backside. The raised red welts she has left along his spine and shoulders. The livid bite marks along her shoulders.
As the harsh, unpleasant shock starts to set in, he feels his lips and face go numb, a deafening roar filling his ears. His chest tightens as he tries to tear himself away from the lurid scene, only for his gaze to land on the couch.
They had placed their helmets on the seat - her cherry-red helmet next to his deep grey helmet, the forehead ridges pressed together in a sweet kiss. As if to mock him. Paz turns his stinging eyes to the low table. The pieces of their armor are arranged neatly on the table. It is clear to him that the lovers had taken turns stripping each other, piece by piece.
This is not an act of drunken, frenzied passion.
This is a deliberate act of practiced intimacy.
In the years Paz and Zeli have been a couple, building their future together, she has not once asked him to use blindfolds. She has never once asked to break down that one last barrier keeping them from tasting each other’s lips for the first time. Yet here she is, fucking one of their closest friends in his bed. All while stringing him along with the promise that they will be one, that they will remove their helmets for each other for the first time on their wedding night.
How many times has Zeli allowed him to debauch her in their bed? In the same bed where Paz professed his love for her for the first time? The same haven where they spent countless hours in each other’s sweat-slick arms, fantasizing about the warriors they would eventually gift the tribe? How many times has he run his fingers along her breasts and inadvertently dragged his fingers through the dried remnants of another man’s sweat and saliva?
Revolting nausea fills him, that numb feeling creeping through his entire body, leaving him feeling so empty and cold. As his hands begin to shake, he clenches them into fists at his sides, his breath coming in shuddering pants as he struggles to not fucking sob. Bile rises in his esophagus, leaving his throat feeling bloody and raw.
Why?
Why?
The question keeps chasing itself through his thoughts as the agonizing knot in his chest threatens to tear him apart. He hears a giggle from the bed as Zeli flips Liam onto his back, the sheets shifting to reveal the delectable curve of her lower half, plump and succulent as she starts to bounce on his cock.
“Come in me, cyare,” she purrs to him.
“A-are you sure? You’re not - not - contraceptive – “
“Paz won’t know,” Zeli laughs. “He’s desperate for kids.”
Those words are the catalyst for his rage, like a lit match dropped into a barrel of volatile jet fuel.
Incandescent rage unfurls explosively in his chest, evaporating the cold sorrow that had once filled him in an instant. He feels his blood pressure and heart rate spike, leaving his vision thin and black and pulsating at the edges. Paz takes one menacing step toward the doorway, his entire body trembling as he struggles to contain the inner maelstrom of hatred.
It would be so, so easy for him to make them suffer, to make them feel the bone-deep agony they have inflicted on him. All he has to do is step into the bedroom. Look at their faces. Break the blood-oath of secrecy they had sworn to uphold a second time. By seeing their faces, he is a witness to their identities, and they will not be given the option to marry.
With just a few more steps, he can destroy them; he can take away everything and everyone they have ever loved. He can make Zeli’s worst nightmare a reality – she will lose her father, her sisters, and her friends. She will have only her lover by her side. Liam will be declared dar’buir by proxy. They will both be exiled in their dishonor and shame.
Suddenly, he sees Zephyr’s gap-toothed, mischief-filled grin and he comes to a grinding halt.
Zephyr was broken when Liam had found him huddled in the burnt-out husk of his ancestral home. Raiders had tortured his family and forced him to watch as they were killed, one by one. After they had taken their amusement, they had beaten Zephyr, leaving the young boy to die alone in the wastes. It was only by pure fortune that Liam had seen the smoke and gone to investigate, thinking it was his prey.
Instead, he had found a mute six-year-old boy wrapped in a ragged, blood-stained blanket, his tiny, emaciated frame covered in a multitude of bruises and lacerations. It took three years of love from the Tribe for the boy to speak again. After those first words, Zephyr had risen from the ashes of his shell, soaring like the celestial starbird.
Zephyr had finally found his voice and his manda, bringing life and light back into his eyes.
His gut wrenches and a new type of agony lances through his heart. It pierces him, wounding him so deeply he physically cannot breathe. He bites down hard on the sides of his tongue to stifle the sob threatening to escape his throat. His teeth break skin and the taste of copper fills his mouth. Paz cannot do it. He cannot be the reason Zephyr has to relive the loss of his family.
He will not be the reason the light leaves Zephyr’s eyes again. No amount of agony inflicted upon him - a grown man - could ever justify harming an innocent child for the sake of revenge.
Paz forces himself to exhale. Blinking, the tears finally fall, burning their way down his cheeks before finally soaking into his beard. Stiffly, he makes his way back to the couch and picks up their helmets, taking Zeli’s in his left and Liam’s in his right.
Acrid bitterness fills the shattered remains of his heart as he looks down at Zeli’s helmet. The paint on the forehead ridge has worn away from the many passionate kisses they have shared. Cynically, he wonders how much of that paint was worn away by Liam. How many embraces have they shared behind his back? How many times have they bared their fucking souls to one another in his bed?
Paz turns back to the door and exits, leaving the couple to their tryst. As the door clicks shut behind him, he suddenly feels intense exhaustion, his armor suddenly becoming stifling and heavy. Each breath feels like tar in his lungs as he leans heavily against the wall opposite the door.
“Hey, Paz,” Din says, coming toward him. “Bad news. Your idiots outside managed to set something on fire – “
Seemingly sensing something wrong, Din comes to a halt an arm span away. He leans forward slightly, coming to his side, in a show of brotherly concern.
“Ori’vod,” Din says softly. “Are you okay?” Paz draws in a great, gasping breath, his gaze still fixed on the door.
“Not in the least bit, vod,” he admits hoarsely, his voice breaking.
Din looks down at the helmets in his hands and comes to the only logical conclusion. He hisses through his teeth.
“I will drag them to the Foundry like the worthless fucking hut’uun they are,” Din hisses, his fingers flexing as he takes a step toward the door.
“No,” Paz says immediately, shaking his head.
“Why the fuck not?” Din demands sharply, his voice rising to an angry roar. “They betrayed the Oath, Paz!”
“Din, keep your voice down,” Paz says, ushering him away from the door and toward the Foundry. “I know what they did.”
“He called you his brother,” Din snaps angrily. “She called you her intended. They are liars, they broke their Oaths - !”
“Zephyr,” Paz says, his voice cracking again. “I don’t want to risk…”
The rage leaves his brother in an instant. He deflates like a wilted desert orchid. Din sighs gustily, looking between him and the door.
“What can I do to help, vod?” Din asks quietly.
“Just keep people away from me for a while,” Paz utters. “Armorer…she will know what to do.”
Gods, he prays she knows what to do.
“Absolutely,” Din says, clapping him on the shoulder. “I’ll always be here, ori’vod.”
Paz swallows thickly and nods, not trusting himself to speak. When he has regained control over his legs, he starts the long walk to the Forge. Each step feels like he is scaling some sheer cliff, the air thin and frosty in his lungs. Din runs interference, keeping the people trying to get his attention at bay. Pausing, he closes his eyes and considers what he is about to do.
Aliit maan bal solus kyr’yc.
He knows what the right thing to do is. Paz just does not know if he can do it.
For the first time in his life, he finds himself questioning his faith.
-
-
-
[current]
Armorer is in the middle of brewing a pot of her favorite tea when she hears footsteps in the Foundry. She looks up and sees Paz poking his head around the main doorway. That simple gesture brings back many memories of their earlier years together. Armorer has left the door to her private quarters open, the curtain drawn back, inviting those in need of guidance into her home.
She reaches for a second cup just as he reaches to knock on the door frame. Even though they’ve been family for nearly three decades, he still insists on knocking.
“Paz, join me,” she says.
He steps inside, ducking his head in a polite, respectful greeting.
She turns back to the chipped tea pot. Their new Tribe introduced them to the concept of tea, and now, she indulges every afternoon. Paz joins her and pulls a metal straw out from his gauntlet.
“What brings you here, Paz?” she asks, as the scent of the hot, spiced tea permeates the air.
He stares down at the cup, tension filling his massive frame.
“I wanted to ask your advice on something,” he says in a serious tone.
She remains silent, her brow furrowing.
“I’ve taken an interest in a woman,” he says. “And I want to ask her to be my partner. I want to know more about proper courtship traditions.”
It is only through years of experience and training that she does not jerk in surprise. She takes a moment to gather her thoughts. She is somehow surprised and not surprised at the same time. He has gotten to that age where a hunter starts staying at home for longer periods of time to teach their skills to the next generation. Although he is also bound to be lonely, she cannot recall him mentioning a partner.
She knows her friend, and she knows he will not entertain the idea of a serious relationship without the promise of marriage. After what the aruetiise had done to him, he had thrown himself into the hunt, turning his back to the possibility of marriage. Or anything long-term, really. The wounds were so deep she did not think he would ever fully heal.
He – like the rest of their kind – has been shaped from birth by hardship and struggle. He has had to fight for the victory of every single sunrise. Despite the crushing setbacks in his personal life, Paz has held his head high, always teetering on the edge of fully reaching mandokar - the ideal virtues of a Mandalorian warrior. It is that lost lust for life that has held him back all these years.
Now, he is ready to move forward, to hunger for each moment and experience in his life. Throughout the years, Armorer has seen glimpses of the warrior he could become. He is on that path now. Her heart fills to the point of overflowing for him.
She nods once.
“You know of our Tribe’s tradition of exchanging blades before the vows are spoken,” Armorer says.
Paz nods.
“What about here?”
“Alor Dezha has remarked that the Elders prefer to publicly acknowledge that the vows have been exchanged before the wedding night physically occurs. They typically do this as part of the wedding feast. Ultimately, it is your decision. You may choose one, both, or neither. As you know, we make do with with what we have. We do not have rigid rules in place.”
“That’s less complicated than I thought it would be,” he responds. “Nevertheless, I want to do this the right way for her. I think I’d like to do both.”
She is truly pleased with the news. If he is interested in entering the riduurok there is a chance he is also interested in rearing offspring. He will make an excellent spouse, parent, and teacher.
The youngest child here is eight years old. In just a few years, he will be fitted for his armor, and he will no longer be a child. Armorer and many others have expressed the desire to hear more little feet in the hallways. Hopefully, Paz will continue doing what he does best – inspiring and encouraging others through his leadership and his unwavering dedication to the Resol’nare.
Perhaps the other Hunters will begin reconsidering their unwed statuses so they may finally begin to increase their numbers once more.
Paz fidgets with his cup for a moment, breaking her from her reverie.
Now, she must satisfy her curiosity.
“Who has caught your attention?” the Armorer asks, keeping her tone casual and light, even as her thoughts whirl with plans for the feast and bonfire celebration.
Her thoughts then leap to naming ceremonies, but she restrains herself. They will need time to settle in as a married couple before producing or finding children.
“I want Shu’shika."
Armorer blinks in response.
“Shu’shika has caught your attention,” she confirms, carefully keeping her voice neutral, to give herself time to think of an appropriate response.
“Yes. How do we go about this courtship business, then?"
How unorthodox. Yet, as she considers it, she can see why he wants you. Paz has always appreciated the company of those who put the Tribe before themselves, and you are no exception. If a hunter or child has need, you will forego sleep to ensure they are properly cared for. Nothing will keep you from caring for those around you. Your dedication and loyalty to the Tribe will never be contested. With extra training, Armorer can see you shaping up into a halfway decent warrior in time.
“What exactly do you wish to know, Paz?” she asks curiously.
“How?”
Armorer blinks, though he cannot see it. She had not been ambiguous.
“What do you mean how?”
“How do I convince her to agree to courtship?” he clarifies, giving her what she interprets as an expectant look.
A furrow forms between her brows as she stares at her companion. Based on the rampant, unbridled scuttlebutt, there is no shortage of available and willing partners for a hunter of his stature and skill. She herself had once harbored an attraction to him, though that had been roughly two decades ago when she was just a feral, hormone-riddled teenager with far more free time than common sense.
“Most people start by asking their interest out on a date,” Armorer says slowly.
“A date,” he repeats.
Armorer almost sighs. Perhaps she had overestimated Paz’s general intelligence level.
“A date is an activity wherein two individuals assess their mutual compatibility and – “
“Armorer, I know what a date is. What does that even have to do with courtship?”
"Courtship is dating, Paz, but with the intent to marry, and no carnal relations."
"Oh. That makes sense. And how do I get her to agree to this?"
“How do you normally secure your partners?” she asks bluntly.
Paz recoils ever so slightly.
“I have only had a handful of one-time arrangements…since…”
Well. That is unexpected.
“Paz, you must simply ask,” she responds. “You are one of our best hunters. There are many who are interested in having you as a partner. I am certain she will be flattered by your request.”
“…but how? I haven’t asked anyone out on a date in eighteen years,” Paz says. “I honestly don’t know what people do on dates nowadays.”
“Just ask her to accompany you on an outing,” she responds.
“So, like…shooting? Do people even still go shooting on the first date?”
“Just pick something you know she enjoys,” Armorer says, faintly annoyed.
“Alright, I can do that,” he says. “One more question, Armorer.”
“What is it?” she asks.
Despite her affection for the older man, she is unable to keep the annoyance out of her body language. Maybe the age-old Mandalorian saying still holds true today: three braincells for the entire Tribe and the Alor holds two of them for safekeeping. However, Alor Dezha is a Hunter down to the marrow in his bones...perhaps it would be best to leave the braincells in the possession of a Tradesperson, where they won't risk being eaten.
“You’re a woman, aren't you? So, tell me: what do you ladies like on dates?”
She is so offended and incredulous that she splutters indignantly at him. As she struggles to come up with a proper retort, she becomes aware of his shoulders shaking.
She tightens her jaw. He always has been able to get under her plating to chafe at her like no one else. If anyone else had grown the balls to ask her something like that, she would not have hesitated to put her hammer through their skull.
“Paz, get the hell out of my room.”
He erupts into boisterous guffaws as he thumps his fist onto the table.
“Would you want chocolates? Flowers? The severed heads of your enemies?” he gets out through his giggles.
“I will goor your ass into the Forge,” she says in amusement, reaching for her hammer in warning.
Holding his hands up in mock surrender, he gets up to leave, and hightails it away before she can make good on her threat.
Armorer smiles under her bucket.
She hasn’t heard him laugh like that in a long time.
He will be just fine.
-
-
-
Paz paces nervously around the table for the fifth time, pausing to try and flatten the curling plastic tile underfoot. When that fails, he continues on his path around the table. Paz stops when the door opens. Din strides in, closes the squeaky door behind him, and takes a seat. The chair groans under his weight as he leans back.
“So, what’s got your bucket straps chafing?” he asks.
Paz immediately regrets asking for help. Especially from Din. But, being his brother through both vow and combat, Paz trusts no one else as much as he trusts Din.
“I need some advice,” Paz says carefully.
“What sort of advice?” Din asks, his helmet tilting a bit to the right.
“I want you to swear you won’t tell anyone,” he says firmly.
No one needs to know about his lack of experience.
“I won’t tell anyone,” Din says.
“Swear it,” Paz stresses flatly.
“Alright, alright,” Din says.
“On my honor, I swear I won’t tell anyone about anything we’re about to discuss.”
Paz takes a deep breath as he struggles to come up with the words needed to explain his unique situation. How the fuck is he supposed to even ask about this?
Has Din ever even been on a date before?
Gods above, he is too old for this shit.
“Does this have anything to do with those problems men your age typically get?” Din asks suddenly, breaking the silence. “You know, below the codpiece?”
He gestures down toward his crotch, as if his words were not mortifying enough.
“What?” Paz asks incredulously.
Din holds both hands up as if trying to defend himself.
“Look, Paz, every rifle malfunctions eventually,” Din says in what he might think is a comforting tone. “Especially when a man starts to get into his forties and fifties – “
“No, stop. My di - that part of me is just fine,” Paz snaps in annoyance. “I’m not that old, you little shit.”
“Oh. Okay,” Din says. “So, what is it? You’ve been acting really strangely for the past few weeks.”
Their buir did not raise either of them to be a hut’uun. He can do this, get those words out. He is a grown-ass man and he can be direct. Fuck delicacy. That kind of bantha-shit doesn’t work for Mandalorians, anyway.
“There’s a woman I’ve taken an interest in,” Paz says. “I’d like to give her a proper courtship. I was wondering if you had any input on where I could take her on a date.”
Din doesn’t react. For a moment, Paz wonders if Din even heard him. As the seconds tick by, the buzzing of the fluorescent lights overhead seems to grow louder. Then he hears a choked wheeze from his modulator, one that sounds like someone is strangling a de’kath bird with piano wire. Din’s shoulders shake violently as he starts to howl with laughter.
“You’re – you’re coming to me for advice on dating?” he gasps out, “Me? Din Dumbass Djarin?”
Paz falters at the mention of Cara’s affectionate nickname for Din. He shrugs once in response. Then he sinks down onto the table and crosses his arms.
“Yeah. Half a braincell is better than none, right?”
Din goes silent for several seconds.
“Holy fuck, you’re serious,” Din whispers. “Paz, I can barely keep my shit together. What makes you think I, of all people, would know anything about dating?”
“I haven’t been on a proper date in eighteen years,” Paz says dryly to Din. “I don’t know how this shit works anymore.”
A pregnant silence follows.
“Din, I’m over Zeli. I’ve been over her bantha-shit for a few years now,” Paz says. “I am ready to try something long-term again.”
“Fuck,” Din breathes. “We’ve all been wondering…if you’d…you know.”
“Stop wallowing in my self-pity and move on with my life?” Paz asks sardonically. “The past few years…I have been working on improving myself. Figuring out how to best honor the Resol’nare...All the stuff we were supposed to figure out years ago.”
“Paz, I’m happy to hear that,” Din says. “I’m glad you’re going to be you again.”
“Yeah, yeah,” Paz says, waving off Din’s comment. Shit, this is getting too emotional for him. “Whatever.”
Din snorts.
“Anyway. As for dating…I mean, there are better people to ask. I really could not help you with the dating thing.”
“Surely you’ve had a partner,” Paz says. “I’ve heard rumors about you and Cara.”
“Cara wants the simple things in life: good beer and to regularly beat someone's ass,” Din says. “I just so happen to be good at both finding good beer and getting my ass beat. When I asked her out, she almost pissed herself laughing at me.”
“Well, she said yes, which is more success than I’ve had,” Paz says. “I don’t know shit about this. The only people who care about courtship are the Elders.”
“And you now, apparently,” Din argues back.
He does have a point.
“Well…she means a lot to me. She isn’t a temporary arrangement,” Paz says carefully. “I’d like to do this the right way for her. So she knows I’m serious. And that I'm not just after...sex.”
Din inhales deeply, tapping his fingers on the table as he stares at the wall.
“Well, buir once told us that women like providers. So, go find a really big marsh deer, kill it, dress it, and bring everything back to her,” Din says, shrugging his shoulders. “Women like meat and leather, right?”
His tone is as uncertain as the way Paz feels about presenting you with a dead animal. They stay silent for several seconds.
“I’m fairly certain buir was joking when he told us that,” Paz says slowly.
“Huh,” Din says. “You know, now that it’s been said out loud…it does sound kind of ridiculous. Shit.”
They stay quiet for several moments, considering how truly fucked they both are when it comes to relationships. They’ve both had the occasional pleasure arrangement. And pleasure arrangements only require interest and about ten minutes. After his dumpster fire of a relationship with Zeli went down in a fiery, messy explosion, Paz never really considered settling down for marriage.
Why is this so damn difficult?
Din sighs, breaking him from his reverie, and tilts his helmet in his direction. It’s a sort of acknowledgement, an understanding that they are both committed to figuring this courtship business out together. Paz supposes that Din’s going to have to learn a few things, too, if he's somehow going to convince Cara to stick around with him for more than a few months. At the very least, Paz is grateful that Din picked someone smarter than himself. At least their children will have one intelligent parent.
“So. Who is it that has you acting all emotional, all ready to get domesticated?” Din asks, waving his hand around a bit.
“Shu’shika,” Paz says. “She’s…she’s the one I’m interested in.”
Din’s head snaps up so hard and fast that Paz hears his vertebrae crack from here.
“What?” Din asks. “Shu’shika?”
“What the fuck is with that tone, Din?” Paz snaps irritably. “If you’re going to insult her – “
“What? No, no,” Din says. “I’m not insulting her, no way. She doesn’t seem like your type, Paz. She’s…uh…not the most athletically gifted. Or the best at...hand-to-hand combat.”
That is the most diplomatic tone he has ever heard from Din and it pisses him the hell off. Paz does not like the idea of someone insulting you.
“She’s perfect the way she is,” Paz says flatly.
Din holds his hands up in surrender.
“I’m not judging your taste in women,” Din says mildly. “I was just…uh…surprised. I thought you’d go for someone like Nayel, or maybe even Revala.”
“They aren’t Shu’shika,” Paz says, shrugging.
Nayel and Revala are both warriors and hunters, the two of them direct competitors for their age and skill group. Nayel has even made a few passes at him, but her hand against his doesn’t send that little bolt of tingling pleasure radiating up along his spine. She always wants to fight with him. While he appreciates having good sparring partners, he sometimes wants something quieter.
“Well, we are both shit at this,” Din says. “So, we treat this like any other battle to be fought and won. What intel do you have for me?”
Paz starts to list the data, growing more comfortable as he settles into the comforting routine of what he does know how to do. Win a fight. Then again, he isn’t sure if he should be looking at courtship like it’s a battle to be won.
-
-
-
Notes:
Alor'ad - Captain Vod - comrade, mate, brother - different contexts based on the people involved Gaa'tayl - help Aruetiise - outsiders, traitors. When used to refer to an outsider, it's not an insult. It's just a state of being. When used to refer to a Mandalorian, it's an insult. Uj'ayali - Mandalorian cake made from ground nuts, fruit, spices. Delicious. "Ni copaani hailir gar. Gedet'ye, cyare." - "I want to fill you. Please, my love." Cyare - beloved Dar'buir - "Divorce" from a parent, like disowning them. Rare, usually only done if the parent is a shithead. Starbird - Star Wars creature that is basically a phoenix. It's supposedly reborn in the heart of a star, etc. Manda - Soul, that which makes someone Mandalorian hut'uun - coward, an egregious insult Aliit maan bal solus kyr’yc. - Family first and the individual second - randomly made this saying up. Mandokar - the virtues of the ideal Mandalorian - aggressiveness, tenacity, loyalty, and a lust for life. Riduurok - love bond between two spouses, marriage Resol'nare - The six tenets by which all Mandalorians abide. Short version: "Education and armor, self-defense, our tribe, our language and our leader all help us survive." Alor - leader Goor - Goore --> Grenade --> You toss a grenade --> Therefore goor is the Mando equivalent of yeet. Humor from Tumblr. De'kath bird - An animal I made up a long time ago for another story. The bird sounds like a raven, a tuba, and a paper shredder all got together and made an ugly, horrifying baby. Marsh deer - An animal I made up a long time ago for another story. A marsh deer is about twice as tall as a giraffe and has huge antlers that can cause serious damage if they ram someone. They are generally herbivorous, but when they are in the middle of rutting season, they become opportunistic carnivores. They also dislike humans and will attack unprovoked. Also, they make for good eating and hunting. OYA! Shu'shika - Nickname I made up using shu'shuk (disaster) and -ika (diminutive), means Tiny Disaster. Because Reader is a tiny disaster.
#tv: the mandalorian#the mandalorian#A Proper Mandalorian Courtship#din djarin#paz vizsla#paz vizla#the armorer#paz vizsla x f!reader#paz vizla x reader#paz vizla x you#family relationships#din djarin x cara dune#original characters#angst#heavy angst#no use of y/n#star wars#paz vizla x f!reader#series: a proper mandalorian courtship
103 notes
·
View notes
Video
tumblr
PREVIEW OF UPDATES TO COME!!!
Hey so it’s been a while since I posted an update on this thing, but I just did a ton of work so here ya go. (To be honest I lost the motivation to work on more updates after the last time I posted an update... for probably obvious reasons. I mean, real life stuff and pandemic aside. That said, just in case another “misunderstanding” happens... I should probably put a disclaimer or something...)
*NOTE!!! This is only a PREVIEW. This update is NOT released yet!
As usual, the original non-updated templates are still available on this blog. Click here to go to the downloads page to check out the other templates too!
Alrighty, on with the news!
tl;dr version:
Same as from last time, text is now editable in-template (preview video just shows a lot more of that)
UI design is hard
New feature: style editor bars!
There are still bugs in the new features
UI design is hard
Help button is more visible and obvious (but suggestions for improvements are welcome)
UI design is hard
Full update under the readmore because it’s 4am, I’m incredibly tired and loopy, and a lot of it is probably technical rambling. :D Anyway, enjoy!
If you’ve decided to read on... here we go!
So I just spent the past... I dunno, 4 or 5 days straight working on this (it’ll probably be day 5 or 6 by the time this pops out of the queue. I haven’t slept. It’s very unhealthy, don’t do as I do kiddos!) and this monster of an HTML page/program was like... nearly 4000 lines? Maybe 3900? I managed to clean it up some and get it down to 3600 or so lines, and it also helped that taking the long break between the last update and now really helped me get a fresh perspective on how to more efficiently get things done so I was able to cut out some redundant code/features. It’s actually still not done though (lol). There’s... a lot going on. (Both in the code and in the update!)
As you can see from the preview video (which I made because at this point it was easier than giffing... my poor near-decade-old laptop nearly exploded on me, it can barely handle making a 3-minute video...), the text may be editable in-template and the new style bars are in (which is a new feature!! That the old online generator didn’t have!! Made to make your template generating easier! So no more trying to figure out where to place HTML if you don’t know any!), but admittedly the style bars are not 100% functional yet, I still have to work out some bugs (like bolding/italicicizing/etc. not working on multiple lines, though as you can see in the video you CAN style the whole text area or individual words). Also the very essential feature of uploading your own images is still not in, and the personal data section is... not working right now. ^_^;;;
Still, kinda excited about the style bars, which as you can see are slightly different from the last update. (There’s a highlight color when you hover over them now! I figured that’s an easy way to show it’s interactable.) I maintain that UI design is hard though (it took forever to figure out how to translate the original online generator’s input forms into dropdown menus and such), because while I do like the rows of circle buttons and whatnot going on right now I might actually change it again because I’m not a huge fan of how bulky it looks for some of the smaller editable areas (like the hero name, the hero aptitude box, the quote sections... actually the hero name was supposed to have some style buttons for the strikeout effect and a few others too, but I’m still trying to figure out how to fit them).
Not entirely sold on the help box either. Not sure why? I think it’s the red color. Red was a good color for the button, but not the help box. I’ve always kinda felt like “pale yellow” was the color of “help” so this is throwing me off. Is it just me? Red just doesn’t seem friendly or conductive to helping?? And I’m not totally happy with the positioning either. (Not sure I’m liking that it’s just. In the middle of the page like that? Maybe it needs a shadow or a border or something... it just looks a little off somehow to me? Maybe I need to make it bigger/smaller??) On the plus side, though, the help box is much bigger and more obvious than the tool tips from the original generator.
Right, one last thing before I stop rambling: the style bars currently have buttons for small text, bold, italics, underline, and strikethrough. If you wanted any other font features let me know and I’ll take it into consideration! (I thought about adding a “color” section but honestly I’m not entirely sure how I’d do that... or how many people would use it.) Though that being said, I did have to exclude some font effects from certain areas (as you can see in the video)--like, the strikeout style doesn’t even work on the “manga temple” font (I mean, it DOES, but it’s less of a strikeout and more of an underline) so I just didn’t include it on the bar. So stuff like that might happen if the font effect suggestions don’t work out. (Also more buttons contributes to the bulkiness of the style bar...... again, something I’m working out. Gotta find a way to redesign it, uhg...)
Anyway that’s it for now?? I know it doesn’t seem like much on the front-end of stuff, but I’ve got a list of at least a dozen bugs in these new features/UI alone that need fixing (beyond needing to add image uploading to this new UI and re-implementing save data exports, among other non-debugging stuff I need to do) so it’s... kinda a lot, on the back-end. Still, I hope you enjoyed this preview and didn’t mind my rambling too much!
On the issue of the help box and style bar setup, if yall have any suggestions, I welcome and encourage them!
#archivist#updates#video#I'll probably be refreshed and inspired for some of these issues after a good night's rest... but tonight is not that night
12 notes
·
View notes
Photo

Clear Sky, 30°F
Errors in Atheism: Some Things Needing Change
Ok, first off, I don't know if there's a God. I just don't. That doesn't mean I believe in Religion. Some of their ideas are correct if you take out the part where they try to force you to believe. See, for example, in the Mormon Religion they teach that we have agency as in freedom to choose, yet I've not often encountered such freedom as to investigating other religions like other members were allowed to. Religion is like that in general and I think that even if there is a God, or even if Mormonism is true, freedom is a stepping stone to truth. You simply can't understand if you're not allowed to think. And you can't think for someone. That's not freedom and certainly telling what they can do or say is just wrong a well and the goes for religion too. Atheism and Religion are two sides to the same coin when it comes to conflict.
Other things Atheism does is nitpick inaccuracies in religion with a fine toothed comb.. Thank you. I actually do appreciate that but I've realized Atheism at least omits some things about their history. There's a popular meme that shows a cartoon of a militant Muslim with a bomb vest, a militant Christian with a gun, and a militant atheist with a MacBook having coffee.. Wrong. That's not always the case. If I recall, in the book “Enemies: a history of the FBI” atheistic Anarchists blew people up. Innocent people and assassinated a couple world leaders. Antifa is historically believed to have propelled Hitler into power by accidentally making his opposition look bad simply by taking the same stance but with violence. Antifa exists today and doesn't just attack Nazis. They attack world summits, civilians, police, nice cars, you name it. Even burning and destroying out greatly damaging businesses of people that have nothing to do with their perceived enemies. Oh and Ayn Rand was atheist and encouraged the same crap that the far right Republicans encourage such as assistance only for the well off.
I'm for LGBTQ rights but atheists omit saying some truths about them. Harvey Milk was a pedo. The leader of the human rights campaign was accused of pedophilia and was a friend of Obama. They say that gays don't rape. They do and they rape a lot and this or the HRC themselves but they add they also get raped a lot as a hate crime. There was a speech I think it was in the 80s where a gay guy said gays were going to take over the USA by basically infiltrating everything and raping people into submission. In the 70s some gays said that the family, families in general as in the family unit, was the enemy of the gay community. Gay pride parades used to include NAMbLA or the National Man boy Love Association. It was basically an organization that promoted and participated in child molestation. What else, oh I've heard them poke fun, no pun intended, at the old movie “Boys Beware” about stranger danger against boys and a similar film called “Girls Beware” about the same danger from lesbians. Two words. The Greeks. That has been around for ages plus did NAMbLA and their associated “Butterflies” group spring up overnight? If so then that makes it part of gay rights? Funny they come out at the same time in pride parades. Oh and there's violent gays like Bash Back and I think there's other Anarchist gay groups. Oh and on an Anarchist website I found a book review of an old book written by an Anarchist speaking for gay rights since he went in prison Straight, but learned to basically enjoy the company of men due to desperation and loneliness. Reverse gay conversion therapy or the original gay conversion therapy because apparently it's pretty therapeutic for him. Oh and the days that still happens. It's pretty common for repeat offenders to do the man booty thing in jail but prefer women outside. Oh and Ice Cube has a rap song about that. Yeah, I know, I shouldn't be listening to that stuff. Moving on. Oh and I own the Richard Dawkins book called “The God Delusion.” In the bibliography there's a note saying that prior to, I wanna say 1935, gay referred to prison rape and now we have “gay pride parades.” The crap? And there's the famous remark where Richard Dawkins basically said that pedophilia wasn't that bad.
Enough of that. Now, there's a video I saw where a conservationist removed 80 hooks from dangerous sharks and made friends with some of them. Yes, they repeatedly come back for nose rubs. They literally act like little puppies and do you know how small a shark's brain is? It's the size of a walnut if that. Ok, so atheists are big on science and there's animal experiments that still happen on dogs for example. Do you know how smart dogs are? They save the lives of their families even without training. I've seen video of a cat saving a toddler from an aggressive dog on YouTube. I've seen video of cows playing with a soccer ball and freeing other cows from their enclosures, and then there's primate experiments. And not all of it is even medical there's a lot done just for makeup or shampoo and stupid shit. Oh and don't get me started on human experiments and I don't mean just Nazis. Americans have experimented on the American and other populations from other countries. Facebook recently did a psychological experiment on us, their customers. And in college I've heard of shrinks doing experiments on anyone from children to adults. And he said they still do and some always will even though it's illegal technically. I don't just mean Facebook. Plus there's sexual harassment and even rape in the science fields and they don't get fired like at Google or other fields. They might get fired less then even religion. That's it for now. I'm tired or I'd write more. That's it for now.
References:
https://theanarchistlibrary.org/library/tegan-eanelli-bash-back-is-dead-bash-back-forever
http://www.freerepublic.com/focus/news/3023834/posts
https://www.politifact.com/truth-o-meter/statements/2015/mar/04/ben-carson/ben-carson-many-prisoners-go-straight-come-out-gay/
https://www.truthrevolt.org/news/friend-obama-and-founder-largest-gay-rights-org-charged-pedophile
http://www.revolutionbythebook.akpress.org/anarchism-and-gays/
https://mobile.wnd.com/2002/07/14612/
https://en.wikipedia.org/wiki/Harvey_Milk
https://youtu.be/Wu-jfju5atI
I thought of you when I read this quote from "The God Delusion" by Richard Dawkins -
"Consciousness-raising again 150 The Oxford Dictionary takes ‘gay’ back to American prison slang in 1935. In 1955 Peter Wildeblood, in his famous book Against the Law, found it necessary to define ‘gay’ as ‘an American euphemism for homosexual’."
Start reading this book for free: http://a.co/5Oqgujk
https://pages.vassar.edu/realarchaeology/2017/03/05/phrenology-and-scientific-racism-in-the-19th-century/
https://www.makeuseof.com/tag/facebook-secret-experiments/
https://www.onlinepsychologydegree.info/unethical-experiements-psychology/
https://www.bestpsychologydegrees.com/30-most-disturbing-human-experiments-in-history/
https://en.wikipedia.org/wiki/Unethical_human_experimentation_in_the_United_States
https://youtu.be/l4AI6T0-isc
https://www.huffingtonpost.com/2013/09/09/richard-dawkins-pedophilia_n_3895514.html
https://www.advocate.com/commentary/2015/11/13/rise-gay-bigot
https://www.scientificamerican.com/article/the-liberals-war-on-science/
http://www.rawstory.com/2017/04/a-clinical-psychologist-explains-how-ayn-rand-seduced-young-minds-and-helped-turn-the-us-into-a-selfish-nation/#.WXE3ms8FoQd.gmail
https://en.wikipedia.org/wiki/Ayn_Rand
http://www.hrc.org/resources/sexual-assault-and de-the-lgbt-community
https://zcomm.org/zmagazine/what-happened-to-queer-anarchism-by-michael-bronski/
https://libcom.org/library/paedophilia-and-american-anarchism-the-other-side-of-hakim-bey
https://m.townhall.com/columnists/mattbarber/2011/09/03/sexual-anarchy-n1031230
http://www.loveisrespect.org/is-this-abuse/abusive-lgbtq-relationships/
https://youtu.be/8nkeRvtPmn0
https://timeline.com/antifa-history-violence-nazis-5ccb6231879a
https://youtu.be/6UZxKI5eutg
https://youtu.be/-awkYhtey50
https://youtu.be/_J5bDhMP9lQ
https://www.independent.co.uk/news/world/politics/blood-rage-history-the-worlds-first-terrorists-1801195.html
http://www.freerepublic.com/focus/f-news/1751204/posts
https://www.nationalgeographic.com/magazine/2018/05/sexual-harassment-science-me-too-essay/
https://www.marieclaire.com/career-advice/a14104684/sexual-harassment-assault-in-science-field/
https://www.sciencenews.org/blog/scicurious/fighting-sexual-harassment-science-may-mean-changing-science-itself
I don't mean to knock on just one or two groups and there's good and bad everywhere. Just had to show I'm not just out to get religion/Mormons. I can come up with both good and bad for minorities, Native Americans, cops, military, gangs/criminals, and me. It's not because we're bad and I'm not amoral. I think our main weakness is we're mortal. We have relatively weak bodies with a pretty limited lifespan, much of it spent/"wasted" trying to figure out what's going on while fending each other off/figuring each other out. What could go wrong? Lol there's many factors but honestly I'm tired and have to get up early. And yes I have way too much time on my hands.
Powered by Journey Diary.
1 note
·
View note
Text
How I learned to learn
I taught myself HTML and CSS when I was 11 years old. Two years later, I sat down at the same family computer where I learned HTML and CSS and taught myself Python. Four years after that, I learned back-end web development with Node with the help of a mentor. Two years after that, I learned React with the help of a friend in the open source community. And so on and so on.
Although I attended a rigorous preparatory high school and an even-more-rigorous university, my most fulfilling learning experiences happened while I was at my desk, not a classroom or lecture hall. Independent learning has been the entry point and hallmark of my career in tech. This is true not just for me and for the particular industry I'm in. As the world at large progresses at an increasingly fast rate, independent learning is gonna be a necessary skill for keeping up with the world.
At this point, I think it's important to define what I mean when I say "independent learning." Independent learning is not solitary learning. Independent learning, in my mind, is learning that happens separate from an academic institution like a university or boot camp. It's the kind of learning that happens when you pick up a non-fiction book or read a tutorial about a new programming framework or watch a YouTube video on the how to screw back a loose kitchen cabinet. Independent learning can be passive, you can learn without the intention of doing so by reading a news article linked to from social media or listening to the radio (if anybody does that anymore). Independent learning can also be active, you make an intention to learn a particular topic and seek out the necessary resources.
Most of the independent learning that I have experienced over the past decade has been "active independent learning." I made the choice to learn about a particular topic, whether it was machine learning or knitting, and sought out the necessary resources. I've picked up a thing or two about being a successful, intent independent learner and I'm going to share them here.
Learning your (anti-)learning style
Like many young people, I've spent a large percentage of my life up to this point in a classroom or lecture hall. In those situations, I had little choice over which teaching style the instructor used to deliver their material. I've seen everything from deadpan lectures on quantum mechanics to animated and flexible lectures on human anthropology. After a few years, I quickly figured out that there were few forms of lecture that worked for me. While on my learning journey, I found a lot of resources that recommended learning what my learning style was. I found that figuring out what learning styles didn't work for me was far more effective. It helped me know what kinds of material to avoid and where to best spend my valuable time.
Side-note: I think exploring the negative space in life is an oft-neglected task. Often times, figuring out what doesn't work is just as useful as figuring out what does.
Learning the right stuff
When you're learning a new topic, there's a lot of noise in the information that you gather. Even if the general subject matter is relevant to your interests and goals, there are a lot of unnecessary details that you might capture in the learning process. The best way to figure out what the right things to learn are is to ask someone with experience in the field. Reaching out to mentors via Twitter or local meet-ups or in the office is a great way to find people willing to guide you through the process.
Lather, rinse, and repeat
Application is the best way to solidify learning and defragment the brain. If you're working in tech, you're likely learning a new programming language or framework. My favorite way to reinforce learning is to rebuild something that has been built before in that new language or framework. Whether it's building an Instagram clone with a new web framework or porting a user land package from one language to another, applying what I learn in a practical way helps me organize the information that I picked up.
Getting comfortable with failure
As I mentioned earlier, I attend a preparatory high school. I was one of those "gifted" kids that had a pretty easy time grasping the concepts that was taught at a typical elementary school and even a little more advanced high school. All that changed when I started college. Suddenly, I was a little fish in a big pond. I had some of my first encounters with some truly difficult subject matter. For the first time in my life, I experienced failure in an educational context. At the start of college, I had trouble getting comfortable with that failure. I took it personally. But eventually, I failed enough times to where I didn't fall into a brutal pit of self-degradation whenever I didn't grasp a concept immediately. This comfort made it much easier for me to propel myself deeper into my learning and to bounceback from failure.
One of my priorities in my learning, and in life in general, is to get comfortable with failure (and to even go out and seek it at times). Sometimes, a rocky road is the only one worth traveling on.
Finally, I think it's important to internalize the fact that you have a lifetime to learn how to learn. Learning is one of the few things that we do consistently throughout our whole lives. It's part of what makes us human. For as much as we learn and discover about things outside us, we learn as much about ourselves.
5 notes
·
View notes
Text
So I'm still - still! - having panic attacks and self harm incidents courtesy of being harassed by the tradcraft mean girls last month, and it's bumming me out. (Don't send unprovoked insults and attacks to strangers; you don't know what they are going through or how it will affect them.) It's feeding into a lot of thinking I'm doing at the moment about the broken promise of the internet. How it does do all this cool stuff like link me with ideas and strangers and make me feel a part of global communities and invested in all sorts of people doing odd stuff. And yet also, it's always at the risk of assholes showing up and shredding you, and there's nothing you can do to prevent that. I think pagan tumblr has an especially bad crowd, but just in this last month I've put up with the same bullshit from like - my ferret forum. My origami forum. My artist trading card community. None of these are me picking fights with people, they're just people deciding that it's fun to stir shit with strangers on the basis of a 100 word post. The last time this happened badly, I had been out of the crisis ward for 2 days - so I messaged the person to say look, this isn't on, I don't want this kind of interaction online and they said "sorry im just tired" as if I wasn't still vomiting every time I consumed liquid. Part of the frustration for me is, for abuse related reasons, I know how badly this stuff fucks me up and have spent the last few years trying to change my relationship with the web to minimise it - I've unfollowed everyone who does it, stepped back from political blogs and conversations which tend to invite this kind of assholery, unfollow or block people instead of disagreeing with them, ghost-blocked a tonne of irl friends who behave like this online, and dumped anyone whose behavior extends to this in person. But no one can really stop drive-by hostility coming to find you. I'm thinking a lot about the Internet As Abuser. Bear with me. I find it hard to differentiate between voices on the internet, as I think most people do. You're not interacting with faces, just with text. I open my inbox and I don't know if I'm going to find supportive and kind messages from strangers, or strangers screaming in my face and telling me to die. Funnily enough, I'm frightened of reading my notes. Have been for years now. It's a pervasive sense of unsafety. It's the same person being unpredictably a source of comfort and a source of terror. It's not being able to defend yourself against it in any meaningful sense. Most of the people I chat to on tumblr are cool people who are lowkey my friends and who I've learnt a lot from. And three three or four times a year You know, it's just so normal. I've actually got a bit in my about where I say "please don't send me hate mail", but obvs no one takes the time to read that. It's normal to treat strangers like this and, if you're a really cool witch, it also boosts your "no one fucks with me" cred and nets you followers. Boy do I love being used as a box others use to clamber on top of. It's also mirroring problems I'm having in real life. Like, I'm afraid to leave the house or go anywhere or talk to anyone because I'm afraid of being attacked. So I spend a lot of time socialising on the internet instead where I - I'm too afraid to read my notes or my inbox or interact with anyone because I'm afraid of being attacked. I'm thinking about "creepy bus stop randos" as a comparable model for internet harassment and how to end it. To wit: three or four times a month ill be on a bus and some bloke will decide we are going to have a conversation, deliberately misread my body language, and saying "please go away and leave me alone" only makes things worse. Comparable in the sense that: 1) being in public is not consent to have conversations with you and 2) the onus is on the person starting the conversation to figure out whether their conversationee is into this kind of interaction and, if you're not sure, err on the side of not doing it. and 3) If the person seems to be uncomfortable, back off rather than inviting all your mates to have a go. I can't opt out of strangers getting in my personal space online or irl, and it bothers me a lot. I don't leave the house most days. And online, it causes problem like - far from hating creatives, I'm literally a full time working artist and author reliant on the web for work, except I'm too frightened to answer my work email or even look at it, and to update my brand blog or insta, and interact with people as I'm supposed to; I'm too frightened to work, but one can't opt out of the internet and be an artist these days. So it goes. My attitude is supposed to be "oh just ignore bullies and do your own thing", but like - this is the third time this week I've been alone and had this panic attack and ended up bloody. It's absolutely a Problem, a problem without end. Like, I don't have a good relationship with the web. I know that. It's just unavoidable; people in my life don't take requests like "I need zero access to the internet" seriously, and you need it to do anything nowadays. This is what happened for me in political environments too. For a while it was like - I hate how all the loudest voices here are mean bitches, I'm going to try and model a kinder sort of politics - and now it's just - I don't care about the collective, and if people want to create a mean environment then they deserve it. I just want the world to leave me alone. This is just the latest in a long series of hobbies and communities and environments where you're welcome only so far as you don't step out of line, and you accept people being mean without complaint. I don't want my existence to be series of standing up to bullies, I want people to be kind as a matter of course. I think this is a roundabout way of saying I'd like to start an old school blog and start putting my posts there instead. There's a post on my queue which I don't know is posted yet or not about the internet of my youth, how 90s html website culture and 00s blogger/WordPress culture were slower, quieter and more generous than the speed and the nastiness of interactive social media like tumblr and so forth. Those older blogging forms were shouting into the dark - you rarely got responses or knew who was reading, and as much as I love the interactions I have with friends online and the support I've had from strangers, I actually don't think that is enough compared to the constant, constant, constant terror the dark side of internet comms has for me. (Even livejournal - batshit as that was - had more ability to wall your content and make rules about interaction in your space than here.) It's my birthday today and all I've done is cry, and cut, and hyperventilate because a small power-hungry clutch of internet bullies have worked out that being performatively mean for their followers is a great way to drive traffic to their content and self-validate the power of their craft by having a fan club and picking on people who can't fight back. I can't get the feeling of panic out of my skin; I can't differentiate the voices on the internet enough to feel like 6 billion people on the planet all hate me personally, and that everyone I encounter is just waiting for an excuse to use me or hurt me or get the knives out; I can't face participating in another club or hobby or trying to meet new people because it's just going to be this same thing where everyone is nice until you get targeted by the big kids and have to accept it or leave; this is my 18th year in therapy, and there's nothing promising on the horizon to help me cope with these fears any better. But like, that's just humans for you.
6 notes
·
View notes
Text
Making Friends with the Light Grey Cosmos Tarot
A new deck in town is always an exciting thing, and maybe I’m crazy, but the Light Grey Cosmos Tarot & Oracle Deck had me extra excited. If you’ve had a glimpse of this deck online, you’ll know that the production is lux and the art show-stopping. Not only that, but in addition to the standard 78-card tarot deck, it also includes a bonus 22-card oracle deck. Effectively, it’s two decks in one. A hard proposition to resist for those of us who like our cards a little… extra!
Shop the Light Grey Cosmos Tarot & Oracle Deck here!
Cosmos is the second collaborative tarot project from the masterminds at Light Grey Art Lab (you can find the first Light Grey Tarot here). Like the first deck, each card in Cosmos is the work of a different artist, bringing together 100 artists from around the world to riff on tarot and astrology in this unique and beautiful deck.
I don’t know how they managed it, but like the original Light Grey Tarot, Cosmos is simultaneously diverse and cohesive, aesthetically speaking. It’s an amazing feat of fortune and coordination to have one hundred artists – not necessarily versed in tarot – create one hundred individual artworks that come together to make a singular working deck. Honestly, it’s kind of remarkable!
Oracle Cards from the Light Grey Cosmos Tarot & Oracle
The other feat of unification that the Light Grey Cosmos deck achieves is its parallel exploration of tarot, mythology and astrology. Each card has a celestial attribution, bringing together traditional tarot meanings and the symbolic and mythological significance of constellations, planets, and other astral phenomena. Although, to say the tarot associations are traditional is not strictly correct; some of the cards read like their Rider Waite Smith equivalents, but many have been taken in unique directions. Cosmos is definitely kind of deck that rewards study, so get those tarot journals out!
When I look at a new deck, I like to check out how it deals with sexuality and gender, usually by looking at the Ten of Cups, the Two of Cups, and the Ten of Pentacles, and The Lovers. Interestingly, each of these cards depicts a woman either alone or with an animal (The Lovers, which is associated in this deck with the sign of Cancer, shows a woman with an abstract, crab-like creature).
When it comes to racial diversity, there are cards that depict people of colour (to name a few, The Sun, The Star, and the Five of Earth). The art definitely errs on the side of fantastical, so there are also a lot of magical blue people, for example. Cosmos’ depiction of people of colour is not overly realistic, but then, there isn’t much realism at all in this strange, celestial deck.
Interestingly, a goodly proportion of the cards depict non-human figures, landscapes, or symbolic objects. For that reason, Cosmos will definitely appeal to readers who prefer their decks to place less emphasis on mundane human images, or who like their art well steeped in fantasy.
Since this deck very much marches to the beat of its own drum, it’s fortunate that it comes with a pretty detailed book. There are also keywords printed on each card, along with the card name and associated constellation, which you can utilize or ignore at will.
So, I’ve been taking my time getting to know this deck (a lot of which has been spent just oohing and ahhing over the lush gold foiled edges and the gorgeous imagery). After a while, though, it’s time to stop looking and start reading! For the purposes of this deck interview, I’ve excluded the oracle cards. I’ll give them their own review and interview at a later date.
1. TELL ME ABOUT YOURSELF. WHAT IS YOUR MOST IMPORTANT CHARACTERISTIC? Queen of Fire (Cassiopeia)
Keywords: Consequences of Arrogance. Vanity and Pride.
The Queen of Fire tells the story of Cassiopeia, and her daughter, Andromeda, women punished for their pride by the sea god, Poseidon. While the story of Cassiopeia warns of the potential pitfalls of pride (or perhaps of cranky gods who’d rather keep women in their places), the accompanying booklet says that really, this card is about Andromeda rising above her trials and breaking free.
Freedom is something the Light Grey Cosmos Tarot has in spades! Traditional tarot structures and elemental associations are all up for grabs here, and this deck makes no apologies for it. This deck captures all that dark stuff – pride, revenge, subjugation – but also brings a liberated spirit to the reading table.
2. WHAT ARE YOUR STRENGTHS AS A DECK? XVIII The Moon (Pisces)
Keywords: Subconscious. Indecision. Critique. Sensitivity.
I’m not surprised to see The Moon come up, because this deck can be pretty weird! From the imagery to the keywords to the astral phenomena, Cosmos follows its own lead and resists any assumptions you might want to impose upon it (there’s that free thinking again!). Obviously, this uniqueness and weirdness is a great strength!
When it comes to working with The Moon, we know the best tools we have are intuition and creativity. It’s fair to assume that Cosmos is in its element when the reader approaches with these tools in hand.
3. WHAT ARE YOUR LIMITS AS A DECK? 10 of Water (Corona Borealis)
Keywords: Triumph After Sacrifice. New Beginnings.
Cosmos associates the Ten of Water with the story of Ariadne, who, after being abandoned by her lover, Theseus, finds redemption and a new beginning when she is wooed by Dionysus (it’s worth noting that while the artwork on this card depicts a woman with two leopard-like cats so is not overly heteronormative, the myth that the card is associated with obviously is, so your mileage in that regard may vary!).
So, what do we make of this as a limitation? It would seem Cosmos is not overly concerned with tidy endings, or clean-cut tales of redemption. Don’t expect any coddling here! This deck is complex, and maybe even a little cool, so until you’ve learned to speak its language, reading with it is not going to be a soothing experience. Who doesn’t love a challenge, though?
4. WHAT ARE YOU HERE TO TEACH ME? Three of Air (Hercules)
Keywords: Great Effort. Trial.
Personally, I love this take on the Three of Air. Unlike the traditional meaning of this card (pain, heartbreak), Cosmos makes the Three of Air about proving yourself through strength and endurance. The scene on the card depicts Hercules’ eleventh labour, and demonstrates that we often have to weather many storms in order to get to where we want to go.
Cosmos is obviously here to toughen us up! Or to remind us of how resilient we actually are. I’m already finding that the mixture of tarot, astrology, and mythology in this deck is forcing me to flex my reading muscles, and that’s evidently part of Cosmos’ design. This deck is here to push us as readers, which can only be a good thing!
5. HOW CAN I BEST LEARN FROM AND COLLABORATE WITH YOU? King of Water (Camelopardalis)
Keywords: Seeing the Big Picture. Gaining Perspective.
The King of Water is associated with Camelopardalis, the giraffe constellation, and is associated with the Qilin, giraffe-like creatures from Chinese mythology. This King is all about taking an aerial view of things, stepping back and seeing the big picture.
That definitely feels like a good strategy for reading with a deck that’s so ambitious in scope! The best way to work with Cosmos is to step away from narrow assumptions about traditional card meanings, and instead to allow elemental, mythological, and astrological associations to coalesce into something bigger and more complex.
6. WHAT IS THE POTENTIAL OUTCOME OF OUR WORKING RELATIONSHIP? Two of Fire (Fornax)
Keywords: Incubation. Pregnancy.
The Two of Fire tells the story of the Roman goddess of the hearth, Fornax, who was honoured with the festival of Fornicalia to ensure that the year’s grain would be properly baked. Buns in the oven, anyone? I hope we’re all using birth control!
It seems Cosmos is so slick it might even get you laid, but it’s probably more likely that working with this deck will lead to some cool creative breakthroughs. There’s so much richness to delve into here that fruitful inspirations are bound to bloom. Personally, I’m excited to delve into this deck’s depths and get those fiery, creative ideas incubating!
*
Phew! It's been a long one today, but there's just so much in this rich and beautiful deck. Cosmos is definitely a deck that rewards close study, so I'm looking forward to spending more time with it and discovering all of its quirks and secrets!
The Light Grey Cosmos Tarot & Oracle deck is, of course, in the shop now and ready to ship! You can pick up your own copy right here.
#mc_embed_signup{background:#fff; clear:left; font:14px Helvetica,Arial,sans-serif; width:100%;} /* Add your own MailChimp form style overrides in your site stylesheet or in this style block. We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
Get your free life-changing tarot magic!
7 notes
·
View notes
Text
Smashing Podcast Episode 18 With Mina Markham: How Can I Learn React?
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? Drew McLellan chats to Mina Markham to find out.
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? I spoke to Mina Markham to find out.
Show Notes
Weekly Update
Transcript
Drew McLellan: She is a front-end architect, conference speaker and organizer, and lover of design systems. Her work on the Pantsuit patent library for Hillary Clinton’s Hillary for America presidential campaign marked a watershed for design systems within the industry and was featured on publications, such as Wired, Fast Company, and Communication Arts. Like many of us, she writes code for a living, currently as a senior engineer at Slack. So we know she’s a talented and forward thinking developer, but did you know she was once mistaken for Patrick Swayze? My smashing friends, please welcome Mina Markham. Hi Mina. How are you?
Mina Markham: I’m smashing.
Drew: Good to hear. Now, sometimes on the Smashing Podcast, we talk to people about the subject that they’re best known for. And sometimes it’s fun just to talk about something a bit tangential. Now, I could chat to you all day about pattern libraries, design systems, the amazing work you’ve done in that particular area, and I could talk to you about subjects that you’ve perhaps spoken about, events, such as the Event Apart, things like art direction. And we could obviously talk about CSS until the cows come home. But you tweeted a few days ago, and I realized that we’re actually both in the same boat in that we’re both experienced front-end engineers and we’re both recently started working with React. So before we get onto React itself, where were you coming to up to this point? Had you been working with other libraries and frameworks for JavaScript development?
Mina: No, actually I’ve been doing mostly vanilla JavaScript for a while. And before that, of course I got into JavaScript. Let me rephrase that. I started working with Java script using jQuery because it made the most sense to me. It was something that was very easily for me to parse to figure out what was happening. And then from there I backtracked to doing just vanilla, plain JavaScript, ESX, and I hadn’t really gotten too much into the framework wars. I had no, like I had no favorite. I had no dog in the fight. I was like, “For you, React, whatever. I don’t really care.” But times change.
Drew: And in this sort of way of working with vanilla JavaScript, because I’ve done a lot of that myself as well. I’ve worked with various frameworks. I’ve done a lot with jQuery back in the day. I worked with YUI, Yahoo User Interface Library. Had you felt many of the pain points that something like React’s architecture tries to address?
Mina: I don’t think I ever had. I spent most of my career making websites versus web apps and things like that. So everything I did was pretty static up to a certain extent. So I never really had to deal with state management, things like that. So the pain points that React attempts to solve I had never really applied to the kind of work that I did.
Drew: Generally speaking, what’s the sort of nature of the projects that you’ve with React so far?
Mina: It was actually only been the one project, which I’m currently working on and I can’t give away too many details because public company and all that good stuff.
Drew: Of course.
Mina: But essentially what I’m trying to do is I’m trying to use React to, it’s a very interactive sort of product where I need people to be able to enter in and save data at a certain state and then manipulate it and generate something else with said data. And that’s just something that it’s not simple DOM manipulation at that point. It really is a lot of more complex, front-end manage of data and managing the state of said data. So there really was no other alternative but to use some kind of library that attempts to solve that problem. I knew I wouldn’t be able to get past with just plain JavaScript. I contemplated maybe handling somethings on the server side, but again, due to the very interactive nature of what I’m working with, it need to be in the client. And so we already use React at Slack for various other things. And so I was like, “Okay, well we just should go ahead and adopt the same thing that the rest of the parent the companies are using and go from there.”
Drew: One of the things that I’m always seems to be a pain point with people picking up React is getting to grips with the tool chain that’s needed to get things working, Webpack being an obvious elephant in the room. Have you had to do much configuration of the tool chain or like me if you had the lUXury of teammates doing it for you?
Mina: Oh, I love the infrastructure team at Slack the data. The front-end infrastructure team at Slack, they handled all of that. I didn’t have to think about it. It was great. Because I tried to learn React before in the past. Usually the way I learn best is by actually working and implementing on things. And we use React to build a lot of hillaryclinton.com back in 2016. So it’s not like I’ve never worked with people who use it. It’s just my work never directly needed me to get involved. But that code base was very complex and very sophisticated, and there was so much happening that there’s such a barrier to entry to try to learn anything in there if you didn’t already know how React and RedUX and all of that works, which I didn’t. So I wasn’t really effective in learning in that environment.
Mina: Luckily, here I do have people to like take away a little bit more of the complex bits of it. I don’t have to worry about the Webpack config at all. That’s been set up. That’s been tried and tested and ready to go. I am in a similar boat where we also use RedUX in addition to React, which I didn’t realize were two different things. I didn’t know which part handled which. Dropping into a code base like that, it was a little disorienting because I didn’t realize that they were all the same thing. I had people who were seasoned React developers telling me, “Oh, we also are using RedUX, which makes it a little bit harder for you to really learn what React all can do if you’re starting from scratch.” And I never quite knew what they meant by that because I didn’t know what they were talking about.
Mina: To answer your original question, I am still having a little bit more of a little bit barrier to entry, because it’s not just learning React. I’m having to learn React and also how to use the RedUX store. So those two things at the same time can be a little much.
Drew: Yeah, I’ve found exactly the same thing coming into an existing code base as my first React project that uses RedUX. And I think as is the nature of any of these sort of technologies when they’re young, they iterate really quickly, and what’s best practice at one point, 6 months later has moved on and there’s a different way of doing things. And when you have a code base that spans many years, you can sometimes have different styles of implementing things in there. It doesn’t always keep sync. And of course, if you’re following a tutorial or whatever to learn, you’re reading books, you’re using resources, they will be in the most modern version of how to do things. And that doesn’t necessarily nit to what you see when you look at an existing, mature product. Is that something you’d experienced at all, or have you managed to keep your code base really up to date?
Mina: I think that is something that I definitely have been experiencing. When I tried to learn how to do React on my own, I looked at various tutorials and things like that. And I noticed, or at least people have told me who have worked who have been working with me that some of the things that we do or kind of anti-pattern or not quite how things work now, because this code base is slightly, well mature us relative, but it’s a few years old. And so there are some ways that I guess are easier to do things than the way we’re doing them currently because this was written years ago. So it’s a little bit of a treadmill trying to keep up with current times and make sure I want to do things the best way, but also I don’t want to break an established code base because I want to play around with stuff.
Drew: Obviously, one of the things with React that people like you and I are coming to it, it can feel a bit jarring as this whole thing with JSX. Are you using JSX in your project?
Mina: We are. I am using JSX.
Drew: Have you made peace with that?
Mina: I fell like a little small piece of me dies every time I open one of those files. It still feels sacrilege to put my HTML in the JavaScript file. I know that’s kind of revolutionary and the whole point, but it just feels off to me that I’m writing my markup in a JavaScript file. I’ve made peace with it, but every time I do it, I’m just like, “…” Separation concerns, it is a thing. I’d like it back, please.
Drew: It’s a valid point, isn’t it? My background when I was starting to work more seriously with JavaScript, and this was probably when I was back at Yahoo, things were very much on the model of server rendered HTML pages and then taking a progressive enhancement approach, layering JavaScript on top to enhance the interface. And if the state of something in the interface needed to change, your code had to know about all the parts of the interface that it needed to update, which obviously leads you to a tightly coupled approach with these big monolithic views where the code you write needs to know about all the other code around it. And I guess that doesn’t really lend itself to a componentized approach which you would take when working with a pattern library or a design system, which is more to your area of particular expertise. I guess, React lends itself more to that approach, does it?
Mina: I think it does, especially with the being able to couple the very specific CSS to one JSX or one React component. And so that way it makes it much easier to separate or only take what you need for the library and leave the rest, whereas a pattern library or design system that attempts to do something more monolithic with just one big style CSS file or something like that, it does make it a lot difficult. You kind of have to take it all or nothing. So I do appreciate that React allows us to do more individualized, more componentized way of development, even if I still wish there was a way for me to do truly separate my presentation layer and my content layer from my interactivity layer. But maybe that’s just me being a little bit old school in that sense.
Drew: I definitely feel the pain there. The idea is that, come and correct me if I’m wrong, my understanding is that rather than separating the technologies, the CSS, and the JavaScript, and the HTML, it’s separating the functionality. So everything that is one component all exist together-
Mina: Yeah.
Drew: … which I guess is useful if that component then is no longer needed. You can just delete it, and it’s gone, and it doesn’t leave a footprint around your app. That’s not always the case with CSS though. How are you working with CSS with React? Have You looked at things like styled-components or anything like that?
Mina: No, we haven’t. I’ve heard of styled-components, but I’ve never quite really investigated them very fully to be perfectly honest. So the way that we’re working with CSS with React is we write Less, and we just have a Less file attached to each individual component that gets imported into that component. And then it gets bonded up via Webpack and served to the client.
Drew: Are you using a system like BEM or something to turn namespace?
Mina: Yeah. We’re using BEM for namespacing, although the adherence to it is kind of varied depending on who’s writing what. But we try to use a BEM namespacing pattern to make it a little bit clearer what the purpose of each individual class and component is.
Drew: And does that seem to be working successfully for you?
Mina: I think so. Occasionally it kind of has the same old problem of I sometimes don’t know how to name something. After a while daily things has always and will always be a difficult thing for master. So that’s the only issue I have with is I occasionally I have no idea what I should call a particular component.
Drew: Definitely. That’s a constant battle, isn’t it, how to out the name things?
Mina: Yeah.
Drew: I always end up when working on a new feature or something like that, you give a component and all the classes and everything the name that the feature has got at the moment. And then by the time you come to launch, it’s been renamed something else. So you have references to the old name in the code and the interface has the new name. And …
Mina: I try to always name things based on the function or the purpose of it versus things that are a little bit more ephemeral, because it’s less likely that the actual purpose of this component will change. I forgot to mention, but in addition to using BEM, I guess we use BEMITs if you’re familiar with that. It’s basically the ITCSS plus BEM, both of which were created by Harry Roberts. So I use Hungarian notation to denote whether or not something is a component, versus a layout object, versus like a larger pattern comprised of multiple components. And then from there we use the BEM convention to signify like the block element and all that.
Drew: And have you had to do much refactoring and deleting of components and things in your code base and had to deal with the issue of CSS getting left behind?
Mina: Yeah. So the non-React part of my job, of maintaining slack.com is that’s all just a bunch of Less files that are being compiled for CSS. And I guarantee you, there’s a lot of zombie code in there, because we definitely iterate above things a lot in the time I’ve been there. And we don’t always have time to go back and do the cleanup versus when we redesign a page or something. So it’s overdue for an audit, I’ll say that.
Drew: This is something that we’ve just been looking at in our React project, looking at how we approach CSS. At the moment, we have a few big, global CSS files for the whole of the app, and we do get this situation where our bundle size is just growing, and growing, and growing and never gets any smaller, even though things do get removed. So we’ve been looking at things like styled-components, Tailwind as well is another option that we’re really seriously considering. Have you looked at tailwind much?
Mina: I haven’t looked at it a lot. I’ve been curious about it, but again, I’ve never really had time to dig in to actually see if it’s something that I want to try to bring into our code base.
Drew: I was actually quite surprised, because like you, I’m a bit old school with how to do these things. I like nice separation of concerns. And I like to write my CSS in CSS, and of course the approach with Tailwind is you have all these class names, which feel a bit like inline styles that you’re applying. And if it feels dirty.
Mina: Yeah.
Drew: And I volunteered within the team, we each which took a technology to investigate if they’d be a good fit for our problems, and I volunteered to look at Tailwind because I was absolutely certain I was going to hate it.
Mina: No, no.
Drew: But it turns out I actually think it solves a lot of problems. I was quite impressed.
Mina: Yeah. I’ve sort of come around to a similar way of thinking, because I in the past would much prefer to have one class comprise all of the styles I needed for a particular component and not do a class per property, as I believe Tailwind does or languages like it do. For the similar reasons, it felt very much like, “Well, I’m just running inline CSS at this point. Why would I do this?” But as I’ve been developing more and more, inside of our Slack design system, I created a bunch of what I call utility classes that do things like add a bit of margin with a pattern. I’ve noticed that more and more, I’m using those classes in addition to the component classes. So I’m like, “Okay, well maybe I should revisit this whole to doing a CSS as a one declaration at a time.” I don’t know if I’d go that far, but it’s definitely worth considering.
Drew: Computing seems to flip flop in terms of trends between thin clients and fat clients solutions. We started with mainframes with terminals, and then the PC era with windows and office and all these sort of big applications. And they were all getting really slow, and than the web came along, and that was just a browser, and all the work was being done on the server. And it was all fast and snappy again. And now we’ve gone back to putting all that work back in the browser with everything being done with JavaScript, things like React and the JAMstack approach where we’re back to a sort of fat client. I sometimes worry that we’re asking too much of the browser. Is this a mistake? Are we asking too much of the browser trying to do all this stuff in React?
Mina: I want to say yes with the caveat of, again, my experience is very much contained to mostly static websites. I don’t do a lot of product development. So maybe in that realm, this makes more sense. But from my perspective, I feel like we’re a lot of the times using a hatchet when we just need a butter knife. I don’t know why we need put all this in the browser, put so much work and so much pressure on the client. I feel like we could do this much simpler. One of the things that always made me a little hesitant to use React, or I say hesitant, but what I mean when it made me viscerally angry and I actively opposed, was when I would go to a website and literally nothing would render because there was one error or something, Like, “Really? The entire page is broken because one function broke down?”
Mina: It just kind of annoyed me that a lot of times it was an all or nothing approach. One of the talks that I gave at AEA in the past and other places in the past was talking about how to include progressive enhancement and not just your development, but also of art direction and design of sites. And I would point out specifically examples of websites that didn’t do progressive enhancement or any kind of graceful degradation. It was like either you have the JavaScript running in the browser or you get absolutely nothing. And it would be like just a simple site that represent information about the history of web design, which was one of the sites actually talked about, the history of web design from like 1990 until now. It was a beautiful website with lots of timelines, animation of things. But it also could have been rendered statically with just a list. There were steps in between showing nothing and showing that beautifully enhanced experience that I think got lost because of the way we’ve been approaching modern web development now.
Drew: So would you say there are absolutely some categories of projects that suit a solution like React and some where it really shouldn’t be used and you should be using more traditional methods?
Mina: I think that if your site particularly is mostly static, it was just serving up information, I guess I don’t understand why you need a project like React to render something that doesn’t have a lot of interaction beyond just DOM manipulation. I guess I don’t see what benefit you get from that. Again, I may not be working on the appropriate projects. I may not just have seen or found that use case, but I’m having a hard time seeing if it’s just mostly static site, presenting content, not a lot interaction, not a lot of interaction beyond manipulated DOM and doing animations. I don’t see how having a React library helps you accomplish that goal.
Drew: It’s interesting because I’m not bad talking it because I haven’t actually used it, but I see a lot of Gatsby projects and Gatsby being a static site generator that uses a React front-end in it. And I see all the examples of the themes and things they have available are all content based sites, or blogs, and a recipe site, and a portfolio, and these sort of things. And there’s something I think actually that this isn’t necessarily the right fit for something like React. Why isn’t this being statically rendered and then progressively enhance?
Mina: Yeah.
Drew: It’s not software.
Mina: Yeah. I haven’t actually used Gatsby either. I’ve heard plenty of great things about it, but that’s probably one of the examples I would think of where I’m like, “Okay, I guess I’m just not seeing why that tool is necessary to do that particular job.” Again, I don’t know. Maybe it’s just because more people are comfortable writing in React when they are writing new something else, and it’s just providing a tool that meets people where they are. I’ve heard great things about static site generators that use React for people who have used them and love them, but it’s not a use case that I would have immediately been like, “Oh, that makes sense.”
Drew: It seems like there’s always been this battle between what we would call a website and what you might call a web app. And the chasm between the two seems to be getting wider, and wider, and wider, whereas a progressive enhancement approach tries to bridge the gap by taking something static and adding JavaScript and adding interactivity. It seems that things like React are ideally suited for software that you’re running in the browser. Would you agree with that?
Mina: I would definitely agree with that because it feels like it’s was built for that type of environment; it was built for running software. It was built by Facebook for Facebook. So it was built for a product. It was built for running whatever you call a web app in the browser and not necessarily for the type of work that, as I mentioned, I’m used to doing. So I think in those scenarios, it definitely makes a lot of sense to use it if you’re building a more complex, more sophisticated piece of software that’s meant to run inside of a browser. But if you’re building a marketing agency site or whatever, I guess I would still struggle to see why it will be necessary there.
Drew: So are we giving people permission to still build decent, statically rendered websites?
Mina: I would love to see more of that happen. I feel like that’s kind of gotten lost and it’s sort of lost its, if it ever was cool or whatever. I feel like we’ve lost that part of web development. It’s so funny: you and I both said that we’re kind of old school, and I laugh at that because I’ve actually been doing web development for, what, six years now? How am I old school? It hasn’t been that long for me. And yet somehow I’m part of the old guard who doesn’t like new and shiny things. I don’t get it.
Drew: So in fact React has actually existed for the whole time that you’ve been a web developer.
Mina: Maybe I just have an old soul. I don’t know.
Drew: I think that’s probably the case. I’ve not looked personally at, there are service side rendered approaches you can take with React apps. Have you experienced any of those?
Mina: I haven’t experienced any them. I briefly looked into them for the project I’m currently working on, because I feel like there’s parts of the operation that would work better on a server versus in the clients. But I think because of my limited knowledge and the fact that the code base is a little more complicated than I can understand, I wasn’t quite able to figure out how to make that part work. I would love to figure it out eventually, but I spent a day digging into it. I was like, “You know what? I’m not grokking this away I need to be. So I’m just going to back up and take a different route.”
Drew: Yeah. I think we’ve all been there.
Mina: Yeah. I went down a path. I was like, “Oh, this is dark and scary. Let’s reverse. Let’s reverse.”
Drew: Step away from the code.
Mina: Yes.
Drew: So you’ve been very diplomatic and polite about React so far. I sense that there’s some tension bubbling under the surface a bit. Come on. Tell us what you really feel.
Mina: I have been polite and diplomatic, mostly because the Reacts fan base can be a little mean sometimes, and I would rather not have them come for me. So please, React is great. It’s wonderful. Use it for what you want to use it for. I kid, but even that tweet that you mentioned at the beginning of this podcast where I think what you said is that I don’t hate it. I don’t love it, but I don’t hate it. Even that statement, I got people, there was no vitriol, but it was more they where ready to leap to the defense and say, “Well, I love it because X, Y, Z.” I’m like, “I didn’t say it was bad. I just said that I’m meh about the whole thing.” But apparently being meh is not okay. I have to love it.
Mina: So that’s why I probably have been a bit more diplomatic than I would ordinarily be, just because I don’t want people to think that I’m bad mouthing it, because I’m not. It has a place in more web development. It serves a function. It does its job well. People love it. It’s just not a tool that I’ve ever had or wanted to use until now.
Drew: Yeah. Things can get very tribal, can’t they, with people feeling like they have to take one side or another, and you’re either absolutely for something or absolutely against something? And I’m not sure it serves a good purpose, and I don’t think it really moves us forward as an industry and as a community to do that.
Mina: Yeah. It’s really odd. It’s fascinating to watch from just a sociological standpoint, but it’s often just really like weird to observe. It’s like I’m not allowed to just be, like I said, neutral about certain things. I have to have a strong opinion, which is I don’t think healthy. What’s the term, “Strong opinions, loosely held?” That’s kind of the way I go about things. I feel strongly about certain things, but it’s not like you can’t change my mind. Where I feel like some people, their identity gets wrapped up into certain aspects of it ,that if you are not for whatever they’ve chosen to identify with, it’s a personal slight versus just, I don’t care about this particular topic, or tool, or whatever.
Drew: Yes. I don’t know if it’s made worse by the fact that we all are sort of tending to specialize a lot more in particular parts of the stack. And I know there are people who are React developers. They would call themselves a React developer because that’s what they work in. And they wouldn’t necessarily write any vanilla Java script or wouldn’t use Vue or whatever. React is their world. So I guess it almost feels like an attack on their entire career to say, “I don’t like React.” Well, they’re really invested in making you like React or whatever the technology may be.
Mina: I will admit to being one of those people in the past. Actually, probably it was mostly about SASS, I believe. I was very much on the team of doing SASS as a preprocessor and all other preprocessors are trash. I don’t want to talk about them. I don’t want to deal with them. And I realized that was a very narrow way to look at things. Use the appropriate tool for the job. Whatever makes you more productive, that’s the right tool. It doesn’t really matter what it is.
Drew: Are there any technologies that we work with that don’t have that sort of tribal feel? Is there anything that people are just happy to use or not use? I can’t think of anything.
Mina: Wow. No one has opinions about markup, actually.
Drew: No.
Mina: I feel like no one has opinions about like actual HTML and just markup, just like, “It’s there.” They use it. But people have strong opinions about CSS and how it’s either terrible or wonderful, and the preprocessor wars that don’t really happen all that much anymore, and then of course, all of the tribalism within the various JavaScript libraries.
Drew: So you would say your journey so far with React is still just, “It’s a tool. It does its job?”
Mina: It went from a curiosity to active and visceral dislike because of how prevalent it was and how I unnecessary I thought that that prevalence was to meh. I’m now with meh, which again does not mean I hate it. It just means …
Drew: I think that’s a good place to be. I think we’re probably all sort of stronger as technologists if we understand the value of a particular technology for its purpose. We can evaluate what is good for what circumstance and pick the right tool for the job.
Mina: Yeah. And that’s kind of where I’ve arrived at this point in my career where I don’t get really invested in any particular language, or technology, or whatever, because it’s like, “Just whatever tool is most appropriate for what you’re trying to do, then use that.” I’ve learned that there’s a place for everything; there’s a time and a place to do everything. And up until recently, there was no real time or place for me to use this React librarian, and now there is.
Drew: I think that’s a good place to be. So I’ve been learning all about React lately as you have in the day job. Is there anything else that you’ve been learning about lately?
Mina: I’ve actually learned ironically, which is I think another language that has originated at Facebook, I’ve been doing a lot of Hack development, mostly because that’s what I use at Slack, at my day job. Learning Hack paved the way for me to get more comfortable using React because they follow very similar patterns, except one is server side and one’s not. So that, along with just in general, I’ve been learning more about the back-end and how that works for various different reasons. And I’ve been stretching myself for the past couple years and getting more and more outside of my comfortable zone. Design systems, libraries, that’s very much my world, and I feel very good and comfortable in that world. But I’m stepping outside of it and doing a lot more server side logic, and API development, and data modeling, and all of that. I’ve been doing a lot on that for the past year as well.
Drew: I find that the more I understand about the whole stack about back-end stuff in front-end stuff, each one helps my knowledge of the other. I find I write better front-end code by having written back-end code and understanding-
Mina: Yeah. I think I feel the same way. Now that I have a better idea of, like we said, the whole stack of how we get from the data to the end client. I find that I’m thinking about the entire pipeline no matter what part I’m actually working in. I’m thinking about what’s the best way to structure this API so that when I get to the template, I don’t have to do so much manipulating of the data that I receive on that end of it. It’s definitely made me overall a better engineer, I feel like it
Drew: If you, dear listener, would like to hear more from Mina, you can follow her on Twitter where she’s @MinaMarkham and find her personal site at mina.codes. Thanks for joining us today, Mina. Do you have any parting words?
Mina: Have a smashing night?
Drew: Great.
(il)
Website Design & SEO Delray Beach by DBL07.co
Delray Beach SEO
Via http://www.scpie.org/smashing-podcast-episode-18-with-mina-markham-how-can-i-learn-react/
source https://scpie.weebly.com/blog/smashing-podcast-episode-18-with-mina-markham-how-can-i-learn-react
0 notes
Text
Smashing Podcast Episode 18 With Mina Markham: How Can I Learn React?
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? Drew McLellan chats to Mina Markham to find out.
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? I spoke to Mina Markham to find out.
Show Notes
Weekly Update
Transcript
Drew McLellan: She is a front-end architect, conference speaker and organizer, and lover of design systems. Her work on the Pantsuit patent library for Hillary Clinton’s Hillary for America presidential campaign marked a watershed for design systems within the industry and was featured on publications, such as Wired, Fast Company, and Communication Arts. Like many of us, she writes code for a living, currently as a senior engineer at Slack. So we know she’s a talented and forward thinking developer, but did you know she was once mistaken for Patrick Swayze? My smashing friends, please welcome Mina Markham. Hi Mina. How are you?
Mina Markham: I’m smashing.
Drew: Good to hear. Now, sometimes on the Smashing Podcast, we talk to people about the subject that they’re best known for. And sometimes it’s fun just to talk about something a bit tangential. Now, I could chat to you all day about pattern libraries, design systems, the amazing work you’ve done in that particular area, and I could talk to you about subjects that you’ve perhaps spoken about, events, such as the Event Apart, things like art direction. And we could obviously talk about CSS until the cows come home. But you tweeted a few days ago, and I realized that we’re actually both in the same boat in that we’re both experienced front-end engineers and we’re both recently started working with React. So before we get onto React itself, where were you coming to up to this point? Had you been working with other libraries and frameworks for JavaScript development?
Mina: No, actually I’ve been doing mostly vanilla JavaScript for a while. And before that, of course I got into JavaScript. Let me rephrase that. I started working with Java script using jQuery because it made the most sense to me. It was something that was very easily for me to parse to figure out what was happening. And then from there I backtracked to doing just vanilla, plain JavaScript, ESX, and I hadn’t really gotten too much into the framework wars. I had no, like I had no favorite. I had no dog in the fight. I was like, “For you, React, whatever. I don’t really care.” But times change.
Drew: And in this sort of way of working with vanilla JavaScript, because I’ve done a lot of that myself as well. I’ve worked with various frameworks. I’ve done a lot with jQuery back in the day. I worked with YUI, Yahoo User Interface Library. Had you felt many of the pain points that something like React’s architecture tries to address?
Mina: I don’t think I ever had. I spent most of my career making websites versus web apps and things like that. So everything I did was pretty static up to a certain extent. So I never really had to deal with state management, things like that. So the pain points that React attempts to solve I had never really applied to the kind of work that I did.
Drew: Generally speaking, what’s the sort of nature of the projects that you’ve with React so far?
Mina: It was actually only been the one project, which I’m currently working on and I can’t give away too many details because public company and all that good stuff.
Drew: Of course.
Mina: But essentially what I’m trying to do is I’m trying to use React to, it’s a very interactive sort of product where I need people to be able to enter in and save data at a certain state and then manipulate it and generate something else with said data. And that’s just something that it’s not simple DOM manipulation at that point. It really is a lot of more complex, front-end manage of data and managing the state of said data. So there really was no other alternative but to use some kind of library that attempts to solve that problem. I knew I wouldn’t be able to get past with just plain JavaScript. I contemplated maybe handling somethings on the server side, but again, due to the very interactive nature of what I’m working with, it need to be in the client. And so we already use React at Slack for various other things. And so I was like, “Okay, well we just should go ahead and adopt the same thing that the rest of the parent the companies are using and go from there.”
Drew: One of the things that I’m always seems to be a pain point with people picking up React is getting to grips with the tool chain that’s needed to get things working, Webpack being an obvious elephant in the room. Have you had to do much configuration of the tool chain or like me if you had the lUXury of teammates doing it for you?
Mina: Oh, I love the infrastructure team at Slack the data. The front-end infrastructure team at Slack, they handled all of that. I didn’t have to think about it. It was great. Because I tried to learn React before in the past. Usually the way I learn best is by actually working and implementing on things. And we use React to build a lot of hillaryclinton.com back in 2016. So it’s not like I’ve never worked with people who use it. It’s just my work never directly needed me to get involved. But that code base was very complex and very sophisticated, and there was so much happening that there’s such a barrier to entry to try to learn anything in there if you didn’t already know how React and RedUX and all of that works, which I didn’t. So I wasn’t really effective in learning in that environment.
Mina: Luckily, here I do have people to like take away a little bit more of the complex bits of it. I don’t have to worry about the Webpack config at all. That’s been set up. That’s been tried and tested and ready to go. I am in a similar boat where we also use RedUX in addition to React, which I didn’t realize were two different things. I didn’t know which part handled which. Dropping into a code base like that, it was a little disorienting because I didn’t realize that they were all the same thing. I had people who were seasoned React developers telling me, “Oh, we also are using RedUX, which makes it a little bit harder for you to really learn what React all can do if you’re starting from scratch.” And I never quite knew what they meant by that because I didn’t know what they were talking about.
Mina: To answer your original question, I am still having a little bit more of a little bit barrier to entry, because it’s not just learning React. I’m having to learn React and also how to use the RedUX store. So those two things at the same time can be a little much.
Drew: Yeah, I’ve found exactly the same thing coming into an existing code base as my first React project that uses RedUX. And I think as is the nature of any of these sort of technologies when they’re young, they iterate really quickly, and what’s best practice at one point, 6 months later has moved on and there’s a different way of doing things. And when you have a code base that spans many years, you can sometimes have different styles of implementing things in there. It doesn’t always keep sync. And of course, if you’re following a tutorial or whatever to learn, you’re reading books, you’re using resources, they will be in the most modern version of how to do things. And that doesn’t necessarily nit to what you see when you look at an existing, mature product. Is that something you’d experienced at all, or have you managed to keep your code base really up to date?
Mina: I think that is something that I definitely have been experiencing. When I tried to learn how to do React on my own, I looked at various tutorials and things like that. And I noticed, or at least people have told me who have worked who have been working with me that some of the things that we do or kind of anti-pattern or not quite how things work now, because this code base is slightly, well mature us relative, but it’s a few years old. And so there are some ways that I guess are easier to do things than the way we’re doing them currently because this was written years ago. So it’s a little bit of a treadmill trying to keep up with current times and make sure I want to do things the best way, but also I don’t want to break an established code base because I want to play around with stuff.
Drew: Obviously, one of the things with React that people like you and I are coming to it, it can feel a bit jarring as this whole thing with JSX. Are you using JSX in your project?
Mina: We are. I am using JSX.
Drew: Have you made peace with that?
Mina: I fell like a little small piece of me dies every time I open one of those files. It still feels sacrilege to put my HTML in the JavaScript file. I know that’s kind of revolutionary and the whole point, but it just feels off to me that I’m writing my markup in a JavaScript file. I’ve made peace with it, but every time I do it, I’m just like, “…” Separation concerns, it is a thing. I’d like it back, please.
Drew: It’s a valid point, isn’t it? My background when I was starting to work more seriously with JavaScript, and this was probably when I was back at Yahoo, things were very much on the model of server rendered HTML pages and then taking a progressive enhancement approach, layering JavaScript on top to enhance the interface. And if the state of something in the interface needed to change, your code had to know about all the parts of the interface that it needed to update, which obviously leads you to a tightly coupled approach with these big monolithic views where the code you write needs to know about all the other code around it. And I guess that doesn’t really lend itself to a componentized approach which you would take when working with a pattern library or a design system, which is more to your area of particular expertise. I guess, React lends itself more to that approach, does it?
Mina: I think it does, especially with the being able to couple the very specific CSS to one JSX or one React component. And so that way it makes it much easier to separate or only take what you need for the library and leave the rest, whereas a pattern library or design system that attempts to do something more monolithic with just one big style CSS file or something like that, it does make it a lot difficult. You kind of have to take it all or nothing. So I do appreciate that React allows us to do more individualized, more componentized way of development, even if I still wish there was a way for me to do truly separate my presentation layer and my content layer from my interactivity layer. But maybe that’s just me being a little bit old school in that sense.
Drew: I definitely feel the pain there. The idea is that, come and correct me if I’m wrong, my understanding is that rather than separating the technologies, the CSS, and the JavaScript, and the HTML, it’s separating the functionality. So everything that is one component all exist together-
Mina: Yeah.
Drew: … which I guess is useful if that component then is no longer needed. You can just delete it, and it’s gone, and it doesn’t leave a footprint around your app. That’s not always the case with CSS though. How are you working with CSS with React? Have You looked at things like styled-components or anything like that?
Mina: No, we haven’t. I’ve heard of styled-components, but I’ve never quite really investigated them very fully to be perfectly honest. So the way that we’re working with CSS with React is we write Less, and we just have a Less file attached to each individual component that gets imported into that component. And then it gets bonded up via Webpack and served to the client.
Drew: Are you using a system like BEM or something to turn namespace?
Mina: Yeah. We’re using BEM for namespacing, although the adherence to it is kind of varied depending on who’s writing what. But we try to use a BEM namespacing pattern to make it a little bit clearer what the purpose of each individual class and component is.
Drew: And does that seem to be working successfully for you?
Mina: I think so. Occasionally it kind of has the same old problem of I sometimes don’t know how to name something. After a while daily things has always and will always be a difficult thing for master. So that’s the only issue I have with is I occasionally I have no idea what I should call a particular component.
Drew: Definitely. That’s a constant battle, isn’t it, how to out the name things?
Mina: Yeah.
Drew: I always end up when working on a new feature or something like that, you give a component and all the classes and everything the name that the feature has got at the moment. And then by the time you come to launch, it’s been renamed something else. So you have references to the old name in the code and the interface has the new name. And …
Mina: I try to always name things based on the function or the purpose of it versus things that are a little bit more ephemeral, because it’s less likely that the actual purpose of this component will change. I forgot to mention, but in addition to using BEM, I guess we use BEMITs if you’re familiar with that. It’s basically the ITCSS plus BEM, both of which were created by Harry Roberts. So I use Hungarian notation to denote whether or not something is a component, versus a layout object, versus like a larger pattern comprised of multiple components. And then from there we use the BEM convention to signify like the block element and all that.
Drew: And have you had to do much refactoring and deleting of components and things in your code base and had to deal with the issue of CSS getting left behind?
Mina: Yeah. So the non-React part of my job, of maintaining slack.com is that’s all just a bunch of Less files that are being compiled for CSS. And I guarantee you, there’s a lot of zombie code in there, because we definitely iterate above things a lot in the time I’ve been there. And we don’t always have time to go back and do the cleanup versus when we redesign a page or something. So it’s overdue for an audit, I’ll say that.
Drew: This is something that we’ve just been looking at in our React project, looking at how we approach CSS. At the moment, we have a few big, global CSS files for the whole of the app, and we do get this situation where our bundle size is just growing, and growing, and growing and never gets any smaller, even though things do get removed. So we’ve been looking at things like styled-components, Tailwind as well is another option that we’re really seriously considering. Have you looked at tailwind much?
Mina: I haven’t looked at it a lot. I’ve been curious about it, but again, I’ve never really had time to dig in to actually see if it’s something that I want to try to bring into our code base.
Drew: I was actually quite surprised, because like you, I’m a bit old school with how to do these things. I like nice separation of concerns. And I like to write my CSS in CSS, and of course the approach with Tailwind is you have all these class names, which feel a bit like inline styles that you’re applying. And if it feels dirty.
Mina: Yeah.
Drew: And I volunteered within the team, we each which took a technology to investigate if they’d be a good fit for our problems, and I volunteered to look at Tailwind because I was absolutely certain I was going to hate it.
Mina: No, no.
Drew: But it turns out I actually think it solves a lot of problems. I was quite impressed.
Mina: Yeah. I’ve sort of come around to a similar way of thinking, because I in the past would much prefer to have one class comprise all of the styles I needed for a particular component and not do a class per property, as I believe Tailwind does or languages like it do. For the similar reasons, it felt very much like, “Well, I’m just running inline CSS at this point. Why would I do this?” But as I’ve been developing more and more, inside of our Slack design system, I created a bunch of what I call utility classes that do things like add a bit of margin with a pattern. I’ve noticed that more and more, I’m using those classes in addition to the component classes. So I’m like, “Okay, well maybe I should revisit this whole to doing a CSS as a one declaration at a time.” I don’t know if I’d go that far, but it’s definitely worth considering.
Drew: Computing seems to flip flop in terms of trends between thin clients and fat clients solutions. We started with mainframes with terminals, and then the PC era with windows and office and all these sort of big applications. And they were all getting really slow, and than the web came along, and that was just a browser, and all the work was being done on the server. And it was all fast and snappy again. And now we’ve gone back to putting all that work back in the browser with everything being done with JavaScript, things like React and the JAMstack approach where we’re back to a sort of fat client. I sometimes worry that we’re asking too much of the browser. Is this a mistake? Are we asking too much of the browser trying to do all this stuff in React?
Mina: I want to say yes with the caveat of, again, my experience is very much contained to mostly static websites. I don’t do a lot of product development. So maybe in that realm, this makes more sense. But from my perspective, I feel like we’re a lot of the times using a hatchet when we just need a butter knife. I don’t know why we need put all this in the browser, put so much work and so much pressure on the client. I feel like we could do this much simpler. One of the things that always made me a little hesitant to use React, or I say hesitant, but what I mean when it made me viscerally angry and I actively opposed, was when I would go to a website and literally nothing would render because there was one error or something, Like, “Really? The entire page is broken because one function broke down?”
Mina: It just kind of annoyed me that a lot of times it was an all or nothing approach. One of the talks that I gave at AEA in the past and other places in the past was talking about how to include progressive enhancement and not just your development, but also of art direction and design of sites. And I would point out specifically examples of websites that didn’t do progressive enhancement or any kind of graceful degradation. It was like either you have the JavaScript running in the browser or you get absolutely nothing. And it would be like just a simple site that represent information about the history of web design, which was one of the sites actually talked about, the history of web design from like 1990 until now. It was a beautiful website with lots of timelines, animation of things. But it also could have been rendered statically with just a list. There were steps in between showing nothing and showing that beautifully enhanced experience that I think got lost because of the way we’ve been approaching modern web development now.
Drew: So would you say there are absolutely some categories of projects that suit a solution like React and some where it really shouldn’t be used and you should be using more traditional methods?
Mina: I think that if your site particularly is mostly static, it was just serving up information, I guess I don’t understand why you need a project like React to render something that doesn’t have a lot of interaction beyond just DOM manipulation. I guess I don’t see what benefit you get from that. Again, I may not be working on the appropriate projects. I may not just have seen or found that use case, but I’m having a hard time seeing if it’s just mostly static site, presenting content, not a lot interaction, not a lot of interaction beyond manipulated DOM and doing animations. I don’t see how having a React library helps you accomplish that goal.
Drew: It’s interesting because I’m not bad talking it because I haven’t actually used it, but I see a lot of Gatsby projects and Gatsby being a static site generator that uses a React front-end in it. And I see all the examples of the themes and things they have available are all content based sites, or blogs, and a recipe site, and a portfolio, and these sort of things. And there’s something I think actually that this isn’t necessarily the right fit for something like React. Why isn’t this being statically rendered and then progressively enhance?
Mina: Yeah.
Drew: It’s not software.
Mina: Yeah. I haven’t actually used Gatsby either. I’ve heard plenty of great things about it, but that’s probably one of the examples I would think of where I’m like, “Okay, I guess I’m just not seeing why that tool is necessary to do that particular job.” Again, I don’t know. Maybe it’s just because more people are comfortable writing in React when they are writing new something else, and it’s just providing a tool that meets people where they are. I’ve heard great things about static site generators that use React for people who have used them and love them, but it’s not a use case that I would have immediately been like, “Oh, that makes sense.”
Drew: It seems like there’s always been this battle between what we would call a website and what you might call a web app. And the chasm between the two seems to be getting wider, and wider, and wider, whereas a progressive enhancement approach tries to bridge the gap by taking something static and adding JavaScript and adding interactivity. It seems that things like React are ideally suited for software that you’re running in the browser. Would you agree with that?
Mina: I would definitely agree with that because it feels like it’s was built for that type of environment; it was built for running software. It was built by Facebook for Facebook. So it was built for a product. It was built for running whatever you call a web app in the browser and not necessarily for the type of work that, as I mentioned, I’m used to doing. So I think in those scenarios, it definitely makes a lot of sense to use it if you’re building a more complex, more sophisticated piece of software that’s meant to run inside of a browser. But if you’re building a marketing agency site or whatever, I guess I would still struggle to see why it will be necessary there.
Drew: So are we giving people permission to still build decent, statically rendered websites?
Mina: I would love to see more of that happen. I feel like that’s kind of gotten lost and it’s sort of lost its, if it ever was cool or whatever. I feel like we’ve lost that part of web development. It’s so funny: you and I both said that we’re kind of old school, and I laugh at that because I’ve actually been doing web development for, what, six years now? How am I old school? It hasn’t been that long for me. And yet somehow I’m part of the old guard who doesn’t like new and shiny things. I don’t get it.
Drew: So in fact React has actually existed for the whole time that you’ve been a web developer.
Mina: Maybe I just have an old soul. I don’t know.
Drew: I think that’s probably the case. I’ve not looked personally at, there are service side rendered approaches you can take with React apps. Have you experienced any of those?
Mina: I haven’t experienced any them. I briefly looked into them for the project I’m currently working on, because I feel like there’s parts of the operation that would work better on a server versus in the clients. But I think because of my limited knowledge and the fact that the code base is a little more complicated than I can understand, I wasn’t quite able to figure out how to make that part work. I would love to figure it out eventually, but I spent a day digging into it. I was like, “You know what? I’m not grokking this away I need to be. So I’m just going to back up and take a different route.”
Drew: Yeah. I think we’ve all been there.
Mina: Yeah. I went down a path. I was like, “Oh, this is dark and scary. Let’s reverse. Let’s reverse.”
Drew: Step away from the code.
Mina: Yes.
Drew: So you’ve been very diplomatic and polite about React so far. I sense that there’s some tension bubbling under the surface a bit. Come on. Tell us what you really feel.
Mina: I have been polite and diplomatic, mostly because the Reacts fan base can be a little mean sometimes, and I would rather not have them come for me. So please, React is great. It’s wonderful. Use it for what you want to use it for. I kid, but even that tweet that you mentioned at the beginning of this podcast where I think what you said is that I don’t hate it. I don’t love it, but I don’t hate it. Even that statement, I got people, there was no vitriol, but it was more they where ready to leap to the defense and say, “Well, I love it because X, Y, Z.” I’m like, “I didn’t say it was bad. I just said that I’m meh about the whole thing.” But apparently being meh is not okay. I have to love it.
Mina: So that’s why I probably have been a bit more diplomatic than I would ordinarily be, just because I don’t want people to think that I’m bad mouthing it, because I’m not. It has a place in more web development. It serves a function. It does its job well. People love it. It’s just not a tool that I’ve ever had or wanted to use until now.
Drew: Yeah. Things can get very tribal, can’t they, with people feeling like they have to take one side or another, and you’re either absolutely for something or absolutely against something? And I’m not sure it serves a good purpose, and I don’t think it really moves us forward as an industry and as a community to do that.
Mina: Yeah. It’s really odd. It’s fascinating to watch from just a sociological standpoint, but it’s often just really like weird to observe. It’s like I’m not allowed to just be, like I said, neutral about certain things. I have to have a strong opinion, which is I don’t think healthy. What’s the term, “Strong opinions, loosely held?” That’s kind of the way I go about things. I feel strongly about certain things, but it’s not like you can’t change my mind. Where I feel like some people, their identity gets wrapped up into certain aspects of it ,that if you are not for whatever they’ve chosen to identify with, it’s a personal slight versus just, I don’t care about this particular topic, or tool, or whatever.
Drew: Yes. I don’t know if it’s made worse by the fact that we all are sort of tending to specialize a lot more in particular parts of the stack. And I know there are people who are React developers. They would call themselves a React developer because that’s what they work in. And they wouldn’t necessarily write any vanilla Java script or wouldn’t use Vue or whatever. React is their world. So I guess it almost feels like an attack on their entire career to say, “I don’t like React.” Well, they’re really invested in making you like React or whatever the technology may be.
Mina: I will admit to being one of those people in the past. Actually, probably it was mostly about SASS, I believe. I was very much on the team of doing SASS as a preprocessor and all other preprocessors are trash. I don’t want to talk about them. I don’t want to deal with them. And I realized that was a very narrow way to look at things. Use the appropriate tool for the job. Whatever makes you more productive, that’s the right tool. It doesn’t really matter what it is.
Drew: Are there any technologies that we work with that don’t have that sort of tribal feel? Is there anything that people are just happy to use or not use? I can’t think of anything.
Mina: Wow. No one has opinions about markup, actually.
Drew: No.
Mina: I feel like no one has opinions about like actual HTML and just markup, just like, “It’s there.” They use it. But people have strong opinions about CSS and how it’s either terrible or wonderful, and the preprocessor wars that don’t really happen all that much anymore, and then of course, all of the tribalism within the various JavaScript libraries.
Drew: So you would say your journey so far with React is still just, “It’s a tool. It does its job?”
Mina: It went from a curiosity to active and visceral dislike because of how prevalent it was and how I unnecessary I thought that that prevalence was to meh. I’m now with meh, which again does not mean I hate it. It just means …
Drew: I think that’s a good place to be. I think we’re probably all sort of stronger as technologists if we understand the value of a particular technology for its purpose. We can evaluate what is good for what circumstance and pick the right tool for the job.
Mina: Yeah. And that’s kind of where I’ve arrived at this point in my career where I don’t get really invested in any particular language, or technology, or whatever, because it’s like, “Just whatever tool is most appropriate for what you’re trying to do, then use that.” I’ve learned that there’s a place for everything; there’s a time and a place to do everything. And up until recently, there was no real time or place for me to use this React librarian, and now there is.
Drew: I think that’s a good place to be. So I’ve been learning all about React lately as you have in the day job. Is there anything else that you’ve been learning about lately?
Mina: I’ve actually learned ironically, which is I think another language that has originated at Facebook, I’ve been doing a lot of Hack development, mostly because that’s what I use at Slack, at my day job. Learning Hack paved the way for me to get more comfortable using React because they follow very similar patterns, except one is server side and one’s not. So that, along with just in general, I’ve been learning more about the back-end and how that works for various different reasons. And I’ve been stretching myself for the past couple years and getting more and more outside of my comfortable zone. Design systems, libraries, that’s very much my world, and I feel very good and comfortable in that world. But I’m stepping outside of it and doing a lot more server side logic, and API development, and data modeling, and all of that. I’ve been doing a lot on that for the past year as well.
Drew: I find that the more I understand about the whole stack about back-end stuff in front-end stuff, each one helps my knowledge of the other. I find I write better front-end code by having written back-end code and understanding-
Mina: Yeah. I think I feel the same way. Now that I have a better idea of, like we said, the whole stack of how we get from the data to the end client. I find that I’m thinking about the entire pipeline no matter what part I’m actually working in. I’m thinking about what’s the best way to structure this API so that when I get to the template, I don’t have to do so much manipulating of the data that I receive on that end of it. It’s definitely made me overall a better engineer, I feel like it
Drew: If you, dear listener, would like to hear more from Mina, you can follow her on Twitter where she’s @MinaMarkham and find her personal site at mina.codes. Thanks for joining us today, Mina. Do you have any parting words?
Mina: Have a smashing night?
Drew: Great.
(il)
Website Design & SEO Delray Beach by DBL07.co
Delray Beach SEO
source http://www.scpie.org/smashing-podcast-episode-18-with-mina-markham-how-can-i-learn-react/ source https://scpie1.blogspot.com/2020/06/smashing-podcast-episode-18-with-mina.html
0 notes
Text
Smashing Podcast Episode 18 With Mina Markham: How Can I Learn React?
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? Drew McLellan chats to Mina Markham to find out.
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? I spoke to Mina Markham to find out.
Show Notes
Weekly Update
Transcript
Drew McLellan: She is a front-end architect, conference speaker and organizer, and lover of design systems. Her work on the Pantsuit patent library for Hillary Clinton’s Hillary for America presidential campaign marked a watershed for design systems within the industry and was featured on publications, such as Wired, Fast Company, and Communication Arts. Like many of us, she writes code for a living, currently as a senior engineer at Slack. So we know she’s a talented and forward thinking developer, but did you know she was once mistaken for Patrick Swayze? My smashing friends, please welcome Mina Markham. Hi Mina. How are you?
Mina Markham: I’m smashing.
Drew: Good to hear. Now, sometimes on the Smashing Podcast, we talk to people about the subject that they’re best known for. And sometimes it’s fun just to talk about something a bit tangential. Now, I could chat to you all day about pattern libraries, design systems, the amazing work you’ve done in that particular area, and I could talk to you about subjects that you’ve perhaps spoken about, events, such as the Event Apart, things like art direction. And we could obviously talk about CSS until the cows come home. But you tweeted a few days ago, and I realized that we’re actually both in the same boat in that we’re both experienced front-end engineers and we’re both recently started working with React. So before we get onto React itself, where were you coming to up to this point? Had you been working with other libraries and frameworks for JavaScript development?
Mina: No, actually I’ve been doing mostly vanilla JavaScript for a while. And before that, of course I got into JavaScript. Let me rephrase that. I started working with Java script using jQuery because it made the most sense to me. It was something that was very easily for me to parse to figure out what was happening. And then from there I backtracked to doing just vanilla, plain JavaScript, ESX, and I hadn’t really gotten too much into the framework wars. I had no, like I had no favorite. I had no dog in the fight. I was like, “For you, React, whatever. I don’t really care.” But times change.
Drew: And in this sort of way of working with vanilla JavaScript, because I’ve done a lot of that myself as well. I’ve worked with various frameworks. I’ve done a lot with jQuery back in the day. I worked with YUI, Yahoo User Interface Library. Had you felt many of the pain points that something like React’s architecture tries to address?
Mina: I don’t think I ever had. I spent most of my career making websites versus web apps and things like that. So everything I did was pretty static up to a certain extent. So I never really had to deal with state management, things like that. So the pain points that React attempts to solve I had never really applied to the kind of work that I did.
Drew: Generally speaking, what’s the sort of nature of the projects that you’ve with React so far?
Mina: It was actually only been the one project, which I’m currently working on and I can’t give away too many details because public company and all that good stuff.
Drew: Of course.
Mina: But essentially what I’m trying to do is I’m trying to use React to, it’s a very interactive sort of product where I need people to be able to enter in and save data at a certain state and then manipulate it and generate something else with said data. And that’s just something that it’s not simple DOM manipulation at that point. It really is a lot of more complex, front-end manage of data and managing the state of said data. So there really was no other alternative but to use some kind of library that attempts to solve that problem. I knew I wouldn’t be able to get past with just plain JavaScript. I contemplated maybe handling somethings on the server side, but again, due to the very interactive nature of what I’m working with, it need to be in the client. And so we already use React at Slack for various other things. And so I was like, “Okay, well we just should go ahead and adopt the same thing that the rest of the parent the companies are using and go from there.”
Drew: One of the things that I’m always seems to be a pain point with people picking up React is getting to grips with the tool chain that’s needed to get things working, Webpack being an obvious elephant in the room. Have you had to do much configuration of the tool chain or like me if you had the lUXury of teammates doing it for you?
Mina: Oh, I love the infrastructure team at Slack the data. The front-end infrastructure team at Slack, they handled all of that. I didn’t have to think about it. It was great. Because I tried to learn React before in the past. Usually the way I learn best is by actually working and implementing on things. And we use React to build a lot of hillaryclinton.com back in 2016. So it’s not like I’ve never worked with people who use it. It’s just my work never directly needed me to get involved. But that code base was very complex and very sophisticated, and there was so much happening that there’s such a barrier to entry to try to learn anything in there if you didn’t already know how React and RedUX and all of that works, which I didn’t. So I wasn’t really effective in learning in that environment.
Mina: Luckily, here I do have people to like take away a little bit more of the complex bits of it. I don’t have to worry about the Webpack config at all. That’s been set up. That’s been tried and tested and ready to go. I am in a similar boat where we also use RedUX in addition to React, which I didn’t realize were two different things. I didn’t know which part handled which. Dropping into a code base like that, it was a little disorienting because I didn’t realize that they were all the same thing. I had people who were seasoned React developers telling me, “Oh, we also are using RedUX, which makes it a little bit harder for you to really learn what React all can do if you’re starting from scratch.” And I never quite knew what they meant by that because I didn’t know what they were talking about.
Mina: To answer your original question, I am still having a little bit more of a little bit barrier to entry, because it’s not just learning React. I’m having to learn React and also how to use the RedUX store. So those two things at the same time can be a little much.
Drew: Yeah, I’ve found exactly the same thing coming into an existing code base as my first React project that uses RedUX. And I think as is the nature of any of these sort of technologies when they’re young, they iterate really quickly, and what’s best practice at one point, 6 months later has moved on and there’s a different way of doing things. And when you have a code base that spans many years, you can sometimes have different styles of implementing things in there. It doesn’t always keep sync. And of course, if you’re following a tutorial or whatever to learn, you’re reading books, you’re using resources, they will be in the most modern version of how to do things. And that doesn’t necessarily nit to what you see when you look at an existing, mature product. Is that something you’d experienced at all, or have you managed to keep your code base really up to date?
Mina: I think that is something that I definitely have been experiencing. When I tried to learn how to do React on my own, I looked at various tutorials and things like that. And I noticed, or at least people have told me who have worked who have been working with me that some of the things that we do or kind of anti-pattern or not quite how things work now, because this code base is slightly, well mature us relative, but it’s a few years old. And so there are some ways that I guess are easier to do things than the way we’re doing them currently because this was written years ago. So it’s a little bit of a treadmill trying to keep up with current times and make sure I want to do things the best way, but also I don’t want to break an established code base because I want to play around with stuff.
Drew: Obviously, one of the things with React that people like you and I are coming to it, it can feel a bit jarring as this whole thing with JSX. Are you using JSX in your project?
Mina: We are. I am using JSX.
Drew: Have you made peace with that?
Mina: I fell like a little small piece of me dies every time I open one of those files. It still feels sacrilege to put my HTML in the JavaScript file. I know that’s kind of revolutionary and the whole point, but it just feels off to me that I’m writing my markup in a JavaScript file. I’ve made peace with it, but every time I do it, I’m just like, “…” Separation concerns, it is a thing. I’d like it back, please.
Drew: It’s a valid point, isn’t it? My background when I was starting to work more seriously with JavaScript, and this was probably when I was back at Yahoo, things were very much on the model of server rendered HTML pages and then taking a progressive enhancement approach, layering JavaScript on top to enhance the interface. And if the state of something in the interface needed to change, your code had to know about all the parts of the interface that it needed to update, which obviously leads you to a tightly coupled approach with these big monolithic views where the code you write needs to know about all the other code around it. And I guess that doesn’t really lend itself to a componentized approach which you would take when working with a pattern library or a design system, which is more to your area of particular expertise. I guess, React lends itself more to that approach, does it?
Mina: I think it does, especially with the being able to couple the very specific CSS to one JSX or one React component. And so that way it makes it much easier to separate or only take what you need for the library and leave the rest, whereas a pattern library or design system that attempts to do something more monolithic with just one big style CSS file or something like that, it does make it a lot difficult. You kind of have to take it all or nothing. So I do appreciate that React allows us to do more individualized, more componentized way of development, even if I still wish there was a way for me to do truly separate my presentation layer and my content layer from my interactivity layer. But maybe that’s just me being a little bit old school in that sense.
Drew: I definitely feel the pain there. The idea is that, come and correct me if I’m wrong, my understanding is that rather than separating the technologies, the CSS, and the JavaScript, and the HTML, it’s separating the functionality. So everything that is one component all exist together-
Mina: Yeah.
Drew: … which I guess is useful if that component then is no longer needed. You can just delete it, and it’s gone, and it doesn’t leave a footprint around your app. That’s not always the case with CSS though. How are you working with CSS with React? Have You looked at things like styled-components or anything like that?
Mina: No, we haven’t. I’ve heard of styled-components, but I’ve never quite really investigated them very fully to be perfectly honest. So the way that we’re working with CSS with React is we write Less, and we just have a Less file attached to each individual component that gets imported into that component. And then it gets bonded up via Webpack and served to the client.
Drew: Are you using a system like BEM or something to turn namespace?
Mina: Yeah. We’re using BEM for namespacing, although the adherence to it is kind of varied depending on who’s writing what. But we try to use a BEM namespacing pattern to make it a little bit clearer what the purpose of each individual class and component is.
Drew: And does that seem to be working successfully for you?
Mina: I think so. Occasionally it kind of has the same old problem of I sometimes don’t know how to name something. After a while daily things has always and will always be a difficult thing for master. So that’s the only issue I have with is I occasionally I have no idea what I should call a particular component.
Drew: Definitely. That’s a constant battle, isn’t it, how to out the name things?
Mina: Yeah.
Drew: I always end up when working on a new feature or something like that, you give a component and all the classes and everything the name that the feature has got at the moment. And then by the time you come to launch, it’s been renamed something else. So you have references to the old name in the code and the interface has the new name. And …
Mina: I try to always name things based on the function or the purpose of it versus things that are a little bit more ephemeral, because it’s less likely that the actual purpose of this component will change. I forgot to mention, but in addition to using BEM, I guess we use BEMITs if you’re familiar with that. It’s basically the ITCSS plus BEM, both of which were created by Harry Roberts. So I use Hungarian notation to denote whether or not something is a component, versus a layout object, versus like a larger pattern comprised of multiple components. And then from there we use the BEM convention to signify like the block element and all that.
Drew: And have you had to do much refactoring and deleting of components and things in your code base and had to deal with the issue of CSS getting left behind?
Mina: Yeah. So the non-React part of my job, of maintaining slack.com is that’s all just a bunch of Less files that are being compiled for CSS. And I guarantee you, there’s a lot of zombie code in there, because we definitely iterate above things a lot in the time I’ve been there. And we don’t always have time to go back and do the cleanup versus when we redesign a page or something. So it’s overdue for an audit, I’ll say that.
Drew: This is something that we’ve just been looking at in our React project, looking at how we approach CSS. At the moment, we have a few big, global CSS files for the whole of the app, and we do get this situation where our bundle size is just growing, and growing, and growing and never gets any smaller, even though things do get removed. So we’ve been looking at things like styled-components, Tailwind as well is another option that we’re really seriously considering. Have you looked at tailwind much?
Mina: I haven’t looked at it a lot. I’ve been curious about it, but again, I’ve never really had time to dig in to actually see if it’s something that I want to try to bring into our code base.
Drew: I was actually quite surprised, because like you, I’m a bit old school with how to do these things. I like nice separation of concerns. And I like to write my CSS in CSS, and of course the approach with Tailwind is you have all these class names, which feel a bit like inline styles that you’re applying. And if it feels dirty.
Mina: Yeah.
Drew: And I volunteered within the team, we each which took a technology to investigate if they’d be a good fit for our problems, and I volunteered to look at Tailwind because I was absolutely certain I was going to hate it.
Mina: No, no.
Drew: But it turns out I actually think it solves a lot of problems. I was quite impressed.
Mina: Yeah. I’ve sort of come around to a similar way of thinking, because I in the past would much prefer to have one class comprise all of the styles I needed for a particular component and not do a class per property, as I believe Tailwind does or languages like it do. For the similar reasons, it felt very much like, “Well, I’m just running inline CSS at this point. Why would I do this?” But as I’ve been developing more and more, inside of our Slack design system, I created a bunch of what I call utility classes that do things like add a bit of margin with a pattern. I’ve noticed that more and more, I’m using those classes in addition to the component classes. So I’m like, “Okay, well maybe I should revisit this whole to doing a CSS as a one declaration at a time.” I don’t know if I’d go that far, but it’s definitely worth considering.
Drew: Computing seems to flip flop in terms of trends between thin clients and fat clients solutions. We started with mainframes with terminals, and then the PC era with windows and office and all these sort of big applications. And they were all getting really slow, and than the web came along, and that was just a browser, and all the work was being done on the server. And it was all fast and snappy again. And now we’ve gone back to putting all that work back in the browser with everything being done with JavaScript, things like React and the JAMstack approach where we’re back to a sort of fat client. I sometimes worry that we’re asking too much of the browser. Is this a mistake? Are we asking too much of the browser trying to do all this stuff in React?
Mina: I want to say yes with the caveat of, again, my experience is very much contained to mostly static websites. I don’t do a lot of product development. So maybe in that realm, this makes more sense. But from my perspective, I feel like we’re a lot of the times using a hatchet when we just need a butter knife. I don’t know why we need put all this in the browser, put so much work and so much pressure on the client. I feel like we could do this much simpler. One of the things that always made me a little hesitant to use React, or I say hesitant, but what I mean when it made me viscerally angry and I actively opposed, was when I would go to a website and literally nothing would render because there was one error or something, Like, “Really? The entire page is broken because one function broke down?”
Mina: It just kind of annoyed me that a lot of times it was an all or nothing approach. One of the talks that I gave at AEA in the past and other places in the past was talking about how to include progressive enhancement and not just your development, but also of art direction and design of sites. And I would point out specifically examples of websites that didn’t do progressive enhancement or any kind of graceful degradation. It was like either you have the JavaScript running in the browser or you get absolutely nothing. And it would be like just a simple site that represent information about the history of web design, which was one of the sites actually talked about, the history of web design from like 1990 until now. It was a beautiful website with lots of timelines, animation of things. But it also could have been rendered statically with just a list. There were steps in between showing nothing and showing that beautifully enhanced experience that I think got lost because of the way we’ve been approaching modern web development now.
Drew: So would you say there are absolutely some categories of projects that suit a solution like React and some where it really shouldn’t be used and you should be using more traditional methods?
Mina: I think that if your site particularly is mostly static, it was just serving up information, I guess I don’t understand why you need a project like React to render something that doesn’t have a lot of interaction beyond just DOM manipulation. I guess I don’t see what benefit you get from that. Again, I may not be working on the appropriate projects. I may not just have seen or found that use case, but I’m having a hard time seeing if it’s just mostly static site, presenting content, not a lot interaction, not a lot of interaction beyond manipulated DOM and doing animations. I don’t see how having a React library helps you accomplish that goal.
Drew: It’s interesting because I’m not bad talking it because I haven’t actually used it, but I see a lot of Gatsby projects and Gatsby being a static site generator that uses a React front-end in it. And I see all the examples of the themes and things they have available are all content based sites, or blogs, and a recipe site, and a portfolio, and these sort of things. And there’s something I think actually that this isn’t necessarily the right fit for something like React. Why isn’t this being statically rendered and then progressively enhance?
Mina: Yeah.
Drew: It’s not software.
Mina: Yeah. I haven’t actually used Gatsby either. I’ve heard plenty of great things about it, but that’s probably one of the examples I would think of where I’m like, “Okay, I guess I’m just not seeing why that tool is necessary to do that particular job.” Again, I don’t know. Maybe it’s just because more people are comfortable writing in React when they are writing new something else, and it’s just providing a tool that meets people where they are. I’ve heard great things about static site generators that use React for people who have used them and love them, but it’s not a use case that I would have immediately been like, “Oh, that makes sense.”
Drew: It seems like there’s always been this battle between what we would call a website and what you might call a web app. And the chasm between the two seems to be getting wider, and wider, and wider, whereas a progressive enhancement approach tries to bridge the gap by taking something static and adding JavaScript and adding interactivity. It seems that things like React are ideally suited for software that you’re running in the browser. Would you agree with that?
Mina: I would definitely agree with that because it feels like it’s was built for that type of environment; it was built for running software. It was built by Facebook for Facebook. So it was built for a product. It was built for running whatever you call a web app in the browser and not necessarily for the type of work that, as I mentioned, I’m used to doing. So I think in those scenarios, it definitely makes a lot of sense to use it if you’re building a more complex, more sophisticated piece of software that’s meant to run inside of a browser. But if you’re building a marketing agency site or whatever, I guess I would still struggle to see why it will be necessary there.
Drew: So are we giving people permission to still build decent, statically rendered websites?
Mina: I would love to see more of that happen. I feel like that’s kind of gotten lost and it’s sort of lost its, if it ever was cool or whatever. I feel like we’ve lost that part of web development. It’s so funny: you and I both said that we’re kind of old school, and I laugh at that because I’ve actually been doing web development for, what, six years now? How am I old school? It hasn’t been that long for me. And yet somehow I’m part of the old guard who doesn’t like new and shiny things. I don’t get it.
Drew: So in fact React has actually existed for the whole time that you’ve been a web developer.
Mina: Maybe I just have an old soul. I don’t know.
Drew: I think that’s probably the case. I’ve not looked personally at, there are service side rendered approaches you can take with React apps. Have you experienced any of those?
Mina: I haven’t experienced any them. I briefly looked into them for the project I’m currently working on, because I feel like there’s parts of the operation that would work better on a server versus in the clients. But I think because of my limited knowledge and the fact that the code base is a little more complicated than I can understand, I wasn’t quite able to figure out how to make that part work. I would love to figure it out eventually, but I spent a day digging into it. I was like, “You know what? I’m not grokking this away I need to be. So I’m just going to back up and take a different route.”
Drew: Yeah. I think we’ve all been there.
Mina: Yeah. I went down a path. I was like, “Oh, this is dark and scary. Let’s reverse. Let’s reverse.”
Drew: Step away from the code.
Mina: Yes.
Drew: So you’ve been very diplomatic and polite about React so far. I sense that there’s some tension bubbling under the surface a bit. Come on. Tell us what you really feel.
Mina: I have been polite and diplomatic, mostly because the Reacts fan base can be a little mean sometimes, and I would rather not have them come for me. So please, React is great. It’s wonderful. Use it for what you want to use it for. I kid, but even that tweet that you mentioned at the beginning of this podcast where I think what you said is that I don’t hate it. I don’t love it, but I don’t hate it. Even that statement, I got people, there was no vitriol, but it was more they where ready to leap to the defense and say, “Well, I love it because X, Y, Z.” I’m like, “I didn’t say it was bad. I just said that I’m meh about the whole thing.” But apparently being meh is not okay. I have to love it.
Mina: So that’s why I probably have been a bit more diplomatic than I would ordinarily be, just because I don’t want people to think that I’m bad mouthing it, because I’m not. It has a place in more web development. It serves a function. It does its job well. People love it. It’s just not a tool that I’ve ever had or wanted to use until now.
Drew: Yeah. Things can get very tribal, can’t they, with people feeling like they have to take one side or another, and you’re either absolutely for something or absolutely against something? And I’m not sure it serves a good purpose, and I don’t think it really moves us forward as an industry and as a community to do that.
Mina: Yeah. It’s really odd. It’s fascinating to watch from just a sociological standpoint, but it’s often just really like weird to observe. It’s like I’m not allowed to just be, like I said, neutral about certain things. I have to have a strong opinion, which is I don’t think healthy. What’s the term, “Strong opinions, loosely held?” That’s kind of the way I go about things. I feel strongly about certain things, but it’s not like you can’t change my mind. Where I feel like some people, their identity gets wrapped up into certain aspects of it ,that if you are not for whatever they’ve chosen to identify with, it’s a personal slight versus just, I don’t care about this particular topic, or tool, or whatever.
Drew: Yes. I don’t know if it’s made worse by the fact that we all are sort of tending to specialize a lot more in particular parts of the stack. And I know there are people who are React developers. They would call themselves a React developer because that’s what they work in. And they wouldn’t necessarily write any vanilla Java script or wouldn’t use Vue or whatever. React is their world. So I guess it almost feels like an attack on their entire career to say, “I don’t like React.” Well, they’re really invested in making you like React or whatever the technology may be.
Mina: I will admit to being one of those people in the past. Actually, probably it was mostly about SASS, I believe. I was very much on the team of doing SASS as a preprocessor and all other preprocessors are trash. I don’t want to talk about them. I don’t want to deal with them. And I realized that was a very narrow way to look at things. Use the appropriate tool for the job. Whatever makes you more productive, that’s the right tool. It doesn’t really matter what it is.
Drew: Are there any technologies that we work with that don’t have that sort of tribal feel? Is there anything that people are just happy to use or not use? I can’t think of anything.
Mina: Wow. No one has opinions about markup, actually.
Drew: No.
Mina: I feel like no one has opinions about like actual HTML and just markup, just like, “It’s there.” They use it. But people have strong opinions about CSS and how it’s either terrible or wonderful, and the preprocessor wars that don’t really happen all that much anymore, and then of course, all of the tribalism within the various JavaScript libraries.
Drew: So you would say your journey so far with React is still just, “It’s a tool. It does its job?”
Mina: It went from a curiosity to active and visceral dislike because of how prevalent it was and how I unnecessary I thought that that prevalence was to meh. I’m now with meh, which again does not mean I hate it. It just means …
Drew: I think that’s a good place to be. I think we’re probably all sort of stronger as technologists if we understand the value of a particular technology for its purpose. We can evaluate what is good for what circumstance and pick the right tool for the job.
Mina: Yeah. And that’s kind of where I’ve arrived at this point in my career where I don’t get really invested in any particular language, or technology, or whatever, because it’s like, “Just whatever tool is most appropriate for what you’re trying to do, then use that.” I’ve learned that there’s a place for everything; there’s a time and a place to do everything. And up until recently, there was no real time or place for me to use this React librarian, and now there is.
Drew: I think that’s a good place to be. So I’ve been learning all about React lately as you have in the day job. Is there anything else that you’ve been learning about lately?
Mina: I’ve actually learned ironically, which is I think another language that has originated at Facebook, I’ve been doing a lot of Hack development, mostly because that’s what I use at Slack, at my day job. Learning Hack paved the way for me to get more comfortable using React because they follow very similar patterns, except one is server side and one’s not. So that, along with just in general, I’ve been learning more about the back-end and how that works for various different reasons. And I’ve been stretching myself for the past couple years and getting more and more outside of my comfortable zone. Design systems, libraries, that’s very much my world, and I feel very good and comfortable in that world. But I’m stepping outside of it and doing a lot more server side logic, and API development, and data modeling, and all of that. I’ve been doing a lot on that for the past year as well.
Drew: I find that the more I understand about the whole stack about back-end stuff in front-end stuff, each one helps my knowledge of the other. I find I write better front-end code by having written back-end code and understanding-
Mina: Yeah. I think I feel the same way. Now that I have a better idea of, like we said, the whole stack of how we get from the data to the end client. I find that I’m thinking about the entire pipeline no matter what part I’m actually working in. I’m thinking about what’s the best way to structure this API so that when I get to the template, I don’t have to do so much manipulating of the data that I receive on that end of it. It’s definitely made me overall a better engineer, I feel like it
Drew: If you, dear listener, would like to hear more from Mina, you can follow her on Twitter where she’s @MinaMarkham and find her personal site at mina.codes. Thanks for joining us today, Mina. Do you have any parting words?
Mina: Have a smashing night?
Drew: Great.
(il)
Website Design & SEO Delray Beach by DBL07.co
Delray Beach SEO
source http://www.scpie.org/smashing-podcast-episode-18-with-mina-markham-how-can-i-learn-react/ source https://scpie.tumblr.com/post/621093202677612544
0 notes
Text
Smashing Podcast Episode 18 With Mina Markham: How Can I Learn React?
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? Drew McLellan chats to Mina Markham to find out.
In this episode of the Smashing Podcast, we’re talking about learning React. What’s React like to work with, and how can experienced developers get started? I spoke to Mina Markham to find out.
Show Notes
Weekly Update
Transcript
Drew McLellan: She is a front-end architect, conference speaker and organizer, and lover of design systems. Her work on the Pantsuit patent library for Hillary Clinton’s Hillary for America presidential campaign marked a watershed for design systems within the industry and was featured on publications, such as Wired, Fast Company, and Communication Arts. Like many of us, she writes code for a living, currently as a senior engineer at Slack. So we know she’s a talented and forward thinking developer, but did you know she was once mistaken for Patrick Swayze? My smashing friends, please welcome Mina Markham. Hi Mina. How are you?
Mina Markham: I’m smashing.
Drew: Good to hear. Now, sometimes on the Smashing Podcast, we talk to people about the subject that they’re best known for. And sometimes it’s fun just to talk about something a bit tangential. Now, I could chat to you all day about pattern libraries, design systems, the amazing work you’ve done in that particular area, and I could talk to you about subjects that you’ve perhaps spoken about, events, such as the Event Apart, things like art direction. And we could obviously talk about CSS until the cows come home. But you tweeted a few days ago, and I realized that we’re actually both in the same boat in that we’re both experienced front-end engineers and we’re both recently started working with React. So before we get onto React itself, where were you coming to up to this point? Had you been working with other libraries and frameworks for JavaScript development?
Mina: No, actually I’ve been doing mostly vanilla JavaScript for a while. And before that, of course I got into JavaScript. Let me rephrase that. I started working with Java script using jQuery because it made the most sense to me. It was something that was very easily for me to parse to figure out what was happening. And then from there I backtracked to doing just vanilla, plain JavaScript, ESX, and I hadn’t really gotten too much into the framework wars. I had no, like I had no favorite. I had no dog in the fight. I was like, “For you, React, whatever. I don’t really care.” But times change.
Drew: And in this sort of way of working with vanilla JavaScript, because I’ve done a lot of that myself as well. I’ve worked with various frameworks. I’ve done a lot with jQuery back in the day. I worked with YUI, Yahoo User Interface Library. Had you felt many of the pain points that something like React’s architecture tries to address?
Mina: I don’t think I ever had. I spent most of my career making websites versus web apps and things like that. So everything I did was pretty static up to a certain extent. So I never really had to deal with state management, things like that. So the pain points that React attempts to solve I had never really applied to the kind of work that I did.
Drew: Generally speaking, what’s the sort of nature of the projects that you’ve with React so far?
Mina: It was actually only been the one project, which I’m currently working on and I can’t give away too many details because public company and all that good stuff.
Drew: Of course.
Mina: But essentially what I’m trying to do is I’m trying to use React to, it’s a very interactive sort of product where I need people to be able to enter in and save data at a certain state and then manipulate it and generate something else with said data. And that’s just something that it’s not simple DOM manipulation at that point. It really is a lot of more complex, front-end manage of data and managing the state of said data. So there really was no other alternative but to use some kind of library that attempts to solve that problem. I knew I wouldn’t be able to get past with just plain JavaScript. I contemplated maybe handling somethings on the server side, but again, due to the very interactive nature of what I’m working with, it need to be in the client. And so we already use React at Slack for various other things. And so I was like, “Okay, well we just should go ahead and adopt the same thing that the rest of the parent the companies are using and go from there.”
Drew: One of the things that I’m always seems to be a pain point with people picking up React is getting to grips with the tool chain that’s needed to get things working, Webpack being an obvious elephant in the room. Have you had to do much configuration of the tool chain or like me if you had the lUXury of teammates doing it for you?
Mina: Oh, I love the infrastructure team at Slack the data. The front-end infrastructure team at Slack, they handled all of that. I didn’t have to think about it. It was great. Because I tried to learn React before in the past. Usually the way I learn best is by actually working and implementing on things. And we use React to build a lot of hillaryclinton.com back in 2016. So it’s not like I’ve never worked with people who use it. It’s just my work never directly needed me to get involved. But that code base was very complex and very sophisticated, and there was so much happening that there’s such a barrier to entry to try to learn anything in there if you didn’t already know how React and RedUX and all of that works, which I didn’t. So I wasn’t really effective in learning in that environment.
Mina: Luckily, here I do have people to like take away a little bit more of the complex bits of it. I don’t have to worry about the Webpack config at all. That’s been set up. That’s been tried and tested and ready to go. I am in a similar boat where we also use RedUX in addition to React, which I didn’t realize were two different things. I didn’t know which part handled which. Dropping into a code base like that, it was a little disorienting because I didn’t realize that they were all the same thing. I had people who were seasoned React developers telling me, “Oh, we also are using RedUX, which makes it a little bit harder for you to really learn what React all can do if you’re starting from scratch.” And I never quite knew what they meant by that because I didn’t know what they were talking about.
Mina: To answer your original question, I am still having a little bit more of a little bit barrier to entry, because it’s not just learning React. I’m having to learn React and also how to use the RedUX store. So those two things at the same time can be a little much.
Drew: Yeah, I’ve found exactly the same thing coming into an existing code base as my first React project that uses RedUX. And I think as is the nature of any of these sort of technologies when they’re young, they iterate really quickly, and what’s best practice at one point, 6 months later has moved on and there’s a different way of doing things. And when you have a code base that spans many years, you can sometimes have different styles of implementing things in there. It doesn’t always keep sync. And of course, if you’re following a tutorial or whatever to learn, you’re reading books, you’re using resources, they will be in the most modern version of how to do things. And that doesn’t necessarily nit to what you see when you look at an existing, mature product. Is that something you’d experienced at all, or have you managed to keep your code base really up to date?
Mina: I think that is something that I definitely have been experiencing. When I tried to learn how to do React on my own, I looked at various tutorials and things like that. And I noticed, or at least people have told me who have worked who have been working with me that some of the things that we do or kind of anti-pattern or not quite how things work now, because this code base is slightly, well mature us relative, but it’s a few years old. And so there are some ways that I guess are easier to do things than the way we’re doing them currently because this was written years ago. So it’s a little bit of a treadmill trying to keep up with current times and make sure I want to do things the best way, but also I don’t want to break an established code base because I want to play around with stuff.
Drew: Obviously, one of the things with React that people like you and I are coming to it, it can feel a bit jarring as this whole thing with JSX. Are you using JSX in your project?
Mina: We are. I am using JSX.
Drew: Have you made peace with that?
Mina: I fell like a little small piece of me dies every time I open one of those files. It still feels sacrilege to put my HTML in the JavaScript file. I know that’s kind of revolutionary and the whole point, but it just feels off to me that I’m writing my markup in a JavaScript file. I’ve made peace with it, but every time I do it, I’m just like, “…” Separation concerns, it is a thing. I’d like it back, please.
Drew: It’s a valid point, isn’t it? My background when I was starting to work more seriously with JavaScript, and this was probably when I was back at Yahoo, things were very much on the model of server rendered HTML pages and then taking a progressive enhancement approach, layering JavaScript on top to enhance the interface. And if the state of something in the interface needed to change, your code had to know about all the parts of the interface that it needed to update, which obviously leads you to a tightly coupled approach with these big monolithic views where the code you write needs to know about all the other code around it. And I guess that doesn’t really lend itself to a componentized approach which you would take when working with a pattern library or a design system, which is more to your area of particular expertise. I guess, React lends itself more to that approach, does it?
Mina: I think it does, especially with the being able to couple the very specific CSS to one JSX or one React component. And so that way it makes it much easier to separate or only take what you need for the library and leave the rest, whereas a pattern library or design system that attempts to do something more monolithic with just one big style CSS file or something like that, it does make it a lot difficult. You kind of have to take it all or nothing. So I do appreciate that React allows us to do more individualized, more componentized way of development, even if I still wish there was a way for me to do truly separate my presentation layer and my content layer from my interactivity layer. But maybe that’s just me being a little bit old school in that sense.
Drew: I definitely feel the pain there. The idea is that, come and correct me if I’m wrong, my understanding is that rather than separating the technologies, the CSS, and the JavaScript, and the HTML, it’s separating the functionality. So everything that is one component all exist together-
Mina: Yeah.
Drew: … which I guess is useful if that component then is no longer needed. You can just delete it, and it’s gone, and it doesn’t leave a footprint around your app. That’s not always the case with CSS though. How are you working with CSS with React? Have You looked at things like styled-components or anything like that?
Mina: No, we haven’t. I’ve heard of styled-components, but I’ve never quite really investigated them very fully to be perfectly honest. So the way that we’re working with CSS with React is we write Less, and we just have a Less file attached to each individual component that gets imported into that component. And then it gets bonded up via Webpack and served to the client.
Drew: Are you using a system like BEM or something to turn namespace?
Mina: Yeah. We’re using BEM for namespacing, although the adherence to it is kind of varied depending on who’s writing what. But we try to use a BEM namespacing pattern to make it a little bit clearer what the purpose of each individual class and component is.
Drew: And does that seem to be working successfully for you?
Mina: I think so. Occasionally it kind of has the same old problem of I sometimes don’t know how to name something. After a while daily things has always and will always be a difficult thing for master. So that’s the only issue I have with is I occasionally I have no idea what I should call a particular component.
Drew: Definitely. That’s a constant battle, isn’t it, how to out the name things?
Mina: Yeah.
Drew: I always end up when working on a new feature or something like that, you give a component and all the classes and everything the name that the feature has got at the moment. And then by the time you come to launch, it’s been renamed something else. So you have references to the old name in the code and the interface has the new name. And …
Mina: I try to always name things based on the function or the purpose of it versus things that are a little bit more ephemeral, because it’s less likely that the actual purpose of this component will change. I forgot to mention, but in addition to using BEM, I guess we use BEMITs if you’re familiar with that. It’s basically the ITCSS plus BEM, both of which were created by Harry Roberts. So I use Hungarian notation to denote whether or not something is a component, versus a layout object, versus like a larger pattern comprised of multiple components. And then from there we use the BEM convention to signify like the block element and all that.
Drew: And have you had to do much refactoring and deleting of components and things in your code base and had to deal with the issue of CSS getting left behind?
Mina: Yeah. So the non-React part of my job, of maintaining slack.com is that’s all just a bunch of Less files that are being compiled for CSS. And I guarantee you, there’s a lot of zombie code in there, because we definitely iterate above things a lot in the time I’ve been there. And we don’t always have time to go back and do the cleanup versus when we redesign a page or something. So it’s overdue for an audit, I’ll say that.
Drew: This is something that we’ve just been looking at in our React project, looking at how we approach CSS. At the moment, we have a few big, global CSS files for the whole of the app, and we do get this situation where our bundle size is just growing, and growing, and growing and never gets any smaller, even though things do get removed. So we’ve been looking at things like styled-components, Tailwind as well is another option that we’re really seriously considering. Have you looked at tailwind much?
Mina: I haven’t looked at it a lot. I’ve been curious about it, but again, I’ve never really had time to dig in to actually see if it’s something that I want to try to bring into our code base.
Drew: I was actually quite surprised, because like you, I’m a bit old school with how to do these things. I like nice separation of concerns. And I like to write my CSS in CSS, and of course the approach with Tailwind is you have all these class names, which feel a bit like inline styles that you’re applying. And if it feels dirty.
Mina: Yeah.
Drew: And I volunteered within the team, we each which took a technology to investigate if they’d be a good fit for our problems, and I volunteered to look at Tailwind because I was absolutely certain I was going to hate it.
Mina: No, no.
Drew: But it turns out I actually think it solves a lot of problems. I was quite impressed.
Mina: Yeah. I’ve sort of come around to a similar way of thinking, because I in the past would much prefer to have one class comprise all of the styles I needed for a particular component and not do a class per property, as I believe Tailwind does or languages like it do. For the similar reasons, it felt very much like, “Well, I’m just running inline CSS at this point. Why would I do this?” But as I’ve been developing more and more, inside of our Slack design system, I created a bunch of what I call utility classes that do things like add a bit of margin with a pattern. I’ve noticed that more and more, I’m using those classes in addition to the component classes. So I’m like, “Okay, well maybe I should revisit this whole to doing a CSS as a one declaration at a time.” I don’t know if I’d go that far, but it’s definitely worth considering.
Drew: Computing seems to flip flop in terms of trends between thin clients and fat clients solutions. We started with mainframes with terminals, and then the PC era with windows and office and all these sort of big applications. And they were all getting really slow, and than the web came along, and that was just a browser, and all the work was being done on the server. And it was all fast and snappy again. And now we’ve gone back to putting all that work back in the browser with everything being done with JavaScript, things like React and the JAMstack approach where we’re back to a sort of fat client. I sometimes worry that we’re asking too much of the browser. Is this a mistake? Are we asking too much of the browser trying to do all this stuff in React?
Mina: I want to say yes with the caveat of, again, my experience is very much contained to mostly static websites. I don’t do a lot of product development. So maybe in that realm, this makes more sense. But from my perspective, I feel like we’re a lot of the times using a hatchet when we just need a butter knife. I don’t know why we need put all this in the browser, put so much work and so much pressure on the client. I feel like we could do this much simpler. One of the things that always made me a little hesitant to use React, or I say hesitant, but what I mean when it made me viscerally angry and I actively opposed, was when I would go to a website and literally nothing would render because there was one error or something, Like, “Really? The entire page is broken because one function broke down?”
Mina: It just kind of annoyed me that a lot of times it was an all or nothing approach. One of the talks that I gave at AEA in the past and other places in the past was talking about how to include progressive enhancement and not just your development, but also of art direction and design of sites. And I would point out specifically examples of websites that didn’t do progressive enhancement or any kind of graceful degradation. It was like either you have the JavaScript running in the browser or you get absolutely nothing. And it would be like just a simple site that represent information about the history of web design, which was one of the sites actually talked about, the history of web design from like 1990 until now. It was a beautiful website with lots of timelines, animation of things. But it also could have been rendered statically with just a list. There were steps in between showing nothing and showing that beautifully enhanced experience that I think got lost because of the way we’ve been approaching modern web development now.
Drew: So would you say there are absolutely some categories of projects that suit a solution like React and some where it really shouldn’t be used and you should be using more traditional methods?
Mina: I think that if your site particularly is mostly static, it was just serving up information, I guess I don’t understand why you need a project like React to render something that doesn’t have a lot of interaction beyond just DOM manipulation. I guess I don’t see what benefit you get from that. Again, I may not be working on the appropriate projects. I may not just have seen or found that use case, but I’m having a hard time seeing if it’s just mostly static site, presenting content, not a lot interaction, not a lot of interaction beyond manipulated DOM and doing animations. I don’t see how having a React library helps you accomplish that goal.
Drew: It’s interesting because I’m not bad talking it because I haven’t actually used it, but I see a lot of Gatsby projects and Gatsby being a static site generator that uses a React front-end in it. And I see all the examples of the themes and things they have available are all content based sites, or blogs, and a recipe site, and a portfolio, and these sort of things. And there’s something I think actually that this isn’t necessarily the right fit for something like React. Why isn’t this being statically rendered and then progressively enhance?
Mina: Yeah.
Drew: It’s not software.
Mina: Yeah. I haven’t actually used Gatsby either. I’ve heard plenty of great things about it, but that’s probably one of the examples I would think of where I’m like, “Okay, I guess I’m just not seeing why that tool is necessary to do that particular job.” Again, I don’t know. Maybe it’s just because more people are comfortable writing in React when they are writing new something else, and it’s just providing a tool that meets people where they are. I’ve heard great things about static site generators that use React for people who have used them and love them, but it’s not a use case that I would have immediately been like, “Oh, that makes sense.”
Drew: It seems like there’s always been this battle between what we would call a website and what you might call a web app. And the chasm between the two seems to be getting wider, and wider, and wider, whereas a progressive enhancement approach tries to bridge the gap by taking something static and adding JavaScript and adding interactivity. It seems that things like React are ideally suited for software that you’re running in the browser. Would you agree with that?
Mina: I would definitely agree with that because it feels like it’s was built for that type of environment; it was built for running software. It was built by Facebook for Facebook. So it was built for a product. It was built for running whatever you call a web app in the browser and not necessarily for the type of work that, as I mentioned, I’m used to doing. So I think in those scenarios, it definitely makes a lot of sense to use it if you’re building a more complex, more sophisticated piece of software that’s meant to run inside of a browser. But if you’re building a marketing agency site or whatever, I guess I would still struggle to see why it will be necessary there.
Drew: So are we giving people permission to still build decent, statically rendered websites?
Mina: I would love to see more of that happen. I feel like that’s kind of gotten lost and it’s sort of lost its, if it ever was cool or whatever. I feel like we’ve lost that part of web development. It’s so funny: you and I both said that we’re kind of old school, and I laugh at that because I’ve actually been doing web development for, what, six years now? How am I old school? It hasn’t been that long for me. And yet somehow I’m part of the old guard who doesn’t like new and shiny things. I don’t get it.
Drew: So in fact React has actually existed for the whole time that you’ve been a web developer.
Mina: Maybe I just have an old soul. I don’t know.
Drew: I think that’s probably the case. I’ve not looked personally at, there are service side rendered approaches you can take with React apps. Have you experienced any of those?
Mina: I haven’t experienced any them. I briefly looked into them for the project I’m currently working on, because I feel like there’s parts of the operation that would work better on a server versus in the clients. But I think because of my limited knowledge and the fact that the code base is a little more complicated than I can understand, I wasn’t quite able to figure out how to make that part work. I would love to figure it out eventually, but I spent a day digging into it. I was like, “You know what? I’m not grokking this away I need to be. So I’m just going to back up and take a different route.”
Drew: Yeah. I think we’ve all been there.
Mina: Yeah. I went down a path. I was like, “Oh, this is dark and scary. Let’s reverse. Let’s reverse.”
Drew: Step away from the code.
Mina: Yes.
Drew: So you’ve been very diplomatic and polite about React so far. I sense that there’s some tension bubbling under the surface a bit. Come on. Tell us what you really feel.
Mina: I have been polite and diplomatic, mostly because the Reacts fan base can be a little mean sometimes, and I would rather not have them come for me. So please, React is great. It’s wonderful. Use it for what you want to use it for. I kid, but even that tweet that you mentioned at the beginning of this podcast where I think what you said is that I don’t hate it. I don’t love it, but I don’t hate it. Even that statement, I got people, there was no vitriol, but it was more they where ready to leap to the defense and say, “Well, I love it because X, Y, Z.” I’m like, “I didn’t say it was bad. I just said that I’m meh about the whole thing.” But apparently being meh is not okay. I have to love it.
Mina: So that’s why I probably have been a bit more diplomatic than I would ordinarily be, just because I don’t want people to think that I’m bad mouthing it, because I’m not. It has a place in more web development. It serves a function. It does its job well. People love it. It’s just not a tool that I’ve ever had or wanted to use until now.
Drew: Yeah. Things can get very tribal, can’t they, with people feeling like they have to take one side or another, and you’re either absolutely for something or absolutely against something? And I’m not sure it serves a good purpose, and I don’t think it really moves us forward as an industry and as a community to do that.
Mina: Yeah. It’s really odd. It’s fascinating to watch from just a sociological standpoint, but it’s often just really like weird to observe. It’s like I’m not allowed to just be, like I said, neutral about certain things. I have to have a strong opinion, which is I don’t think healthy. What’s the term, “Strong opinions, loosely held?” That’s kind of the way I go about things. I feel strongly about certain things, but it’s not like you can’t change my mind. Where I feel like some people, their identity gets wrapped up into certain aspects of it ,that if you are not for whatever they’ve chosen to identify with, it’s a personal slight versus just, I don’t care about this particular topic, or tool, or whatever.
Drew: Yes. I don’t know if it’s made worse by the fact that we all are sort of tending to specialize a lot more in particular parts of the stack. And I know there are people who are React developers. They would call themselves a React developer because that’s what they work in. And they wouldn’t necessarily write any vanilla Java script or wouldn’t use Vue or whatever. React is their world. So I guess it almost feels like an attack on their entire career to say, “I don’t like React.” Well, they’re really invested in making you like React or whatever the technology may be.
Mina: I will admit to being one of those people in the past. Actually, probably it was mostly about SASS, I believe. I was very much on the team of doing SASS as a preprocessor and all other preprocessors are trash. I don’t want to talk about them. I don’t want to deal with them. And I realized that was a very narrow way to look at things. Use the appropriate tool for the job. Whatever makes you more productive, that’s the right tool. It doesn’t really matter what it is.
Drew: Are there any technologies that we work with that don’t have that sort of tribal feel? Is there anything that people are just happy to use or not use? I can’t think of anything.
Mina: Wow. No one has opinions about markup, actually.
Drew: No.
Mina: I feel like no one has opinions about like actual HTML and just markup, just like, “It’s there.” They use it. But people have strong opinions about CSS and how it’s either terrible or wonderful, and the preprocessor wars that don’t really happen all that much anymore, and then of course, all of the tribalism within the various JavaScript libraries.
Drew: So you would say your journey so far with React is still just, “It’s a tool. It does its job?”
Mina: It went from a curiosity to active and visceral dislike because of how prevalent it was and how I unnecessary I thought that that prevalence was to meh. I’m now with meh, which again does not mean I hate it. It just means …
Drew: I think that’s a good place to be. I think we’re probably all sort of stronger as technologists if we understand the value of a particular technology for its purpose. We can evaluate what is good for what circumstance and pick the right tool for the job.
Mina: Yeah. And that’s kind of where I’ve arrived at this point in my career where I don’t get really invested in any particular language, or technology, or whatever, because it’s like, “Just whatever tool is most appropriate for what you’re trying to do, then use that.” I’ve learned that there’s a place for everything; there’s a time and a place to do everything. And up until recently, there was no real time or place for me to use this React librarian, and now there is.
Drew: I think that’s a good place to be. So I’ve been learning all about React lately as you have in the day job. Is there anything else that you’ve been learning about lately?
Mina: I’ve actually learned ironically, which is I think another language that has originated at Facebook, I’ve been doing a lot of Hack development, mostly because that’s what I use at Slack, at my day job. Learning Hack paved the way for me to get more comfortable using React because they follow very similar patterns, except one is server side and one’s not. So that, along with just in general, I’ve been learning more about the back-end and how that works for various different reasons. And I’ve been stretching myself for the past couple years and getting more and more outside of my comfortable zone. Design systems, libraries, that’s very much my world, and I feel very good and comfortable in that world. But I’m stepping outside of it and doing a lot more server side logic, and API development, and data modeling, and all of that. I’ve been doing a lot on that for the past year as well.
Drew: I find that the more I understand about the whole stack about back-end stuff in front-end stuff, each one helps my knowledge of the other. I find I write better front-end code by having written back-end code and understanding-
Mina: Yeah. I think I feel the same way. Now that I have a better idea of, like we said, the whole stack of how we get from the data to the end client. I find that I’m thinking about the entire pipeline no matter what part I’m actually working in. I’m thinking about what’s the best way to structure this API so that when I get to the template, I don’t have to do so much manipulating of the data that I receive on that end of it. It’s definitely made me overall a better engineer, I feel like it
Drew: If you, dear listener, would like to hear more from Mina, you can follow her on Twitter where she’s @MinaMarkham and find her personal site at mina.codes. Thanks for joining us today, Mina. Do you have any parting words?
Mina: Have a smashing night?
Drew: Great.
(il)
Website Design & SEO Delray Beach by DBL07.co
Delray Beach SEO
source http://www.scpie.org/smashing-podcast-episode-18-with-mina-markham-how-can-i-learn-react/
0 notes
Link
Link to blog version with pretty chartsCandy Japan 2017 Year in ReviewHello /r/entrepreneurs, Bemmu here.I run a site called Candy Japan, which ships boxes of Japanese surprise candies to subscribers around the world, twice a month.Five years ago I started writing these annual review posts after being inspired by patio11's year in review posts. They are a great way to reflect on each year, and inspire me to improve. In this one I'll start off with some background for those who haven't been following the previous ones and then proceed to the numbers for this year.My backgroundAs a computer science student in Finland I had a lot of side projects, with some of them generating some income as well. Learning Japanese has also always been a major life goal for me. My minor subject was Japanese, and as part of my studies I spent 2 years as an exchange student in Tokyo. I was still eager to continue to improve, and wanted to live in Japan again.After graduating and having saved up some money, in 2011 I decided to make it happen and moved to Japan with my wife. She is from Japan, and I first met her when she was an exchange student at my university. We settled in Tokushima, which is a smallish city (by Japanese standards) in Shikoku island. The reason for picking Tokushima was the company she entered after graduating.Even though I had no job waiting for me in Tokushima, I could follow along as some online projects I had started in Finland were still generating revenue. Pretty soon however they started to dry up, so I had to come up with something new.Starting Candy JapanStarting to look for a new project, I recalled bouncing around some ideas with a friend while we had been on a holiday together. I had mentioned to him this website I had heard of called BirchBox, a service that sends people makeup samples on a monthly basis. I thought it was an interesting model – a subscription not for software, but for surprises.Is there anything we could send like that? Maybe introduce items from around Asia.Since we were both busy with other projects at the time, we didn't end up doing any of the ideas we had bounced around. But now that I found myself in Japan with free time to start something new, I decided to try it.With my wife's work locking her here in Tokushima, I didn't want to start traveling around the world to hunt for items, so I decided to find something I could just send from Japan instead. Anything would be fine at first, I could always expand later (never did though). What would be easy to try to send? I saw a lot of unique candies here, and looking into it I discovered that they were also trending on YouTube. So candy it was.While I was an exchange student I had a side income from selling comic books (by using the university post office no less) from Japan to Finland, so I emailed those past customers to see if they would be interested in subscribing to candy. Two people agreed, so I started sending stuff to them.Next I put up a simple website. At first it was just a landing page, but over time as it grew, I wrote a bunch of code to automate things (no readymade solution existed back then). I submitted the website to the link sharing site Hacker News, where some bloggers spotted it and posted about it. Other bloggers saw those posts and reblogged it. This in turn caused the site to rank #1 in Google for the head term "Japanese candy", sending even more visitors to the site.Story up to 2016The Hacker News post, blog mentions and Google rankings combined to mean that by the end of 2011 a total of 300 people had become subscribers. It turned out to be a stable number that lasted all the way to 2014. It wasn't just that people were subscribing for that long, but also new subscriptions were roughly matching the number of cancellations to keep the subscriber count stable.Then in 2014 something wonderful happened: the subscriber count roughly tripled. I didn't do anything clever to make that happen, rather I got lifted by a wave as the whole concept of Japanese candy started to trend. If you take a look at Google Trends for the search phrase, you can see overall interest increasing.As you can see the number of searches slowly builds, but from 2014 to 2015 it rapidly doubles, making it about three times as much as it had been in the early days. This was directly reflected in our subscriber count.By no means was this still a big business, but Candy Japan alone could now cover our living expenses, and I started to get hopeful that it could get bigger still.Next year in 2015 it seemed that my hopes were coming true; the subscriber count crossed 1200. Or so I thought. What seemed to be the best year ever turned out to be miserable: I discovered that I had been hit by credit card fraud. All those new subscribers beyond the first 800 were actually fakes who had subscribed with stolen credit card numbers.I had already sent them the items, but now had to return all the money and on top of that pay a bunch of fees. Add insult to injury a lot of shipping addresses turned out to be fake as well, so I had hundreds of boxes returned to my address. Our mailbox was constantly swamped and our apartment was littered with returned boxes I had to manually examine to see if they were from legit subscribers or fakes.While this fraud issue was going on, I was also in the process of moving my tax residency to Japan. It was a stressful year spent dealing with fraud and taxes. I even got a phone call from a US police officer after someone had complained to them about an unknown charge on their card, because their number had been stolen and someone used it to place a candy order.I survived, but discovered I don't handle stress quite as well as I thought I would. I was panicky and high-anxiety a lot of the time. I'd rather forget that year, but it did teach me a valuable lesson:Fraud is something that affects any business that accepts credit cards, even charities. Even if everything seems to be OK, make a habit of reading through new orders as they come in. Pay attention to email addresses, shipping addresses and bursts of failed payments. You can spot suspicious behavior if you do this.I thought I didn't have a problem, until thousands of dollars started getting reversed. While I did know that a small percentage of all ecommerce is fraud, I always understood that as fraud being interlaced with legit orders. 100 real payments, 1 fake payment, 100 real payments, 1 fake payment. But that's not how it played out. Rather it was 10000 real payments over years lulling you into believing that everything is fine, then suddenly getting hit by hundreds of fake payments in a matter of days.If 2015 was a high-anxiety year, 2016 was rather quiet by comparison. Subscriber numbers did continue to slide, as competition was getting tough while also the overall interest in Japanese candy was waning. I ran some marketing experiments, but was unable to find any good channels. Japanese yen becoming increasingly expensive, forcing me to increase prices and leading to even less sales.2017This year was a bloodbath. From the start of 2017 to the end, subscribers declined by 40%, going from 636 to 385 members.Here's the subscriber chart including 2017.Sales statsSales net of refunds: $141,220Expenses: $102,846 (candy, shipping, boxes, ads)Profit: $38,374Wage per hour (assuming ~2 hours per day): ~$50Site statsVisits: 138kUnique visitors: 114kPage views: 241kTraffic sources of note: Search engines (30%), Social media (22%), Paid ads (13%)What went wrong?In 2016 I had five popular posts (1 2 3 4 5), while in 2017 I only managed two (1 2). The posts tend to send a lot of high-quality traffic, so the impact was bigger than you might expect. I haven't figured out how to invent posts from thin air when I simply have nothing new to share. This year I simply didn't have as much to blog about.Organic search traffic declined from 68,383 clicks in 2016 to 41,358 clicks in 2017. I think the reason for this is twofold. First, competition is getting tougher, meaning there is fierce competition for head search terms. I have been pushed off the first page completely for some.Secondly overall searches for Japanese candy declined by 33% according to Google Trends, while on YouTube searches more than halved. There was a point when a lot of YouTubers were doing a video showing their reactions to eating strange Japanese candy, but now that is ancient history.Changes in USDJPY exchange rates made me decide to increase USD prices. Naturally a higher price leads to less conversions.Another major hit was that all the packages we were sending to Germany started bouncing back. After this continued for several shipments, I decided just not to ship to Germany any more. This meant losing 10% of subscribers and needing to send a lot of refunds for packages that never arrived.Things I triedTried paid YouTube ads, and while I did get some subscribers, in the end they were just too expensive to keep running. Tweaking the ads was very time consuming and expensive (but fun). I learned a lot though and gave a presentation about it at a Hacker News meetup in Osaka. I managed to decrease their cost, but not enough to break even.Tried putting all of our old newsletters on the site. Had to reformat them by hand from ill-defined HTML newsletters to MarkDown. Attempts at automating with BeautifulSoup failed, as there was no coherent layout. I submitted them to webmaster tools, but this resulted in… silence. Less than one organic search click per day (chart).Improved site response time by serving the landing page from a static file served by Google CDN instead of from Python. This may increase conversions slightly and could improve SEO, but there is still a lot of work to do to make the site faster.Tried to branch out by asked my customers if they would like to subscribe to Gashapon capsule toys, but the result was near-silence. I have a bimonthly newsletter with a great open rate, I wonder what other ideas I could throw at them?Tried redesigning the site to be more colorful and not so gloomy, but am not sure if it helped or hurt. I don't have enough data anymore to say for sure, as you need hundreds of conversions to say anything meaningful.Tried to learn how to take better product photos for putting on the site to match what my competitors are doing, but was unable to take decent shots by myself. In the end hired a photographer to do it (result).The pictures look good, and will probably boost conversions a bit. Again I can't be sure of the impact due to lack of data. Who knows, maybe visitors might feel that seeing the products ruins the surprise or something.ConclusionI wish I could report having discovered some kind of a breakthrough marketing trick to reverse the decline, but sadly no.For the time being Candy Japan is still popular enough to keep running, and since I have most things automated I see no reason to shut it down. If the trends of declining popularity of Japanese candy and increasing competition continue, 2018 will be another down year.I will start spending more time trying new projects again. Hopefully nothing involving physical products this time!Thanks for reading, and do subscribe if you'd like to try some candy for yourself. You can use the code ENTREPRENEUR to get 10% off.
0 notes