If you found this note in a small wooden box with a heart on it, then *congratulations!* You are probably the first person to read this. I didn’t really plan on sharing this with anybody, but for some reason I think it’s exciting that somebody out there, a complete stranger, will come across this note and read my story. Someone I will never meet, sharing such a personal bond with me. I’m fascinated that either one of us could die - even as soon as tomorrow - with the other being completely clueless to the fact. To you, my entire life is within this note, and so I will live for as long as your memory can carry me. Writing this, I’m wondering if that makes you feel fascinated or violated. It’s so exciting.

I’m sorry if my story is a bit disorganized, but I’d like to get it down while it’s still fresh on my mind. First, I’ll tell you a little bit about myself. I’m a first-year college girl and have led, by most standards, a pretty unspectacular life up to this point. I grew up in an upper-middle class school district with decent teachers. I did track in middle school and some of high school, and I’ve had two boyfriends. Now, I’m studying for a career in occupational therapy, because I feel the field is undervalued and provides tremendous help to people.

I’m giving you this background because there’s this strange misconception that if you want to kill someone then you’re either sick in the head or you have anger management issues. But, it’s very apparent that I don’t fall into either of those categories. It’s true that most murder cases are in a domestic setting where someone loses control of their anger or something. But the thing is that those people kill under provocation, whether by a singular outburst or by a slow-burning series of misfortunes. Those people kill because in that brief moment, they want a specific someone, for a specific reason, to be hurt or killed.

What I’m talking about is wanting to kill someone for no specific reason, maybe just to see what it’s like. Do you ever get that? I wouldn’t know how others feel, because it’s not something I ever talked about. But I’ve been curious about what it’s like to kill someone ever since I was a child. Not killing anyone in particular, just a random person. It’s always just fascinated me that if I put my mind to it, I can approach anyone, and in five minutes they would be completely gone from this Earth.

But I’ve never done so for a couple of reasons. First of all, for most of my life it was logistically impossible for me to do it without getting caught. I only got my driver’s license a couple years ago, and even then, the preparations would take too much time, definitely stirring suspicion. It was only once I started college that I realized this was no longer an obstacle.

Another reason is that I was afraid of causing harm to too many people. You might laugh reading that, at how hypocritical it sounds. But, let me explain: Why should I feel bad about killing someone if they’re too dead to care? Who would I be feeling bad for? Contrarily, it’s the grief of the living that I’d rather not be responsible for. Because of this, I knew it would take a good deal of research before finding a suitable person to kill, and I’ve never had the means to do so - again, until I started college.

And now, having just experienced it, I’d say it was pretty satisfying in the end. Something I would try again? Probably not, since my curiosity has already been satisfied. It really wouldn’t be the same a second time.

But anyway, if by any chance you’re also curious to kill someone, then you’re welcome to take notes. :)

***

I started a hobby of people-watching soon after I entered college. People-watching is interesting to me because it’s taking one of the infinite extras in your life and turning them into a main character - without them knowing, of course. It’s so easy to forget that every single one of the hundreds of strangers you pass every day has a life story as deep and complex as your own. One thing I noticed about people-watching, and wanting to kill someone, is that you are in more constant awareness of this. When I find a person to observe, their story slowly becomes more clear to me over time, gaps being filled - it really is amazing.

I usually went to grocery stores on weekends and looked around in people’s shopping carts. If I saw something that interested me, I decided to observe the person for a little bit. Of course, since my goal was to find someone to kill, I ruled out anyone who had children or a partner with them. Wedding rings were another tell-tale sign.

So maybe once a weekend, I would find someone who fit my criteria, at which point I would follow them home and note their address. From there, it became incredibly easy to investigate a little bit more; most people have normal work hours, meaning I could spend afternoons going through their mail or looking around in their house. I repeated this with several people (and had one close call), but for varying reasons I didn’t really feel satisfied enough with them to kill any of them.

I started getting a bit impatient and thought that I might just settle for killing the man named Devon, even though I didn’t really want to kill someone wealthy. But then, I came across someone new - someone who just, felt perfect. The feeling only strengthened as I investigated her further, and I knew that she would be the one for me to kill.

A young-looking woman I met at the grocery store, as per usual. She was doing some light shopping with a basket. Her hair was wavy and dark brown, sitting inelegantly on her slumped shoulders and surrounding her tired-looking face. Her bare fingers told me she might be single, but beyond that, my gut was almost certain of it. This woman just seemed so…plain, really. I guess I felt a greater acuity for the personal lives of strangers ever since I started my people-watching. But the way she carried herself, I just got the feeling that if she suddenly died, nobody would be around to miss her. Of course, I still wanted to investigate her a bit.

I followed my usual routine of checking out her place during her work hours. I learned immediately from her mail that her name is Linda Watson. Linda lived in a quiet apartment complex, her mailbox easily accessible right outside her door. Instead of quickly shuffling through it, I decided I could take her mail back to my dorm and return it before she was finished with work (she only lived about 15 minutes from me). I did some research and learned how to open and reseal the envelopes without damaging them, which took some technique along with a hair dryer, rubbing alcohol, and Q-tips.

This made it easy for me to learn a little more about her. Linda was a 33-year-old woman who worked for a small accounting firm - I’d rather not name the place outright. Her birthday was December 11th which, coincidentally, was approaching in a couple weeks. I also managed to find a bank statement that gave me a nice look into how she’s been spending her past month. It was at this point I realized that my assessment of Linda Watson as an extremely plain woman was pretty spot-on, because there was absolutely nothing interesting on the list. A trip to Old Navy, a bunch of Starbucks, something about $40 from Amazon - no restaurants, no movies, nothing that would really imply she was spending any time socializing. That aside, I also found a cooking magazine, so I guess she was into cooking.

Apartments are harder to break into than suburban homes, because there are fewer doors and windows. Every time I got Linda’s mail, I would check the front door and the windows in the back, but they were always locked. This was a bit frustrating because I was really interested in getting into her house. So, I came up with a sort of plan that I thought would be fun, even if it didn’t work.

Last Saturday, I visited Linda Watson’s apartment complex as I would on weekdays. The difference is that this time, I wanted her to be home. I thought it would be interesting to have a conversation with her. If I got lucky, I could take advantage of the situation to discreetly unlock a window from the inside. So, I walked up to her door wearing nothing warmer than a light sweatshirt, and knocked. The adrenaline rush was crazy. I was afraid I might screw something up.

The door opened, and in front of me stood Linda Watson, exactly as I remembered her from the grocery store. It was at that moment, making eye contact for the first time, that I realized I was running the risk of beginning to care about this person. As selfish as it is, I couldn’t kill a person I cared about, even if it’s a 33-year-old woman standing in a doorway with a slightly perplexed look on her face, giving me a reserved “Hello.”

Arms crossed from the cold, I shyly returned Linda’s greeting. I explained that I was walking my dog near the woodsy area behind the back of her apartment, and that he had gotten away. I had been looking for my dog for an hour and was wondering if Linda may have seen him roaming about. Of course, Linda sympathetically apologized for the situation and that she couldn’t be of use to me, but that she would keep an eye out. I wore a defeated expression in response, apologizing in return for troubling her.

It somehow went exactly as I had hoped - Linda invited me inside to warm up a bit with some coffee. I outwardly hesitated before accepting her offer, although on the inside I wanted to jump through the door and hug her for cooperating so well. And that’s how Linda Watson ended up with a 19-year-old girl next to her on the couch - who knows if it was just a nice gesture or if she really has no better way to spend her Saturdays than talking to some kid she just met (who happens to be interested in killing her).

Linda soon learned that my name is Maria (it’s not) and that I attend the nearby community college (I don’t). I was a little bit nervous that she would ask me too many questions because I didn’t have many answers prepared. I was able to steer the conversation toward her, and she was pretty happy to talk. I asked what she does, and she told me that she works for the accounting firm I already knew about, communicating with outside clients and keeping records. I told her I was pretty nervous about growing up. She told me to enjoy college and to make lots of friends because there’s less opportunity once you start working.

When I asked if she was married or anything, she laughed. Of course I knew she wasn’t married, but I wanted to hear more about her love life. She said that she doesn’t currently have a boyfriend (I guess she’s at least had boyfriends, but who knows how long ago). When I asked her about kids, she said she doesn’t want them until she gets a better job. On top of that, she told me that her family has a history of some genetic diseases such as arthritis and depression, which she is afraid to give to her kids.

It’s funny that she mentioned that because when I asked to use her bathroom, I noticed a tube of prescription pills on the sink. It was labelled duloxetine, which I looked up later and discovered that it is in fact an antidepressant. I had a joking thought that maybe by killing her I’d be doing her a favor, but quickly decided I was a terrible person for coming up with that.

The rest of the visit was pretty dull. We talked about food and some other mundane stuff before I eventually made an excuse to leave. I didn’t get the chance to unlock a window or anything like that, but I didn’t really feel the need to go through her apartment anymore. As early as the drive back to my dorm, I was already thinking about how I would best like to kill Linda Watson.

The choice was between effectiveness and fun. I decided to go with fun, because it would be way more satisfying to kind of dissect her as I killed her, rather than just getting it done and calling it a day. Fast-forward one week to December 13th - today, actually. Linda Watson turned 34 two days ago. I made a fun little wager with myself where if Linda was spending her birthday weekend alone, I would pay her a visit and kill her. If she was out or had company, I would stop by next week or something instead.

So this morning, I drove over to Lowe’s and bought an axe. Again, I expect you’re laughing, but that’s also kind of the point. An axe is so kind of cliche and a “movies” thing that I actually thought it would be the most fun. Swinging it at someone and everything, it’s a really entertaining image. They actually had a bunch of different axes, so I picked one that had a good weight but was still light enough for me to swing quickly.

The drive after getting the axe was when the adrenaline really picked up. All that kept going through my mind on the way over was “Wow, I’m really doing this.” Not in a bad way, just like a surprised this is real life sort of thing. I also got this strange rush of recollections of the time I spent with Linda. It was like my life was flashing before my eyes, except it was just the rather mundane hour I spent with Linda - like snippets of our conversations, the sound of her laugh, her facial expressions and stuff.

I also wondered to myself what the crazy serial killers would be feeling at a time like this - schizophrenic delusions? Sexual buildup? I have no idea, but what I felt was kind of like ridiculously alert and numb in the senses at the same time, however that’s possible.

Before getting out of the car, I had the sense to stuff the axe into my backpack to look a little less ridiculous walking across the parking lot. The handle was sticking out, but that didn’t really matter. At that point my heart was pounding so hard I could feel my throat throbbing. I tried controlling my breath, but it’s really hard to not breathe fast when your heart is pounding like that.

I reached Linda Watson’s door and quietly put my ear to it after setting down my backpack. I heard a voice that wasn’t hers - company? No, it was just the TV, mixed with her occasional tapping footsteps behind the door. I actually kept my ear there for a really freaking long time, because I wanted to make absolutely sure nobody was over. Probably 10 minutes of that and a lot of reassuring myself convinced me.

I quietly opened my backpack zipper and held the axe in my hands. My fiercely shaking hands. What the hell was this kind of reaction that my body was making? I told my body to shut up, that it’s no big deal, but of course it wouldn’t listen. It was actually bizarre how much my hands were shaking. It must be the adrenaline buildup. I rolled my eyes at myself and got my hand to rest on the doorknob. If it’s locked, I’ll knock, it’ll be basically the same. I took a deep breath and forced my muscles into action.

I swiftly turned the doorknob. Not locked. In one movement, I opened up the door and slipped inside. Linda Watson, just a few steps away into the kitchen. I see - she was in the middle of cooking. She immediately jumped and turned around, startled. I expected that. Quickly, I let go of the doorknob and adjusted the axe into both hands. In the following split second, I realized that she would probably start to make a lot of noise. Looking back, I’m an idiot for not considering that. Just as Linda’s mouth opened to speak - maybe even started speaking - I forcefully swung my axe into the side of her head.

But, my axe was facing backwards. I hit her with the blunt end of the blade. I actually did this on purpose, because in that split second I somehow decided that it would be the way to keep her noise to a minimum. It actually worked. I felt barely any resistance in the swing as I collided with her head, knocking it clean aside. Linda’s half-formed syllable came out as a kind of weird grunt - a noisy exhalation is probably the best I could describe it. That happened at the same time as her head smacked into the cabinet from the force, and she fell backwards without any ability to keep her balance. I didn’t hesitate at all to keep swinging at her while she was half lying down on the ground, this time my axe facing the right way. I didn’t really know where to swing, so I kind of just started hacking at her collarbone area and chest. It didn’t feel like the axe was going too deep, but there was a nice “thunk” sort of sound every time the axe embedded into her. I even felt the soft sinking sensation ripple into my hands, like the axe was a kind of physical extension of my sense of touch.

On a whim, I swung once at her throat, but most of the swing actually missed and I hit the floor by accident, causing a loud, dull whack to resonate through the apartment. I didn’t have time to think about it. I swung again with better aim and got a more centered hit, feeling the bone or cartilage or whatever is in there, so I must have split it open. Right after that, I decided to swing at her face, and I got this diagonal cut along her nose and mouth, which felt pretty good so I did it once more.

I finally briefly stopped to survey the damage. Linda was bleeding ridiculously. The blood was kind of coming out in waves, in sync with her beating heart, probably. It was pooling all around her and riding along the cracks between the tiles. Her light blue shirt was all torn up and stained dark, kind of mixed with a fleshy mess around her chest. It was all just glistening red. Her face wasn’t much better, covered in dripping red at this point, and her lip was kind of hanging off, revealing red-stained teeth in a really weird way, like a zombie or something.

Linda wasn’t dead, though. Her limbs were kind of weakly, aimlessly trying to move while she was stuck on her back. More than anything, she reminded me of a bug that you crush but it still pitifully moves its legs around before it dies completely. That’s basically what she was doing. But I didn’t know how long it would take for her to die, or what kind of condition she was in. I ended up grabbing a big knife that was on the counter that she was using to cut up meat. Trying to step around the blood, I reached down and carved into the upper half of her neck, trying to sort of saw it from the left side to the right. It was a little awkward because the area was so soft and squished around the knife as I was cutting. But the sensation was completely different from the axe. It actually felt like I was cutting a tough piece of raw meat (which I guess technically, I was).

The blood started pouring out, and I hoped that I severed the most major arteries in there. It must have worked, because after a moment Linda’s limb movements kind of just had the strength drained from them, soon resting still on the floor. I took a few seconds to catch my breath. No time to stick around and think about the experience. I shook the knife blade through a dirty pan in the sink to clean off the blood, then threw the knife into my backpack. I did the same with the axe. I also took her laptop that was sitting on the counter. It had some recipe open for veal and mushrooms. I didn’t really take the laptop to use it, since I have a perfectly good one myself that I got for college. I just wanted to look through it for fun.

I finally went outside and closed the door behind me. I got some blood on my sweater and jeans. But funnily enough, I actually anticipated that so I wore dark colors.

The drive back to my dorm was just a constant replaying of the experience in my head. I guess that’s still kind of happening even now, actually. But it felt pretty nice. Linda Watson is dead. I kind of let the weight of that sink in. The sensation of having completely removed a human life from existence. It’s crazy. I don’t know how else to describe it.

Anyway, I threw the axe and knife into a dumpster on campus, which I think is picked up every Monday, so they’ll be gone by then. My roommate goes home on the weekends, so I have the dorm to myself today. It gave me the chance to go through Linda’s website history. I was right in thinking that’s where her deepest secrets would lie.

There was actually a lot of dirty stuff, like the names of websites for porn videos and stories and things like that. Same with her searches. A lot of the websites were boring, like cooking websites and recipes, and game websites like Bejeweled and stuff. I eventually got to the “one week ago” section of her history, and it gave me a chill.

There were a whole bunch of searches like “methods of suicide”, “how to tie a noose”, “dangerous household chemicals”, “carbon monoxide poisoning” - like a lot of them. She was probably ready to write a book on suicide after all the research she did. So I guess Linda was contemplating suicide. I wonder if it was influenced by her depression.

The irony is actually striking. Maybe Linda was going to die anyway. Or maybe she couldn’t find the courage to do it. If that were the case, I almost literally gave her a birthday present by killing her. That’s actually really comical in a messed-up way, and it leaves a weird taste in my mouth. The part I don’t get is that I didn’t see any of those searches up until the “one week ago” section, nothing more recent than that.

I ended up throwing the laptop in the dumpster with the other stuff. It’s been a few hours since then, so I’ve had some time to calmly think about everything. Like I said, it was pretty satisfying and I’m glad I finally got around to it. I feel like I can finally cross it off my bucket list, or like I’m tying loose ends with myself. This is probably the first and last time I’ll write the name Linda Watson - it’s back to living a normal college life, except I might do some people-watching every now and then because it’s definitely fun and interesting.

But I’ll always wonder how many people there are like me. I’m sure there has to be a lot, because there is just nothing strange about it to me, being curious about killing someone. Sadly, it’s something that people can’t exactly just talk about, so I guess I’ll never know. I’m sure that anyone would just lie about it even if you asked them. But you can’t help but wonder if that person in the grocery store, who stares at you as you pass by, might be considering what it would be like to kill you. If I could, I would tell them all about it, so they could decide for themselves.  But who knows, maybe I got lucky, and that person is you. I actually really, really hope so.

~♥