Books. Music. Programming. Publishing. History. Purchase. Interviews.

Leif M. Wright is author of true crime thriller
Deadly Vows, murder mystery novel
Minister of Justice and the upcoming novel
Robby the R-Word.

OK. I will start updating regularly again very soon. Meanwhile, I've made several breakthroughs on the IneffablePress CMS. For regular people, the appeal will be they can upload a single file to their server and the program will just work without them having to know anything about making web pages. For nerds, the appeal will be the completely wide-open abilities of the program to work with ANY kind of content, with the admin simply having to create new schemas to deal with that content.

Holy crap

You may or may not know (or care) that I'm on a low-carb diet. In a nutshell, I try to keep my daily net carbohydrate intake to less than 70 grams of carbs, which sounds draconian, but actually isn't that difficult.

For instance, I eat a single piece of toast for breakfast (slathered with butter, the real stuff, not that margarine crap). (17 grams of carbohydrates, 2 grams of fiber) Total net carbs: 15 grams.

If you're on a low-carb diet, high fat content like that in real butter actually helps you stick to it and avoid the real culprit in gaining fat and being diabetic: sugar and carbs.

For lunch, I go to Subway usually and order a multigrain six-inch flat bread Italian BMT sandwich with lettuce, onion, pickles, cheddar cheese and mayonnaise. Yes, you read that right. Mayo, which has zero carbs. (37 grams of carbohydrates, 6 grams of fiber) Total net carbs: 31 grams.

So far, I'm at 46 net grams of carbs for the day after lunch. Generally, I'll have a snack between lunch and supper, either a handful of almonds (6.1 grams of carbohydrates, 3.5 grams of fiber) Total net carbs: 2.6 grams, or a piece of cheese (zero carbs). Now up to 49.5 grams for the day, assuming I opted for the almonds.

Supper is where the real miracle comes in. See, I used to have a nice dinner of Seitan (4 grams of carbs) and mixed vegetables, and I still love that combination, but Seitan is becoming rare around here. So I thought I'd go looking on the Internet for alternatives. And viola did I ever find one:

What you see above is a true breakthrough. It's called a SmartBun, and it's made by a company called Miracle Noodle. The appeal of the smart bun is simple: with 16 grams of carbohydrates and 12 grams of fiber, it has a net carb total of FOUR grams of carbs. FOUR. Compare that to 40 for the average hamburger bun. I'll do the math for you: Ten times less carbs. That's the first small miracle. It's an essentially carb-free BUN. But the bigger miracle is that the buns are DELICIOUS. I served one to my wife's cousin when I grilled out last week, and he said he could not tell the difference between that and a regular bun, so I know when I say I can't tell, I'm not alone.

So let's say I fry up a hamburger with American cheese, onions, mayo, mustard, lettuce, tomatoes, whatever. Total net carbs: 4 grams. That brings me to 53 grams of carbohydrates for the day. Eighteen less than my goal of 70. That's just barely more carbs than in ONE 12-ounce can of Coca-Cola. For an entire day of eating.

So I know that seems like a lot of math, but it's really very simple: Look at the nutrition label of the food you're wanting to eat. If it has only slightly less fiber than carbs, you're generally going to be OK, because fiber helps keep carbs from becoming sugar in the blood (that's a gross simplification, but it works to help keep you from having to do too much math).

MiracleNoodle didn't pay me for this post, but someone should send it to them and tell them to send me free stuff, because I hate paying for things and I really do love their products.

So I haven't talked to my ex-wife in probably two or three years.

This morning, my phone rang with a 405 area code (my ex lives in Oklahoma City, where she is some kind of muckety muck in the governor's office).

"Do you have a King James Bible handy?"

The answer is no. I do not. We just moved. I have numerous King James Bibles, including the original 1611 version, where every word ends in E, but they're all in boxes. But I do have access to this thingy called the Internet.

So I said yes.

"Do you remember the verse where Jesus said no one puts new wine into old wineskins?"

Yeah, I remember. It's an allegory about how someone who has given up their old beliefs can't be expected to adhere to old customs, since their new beliefs will blow up the old customs and make everything a big fucking mess.

Oh, bad language alert.

"Can you go to that verse and tell me what it says?" She referenced Matthew 9:17. So I looked it up. Instead of "wine skins," it said "bottles." Immediately, I remembered the first time I read the King James Bible, in 1992, in an apartment in Muskogee, Oklahoma, where I underlined anything that struck me as interesting or caused a question. I remember thinking at the time, "did they use bottles in the first century?" Turns out, no, they didn't use glass bottles as we know them now, but they used singularly purposed skins that the King James translators called bottles, because that was the only reference they thought their audience would understand.

So my ex says, and I'm not making this up, "Do you remember 'bottles' being in there? I've always known it to say 'wineskins,' but when I look it up, it says 'bottles.' There is a whole thing where people are saying someone is changing the King James Bible spiritually to have different words in it."

Now, I have to stress here, I'm not making this up. At all. My ex-wife was always prone to conspiracy theories, but this kind of takes the cake. What she is saying is encapsulated in the Mandela Effect theory, which postulates that someone is using some sort of advanced technology to change historical facts, even changing the texts of well-established books, to fit their agenda.

Again. Not. Making. This. Up.

So she continued.

"Do you remember where it says the Lion and the Lamb will lay down together?" No. I don't. But I know many people have preached that, so I play along. She tells me the verses to look up, which both say the wolf and the lamb will lay down together. "How did that change from what everyone knows it says?"

At this point, I'm totally thinking maybe she's gone off the rails, which could be a chemical imbalance, maybe schizophrenia, not sure. But I play along. I say something to the effect of "I have always remembered that verse being misinterpreted, but what gives you the idea that someone is mystically changing every single copy of the bible in the world?"

"It's just a theory," she said. "But it's kind of freaking me out."

Later, after she apparently went to Sunday School, and I'm kind of wanting to know what kind of church she's going to, but I never asked, she texts me: "Did you know the word 'Matrix' is in the Bible?"

Well, I don't remember that, but I'll play along, so I replied, "Does it have the word Neo nearby?"

She replies "Exodus 13:12".

And then I remember. Yes, when I read the Bible the first time, I thought, "Matrix is a quaint way of referring to the vagina." Because that verse refers to "everyone who splits the matrix," referring to everyone who has come through a vagina to end up in this world. (By the way, 'quaint' is also a quaint word for vagina. The More You Know.)

So I looked all this up. It's called "confabulation," and it means a lot of people who have a different memory than facts will support. But it gave me a great idea for a sequel for my book, "Minister of Justice."

What if I have Steve (the main character in Minister) forced to track down just this sort of thing, with the title "Infidels' Bible: Minister of Justice Book Two."

So I'm totally going to write that. DO NOT steal my idea!

In the scheme of things, what one person does ends up mattering very little.

With that optimistic note, I have to say, I'm making very good progress on the IneffablePress Content Management System. Wait. Wait. Snaps. Come back to me. I'm not done talking.

A Content Management System is the group of programs that media sites use to create, edit and manage the content on their sites. There are a lot of them out there. And they all suck. They suck hard. I know, because as the owner of multiple sites with monthly unique views in the lotsa millions, I've tried most of them.

So I'm making my own. More specifically, I'm making one that I can release to the public. See, I made my own CMS (I'm going to call it that from here out) nine years ago when I realized WordPress wouldn't handle the load of traffic to my site, without massive tweaks and hacks. But that CMS was purpose-designed, meaning it wasn't flexible enough for anyone but me to use, because I designed it for a very specific purpose: to run my site,

That CMS went through numerous iterations as traffic to that site increased and my needs changed in response to rich content, my own annoyance at having to go through 20 steps to post a story, the need to scrape content from other web sites for death notices and court reports, the need to change the types and sizes of my ads at a moment's notice, the need to include HTML5 ads in place of Flash ads... the list goes on. But even as the CMS changed, it still remained purpose-driven.

Fast forward to 2011. I started a new site,, a site where I published mug shots of people who were arrested in, shockingly, Muskogee. THAT site also needed a CMS. But that CMS had to be different than the one on MuskogeeNOW, because I was publishing mug shots, names, dates, ages, criminal charges and such, not stories. So I made one for it, too.

Then people started asking me to build web sites for them. And because I don't like baby-sitting people, I decided to make a CMS for their sites, too. And then it dawned on me: If I need this many CMSs, I bet a LOT of people do.

So I started working on IneffablePress - Ineffable because I've always loved the word, which means "defying description or classification." My CMS had to defy classification. It had to be flexible enough to handle multiple needs - many of which I couldn't predict while programming it.

In that screenshot, notice some things:

  • The main editor is WYSIWYG (What You See Is What You Get). There is no code being entered by the user. Just like a word processor (Word for Windows, Pages for Mac), You simply concentrate on entering the text. The program handles the formatting for you.
  • The content is being created right on the page where it will be displayed. One of my main CMS gripes is having to log into an administrator section and then perform actions on the site. I designed IneffablePress to edit and create content right on the page you want it to be displayed on. It saves steps and time.
  • Nerds can still edit the code source of the entries (notice the [Edit Source] button):

But the best stuff isn't on that screenshot. The best stuff is an end user can literally (and I hate the way most people use that word - to mean "figuratively") create new forms of content without having to program at all. My program actually takes the end user's input to create a new kind of page without me having programmed that kind of page. I'll explain.

Uncross your eyes for a second, because that screenshot is pretty amazing. The content you see in the picture above it is controlled and dictated by this "schema" which is a computer's way of saying "set of instructions." This little file actually tells my program what content is in a certain page, and how to ask for and then process that content so the user can define EXACTLY what kind of stuff they want on their page.

For instance, you're looking at the "schema" for a blog entry. It contains several main items: headline, byline, post time, body, categories. It contains those items because the "schema" tells it to. And then, each item actually defines how it should be interpreted and asked for when the user is creating or editing an entry. For instance, the headline tells the program that it is a "text" type. And then it gives the user instructions for how to enter it.

The "Category" type is a list (each blog entry can fit into several categories. The blog keeps track of those categories and presents them in a handy list for the end user to select from when making new entries). The beauty of the "schema" is that this item tells the program where to search for its data (category_list.json) so it can save and read the list any time it wants. Then it tells the program that the user can add items to the list, so the program presents a form field for the user to add to that list.

None of this stuff is hard-coded into the program. Instead, the program depends on the schema to tell it how to handle each kind of data.

That means, for the MUGS sites, I could create a schema that asked for a mug photo, then a suspect name, age, city and list of charges. For the NOW sites, I could tell the schema to ask for a headline, byline, story, list of categories and reader comments. For a jewelry site, I could have the schema ask for a picture of a jewelry piece, a title for the piece, a description of it, a link to a page where the user can select a size and buy the piece, a price, several categories the piece fits into. For the death notices on the NOW sites, I could have it ask for the decedent's name, date of birth, date of death, service time, service location, funeral home, obituary, photo, etc. For the court report, I could have it ask for case number, case cause and action, party names, charges or action, etc. The possibilities are endless.

So yeah, I'm pretty excited about it. If you've read this far, you're either very confused or INCREDIBLY bored. Either way, thank you. I just needed to get it out there, because it helps me think.

I just learned something about people that I knew, should have known, all along.

In my city, a woman was taking care of her six-week-old nephew, who was born on drugs. Yesterday, she took him with work to her. As she left work, she went to pick him up from the company's daycare, and the workers there told her, "You never dropped him off."

The temperatures yesterday were in the low 90s around here.

in a panic, she rushed to her car, where she discovered the infant in the car seat in the back of her car. Dead.

Yesterday, I reported that, and people went out of their minds, calling for her to be burned to death, executed and whatever other torture they could dream up.

Today, I reported her name. Turns out, she was a pretty white girl, middle-class, responsible, upstanding. A woman I had known for 20 years and worked with for about a dozen.

She was a friend. And I knew she wasn't the kind of person this kind of thing happened to. Yet it did.

When people saw that she was white, pretty and middle class, they lost their minds and started ragging on me for reporting her name. Can't she get some privacy? they asked. Why would you report this? they asked. This was clearly an accident, they said. Let this poor woman grieve in peace, they said.

The day before, they were calling for her to be burned to death. After they discovered she was white, middle-class and responsible, suddenly I was the bad guy for reporting on her. They loved it when I reported on poor crackheads who did the same things, but when I reported on a nice, responsible white woman who did the same thing, it was suddenly evil.

The woman, they said, was simply trying to work and made a mistake, an honest mistake. She's going to punish herself for the rest of her life, they said, so why make it worse by reporting her name.

Truth is, I reported her name because if it were any other story involving someone I didn't know, I would have reported their names, and therefore I had to report her name. If journalism is to be fair, it must be fair to everyone, even if I know her, even if I've been friends with her for 20 years. ESPECIALLY then.

But people revealed their bias against the poor and underprivileged when they freaked out about how the story was affecting this upstanding citizen - instead of concentrating on the fact that a baby is dead, the woman is responsible for the death and like everyone else in similar situations, it is journalism's job to report on that.

It makes me sad.

I know it's been awhile since I updated, but this site is actually why it's been awhile.

I'm currently working to get the IneffablePress program that runs this site updated to release-quality. Doing that is taking a lot of work, but it's going really, really well.

In addition, we just moved even further into the country, which is great, but it's a lot of work, and I've been concentrating on that a lot. Also, I can't get Internet to the new house until next week, so that's slowing me down. I'm currently using my phone as a modem, and it reminds me of the early days of the Internet, where I had to listen to a modem go buzzz, bing, buzzzz bong before I got online and had to watch each photo load from top to bottom at a glacial pace on my black-and-white monitor. Also, get off my lawn.

Also, I've started two new business ventures in the same time (one is taking on a partner for my non-Muskogee properties, and the other is possibly taking over a longtime print publication in my state). So that is taking a lot of time, too.

Also, with all the early buzz from Robby the R-Word, I'm feeling pressure to write the next book, which will NOT be a sequel, but I have NUMEROUS ideas on what to do.

So I'm still around, but I'm just working a LOT.

Soon, however, this site will be upgraded to the new release-version of IneffablePress, which I'm actually coding to use on a client's site (a client who has already paid me to get the thing done, so that guarantees I actually WILL get it done).

I now have a solution to the "smart quotes" issue that has dogged me for so long. To recap, "smart quotes" are quotation marks that face the text they're quoting, and apostrophes that face the larger part of the combined word, and doing them in the programming language PHP is incredibly difficult.

So I finally got it to work, and here is the code I used to do so:

function educate_quotes($string) {
        //set up patterns to look for (dumb quotes, etc)
        $pattern = array('/\b"/',//right double
                    '/"\b/',//left double
                    '/"/',//left double end of line
                    "/\b'/",//left single
                    "/'\b/",//right single
                    "/'$/",//right single end of line
        //set up html entities to replace them with
        $replace = array("”",//right double quote
                    "“",//left double
                    "”",//left double end of line
                    "’",//left single
                    "‘",//right single
                    "’",//left single end of line
        //split into array with tags on their own line
        $new_string = preg_split("/(<.*?>)/",$string, -1, PREG_SPLIT_DELIM_CAPTURE);
        //iterate through each array item, change quotes to non-html items
        for($i=0;$i<count($new_string);$i++) {
            $str = $new_string[$i];
            //some array items are empty. skip them
            if ($str) {
                //if this item doesn’t contain an HTML open tag
                if (strpos($str,"<") === false) {
                    //replace dumb quotes and apostrophes with smart equivalents
                    $new_string[$i] = preg_replace($pattern,$replace,$str);
        //turn the array back into a string
        $str = join('',$new_string);
        return $str;

The issue all along was that "smart quotes" mess up HTML tags (the little bits of programming like <b> that cause text to be bold or <a href=""> that create links for you to click). Teaching a computer program to change quotes to "smart" quotes in text while leaving HTML tags alone is surprisingly difficult.

PREG_SPLIT_DELIM_CAPTURE splits the string into an array, with items surrounded by HTML tags <> being on lines of their own, so I can process and work ONLY on strings that don't have HTML tags in them.

So this solution works, and it is in production on my news sites. Feel free to steal it.

In another of those "this is really too bizarre to be true" situations that seem to pop up with regularity in Oklahoma comes the case of Misty Velvet Dawn Spann and her mother, Patricia Spann, both of Duncan, Oklahoma.

It seems Patricia Spann hadn't seen her kids until a few years ago, and when they reconnected, they really reconnected.

In 2010, Patricia married her son, Jody Spann Jr., who promptly filed for annulment, citing "incest" as the reason.

Undeterred, earlier this year, Patricia Spann married her daughter, Misty. She had "looked into it," she told her daughter, and she was pretty sure they weren't breaking any laws, because her name was no longer on Misty's birth certificate. Misty, it seems, didn't realize her mother had already been married to her brother.

If you have the stomach, read the affidavit here.

I guess, they're keeping it in the family.

The subconscious mind is a weird thing, and it shows its usually-obscured face to us when we are sleeping.

For instance, more than one novel I've been writing has been completed due to a dream telling me who did it, or how to steer it, or how the main character would react.

Numerous programs I've written have been completed because dream-me told wake-me how to solve the niggling problem that had been keeping it from working the way I had envisioned when I started it.

I've even written songs in my sleep.

But the strangest of these phenomenon, to me, is the fact that many times, I dream in computer code. Like, I'll wake up and have an entire computer program in my mind from the night, when I dreamed it up. And without exception, the programs work when I type them in and compile them.

There is even a web site dedicated to that idea.

Ultimately, I don't think it's that unusual. I read somewhere that dreams are our brains' ways of preparing us for real life situations. The example I read whenever and wherever was that people often dream of fighting, and that is their brains teaching them to react to situations they expect might come up at some point; a random assailant attacking them on the street, and how they should respond to preserve their life - and ostensibly the ability to pass on their genes to the next generation of obese Walmart addicts.

So if our unconscious brains are really going through scenario after scenario in attempt to prepare our conscious brains for situations expected to arise, it's normal that someone who spends a lot of time programming might dream about such a thing. Or songwriting. Or book writing. Or picking lint out of toenails. Whatever.

The point is, subconscious me is a lot smarter than conscious me. So rather than fight it, I embrace it. And hope it never stops.

If you've ever seen Penn & Teller: Bullshit, or Good Eats, you'll understand me. (If I could be friends with Penn Jillette or Alton Brown, I'd consider my wish granted)

I love things that debunk popular belief, and I love things that use science to explain things we take for granted.

Knowing those facts, you'll be completely unsurprised to know I love the show called "Adam Ruins Everything" on TruTV.

It's like a combination of Bullshit and Good Eats. Adam (whatever his last name is) is a standup comedian who uses facts, research and science to shatter popular myths about commonplace things we all believe and love.

And it's EXACTLY who I am, and what I love.

A friend (Daughin Chan, if you must know) once described me as an icebreaker ship - the boats that go through arctic ice, cutting the way for other ships to sail on water by breaking ice with hardened hulls. What that means is I cherish above all other things shattering the misconceptions that encapsulate and imprison the minds of people.

And that's exactly what Adam Ruins Everything does. Like Bullshit, it challenges preconceived ideas with scientific facts and statistics, and like Good Eats, it uses nerdy facts and a nerdy host to delineate those things with humor and aplomb.

I just started watching tonight, but I'm already halfway through the first season.

I recommend it to anyone who wants to understand why I'm such a pain in the ass.

There is an alleged child molester living in my hometown who does really bizarre things. I mean, even more bizarre than what he's accused of doing (including possession of child pornography).

Today, he posted this to a Facebook page he controls:

And then, in the comments, he posted this:

What's bizarre about that? you might ask. Well, I spoke to some law enforcement people who are familiar with his case, and they confirmed that the screenshot above is actually FROM his case. Like, the blueish bubbles are him and the white bubbles are an underage person he was talking to.

That is just incredibly bizarre, as far as I'm concerned. This isn't "news" enough for me to post to my news site, but I thought it was just too weird to ignore completely.

← Older articles