#article bundle
Explore tagged Tumblr posts
digiyah · 2 years ago
Text
1 note · View note
oifaaa · 1 year ago
Note
How is Bruce doing in the Jason lives au?
I means it's Bruce so even if Jason didn't die I'm sure he'll still manager to get worse just means he can't blame it on Jason's death in this universe
87 notes · View notes
weird-will · 8 months ago
Text
Lol remedy took down the collectors edition article from the AW2 website 😅
8 notes · View notes
unofskylanderspages · 3 months ago
Text
Tumblr media
Did you know? For some reason, in some versions of Spyro's Adventure, the Hidden Treasure item does not work in the Darklight Crypt.
3 notes · View notes
whentherewerebicycles · 1 year ago
Text
okay well we spent two hours doing a small group brainstorming/planning activity using projects from people’s work and that was actually fun—I love doing that kind of ideation and planning work with people. then we had to sit through 30+ min of whole-group debrief where people stood up and monologued breathlessly about feeling held by the collective as we harvested each other’s wisdom which almost ruined the experience. but luckily I came prepared with a challenge to work through in my head lol.
today’s zoning-out project is mapping out the basic research skills class I’ll be teaching in the spring quarter. one of the big problems I’ve identified in my info-gathering interviews is that students can’t do some pretty basic research things (like reading academic articles, evaluating sources, conducting lit reviews on a given topic, etc) and so faculty don’t want to take them on as summer research assistants because it’s a ton of work to train them in those skills AND familiarize them with the faculty member’s questions and methods AND give them a crash-course on the existing scholarship around this topic. so I am trying to pilot a thing where faculty get extra research funds for taking on a small group of summer students… but my office takes them for a quarter first, trains them in those basic skills and helps them build relationships with the librarians, and has them do all their major activities & assignments using real sources/data related to the faculty member’s project. that way students have 10 weeks to practice the skills and learn at least some of the research before we hand them off to the faculty mentors for the summer. I think we will also provide ongoing mentoring + student services-type support throughout the summer so we can continue working on project management and skill-building type stuff with them individually as they are conducting research… but for now I am focusing on drafting a version of the spring course to workshop with the faculty members who have expressed interest in participating. anyway I am at the very earliest stages but today while zoning out I spent some time trying to unbundle some of the skills that go into engaging with academic sources… needs refining (and maybe even some more unbundling?) but here is a first stab at it:
Tumblr media
15 notes · View notes
fierykitten2 · 1 year ago
Text
Tumblr media Tumblr media
I’ve had an idea!
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Yeah! Taste the rainbow (not sponsored by Skittles)!
Images from the Metroid wiki and Bulbapedia
9 notes · View notes
jcmarchi · 2 months ago
Text
WordPress Multi-Multisite: A Case Study
New Post has been published on https://thedigitalinsider.com/wordpress-multi-multisite-a-case-study/
WordPress Multi-Multisite: A Case Study
The mission: Provide a dashboard within the WordPress admin area for browsing Google Analytics data for all your blogs.
The catch? You’ve got about 900 live blogs, spread across about 25 WordPress multisite instances. Some instances have just one blog, others have as many as 250. In other words, what you need is to compress a data set that normally takes a very long time to compile into a single user-friendly screen.
The implementation details are entirely up to you, but the final result should look like this Figma comp:
Design courtesy of the incomparable Brian Biddle.
I want to walk you through my approach and some of the interesting challenges I faced coming up with it, as well as the occasional nitty-gritty detail in between. I’ll cover topics like the WordPress REST API, choosing between a JavaScript or PHP approach, rate/time limits in production web environments, security, custom database design — and even a touch of AI. But first, a little orientation.
Let’s define some terms
We’re about to cover a lot of ground, so it’s worth spending a couple of moments reviewing some key terms we’ll be using throughout this post.
What is WordPress multisite?
WordPress Multisite is a feature of WordPress core — no plugins required — whereby you can run multiple blogs (or websites, or stores, or what have you) from a single WordPress installation. All the blogs share the same WordPress core files, wp-content folder, and MySQL database. However, each blog gets its own folder within wp-content/uploads for its uploaded media, and its own set of database tables for its posts, categories, options, etc. Users can be members of some or all blogs within the multisite installation.
What is WordPress multi-multisite?
It’s just a nickname for managing multiple instances of WordPress multisite. It can get messy to have different customers share one multisite instance, so I prefer to break it up so that each customer has their own multisite, but they can have many blogs within their multisite.
So that’s different from a “Network of Networks”?
It’s apparently possible to run multiple instances of WordPress multisite against the same WordPress core installation. I’ve never looked into this, but I recall hearing about it over the years. I’ve heard the term “Network of Networks” and I like it, but that is not the scenario I’m covering in this article.
Why do you keep saying “blogs”? Do people still blog?
You betcha! And people read them, too. You’re reading one right now. Hence, the need for a robust analytics solution. But this article could just as easily be about any sort of WordPress site. I happen to be dealing with blogs, and the word “blog” is a concise way to express “a subsite within a WordPress multisite instance”.
One more thing: In this article, I’ll use the term dashboard site to refer to the site from which I observe the compiled analytics data. I’ll use the term client sites to refer to the 25 multisites I pull data from.
My implementation
My strategy was to write one WordPress plugin that is installed on all 25 client sites, as well as on the dashboard site. The plugin serves two purposes:
Expose data at API endpoints of the client sites
Scrape the data from the client sites from the dashboard site, cache it in the database, and display it in a dashboard.
The WordPress REST API is the Backbone
The WordPress REST API is my favorite part of WordPress. Out of the box, WordPress exposes default WordPress stuff like posts, authors, comments, media files, etc., via the WordPress REST API. You can see an example of this by navigating to /wp-json from any WordPress site, including CSS-Tricks. Here’s the REST API root for the WordPress Developer Resources site:
The root URL for the WordPress REST API exposes structured JSON data, such as this example from the WordPress Developer Resources website.
What’s so great about this? WordPress ships with everything developers need to extend the WordPress REST API and publish custom endpoints. Exposing data via an API endpoint is a fantastic way to share it with other websites that need to consume it, and that’s exactly what I did:
Open the code
<?php [...] function register(WP_REST_Server $server) $endpoints = $this->get(); foreach ($endpoints as $endpoint_slug => $endpoint) register_rest_route( $endpoint['namespace'], $endpoint['route'], $endpoint['args'] ); function get() $version = 'v1'; return array( 'empty_db' => array( 'namespace' => 'LXB_DBA/' . $version, 'route' => '/empty_db', 'args' => array( 'methods' => array( 'DELETE' ), 'callback' => array($this, 'empty_db_cb'), 'permission_callback' => array( $this, 'is_admin' ), ), ), 'get_blogs' => array( 'namespace' => 'LXB_DBA/' . $version, 'route' => '/get_blogs', 'args' => array( 'methods' => array('GET', 'OPTIONS'), 'callback' => array($this, 'get_blogs_cb'), 'permission_callback' => array($this, 'is_dba'), ), ), 'insert_blogs' => array( 'namespace' => 'LXB_DBA/' . $version, 'route' => '/insert_blogs', 'args' => array( 'methods' => array( 'POST' ), 'callback' => array($this, 'insert_blogs_cb'), 'permission_callback' => array( $this, 'is_admin' ), ), ), 'get_blogs_from_db' => array( 'namespace' => 'LXB_DBA/' . $version, 'route' => '/get_blogs_from_db', 'args' => array( 'methods' => array( 'GET' ), 'callback' => array($this, 'get_blogs_from_db_cb'), 'permission_callback' => array($this, 'is_admin'), ), ), 'get_blog_details' => array( 'namespace' => 'LXB_DBA/' . $version, 'route' => '/get_blog_details', 'args' => array( 'methods' => array( 'GET' ), 'callback' => array($this, 'get_blog_details_cb'), 'permission_callback' => array($this, 'is_dba'), ), ), 'update_blogs' => array( 'namespace' => 'LXB_DBA/' . $version, 'route' => '/update_blogs', 'args' => array( 'methods' => array( 'PATCH' ), 'callback' => array($this, 'update_blogs_cb'), 'permission_callback' => array($this, 'is_admin'), ), ), );
We don’t need to get into every endpoint’s details, but I want to highlight one thing. First, I provided a function that returns all my endpoints in an array. Next, I wrote a function to loop through the array and register each array member as a WordPress REST API endpoint. Rather than doing both steps in one function, this decoupling allows me to easily retrieve the array of endpoints in other parts of my plugin to do other interesting things with them, such as exposing them to JavaScript. More on that shortly.
Once registered, the custom API endpoints are observable in an ordinary web browser like in the example above, or via purpose-built tools for API work, such as Postman:
PHP vs. JavaScript
I tend to prefer writing applications in PHP whenever possible, as opposed to JavaScript, and executing logic on the server, as nature intended, rather than in the browser. So, what would that look like on this project?
On the dashboard site, upon some event, such as the user clicking a “refresh data” button or perhaps a cron job, the server would make an HTTP request to each of the 25 multisite installs.
Each multisite install would query all of its blogs and consolidate its analytics data into one response per multisite.
Unfortunately, this strategy falls apart for a couple of reasons:
PHP operates synchronously, meaning you wait for one line of code to execute before moving to the next. This means that we’d be waiting for all 25 multisites to respond in series. That’s sub-optimal.
My production environment has a max execution limit of 60 seconds, and some of my multisites contain hundreds of blogs. Querying their analytics data takes a second or two per blog.
Damn. I had no choice but to swallow hard and commit to writing the application logic in JavaScript. Not my favorite, but an eerily elegant solution for this case:
Due to the asynchronous nature of JavaScript, it pings all 25 Multisites at once.
The endpoint on each Multisite returns a list of all the blogs on that Multisite.
The JavaScript compiles that list of blogs and (sort of) pings all 900 at once.
All 900 blogs take about one-to-two seconds to respond concurrently.
Holy cow, it just went from this:
( 1 second per Multisite * 25 installs ) + ( 1 second per blog * 900 blogs ) = roughly 925 seconds to scrape all the data.
To this:
1 second for all the Multisites at once + 1 second for all 900 blogs at once = roughly 2 seconds to scrape all the data.
That is, in theory. In practice, two factors enforce a delay:
Browsers have a limit as to how many concurrent HTTP requests they will allow, both per domain and regardless of domain. I’m having trouble finding documentation on what those limits are. Based on observing the network panel in Chrome while working on this, I’d say it’s about 50-100.
Web hosts have a limit on how many requests they can handle within a given period, both per IP address and overall. I was frequently getting a “429; Too Many Requests” response from my production environment, so I introduced a delay of 150 milliseconds between requests. They still operate concurrently, it’s just that they’re forced to wait 150ms per blog. Maybe “stagger” is a better word than “wait” in this context:
Open the code
async function getBlogsDetails(blogs) let promises = []; // Iterate and set timeouts to stagger requests by 100ms each blogs.forEach((blog, index) => if (typeof blog.url === 'undefined') return; let id = blog.id; const url = blog.url + '/' + blogDetailsEnpointPath + '?uncache=' + getRandomInt(); // Create a promise that resolves after 150ms delay per blog index const delayedPromise = new Promise(resolve => setTimeout(async () => try const blogResult = await fetchBlogDetails(url, id); if( typeof blogResult.urls == 'undefined' ) console.error( url, id, blogResult ); else if( ! blogResult.urls ) console.error( blogResult ); else if( blogResult.urls.length == 0 ) console.error( blogResult ); else console.log( blogResult ); resolve(blogResult); catch (error) console.error(`Error fetching details for blog ID $id:`, error); resolve(null); // Resolve with null to handle errors gracefully , index * 150); // Offset each request by 100ms ); promises.push(delayedPromise); ); // Wait for all requests to complete const blogsResults = await Promise.all(promises); // Filter out any null results in case of caught errors return blogsResults.filter(result => result !== null);
With these limitations factored in, I found that it takes about 170 seconds to scrape all 900 blogs. This is acceptable because I cache the results, meaning the user only has to wait once at the start of each work session.
The result of all this madness — this incredible barrage of Ajax calls, is just plain fun to watch:
PHP and JavaScript: Connecting the dots
I registered my endpoints in PHP and called them in JavaScript. Merging these two worlds is often an annoying and bug-prone part of any project. To make it as easy as possible, I use wp_localize_script():
<?php [...] class Enqueue function __construct() add_action( 'admin_enqueue_scripts', array( $this, 'lexblog_network_analytics_script' ), 10 ); add_action( 'admin_enqueue_scripts', array( $this, 'lexblog_network_analytics_localize' ), 11 ); function lexblog_network_analytics_script() wp_register_script( 'lexblog_network_analytics_script', LXB_DBA_URL . '/js/lexblog_network_analytics.js', array( 'jquery', 'jquery-ui-autocomplete' ), false, false ); function lexblog_network_analytics_localize() $a = new LexblogNetworkAnalytics; $data = $a -> get_localization_data(); $slug = $a -> get_slug(); wp_localize_script( 'lexblog_network_analytics_script', $slug, $data ); // etc.
In that script, I’m telling WordPress two things:
Load my JavaScript file.
When you do, take my endpoint URLs, bundle them up as JSON, and inject them into the HTML document as a global variable for my JavaScript to read. This is leveraging the point I noted earlier where I took care to provide a convenient function for defining the endpoint URLs, which other functions can then invoke without fear of causing any side effects.
Here’s how that ended up looking:
The JSON and its associated JavaScript file, where I pass information from PHP to JavaScript using wp_localize_script().
Auth: Fort Knox or Sandbox?
We need to talk about authentication. To what degree do these endpoints need to be protected by server-side logic? Although exposing analytics data is not nearly as sensitive as, say, user passwords, I’d prefer to keep things reasonably locked up. Also, since some of these endpoints perform a lot of database queries and Google Analytics API calls, it’d be weird to sit here and be vulnerable to weirdos who might want to overload my database or Google Analytics rate limits.
That’s why I registered an application password on each of the 25 client sites. Using an app password in php is quite simple. You can authenticate the HTTP requests just like any basic authentication scheme.
I’m using JavaScript, so I had to localize them first, as described in the previous section. With that in place, I was able to append these credentials when making an Ajax call:
async function fetchBlogsOfInstall(url, id) let install = lexblog_network_analytics.installs[id]; let pw = install.pw; let user = install.user; // Create a Basic Auth token let token = btoa(`$user:$pw`); let auth = 'Authorization': `Basic $token` ; try let data = await $.ajax( url: url, method: 'GET', dataType: 'json', headers: auth ); return data; catch (error) console.error('Request failed:', error); return [];
That file uses this cool function called btoa() for turning the raw username and password combo into basic authentication.
The part where we say, “Oh Right, CORS.”
Whenever I have a project where Ajax calls are flying around all over the place, working reasonably well in my local environment, I always have a brief moment of panic when I try it on a real website, only to get errors like this:
Oh. Right. CORS. Most reasonably secure websites do not allow other websites to make arbitrary Ajax requests. In this project, I absolutely do need the Dashboard Site to make many Ajax calls to the 25 client sites, so I have to tell the client sites to allow CORS:
<?php // ... function __construct() add_action( 'rest_api_init', array( $this, 'maybe_add_cors_headers' ), 10 ); function maybe_add_cors_headers() // Only allow CORS for the endpoints that pertain to this plugin. if( $this->is_dba() ) add_filter( 'rest_pre_serve_request', array( $this, 'send_cors_headers' ), 10, 2 ); function is_dba() $url = $this->get_current_url(); $ep_urls = $this->get_endpoint_urls(); $out = in_array( $url, $ep_urls ); return $out; function send_cors_headers( $served, $result ) // Only allow CORS from the dashboard site. $dashboard_site_url = $this->get_dashboard_site_url(); header( "Access-Control-Allow-Origin: $dashboard_site_url" ); header( 'Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Authorization' ); header( 'Access-Control-Allow-Methods: GET, OPTIONS' ); return $served; [...] }
You’ll note that I’m following the principle of least privilege by taking steps to only allow CORS where it’s necessary.
Auth, Part 2: I’ve been known to auth myself
I authenticated an Ajax call from the dashboard site to the client sites. I registered some logic on all the client sites to allow the request to pass CORS. But then, back on the dashboard site, I had to get that response from the browser to the server.
The answer, again, was to make an Ajax call to the WordPress REST API endpoint for storing the data. But since this was an actual database write, not merely a read, it was more important than ever to authenticate. I did this by requiring that the current user be logged into WordPress and possess sufficient privileges. But how would the browser know about this?
In PHP, when registering our endpoints, we provide a permissions callback to make sure the current user is an admin:
<?php // ... function get() $version = 'v1'; return array( 'update_blogs' => array( 'namespace' => 'LXB_DBA/' . $version, 'route' => '/update_blogs', 'args' => array( 'methods' => array( 'PATCH' ), 'callback' => array( $this, 'update_blogs_cb' ), 'permission_callback' => array( $this, 'is_admin' ), ), ), // ... ); function is_admin() $out = current_user_can( 'update_core' ); return $out;
JavaScript can use this — it’s able to identify the current user — because, once again, that data is localized. The current user is represented by their nonce:
async function insertBlog( data ) let url = lexblog_network_analytics.endpoint_urls.insert_blog; try await $.ajax( url: url, method: 'POST', dataType: 'json', data: data, headers: 'X-WP-Nonce': getNonce() ); catch (error) console.error('Failed to store blogs:', error); function getNonce() if( typeof wpApiSettings.nonce == 'undefined' ) return false; return wpApiSettings.nonce;
The wpApiSettings.nonce global variable is automatically present in all WordPress admin screens. I didn’t have to localize that. WordPress core did it for me.
Cache is King
Compressing the Google Analytics data from 900 domains into a three-minute loading .gif is decent, but it would be totally unacceptable to have to wait for that long multiple times per work session. Therefore I cache the results of all 25 client sites in the database of the dashboard site.
I’ve written before about using the WordPress Transients API for caching data, and I could have used it on this project. However, something about the tremendous volume of data and the complexity implied within the Figma design made me consider a different approach. I like the saying, “The wider the base, the higher the peak,” and it applies here. Given that the user needs to query and sort the data by date, author, and metadata, I think stashing everything into a single database cell — which is what a transient is — would feel a little claustrophobic. Instead, I dialed up E.F. Codd and used a relational database model via custom tables:
In the Dashboard Site, I created seven custom database tables, including one relational table, to cache the data from the 25 client sites, as shown in the image.
It’s been years since I’ve paged through Larry Ullman’s career-defining (as in, my career) books on database design, but I came into this project with a general idea of what a good architecture would look like. As for the specific details — things like column types — I foresaw a lot of Stack Overflow time in my future. Fortunately, LLMs love MySQL and I was able to scaffold out my requirements using DocBlocks and let Sam Altman fill in the blanks:
Open the code
<?php /** * Provides the SQL code for creating the Blogs table. It has columns for: * - ID: The ID for the blog. This should just autoincrement and is the primary key. * - name: The name of the blog. Required. * - slug: A machine-friendly version of the blog name. Required. * - url: The url of the blog. Required. * - mapped_domain: The vanity domain name of the blog. Optional. * - install: The name of the Multisite install where this blog was scraped from. Required. * - registered: The date on which this blog began publishing posts. Optional. * - firm_id: The ID of the firm that publishes this blog. This will be used as a foreign key to relate to the Firms table. Optional. * - practice_area_id: The ID of the firm that publishes this blog. This will be used as a foreign key to relate to the PracticeAreas table. Optional. * - amlaw: Either a 0 or a 1, to indicate if the blog comes from an AmLaw firm. Required. * - subscriber_count: The number of email subscribers for this blog. Optional. * - day_view_count: The number of views for this blog today. Optional. * - week_view_count: The number of views for this blog this week. Optional. * - month_view_count: The number of views for this blog this month. Optional. * - year_view_count: The number of views for this blog this year. Optional. * * @return string The SQL for generating the blogs table. */ function get_blogs_table_sql() $slug = 'blogs'; $out = "CREATE TABLE $this->get_prefix()_$slug ( id BIGINT NOT NULL AUTO_INCREMENT, slug VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, url VARCHAR(255) NOT NULL UNIQUE, /* adding unique constraint */ mapped_domain VARCHAR(255) UNIQUE, install VARCHAR(255) NOT NULL, registered DATE DEFAULT NULL, firm_id BIGINT, practice_area_id BIGINT, amlaw TINYINT NOT NULL, subscriber_count BIGINT, day_view_count BIGINT, week_view_count BIGINT, month_view_count BIGINT, year_view_count BIGINT, PRIMARY KEY (id), FOREIGN KEY (firm_id) REFERENCES $this->get_prefix()_firms(id), FOREIGN KEY (practice_area_id) REFERENCES $this->get_prefix()_practice_areas(id) ) DEFAULT CHARSET=utf8mb4;"; return $out;
In that file, I quickly wrote a DocBlock for each function, and let the OpenAI playground spit out the SQL. I tested the result and suggested some rigorous type-checking for values that should always be formatted as numbers or dates, but that was the only adjustment I had to make. I think that’s the correct use of AI at this moment: You come in with a strong idea of what the result should be, AI fills in the details, and you debate with it until the details reflect what you mostly already knew.
How it’s going
I’ve implemented most of the user stories now. Certainly enough to release an MVP and begin gathering whatever insights this data might have for us:
It’s working!
One interesting data point thus far: Although all the blogs are on the topic of legal matters (they are lawyer blogs, after all), blogs that cover topics with a more general appeal seem to drive more traffic. Blogs about the law as it pertains to food, cruise ships, germs, and cannabis, for example. Furthermore, the largest law firms on our network don’t seem to have much of a foothold there. Smaller firms are doing a better job of connecting with a wider audience. I’m positive that other insights will emerge as we work more deeply with this.
Regrets? I’ve had a few.
This project probably would have been a nice opportunity to apply a modern JavaScript framework, or just no framework at all. I like React and I can imagine how cool it would be to have this application be driven by the various changes in state rather than… drumroll… a couple thousand lines of jQuery!
I like jQuery’s ajax() method, and I like the jQueryUI autocomplete component. Also, there’s less of a performance concern here than on a public-facing front-end. Since this screen is in the WordPress admin area, I’m not concerned about Google admonishing me for using an extra library. And I’m just faster with jQuery. Use whatever you want.
I also think it would be interesting to put AWS to work here and see what could be done through Lambda functions. Maybe I could get Lambda to make all 25 plus 900 requests concurrently with no worries about browser limitations. Heck, maybe I could get it to cycle through IP addresses and sidestep the 429 rate limit as well.
And what about cron? Cron could do a lot of work for us here. It could compile the data on each of the 25 client sites ahead of time, meaning that the initial three-minute refresh time goes away. Writing an application in cron, initially, I think is fine. Coming back six months later to debug something is another matter. Not my favorite. I might revisit this later on, but for now, the cron-free implementation meets the MVP goal.
I have not provided a line-by-line tutorial here, or even a working repo for you to download, and that level of detail was never my intention. I wanted to share high-level strategy decisions that might be of interest to fellow Multi-Multisite people. Have you faced a similar challenge? I’d love to hear about it in the comments!
0 notes
digivault1 · 7 months ago
Text
How to Make Money Online with DigiVault’s All-in-1 Bundle
Unlock the potential of DigiVault’s All-in-1 Bundle and start making money online today! Learn how to resell digital products, offer services, and grow your brand with our comprehensive guide. Dive in now! #MakeMoneyOnline #DigitalProducts #DigiVault
In the modern digital age, the opportunities to make money online are vast and varied. Whether you’re a budding entrepreneur, a seasoned business professional, or someone looking to generate passive income, digital products offer a profitable and scalable avenue. DigiVault, with its extensive range of digital resources, stands out as a premier platform for acquiring high-quality digital products…
Tumblr media
View On WordPress
1 note · View note
fullhalalalchemist · 2 years ago
Text
internet censorship bill about to pass congress:
ao3 is facing a ddos attack from an overseas right-wing anonymous group because it contains "degeneracy and disgusting things like LGBT and NSFW".
they're not the only right-wing group that is attacking fanfiction sites because of queer & nsfw content. the Heritage foundation, the US right wing think tank that writes laws for republicans, wrote an article about how "big tech turns kids trans" in which they're advocating for the Kid's Online Safety Act to pass because it will give state attorney generals power to sue websites for "potentially harmful content towards minors". in this article they point out websites like wattpad, tumblr, tiktok, twitter as sites that GOP attorney generals can and will target for censorship if this bill passes. all places where fandom, that's mostly queer, hangs out.
if you think this bill has no chance of passing because of all the red flags it poses, think again. it currently has 38 cosponsors in the senate, and is being pushed by the democrats as a "protecting the children!!" type bill.
there are left-aligned orgs in congress rn lobbying for this bill to pass. july is extremely decisive, because if KOSA goes through to markup it'll be bundled with the Earn It act, Restrict, and all the other bad internet bills and passed as a package, completely censoring the internet forever.
if you want to learn more about the bill, go here. also sign the open letter against it here
it's ESSENTIAL that you call your members of congress, specifically Maria Cantwell (you can call from out of state) and tell them DO NOT PASS KOSA. this site here connects you to your members of congress and gives you a short simple script to read off of! super easy and doesn't take much out of your day! please do this now!!
23K notes · View notes
lenoraslament · 8 months ago
Note
slytherin boys + edging/orgasm denial!!!
Thanks for the request!
Slytherin Boys React: Edging / Orgasm Denial
Tumblr media
Warnings: 18+, Minors DNI, piv, oral (male and female receiving), degradation, orgasm denial, edging, smut with no plot.
Tumblr media
Mattheo Riddle
“Add Ashwinder egg to a cauldron, then add horseradish and heat” Mattheo’s voice sounded strained as your head bobbed down on his cock. The sound of your gagging muffled his words so you pulled away as he groaned.
“What kind of egg?” Your eyebrow raised as he tried to grab your hair and pull you back. You smack his hand as he gives you a desperate look.
“Ashwinder…baby please” he mutters and you lick the head flicking your tongue over it.
“What’s next?” You asked as your tongue moves down the length.
“Anemone?” Mattheo asks as he grabs the bedsheets, his head falls back as he groans. You sit straight up and he panics. “Thyme? Occamy?” He grabs your wrist trying to pull you back, he’s aching and he bites your lip. Your head is shaking as you hop off, “Rue!? IS IT FUCKING RUE!?” He calls after you but you’re already walking towards his door giving him a devilish smirk.
“You really should study” you tease leaving him panting helplessly on the bed as he reaches for his potions textbook to find the recipe for Felix Felicis hoping he could still get lucky.
Tumblr media
Theodore Nott
Your thighs burned, it was quite a workout. Theo’s head was thudding on the headboard as your rocked your hips back and forth on him. Your ministrations were slow and teasing. His knitted brow, mouth hanging slack as another low groan escaped his lips was worth how absolutely spent you were.
Just when you felt his legs begin to tighten you pulled away giving him a little slap on the cheek.
“Ah fuck” he muttered his eyes nearly rolling back as you ripped another climax away from him. He licked his lips as he looked at you half lidded, “No more teasing, let me fill you up” he muttered in his low voice.
“No” you said haughtily, “why don’t you ask Astoria to?”. Your cheeks were flushed with defiance. You caught them talking, no flirting in the common room.
“I don’t want her baby, I only want you bella” he said in nearly a whiny voice that made you grin.
You sunk back down on his aching, rigid cock as his lips let out another moan.
“Then say my name, and maybe I’ll let you come” you say and snap your hips forward to see if you can chase your own high before you take away his.
Tumblr media
Lorenzo Berkshire
Enzo is flattered, tickled even when you tell him you want him to edge you. What the hell were you thinking? This boy researched. For hours. Reading articles, watching porn, asking his friends.
Your legs are tied to his bedposts, Enzo lays between them observing your impossibly wet pussy. It’s been nearly an hour, your back arches as you desperately seek out a means to an end. His fingers swirl around your swollen clit, eliciting a loud moan from you.
Enzo chuckles and dips two fingers into your cunt, listening to how loudly you cry out from barely any movement. The past hour he has edged you so badly, you nearly begin to beg when he pulls away again.
He ghosts his finger over your sensitive bundle of nerves and you come. Hard. You clench around nothing as your body finally gives in at the faintest touch.
“Holy shit,” Enzo says in a low voice. He didn’t mean for you to finish so soon, although just the sight of you letting go is enough to make him want more.
“Let’s do that again” he says.
Tumblr media
Draco Malfoy
“Don’t be so impatient love,” Draco whispers as he slides his cock over your aching pussy.
“Once…Draco I said it ONCE,” you whine and your eyes roll back as you bite your bottom lip. Earlier in the day he had tried to pull you away from a conversation with Enzo. You made the mistake of rolling your eyes and telling him to “stop being impatient”.
You try and grind yourself up to meet him but he is quick to shove your hips down and onto the bed as he tuts.
“Baby please” you plead as he brushes a strand of hair out of your face.
“So needy for me pretty girl,” he says and shoves himself forward making you gasp. A few strokes and he’s gone again leaving you nearly clawing at his back for more.
Tumblr media
Blaise Zabini
It was time for revenge. After he made you fall apart in the Great Hall you knew you had to get your boyfriend back. It was Friday night and another party in the Slytherin common room was in full swing.
You had on a short, black bodycon dress, no panties. There was work to be done. When you spotted your boyfriend he was laughing with Draco, already a few drinks down.
“I need you baby…now,” you muttered in his ear. He stood nearly immediately and began to lead you to his dorm. You shake your head and pull him down the hall, the sight of the broom closet makes him even more excited. Nothing gets him going like the taboo.
He’s ravaging your lips, neck, chest. When his hands reach your thighs and he realizes you aren’t wearing panties he groans loudly. You hitch your leg up on his waist as he fumbled with his belt. The two of you combined feverishly, he pushes into you with eager strokes.
It’s not long until you hear his breath hitch and you pull away so quickly he is breathless with confusion. You pull away with a wink and open the door, he scrambles to cover himself.
“What am I supposed to do with this?” He asked loudly.
“Save it for later I guess” you call back grinning.
Tumblr media
Tom Riddle
“You think,” Tom snapped forward making your hips bite into the desk, “you’re so damn….” He pulled your hair making you flush to his chest, “funny”.
To be fair it was funny. Tom was in the common room, talking to Mattheo and Draco when you sauntered over. You sat on his lap, your lips moving to his ear, “I’m so wet right now,” you mumbled to Mr. No PDA. Tom’s eyes widened as Draco and Mattheo smirked at you straddling his lap.
He dragged you to his room shortly after, immediately bending you over his desk. His hands yanking your panties to the side as he pushed into you at a punishing pace. You weren’t mad about it, in fact it’s what you wanted.
“I am funny,” you tease defiantly. He pulls away turning you to face him. His eyes are pure rage, the quiet kind that actually makes you nervous. Tom lifts you onto the desk, he spread your legs and dropped to his knees, surprising you.
Under a vicelike grip on your thighs, he flutters his tongue softly, almost delicately. Tom does not usually go down on you, even though he is absolutely phenomenal at it. Within minutes you’re trembling, eyes rolling back so close to your orgasm you can nearly taste it.
Then he pulls away, wiping his mouth as he observes at your shocked face. Before you can protest he grins.
“See, I can be funny too”.
—————————————————
Actively taking requests!
3K notes · View notes
witherby · 19 days ago
Note
imagine how cute would be if Bruce brings the little wayne to his work on wayne tower 🥺 the moment would be ruined if some paparazzi taking photos with flash and scaring the baby
Sooo the baby didn't end up getting scared, but this idea did make me spit out 2000 words worth of content. I hope that's a fair compromise :3
THE LITTLEST WAYNE: TAKE YOUR KID TO WORK DAY
Featuring: Bruce talking to you like a colleague, a newspaper article, and an overprotective Damian.
Tumblr media
"Morning, Clarice. Donuts and coffee are getting delivered in five minutes if you wanna pop downstairs and help yourself. Afterwards, do me a favor and rebook the consultation with Lexcorp for sometime next month? The further out the better."
Bruce's secretary nodded, fingers flying across the keys to accommodate his request. She tucked a lock of strawberry blonde hair behind her ear and shot him a polite smile.
"Of course, mister Wayne — oh, goodness gracious."
Bruce's placid expression quickly became embarrassed. He tried to walk past her but she was already on her feet and rounding the desk, heels clicking over the linoleum floor to stand in front of him and the bundle on his arm.
"Who is this!" She cried, immediately fawning over you. You stared blankly at her as you suckled on your binky, wrapped up in a tiny Nightwing onesie (Dick got to the clothes first this morning) and hugging your father's arm. "Oh, my, you're the most adorable baby I've ever seen! I'm Clarice! I'm your father's personal secretary, and apparently the last person to find out anything, including when he adopted yet another child!"
"This wasn't a...planned acquisition," Bruce muttered, the tips of his ears pink. He let the blonde gently squish your fat cheeks and you preened under the attention, lifting one fuzzy-wrapped hand to brush against her wrist.
"A planned acquisition. Like you're another company he bought on a whim and not a precious angel," Clarice giggled. "What a doll... If you ever need a babysitter, Mister Wayne, please don't hesitate to call me!"
"I'll keep that in mind," he said, exasperated but smiling good-naturedly. "Have a great day, Clarice."
"You, too! Bye-bye, angel!" She waved, and squealed when you waved back.
Bruce disappeared into his office with you, bouncing you gently on one arm while the other shrugged off the duffel bag he carried with him. Zipping it open, he quickly tugged out a pop-up bassinet to place you in, then the pieces to an enclosed play pen he built and filled with some blankets, a couple toys, and an extra Red Robin binky (Tim got to the toys first this morning).
"Okay," he sighed, scooping you up and relocating you to the pen. "I've actually got to run my own company for a bit, and the others are busy, so you get to hang out with me today."
Bruce rested his arm on his desk, then his chin in his hand, and stared down at you. You were staring intently back at him, the binky bopping up and down as you suckled on it.
"You're a little young to learn the ropes, but I'll explain what I'm doing anyway. Every baby book I've looked at tells me you get something out of it even if you don't understand what I'm saying, so today it's time to do payroll. I'd make you sign an NDA, because you're about to see a lot of personal files, but you don't know how to hold a pencil, read, write, or speak yet, so I think we're fine."
Bruce had two monitors on his desk. He duplicated his screen and spun the other one around so you could watch what he was doing in real time.
"I don't like to delegate this task to other people because the last six times I did, they were eventually found embezzling money. Unfortunately, that tends to happen when you live in Gotham. Right now I've opened the pay software — it's this icon here, where the mouse is circling — and I'm going to ask it to open the time sheets for the last two weeks..."
---
A NEW FAMILY MEMBER? BRUCE WAYNE SPOTTED IN WAYNE TOWER WITH INFANT, SPECULATION GROWING
CEO of Wayne Enterprises Bruce Wayne seen with a baby after exiting his office this afternoon!
[An image of you in your Nightwing onesie, tucked securely in a smiling Bruce's arms as he walks out of an elevator, is printed on the front page of the Gotham Gazette.]
Sources say Wayne filed another adoption form with the courts a week ago and is being met with mixed reviews. Large portions of the public are joking that Wayne has an "adoption problem" while others speculate he is too inexperienced to foster an infant.
"Wasn't his youngest kid, like, 9 when he adopted him?" Asks one Carmine Falconi, recently released from Blackgate on good behavior. "None o' my business, of course, but I don't think he knows how to raise a tiny tot like that. My guys ain't touchin' a hair on that one's head, though. Kidnapping the odd teen or two, sure, go nuts, but even us crooks got codes, and that one's off-limits in my book."
Wayne declined to comment when the Gotham Gazette reached out and remaining family have further refused interviews about the subject.
(Alfred got to the phone first.)
---
The newspaper clipping was already framed and proudly sitting on the dining room table when Bruce woke up the next morning and shuffled downstairs for breakfast with you in his arms. He spared it a tired glance, put you in your high chair, and relented to Damian's insistent shoving so the boy could sit next to and feed you (he got to the pantry first).
"The next time you plan on actually doing your day job," the boy hissed, "bring one of us with you. There was an abysmal amount of security protocols you ignored when leaving work to allow paparazzi the chance to grab photos. I won't let your frivolous behavior cause them harm."
"Are you volunteering?" Bruce asked, gratefully accepting the mug of coffee Alfred handed over. He quietly greeted Dick and Jason as they filed into the room and had a quick rock-paper-scissors match to see who got to sit on your other side. Jason won. "Any networking events I have to attend, you almost always find a way to weasel out of."
"If it will keep our new charge safe," Damian huffed, "I can handle a few stupid luncheons."
"That's not a pass to skip school. If it's between a social or a class, you're going to class."
Damian looked simultaneously pissed and relieved. His fist clenched tightly around the small, silicone spoon, before he forced himself to relax and continue feeding you. You opened your mouth obediently for another offering of mushed-up bananas, apples, and cinnamon baby food from a high quality brand, giving a happy hum.
"Then the duty falls to one of you fools," he snapped at Jason and Dick, "which is akin to trusting a mosquito not to drink from you at the first possible opportunity. You'll pick up the slack when I'm otherwise indisposed."
"No can do, baby bat," Dick said, pouring himself a bowl of cereal and scrolling through his phone. He quickly snapped a picture of you with your mouth open to accept another spoonful of food. "I have a day job, too. I don't even live here. I'm just on an extended vacation until the end of next week, then it's back to Blüdhaven."
Damian focused his glare on Jason next, who smirked back and shook his head.
"Legally dead. So, 'less you want Brucie Wayne and an innocent baby seen all around town with Red Hood, the crime lord, it's a no from me."
Damian weighed the pros and cons. Bruce shot him a look and shook his head, dismissing the idea entirely.
The boy grit his teeth. He scraped the last of the baby food from its jar and fed it to you, then delicately wiped the remnants from your mouth. You gummed at his finger and made grabby hands, indicating your desire to get out of the high chair. Jason scooped you up first with a swift call of "dibs!", carrying you away to get bathed and dressed for the day.
"Then...then you have to go into work with Timothy!" Damian demanded, facing Bruce again, who had finished his coffee by now and was eating a slice of buttered toast. The man raised a brow, looking only marginally more awake than he was at the start of the day.
"Tim hates being at the office with me," Bruce explained as Alfred came around to set a plate of pancakes, eggs, and freshly-squeezed orange juice in front of Damian. "Says the Brucie act is annoying to be around and it drives productivity down at least 8% every time. It's a lie, I've checked the numbers, but if he doesn't want to be at the Tower at the same time as me then I'm not going to push a non-issue."
"You?" said Damian, incredulous. "You aren't going to push a non-issue? You push everything. It may as well be your middle name."
He cut into his food with more force than necessary, cutlery scraping unpleasantly against the plate until he lifted his hands again. He shrugged off the hand Bruce tried to place on his shoulder, chewing angrily on a mouthful of pancake.
"I'm open to ideas, son," the man said, "but here are the facts: You have to go to school Monday through Friday. I won't let you homeschool because you need to socialize with people in your age group. Jason isn't interested in declaring himself alive right now. Dick doesn't live at the Manor full time and has separate responsibilities. Tim is juggling college, Wayne Enterprises, and patrols. Alfred is too ol— is aging gracefully, and might prefer to have more time to himself instead of watching the baby all alone for hours on end."
Alfred took Bruce's empty plate away with a very sharp look, then excused himself back to the kitchen.
Bruce turned in his chair to fully face Damian, who glared at his breakfast like it personally caused this mess, and not one hyper-empathetic man and his bleeding heart for orphans.
"Now, can you tell me how best to solve this problem without the occasional "take your kid to work day," or enrolling the baby in a daycare program?"
Yes, he could. But unfortunately for Damian, he had inherited a bleeding heart of his own, which constricted at the thought of giving his little sibling back up for adoption. Instead, he swallowed his next mouthful of food and sighed.
"More research is needed," he mumbled, which was the closest he could ever get to admitting he didn't know something. "However, my complaints still stand. Let the paparazzi get a bad photo if it means keeping the babe safe. Their well-being is your top priority, so act like it."
"Heard," Bruce said, sounding far too fond for Damian's liking. "Finish your breakfast and then get ready for school."
The boy grumbled but complied, and soon stood next to the door waiting for Alfred to pull a car up to the driveway. He watched Bruce carry you in his arms after he slung the duffel bag with your essentials over his shoulder, tugging the small hood of your red oneside up (Jason dressed you first today) over your head to ensure you didn't get cold.
"Have a good day, Damian," Bruce told him.
"Sure, whatever." Damian took you from his father and adjusted your hood himself. You grabbed his finger in your small fist with all the strength you could muster and tried to put it in your mouth. He gently pried it free, and Bruce popped a Batman binky in there instead. "You will be safe today. When I'm finished conforming to what American society deems a proper education, I will retrieve you myself."
Your binky bopped up and down as you suckled on it, staring silently at Damian. It was practically a yes to him, so he took it.
Glancing briefly at his father, he hesitated a moment, then kissed your forehead and quickly passed you back to Bruce before heading outside to let Alfred drive him to school.
Bruce watched him go with an unreadable expression. He quickly turned and faced Dick once Damian was out of earshot.
"Did you —"
"I'm texting you the picture right now," Dick said, thumbs flying across the keyboard. "What should the caption be for my Twitter post? #BestBrotherEver or #SecretSofty?"
"Either way, he's going to kick your ass."
871 notes · View notes
lolana101 · 2 months ago
Note
hello sweets! I love your work! And if I may request Ekko and reader trying for a baby?😭❤️, only if you want! Ty!
𝐋𝐎𝐕𝐄𝐑
⤷ EKKO: BABY MAKING
Tumblr media
⤷ feat. ekko (arcane league of legends)
cw: 18+ , begging, rough sex, sloppy sex, saliva, dirty talk, creampies, marking, biting
Tumblr media Tumblr media
he’s pumping into you slowly, huffing softly his eyes trained onto your expression. a still wrapped condom hangs from his lips on which he promised to put on sooner, he’s only going so slow because this is the first time he’s felt your wet walls around him with no barrier.
“..fuck your so- so beautiful, so good.”
he shook out, leaning down to lick around your ear gently, a moan rising out of you. the condom sits beside your head now, it useless as he starts to pul faster, his hands sinking around your wrist and pushing up to guide your fingers between his.
his brows pinch in pleasure, his gaze trailing down to the bounce of your tits responding to the snap of his hips like a wave.
“wanna get you pregnant… badly.”
“..wha- mmnf.”
you can’t even get the words out to respond to his ridiculous statement.. question. demand? his tip is pressing too sweetly against your cervix, peppering it with his love.
“…after everything’s that’s happened. don’t we deserve to have- make something that makes us happy?”
he spoke quietly, his pace never stopping. this was a long time coming, a month ago he remembered asking you to get off birth control due to the worry of your hormones becoming poisonous… some stupid article he read.
his thumb dips between you two’s burning body’s, to softly rub on your puffy nerves as his hips snap at times to punctuate his words. he’s close, his cock twitching softly as his hips stutter slowly stopping.
“please? i’ve been thinking about this. you’d be so cute with a big bel-“
you kissed him gently, slowly rocking your body sloppily down onto him your teeth bumping against his own. it was sloppily, and you were hard to read. but the way your pussy clenched around his aching shaft, waiting for release said it all. you wanted this too.
he moans softly, grinding into you before his hips snap violently against your aching walls, his thumb rubbing your clit wanting to bring you to your orgasm. he read that’ll open up your cervix some more, maybe helping you get pregnant faster.
he’s lingers soft kisses up and down your neck, whispering sweet words of encouragement as his thumb working on your twitching clit, your thighs shaking. you were ready, he was ready. why not?
he’s hot seed spills deep inside of you, his moans sorts gasps and whispers of how warm you are, his thumb pressing against the bundle of nerves, your walls twitching as you feel your walls coat in his sticky love.
he burrows deep inside you, whispering something into your ear.
“we need to do that more do get you… pregnant.”
“i know. take me to the bath first…”
you hum, feeling him try to scoop you up with him still on his dick, he wants to make sure his love never leaves you, so a new love can grow inside of you. a love he’ll be sure to cherish.
Tumblr media
thank you for being my first ever request yay!!! i tried to tie in the end with the first ekko fic i wrote :) i hope you enjoyed it!!
please like, follow, and i take requests for any fandom if interested !!
my most recent fic here
my past fic here
idk if you want smut of fluff, but i don’t mind both so feel free to specify!!
914 notes · View notes
ibook4you · 2 years ago
Link
0 notes
gloomwitchwrites · 3 months ago
Text
In the Wolf's Maw
Werewolf John Price x Female Reader
Content & Warnings: mild dubcon, knotting, mating bonds, accidental mating, oral sex (female receiving), unprotected piv, creampie, breeding, dominance, protectiveness, possessive behavior, werewolf!Price, shifter!Price
Word Count: 4.2k
Tumblr media
A/N: Requested by @glitterypirateduck for 3.5k Spooky Bingo (Werewolf AU)
Walking home on Halloween night, you’re accosted by three strange men. From the dark emerges a stranger, but one that has been haunting your steps for months. He might be your savior, but there is a deeper hunger within him that needs to be satiated, and only you can satisfy it.
ao3 // main masterlist // 3.5k spooky bingo masterlist
Something walks with you amongst the trees.
It is always near—always close—but never enough for you to glimpse it between the towering bark.
When you first felt the strange presence, you believed it to be human. Your senses awakened in expectation of threatening intent, but now, with the passing of the months, you no longer believe it to be so.
Whether for good or ill, a human would have revealed themselves in some capacity. This must be animal. It has to be. Either curious or cautious but it clearly does not see you as a threat. It is always there though. A phantom. A figure. You've never seen who or what but you sense it.
"You should really take the main road. I don't understand why you insist on cutting through the forest."
"It's peaceful," you reply. "Gives me time to think."
Your friend arches an eyebrow. "You know the stories."
"Myths," you correct. "Not stories."
"Myths always carry a bit of truth."
There are wolves in the forest. But they live deeper, away from the human population. Wolf sightings are extremely rare, and those that claim to see them are often known for being terrible gossips and liars.
The myth that walks with them is that the wolves are not wolves at all.
They are cursed men. Shifters. Werewolves.
It's nonsense.
Scientifically impossible.
The wolves are only wolves. Maybe the one that watches you is one of these wolves?
Possible, but unlikely.
For all you know, you're being watched by a curious scurry of squirrels.
The myth is history drenched, from a time when people needed to explain natural phenomena they didn't understand. It is only stories.
Or so you believed.
It's late in October. Halloween night.
You stayed far too late at the local library, browsing shelves and losing track of time until the librarian, Mrs. Dean, came scouting for you in the basement archive. Down there, you went searching for what hadn't been digitized, seeking stories about these wolves.
Most of what you uncovered were old newspaper articles of missing women and mauled men in the forest. The details were few and relatively unhelpful, but like gum stuck to the bottom of a shoe, there was one consistency in all of them.
The myth, mentioned at the end of every article. Cursed men that shift into wolves. Men in the skin of a predator that hunt women and slaughter their menfolk. You'd think the town had a serial killer, but the articles go back far enough in time that it simply couldn't be the case. Many of the articles cite historical records and reports of the same thing happening over a hundred years ago.
It plagues you on your walk home.
Staying late at the library and taking the path through the forest home takes you away from the roaming families and the angsty teens ready to terrorize anyone who steps in their path. The streets are alive with movement, but you need to collect your thoughts, to consider what you've found and figure out where to look next.
A gentle wind brings a chill with it, sneaking underneath your coat to tease skin. Shivering, you bundle up tighter, the cold bite of air adding a kick to your step. You feel eyes on you, but not your anonymous phantom.
These eyes feel cruel. Malicious.
"What's this?"
Three tall figures in masks emerge from the dark. Like a whisper of wind they appear, skulking toward you, fanning out in a half-moon directly in front of you.
"Cute thing like you shouldn't be out here all on your own." The voice is masculine. Deep. Not one of the local teens. This is someone much older. "There are...wolves about."
The trio saunters forward, the two on the ends splintering off from the man in the middle, slowly boxing you in. There is nowhere to go but behind. Turning tail and running means a chase. You scent their excitement. That is what they're itching for.
"I'm fine. Thank you for the concern," you reply in the blandest voice you can muster.
Don't show fear.
"Need an escort?"
He's not taking the hint, but what did you expect?
Missing women. Dead men.
"No. Thank you."
Squaring your shoulders, you charge forward, intent on walking through the two on the right. In sync, they close ranks, blocking your path.
"Sure about that?"
"We insist."
Your lips part. "I'm—"
A low growl reaches your ears. It is laced with warning, and a sudden surge of energy rushes up to greet you, wrapping around and between your limbs like invisible rope. You know this sensation. It is familiar and unwaveringly comforting.
The two men standing in front of you glance over your shoulder. From behind their masks, their eyes widen with abject terror. Their shoulders tighten with tension, and they freeze like a deer sensing danger.
The growl comes again, and that sensation bleeds into you further, becoming more than just comfort.
It is...ownership.
Possession.
"What the fuck is that?" whispers one of the men.
They're not focused on you anymore. They're looking beyond you. Behind.
"Fucking run, mate. Run!"
The three men stumble backward, becoming small and insignificant before your very eyes. They shove at each other, not for encouragement, but for distraction. If one should fall, it might distract whatever it is that lurks behind you.
At first, you do not turn. You wait for the pounce—for the growl. But there is nothing. Only silence. Yet those invisible ropes still cling to your body. They still hold tight.
With a baffling sense of calm, you slowly swivel.
There is a wolf. Not a normal one you might see in a wilderness documentary. This one is large, nearly as tall as you on all fours. Its fur is a deep brown. It watches you intently, gaze fixated on nothing else. Even as you take a step away, the creature does not waiver.
It's unnerving, at least, it should be. Yet that comforting familiarity shuts out everything else. It chases away fear and doubt. You know that the natural instinct of any animal facing down a larger predator is survival, but there is nothing that beats within your body that suggests your fight or flight response is on.
It is eerily peaceful. Serene even.
If this sensation did not encompass you as completely as it did, you suspect that you'd be like the trio. Afraid. Terrified.
But just because your sense has left you, that doesn't mean your brain has. It is loud and it is talking.
Do not turn your back. Do not break eye contact. Make yourself big. Make noise. Move backward slowly.
You stretch your arms out wide, puffing your chest, attempting to make yourself bigger. Not like you could ever compare to this beast. You step back, breathe in, preparing a yell.
But just as you do, the wolf shifts. It's not showing its fangs or quickening its haunches. It only watches on, alert and curious. Not aggressive.
There is no submission, though. The wolf does not seem intent on simply walking away. That sensation hugging your body brightens, and a flare of possession surges through you, stiffening your muscles as if you've been turned to stone.
The wolf shifts again. Shakes. Takes a step toward you.
As it does, you hear bones pop and snap. Beneath the wolf, its legs twist and bend beneath it, staggering its forward progress. Its nostrils flare and then the neck snaps as if lurched to the side by some invisible force.
"What the fuck," you mutter, that sense of calm slipping.
The connection is still there, but it's slightly weaker than before. A drop of fear creeps in, and the need to escape starts to bloom in your chest. It widens, that familiarity leaking away to bleed into the earth as the broken wolf shakes and twists some more.
It is just a mass of fur and tangled limbs.
And then, from the pile, the fur splits open, and a human arm emergers, the fingers reaching out, tearing at the dirt.
You need to go, to fucking run.
The phantom threads release you, and your feet find their purchase. You launch yourself backward and away, sprinting as fast as you can. The cold, October air bites at your cheeks. Everything burns.
You know this is just adrenaline. It will fade and you will crash.
Boot slipping on dead leaves, you go stumbling forward, the ground coming up fast. You're jerked to a stop. Halted. Face inches away from smashing into a rock. Glancing down your body, you see...arms. Human arms. Wrapped around your torso. They are muscular and marked with protruding veins, with a dusting of hair along the forearms.
Slowly, you are lifted upward and onto your feet, but the arms remain. Warmth greets you, pressing into your back to chase away the October chill. With it comes a honey-laced scent. It is sweet and lulling, seeping into your pores to flood your senses. This is like before—the awareness of familiarity and possession, but there is a difference in its tone. Beneath it is a wicked teasing, a promise of dominance and pleasure. Like the invisible ropes, it overpowers, wrapping around you to hold you like a blanket.
It is enticing. A pull that calls to you. Something within you reverberates its call, answering back.
The arms around you tighten until you're firmly pressed against the man holding you. That is who it is. Not what. The wolf is gone. This is solid flesh.
This is myth made life.
The lulling sensation settles in, calling to you, telling you to submit.
It would be so easy. So simple.
No.
You push at the man's arms, twisting in an attempt to break free. But your savior turned captor holds firm, allowing nothing.
"Let me go."
"No."
The no is a rumble deep in his chest. It vibrates through the pull and into your bones. This is a command, and your body promptly responds, coiling tight.
Glancing over your shoulder, you lock gazes with the man holding you in his arms. You're staring at the face of a man. He is handsome. Older. His skin is lightly coated in sweat and dirt. But the eyes. They are wolf eyes. Completely animal. The rest of him is completely bare. No clothing in sight, and yet he doesn’t appear cold.
His chest heaves slightly, nostrils flaring. This man burst forth from the wolf, but there is still a beastly quality that sings along the pull. This man is somewhere between, lingering between the wolf and humanity.
How you know this isn't entirely clear. There is a link somewhere. A tether. His closeness only makes the awareness grow in strength. Confusion and concern twist together even as the comforting familiarity attempts to soothe your nerves.
"Please," you murmur, not entirely understanding yourself what it is you're trying to say.
The man only sighs. His head dips, and then he inhales deeply as if—
Is he…scenting you?
"What are—"
The question disappears from your lips. Taken from your mouth. The stranger nuzzles your neck, inhaling deeper. One hand descends as the other rises. Along the pull you feel heat, it floods outward from him and into you, going straight to your pussy.
The descending hand slides between your legs, cupping your sex. The other roams up your stomach to your chest, gently learning the curve of a breast through your sweater.
He groans low, and that too reverberates within you. A tingling blooms in your core. There is your own desire, but beside it is another. His.
The stranger's hand slides further between your legs. Back and forth, the pressure building so suddenly and intensely that your pussy clenches.
He inhales again. Growls. "Mine."
That one word is like a slap to the face and a comforting caress. Along the pull, it is a dominating serenity. Outwardly, your freedom rebels, pushing against the idea.
As if sensing the unease, his hold on you releases, but only for a moment. He lifts you effortlessly into his arms, clutching you tightly, strutting forward with purpose in every step. You sense it through the pull, this taut string that has woven its way inside.
"Let me go," you murmur, pressing against his firm chest.
Be calm.
The command comes not from his own throat, but from within your head. It is his voice. Clear and resonate. The moment your brain processes it, all your limbs soften like jelly.
Are you trapped? Have you been possessed?
A part of you firmly clings to this idea while the other part remains completely calm as if this is supposed to happen.
He walks deeper into the forest, and time stretches, the stars through the canopy your only light. The trees thicken, and then the stranger comes to a stop before a group of jagged rocks that juts upward from the ground.
Within the rock, you spy darkness.
An opening. An entrance.
Instinct flares, and the need to escape comes rushing back. Be calm, he says again.
This time, there is no instantaneous softening. Along the pull, something tightens, as if adjusting a belt buckle. A wildness stirs, and the earlier arousal returns, tinged with desperation. Eagerness settles in your chest, but it feels more like his emotions than yours.
The man walks toward the rock. He tilts forward, stepping inside, submerging the two of you in utter darkness. Yet, you do not feel frightened. Each step of his is confident and steady, and as the two of you steadily move forward, a soft white glow begins to appear. It is faint at first. Soft.
Another opening emerges, and before you is an antechamber. In the middle of the rock-laden room is a massive slab of solid, black stone. It stands at waist level, the surface worn from age. Above it is an opening in the cave ceiling. From it, moonlight falls upon the rock slab. An acrid odor fills your nostrils. A brief brush of wind slides against your cheek. Something magical and old stirs. Something primal.
He stops at the rock slab, and then gently brings you down to your feet. Solid ground is comforting. Stable and strong.
The wolf eyes stare back at you. A fire swirls within them. As your gazes’ lock, memory surges down the pull. That familiar feeling returns, and with it, memories of you.
He is the one who has walked with you amongst the trees. He is the one who has been the presence at your back. Keeping you safe. Protected. A sense of duty follows the memory along with a flare of purpose. At the end is dominance and possession. It all slithers around the pull until you feel it in every part of you down to the tips of your fingers.
Maybe all those missing women aren’t missing at all. Maybe they went willingly. Maybe they had wolfish protectors of their own.
You are at ease, your limbs responding of their own accord. You place your hand on his chest, right over his heart. Its beat is strong beneath your palm. He places his hand over yours, gently grasping it. Stepping forward, his head dips, forehead pressing to yours with an intimacy that somehow feels…normal. Like you've known it all your life.
Along the tether, you taste a name.
John.
His name is John.
"John," you breathe, and his hand upon yours tightens.
The distance closes, a radiating heat bursting within your chest as John’s other hand falls upon your hip. It flows outward, warming you down to your toes and into your fingers. John's lips find yours, and it is perfectly blissful. This stranger is not unknown to you. Your soul sings with longing and want.
There is a connection here. Why not seek it?
You return the kiss, grasping the back of his neck, moving in to consume just as he does. John's answer is a deep growl, one that vibrates in his chest. A sharp spike of arousal shoots through the tether, slamming into you at full force.
You gasp. Draw back.
John is partially transformed, fingers morphing into claws. With a groan that is more animal than human, John tugs at your clothes. They surrender under his touch, like a knife through softened bread. There is no ceremony to it. No ritual. You are laid bare before this man. At his mercy. The chilly October air rushes in and then immediately departs, John's body heat chasing it away almost the moment it arrives.
His hands are on your waist, lifting you, planting you atop the stone slab. You want to say something—anything, but all words escape your head and tongue as John spreads your legs wide and places his mouth on your pussy. Sudden surprise becomes languid pleasure.
He is ravenous. Hungry. John leaves no part of you untasted. Your moans echo in the small cave, filling the space with your ecstasy. His tongue delves inside, and then languidly slides upward to swirl and tease your clit. Everything in you tenses, anticipating release.
John's arms hook over your legs, hands splayed wide, gripping your thighs, pulling you closer against his mouth. With your pleasure comes his, rolling across the link in waves. It comes in flashes of images. You glimpse yourself as he sees you, not only in this moment, but in all the moments he's watched you.
Between the desire and need is a hint of loneliness, of an unfilled connection that burrows in his chest and eats away at his heart. This current moment isn't what he intended, but it has all unraveled.
Your grasp for him, fingers threading through his hair, tugging hard as your orgasm burns bright behind your eyelids.
Look at me, comes the command.
You do, and your gazes lock. His nails are still elongated, still claw-like. One pointed tip pierces your skin just as your orgasm bursts. He growls low.
Mine.
The voice. His voice.
Mine.
A sense of ownership and dominance enters your consciousness. You feel as if you're incomplete. only a portion of yourself, yet the end is near. It will all end, and you will be fulfilled.
In the hazy aftermath of your orgasm John's tongue traces up the beads of blooming blood. You shiver, blinking to clear away some of the euphoria. John stands between your legs. His hands are still on your thighs, keeping them wide. In full view is his erect cock. There is a slight curve to it, and at the base is a swollen bulge. John squeezes one thigh and your gaze returns to his face. They are still all wolf.
When the wolf fades, what color might they be? The question pops into your head and then quickly fades. His wolfish features are starting to bleed in again. Nose elongating, fur returning, claws lengthening.
"I'm sorry," he says, and his voice a tangled snarl.
With a quickness that startles you, John flips you onto your stomach. His hands are everywhere, spreading you wider. You briefly glimpse him between your legs before he lifts himself up and onto the stone slab, settling behind you. Above you, one half-transformed hand presses against the stone just next to your head. His other finds rest against your waist.
While your own body buzzes with anticipation, you sense an excitement along the tether. John's excitement. Of the act itself but also of a sense of peace.
The head of his cock presses at your entrance. You exhale, relaxing your muscles, welcoming him in. You're wet, and your pussy accepts him with only the slightest resistance. He holds himself there for a moment, simply breathing. Like this, you feel entirely full. It's a snug fit, but it feels amazing, like his body was made for yours and yours for his.
Mine.
"Yours."
At your admission, John thrusts in earnest. There is nothing slow and sensual about his movements. It is only primal need and utter hunger. His arm hooks under your stomach, and then you're pressed firmly into the rock by his body. You are trapped beneath him, completely at John's mercy.
Each stroke is perfect. Cleansing.
You pant beneath him, almost in time with his own needy groans. The swell at the base of his cock slaps your pussy with each thrust. It doesn't seek entrance, but deep down, you know it will, but for what purpose is unclear.
John's movements become sharper. More intense. His panting increases, and you feel his mouth at your throat. There is a soft press of his lips, then a gentle tease of his tongue. You cannot see him, but you feel the transformation above you.
John is no longer human as his maw opens wide and holds your throat in it as he ruts. His cock swells in your pussy, stretching. The swell at the base prods, and with a final thrust, it pops in. John holds there, growling. His sharpened teeth pierce your skin. You feel the little rivers of blood trail down your throat. With the bite comes understanding. That tether becomes a solid, unbreakable thing.
Mine. She is mine.
Forever mine.
Mate.
Memories and emotions crash into your skull. You see all of John for who and what he is. A wolf. A shifter. The alpha of his pack.
Within your pussy, you feel a flood of heat. Now you know what the knot is for. His pleasure becomes yours, and you shiver, another orgasm creeping up suddenly and without warning. You clench down on his cock and on his knot. His answer is a pleased growl.
Ever so slowly, the wolf’s massive maw releases your throat. The transformed paw above your head disappears, followed by the weight of him. His cock and knot remain where they are. You feel him shiver. Hear a cracking of bone. You remain perfectly still until the ragged breathing of an animal becomes that of a human.
You turn just enough to glance over your shoulder. Behind you is John. The man, not the wolf. There are no sharp claws. No pointed teeth. The tips of his fingers brush over your skin, becoming full hands that gently caress. There is no harshness. His head tilts up, and for the first time, you're seeing him as he truly is.
Blue eyes. John has blue eyes.
"I'm sorry," he breathes, exhaling deeply, a nervous flutter to his lashes.
"You're still inside me," you reply softly.
He glances down and groans. "Fucking hell. Forgot about that." He flushes slightly. "It'll be a minute."
"A minute?"
He grimaces. "The knot. Still swollen. It'll hurt you if I pull out now."
"Oh."
There is a stretch of silence. John sighs, his hands gentle tapping a rhythm against your ass. "This is...awkward,” he murmurs.
"Is it?" you ask, arching a single eyebrow.
"John," he says sheepishly, extending his hand in introduction.
"I know your name. I heard it through the—"
"The bond," he finishes. "I know." He drops his hand, and places it on your lower back. Using the position, John tests the knot. You wince. It doesn’t want to budge. "Fuck. I'm sorry. I didn't mean for...this."
"It's fine,” you reply, because it is.
You feel light. Content. This man is a complete stranger and yet not. Between you is the bond. There is strength in it, and a comforting embrace that you’ve always wanted but have never found.
"It's not." He sighs. "It's not how I wanted to do this," he mutters. Gripping your hips, John tests the knot. There is resistance but it’s significantly less than before. "Relax your muscles," he says softly.
You inhale, and on the exhale, John withdraws. You whimper from the brief flare of resistance but it isn't painful.
“I forget myself when I’m changed. You were threatened, and I couldn’t resist the impulse to protect you. For the wolf, that meant stealing you away. Completing the bond. But it’s not an excuse.”
You draw your knees up, suddenly realizing how exposed you are.
“You didn’t harm me. Except—”
You reach up and touch your throat. There is no blood or puncture wounds. Just a couple raised bumps that weren’t there before.
“What is this place?” you ask, glancing around.
John’s gaze scans the room, and then returns to you. “A ceremonial space. It’s been here for thousands of years. The wolf brought you here because it knew it would be safe.” He licks his lips in agitation, and then runs his fingers through his hair, tugging at them in irritation. “Could we begin again? Start over?”
“What did you have in mind?”
He places both hands on the stone slab, leaning in close. “I’ll…take you home.” His muscles bunch with tension when he says it. Along the bond, you sense the wolf’s firm refusal of the idea. “I’ll come to you during the day. We can talk.”
You scoot down the rock slab, moving closer to him. The middle of John’s brow furrows with confusion as he watches you. As you cozy up to him, you sense his calm—the relaxing of his muscles. John’s head dips, nostrils flaring slightly as his eyelids close in pleasure.
“My scent is all over you,” he purrs.
A mix of deep desire and contentment wraps you up in its embrace.
“How do you plan on taking me home? You did shred all my clothes.”
John chuckles. “Discreetly.”
taglist:
@km-ffluv @tiredmetalenthusiast @miaraei @cherryofdeath
@ferns-fics @tulipsun-flower @miss-mistinguett @ninman82 @eternallyvenus
@beebeechaos @smileykiddie08 @whisperwispxx @chaostwinsofdestruction @weasleytwins-41
@saoirse06 @unhinged-reader-36 @ravenpoe67 @sageyxbabey @mudisgranapat
@lulurubberduckie @leed-bbg @yawning-grave81 @azkza @nishim
@voids-universe @iloveslasher @talooolaaloolla @sadlonelybagel @haven-1307
@itsberrydreemurstuff @cod-z @keiva1000 @littlemisscriesherselftosleep @blackhawkfanatic
@sammysinger04 @kylies-love-letter @dakotakazansky @suhmie @kadeeesworld
@umno-yeah @marispunk @jackrabbitem @arrozyfrijoles23 @lovely-ateez
@ash-tarte @enarien @gingergirl06 @certainlygay @greeniegreengreen
551 notes · View notes
sturnmeovr · 1 month ago
Text
Tumblr media
Neighbor!Matt x Brat!Reader - Plan B
Your white sheets drape loosely around Matt’s waist, daring to fall each time he pumps himself in and out of you at a steady pace, going so deep he teases your cervix each time. Low, raspy grunts escape his lips with every snap of his hips, one hand glued to your waistline, not letting you squirm out from his grip one bit while the other dangerously thumbs at your clit. “Ahh! — Matt,” you croak out, your eyes low from the little ball of pleasure building up in your stomach, “I can’t — Fuck!”
You hadn’t had a senseless hook up in months, you were too focused on work and isolating yourself, you had no time for distractions. You didn’t know how you got in this position – pinned underneath your obnoxiously rude and loud upstairs neighbor whom you’ve hated up until twenty minutes ago when he was forcing his tongue in your mouth and clawing at every article of clothing you had on. 
His blue orbs suck you in much like a heavy current. His bottom lip trapped between his teeth as he stares down at you with a gruff expression sewn deep into his face. He was so focused on making those sweet, sacred moans roll off the tip of your tongue, he almost failed to respond. Too busy fucking you into a mindless state, studying the way your face contorted in pleasure with each thrust. It was all due to him. His mouth gapes open as your eyes roll back, "all that — Mph! — shit you were talking," he manages to get out all while plowing into your sopping cunt, "now you can't — take it, huh?"
Wetness drips from your arousal at the sound of his voice, so deep and husky like he had been holding back his groans. Your wet pussy spits out squelching sounds adding to the mixture of your heavenly moans and Matt’s thighs slapping against yours as he rams himself in and out of you. The sex sounds are so satisfying, you both find yourselves leaning in, foreheads pressed together just to watch how his cock glides in and out of your wet cunt with such ease. You look up at Matt, his eyes already fixated on your face, “look at you," he coos before pressing a sloppy kiss to your lips, "y’almost there for me, sweet girl?”
That euphoric feeling you had been chasing the last twenty minutes finally reaches its boiling point, sending you over the edge and making your legs shake in an uncontrollable manner. A loud mewl erupts from your lungs and your body goes limp, collapsing onto the memory foam bed beneath you as you moan out, “oh my – god!” You cling onto the bedsheets for dear life, digging your nails deep as he fucks your thru your orgasm, his thumb still working tight circles around your small bundle of nerves.
“Fuckk — y’pussy squeezing me so tight,” he drags out, his eyes clenching shut as your walls convulse around his thick shaft, the feeling becoming too much for him to handle. Matt gives you one final thrust, burying his cock so deep, your entrance sits around the base of him as he spills his full load into you, his dick twitching with each spurt of cum he shoots out. As much as he’d love to stay buried as deep as he could be in the best pussy he’s ever had, the realization quickly sweeps over his mind. Not only did he have his bitchy downstairs neighbor that he couldn’t fucking stand under his complete control, cumming so hard on his cock she was shaking, but he just came in her. He fucking came in her.
Matt tries not to let the awkward silence take over the mood. Letting exhaustion take over his body, he collapses on top of you. Your heart thumps in your chest as he presses a light sloppy kiss to your collarbone, almost like it's an apology. “Fuck, sorry. I’ll uh –,” he breathes out, his nostrils flaring in an attempt to catch his breath, “I’ll insta cart plan b.”
Meanwhile, all you could think about was his cum dripping out of your pussy and onto the silky, freshly washed bed sheets below you. That asshole better buy you a plan b.
Tumblr media
Introducing Neighbor!Matt x Brat!Reader
wc - 713
♡‧₊˚ New au incoming 🫣👀 ofc im still doing babydaddy!Chris, just miss writing about Matt 🥰 Let me know what you guys think?! Also want to say thank you @sweetshuga, @strnilolover & @chrislilcumslvt for their second opinions. This probably would've sat in my drafts forever if it wasn't for them lol
Posting the intro next!
Tags - @lvrsturniolo @ribread03 @unknvhx @m11rx @sweetshuga @loveparqdise @emely9274 @frickin-bats @delusional-4-fake-people @katie-tibo @leila-marie4 @thepubeburgler @shadowthesim @immy08 @trevorsgodmother @watercolorskyy @courta13 @chrislilcumslvt @luvr4miya @strnilolover
© M00NL1GHTS1VT - please do noy copy my work
385 notes · View notes
rise-fashion-zine · 3 months ago
Text
Tumblr media Tumblr media Tumblr media
⭐️🌟STYLE ON THE RISE V2 PREORDERS ARE NOW OPEN!🌟⭐️
This book is chock full of amazing articles, beautiful art, and of COURSE stunning fashion! Check it out here and our bundles below!
->styleontherise.bigcartel.com
⭐️SUPERSTAR (Book Bundle) - $25
Filled to the brim with jaw dropping talent, art, articles, everything you could want! This book only bundle also comes with the zine pdf and it's eligible for all stretch goals!
🌟RISING STARS (V1+V2 Bundle) - $40
In this bundle you will not only get Volume 2 of Style on the Rise but ALSO Volume 1! If you missed the first run now is your chance to get it again and for the last time! Will come with V2's pdf and is eligible for all stretch goals!
⭐️STRETCH GOALS⭐️
Not only will you get these gorgeous books, but also there is a chance to unlock some stunning stretch goals along the way! Our first one is a holographic die cut sticker, and our second one is THREE page prints! All Unlocked! If we reach more orders, there might be another Stretch Goal to be revealed!
Our main focus will be making sure everything is fulfilled and delivered, but we aim for the remaining proceeds to go to charity! More information will follow later!
Thank you all for your patience and support, we cannot wait to deliver this amazing labor of love, passion and fashion to you all! Preorders run till November 15th! HOT SOUP!
421 notes · View notes