▶️YouTube

Complete Guide to Automated Marketing for Startups & Affiliates

Blazing Zebra·youtube.com·26 min read·6h ago

Select text to create a clip

Transcript — click timestamp to jump, select text to highlight

676 segments
I can't believe I pulled this off.
I just built this blog that writes itself,
publishing multiple times each day, completely on autopilot.
This is live right now,
cranking out content while I'm recording this video.
I'll show you exactly where you can go check it out
in a minute, but today I'm excited to walk you through
exactly how I built this thing so you can use this process
to start generating affiliate revenue
or as the growth engine for your startup.
I use Notebook LM and a few other tools
that you're probably already familiar with,
and if you set these up in a specific way,
they just seem to work.
I ran a content marketing agency for 10 years
and I've been experimenting with AI since 2018,
and back then I never dreamed AI would be capable
of creating content this good.
AI has truly passed a significant threshold recently
for those who know how to use it well,
and I wanna make sure you're one of those people.
Here are the steps we're gonna go through today.
We're gonna build this self-writing blog
by first understanding what kind of things
these LLMs are naturally good at writing.
We're gonna use Notebook LM to discover specific content angles
that work well with this content profile.
This will give you a deeper understanding
of the AI's training data
that will help you crush it in many different ways.
Then we're gonna build this self-writing blog
by using my preferred Dead Simple text app.
This is the difference between getting this thing online
and pulling your hair out as the AI spins you in circles.
In this section, you'll see how the AI
not only builds this software,
but is actually part of the way
the software functions internally.
This is another massive skill
that has virtually infinite use cases.
Finally, we'll implement the automation layer
that makes this truly hands-off,
including the affiliate system
that monetizes every single post automatically.
This one configuration step
almost destroyed this entire project.
I made every single mistake possible here,
and I really wanna make sure
that you don't hit your head against those walls
as hard as I did.
So before we start coding,
we need to come up with the strategy for our blog
and make sure that that strategy aligns
with what these large language models
are actually good at creating.
This blog that I built here
is called Ancient Wisdom,
Timeless Teachings for Modern Life,
and it taps into the training data
that is in all of these large language models
by looking at these old teachings
that have been around for many, many years
and how we might be able to apply them
to our modern problems.
You'll notice I didn't start by creating a blog
that was all about the newest AI updates,
and that's because the large language models
really don't know that much about those things
and they have to search the web
and that can cause all sorts of problems.
In fact, one of the biggest things you wanna avoid
is asking these large language models about themselves.
That's probably the thing
that they're absolutely the worst at.
But if you can focus the strategy of your blog
around things that are, you know, maybe five years old,
your chances of success go way up.
This can dramatically reduce hallucinations
and it can cause things to be a little bit more evergreen
because these topics that have been around for a while
tend to stick around.
This creates what I call the deep well effect
in which the AI can synthesize across
all of its robust training data
to create really useful content.
So while there are a lot of ways to improve upon this,
getting the most out of the training data
sets you up with a strong foundation
for evergreen content and even better affiliate opportunities.
And you might be saying to yourself,
that's all fine and good,
but my startup idea, my blog idea has nothing to do with,
you know, ancient wisdom and that's fair enough.
So now I wanna jump into the ebook.
I create an ebook like this
for every single video that I create.
These are all instantly available
to anybody who supports this channel by joining Patreon.
There's a link in the description.
Inside Patreon, I also have several calls each month,
including this software builders group.
Anybody who joins at this level in the next seven days
is gonna get the exact code base that I'm building right here.
So you can just download the code base.
You can just start to deploy it.
There's a link about all that in the description below.
We're gonna start as we normally do
inside Notebook LM with this prompt.
I'm going to notebooklm.google.com.
And as usual, I get a little tingle of excitement
when I open up a new notebook.
We're going straight to this discover sources,
which is now over here on the left, funny enough.
And we're gonna drop in this prompt.
This just says, search Reddit for posts
about your specific topic,
where your customers are expressing frustration,
asking for help or describing challenges.
So again, always starting with that end user in mind
has helped me many, many times over
and my clients while I was running
my content marketing agency.
The blog that we're gonna be building today
is in support of a startup that I recently launched
called Mess-O-Mitty.
And this is geared towards electronic music producers,
who are struggling with music theory and composition.
So I've updated this to search Reddit
for posts about music theory and composition,
where electronic music producers are expressing frustration,
asking for help or describing challenges.
And if you've watched my other videos,
you know that I like to focus this around Reddit,
where we can get the actual voice of the customer,
not just some blog post about some survey that was done.
Let's check out all these sources.
I do like to make sure that they are from Reddit.
Sometimes some that are not from Reddit sneak in here.
Those look pretty good.
Next, we're gonna use this analysis prompt here.
So I'm grabbing that and drop this in.
And I'm further focusing this on what my startup does,
saying extract 10 specific problems these producers face
in regards to creating chords or melodies
using their actual language and emotional context.
Again, my software helps with those chords
and melody creation.
Okay, awesome.
Now we need to connect this list of problems
with some time-tested methodologies
that are native to the large language models training data.
And for that, I'm gonna use this prompt right here
that says I've identified these problems people face
with whatever topic your startup or your blog is around.
We're gonna paste those problems in.
And then we're just saying,
we're looking to identify established principles,
frameworks or solutions that might seek to address this.
And just say, hey, there's many time-tested methodologies
this audience could find value from.
The goal is to survey these categories in a robust way.
I found that Claude works best for this.
This is just Claude.ai, one of the foundation models
that we're gonna talk about again and again today.
So I'm dropping that in here.
Then I'm just gonna click this little clipboard thing
and copy those problems in and paste those right here.
And we're gonna let that run.
Awesome, this is stuff that I love.
And even though there's some technical things in here,
these DAWs that they're talking about,
Digital Audio Workstation have been around
for years and years.
So I think this is a good strategy for our blog.
This is what we're gonna be feeding into our system
to create these blog posts.
And this is the part that I had a big challenge with.
Getting the blog set up was actually not that hard,
but it kept writing the same blog posts over and over again.
If you go back to the very beginning
of my ancient wisdom blog, you can see that it wanted
to write about Zen.
And there it is, Zen again, and then Stoicism.
So it just kind of flipped back and forth
between these two very similar topics.
So by generating all of these first,
we're setting ourself up for success
to explore that training data in a very robust way.
But before we move on, I wanna state loudly and clearly
that I think that there is still a place
for 100% human written content.
And I think there will always be a place for that.
At the same time, I think there's gonna be many use cases
for AI written content.
And there's gonna be many gradients
in between those two extremes.
This topic generation is just one example
of how we as humans can steer these AIs
in valuable directions.
Now let's move into actually building this system.
And for this, I like to stay away
from some of these no-code tools.
I've found that actually the real coder tools
are easier to use and offer pretty much infinite flexibility.
That's a whole topic in and of itself.
But to get started, you're gonna need a few things.
First of all, you're gonna need a Cursor account.
Again, I'm not sponsored by Cursor or any of these tools,
but this happens to be the tool that I use all day,
every day now, and it really gets the job done.
Additionally, you're gonna need a GitHub account.
This is a free service that allows you to store your code,
a lot like a Google Drive, but with a lot of fancy features.
And you're also gonna need a Railway account.
This is what I've been using to host all of these,
and it's been working phenomenally well.
There's a lot you can do for free.
You can get this thing up and running for free.
The only other thing you might need is a domain name.
So you can grab one of those at GoDaddy.
That's what we're going to be focused on today.
But Railway offers you to publish these
without a domain name, so you don't need that necessarily.
Next, you just need to create an empty folder somewhere,
and it doesn't really matter what you name this.
It's not going to have an effect on the software that you build.
Once you download and install Cursor,
you're gonna get to a window like this,
where I'm just gonna open that empty folder that we created.
At this point, I wanna take a quick step back and stress
that if you're new to coding, don't be intimidated by this.
You're gonna see a lot of code flying around,
but the good news is, is you really don't need to understand
what that is doing in order to get started.
I do think it's a great idea to start to learn
what these different pieces are, because the more you learn,
the better you're gonna be able to communicate with the AI.
But the AI can teach you all that right here
in this chat window inside of Cursor.
So once you've got Cursor installed,
you're gonna wanna connect it to Claude.
There's many different models you can pick from here.
This Gemini 3 just came out,
so I'm excited to mess around with that.
But I've been having such good luck with Sonnet 4.5.
I really haven't run into anything that it can't do.
We're gonna use that today.
If you struggle with that,
or really any of the steps we go through today,
perplexity.ai is a great place to search.
So if you, for some reason, can't get Sonnet 4.5
to show up in Cursor, go over to perplexity.ai
and ask it how you might connect that.
Unlike what we just talked about
with the training data in these LLMs,
perplexity.ai is really good at up to the minute issues
and problem solving.
So if you're stuck with anything technical,
this is the place to go.
Okay, we're in Cursor.
We've got this beautiful blank canvas,
this empty folder here.
We've got it connected to Claude.
And just like when I fire up a new notebook,
this really excites me,
because I know within just a few minutes,
there's going to be a very valuable code base
living in here.
So back in the eBook,
we're going to grab this prompt here.
This is probably the longest prompt
that we're going to go through.
And I just want to walk you through it.
It says,
I'd like to create a blog that automatically updates.
I'd like to use PHP, SQLite, and Claude to do the writing.
And if you don't understand or know what these are,
no worries.
You can do a little research on your own
or just learn as you go.
But these are very old, well-established technologies
that are deeply ingrained in the training data
of these large language models.
So since the AI knows these so well,
you can be very successful with your coding
if you use these.
And there are some very, very successful indie developers
who focus on these tools.
And once I switched into just using these
or recommending that the AI uses these
when it starts coding,
that's when everything started working.
The next part of the prompt
is that it should be a minimal mobile-first design.
So I think it's critical that you don't want to add that,
you know, iPhone design later.
Just start right there.
You want it to match the look and feel of a specific URL.
So you can give it,
feed in some things that it can look at
and kind of mock up its design based on those.
For me, I'm going to feed in this SaaS product
that I already have created here as its inspiration.
So it matches the tool that I've already built.
And then we're just going to explain this blog.
We'll explore a little bit about all the topics
that we went through.
And we're going to add our topics from Notebook LM
that we research later on.
But this just gives it a little idea of what we're going for.
Notes on the blog creation system.
We're going to create one blog post per day.
We can change that later on for testing.
We're going to do one every five minutes.
At the bottom, we want to include a section
with an Amazon affiliate link to three to five relevant books.
I'm actually going to change that to just three.
We're stressing again the tech stack that it should use
and that the AI will write the post
as well as select the books that align with the topics.
And then we're saying, what questions do you have?
So it's going to ask some clarifying questions.
It's very important.
We're grabbing this, copying this in to cursor.
And one very important thing here,
we want to flip into planning mode when we're getting started.
This is going to be critical that we don't just start coding right away.
We're going to make a plan.
And it's given us some great questions here.
I forgot to give it the URL.
So for question one, I'm just copying in that URL.
For question two, I'm going to say we will host on railway.
And I just know from trial and error that it's going to be helpful to copy in
this railway docs URL.
This is just docs.railway.com.
A lot of the issues I had was just it didn't understand railway that well.
So I'm copying that in.
We're going to turn on connect to browser here so it can go out and search the internet.
For number three here, we're going to say we want it to automatically post.
That's the whole point of what we're doing today.
Number four, it's asking for our API keys.
These are just basically passwords that are going to connect this AI to Claude,
which is going to be doing the writing and to Amazon so we can create our affiliate
commissions there.
I'm saying, yes, I have these, but I'd like to add them later.
And for number five, this scheduling mechanism,
this was what took me the longest to figure out.
There are a lot of ways to do this.
We're going to be using Cron Job, but specifically,
we're going to be using a free tool to trigger that so we don't have to rebuild that.
That's here at Cron-Job.org.
Okay, we're giving it all of that info.
It's building out this plan, which is really awesome.
This has come a long way.
And you can see if you've never coded before, you're just interacting with it the same exact
way you would interact with a AI in the regular web portal.
But here, we're just doing it in a way that it has access to tons of other tools and capabilities.
All right, it's produced the plan and it looks pretty good to me.
So we're just going to click build.
It's going to flip into what's called agent mode down here,
which means that it can make changes to your code, that it can actually build stuff.
That's going to be really important as we move along, flipping this from agent to chat to planning.
That's really the key feature that I love the most about Cursor that you can't do in other tools
that I know of.
And this is just going to take a second, so I'm going to go refresh my coffee.
All right, so that ran for about four or five minutes and created these 14 files,
which is really interesting.
It's a little different than the previous version.
So let's see how this looks.
We're going to keep all of those and it has walked us through here what it has created.
So let's take a peek here.
It's created back in front end deployment documentation, including the readme and quick start,
which is awesome.
It says we need to add our API keys and test locally here.
Then we're going to deploy it and start testing it on the internet.
So the first thing we're going to do is gather these API keys.
So for Claude, you can just search the internet for Claude console,
go right down here to API keys and create a new one.
For your Amazon affiliate ID, they call that the associates program.
So just search Amazon associates and then you can walk through signing up there
or use perplexity to help you.
It's just a couple of steps.
No big deal.
And now this cron secret token is a little bit technical here,
but we could use the AI to do this for us.
I'm just grabbing this prompt out of the cheat sheet, just saying,
hey, can you create that cron job token?
And this is really important.
It must be 32 hex characters.
Again, I don't understand exactly fully what that means,
but I know that that's what works when we're trying to get this thing to automate.
Copying that in.
So my response here again is, can you create that cron job token for me?
It must be that 32 hex characters.
And here's my API key and Amazon affiliate ID.
All right.
It has configured everything and now it is ready for a quick test.
So we are going to start it up and start testing these things.
So the next step here is start the local server and it can do this for us.
So I'm just going to say, please start the local server.
This is just going to find what we may need to fix before we start putting it out on the web
and into production.
And of course, we're getting an error.
So welcome to the wonderful world of computer programming.
I'm just going to copy this back into cursor and see if it can help us troubleshoot.
Okay.
And there it is.
I can tell you that I don't love the layout.
So I'm going to ask it to mimic this other blog a little more closely.
And this is really the cool part where we're just having a conversation with it like you would
a regular programmer saying, hey, let's fix this up a little bit.
I found that showing it examples of what you want it to look like is
much better than trying to describe things.
That's for content itself, design, and, you know, even images.
All right, let's give this a refresh.
Bam.
There it is.
Awesome.
That is what we need it to look like.
But there's just a couple other little tweaks I want to make to this,
making sure that this is the right color and that we got the logo there.
Awesome.
There we go.
Now it's time to test and see if we can create our first blog post.
So I'm just telling the AI, let's try to create our first blog post.
Okay.
And this is an issue that I found repeatedly when I was building this,
is that it is looking for these older out of date versions of Claude.
And that's because it does not have the proper knowledge in its training data,
getting back to the difference between training data and
data that it can find on the internet.
So we're going to feed it this prompt that includes a link to the documentation
it needs to implement this.
A lot of the success I had with getting this to work was after watching the AI struggle for
a minute, going out on the internet and trying to find some resources that I could feed to it.
Oftentimes starting with a perplexity search and then drilling down into the specific page that
the AI needed to get to the next step.
All right.
It says our first blog post has been created.
So let's take a look at refresh.
Boom.
There it is.
The secret sauce to catchy melodies, repetition and variation.
Really cool.
This is something that I think about all the time.
Practice examples.
Very action oriented here.
Super cool.
And here's the recommended reading.
We can test this.
Click on this link.
View on Amazon.
And there it is with our affiliate ID there as well.
Pretty sweet.
So now we got to get this up and into the world.
But before we move on, I want to call out a few things that just happened.
Did you notice the difference between the training data, which was the things that it knew very well,
and the things that it struggled with, which was the new Claude API?
Basically the names of the models.
That's why I needed to feed it that documentation because it didn't have that information in its
training data yet.
And further, it can struggle trying to find that data online.
So this is one major place that you can help the AI.
One major skill here is to learn how to find that information using tools like perplexity
and feeding that into the AI.
Also, just like I mentioned with writing these blog posts,
that I think there's always going to be a place for human writers.
You may not want to let the AI create entire code bases for you.
You may want to slowly learn more and more about what's going on in there so that it can
so that you can control it and steer it in better directions and even
lead you to creating more interesting and valuable pieces of software in the long run.
All right, I know I just went through a lot of steps there.
And while this AI technology allows for nearly infinite possibilities,
there's almost as many ways to bump your head against different obstacles and frustrations.
And that's exactly why I have these group calls once a month.
I have various group calls available in my Patreon.
But this AI builders call here, this software builders call, if you join that in the next seven
days, you're going to get this exact code base with some extra bells and whistles,
along with the ability to jump on these calls and get your questions answered and
really try to push the limits of what this AI can do.
So if that's you, go ahead and check that out.
There's a link in the description about that.
But now we've got this working on our local machine here on my computer,
and it's time to get it out to the world.
And for that, we need to log into our GitHub account and create a new repository.
Give it a name, calling it Music Theory Blog.
I'm going to create this repository.
I'm going to copy that URL.
And I'm going to say, great, let's push this to GitHub and copy that URL in.
That's the easiest way I've found to push things to GitHub,
by manually creating that URL and dropping it in.
There are automatic ways that the AI may recommend.
But I certainly don't recommend those as I've wasted a lot of time
when just creating that link is super fast and easy.
Okay, we've got that pushed up.
Again, it had to make a couple changes there with how it's handling those API keys.
We refresh this.
We can see that all of our files are now up stored on the cloud.
This is super helpful if we are, you know,
working on it and we make a mistake or the AI goes rogue.
We can always roll back to this version.
Now we're hopping into Railway here.
I'm going to deploy a new project.
And since Railway is connected to my GitHub, it's going to pop up here.
That may take you a second to connect Railway to GitHub,
but it's pretty easy to do.
Once you've got it connected, it works really well.
So while we were trying to deploy that,
it looks like it ran into a little bit of an issue here
that we just need to tell Cursor about.
It failed to deploy.
So we're just going to copy and paste this.
We can look into the logs here.
There's not much there.
And in addition to feeding in the error,
I'm going to feed in this link to the Railway documentation,
docs.railway.com.
And that will make sure that whatever solution it comes up with is relevant
and it's not relying on its training data to try to figure this out
because it can craft some pretty crazy work arounds
when it doesn't understand the technology that we're working with,
which in this case is Railway.
Okay.
That has been pushed up to GitHub,
which will then automatically push it into Railway, our hosting service.
And you can see it's building again.
We'll give this another try and you can expect some errors here.
It's always fun to try to get this online.
It seems like it's pretty easy to get it working locally
because the AI has so much control over the files
and the systems that are running on your computer.
But once we're interacting with Railway, it gets a little more challenging,
but just a couple more bug fixes usually and we're good to go.
All right.
And we got the green deployment successful, which is great,
but we're not out of the woods yet.
The first thing I want to do is connect this to my website.
So we hit in, head over to settings, networking.
And if you don't want to connect it to a domain,
you just want a generic domain, you can click this button.
But I'm going to be connecting this to blog.mesomidi.com.
I'm connecting it to my startup here.
So I'm putting in exactly where I want that to live,
selecting that port and adding the domain.
And from there,
it gives you a little link that we need to add to GoDaddy
or wherever your domain is hosted.
If you've never done that kind of thing,
perplexity.ai can walk you right through that very easy.
And now we need to enter our API keys into this variables tab here,
and cursor can walk you exactly through that.
That includes your cloud API key, Amazon affiliate ID, et cetera.
And one of the final things that we're going to have to do here
before we tested online is setting up the database.
And without getting too deeply into it,
you're just going to want to use this prompt, copy and paste this right out of the ebook
to verify that database connection before we move on to the next step,
because it may have configured it in different ways.
And you want to make sure that what we're about to do next works.
And you can confirm that with this prompt.
Okay, so now we've got everything.
We're going to right click on this,
which took me forever to figure out that you could right click on this.
We're going to add a attach volume, which is the database.
And we're going to do that app backslash data.
That's what we just double checked.
We're going to add that creating that volume,
going to apply that redeploy.
And it may work without that step.
But the problem is every time that you make an update,
your database is going to get erased.
So all your previous blog posts will go away.
So that's a really important step.
But now this has been deployed and I think we're ready to give it a shot.
So I'm going to that main URL and there it is.
Awesome.
It is up and running.
We don't have any posts yet, but we will have plenty of posts very soon.
I can guarantee that.
Sweet.
So I just had a cursor create a test post and here it is.
Pedal points, the secret weapon for hypnotic electronic grooves.
Really cool pedal point.
This is a repetitive note for composition.
It's the exact kind of thing that I think my audience would be really into.
So exciting to see this stuff just work.
Took me quite a while to figure this stuff out.
So I hope you're getting some value out of this.
Here's the prompt I use to create that test post.
Now we're getting to one of the final steps here.
This is the cronjob.org.
This is with a final step that's going to trigger these posts to happen throughout the day.
So to do that, I'm going to copy this right out of the e-book.
And it basically just reminds our AI about how this thing works.
Without getting too technical, it basically will time out after 30 seconds.
And our blog posts take longer than that to create.
So we need to adjust our code so it doesn't continuously time out.
I'm dropping that right here into cursor.
Awesome. So it went ahead and fixed that.
And it gave us instructions for how to set this up in cronjob.org.
So like I said, don't be intimidated with this because
the AI is going to walk you through all of it.
All we've used is this window.
We haven't even had to use anything in any of these other windows today.
And this is going to tell us exactly how to go to this cronjob.org,
create a new cronjob and then set up the different settings there.
So I'm grabbing that link, logging in here, creating this music theory blog.
I'm entering in that URL that will trigger this.
So basically it pings this URL and it has this little token here.
That is what our code is looking for to generate these blog posts.
And you can set this to run every, you've got to do more than five minutes.
You can't do less than five minutes because things will get goofy.
So for testing, I'm going to do five minutes, but you can configure this
however you want throughout the day.
There's a custom option here and we're going to create that.
And what's cool down here, there's a little test run button.
So we'll click that, start the test run.
And there we go.
The test run has run.
Even though it says it has failed in cronjob,
it is still creating these.
So there's still a little bit of a disconnect there that I'm trying to iron out,
but it seems to be working just fine.
Sometimes it will say it has run.
Sometimes it'll say it has failed, but it is
continuously creating these different blog posts.
We log in circle of fifths, a very powerful theory
concept that folks could know about.
And we got our awesome affiliate links down here.
And this thing is live.
This is at blog.mesomiddy.com.
So you can go check that out.
And if you are not a music composer, you might want to check out this ancient wisdom.
This is just ancientwisdom.blog.
You can go visit that.
There's some really cool stuff here about,
you know, these timeless teachings for modern life.
Exactly what it says.
And now that we've got this set up and running, we are off to the races.
And we can do a lot with this.
There's a lot of directions we can go.
We can start to infuse it with our own,
you know, knowledge by giving it a bunch of access to
maybe transcripts of interviews with us.
So it can pull from that as it's creating these blog posts.
We can give it access to examples of blog posts that we've created ourselves.
So it can follow that format and tone.
I think that's a much better way to control the tone and voice is to give it some examples
rather than try to describe that stuff.
But the one thing I want to do kind of bring in this full circle is we will notice,
I'm sure that it's going to start to be very repetitive.
We've only created a couple here and these don't look super repetitive,
but you can notice the same book it's recommending the same books here over and over.
So what we want to do is we want to take that information that we started with at the very
beginning, remember with our notebook LLM research and funneling that in through Claude.
And we can dump this right into cursor now and have it start to update the
prompts that it is using to generate these posts based around this research that we did.
So here I am back in the ebook. I'm copying and pasting this right out of the ebook and into
cursor along with all those topics from Claude by clicking this clipboard and dropping that in.
Awesome. So that has run and it has increased the topics in a major way,
adding all sorts of different ideas to this blog based on our research.
But that's just the beginning. The good news is we've got the hard work done. We've got a working
version here on our computer. We've got it backed up to GitHub and launched for the world to see on
Railway. So we can just keep iterating and telling the AI what we want it to do and how we want it to
behave and improve. And if anything ever breaks, we can just roll back to the previous version that was
working in GitHub. And it's all good. Many of those are covered in this ebook here. This is well over 20 pages
getting into all sorts of ideas that double down on that idea of harnessing the training data and getting
the most out of that. And if you really want to take it to the next level, make sure to consider joining that
software builders call. When you join that call, you get access to the power users monthly call, as well as all the ebooks, as well as
this entire code base with a really detailed step-by-step walkthrough of how you can just deploy
this thing without building it from scratch. And again, there's some extra bells and whistles there
with that admin section. So check that out. I'd love it if you join these calls and start hacking away
with me in that group. If you like this video, I've got another video all about creating this app,
this app that I am promoting now with the blog that you just watched me build. I'll show you how to build
this from scratch in this video right here. So go ahead and click that link and I will see you over there.
Make your dream come true!

Clips

No clips yet

Select text above to create your first clip

Loading connections...

Reflect

What assumption does the author make that you agree or disagree with?

Press Cmd+Enter to submit