Skip to main content
View on YouTube to comment and like!

almost 2 years ago Syntax Podcast

Spooky Web Dev Horror Stories - PART 1

Wes Bos

Wes Bos Host

Scott Tolinski

Scott Tolinski Host

Topic 0 02:33

Keeping stories anonymous

Wes Bos

the entire

Wes Bos

Oh. That always scared me. When people, like, move, like, oh, we're gonna launch our new website,

Wes Bos

as CIO.

Wes Bos

of spooky stories coming for you on Wednesday.

Wes Bos

gosh. 3 weeks But sometimes,

Wes Bos

Damn those infinite loops.

Wes Bos

specific objects back, it catches it and says that's not a POJO,

Wes Bos

that I had deleted all of their email records. And it turned out that because I had moved it from their hosting provider to my own, and then their hosting provider deleted all the email addresses in the cPanel. And I said, oh, crap. And I was I was sweating for a couple hours, and then I realized

Wes Bos

Spooky.

Wes Bos

So this is this is pretty big. I was in charge of back and front end, I was supposed to connect to an API to generate coupons and send them to email to people

Wes Bos

Sometimes, Wes, you just think,

Wes Bos

which changes all the DNS management. And if you have anything else on your domain name, like MX records for email or, SPF authentication That's a good way to put it. Yeah. Assume

Wes Bos

Alright. This next one is, from the founder and ex CEO of GitHub. This one is straight from Twitter. It was a gorgeous Sunday morning. Birds were chirping and squirrels were swirling. Coffee in hand, I began upgrading GitHub's testing infrastructure.

Wes Bos

Next one is my squeal horror. During my 1st years as a software developer, I had to rewrite a login register form for one of our biggest customer CMS portals. Part of it was the password forgotten page Wes I implemented a whole submit your email and reset your password flow. I then went on to write a nice little SQL query

Wes Bos

Spooky.

Wes Bos

were stories where this had happened. Someone forgot the where clause.

Wes Bos

yeah, that is a a fear of mine. So I'm always always be backing up. Yeah.

Wes Bos

to reset the user's password whenever they requested a reset link.

Wes Bos

circular references better. Man Oh, man. Have you ever logged, like, a giant object and even your local host is, like, struggling with it? Yeah. Yeah. It chokes or even, like like, some things if you try to JSON something, like in SvelteKit, 200 times within a few minutes on both channels.

Wes Bos

When I was done, I ran a quick test and deleted Everyone who was around helped out, but our Dogek

Wes Bos

references like, objects aren't just data. And if you try to serialize JSON stringify

Wes Bos

Wes, deleting and restoring data regularly, and 4, it can happen to you. Yeah. If, it it is funny. Whenever I I do have a database spooky stories. We have rounded up some of the best

Wes Bos

people an email saying, thank you for your application, but we decided to move forward with someone else. Most of them didn't even apply.

Wes Bos

but I have started just littering my code with to dos anytime Bones

Wes Bos

Client was mad. We sent the coupons weeks late to thousands of people and got some very angry messages in response. I never sweat so much in my life. Yeah. You didn't take the test that it actually sent a email? And I realized, oh, they actually weren't using the cPanel email. They were using external MX records. So, thankfully, I was spared there.

Wes Bos

it's still only local. You know? You you push it somewhere else. Or Vercel Node now has that, like, automatic backups. Even between commits, you can lose stuff. So a scary part of

Wes Bos

So the 1st spooky story is Node A Coffee.

Wes Bos

Yes. Oh, man. That is actually one of the big reasons why I started.

Wes Bos

I got the email, like, 15 minutes later. I'm so sorry, but we accidentally sent that out. Like, that's yeah. That was rough. No. Thank you.

Wes Bos

I had forgotten for sending one off emails, transactional emails for spam detection, and it took 3 days until it was resolved. Both times, the client didn't have the credentials to the registrar,

Wes Bos

We should also have known our events table of users were affected before Wes rolled back successfully.

Wes Bos

who played the game. Supposed to. Interesting.

Wes Bos

millions of it sold around the country.

Wes Bos

Yeah.

Wes Bos

you're writing your own log serialization

Wes Bos

Yeah. Scary stuff indeed.

Wes Bos

that sucks.

Wes Bos

but it was the opposite where they admitted everyone. So I got the email saying I was admitted to Scott up school. This Wes back in the early days of LevelUp Tutorials, and I was so stoked. I told everybody in my my house right away. I Wes, like, really? And then sure enough,

Wes Bos

We released the whole thing, and everybody was quite happy, especially me JS it was my biggest project to date. After a few weeks, started getting emails from users telling us they had to reset the password every time they wanted to log in to the CMS.

Wes Bos

the spooky stories

Wes Bos

3, 4, 5000

Wes Bos

in part 2 of the annual spooky stories episode. And, again, if you have any stories of your own, we want to hear them. We will read them on the show next year and share Node delight with all of the horrors

Wes Bos

what people would often do is they would just change the name servers of the domain,

Wes Bos

Save server upgrades for the weekday when your team is working so they can help you.

Wes Bos

I went to the source code to check what was happening, and I looked at my send coupon email function. Oh, no. It was empty.

Wes Bos

would be a doozy.

Wes Bos

some other piece of information they've from in another field, they've been able to figure it out, but

Wes Bos

We launched the campaign, and everything seemed to be going well. Client was happy and so on. After a few weeks, the client called and said a customer JS complaining he didn't receive his coupon.

Wes Bos

yeah. No kidding. Right? spooky stories from our community.

Wes Bos

Yeah. Careful with that. Yeah. Infinite loop. I once sent the same email and text notification to a single user initiative. Wow.

Wes Bos

Yeah.

Wes Bos

that the quality of data in their database was very poor.

Wes Bos

Man. But the main thing that went wrong, our GitHub application assumed it was running in production mode unless told otherwise.

Wes Bos

circular horror.

Wes Bos

you got a lot out of that program if you were accepted, and they were accepting, like, 20 people or something.

Wes Bos

Wes the server memory would spike almost immediately

Wes Bos

The first one is simple. I moved a client's name servers to my hosting provider and forgot to add the MX records to Google Workspace.

Wes Bos

so it took a full day to track down the guy who originally set it up.

Wes Bos

This is awful because, first of all, that's a security issue, meaning that you could set reset your password, and then your password is then the password for everybody's The the fix was quickly implemented and deployed to reset the passwords once again, and everything was fine. Since then, I triple checked my Wes causes.

Wes Bos

And they did that, Yes, folks. It is time for our annual spooky story episode.

Wes Bos

scary stuff.

Wes Bos

and then make sure, When I ran my test, I forgot to set the test environment.

Wes Bos

awful. Awful. For real. Get corrupted. I once lost 3 weeks' worth of work without noticing.

Wes Bos

Wes if you forget the where, it will literally update every single thing

Wes Bos

Next Node, pnpm company. This could also be pet cemetery. That's a scary Oh, that that would have been a better title. I like that. No. It's alright. Forgot a Wes clause on an update and changed every customer master record to that I'm mid project. Just so Yeah. I do a command f for to do before I push anything

Wes Bos

date set in the future on my NAS. I pushed a remote 10 times a day now. This is this is honestly one of my fears is even if you are git committing often locally, logic.

Wes Bos

I already did that. I already did that. Is that has that ever happened to you where you're just, like, alright. Now that that's Deno, and then you move on to the next thing, and you're, like, oh, it's half done. You didn't even really get there. That's that's kind of how I work sometimes. Just put a to do in there.

Wes Bos

I forgot

Wes Bos

ran a second update, and told the CEO

Wes Bos

If you're rejecting or accepting people for something important, yeah, be extra cautious. Careful with people's lives.

Wes Bos

and we only found out about it days later after his client started messaging him wondering why he is not answering his emails. Oh,

Wes Bos

So we're gonna continue That that stinks. I I may have told this before on the show, but I had applied to Y Combinator Startup School, which Wes, like, a really

Wes Bos

Those are awful because you can't stop it. Once you send 50,000 emails, you're gonna get

Wes Bos

redacted large pet retailer.

Wes Bos

Yes. And, like, honestly, it's kind of like a

Wes Bos

100 and then thousands and then tens of thousands We're gonna be talking I know people poo poo did to dos. They poo poo to dos,

Wes Bos

in the database. And probably we'll we're not gonna read all of them, but we've probably about half of the stories we got submitted

Wes Bos

logic with an out of memory error.

Wes Bos

if you try to send

Wes Bos

Next Node,

Wes Bos

He did it again.

Wes Bos

So a connection was established to the production database, which was promptly deleted.

Wes Bos

It was a holiday.

Wes Bos

This might be the spookiest ever. Yeah. And there's been some spooky ones.

Wes Bos

the user reference in the where clause.

Wes Bos

database.

Wes Bos

It was a holiday again, then you can get into some big trouble there, especially when it's

Wes Bos

And, And they're awful in the time, but I'm glad that we can laugh about

Wes Bos

And I asked how they ever did accurate sales reporting. It's like a master I almost got in my car and drove away. Luckily, there was another field that had roughly the same information, Jeez.

Wes Bos

I moved the domains right before a holiday, stories of web development.

Wes Bos

I always make sure I click back up to, like, a rollback type of situation. I know that's a smaller scale than GitHub. But, like, for me personally, the server over and over.

Wes Bos

The reason I later discovered an automatic r sync backup,

Wes Bos

I thought that's weird. Only when I visited GitHub Scott seconds later did I realize how bad things were. Nothing worked. As I explained in the blog post, we always wiped our test DB before running tests. Turns out people don't want their data wiped on a Sunday morning for no reason.

Wes Bos

It was my 3rd day on the job

Wes Bos

Started a master data management and I need to do something, you know, major on it, whether that's a migration even though it's not that major, but still a migration or something where I'm modifying the database,

Wes Bos

there's a couple where we're able to say the company or at least having I made a website for a very big company selling coffee all around the world. It was a website promoting an online game where people could win a trip. In other things, the minimum prize for a coupon was 20¢ off a pack of coffee.

Wes Bos

Added a custom ESLint plug in to prevent that from ever happening again ESLint addition to handling

Wes Bos

which wasn't excluded due to a system

Wes Bos

There was a lot of things that went wrong. Our tests should not have had access to production. Yeah. That's that's 1. Our production Node shouldn't have been wipeable. 2, we should have been able to restore the DB faster.

Wes Bos

It caused a reset page. Every time a user resetted their password, Wes were actually resetting the password for all users of the company's account.

Wes Bos

It's a whole don't deploy and try anything.

Wes Bos

There's something very poetic about GitHub like, you can get into some big trouble. I I once did it where I had moved a domain name, and I thought

Wes Bos

to code it.

Wes Bos

really saved the day by quickly restoring the DB and punting on the events table. We also immediately locked down production so it wouldn't happen again. My main takeaway JS don't let anything access production except production.

Wes Bos

the lady's like, we're still getting emails.

Wes Bos

and then restart That's a hell, like, f you in particular, Can you use favicons in URLs, like, as a URL path path name

Wes Bos

Man, these are great. Next one is the haunting of the forgotten MX records.

Wes Bos

while using version control.

Wes Bos

tell you what we think it is.

Wes Bos

There was a QR code on every pack of coffee,

Wes Bos

type of move right there. That's hilarious. Oh,

Wes Bos

account.

Wes Bos

Sucks. It those are some of the worst stories we've had over the years where We are keeping everybody anonymous for the sake of nobody getting in trouble.

Wes Bos

which is a plain old JavaScript object.

Wes Bos

emails back being like, what's this about? What's going on? You know? And even if you send up a follow-up, hey. Sorry. That wasn't meant for you. You're still you just cannot stop it, and the poor support people are just gonna be slammed for days. Yeah.

Wes Bos

with my NAS was corrupting my Git folder, an object that refers to another object and it's circular,

Wes Bos

Serialization

Wes Bos

SQL lost data. You know? Oh my

Wes Bos

Yeah. Classic.

Wes Bos

there is nothing that needs I know that's a whole controversial thing about that in general. But, hey, I I like to dos for that.

Wes Bos

Totally empty.

Wes Bos

people had to piece things back together with Oh, yeah. Alright. What do we have? Like, often, we've had people go through logs, and they've been able to piece it back with logs or

Wes Bos

don't assume production by default. That's a good tip. That is a good tip. Always assume either that it won't work or that it's connecting to a local or something. Yeah. I remember exactly where I was sitting in my apartment next to Dolores Park. The Wes rang quickly at that point. So when I started my test and it just hung, I immediately knew something was wrong. But I thought it was a connection issue.

Topic 1 00:46

Ad for Sentry

Wes Bos

That hurts.

Wes Bos

I own a domain name that is just a 1 a 1 letter Node, but, yeah, you you can put them. Like, I have a fab.farm,

Wes Bos

and serves it up as a fav Scott. So you certainly can.

Wes Bos

boss. What's up, my dude?

Wes Bos

and you can do forward slash any emoji, and then that turns it into an SVG or PNG

Wes Bos

Yeah.

Wes Bos

Yeah. So we should do that. We should have a little ghost emote. You could Yeah. That sounds like a annoying that sounds like a fun joke that will be a pain in the ass to have to support for the rest of our lives.

Wes Bos

You Sanity a certain ESLint.

Wes Bos

or not favicons emoji? We had to deploy for the send money app at PayPal

Wes Bos

Emojis.

Wes Bos

Be they to get converted into what's called punnycode.

Wes Bos

I can imagine it does not look like a phone call.

Wes Bos

how it went and also learn a lot about how to, like, not get into the situations that these folks are in. If you have your own spooky story, go to syntax.fmforward/spooky The truest sense of it can happen to you for sure. Next Node we have here is called rejected. I once sent 50,000

Wes Bos

This is one of my favorite episodes. We do 2 of them every single year Wes you submit your spooky stories of just the most put your head in the sand 2 years later, I had to close the account again, and I forgot to move the name servers.

Wes Bos

and pop it in there. We collect them all year round, And then once a year for Halloween, we read them.

Wes Bos

Hey. That's the best kind of fun joke here. Yeah. Let's get into the first question. Some of these stories are longer. Some of them are just 1 or 2 sentences.

Wes Bos

I'm gonna have to take this mask off because it's just it's cutting into my eyes.

Wes Bos

Spooky.

Topic 2 00:33

Stories about dropping databases, email blasts

Wes Bos

you best believe you need century at century.io.

Wes Bos

Well, we're gonna be talking all about those things in this episode. But if your code is spooky,

Wes Bos

Sign up and get 2 months for free. Wes.

Wes Bos

people.

Topic 3 00:00

Transcript

Wes Bos

Welcome to syntax syntax. On this Monday Sanity treat, we're gonna be Tolinski

Topic 4 00:21

Community submitted web dev horror stories

Wes Bos

Maybe you dropped the database.

Wes Bos

web development I yeah. That stuff always freaks me out. I I know so much of it JS not a big deal, but, yeah, I email in general just because I know how to Never wanna goof it up. Yeah. Between spam and Node spam. That that's a that's a hard hard hard task there. Man, these these have been well, this is a good good kickoff, Wes. I'm, like, pretty stoked about Yeah. These spooky stories here. Well and and folks, if if you if this is your 1st spooky stories episode, we have a whole hour Maybe you sent a test email to 1,000,000 In seconds, of the things that we do at work all day. Alright. We'll catch you in that one on Wednesday.

Topic 5 00:07

Welcome to annual spooky stories episode

Wes Bos

spooky stories.

Share

Empowering developers for over 286197068376 milliseconds!