Defense mechanism

The pithy, meme-like definition of insanity is doing the same thing over and over, but expecting a different result. By that standard, I am completely, certifiably insane.

I do the same things, fall into the same patterns, again and again. My days all seem to blur into one, the only breaks in the monotony coming when disaster strikes, such as the death of my cousin in July. Everything in my life feels to me like a downward spiral, as if I’m swirling around a cosmic toilet bowl, and some part of me sees that analogy as all too accurate.

All that should be fairly obvious to anyone who has read some of my earlier posts on PPC. Nothing new, really, except that I think I’ve finally reached the point of acceptance. If the path to becoming a better man, to reaching the kind of life goals I want from myself, requires battling my own inner demons, an apathetic family, and a hostile world at every turn, then I have to stop and ask, “Is it even worth the cost?”

History lesson

World War I is now over a century in the past, but we still remember it today. Four years of bloodshed, devastation, and misery inflicted on the entirety of humanity for the trivialities of a fading noble class. Millions of lives lost, countless others left permanently damaged in body, mind, or spirit. The entire world left upside down.

Some people see their lives as metaphorical warfare, and I often wonder which wars they’re talking about. The movie kind, almost certainly, the stylized tales of individual heroism. They see themselves as protagonists, as the lone wolf fighting off waves of Nazis, Communists, Taliban, or whoever their preferred enemy might be. In their lives, the bullets fly, but they never find their mark. Wounds are patched up off-screen, and the mental trauma is swept under the rug.

Not so for me. I feel more like an infantryman of WWI: nameless, faceless, with little hope for survival. I’m stuck in a trench, never truly gaining ground except to give it right back. Monotony and drudgery are enemies as great as the ones sniping at me, and harder to defend against.

Even the best soldier gets worn down eventually. Even the strongest man cracks under the constant pressure. I was never the best, never the strongest, so I sometimes wonder how I’ve held on this long. And sometimes I wonder if I have, or if I’ve already been broken beyond repair.

I consider myself at war in more than the metaphorical sense, however. As I see it, this whole country—no, this whole world is at war. It’s mostly a cold war at this point, this battle of good versus evil, liberty versus tyranny. We see occasional flickering flames, such as the present rioting in Australia and ongoing protests in France, but most of the war is being waged in the hearts and minds of our fellow man. We’re just waiting for our Fort Sumter, our Lexington and Concord, our Pearl Harbor or Franz Ferdinand or Dien Bien Phu. The moment in which our enemy, in this case the enemy of all that is good and just in this world, finally makes that fatal mistake and turns a cold war into a shooting conflict.

Last stand

But being a soldier is hard work, remember. We in America have been in a constant state of war for twenty years running, but the last few have seen that war turned against the common people, and the past eighteen months have seen the good guys take loss after loss on the psychological battlefield.

Early research into what has, at various points in history, been called combat fatigue, shell shock, and post-traumatic stress disorder gave a good upper bound for the time a battle-ready soldier could expect to be deployed in active combat before suffering a mental breakdown. That time works out to around 280 days; curiously, about the same amount of time as a pregnancy.

We’ve been under siege for twice that, and the numbers show that we’re all starting to break at a frantic pace. Depression is skyrocketing. The same goes for anxiety. General feelings of malaise, despair, hopelessness, and similar negative emotions are so common that it’s getting almost impossible to find someone who isn’t seeing the worst in each passing day.

I have all of the above and more. I used to look at each day wondering what I could do, what I could make, and how I could make a difference. Now, though, I greet each morning with a sigh and a vain hope that it won’t get any worse. I can’t blame all of that on external factors, of course. Some of it comes from my own problems, problems that were exacerbated, not created, by current events.

Placing blame really misses the point. What’s more important is that I’m broken, I know I’m broken, and I accept that putting myself back together is beyond me. I’m a casualty of this war, make no mistake.

If I have to go down, let me go down swinging. That’s all I feel I can ask now. I doubt I’ll ever have children—another hope dashed in the past year and a half—so there aren’t a lot of reasons to keep fighting. What fight I have left, then, is in the defense of the ideals I hold most dear: liberty and justice for all, equal opportunity, the rights each of us has from birth. For the sake of those I love, I’ll fight in the name of those ideals as long as I can. Even if I can’t live in a world free from the evils of tyranny, maybe I can help make it so they can. It’s a small chance, but it’s all I’ve got, so I’ll keep on fighting for it until the bitter end.

I just can’t help but think that end is coming sooner than I ever expected.

Take it to the limit

(It should be obvious, but the title comes from one of the best Eagles songs.)

Yesterday, my partner mentioned a “disturbing” scene in a book she had read. It was indeed disturbing, from the description she gave, and it got me thinking about what I consider to be the limits of my writing. By this, I don’t mean the things I can’t write, but those I won’t write.

Every author has limits. Some see those limits as challenges, barriers. Others treat them more like a fence around the yard, defining the boundaries of personal space. I do lean more in that direction, I’ll admit. Over the past decade, my writing has visited some interesting genres, character interactions, and scene elements, but a few things just make me stop, shake myself, and ask, “Are you sure you want to write that?”

Sex is at the top of the list, as I think it is for many authors. Of course, some of us have to deal with publisher or platform requirements. (Amazon only allows certain kinds of erotica, for example, while Kobo seems to prohibit anything a church lady would find offensive.) Even without those restrictions, however, I would find myself hard-pressed—pardon the pun—to write explicit sex scenes for public consumption.

I’ve written implicit sex on many occasions, and many of my stories have more than their fair share of innuendo. Neither of those bother me. It’s only when I get into the details that I find myself wondering if I should bother. Very, very few written stories benefit from the addition of sexual content. Most of the time, it’s there for wish fulfillment or pure titillation, both of which are better served by other forms of media. The thing is, people do have sex. Therefore, my characters, being people, should do the same. But it’s also one of the most private acts humans can commit, so how much does it really belong in, say, a fantasy or sci-fi novel?

I suppose another reason I’m leery of sexual content in my stories is that so many of my characters are children and teenagers. That’s one of modern society’s biggest taboos, as we know, and most platforms take a heavy-handed approach to policing it. (Established authors can get away with a lot more. Ask George R. R. Martin or Terry Goodkind, to name two examples among many.) But such strictures also cause a chilling effect for those of us who don’t want to deal in explicit sexuality. How far am I allowed to go in exploring, say, the relationship between 13-year-old Justin and 14-year-old Derry? More importantly, what do I do if I reach the platform’s limits before my own?


In other types of media, specifically TV and movies, sex is a surefire way of getting an adult rating, but gratuitous violence and gore are very often allowed in material geared towards teens. In my opinion, that’s one of the greatest failings of Hollywood, because it gives favor to acts of destruction over those of creation.

Don’t get me wrong. Some things are inherently violent and gory. War, particularly. I’ve written numerous scenes of battle, mostly squad-level skirmishes or even duels. I’ve written about monsters and murders. Only in The Linear Cycle and the Endless Forms novels do I really delve into some of the more gruesome aspects, though. In both cases, I feel I’m justified: one is a zombie apocalypse, the other a paranormal detective series.

I don’t go out of my way to shock my readers. You won’t see Tom Clancy levels of detail about guns and the effects they have on the targets of their aggression. I’ll never write the novelization of Saw. I do have blood and guts, explosions and corpses, but I always treat these with a little bit of distance.

That’s just who I am. I don’t like death. Or war, for that matter. I’d much rather write about the aftereffects of a battle, or the tactics, or the causes that led to it, not excruciating details about how many body parts are being lost by the soldiers on the front lines.

This extends to more general sorts of violence, as well. Although some might describe me as sadistic—all authors possess some measure of sadism, to be honest—I don’t like seeing people hurt for no reason. I don’t even like seeing it happen to my characters, and they’re not real people!

The hardest scenes for me to write are those involving character injury and death. The climactic chapters of Nocturne, for instance, took a lot out of me. (One scene in particular still almost brings me to tears.) Likewise for the RPG-style battles of The Soulstone Sorcerer and even the death of a fairly minor character in Written in Black and White. I’m just a big softy, I guess.


I have a few other writing limits, too. Many of these are personal, like my aversion to profanity, which stems from a choice I made many years ago, long before I ever dreamed of becoming an author. I don’t write transgender characters, as I feel the very subject is so politicized that it would be a waste of my time. You’ll never see my name on a horror novel; I don’t like the genre, and I don’t feel I could do it justice. And I’ll likely never kill off a main character. A main character’s love interest, yes. A main character’s best friend, sure. Not the protagonists themselves, however. (I have flirted with the idea on two occasions, but it never felt right. Congratulations, Gabriel and Chei, you both survive this time.)

Pushing the boundaries is part of our growth as authors and people. It’s natural and healthy to want to try new things we didn’t think were possible. But the comfort zone is real. Once we’re past it, once we truly feel uncomfortable because of what we’re writing, it’s time to step back and think it over. Do we really need to put that in? Does it serve a purpose? Does it add to the story? Or are we just doing it because of, well, peer pressure?

Because that’s what it is, when you think about it. The uncomfortable excursions beyond our limits usually come about from an attempt at…showing off, to put it bluntly. Sex sells. Violence isn’t exactly sitting on the shelves, either. All those little things we think a “real” story needs—because the pros have them—aren’t always necessary. Sometimes it’s better to do more with less. Sometimes taking a step back from the action can work better than getting down and dirty.

It’s all about what you want, what suits you and your story, and that’s something you have to find for yourself. Explore, because there’s no other way to find your boundaries. And if you want to go beyond them, but you don’t think you can bring yourself to do it, look for encouragement. Find a private audience, someone who is willing to help you experiment and grow. Often, what we think is near actually lies farther away than we imagined. Your boundaries might not be as close as you believe.

No more heroes

(Not a song this time, but a game. A game I’ve never played, in fact.)

The world is a very dark place now. I don’t even mean that from the context of my severe depression. No, anyone can see that humanity as a whole is being forced into a period of fear, repression, and regression. A new Dark Age. Like the old one, this one has a religion at the helm, a cabal of priest-like figures issuing dogma and demanding that we bend our lives, our minds, and our wills to it.

This time, however, that religion isn’t Christianity, but something far worse: Scientism. The perversion of science in the past decade has, as we all know, reached its peak. The falsified data regarding the coronavirus that was released from the Wuhan lab led to the global spread of authoritarianism under the guise of a so-called pandemic that we now know is less deadly than the flu we deal with every year. The same forces are using the same sort of faulty data to push a “cure” that is quite literally deadlier than the disease. Those facts are indisputable by anyone who has taken a critical look at them.

But that’s only the tip of the iceberg, the apex of Scientism’s anti-science crusade. While they make a mockery of biology by discarding decades of groundbreaking discoveries, other fields are finding the same fate. Climatology is one of the biggest strongholds of the cult, as findings are routinely discarded or modified to fit the doctrine of global warming. Statistics has suffered, too, with techniques and equations being derided for no other reason than because they were used to illustrate the blatant fraud in the 2020 election. Genetics is in the process of being replaced by gender theory. Math is called racist because its results are objective facts.

This infiltration extends to the soft sciences, too, though it is harder to show what came from Scientism versus what was already present. Psychology isn’t much more than arguing about various shades of “dysphoria” now, but is that a passing fad or a sea change? The push for historical diversity even where there was none can be seen as wokeness or the usual tearing down of work done by the generation before.

Thanks to a complicit media, every part of our lives is currently under the sway of Scientism. In my view, this is exactly like the control of the Church during the Dark Ages, but with one glaring exception. At least Rome provided some benefits to devout Christians. The modern dogma offers only suffering, never redemption.

Heroes arise

It’s a trope older than movies, older even than books. When the darkness is at its fullest, that’s when the stars come out. That’s when the heroes show their faces. At that moment when all seems lost—modern screenwriters literally call it the “All Is Lost” moment—the good guys reveal themselves, or simply reveal their true power.

Since that trope, like so much else in the shared culture that is the West, has been co-opted by the same media whose purpose is to beat us down, the real heroes aren’t often seen. Indeed, we’re supposed to think they don’t exist, and instead give our praise to mediocre athletes, mediocre musicians ,and the occasional random drug addict turned counterfeiter. We aren’t even allowed to look to heroes of old, because all of them have been demonized, excommunicated by the cult of Scientism for the sin of living under a different moral code.

The media’s idea of heroes is like it’s idea of everything else: bland, uninspiring, and designed to appeal to no one while pretending to appeal to everyone. And that almost has to be deliberate. If we have no one to look up to except flawed characters who never truly prevail against the evils in their world, would we not begin to think that such evil in our world is inevitable?

Worse yet, the few actual heroes still around are vilified for taking a stand, because that stand is against the reigning cult. People like Mike Lindell and Jovan Pulitzer, Glenn Greenwald and Alex Berenson, Kyle Rittenhouse and Ashli Babbitt. Groups such as America’s Frontline Doctors. These are the closest thing we have to heroes, because they stand against tyranny. They stand for freedom and the future of humanity. They are willing to put their careers, their reputations, and their lives on the line for what they believe.

Not everyone can afford to take that kind of stand. We’ve become too integrated, too reliant on the very system we need to bring down. But tyrants always fall in the end, and the tide is slowly turning against those of the present day.

Protests in Denmark have succeeded in reversing the draconian restrictions of that country. Those in France are less effective, but attrition is starting to have an effect. The truckers’ strike in Australia, getting precisely zero mainstream media coverage here in the US, has enormous popular support.

Those are big news. They involve the fate of entire countries, entire cultures. One might think that, of the nearly eight billion people in the world, how can one man or woman do anything? But this neglects the local impact, which is no less important. Petty tyrants in your city, county, and state can also be defeated through the same means. Look at how many vaccine mandates had to be dropped at the last minute, as hospitals couldn’t deal with an immediate 20-30% reduction in staff. (I don’t see how, as they’re all pretty much empty, but there you go.) School boards everywhere are backing down as angry parents challenge mandatory mask-wearing for children who were never in any danger to begin with.

It’s a long struggle, but then the fight for freedom is eternal, and it must be waged anew by each generation. In the end, we as a nation and a species will emerge victorious. To do that, however, we need heroes. We need everyday heroes. The father taking his child to school without a mask. The woman willing to be fired rather than injected. The doctor who writes prescriptions for ivermectin and hydroxychloroquine…and the pharmacist who fills them. The researcher risking his career to point out that temperatures were higher in the 1930s. The geneticist who states that X and Y chromosomes do, in fact, exist. The historian who dares to tell the truth about America: that we are a nation found upon the ideals of liberty and justice for all.

And the time may soon come when we are called to defend those ideals in a more physical, more lethal manner. In that case, we’ll need the other kind of heroes, the same kind that our children are being taught to hate today: Washington, Patton, Lee, and all the great leaders from the bloodier times of our past.

When a true believer in his cause assassinated a prominent leader who had forcibly taken his people’s property, denied them the basic rights of law, and waged a brutal war solely because those people wanted to be left alone, he uttered three simple words: Sic semper tyrannis.

Thus always to tyrants.

Summer Reading List 2021: Third and final

We come to the end of another summer, and with it another Summer Reading List challenge. With all the seriousness on here and in the world at large, I thought I’d lighten things up a bit to close out this year’s series. Well, I didn’t really plan that, but it turned out that way, and that’s sort of the same thing, right?

Fantasy (fiction)

Title: The Hobbit
Author: J. R. R. Tolkien
Genre: High fantasy
Year: 1937

I’m a serious Tolkien geek. I have been for 20 years. I’ve read Lord of the Rings at least a dozen times. I’ve read The Silmarillion, Unfinished Tales, and most of the History of Middle-Earth series. Tolkien was one of the inspirations when I first started writing my own novels, and he’s the reason why my Otherworld saga focuses so much on the language of the natives. (Technically, making my own languages came before reading Tolkien, but let’s not quibble. Becoming an author was definitely after.)

Strangely enough, though, I’d never read The Hobbit, the story that started it all. Years ago, I found it too childish to bother with; I’d rather read “adult” fantasy, not some children’s bedtime story turned into a novel. But time and the wisdom of age, along with the nuisances of the world around me, have left me somewhat disillusioned.

So much modern fantasy exists solely to satisfy the author’s wishes or push a political agenda, and that’s just boring. I gave up on Anthony Ryan’s The Waking Fire, which felt too much like a rant against capitalism. I never even started Brian Staveley’s The Emperor’s Blades, because I don’t think I can stand another assassin story. And Martin, of course, will gain enough weight to finish collapsing into a black hole before he ever writes another book, but I still wouldn’t bother reading The Winds of Winter if it ever did happen to exist.

I never thought I’d say this: fantasy has become boring.

So why not go back to the roots of fantasy? The Hobbit certainly isn’t a match for today’s epics, but then it was never intended to be. It’s a fairy tale. It’s a modern myth. It never tries to be anything more, apart from a few vague hints that the world of Middle-earth is larger than the confines of this little story and the perspective of its little protagonist. That’s very refreshing, in my opinion.

The writing is very…haphazard. Certainly, it’s not as polished as LOTR. You can attribute that to the intended audience or to it being Tolkien’s first foray into fiction intended for other people to read. Whatever the reasoning, it’s jarring. So is the narration, because The Hobbit, unlike modern fantasy, is indeed told by a narrator. He often speaks, sometimes offering foreshadowing, sometimes warning the reader away from digressions, occasionally making a little joke that readers not from prewar Britain just won’t get. (LOTR had those, too. Nobody alive today would understand the in-joke of Sam Gamgee hooking up with a woman whose last name was Cotton.)

Despite being written by the true master—indeed, the inventor—of worldbuilding, The Hobbit does seem to fall short in that department. Again, that’s because it wasn’t intended to be an introduction to Middle-earth. Myths, by their very nature, assume that you already know the context. Thus, you don’t get the backstory of the Necromancer, the king of Mirkwood, or Bard of Lake-town. Indeed, you don’t even get the names of the first two in that list! (You do in LOTR, of course.)

So we’re dealing with a book that’s light on characterization, light on worldbuilding, and heavy on songs. Does that make it bad? No. Does that make it bad fantasy? By modern standards, perhaps, but tastes change. Maybe today’s emphasis on epics will eventually end, the pendulum swinging back towards shorter fiction or serials. Something like Amazon’s Vella, for example, might do the trick. It’d certainly be better than their attempt at a Middle-earth TV series.

Speaking of which, I can’t end this post without mentioning the movies. I’ve only seen most of them; I still haven’t watched the first half of An Unexpected Journey. What I’ve seen is troubling, to say the least. There seems to be more content that was added by Peter Jackson than what was originally written by Tolkien. Granted, a lot of that is for monetary reasons, and I understand that. Hollywood is a corrupt empire. Still, this book in no way has 9 hours of film in it. It barely has enough for a single movie. And that, I think, is one of its charms.

A little cleaning

For the first time in a long time, I’ve done some redecorating around PPC. You probably won’t notice many of the changes, but they’re there. Trust me.

First off, I now have an HTTPS version of the site. The “experts” say that every site on the web absolutely, positively must have an SSL certificate. I firmly disagree. I’d say that about 80% of sites have no use for it whatsoever. Yes, the increased security is a great thing. Encryption, especially encryption that is free from government and corporate backdoors, is a good thing. That said, the majority of sites out there neither have nor collect sensitive information, so…what’s the point? If you’re not logging in, if there isn’t even a form anywhere on the page, then why bother with the network and CPU overhead of HTTPS? It serves no purpose.

But Brave gets mad if you don’t have it, and the last good version of Waterfox is increasingly marginalized by larger sites. For those two reasons, I’ve had to do it. Yay for the future. Ugh.

And while we’re on the subject of dystopian futures (I promise this isn’t another rant against vaccine mandates), I’ve updated the version of WordPress that runs PPC. Okay, let me rephrase that. I updated PPC to use a better version of WordPress. It’s called ClassicPress, and it’s what WordPress should be.

See, I’ve used WP since this site’s inception in 2015, and I used it on the old potterpcs.net site starting all the way back in 2005. It’s not a bad platform, really. Problem is, the team behind it has completely given in to feature creep, as is so often the case in development.

The rot started a few years ago. When WordPress version 5.0 came out, it had a brand new editor: Gutenberg. This editor was to replace the “classic” one, a simple WYSIWYG or “rich” text box with a few formatting controls. Gutenberg is based around the concept of “blocks” as the basic page editing element, not something sane like, I don’t know, text.

Gutenberg was a buggy mess forced upon us, breaking not only workflows but any add-on designed to improve editing (like WP-Markdown, which I’m using here), and we users were told to suck it up and get used to it, because this is how things are going to be from now on. Oh, there’s a “Classic Editor” plugin, but it will be intentionally broken at the start of next year to prevent people from going back to the sensible method of editing text by editing text.

That annoyed me to no end, because it’s a theme I’ve seen repeated throughout the development world. Breaking things for no good reason and forcing your users to accept the brokenness as “the new way” is a time-honored tradition at this point. Look at Windows 10, Firefox 4, Firefox 24, Firefox 57, Firefox (Mobile) 71, Gnome 3, KDE 4, the entire concept of systemd…

I could go on, but I think you get the picture. Some people (and it’s usually designers, not the devs themselves) just can’t get it in their heads that we don’t like change for the sake of change. When something works, leave it alone. WordPress, like so many others, couldn’t do that. Never mind that they have a perfectly functioning editor, because all those “UX” people need something to do. So out came Gutenberg, in all its flawed glory.

I did my best to ignore it for 3 years. My hosting provider, Dreamhost, temporarily broke PPC in 2019, changing my “don’t touch this” setting to “automatically upgrade” without my approval. I had to contact support to rollback. Since then, I’ve stayed on version 4.9, the last without Gutenberg, and wondered what I’d do.

I’m also using WordPress for work, as the basis for a multi-tenant network. That project, since it’s for-profit, actually does need the latest and greatest. As it’s intended to be administered by people who don’t have my technical knowledge, it also has to be as idiot-proof as I can make it. Thus, I needed to find a way to allow only the most essential parts of Gutenberg, while also coding themes and plugins to take it into account.

While doing that earlier today, I found a reference to ClassicPress. Since I can’t do much work at the moment (long story), I read up on it and found that it is exactly what I’ve been looking for. Dreamhost might not offer it as a fancy prepackaged install, but who cares? This is WordPress as it used to be: a blog where you can get content onto the web as quickly as possible. No tracking down plugins to cut the bloat or digging through endless lists of blocks just to edit. Best of all, no breaking what’s already there.

Whether you can see it or not, then, PPC is no longer out of date. It’s running on the latest and greatest once again. That’s the beauty of open source software. If you screw it up badly enough, someone will care enough to fix your mistakes.

I alone

(Title is, of course, from the song by Live. I’m a 90s child.)

“You’re not alone,” people always say. In your darkest, weakest moments, they’ll offer those three words as some sort of panacea. It’s intended to be a sympathetic gesture, an acknowledgment of your suffering. It’s meant as a comforting truth.

In reality, it’s nothing but another lie.

We, as humans, are alone in many ways. You’re born alone (unless you’re a Siamese twin) and you die alone (unless you’re a member of a cult or something). Whatever awaits us in the hereafter, if you believe in that sort of thing, we must face by ourselves. And the far more pressing concerns and pressures residing within our minds are likewise something no one else can help with.

That’s a simple fact. Nobody knows exactly what I’m thinking, as my words will always convey only a subset of what’s truly going on inside my head. Another person, looking at me from the outside, can’t comprehend that mass of thoughts, emotions, feelings, and concerns. And I can do nothing about that. To quote one of my favorite songs, “Stop saying, ‘I know how you feel.’ How can anyone know how another feels?”

We carry on with the illusion, though, because we’re human. We have a natural need to empathize. In that, emotions are contagious. Whether or not we intend them to spread, they will. The people who don’t feel along with us are rightly seen as abnormal: we call them psychopaths.

But that doesn’t mean those who feel these emotions along with us are facing the same causes we are. Not at all. They only get the effects, and those effects are very often prone to misinterpretation. Is he happy because he got a promotion? Because his wife’s pregnant? Or just because he watched a funny video? We can’t really say for sure. All we, as outsiders not privy to the internal monologue, can say is that he’s happy, but that’s enough for most people to feel their own burst of happiness. The same goes for any other emotion, sadness or anger or whatever you choose.

That’s why “you’re not alone” rings so hollow in my mind. My partner has said it on numerous occasions. So has my boss. In both cases, while I’d like to accept their words at face value, it just isn’t possible. I know that I have to face some things alone. I have to fight some battles alone.

For me, most of those battles are against my inner demons, that multitude I’ve discussed at length here. No one but me can see them, let alone fight them. As I know I’m not strong enough to do that in my current state, it leaves me in a conundrum.

There are battles we can fight together. The fight for freedom, for instance. But those battles are against external foes, people or groups or ideas we can point to as enemies. We can have a war against mandatory vaccinations, or against communism, or against progressives. Those are battles we can (and must) fight en masse.

The war inside my head, however, must be fought by an army of one. I can get advice and aid from others, but they can’t stand in my place. I alone must face my demons, whatever my friends and loved ones might say.

The SPA vacation

I am a “full-stack” developer, which means a lot of things. Specifically for the purposes of this post, if means that I work with every part of a web application, and those are traditionally divided into three layers. First is the front-end or client-side layer: that’s what you see when you visit the site in your browser. That client connects to the back-end or server-side layer to get and store its data and generally accomplish things. Underneath all that, the database keeps track of everything; it tends to be a special snowflake, so we’ll ignore it for the moment.

Client code, as it must run in a browser, uses a mix of three different languages: HTML for markup, CSS for styling, and Javascript for interactivity and communication. That’s already a lot to know, which is why full-stack developers must be more generalist than specialist. (And, incidentally, why I enjoy the field more than a specialized role.) But then you add in the server, which typically uses a fourth language. That can be PHP, as in my current job, or the Python I like to use for my hobby projects, or Ruby, Java, C#, Elixir, or just about anything. Really, it’s hard to find a language that doesn’t have the capability to be used for the serve side.

That includes Javascript, and the past decade has given us the rise of Node, along with a number of web frameworks based on it, such as Express and Nest. The draw for these is simple: if you use the same programming language on the front and back ends, that’s one less thing you need to learn.

JSON the killer

Node is a great thing. I use it on a daily basis, even if I’m not serving web pages with it. But this encroachment of Javascript into the server realm also brought about the rise of the Single Page Application, or SPA. Instead of the traditional web model of the server sending pages and the client (i.e., browser) rendering them, the SPA takes a different approach. Why not let the client do all the work of creating HTML elements?

It’s simple and even ingenious. The server just offers an API, so theoretically anybody could use it, and the client fetches data from that API, creating HTML on the fly based on a response in the form of JSON. (You could also use XML like in the old days, but…no. Let’s not go there.) Perfect separation of concerns, because why should the server care how the data is presented?

And we got some really great tools out of that, along with a whole new way of looking at the web as an application platform. Angular was the first to hit it big, while React and Vue are the top two now. All these share a focus on “reactive” programming, a style of event-driven programming where data changes automatically when its dependencies do. Very simple, fairly elegant, and…

Build me up, buttercup

…And a total mess to build. Angular, React, and Vue all share that problem, and it’s not getting any better. Building a web application using any of these frameworks is black magic, pure and simple. I’ve been doing this for 4 years now, and I still don’t think I’ve even scratched the surface of Webpack configuration. Seriously, I just use Laravel Mix, or copy a Webpack config file from somewhere else, because I’ve got better things to do with my time. Like, you know, writing the code!

The fault lies in the sheer complexity involved, and the fact that modules (one of the most integral parts of any programming environment since around the 1970s) were, in Javascript’s case, kind of bolted on. So we have to assume someone out there is using an old browser that doesn’t support them, or that we’re in an environment where we can’t load them, which means smashing everything into a single file. Oh, and we want to make that file as small as possible, because bandwidth is still an issue. Add in a minification step, then. Want to use that fancy new API Chrome just added? Well, here’s a polyfill for everything else on the market.

There’s a reason why node_modules is a meme. There’s no valid reason why it should be five hundred megabytes for a “starter” React app. Modularization and the borderline insane dependency lists of a web framework have turned the web dev environment into a mess. Not only that, but it’s nearly impossible to get an app built without running multiple processes simultaneously: Webpack, dev server, maybe a CSS postprocessor, and who knows what else. I understand that you do need a lot of tools to cover various use cases, but can’t we think about optimizing the developer’s experience a little, too?

Zero is better than nothing

When I wrote my first web page in 1996, it was easy. You didn’t need any specialized software, just a text editor, a browser, and maybe an FTP client. Sure, the internet has moved on since then, and pages are a lot more complex. They can do so much more that sites I use every day in 2021 would have been unfathomable to anyone 25 years ago, let alone a nerdy 13-year-old.

But does that increased complexity require a proportional increase in development complexity, or can we get back to making quality pages without all the cruft? In other words, can we make modern web applications without a client-side build process?

Until a few days ago, I didn’t think so. Because that was the received wisdom: modern apps are SPAs, and SPAs need a client framework. And that client framework just has to have a build step. Even Preact, the stripped-down cousin to React that boasts of being easy to install, requires a build step for its templates. Tailwind CSS needs one to cut its 1.7 MB of styling into something both manageable and incredibly sleek.

But…what if we didn’t use frameworks? What if we didn’t use JSON? What if the server sent back HTML instead? That’s exactly what I’m doing in the app I’ve been writing at my day job (as an aside, it still feels weird to write that), so what makes the SPA approach superior?

I’m not the only one thinking that. There’s a small but growing minority of web devs pushing for HTML over the wire, which is precisely what it sounds like. There are libraries that take advantage of this, using the abilities of modern Javascript and the browser platform to patch HTML on the fly.

You’re going to have to do the request/response roundtrip anyway, so cutting out the “turn JSON into HTML” step at the end will only save client time. Since that client might be a cheap Chinese Android phone, you want to save its processing power for more important things like actually being usable. AJAX and the DOM let us do some invasive surgery on a page without requiring a full refresh, but still providing for usable URL history. (In other words, we can make the Back button usable, too!) And it’s that much less Javascript for us to write, because we’re not worrying about computed properties or event handlers.

HTML over the wire takes us back to the simpler times of yore, while letting us use the tools we’ve invented in the meantime. From my perspective, that’s great, especially because it means that, in a lot of cases, you can get by with a front-end build process that looks like this:

  1. Add a script tag to your “base” HTML.
  2. That’s it. You’re done!

About as easy as it gets. So that’s why my redesign of Clave is going to use htmx and Alpine instead of a complicated SPA based on Vue. I’ll still have Tailwind for styling, so I don’t get away completely build-less, but you could swap in Bootstrap or Bulma or something and eliminate even that step.

The web is the center of many lives in this fallen time. We should be doing everything in our power to make it easier to contribute, and I think HTML over the wire is one way to do that on the development side. By making it easier to create complex applications, we’ll see more of them.

Most people would go to a spa for a vacation. I’m taking a vacation from the SPA, because the simpler life is so much better.

Forward and to the side

A little over four months ago, I started a new job. My first, in fact, where I wasn’t employed by myself or a family member, where I was a member of a team, not just a lone programmer writing code, running tech support, designing web pages, and handling the books in the meantime. It was a big jump, and I still find myself off balance some days. I wonder when I’m going to be exposed for the impostor I surely must be. I fret about letting everyone down.

Well, those fears are about to get worse.

From the beginning, my boss said I would be “transitioning” to full-time after 90 days. This would be a kind of grace period for me, a chance to show what I was capable of, while minimizing risk for the company. Understandable, from a business perspective, and I was honestly just happy to be hired in the first place, so I wasn’t going to complain.

Now, the grace period is over. The transition is done. Next week will be like starting over, in one sense. In another, it’s like jumping off a cliff, because I’m not going to be the full-stack developer I expected.

I’m going to be the CTO.

When he said that in the call where we discussed it, I think my heart stopped for a second. Sure, as he was quick to point out, a company that’s effectively a startup in size and revenue doesn’t have a lot of “prestige” in its titles. I’m not a C-level executive at Amazon or Microsoft or some other Big Tech corporation. I’ll effectively be running the tech department of a B2B company that…doesn’t really have much but the tech they (we) use and the sales it allows.

But that is a huge shift. It’s a major jump in responsibility. It turns me into not just a developer, but a manager. I had my first strategy meeting today—just an hour-long talk with the CEO-who-hates-that-title about next steps, but still. This is like nothing I’ve ever done. Or even imagined doing, except in my wildest dreams.

For so long, I’ve written about my depression and anxiety, and I lamented the fact that there just doesn’t seem to be anywhere I belong. I felt powerless, silenced by a world that didn’t want to listen to what I had to say. Now, someone does want to hear that. Someone does value my opinion and my perspective. And it’s overwhelming.

I know I’m not executive material. I don’t have an MBA. I never took any classes in business management. I barely understand half the industry-specific terms my boss throws around.

On the other hand, I do know programming. Almost 30 years ago, I wrote my first lines of code. Three decades spent trying to get somebody to see what I had created, to understand why I feel such joy in doing this job well. Now, I’m being thrust into a position where, paradoxically, I may be doing less actual coding.

I should hate that. Management is a running joke in the development community, much like how military non-coms look down on their commanding officers, and the reasons are the same: moving up the chain of command means getting farther away from the action. Oddly, however, I’m okay with it. Oh, I’m well aware that I’m in over my head, but…I am not alone in that. If anything, the only thing I fear now is letting down the team. I don’t want to be the one everything falls on. I don’t want to be the single point of failure. But then I’m grateful that I’m trusted enough to be given that responsibility, and there’s really only one thing I can say.

It’s about time.

Summer Reading List 2021: The second

Here we go again. I finished this one a couple of weeks ago, and it is by far the oldest and weirdest book I’ve ever read outside a classroom. I thought I was crazy when I tried The New Atlantis a few years back, but this one takes the cake. It did have a purpose, however.

Philosophy (non-fiction)

Title: Meditations Author: Marcus Aurelius (tr. Gregory Hays) Genre: Philosophy/Self-Help Year: c. 179 AD (translated edition 2003)

That year is not a typo. I actually read a book that’s over 1800 years old. As I don’t know Greek (I have only a rudimentary understanding of Latin; Greek would be my next target), I’m reading Meditations in the translation by Gregory Hays, which is a little unconventional compared to its predecessors. But it’s one of the newest and most accessible, so I gave it a shot.

Okay, so that explains the book itself, but not why I chose it. I’ve been interested in Stoicism for a couple of years, as I recall reading sometime in 2018 that some had found comfort in it, using the philosophy to alleviate their depression. Well, that didn’t work for me then, and reading what’s effectively one testament of the Stoic Bible didn’t help matters. I do think Stoicism has some merit, and there are a lot of good ideas in there, but…it’s not for me. It’s too fatalistic, in my opinion.

Considering I’m reading the words of a Roman emperor, you’d think I would have more good things to say. I really don’t, though. Marcus Aurelius wasn’t intending these words to be read, and that shows. Meditations consists of 12 books full of what look like “note to self” reminders. There’s little organization, a lot of repetition, and far too much emphasis on death. (This is a guy who assumes he’s about to die, after all.) Throughout the work, we see the same theme arising time and time again: do not fear death, because it is merely the end of your allotted time.

That fits with the Stoic tradition. Death, to them, is the end of life in the physical sense only. Which is essentially one of the defining statements of a religion, come to think of it. But theirs is a simple and almost banal religion, a worship of fate and rationality above all. I’m on board with the rational part, sure. Fate? Not for me. The way I see it, if everything in our lives was already determined, there would be no reason to live.

There was a reason to read this book, however. It does have a few gems buried in the dirt of the grave. I guess you could say Meditations is the oldest example of the self-help book, the kind that’s mostly full of author narrative and pithy maxims, but with the occasional nugget of true wisdom. And reading it makes you take a closer look at yourself.

In my case, I found something I didn’t like to see, and now I’m working on removing it.

Summer Reading List 2021: First one

Despite the two-week delay, I have been reading. Despite the new job, I have been reading. Despite the rocky road that is my relationship, I have been reading. So here we go.

Science (non-fiction)

Title: Caveman Chemistry
Author: Kevin M. Dunn
Genre: Popular science
Year: 2008

What originally gave me the seed of the idea that would become “After the After” was a book I read a few years ago: The Knowledge, by Lewis Dartnell. In fact, that book was also a huge influence on the reboot of Otherworld I did in 2015, and it’s the only work I’ve called out by name in the 30+ stories of that series. But The Knowledge was itself inspired. It has a very extensive bibliography, and one of the hardest entries to track down was this one, Caveman Chemistry.

I’m glad I finally did, because this book was worth every minute. Divided into 28 chapters, each focusing (more or less) on a single invention, Caveman Chemistry takes the reader through the entire history and prehistory of chemistry. Experiments throughout the book encourage you to get your hands dirty—I didn’t, but that’s a temporary state of affairs. Charcoal, soap, dyes, homebrewing…Dunn has done the world a great service just by compiling this text.

That’s not to say there aren’t problems. One, the writing style makes one think of mad scientists from ages past, and I have to wonder if the author had huffed a few too many fumes before he sat down at the computer. The text itself is loaded with quotations, including some from quack sources such as the Hermetic alchemy treatises. Introductions in each chapter are done by “figments” supposedly representing the four elements (or masters thereof), but more likely belonging to the individual voices in the head of a schizophrenic.

Two, though Dunn doesn’t shy away from giving the formulas and preparation methods for some very dangerous chemicals, he wimps out when the time comes to talk about gunpowder, cowardly disguising the proper ratios. (For reference, the simplest to remember is a 6:1:1 mix of saltpeter, charcoal, and sulfur, respectively.) Making a batch of ethanol potentially tainted by poisonous methanol? Fine. Supporting the 2nd Amendment? Apparently that’s a no-go. Add in the constant remarks about “sexism” in older chemistry texts and stuffing women into what has historically been a masculine pursuit, and it’s clear where the author falls on the political spectrum.

Fortunately, that doesn’t detract from what is otherwise a very useful, very enlightening, and very fun book. Caveman Chemistry is not only worth a read, it’s worth trying for yourself. Even if you aren’t planning on creating a post-apocalyptic DIY video series.

css.php