lemon i hope you know (if you didn't already from your notification boom solely from me) that your prev hero au designs did something to me. fundamentally altered my brain somehow. im literally stuffing them in my mouth how did you do that
HHEELLLOOOO THIS WAS A LOVELY NOTIFICATION BOMB TO WAKE UP TO, HOLDING ALL THESE TAGS NEAR AND DEAR TO MY HEART
as for how (i'm seizing this as an opportunity to share a bunch of process work):
there was a butt load of trial and error
From what I can remember (this all started 3 years ago holy shit,,,) I worked on Kevin's design first. The only 2 ref images I've found are included in the screenshot, but I'm pretty sure I was looking at those in addition to all of the other Impa+Sheik designs from the games, OG Hyrule Warriors concept art for Impa+Sheik, and the Sheikah pages from BOTW's Creating A Champion.
here's Link's stuff and YIPPEE I HAVE HIS REFERENCE IMAGES 🙌🙌
(BIG BIGG shoutout to @/historyofhyrule btw for archiving so much concept art and everything from all of the zelda games. None of this brainrot would've been possible without them.)
butt load of trial and error cont. especially for the colour of his scarf omg (I was looking at some of the hero's garb colour variants from OG Hyrule Warriors, and was conscious of the two other scarf wearing Links in Zelda Not Canon)
I can't find Zelda's inspo/ref images either but I remember referencing Griffith and Casca from Berserk, Kushana from Nausicaa of the Valley of the Wind, Ashei from TP, some of the OG Hyrule Warriors concept art for Princess Zelda, and of course some of the other canon Zelda designs (ALttP, TP, HW, OoT, BOTW).
I'd say Kushana was and still is the biggest inspo for Prev!Zelda, even personality wise I find myself looking back to her and how she was in the Nausicaa manga and movie.
final design thoughts: I really REALLY wanted the three of them to look cohesive with each other SO,
I always carried over screenshots of the other members of the trio onto their individual canvases to make sure that any changes I made to one design didn't stand out too much from the others,
I'm also pretty sure I worked on Link and Zelda's design simultaneously, or at least flipped back and forth between them a LOT when doing their armour (I wanted it to be evident that they were produced by the same smiths of the royal family yknowww),
and finally I made sure there were a couple of shared colours between their colour palettes
Thankee Thankee for reading this far and I hope y'all enjoyed my process stuff :))!!!
79 notes
·
View notes
What is Async Anyway?
Explaining async/await and general concurrency concepts in programming languages.
A lot of modern languages have async/await syntax built directly into them, and the construct can be extremely useful. Examples of languages that include these concepts are JavaScript, C#, Python, and Swift, and even modern relatively low-level languages like Rust have this syntax. Even though it's usually thought of as a more advanced feature, I think it is really not that hard to use once you get the hang of it, and it is super useful and rewarding when you really understand it.
This is going to be a bit of a long and pretty technical post, but I hope it can give you some confidence to know what async/await really does when you use it, and maybe it can help you use it more effectively. Keep in mind that I will not be able to go over everything in super deep detail, and that I am going to simplify stuff, but it should give you an idea how these systems work.
I am a little curious about eventually following this up with a post looking at how these systems compare under the hood in different programming languages, so let me know if you'd be interested in that.
Big post under the cut.
Parallelism and Concurrency
Computers today can do many things at the same time. And I mean that literally: in one instant, a modern CPU can be working on multiple instructions. That's because a single CPU has multiple cores that can all execute code (mostly) independent from each other.
This is called parallelism, and the way we as programmers interact with that is through threads. Most programming languages, especially "lower level" ones, have a way for programmers to create a thread that will run some part of your code. Creating a thread is telling the computer that it can, and should, run the code in your threads in parallel (although various systems such as the OS still have discretion over when and if that actually happens).
Parallelism is not quite concurrency tho. Where parallelism is about your computer literally doing multiple things at once, concurrency is about your computer doing multiple things, but not at once. With concurrency, you kind of pretend you're doing a parallelism. But in reality, stuff doesn't happen at the same time. Instead, your system (runtime) does some work on task A a bit, then on task B, then maybe again on task A, etc., but doesn't work on the two at the same time. So, in a concurrent system it might look like task A and B are progressing simultaneously from the outside, but work actually only happens in sequence.
Let's Talk About I/O
I/O stands for input/output and describes data in your program that comes from elsewhere, or that gets sent elsewhere.
So for example, user input is I/O. And similarly, a web request can be I/O, whether you send it or receive it. So let's use that as an example: you send a web request to some API to fetch you the cutest bunny images and facts:
But the service is taking its sweet time to respond.
Fact: Loading bunny fact…
With how we did it here, we halt execution of the entire thread until the response comes in (at least in most languages, more on that later). In this case, we call get a blocking method because it, well, blocks the thread without actively doing useful work.
What if we could instead use the thread for other tasks instead of just sitting there, twiddling our thumbs and waiting on the server?
This smells of concurrency…
Callbacks
Callbacks are a way for programmers to avoid that period of thumb twiddling. The new getWithCallback function now returns immediately, but it doesn't return a value. Instead, we have to register the code we want to run once the server responds with the function:
The function we pass to getWithCallback is called the callback, and it gets called by the client* only once the response arrives.
Oh look, here it is:
Fact: A rabbit's life span is about 8 years, though sterilized rabbits (those who are spayed/neutered) can live as long as 10-12 years.
*"The client calls it" is a big simplification, there might be a lot more stuff happening here. But the important bit is that the client magically does not need to block to wait for the response.
Promises and Futures
What JavaScript calls Promises and what a lot of the other languages call Futures is essentially sugar sprinkled on callbacks - it makes our callback code a little nicer. Callbacks can commonly create a concept called "callback hell", where you have to call a function that takes a callback inside the function that takes a callback inside the function that takes a callback…
(Code modified from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises)
To avoid this, functions now can return a Promise instead of taking a callback. Promises represent the promise that, while a concrete value might not exist right now, it will in the future. Once the value exists, we say the Promise resolves. The code above with Promises would then look like this:
It still doesn't look perfect, and there are things you can do to make it look a little nicer, but it's so much less nested. The callback in the then function will be called once the value is ready, and the callback itself can also return a Promise. The then function then returns a Promise which will get resolved once the future from the callback is resolved. Many other languages have a concept similar to JavaScript's Promise, and it's often called something like Future or Task (because it would be too easy to have consistent naming across languages).
Now keep in mind neither of those solutions above are really "concurrency" in the definition we used above. This is because the thread we call, for example, getWithCallback on still completely belongs to us. We could keep using it, and we would not get interrupted to execute the callback. Depending on the language and runtime, the callback might get executed on a different thread, or the runtime might have to wait until we are completely done with what we were doing to then use our thread to call it. The same thing goes for the callbacks in the then method of promises.
Async/Await
And async/await is just some sugar and magic fairy dust on top of Promises (or Futures or whatever). It makes our code look like it should be blocking, but in reality it isn't. Here's what our bunny image code looks like with async/await:
So here, a couple things happen. First, the Promise is created and the web request is initiated. Then, the Promise is awaited. For that, (if the Promise is not resolved at this point already,) the task first yields, meaning it tells the runtime that it is not doing any useful work at the moment, and that the thread it ran on can be used for other tasks. The runtime then makes a note of where to continue execution when that Promise resolves, and looks around for other tasks that currently need executing to put them on that thread. After a while passes, the Promise resolves, and once the runtime has some resources available for us (maybe because another task just yielded), execution on our original task is continued with the API response.
Fact: A rabbit's teeth never stop growing! Many people believe they need to chew to keep their teeth short. While they do enjoy chewing, it's the normal wear from where their top and bottom teeth meet that keeps a rabbit's teeth short.
This is more in line with the concurrency we sought out above. We can interleave other computations while our task is still running, but during times where it is not doing any useful work. (Still, because you may have multiple threads your tasks can run on and move between, it might not always be 100% technically accurate to call this system concurrent.) This is also why it is important to not block for long in async contexts: if you're hogging the thread for too long, you're stopping other tasks from progressing and throwing a lot of the benefits you gained from doing it concurrently in the bin. Most async runtimes will give you some option to run expensive or blocking code elsewhere, so that you can keep the benefits you gain from async.
So that's the explanation what async/await does, and the broad strokes of how it works. If you have any more questions regarding the topic, feel free to ask! I think it'll be fun to occasionally write a longer post on interesting things I've learned, so if you have topic suggestions, don't be afraid to tell me!
Further links and sources
Don't Block The Event Loop! - Why you should avoid blocking in Node.js, and what pitfalls to look out for.
I got the bnuuy images and facts from the animality API. The licenses on the images are not super clear, but I'll assume it's okay for me to use them here with credit because it's an open API.
I lifted the definitions and some of the explanation for parallelism and concurrency from Steve Klabnik's talk on Rust's Journey to Async/Await. The talk is more technical and very focused on Rust, but it's a great talk.
I referenced the mdn web docs at various points, they're a great resource.
I created the code screenshots using the carbon app.
2 notes
·
View notes
♡ babysitter
oneshot - inspired by that one edit
fandom: five nights at freddys (movie)
paring: mike schmidt x fem!reader
warnings: nsfw 18+, dry humping, sexual tension, kissing, friends to lovers, cumming in pants, submissive mike, foul language, teasing, smut, riding, dom reader, consensual sex, age gap, minors dni..
You've heard a lot about him from Abby, mainly bits and pieces that she's told you, but nothing really about him and the only thing he really says to you is that he's eventually going to pay you back. But you always refuse.
The old couch squeaks softly as he sits beside you, a gentle hand goes to reach your face but hesitates.
He’s been very busy for a while now that he has started his new job at a security guard that was shut down ages ago. When he comes home he's always so tired, like he's a different person. As if he cannot relax. You hear the door open and slam back as it he closes it.
"Oh, sorry, I didn't hear you come back.." You whisper, groaning whilst you move out of the position you had been in for a while. Yawning as you gently wipe your eyes.
Mike looks at you, half-smiling as he leans against the cushions. He's tired, you can tell. "Sorry if I woke you, you looked exhausted, so I just wanted to cover you," he whispers back, stretching his arms. "Did Abby go okay for you?" he asks.
"I told her it's bedtime an hour ago, but you know how it is with little ones." You joke.
"Abby was great, she missed you, though.." You smile sheepishly, shifting on the coach to face him. "How was work?" You ask, seeing the slight bags under his eyes.
Mike chuckles softly, leaning his head back and letting out a deep sigh as he stares up at the ceiling.
"It was long," he sighs. "I mean, I've gotten used to it, of course, but god, it's draining..." He leans forward and rests his elbows on his knees, looking off to the side and fiddling with his fingers, trying to find the right words to explain what just happened at work. He seems hesitant to say.
"You okay? You can talk to me if something is bothering you." Hesitantly placing your hand on his shoulder, slowly forcing him to look at you. You've known him for years due to babysitting Abby, but he's never opened up.
"Well... it's just..." Mike sighs again, still not meeting your eyes. "...Abby asked me some questions about stuff today."
He rubs the back of his neck, shifting in his seat as if he's about to say something and then thinks better of it. He leans back against the coach, letting out a frustrated grunt as his eyebrows pinch in frustration. "I... I just can't tell her."
"Is there anything I can do to help?" You whisper, staring at him, waiting for a response.
Mike's face softens a little, looking over at you before he sighs, shaking his head. "It's nothing. Abby asked about the job, and... well, it got me thinking..." He shrugs his shoulders again, still looking off to the side.
"Look, I'll tell Abby about it myself, I don't... I shouldn't put it on you..." He sighs one again, staring at the floor.
"If you need me, don't hesitate." You place your hand on his thigh, squeezing it for reassurance. Gaining confidence, you slowly move your body off the couch and sit on his lap.
"Oh..." Mike says quietly, his face turning bright red as you place your hand on his thigh. He looks down at you, his expression of uncertainty on his face changing as his eyebrows rise.
He's speechless, frozen in shock at your touch, and his entire face is practically bright pink. He's suddenly a lot warmer, his chest heaving as his heartbeat picks up speed. "... Y- you're..." he says with the last of his breath, his brain having trouble finding the right words to say.
"Is this okay..?" You grind against his lap, whispering against his ear.
"Shit..." He stammers, his brain desperately trying to process what you're doing. He looks confused, his eyes drifting down to you as his mind races.
"What... what are you... n- no, it's... we can't..." Mike stutters, trying to find a way to reject you. But the longer you're in his lap, the harder it is for him to say no.
"Just relax, Abby is fast asleep in her room.." You grind harder against him, using your index finger to tilt his chin up, making eye contact when you suddenly hear him whimper.
"T- this isn't the time..." he mumbles in response, his eyes closing at the sensation and his whimpers becoming more noticeable.
"W- we shouldn't be doing this..." he whispers, his arms hesitating in the air for a moment before they eventually wrap around your waist. He's still torn between going along with it or saying no, his heart racing as he gazes at you.
"Beg for me to continue." You stop moving your hips, feeling his arousal throb against your ass. Wanting to see how he would react.
"P- please... God.." he whispers, the breath catching in his throat and his voice turning raspy.
He looks at you, his eyes pleading, his body quivering under your control. His heart is pounding out of his chest. He swallows, looking up at you as his entire body screams for you to keep going while his mind fights back.
"You can do better than that.." You tease, breathing against his neck, gently creating bruises as you feel his slightly breath hitch.
Mike whimpers loudly when he feels your bites, his muscles tensing as he tries to relax.
"H- I- please, don't stop..." he murmurs hoarsely, sounding completely different than you've ever heard before. He whimpers again, his head tilted back as he tries to hide the pleasure in his face. He can't believe what he's doing, but he can't turn away.
"Good boy.." Slowly reaching to take off your top, revealing your covered breasts as you start to grind against him, pushing your panties to the side, creating a wet spot on his jeans.
Mike looks down at you, taking in the view as your top is removed, his face getting even pinker as his heart races.
He swallows nervously in response to your wetness, his eyes trailing down your body before they eventually turn back to your face. His cheeks are bright red, his breathing heavy as he glances back down at you, looking into your eyes as you look into his. He takes a long, drawn-out breath, his entire body quivering with anticipation.
"Just take what you want, Mike, no one is stopping you.." You tease, eagerly watching his reaction.
"I- it's..." Mike starts to say, but he can't say no to you, not right now. He leans back, pushing himself deeper into you like he can't help himself, the breath catching in his throat as he takes in the sensation. His eyes are closed as he tries to ignore his own morals.
His eyes snap open, his lips parted as he whispers, "More.."
"You close?" Whispering seductively, moving harder as you feel your climax coming fast.
"Oh, god..." Mike breathes out, his face red, and his eyes roll back into his head. He moans, bucking his hips up against you, feeling himself come close to release as he cums in his pants, feeling you come down from your high.
10K notes
·
View notes