#python x ava
Explore tagged Tumblr posts
Note
Did any of your SoV fics survive? I was thinking of one in particular about Fernidand not wanting anyone to touch his baby, but what about any of them?
(There is only one that has been recovered: Asking Lukas, Forsyth and Python if they wanna have a baby!!! :; U ;; It's a sweet one, and it's 3 in 1!!!)
Forsyth: When you first pop the question of starting a family, Forsyth nearly spits out his drink. Granted it was your own fault for asking him right when he took a sip, but you weren’t expecting such a violent reaction.
It was followed by a spluttering, a bright red face and wide eyes, his mouth agape as he stumbled into asking why that came up.
You were embarrassed to have even thought of it. His reaction made it very clear that wasn’t something he was thinking about.
You told him to put it out of his mind, stammered out some sort of excuse about needing to go to bed early, and you quickly escaped the awkward situation.
Your hands were pressed over your face as you struggled to suppress your own embarrassed reddening, turned on your side so you could at least pretend to be asleep if he tried to come into the room and talk.
It would be so much better to pretend this never happened. It was a silly question. You’d only been married for six months- you had rushed him on the idea.
At least, that’s what you thought.
Then you felt a warm hand reach from behind you and take your wrist, and you felt his lips touch your fingertips.
“Ava, can I talk to you?”
Slowly, painstakingly, you turned over to see him on his side of the bed, lying there beside you and looking quite concerned.
“I-I wanted to apologize about before. I didn’t-”
“Oh, no, don’t- it was my fault for putting that much pressure on you, all of a sudden. I shouldn’t have asked you about having a baby so soon.”
“What? N-no! It’s not that.” He stopped you quickly, “I was just caught off-guard. It’s not...that I don’t want to start a family with you...I-I just...the idea of us really trying for a baby...a-and actually having one is...it made me feel a bit shy, you know?”
“Not really…” You trailed off, a bit confused. He swallowed down his pride and his embarrassment, enough to explain what he meant.
He was the luckiest man alive being married to you, and the thought of being the father of your child was just too much to bear. He was so excited and elated and filled with love that you’d even want to start a family with him…
He still couldn’t wrap his head around it.
You stared at him, unblinking, for several seconds. Your first response when you recovered was to smack his arm.
Then you kissed him, then you buried your face in his chest to hide your embarrassment, unable to tell him that you thought it was because he didn’t want children and you were horrified of your actions.
You later apologized for hitting him, and more than made up for it when you started your journey to having a baby later in the evening.
-------------------------
Lukas: He had frozen up when he finally realized the words that had come out of your mouth were real. He didn’t really react, other than his whole body going rigid.
He had been in the middle of his favorite book, the two of you winding down for the evening, settled into bed, cozy and peaceful…
Then you asked him what he thought about starting a family.
When it took him longer than ten seconds to form a response, you quickly added that it didn’t need to be right away, that he could take all the time he needed to think about it, and you weren’t in any rush to have kids if that wasn’t something he wanted.
You knew that he had been something of an asexual prior to meeting you...intimacy and love weren’t things that he really needed, and he was just fine without it.
Then when he met you, those things had gradually started to change. It was him that proposed to you, for crying out loud.
And your marriage had been healthy, if not peaceful and sweet, for the one year it had been so far.
You thought you were jumping the gun on asking when it took him ages and ages to put words together.
“You mean...a baby?”
“W-what else?” You chuckled nervously, looking at him with a lopsided smile. “It’s not a big deal, Lukas- I wouldn’t want you to do anything you’re uncomfortable with. I just...thought I’d ask if you might want to consider it, sometime.”
“Well…” He trailed off, the sound of the book closing like an echo in the silence. “It’s not something I haven’t thought about, every now and then. I’ve seen how happy Clive and Mathilda are with their children...and Boey and Mae…”
“But is it something that you want?”
“I do.” He said firm enough that you honestly believed him. You smiled softly, sighing in relief when you saw the sweet smile on Lukas’ lips.
“I’m glad. But, listen, Lu...it doesn’t have to happen right away. A baby is a lot of responsibility, and it’s a seriously life-changing decision. I want to enjoy the peace I have with you as long as I can.”
“It would be difficult to find some peace with a child around, wouldn’t it?” Lukas mused, sinking back into the pillows. You giggled as you sank down beside him, resting your head on his chest and draping your arm over him.
“There will be many sleepless nights, and our attention will solely be on the baby for a while. Lots of crying and laughing, and that cute baby babble, too.”
“It may not be peaceful,” He yawned, “But...it wouldn’t be a terrible change.”
-------------------------
Python: The first thing he did was laugh.
He thought you were joking.
The two of you had talked at length about how awful children could be. The brats that ran around the capital when you were on patrols were nauseating to watch. They were so whiny, and noisy, and they cried incessantly if the slightest thing went wrong…
You didn’t know why anyone would want such a thing.
At least, that’s what you thought. Then, the longer you were married to your husband (a feat in and of itself), the more you realized how sweet it would be to hear the pitter patter of little feet in the house, and to see a tuft of blue hair bouncing around, following behind Python.
And it may or may not have been a dream you had about six nights in a row.
You explained this to him, and it didn’t take long for the grin to wipe from his face. You told him that you had gone to Tatiana and asked her about the repeating dream.
She very excitedly told you it was definitely a gift from the goddess, a sign that it was time for you to have children. You wanted it deep down, and this was your body’s way of telling you it was baby time.
Python, however, was less convinced.
“You really wanna have a kid? What if it’s like one of those brats that are always runnin’ around the city? You wanna add to that madness?”
“Well, they wouldn’t necessarily be badly behaved- Mathilda’s kids are all perfect.”
“That’s because their parents are the most perfect people on the entire planet.” Python scoffed.
“Mae and Boey’s kids are rowdy, but they do as they’re told, too.”
“After Mae threatens to smack them over the head.”
“What about Zeke’s daughter? She’s so sweet and quiet- don’t you think we could have a kid like that?”
“Baby, have you met me?” He gestured to himself, “I’m about as rowdy as they come- if you think for one second our kid’s not gonna be wild, you’ve got another thing comin’.”
“I suppose so.” You managed to smile at him, though the disappointment was clear in your eyes. “I just thought it was a nice idea. It’s not like I want to have a dozen brats running around, but...I don’t know...one little guy that looked like you but definitely had my nose...it was a cute idea, right?”
“Sure.” He chuckled, “Some blue-haired, wiry little boy with that nose of yours-”
“It’s way better than your nose.”
“I didn’t disagree!” He laughed louder, “I mean, who’d he take after, really? He’d be just like me. I was a serious pain when I was a kid. If my ma was around, she’d tell ya.”
“I’ll bet she didn’t regret raising you, though.”
“Nah. She would go on and on about how proud of me she was whenever she answered my letters. I don’t doubt that the minute I meet my kid for the first time, I’m gonna be nothin’ but proud of’em. ...I-if I ever wanted one, anyways.”
You bit back the grin on your lips. “Of course. It certainly doesn’t sound like you want one, not at all.”
“Good, ‘cos I definitely don’t want one right now!” Python insisted, nudging your shoulder. “You hear me, woman? I don’t want anything to do with a brat, at this particular moment in time.”
“I heard you, dear.”
“As of this exact moment, this period of time, this present day, I do not under any circumstances-”
“I got it, Python, I got it!!” You burst out laughing, playfully pushing your husband away. “We don’t have to have a kid right now!”
And you didn’t.
It happened about six months later, which Python would later comment was exactly when he wanted to have one.
Even though the kid looked exactly like him, the baby absolutely had your temperament. Which was really bad- that little baby girl had him wrapped around her fingers before he knew what happened.
(He never really complained about that, though.)
#forsyth#lukas#python#fe 15#fire emblem echoes#shadows of valentia#fe echoes#sov#fe sov#fe fictions#fe-fictions#avatar#f!avatar#f!ava#fem!ava#forsyth x ava#lukas x ava#python x ava#forsyth x reader#lukas x reader#python x reader#i use both reader and avatar for tags#bc ava is basically just a reader insert LMAO#baby fluff#baby train
23 notes
·
View notes
Text
Bea: No, Ava. You can't have a cat. You’re like a Golden Retriever, it wouldn’t work.
Ava: What?! You've got to be kitten me!
Bea: I swear to God if you don't stop with the wordplay I'll-
Ava: You'll what? Punish me? 😏. No use throwing a hissy fit.
Bea: *frustrated groan*
*The next day*
Ava, holding a python: Guys, I impulsively bought a snake! What do I name him?
Bea: You did WHAT?-
Ava: You didn't specifically said I couldn't buy a snake.
Camila: Monty Python.
Yasmine: Sir Pent.
Mary: William Snakespeare.
Ava: What about: ✨Lilith✨? 🤣
#warrior nun#ava silva#sister beatrice#avatrice#ava x beatrice#incorrect quotes#warrior nun crack#warrior nun funny#incorrect avatrice#incorrect quote warrior nun#wn incorrect quotes#incorrect#incorrect warrior nun#humor#lgtbqia+#sister yasmine#sister camila#shotgun mary#python#snake
237 notes
·
View notes
Text
Some radio for ya
Listen to these radio shows, will you? Put them on to soundtrack whatever it is you get up to on here. Your GIFs will thank you.
Heathen Disco #281 (happy V-Day ya fucks)
https://www.mixcloud.com/mosurock/heathen-disco-show-281-13-february-2022/
HOUR 1
Gabor Szabo – Somewhere I Belong
Atlantis – Mr. Bigshot (You Get the Credit)
Margo Guryan – Someone I Know
Air – Baby I Don’t Know Where Love
Betty Davis – Anti Love Song
Modern Nature – Masque
DJ Python – Angel
Bardo Pond – Tommy Gun Angel
Moose – Boy
My Dad is Dead – In Your Mind
The Reds, Pinks and Purples – Tell Me What’s Real
Cate Le Bon – Cry Me Old Trouble
Patrice Rushen – Haven’t You Heard
Pete Yellin – It’s the Right Thing
Print Head – Dying the Way You Want
HOUR 2
Mdou Moctar – Tala Tannam
The Mountain Movers – I Watch the Sea
Levande Död – Unter Rotvältan
The Jesus and Mary Chain – Upside Down
The Chamber Strings – Telegram
Honey Radar – Sunrise Alphabet
J.R. Bohannon – Plum Village
The Main Ingredient – Work to Do
Dalibor Cruz – 02
Norma Tanega – You’re Dead
Vulcan – Lightning
Atomic Rooster – Lost in Space
Jake Xerxes Fussell – Washington
Banchee – “38”
HOUR 3
Konono No. 1 – Masikulu
Alleged Witches – Dukun
Sheila E. – The Glamorous Life
A;GRUMh… – nGUU (Petite Fugue)
Front 242 – Don’t Crash
Ava Mendoza – Apart From
Self Improvement – Firestarter
Link Wray – Beans and Fatback / I’m So Glad
Heavenly Bodies – Universal Resurrection
Cafe Racer – Pretty Trash
Heathen Disco #280 (Tribute to the late Jerry Weber / Jerry's Records in Pittsburgh, an important place in my history)
https://www.mixcloud.com/mosurock/heathen-disco-show-280-30-january-2022-rip-jerry-weber/
HOUR 1
The Dream Syndicate – The Days of Wine and Roses
Trees – Tom of Bedlam (live)
Jimmie Rodgers – Jimmie’s Texas Blues
Ronnie Lane and Slim Chance – Bye and Bye (Gonna See the King)
Wire – Blessed State
Matt Jencik – Yes Pussyfooting
T. Rex – Metal Guru
The Rolling Stones – Rocks Off
The Comsat Angels – Independence Day
The Soundcarriers – At the Time
Little Sister – You’re the One (Part II)
Ava Mendoza – Sun Gun
Marsha Hunt – (Oh No! Not) The Beast Day
HOUR 2
Cardboards – Electrical Generator
John Cale & Terry Riley – Church of Anthrax
Cabaret Voltaire – Protection
The Embarrassment – Celebrity Art Party
Bad Brains – Joshua’s Song / Banned in D.C.
My Bloody Valentine – I Can See It (But I Can’t Feel It)
John Dwyer, Ryan Sawyer, Greg Coates, Wilder Zoby and Andres Rentaria – Yuggoth Travel Agency
BÖRN - Þú Hvíslar
The Pheromoans – S.B.’s / Greece Theme
The Fall – Gramme Friday
Balaclavas – Roman Holiday
Master’s Apprentices – Easy to Lie
DJ Harrison – City Lights
The Poppy Family – Happy Island
HOUR 3
Darryl Way’s Wolf – Game of X
Butthole Surfers – Jimi
Spacemen 3 – Lord, Can You Hear Me
Hollow Frames – The Forest Reveals Itself
Sly & the Revolutionaries – Sensi Dub
Public Image Limited – Solitaire
Hard Corps – Desolation Land
David Bowie – She Shook Me Cold
Sic Alps – Message from the Law
Mathematiques Modernes – Disco Rough (Long Version)
The Impossible Dreamers – Spin
Talk Talk – New Grass
4 notes
·
View notes
Text
Why do people feel the need to put hate in the tags? And by hate, I literally mean something demeaning the fandom like “this is stupid because of this thing that happened a while back” or “this is annoying” or “stop asking me about this”. Like… can ya put a slash through the subject so it doesn’t show up in the tag and people who actually enjoy the thing don’t have to see your griping? It’s simple. Just go Dra/rry, Kar/am/el, or li/fe is stra/nge (those were the things on my mind, not saying I hate them). It’s not hard and would probably cut down the discourse.
Also, there are tags that some fandoms have for irritations. RWBY, for instance, has rwde (and Jaune Salt). It just cuts down on the amount of negative bs people see when browsing their favorite things.
tl;dr: Don’t put your irritation where people are trying to enjoy themselves. It’s rude.
#ava's demon#sherlock#rwby supergirl bellamione monty python#and plenty of other fandoms#i get that this is also griping#i'm just... really tired of finding hate as the first post in my fav tags#especially in negitoro!#and baby x Ballora!
18 notes
·
View notes
Text
Netflix’s Top 250 Best Movies To Watch In Lockdown, According To Extracorn.com
Netflix's Best 250 Best Movies To Watch In Lockdown, Based On Rotten Tomatoes
Everybody around the country is stuck indoors playing video games and watching streams right now, and you might be starting to get desperate for content to consume to relieve the boredom. Well, how does 250 pictures on Netflix sound? Gotta make the most from that subscription, I suppose.
Netflix is...usually not famous for its top-notch movie choice, as lots of the rights to films visit other services or remain on demand where you need to pay for them separately. But they do have a good amount of films, and are beginning to make quite good first movies of their own.
The problem with Netflix is the fact that it doesn't have a rating system to really tell you what is good. You find a picture or series, you have to Google a review or a score somewhere. That's where Rotten Tomatoes comes from.
This is useful in deciding what to watch, because you understand at least X number of critics believed it was great.
You can see the complete list here, but I thought I would at least go through the top 50 to find out what gems emerge. I am uncertain the way RT is breaking ties when it comes to movies with similar scores. Might be total number of testimonials, but I am not sure.
Undefeated
NETFLIX
50.
49. The Stranger (1946 -- 96 percent ) -- Directed by Orson Wells, this is the story about an escaped Nazi war criminal posing as a professor.
48. Menashe (2017 -- 96%) -- A look inside the civilization of ultra-orthodox Hasidic Jews.
47. The appearance of Silence (2015 -- 96%) -- A harrowing narrative about the Indonesian genocide.

46. Blue Ruin (2014 -- 96 percent ) -- A traditional American revival story that won a lot of awards at Cannes.
45. Atlantics (2019 -- 96%) -- A Netflix original supernatural romantic drama which was the first film directed by a black woman to be featured in competition at Cannes.
44. Groundhog Day (1993 -- 96 percent ) -- The Bill Murray classic which may prove too close to home for people working from home using the exact same routine every day at the moment.
42. Rosemary's Baby (1968 -- 96 percent ) -- The traditional horror movie starring Mia Farrow where a Satanic cult would like to steal her baby.
41.
The Irishman
NETFLIX
40. The Edge of Democracy (2019 -- 97 percent ) -- A documentary about how a democratic nation can fall into autocracy.
39. The Body Remembers When the World Broke Open (2019 -- 97%) -- Quite a name. Two native women cross paths within a brutal event that bonds .
38.
37.
36. To All The Boys I Have Love Before (2018 -- 97 percent ) -- Netflix's new age young romance classic with a star-making turn for Lana Condor. The sequel isn't as good.
35. In This Corner of the World (2017 -- 97%) -- A gorgeous, animated film about what wartime does to humanity.

34. 13TH (2016 -- 97%) -- An Ava DuVernay documentary about America's messy racial history.
33. Aquarius (2016 -- 97%) -- A festival film about a battle between developers and a renter.

32. Crouching Tiger, Hidden Dragon (2001 -- 97 percent ) -- The Ang Lee martial arts classic that really holds up well today.
31. Mudbound (2017 -- 97 percent ) -- A narrative concerning the rural American South during World War 2.
Monty Python and the Holy Grail
30.
29. Dolemite is My Name (2019 -- 97 percent ) -- An incredible performance by Eddie Murphy at a Netflix original.
28. Hell or High Water (2016 -- 97%) -- A western heist thriller starring Chris Pine and Ben Foster that went underappreciated in theatres.
27. Spider-Man: Into the Spider-Verse (2018 -- 97 percent ) -- Some of the very best superhero or animated films ever. Period.
26. The Cakemaker (2018 -- 98 percent ) -- A German movie about a complicated love story and catastrophe.
25. Homecoming (2019 -- 98 percent ) -- Check out Beyonce's historical Coachella performance.
24. God's Own Country (2017 -- 98 percent ) -- A silent romance about a remote farmer who meets with a man he falls in love with.
23.
22. My Life as a Zucchini (2017 -- 98%) -- A charming animated movie with a surprisingly deep and gloomy narrative attached to it.
21. Once Upon a Time in the West (1968 -- 98 percent ) -- An all time great western from Sergio Leone.
Moonlight
A24
20. Moonlight (2016 -- 98 percent ) -- The very best picture winner about the life span of a young man as we see him in three different phases of life.
19. Beneath the Shadow (2016 -- 99%) -- A story about the Iran-Iraq war that functions as a harrowing thriller.
18. Jiro Dreams of Sushi (2012 -- 99%) -- The classic documentary you should observe even if you don't like sushi.
17. Starred Up (2014 -- 99%) -- An incredible UK prison film starring Ben Mendelsohn until he awakened.
16. A Separation (2011 -- 99%) -- The story of a dissolving relationship well before we got A Marriage Story.
15. Virguna (2014 -- 100 percent ) -- A story of the people who devote their lives protection the natural wonders of the Congo.
14. The Young Offenders (2016 -- 100%) -- A humor road trip film inspired by the true story of the biggest cocaine seizure in Ireland.
13.

12.
11. Invader Zim: Enter the Florpus (2019 -- 100 percent ) -- Wait ? I guess people love Invader Zim.
10. Creep two (2017 -- 100 percent ) -- A rare horror movie that works even better than the first.
9. Mercury 13 (2018 -- 100%) -- A documentary about how sexism held back female astronauts decades ago.
8. Kilo 2 Bravo (2015 -- 100 percent ) -- The real story of a platoon who has to remove a Taliban roadblock.
7. Chasing Coral (2017 -- 100 percent ) -- Check out coral reefs, a natural miracle.
6. Mr. Roosevelt (2017 -- 100 percent ) -- A story about a woman and her cat that acts as a metaphor for an entire generation.
5. Strong Island (2017 -- 100 percent ) -- One tragedy signifies racial injustice in the usa.
4.
3.
2.
1. Knock Down the House (2019 -- 100%) -- A documentary concerning democratic women who obtained improbable House campaigns.
Would you take issue with some of the ratings ? I mean, sure, Knock Down the home is likely not the single best movie on Netflix. And like you, I haven't heard of a lot of these. But that's what a list similar to this is for, to get you to broaden your horizon to documentaries or foreign films or subject matter you might normally participate with. I guess you can just see Goodfellas for the eleventh time, that works also.
And there are about 40 here I have not seen, so I've got some work to do. Again, you can see all of 250 here.
0 notes
Link
The best part of any idea is when it's fresh and new, and you don't yet know the limitations and restrictions. It can be almost magical! Oh, the customers you'll help and the money you'll make! All you have to do first is... write a lot of code.
How much code? Well, obviously that depends on your idea and what business you're planning on setting up. But there's a huge amount of code you'll need and want for any SaaS business, and a lot of it you'll have to write before you can write even line one of your business logic.
Where did I come by this list? Well, I've spent quite a few years working on SaaS businesses at a variety of stages of maturity, and I keep my ear to the ground by listening to good SaaS podcasts. I noticed that there are a lot of common tasks necessary to launch a new SaaS product, and I decided to help fix that problem by taking it all and packing it into a SaaS starter kit to help cut down on the code you need to write (and the time you need to spend) to launch your business.
Let's explore that huge list of code.
Stuff You're Gonna Need
The basics
Okay, first you're gonna need something to start from. Unless you plan on writing everything from scratch, you'll need to set up some common frameworks to enable a modern web app to run. On the front-end, that's something like:
A bundler/build system. Examples: Webpack, Parcel, Gulp, Grunt.
Babel, if you want to use modern JavaScript features on older browsers.
A UI library. Examples: React, Vue, Angular, Elm.
A CSS framework. Examples: Bootstrap, TailwindCSS, Semantic, Bulma.
An HTTP requests library, if your framework doesn't come with one. Examples: Superagent, Axios, got.
A testing library. Examples: Jest, Mocha, Jasmine, Ava.
Getting all these various tools set up to work together will take some time as well. Just searching "configuring webpack for X" reveals a minefield of blog posts written for various versions of webpack and X. Some will help, some won't, and sometimes only experimentation will reveal which is which.
Thankfully, there are tools that make a lot of this easier. Next.js for React and Nuxt.js for Vue are just two examples, but there are many flavours of UI frameworks that can significantly reduce the setup time for the above. Of course, now you have to learn how your UI framework works as well as your UI library, but generally that trade-off is worthwhile.
Moving on to the back-end, you're going to want a web framework. This will largely depend on the language you're working with, but you have plenty to choose from:
Node.js: Fastify, Koa, and Express.
PHP: Laravel, Symfony, and CakePHP.
Python: Django, Pylons, and Zope.
Go: Gin, Beego, Martini.
Ruby: Sinatra, Hanami, and of course Rails.
This list is by no means extensive - just tracking down all the available frameworks for a single language would be an article in it's own. But it does display the variety of choices available. Each language and framework has its own capabilities and trade-offs, and that's something you'll have to take into account before you make your choice. (Or after! It's just harder to change your mind at that point.)
Development build system
Actually, let's take a step back for a second. Sure, those are the basics, but you still need someplace to run all that code, and in a way that speeds up your evaluation of code changes.
You could run everything on your local machine, but that's rarely ideal. For starters, your local environment is highly unlikely to resemble your production environment, and you don't want seemingly-minor differences causing problems when you deploy. Plus, it's very hard (comparatively) to automate local environment setup, so adding anyone else to the project is bound to cause conflict, especially if they want to use an entirely different OS from you.
You have a lot of options for this, but the two easiest/most-common are:
1) Use a Virtual Machine
Virtual Machines have the advantage of being very simple to understand and work with. If you know how to navigate your own system, you'll know how to navigate a virtual one just fine. They're easily automated with something like Ansible, and easy to use for development with something like Vagrant. Plus, you'll likely only need to modify a bit of your Ansible scripts or variables to turn your development deploy script into a production deploy script.
But they can be a bit heavy, as they are emulating an entire other machine. There are good solutions to this (enabling CPU optimizations, using AMIs or other machine images to reduce deploy time, etc), but there's also an alternative.
2) Use docker
Docker containers are crazy lightweight. Essentially, they just run the bits of the system required to run your code, as dictated by you. Plus, a great many CI systems accept dockerfiles as input to automatically run tests and deploys of your code. A well-built docker setup is a thing of beauty.
However, docker can be a bit confusing. It requires learning a different mindset and tooling from working directly on a machine or virtual machine, and can lead you naturally towards more-complex solutions where a simpler one would otherwise work better for your use case. (Hello, microservices!)
Reducing your development cycle time with watchers
A small thing that can save you a lot of time is setting watchers on your code. These are programs that keep an eye out for changes in your code, then re-compile and restart servers so that the latest version of your code is always running when you refresh your browser. Many of the tools you'll use will come with built-in watchers (webpack, for example), but for others, you'll need to install your own (nodemon to watch your Node.js server).
And like with anything else, there's configuration you have to do to make sure that each watcher is only watching the correct directories, that files are shared between your host system and VM/docker container in a fast method that won't trip up your watchers, etc.
Application template & UI architecture
With any luck, you'll have a design already to work with, but you still need to translate that design into an application template and common UI components and architecture. A good CSS framework can really help here, allowing you to set up common colours and sizes that you can use across the entire project, and using component-based development can allow you to, say, create a TextInput element once, then use it across your project multiple times. You'll also need to set up some form of menu infrastructure that allows you to enable/disable or hide/show certain menus based on user access or page location.
Logging
Proper logging can give you more and more-useful information than a slapdash setup can. You'll want to log requests and request data, useful checkpoint information, and the usual stuff - errors, stack traces, etc. But you also want to make sure not to log too much. For example, you'll obviously want to omit passwords, but you should also in general omit headers, especially headers containing authentication tokens, for obvious security reasons.
Database migrations
Database schemas are part of your app as well, and that means they need to be represented as code somewhere and checked into version control. Manually updating your production database to match your development database is amateur-hour.
So in addition to your back-end frameworks and your front-end frameworks, you'll need a database migration framework, and you'll need to write migrations for it.
Users
Users are the fundamental primitive of a SaaS application, and there's a common set of interactions you'll require: sign-up, login, logout, edit profile, etc. But sitting underneath all that is a bit of a contentious topic: user authentication.
There are a bunch of ways to do user authentication, but most of them are wrong and will end up leaving you with security vulnerabilities. JWTs are popular and can be secured, but you need to follow some best practices:
Don't store JWTs in localStorage, since any JS that runs on your page can access them, and if you get hit with a cross-site scripting attack, they can export your tokens en masse.
Store JWTs in secure, HTTPS-only cookies.
Include a global version code in your JWTs so that you can instantly invalidate all JWTs every issued.
Include a user version code in your JWTs so that a user can instantly invalidate all JWTs ever issued for them specifically. This is useful to include a "log out all devices" option for users who may have lost a device or had their account compromised.
Send a Cross-Site Request Forgery token with every request as a javascript-injected header, and make sure that token matches one you've stored for the user on login.
You'll notice a lot of these practices are "in case of a security breach", and you'd hope that if you did everything correctly, they'd be unnecessary. However, that's a fantasy and should be treated as such. No site is 100% secure and bug-free, and yours won't be either. Instead, you need to work in layers, so that if any one layer of security fails, there are still other layers and countermeasures in place.
Form validation
When users sign up, log in, and really all throughout your app, they'll be filling out and submitting forms. These forms will need to be validated for the appropriate data, preferably on both the front-end (before the data is sent to the server, to provide the best experience to the user) and the back-end (to ensure no junk data is saved to the database). If your back-end isn't in JavaScript, you'll need validation libraries for both languages that have the same semantics.
Transactional email
Transactional email is the email you send when certain events happen for your users. These can be lifecycle events, like welcome emails, "trial about to expire" emails, etc, or service-related emails like email address confirmation emails, password reset emails, notifications about your service, etc.
You'll need to find and configure a decent mailer module, and usually perform some DNS configuration at your mail service host's instruction. Some mailer modules will come with template capabilities built-in, while others will leave you to install your own.
Subscriptions/Payments
Getting paid is why most people are going to start a SaaS in the first place, so processing payments and subscriptions is mightily important. Choosing and setting up an account with a payments provider is up to individual preference, but Stripe offers probably the best API and developer experience out there, while PayPal is usually the most-requested provider of choice from users. It's likely that you'll want to offer multiple ways to pay through multiple providers, just to ensure that no potential customer is left behind.
If you offer subscriptions, you'll want to allow users to choose between a monthly billing cycle and an annual one. Annual billing is a great way for dedicated users to save money, while also offering you the benefits of higher LTV and getting you the money up-front, increasing your liquidity.
If you have multiple levels of plans, you'll need to implement the ability for users to change between those levels, usually offering a prorated fee for the month of transition.
Though it's definitely not the "happy path", you'll need to offer users the ability to cancel subscriptions. You shouldn't add extra friction to this, since some users will just be cancelling temporarily, and you want to leave a good impression on them, but it's important to try to capture the reason they're leaving, so you can improve your service.
Production deploy system
Once you've fully-developed your fancy new SaaS, you're going to need to put it up on the web for people to interact with, and for that, you're going to need a deploy system. Even if that system is largely manual, you're going to want defined, repeatable, documented steps that ensure that deploys go off without incident.
You're going to want to cover the following bases, at a minimum:
Ensure server is reachable
Ensure server is set up correctly (correct runtime libraries installed, etc.)
Update code
Run DB migrations
Ensure front-end UI code is not cached in user's browser (update ETags, etc)
There are a whole lot more things you can do to ensure a safe and clean deploy, but this list is at least a good starting place.
Production backups
Much like how we discussed security in layers above, backups of production data are another layer of defence in case something goes wrong. If you're still using manual processes to alter user data, it can be very easy for a slip of the keys to accidentally alter or delete the wrong user's data. And if you're using automated processes, it's usually a lot harder to make those simple mistakes, but more complex mistakes can make it very easy to edit or delete huge swathes of user data. Proper backups will one day save your bacon, bet on it.
What makes a proper backup, then? That's a whole topic on its own, but you should start with:
Complete: Don't just backup the database - if the user uploads files, those should be backed up as well.
Regular: Backups should happen on a schedule, ideally daily or more, for more-volatile data.
Retained: You'll want to keep your backups around for a while, though you might want to set up a schedule for longer-retained backups. (i.e. Daily backups retained for 30 days, weekly backups retained for 3 months, monthly backups retained for 1 year.)
Secure: Your backups should be kept with the same level of security as your data. If your data is encrypted at rest, your backups should be as well. Make sure to keep your encryption keys secure. If you lose those keys, you lose the backup.
Tested: A backup that hasn't been tested is not a backup. You don't want to find out that your backup process doesn't work (or stopped working) when you need to restore critical data. There should be an automated test process that runs after backups are created.
If you're lucky, your hosting platform will offer some level of database backup as a service, which will save you a lot of time and effort setting up. It likely won't cover 100% of your needs, but it will get you a lot closer than starting from scratch.
Stuff You're Gonna Want
Okay! That'll get you off the ground, but once you start seeing any success at all, you're going to start wanting something a little more... robust. Eventually, manually editing the database is going to get tedious (not to mention dangerous), and users will start asking the same questions over and over. You're going to have to slow down on development related to your core business and implement a bunch more supporting features.
Admin console
You can edit and delete users directly from the database, sure, but all it takes is one time forgetting to add a WHERE or LIMIT clause to a statement to make you long for a proper administration console. (And backups. You set up backups, right?)
An admin console is also a great place for dashboards, user statistics, summaries, metrics, etc. Your admin console can become your one-stop-shop for running your SaaS.
Documentation
Documentation can serve multiple purposes. Primarily, it's for user education, but conveniently, this is user education you don't have to do manually. Think about it like automated customer support - a user that answer their question from your documentation is a user that doesn't email you.
If your documentation is publicly available, it can also help users make purchasing decisions. By answering questions about your service openly and up-front, you can let users more-easily determine if your service will work for them, as well as reassure them about your transparency.
Public documentation also helps with SEO, since your keywords will likely naturally come up frequently on your documentation pages.
Billing history
Once you have a sufficient number or sufficiently large customers, you'll likely start getting requests around tax time for their billing history. Your payment system will keep track of payments for you, and many of them will be able to generate invoices from their web interface that you can send to customers who request it.
That might hold you for a while, but eventually, you'll want this functionality built into your system, so clients can self-serve, and your customer support team can focus on more-important issues.
Stuff That's Gonna Make Your Life A Lot Easier
Making the right decisions early on and as your service grows can have compounding benefits, but frequently, it's difficult to find time to devote to tasks that aren't seen as critical. Still, if you can make the time to invest in them, it can pay off for you and your users as well.
Pause subscriptions & credit
Especially now, when people are trying to cut costs in both their lives and businesses, the ability to pause a subscription instead of cancel it outright can mean the difference between saving a customer and losing them. Similarly, the ability to credit customers some free time or usage on your service can aid in retention, especially if something goes wrong and you want to make it up to them.
User ID obfuscation
When displaying publicly-visible auto-incrementing IDs (such as user IDs), it can be a good idea to obfuscate what that number actually is. This prevents competitors and skittish customers from identifying how much usage your service has seen so far. A great library for this is Hashids, which has many compatible implementations across many languages.
Limited number of development languages
The fewer languages your app uses, the less common code that you'll have to duplicate between the various services and projects you require. Some are going to be unavoidable, such as JavaScript if you have a web app with any serious browser interactions, Swift for iOS, and Java/Kotlin for Android. Web apps, however, offer a truly terrifying number of languages you can choose for server code: PHP, Ruby, JavaScript, Typescript, Go, Rust, Java, Python, Perl, Scala, Erlang, and even C# and C++. In a microservices environment, it can be tempting to use a variety of languages for your different services, but that means redeveloping and maintaining common libraries for every new language you want to include.
In extreme situations, you can limit yourself to just one language, even across multiple disparate platforms. JavaScript can do front-end and back-end web development, desktop development through Electron, and mobile development through Cordova. There are definite trade-offs for going this route, but for a smaller studio, this opens up a multi-platform strategy on a limited budget.
Linters
Linters like ESLint, RuboCop, and Flake8 can make a marked improvement in your code. They can catch stylistic errors long before they make it into production, and many stylistic errors are really just shortcomings of your chosen language, where hard-to-find bugs breed and propagate.
Monorepo
Monorepos are great! They're especially great if you're just starting your SaaS, as they're far simpler than trying to work with multiple repositories when managing dependencies, figuring out code re-use, and ensuring that all the correct code is committed before deploys go out.
Everyone's situation is different, of course, and it may make sense in your case to go with multiple repositories, or even one day switch to such a strategy, but when you're starting out, you want to limit the complexity of your project as much as you can, and the monorepo strategy will definitely pay off in this regard.
User impersonation
Being able to log in as your users from your Admin Console can help immensely when trying to sort out customer service issues. Instead of having several back-and-forth "what do you see now?" emails, you can just log in as them and find out. There are a lot of things to consider when writing a user impersonation feature, however: Do you require special access to impersonate users? Do you require the user's permission to impersonate them? Are actions taken while impersonated logged? Can you even take actions when impersonating, or view only? How do you indicate that you are impersonating a user (vs. logged in under your own account)?
These aren't the only considerations, but ideally it's enough to make the point that there's a lot more to user impersonation than simply changing a token ID.
Improved production deployments
Once you start getting enough customers with sufficient expectations, you'll have to make modifications to your deploy process for increased reliability and flexibility:
Updating in-place won't work forever. Eventually, switching to blue/green deploys or even something as simple as displaying a maintenance mode page while you update will be necessary to keep people from interacting with the system while performing significant changes.
If you have a complex SPA, you'll want to be able to inform users when you've made an update that requires reloading that code. Tracking version numbers both in your UI code and on the server will allow you to pop up a notification, allowing the user to save their work and then reload.
Ideally, you should be using a bug tracking service. If you also send your source maps to them when performing a deploy, they can provide even better error messages when UI errors occur.
Serving your UI JavaScript from your server is simple and easy, but users appreciate fast, and your job is to do the hard work so that users have a good time. A relatively easy way to speed up your user's experience is to upload your UI JavaScript on release to a CDN. This is a one-time change you need to make that pays dividends for your users going forwards.
You'll likely be manually checking that releases go as expected, but automated smoke tests that run on every deploy are a better way to catch issues that might otherwise slip by you when you're tired, distracted, or in a hurry.
What's the alternative?
If you don't want to start from an empty folder and write all this code yourself, you should consider using a SaaS starter kit, and it just so happens that you're reading the blog for one right now! With Nodewood, you can get started writing business logic today, saving weeks or even months of development time.
Nodewood starts you off with a full working web app, with a Vue front-end and Express back-end, built entirely from JavaScript. Form validation, testing, user authentication and management, subscription/billing are all built-in, alongside a sleek and customizable application theme with an easy-to-extend admin console.
0 notes
Note
Hello! Do you have anything of Lukas or Forsyth? Missed reading your Echoes fics!
(Yooo!! Let's bring back Echoes with not only Lukas and Forsyth, but Python as well!! Here's the triangle bros talking abt having a family with their Ava...!!!)
Forsyth: When you first pop the question of starting a family, Forsyth nearly spits out his drink. Granted it was your own fault for asking him right when he took a sip, but you weren’t expecting such a violent reaction.
It was followed by a spluttering, a bright red face and wide eyes, his mouth agape as he stumbled into asking why that came up.
You were embarrassed to have even thought of it. His reaction made it very clear that wasn’t something he was thinking about.
You told him to put it out of his mind, stammered out some sort of excuse about needing to go to bed early, and you quickly escaped the awkward situation.
Your hands were pressed over your face as you struggled to suppress your own embarrassed reddening, turned on your side so you could at least pretend to be asleep if he tried to come into the room and talk.
It would be so much better to pretend this never happened. It was a silly question. You’d only been married for six months- you had rushed him on the idea.
At least, that’s what you thought.
Then you felt a warm hand reach from behind you and take your wrist, and you felt his lips touch your fingertips.
“Ava, can I talk to you?”
Slowly, painstakingly, you turned over to see him on his side of the bed, lying there beside you and looking quite concerned.
“I-I wanted to apologize about before. I didn’t-”
“Oh, no, don’t- it was my fault for putting that much pressure on you, all of a sudden. I shouldn’t have asked you about having a baby so soon.”
“What? N-no! It’s not that.” He stopped you quickly, “I was just caught off-guard. It’s not...that I don’t want to start a family with you...I-I just...the idea of us really trying for a baby...a-and actually having one is...it made me feel a bit shy, you know?”
“Not really…” You trailed off, a bit confused. He swallowed down his pride and his embarrassment, enough to explain what he meant.
He was the luckiest man alive being married to you, and the thought of being the father of your child was just too much to bear. He was so excited and elated and filled with love that you’d even want to start a family with him…
He still couldn’t wrap his head around it.
You stared at him, unblinking, for several seconds. Your first response when you recovered was to smack his arm.
Then you kissed him, then you buried your face in his chest to hide your embarrassment, unable to tell him that you thought it was because he didn’t want children and you were horrified of your actions.
You later apologized for hitting him, and more than made up for it when you started your journey to having a baby later in the evening.
-------------------------
Lukas: He had frozen up when he finally realized the words that had come out of your mouth were real. He didn’t really react, other than his whole body going rigid.
He had been in the middle of his favorite book, the two of you winding down for the evening, settled into bed, cozy and peaceful…
Then you asked him what he thought about starting a family.
When it took him longer than ten seconds to form a response, you quickly added that it didn’t need to be right away, that he could take all the time he needed to think about it, and you weren’t in any rush to have kids if that wasn’t something he wanted.
You knew that he had been something of an asexual prior to meeting you...intimacy and love weren’t things that he really needed, and he was just fine without it.
Then when he met you, those things had gradually started to change. It was him that proposed to you, for crying out loud.
And your marriage had been healthy, if not peaceful and sweet, for the one year it had been so far.
You thought you were jumping the gun on asking when it took him ages and ages to put words together.
“You mean...a baby?”
“W-what else?” You chuckled nervously, looking at him with a lopsided smile. “It’s not a big deal, Lukas- I wouldn’t want you to do anything you’re uncomfortable with. I just...thought I’d ask if you might want to consider it, sometime.”
“Well…” He trailed off, the sound of the book closing like an echo in the silence. “It’s not something I haven’t thought about, every now and then. I’ve seen how happy Clive and Mathilda are with their children...and Boey and Mae…”
“But is it something that you want?”
“I do.” He said firm enough that you honestly believed him. You smiled softly, sighing in relief when you saw the sweet smile on Lukas’ lips.
“I’m glad. But, listen, Lu...it doesn’t have to happen right away. A baby is a lot of responsibility, and it’s a seriously life-changing decision. I want to enjoy the peace I have with you as long as I can.”
“It would be difficult to find some peace with a child around, wouldn’t it?” Lukas mused, sinking back into the pillows. You giggled as you sank down beside him, resting your head on his chest and draping your arm over him.
“There will be many sleepless nights, and our attention will solely be on the baby for a while. Lots of crying and laughing, and that cute baby babble, too.”
“It may not be peaceful,” He yawned, “But...it wouldn’t be a terrible change.”
-------------------------
Python: The first thing he did was laugh.
He thought you were joking.
The two of you had talked at length about how awful children could be. The brats that ran around the capital when you were on patrols were nauseating to watch. They were so whiny, and noisy, and they cried incessantly if the slightest thing went wrong…
You didn’t know why anyone would want such a thing.
At least, that’s what you thought. Then, the longer you were married to your husband (a feat in and of itself), the more you realized how sweet it would be to hear the pitter patter of little feet in the house, and to see a tuft of blue hair bouncing around, following behind Python.
And it may or may not have been a dream you had about six nights in a row.
You explained this to him, and it didn’t take long for the grin to wipe from his face. You told him that you had gone to Tatiana and asked her about the repeating dream.
She very excitedly told you it was definitely a gift from the goddess, a sign that it was time for you to have children. You wanted it deep down, and this was your body’s way of telling you it was baby time.
Python, however, was less convinced.
“You really wanna have a kid? What if it’s like one of those brats that are always runnin’ around the city? You wanna add to that madness?”
“Well, they wouldn’t necessarily be badly behaved- Mathilda’s kids are all perfect.”
“That’s because their parents are the most perfect people on the entire planet.” Python scoffed.
“Mae and Boey’s kids are rowdy, but they do as they’re told, too.”
“After Mae threatens to smack them over the head.”
“What about Zeke’s daughter? She’s so sweet and quiet- don’t you think we could have a kid like that?”
“Baby, have you met me?” He gestured to himself, “I’m about as rowdy as they come- if you think for one second our kid’s not gonna be wild, you’ve got another thing comin’.”
“I suppose so.” You managed to smile at him, though the disappointment was clear in your eyes. “I just thought it was a nice idea. It’s not like I want to have a dozen brats running around, but...I don’t know...one little guy that looked like you but definitely had my nose...it was a cute idea, right?”
“Sure.” He chuckled, “Some blue-haired, wiry little boy with that nose of yours-”
“It’s way better than your nose.”
“I didn’t disagree!” He laughed louder, “I mean, who’d he take after, really? He’d be just like me. I was a serious pain when I was a kid. If my ma was around, she’d tell ya.”
“I’ll bet she didn’t regret raising you, though.”
“Nah. She would go on and on about how proud of me she was whenever she answered my letters. I don’t doubt that the minute I meet my kid for the first time, I’m gonna be nothin’ but proud of’em. ...I-if I ever wanted one, anyways.”
You bit back the grin on your lips. “Of course. It certainly doesn’t sound like you want one, not at all.”
“Good, ‘cos I definitely don’t want one right now!” Python insisted, nudging your shoulder. “You hear me, woman? I don’t want anything to do with a brat, at this particular moment in time.”
“I heard you, dear.”
“As of this exact moment, this period of time, this present day, I do not under any circumstances-”
“I got it, Python, I got it!!” You burst out laughing, playfully pushing your husband away. “We don’t have to have a kid right now!”
And you didn’t.
It happened about six months later, which Python would later comment was exactly when he wanted to have one.
Even though the kid looked exactly like him, the baby absolutely had your temperament. Which was really bad- that little baby girl had him wrapped around her fingers before he knew what happened.
(He never really complained about that, though.)
#forsyth#lukas#python#fe 15#fire emblem echoes#fe echoes#f!avatar#fem!ava#f!ava#forsyth x ava#lukas x ava#python x ava#fluff#i miss the echoes boys a lot
17 notes
·
View notes