Latest Comics
Read Peregrine Lake!
It’s Hard to Know What to Do Sometimes
Right now I’m sitting up in the middle of the night. I should be getting ready for bed, maybe reading a book and trying to clear my head. I definitely shouldn’t be still looking at social media on my laptop in my living room with the only sounds the ticking of a clock, the typing of these keys, and the tinnitus in my left ear.
I woke up this morning to yet another person getting executed by federal agents in the twin cities. The fact that the previous sentence included the word “another” is horrifying, and I literally started my day by seeing the video of his execution feed to me involuntarily on TikTok. They pinned him to the ground and shot him.
And folks immediately went to social media to defend the border patrol officers who did this — arguing that he had a gun. Never mind that the gun was holstered and he had a permit. Never mind that these are literally the same people who talk about the second amendment like it’s a holy text. And I don’t know if these are real people, or if they’re bots or Russian trolls. It just… it’s just so frustrating to think that anyone would defend this.
This is tyranny. This is fascism. We can see it with our eyes. We are watching it live.
And the worst part? The worst part is a lot of us saw it coming. There are days where I feel like Cassandra, and I keep wondering when enough will finally be enough. A little over nine years ago I literally ended a friendship because someone told me I was being “cringe” in the kinds of stuff I was worried about happening. It’s one of those things where I really fucking wish I’d been wrong.
But also fuck that guy still.
I don’t want you to think I’m without hope or without fight. I’m not a doomer and I’ll never be one. People who are strong don’t do the awful things that are happening right now. If there was no chance of us winning, they wouldn’t be doing any of this to begin with. But just because I think that a storm can be weathered, doesn’t mean the storm doesn’t fucking suck.
Jeffrey Pretti was a 37 year old ICU nurse. He did not threaten federal agents, and they attacked and executed him without cause. The government is lying about the incident, and I know this because I have seen it with my own eyes.
I wish I hadn’t.
I wish there’d been nothing to see.
View Comments
I woke up this morning to yet another person getting executed by federal agents in the twin cities. The fact that the previous sentence included the word “another” is horrifying, and I literally started my day by seeing the video of his execution feed to me involuntarily on TikTok. They pinned him to the ground and shot him.
And folks immediately went to social media to defend the border patrol officers who did this — arguing that he had a gun. Never mind that the gun was holstered and he had a permit. Never mind that these are literally the same people who talk about the second amendment like it’s a holy text. And I don’t know if these are real people, or if they’re bots or Russian trolls. It just… it’s just so frustrating to think that anyone would defend this.
This is tyranny. This is fascism. We can see it with our eyes. We are watching it live.
And the worst part? The worst part is a lot of us saw it coming. There are days where I feel like Cassandra, and I keep wondering when enough will finally be enough. A little over nine years ago I literally ended a friendship because someone told me I was being “cringe” in the kinds of stuff I was worried about happening. It’s one of those things where I really fucking wish I’d been wrong.
But also fuck that guy still.
I don’t want you to think I’m without hope or without fight. I’m not a doomer and I’ll never be one. People who are strong don’t do the awful things that are happening right now. If there was no chance of us winning, they wouldn’t be doing any of this to begin with. But just because I think that a storm can be weathered, doesn’t mean the storm doesn’t fucking suck.
Jeffrey Pretti was a 37 year old ICU nurse. He did not threaten federal agents, and they attacked and executed him without cause. The government is lying about the incident, and I know this because I have seen it with my own eyes.
I wish I hadn’t.
I wish there’d been nothing to see.
View Comments
The Amazon Movie ‘Playdate’ Has a Weird Fucking Ending
If I told you that a Kevin James/Alan Ritchson buddy comedy ended with our leads purposefully killing dozens of children in a fiery explosion, you’d probably look at me sideways. If I told you they were the heroes, and this was supposed to be a “cool and funny’ moment, you’d think I’ve lost my god damned mind. But the movie Playdate is real, it’s been out for two months, and you can watch the scene unfold with your own eyes if you want to.
Not sure why you’d want to, but you’re an adult. You can make your own choices.
I’m going to spoil the movie here, so if for some reason you cared about the plot of this thing, you might want to stop reading here. The basic setup of the movie is that Kevin James plays a stepdad whose socially awkward kid befriends the apparent child of Alan Ritchson’s character at the park. Ritchson invites James and his son over to their house (which they’ve recently moved into), and chaos ensues because people are coming to kill Ritchson.
CJ, the character we’ve been told is Ritchson’s son is in fact not his son, but actually a genetically modified clone of Ritchson created to be a super soldier that Ritchson freed from a lab. Occasionally fun (and occasionally dumb) comedic action scenes follow. And frankly, I found myself mildly enjoying the film. It wasn’t deep, and Ritchson is funny (and James manages to not get in his way). I wouldn’t describe it as a good movie, but I was enjoying myself.
And then the last scene happened, and I just went “What the fuck?”
You see, at one point it’s revealed that CJ isn’t the only clone. There are, in fact, a couple dozen, but Ritchson and James just weren’t aware of the rest. Apparently all the clones (including CJ) have had their empathy and emotions removed from them, but the film establishes that CJ genuinely cares for Ritchson.
And then they blow up all the other clones.
In a massive fireball as our heroes walk away.
And I’m like… did no one think about this? The only difference between CJ and the rest of the clones is the short amount of time CJ spent with Ritchson’s character. That means every single one of those kids could be easily rehabilitated just by someone giving a shit about them. But, like, why think about that when you can murder them. It’s clear that literally no one making this movie thought for more than two seconds about the scene, but what a weird message to end your action buddy comedy on. It’s just… it’s just weird.
What a weird way to end that fucking movie.
View Comments
Maybe Try Being Normal to Strangers on the Internet?
So there’s a thing that happens when you make stuff and post it to the internet — people who’ve never directly interacted with you before feel like they know you. I don’t mean like your beloved social media mutual who you’ve had online conversations with, but instead people who really have never said word one to you to begin with.
I’m far from the first person to point out the existence of this kind of parasociality, but I’ve had several weird experiences with it this month which has left me either scratching my head or oddly angry. Because I think it’s important to remember to the vast majority of people who consume the stuff I make I am stranger. Statistically, if you’re reading this, we’ve never had a conversation, and you’re only familiar with the public image I project on social media and the various works of commentary, podcasts, and fiction I produce.
And you know what? I’m glad you’re here! I have real world friends I’ve made who’s first exposure to me is something I’ve made and tossed online. Heck, technically my wife watched one of my YouTube videos long before we met. She’d totally forgotten about it by the time we were actually introduced, but it still counts! I, frankly, want you here. I’m making this stuff so someone will look at it after all.
But, like, again — I’m a stranger to most of you. And while most of you seem to keep that in mind, sometimes an occasional person will talk to me in a way that is really fuckin’ weird.
Like on TikTok a few weeks ago, someone who clearly thought they were teasing me like we were friends made an offhand joke that was, honestly, deeply offensive to me. I’m not going to repeat it, but if you follow me on TikTok, Tumblr, or Bluesky you probably saw my follow up videos about it. The person who posted the comment has apologized, but the important thing is it never clicked in their brain that we did not have the kind of relationship where they could make that kind of joke with me.
Because, again, I’m a stranger.
Now I’m going to mention that this commenter was from Minnesota. This wasn’t really important to the original story, but is for what happened next. You see, a random passerby decided that I was a horrible person for my angry response I recorded and posted on January 6th.
Because we all know what happened in Minnesota on January 7th.
This random dude, who had nothing to do with the original conversation, made a video calling me all sorts of names because I was *checks notes* “mean to someone from Minnesota.” Now, let’s be clear: Fuck ICE and Renee Good was murdered in cold blood by Jonathan Ross. I don’t want there to be any confusion. I talk to people in Minneapolis and Saint Paul pretty regularly, and I know how bad things are right now.
But first off, like, I can think that while also having a problem with something someone from Minnesota did that’s completely independent of the awfulness that’s happening right now. A thing that, again, the person who said it has since apologized for.
And secondly, linear fucking time exists as the entire interaction was done twenty-four hours before the awful, unrelated tragedy. Like I’m struggling to figure out why this lunatic was trying to connect a random person from Minnesota and I having a little bit of an issue with each other and fucking that.
But this weirdo who, to the best of my knowledge, has never interacted with me or my content before, made a whole call out video about it. Dude makes a lot of assumptions about me, and it’s insane.
Because I’m a stranger.
And he doesn’t know the first thing about me.
Look, I’m just going to be real with you. You should talk to creators on the internet like a stranger you’re standing in line behind at the supermarket. Maybe you’ve overheard them say some stuff. Maybe you’ve learned a few things about them by seeing what’s in their cart. It’s not insane to say something to them if it’s applicable to the situation you’re in, but not everything is appropriate. If it’d creep out, bother, or insult that stranger in line, it’s going to creep out, bother, or insult the creator you’re saying it to.
I hope that made at least a little bit of sense.
View Comments
I’m far from the first person to point out the existence of this kind of parasociality, but I’ve had several weird experiences with it this month which has left me either scratching my head or oddly angry. Because I think it’s important to remember to the vast majority of people who consume the stuff I make I am stranger. Statistically, if you’re reading this, we’ve never had a conversation, and you’re only familiar with the public image I project on social media and the various works of commentary, podcasts, and fiction I produce.
And you know what? I’m glad you’re here! I have real world friends I’ve made who’s first exposure to me is something I’ve made and tossed online. Heck, technically my wife watched one of my YouTube videos long before we met. She’d totally forgotten about it by the time we were actually introduced, but it still counts! I, frankly, want you here. I’m making this stuff so someone will look at it after all.
But, like, again — I’m a stranger to most of you. And while most of you seem to keep that in mind, sometimes an occasional person will talk to me in a way that is really fuckin’ weird.
Like on TikTok a few weeks ago, someone who clearly thought they were teasing me like we were friends made an offhand joke that was, honestly, deeply offensive to me. I’m not going to repeat it, but if you follow me on TikTok, Tumblr, or Bluesky you probably saw my follow up videos about it. The person who posted the comment has apologized, but the important thing is it never clicked in their brain that we did not have the kind of relationship where they could make that kind of joke with me.
Because, again, I’m a stranger.
Now I’m going to mention that this commenter was from Minnesota. This wasn’t really important to the original story, but is for what happened next. You see, a random passerby decided that I was a horrible person for my angry response I recorded and posted on January 6th.
Because we all know what happened in Minnesota on January 7th.
This random dude, who had nothing to do with the original conversation, made a video calling me all sorts of names because I was *checks notes* “mean to someone from Minnesota.” Now, let’s be clear: Fuck ICE and Renee Good was murdered in cold blood by Jonathan Ross. I don’t want there to be any confusion. I talk to people in Minneapolis and Saint Paul pretty regularly, and I know how bad things are right now.
But first off, like, I can think that while also having a problem with something someone from Minnesota did that’s completely independent of the awfulness that’s happening right now. A thing that, again, the person who said it has since apologized for.
And secondly, linear fucking time exists as the entire interaction was done twenty-four hours before the awful, unrelated tragedy. Like I’m struggling to figure out why this lunatic was trying to connect a random person from Minnesota and I having a little bit of an issue with each other and fucking that.
But this weirdo who, to the best of my knowledge, has never interacted with me or my content before, made a whole call out video about it. Dude makes a lot of assumptions about me, and it’s insane.
Because I’m a stranger.
And he doesn’t know the first thing about me.
Look, I’m just going to be real with you. You should talk to creators on the internet like a stranger you’re standing in line behind at the supermarket. Maybe you’ve overheard them say some stuff. Maybe you’ve learned a few things about them by seeing what’s in their cart. It’s not insane to say something to them if it’s applicable to the situation you’re in, but not everything is appropriate. If it’d creep out, bother, or insult that stranger in line, it’s going to creep out, bother, or insult the creator you’re saying it to.
I hope that made at least a little bit of sense.
View Comments
We Will Find a Way Forward

I’m just mostly angry and sad.
It’s not the first time something like this has happened in the last twelve months, just the first time it happened on camera from multiple angles. It’s been shoved on to every social media platform I’m on, and I’ve seen it far more than I wanted to. The adminstration has predictably toted out the a flat denial line, and the the comment sections of the internet are filled with real cultists and fake bots who will ignore the reality in front of their eyes for the narrative provided by their dear leader.
But we stand, and we fight. I don’t know what the way forward is. I know there is one though, and I’m confident we’ll find it.
I don’t really have anything else deep to say. Like I said, the words are escaping me right now. The Joe Hill quote “Don’t waste any time mourning. Organize!” comes to my mind again. I know I posted that a lot in November of 2024, but it still applies. They want us scared, they want us cowed, and they want us beaten. We won’t give them that though.
We’ll never give them that.
View Comments
A New Book Trailer for the Mia Graves Saga
It’s been a while since I put out a series-wide book trailer for my contemporary/urban fantasy series the Mia Graves Saga, so it seemed about time I do an updated one.
As you may have noticed, I say book 5, The Perfect Host, should be out later this year. I’m deep into writing it, and I am determined to have this finished, edited, and ready this year. After book five, I’m probably going to take a break from the series to write some other stuff. It’s going to mark kind of a good breaking point — a satisfying place for the series to end, but I do have ideas for more books in the series if I want to pick the ball back up again.
And anyone who knows me knows I’m not going to leave characters I like this much alone for long.
Honestly, I genuinely love writing these books. I know it took me longer than normal to get Buried Memories out the door, but overall it’s fun getting into the heads of these characters. I don’t know how many I’ll write in the end, but as long as there are more stories to tell in Parrish Mills, I’m going to keep doing them.
I just want to write some other stuff too.
View Comments
Modifying zFeeder 1.6 to Run on PHP8
So I don’t make a lot of code nerd posts on this blog, but it’s mostly because I am, frankly, not that great a programmer. I like to describe myself as “experienced enough to only break things in weird ways no one expected.” But a lot of my website is run on stupid code that’s just me mucking about until I stumble on a solution, and sometimes I’m looking for a resource online which doesn’t seem to exist.
One of the random scripts I still use is called zFeeder 1.6. It’s an RSS reader, and it’s how I include the most recent Peregrine Lake comic on the front page of TraeDorn.com/TRHOnline.com and a few other things. Now, it’s not a perfect script since it was literally abandoned by its creator like 20 years ago (and there’s an exploit in the admin page — where my solution was to just delete the admin scripts and manage the thing through direct backend file modifications). Importantly though, as written, it doesn’t run on anything more recent than PHP5. And in 2026, you shouldn’t still be running PHP5.
So I needed to fix it.
And let me be clear: I’m not writing this because I think you should use it zFeeder. It’s old as hell, and there are modern solutions to building a script that reads RSS feeds. I’m writing this because someone might already be using it, and might want to keep using it.
And fixing the script so it runs on PHP8 is so fucking easy it would be insane not to document it. There are literally only two code changes you need to make to get the script to run. Just two.
First off, open “zfeeder.php” and just delete this line:
Magic quotes hasn’t been really a needed thing since PHP4, and starting with PHP7 it’s been removed entirely — so it will literally break any script.
Next, open “includes/zfuncs.php” and find the following function:
In newer versions of PHP, ereg has been replaced with preg, and you just need to replace the function with this:
That’s it. That’s literally the whole thing. With those two modifications, zFeeder 1.6 should run fine on PHP7 and PHP8.
And also, remove your admin scripts if you haven’t already, okay?
View Comments
One of the random scripts I still use is called zFeeder 1.6. It’s an RSS reader, and it’s how I include the most recent Peregrine Lake comic on the front page of TraeDorn.com/TRHOnline.com and a few other things. Now, it’s not a perfect script since it was literally abandoned by its creator like 20 years ago (and there’s an exploit in the admin page — where my solution was to just delete the admin scripts and manage the thing through direct backend file modifications). Importantly though, as written, it doesn’t run on anything more recent than PHP5. And in 2026, you shouldn’t still be running PHP5.
So I needed to fix it.
And let me be clear: I’m not writing this because I think you should use it zFeeder. It’s old as hell, and there are modern solutions to building a script that reads RSS feeds. I’m writing this because someone might already be using it, and might want to keep using it.
And fixing the script so it runs on PHP8 is so fucking easy it would be insane not to document it. There are literally only two code changes you need to make to get the script to run. Just two.
First off, open “zfeeder.php” and just delete this line:
set_magic_quotes_runtime(0);
Magic quotes hasn’t been really a needed thing since PHP4, and starting with PHP7 it’s been removed entirely — so it will literally break any script.
Next, open “includes/zfuncs.php” and find the following function:
function url2file($url)
{
return(ereg_replace(“[^[:alnum:]]”, “_”, $url) . ‘.xml’);
}
In newer versions of PHP, ereg has been replaced with preg, and you just need to replace the function with this:
function url2file($url)
{
return(preg_replace(“/[^[:alnum:]]/”, “_”, $url) . ‘.xml’);
}
That’s it. That’s literally the whole thing. With those two modifications, zFeeder 1.6 should run fine on PHP7 and PHP8.
And also, remove your admin scripts if you haven’t already, okay?
View Comments
Reflections on the Past
As the year comes to an end yet again, I’ve ended up reflecting a lot not just on the last twelve months, but my past in general. Who I am, where I’ve been, and who I’ve brought with me.
When we were down in Milwaukee for Christmas, Crysta and I got dinner with Chris and his partner Sarah. I haven’t seen Chris in years, and it was the first time meeting someone that important in his life. It was nice — and frankly it’s been too long since we got together. Chris is arguably my oldest friend, he was the best man at my wedding, and even though it had been ages since we got together, talking to him always feels like no time has passed. We’re both awful at keeping in touch, so it’s nice to be reminded that the connection we have is still there and easily rekindled.
And we’re both going to try to be better about, like, actually talking to each other.
Coincidentally, I separately ended up in a conversation with another good friend about a person we used to both be close to the other night. I could have sworn that I wrote a blog post about this at some point, but for the life of me I can’t find it. Maybe it was on a social media platform, but it doesn’t matter really. The friend I was talking to the other day was talking about how she wanted to reconnect with this person who is now far removed from both of our lives.
She in part removed him by choice, but me not so much.
This person had been a close creative collaborator with me, and how he chose to make his exit from my life has always been something of a sore spot. My friend wanted to reconnect with him because she missed him though, but apparently he doesn’t want to talk to her.
For like the dumbest, most childish fucking reason I’ve ever heard.
So finally, after learning some more details about what happened between those two, with over fifteen years in the rear view, I’m finally at peace with what happened. Frankly I think I might significantly better off to not have had this person in my life, and maybe I should count my blessings that things ended when they did. Who knows what passive aggressive landmines I narrowly avoided.
There’s also a lesson here I think. If someone is important to you, and they reach out, you’ll answer. Distance and time don’t matter when people decide they want to reconnect, and when both people value a relationship it’s as easy as sitting down together again and sharing a meal.
We have limited time on this planet. My grandmother died earlier this year, and my cousin just a few weeks ago. There is a finite amount of moments we’ll spend with the people we care about, and we should value each one we get to share. If someone doesn’t value making a connection with you, then maybe they weren’t worthy of your time to begin with. I don’t know. It made sense to me at the time.
Oh, and you can go fuck yourself, Matt.
View Comments
Peregrine Lake is Doing Another Holiday Bonus Event!

Well, we decided to do that again this year.
For the next two weeks, Peregrine Lake will update on Tuesday and Thursday with a little story called The Interview. This time we’re seeing how Megan got hired at the diner. Like The Move this will be ephemeral — staying on the website through November 2026. This one will be destined for the second print collection eventually.
So enjoy the tale! Put up with my art! And the comic will resume as normal on January 6th.
View Comments
Our Cyberpunk Present.
Fifteen years ago today I wrote a blog post title “We’re Living in a Cyberpunk Novel,” and it was when I had the dawning realization that so much of our world felt like it was ripped straight out of a William Gibson novel. At the time I was looking at the current headlines and the state of technology, and it was really clear the way the world was going.
Well, uh, it got worse?
Like as we bring 2025 to a close, we see less corporate regulation, the attempted dismantlement of our democracy in favor of oligarchy, the weird, broken state of social networking, and the complete digital chaos of the future of the free and open web. Like elections are affected by social manipulation through digital platforms, and billionaires harvest our data through the control of online spaces. Massive amounts of money are being spent on data centers that poison the environment so you can do “research” (and sext) with a supposed “AI” that makes shit up constantly.
And we all use Amazon Prime.
It’s not great. And while when I wrote that original post fifteen years ago these observations felt novel, today they seem obvious and mundane. Like as we are fully immersed in late stage capitalism, it’s hard not to notice how bad things have gotten. And to be fair, since speculative fiction is far more often an observation of the present than a prediction of the future, it’s pretty obvious we didn’t have to go that far to get here. It doesn’t mean I have to like it.
Now obviously we need to fix the structural issues in our society and fight back against the pending environmental apocalypse, but, like, you probably already knew that if you’re reading this. The problem I’m having right now is that we’re stuck in a cyberpunk dystopia and some of y’all are still wearing khakis.
Like if I’m going to be stuck living in a pulp story, we should at least get the cool ass aesthetics to go with it. Like I know I’ve clearly embraced this world in my workspace, but we should be going for it in our homes, our fashion, just everything. Like everyone should be going full weirdo, regardless of what age you are. If we’re all carrying devices that let corporations track our location and listen in on our conversations everywhere, we should at the very least be dressing like it.
I don’t know where I’m going with this. I wanted a space opera future, not a cyberpunk one, but this is the one we’re living in.
Now where’s my god damn flying car.
Also maybe buy my new book Buried Memories, book four in the Mia Graves Saga. It’s queer urban fantasy and not cyberpunk, but you’ll probably still like it.
View Comments
Buried Memories, the Fourth Mia Graves Book, Is Out Now!

I posted the official blurb on pre-order announcement a few months ago, but the book’s premise is basically “what if you were in a small town where people kept disappearing, but you were the only one who noticed.” This time around, we’re following Sarah instead of Mia, and she is not having a good time.
It’s a fun book, trust me.
Anyways, you can pick the book up a few different ways. It’s available as an eBook via Kindle, Kobo, Nook, and DRM free in my Patreon Shop. If you want it in paperback, you can get it through Amazon, Bookshop.org, Direct Orders, or whatever bookstore you want with the ISBN 9798349560958. I’m really excited for you guys to get your hands on this one, and if you read it and like it please consider rating it and writing a review on Amazon, GoodReads, or Storygraph. It really helps me out if you do.
And, of course, if you haven’t read any of the earlier books, you can still pick them up. I have purchase links to all of them on the official Mia Graves Saga page on my site.
View Comments
Read Peregrine Lake, the Follow Up To UnCONventional - Updated Every Tuesday!






![Nerd & Tie[dot]Social Forums](https://www.nerdandtie.com/wp-content/uploads/2023/11/natsocial-nicepreview-square-300x300.png)



Advertisement