Geek Girl Joy

Artificial Intelligence, Simulations & Software

Sunshine Blogger Award

I was nominated for the Sunshine Blogger Award recently and I assumed that it meant like a “cheery” blogger and just being honest here… some of my recent posts just haven’t been chock-full of all that sun shinny goodness! 😛

It’s not that I’m not appreciative, really! I was just confused. 😛

Though after minimal investigation it seems that my assumption about the Lesley Gore prerequisite that everything be…

“Sunshine, lollipops and rainbows, That’s how this refrain goes…”

Didn’t exist, so I resolved myself to accept the challenge… er, I mean… award!

Later I did find that some people do associate this award with “positivity” but… well, I’ll try my best but no promises! 😛

Now you may recall I have been nominated for several other awards already and as I said, the gauntlet has been laid, I will do them.

It’s just… those are more complicated posts to write from my perspective since I actually have to formulate opinions n’stuff and these questions are a little more straight forward and so are easier to do today and will require less of my organic CPU which is already heavily multithreading these days so… guess which one is getting done?

Hint: this one 😛

Hey look, Mysteriously you all got that one right! We should celebrate! What’s the modern day politically correct version of “Cigars All Around!”?

I mean, I guess there is the old “High Five Everybody!” but that seems so pre-pandemic, doesn’t it?!

There is of course the hands free, tried and true, social distancing “Proud of you Nod”:

But that seems… “grizzly regressive” and I said before, I believe we’ve become “The Space People” and I’m totally sticking by that! Also, almost certainly that would get awkward and maybe even a little creepy with everyone wearing masks and spacesuits these days!

No… in Cyberpunk 2020 the logicality of the Vulcan wave now makes sense!

For your health… consider all the cooties floating around… don’t you agree it’s time we start flipping people the “Live Long and Prosper” in addition to the “Bird”?!

Thank you Spock!

So I guess with that, we should move on to the wallpaper before we do the award ceremony!

A Brain In A Digital Jar

So I like to challenge myself, it’s how we grow and today’s challenge is find a way to combine/bridge the gap between Solipsism and the Sunshine Blogger Award.

I’m not saying I will be successful but if I succeed, not only will I level up but also presenting this wallpaper with today’s post will totally make sense! 😛

A Brain In A Digital Jar 1920x1080 Wallpaper
A Brain In A Digital Jar 1920×1080 Wallpaper

Wish me luck NPC’s!

Sunshine Blogger Award

sunshine blogger award

I was nominated for this award by Megan who also goes by A Geeky Gal and let me tell you, that name is descriptive! She writes about geek culture and mental health (other geeky stuff) and she’s active and attentive with her reader community.

She also does “let’s play” and geek fashion videos over on her YouTube Channel and I’m sure you will enjoy her content as much as I do! 🙂

Thank you Megan for nominating me for the Sunshine Blogger Award and giving me this opportunity to showcase some of my content to a wider audience!

This award comes with some rules so here they are:

  • Thank the blogger who nominated you and link back to their blog (done).
  • List the rules and display the Sunshine Blogger Award logo in your post and/or on your blog (done).
  • Answer the 11 questions the blogger asked you (soon).
  • Write 11 new questions (after soon).
  • Nominate 11 new blogs to receive the award (no).

So… let’s answer some questions! 🙂

What are 3 interesting facts about yourself?

Interesting facts? Hmmm… I’m actually pretty boring but here goes…

  1. I think the Myers-Briggs “Personality Type” stuff seems like pure astrology while also possibly being useful for creating a “best-seller” Writer Bot… uh… no offense if you believe in astrology. 😛
  2. I am an autodidact in the truest sense. I was home-schooled and the very first book I read on my own was the large leather bound Webster’s dictionary that seemed like it was a foot thick to me at the time and I read it from cover to cover, followed by a much thinner thesaurus… I still can’t spell worth a damn tough! 😛
  3. My memory isn’t perfectly “photographic” but is both highly aural and visual.

Where would you like to be in 10 years?

Honestly? Preferably off world!

Governor of the Moon or Mars sounds about right, though on the Moon I’d still occasionally have to worry about the crazy earthling neighbors so… given my ultimate druthers… probably riding aboard the Orion. 😉

Baring that… I’ve got this whole “world domination” plot in the works and yeah… ten, eh maybe twelve years should do it if things go exactly according to plan and I meet my funding goals.

What are your goals for the next month?

You mean besides the whole moon “laser” world domination plot thing?  Oh wait did you mean like “personal / life” goals?

Well… I guess if I had to come up with a list just here on the spot… In no particular order mind you…

  • Complete the design and 3D print the prototype I’m working on.
  • My Xavier is 3 years old and can count to 100 by 1’s and to 1000 by 100’s and he has a basic grasp of addition though I’m sure some of it is rote. He is also just starting to get single number multiplication. I’d like to work more on subtraction with him as well as the concept of the number line and negative numbers. Additionally we need to continue expanding his vocabulary and although he needs a little prompting with the alphabet he gets better every day and I would like to see him get from A-Z without any prompting but numbers are far more his thing right now than letters.
  • Find time to work on the MANY programming projects I have in the works.
  • Continue prioritizing more and better sleep.
  • Continue my exercise routine, eating healthy, get all my vitamins… all that sort of health improving and maintaining kinda stuff.
  • Reclaim the industrial boarder territory known as “The Kitchen” (specifically Dish Mountain) from it’s recent secession attempt and restore law and order among The Nation of Flatware!
  • I’d put this one higher on the list but I did say these weren’t in order… Convince a billionaire to write me a blank check… coincidentally I’m taking applications in the comments and don’t let the “billionaire” prerequisite stop you… millionaires feel free to apply and in fact any applicant willing to just hand over a blank check to yours truly should also feel confident about their odds that I will accept their generous no strings attached gift!

How has your blog changed since it was first created?

Well… I mean… I troll my audience (with love) a lot more than I used to or probably should. 😛

Yes… sometimes that means I have bizarre existential conversations with myself while writing some posts regarding what’s the “smartest stupid thing” / “stupidest smart thing” I can say in some situations because in the end, it’s all for the lolz (yours and mine). 🙂

Sometimes for the sake of your intellectual stimulation and argument I may leave you unsure of what I mean or what my actual opinions are.

Mostly, I’ve just expanded out from doing “programming projects/tech content” (though I still do technical posts fairly regularly), which has a small number of regular readers who follow me specifically for that content.

Though lately my posts are about any topic that interests me or that is on my mind and I try to make my writing as entertaining and informative as possible.

Some of my work is satirical but look, you have to understand… I do all this for my personal amusement! It’s a hobby. 😛

I have also started adding a 1920×1080 wallpaper to almost all posts because… who doesn’t love having a new background every now and then?

If someone wanted to understand you, what game would they play?

Well… as a highly skilled propagandist, I would probably say Conway’s Game of Life because it’s great advertising for the series of posts I did about it! 😉

Though regular readers might note my preoccupation with the Fallout franchise and might say I’m something of a regular “Radiation Baby!”… you know, just your typical “Teenage Fallout Queen”, uh… sans the teenage part! 😛

Though if you wanted to understand my general philosophical sense of the universe you might play the old Infocom text based adventure “A Mind Forever Voyaging” because sometimes I get the inclining that things are not quite what they seem and after experiencing 2020 I think the probability that I am some kind of advanced AI/Brain in a vat built to answer some question is growing in likelihood!

Put simply, what that means is that there is a possibility all or many of you may be NPC’s from where I’m sitting and I could be an NPC from where the simulation creator is sitting and this blog may simply be the method of communication they felt would be most convenient for analyzing my thoughts… but… I am reminded of what Sheldon Allman sang:

“Be circumspect and discrete, Stay light on your mental feet, One slip and you know you’re through…”

Truly those are words to live by!

But… surely such thoughts will raise the ire of the simulation builders!? Too far down that rabbit hole and almost certainly the brain wipes begin!

Uh…. what was I saying?

Ultimately I think if you had to sum up my existence in a single game it would probably be… the game of random chance…. Solitaire, because much like the incorrect and frequently misheard solipsistic Nirvana lyrics sung by Kurt Cobain in the MTV Unplugged Version of All Apologies states:

“All alone is all we are”

What else should I write? I don’t have the right! What else should I be? All apologies!

Hmmm…. that joke is kinda hard to hit home and way to obscure to make sense to anyone!

See, there is a repeating lyric in All Apologies that goes:

“In the sun, In the sun I feel as one, In the sun….”

And via the Kevin Bacon separation equation of six degrees (A.K.A. “Bacon’s Law”)… it kinda bridges together all of this weird “Solitary AI Mind in a Jar” B.S. with the “Sunshine” Blogger Award nicely and it even ties a pretty bow on top, especially if you don’t think about it too hard! 😉

What is your favorite video game quote?


“Halt! Halt! Halt!”

~The guards in Daggerfall

What game are you most looking forward to?

I’m on pins and needles for the Cyberpunk 2077 RPG. Everything about it looks amazing and I’m sure to be playing it for many years to come and creating new characters to explore every cranny in Night City’s nook!

I’ve settled on these three character origin stories to play first but I’m torn between which character I wanna to play first of the first.

  • A tatted up and cyberwared Harley Quinn meets Tank Girl, “Street Kid” (big-gun toting gangsta doll) eager to follow in the “Rockerboy” Johnny Silverhand’s anarchistic footsteps and is ready, willing and able to “burn Night City to the ground!” just like Johnny-S suggests in one of the game trailers. Not exactly an evil character (at least to start), more… highly impressionable. Because of her… lets say “naive” nature she is able to justify any and all her horrific acts in the name of “social progress” and sees herself as dispensing “vigilante justice” on anyone who gets in her way. I see her using anything that goes “pew pew” or “boom”. Ultimately, whoever she sides with be be shaped by the beliefs of the faction that convinces her their cause is most worth fighting for and then gets out of her way while Night City quakes in the aftermath.
  • A fallen from grace, transgender “Corpo” Netrunner (Hacker)/Mnemonic Courier (like Johnny Mnemonic) with a soft heart and a hard, uh… set of wits, that she used to climb the ranks of the Arasaka Corporation. Even though she is soft at heart, morally she is quite gray and has no problem using her abilities to cause havoc as well as inflict non-lethal harm when the situation demands a more forceful approach, though I’m going to try for a deathless play through… okay, maybe not the bosses. She will seek the most expensive and top of the line cyberware and equipment with the justification that better tech means accomplishing her goals easier and with fewer bodies however she risks “cyberpsychosis” with every additional implant. She is a hedonist and won’t be afraid of spending her hard earned €ddies on all of Night City’s finer pleasurable experiences. She will side with whoever makes her the best offer she can live with and then doesn’t double cross her.
  • A post apocalyptic psycho “Nomad” / “biker tribal” / merc-theif (think Wez from Mad Max or members of The Great Khans from Fallout). His nomadic tribe doesn’t openly admit to cannibalism but… well, “the road gets pretty long sometimes!”. Due to prevailing economic conditions he has been forced to leave the lawless nomadic lifestyle he loves and migrate to live and work in Night City and because of his lack of a moral compass and willingness to kill for the right price he makes a living as a well paid mercenary doing… “Whatever you pay him to do!” however his individualist nature and tribal “Luddite” upbringing cause him to spurn all but but the most absolutely necessary cyberware, preferring instead to “remain human” and he sees anyone with extensive cyber implants as less than truly human and he takes great pleasure in spilling the blood/lubricating oil of his “technological superiors”. While not an exclusive melee-only play through, this character enjoys the thrill of combat and likes to get up close and personal with his enemies as much as possible. Like the Corpo play through, this character will also side with the “best offer” he receives, but unlike the Corpo play through, he will not factor in minimizing the harm he causes to others with his choice of allegiance.

What game are you currently playing?

Well I’m currently “saving myself” for Cyberpunk 2077 so I’m not playing anything “heavy” but Xavier loves to sit and play Space Engineers with me every now and then and we have a moon base right now which is mildly unfortunate because Keen Software House just released their “weather” update so planets now have dynamic weather which seems awesome (I can’t wait to aerobrake into a Martian sandstorm) but since we’re on the moon, no cool weather effects for us yet. :-/

Now… if Keen would only get off their asses and implement liquid water! Again, just saying… Minecraft and 7 Days to Die did it! 😛

Speaking of 7D2D, when I have a little time, I play single player 7 Days to Die because you can pick a direction and in the span of thirty minutes have a fun zombie adventure every time! And since the entire world is voxel based you can break or build anything and I enjoy the building/crafting elements in addition to surviving the zombies.

7D2D Alpha 19 is about to drop (or already has) and it’s supposed to come with lots of cool new feature’s including hints at elements of the “story mode” and overall visual improvements, lots of new zombie models and possibly even a flying robotic turret companion, which obviously excites me, though that might get pushed back to Alpha 20 (6-8 months from now). 😦

Additionally, I’ve been meaning to give Alien Isolation another go. It’s a horror RPG where you play Amanda Ripley (the Daughter of Ellen Ripley (Sigourney weaver) from the Alien movies) and due to a series of unfortunate events you explore Sevastopol Station during it’s final hours as it’s orbit slowly decays into the gas giant it’s circling. All while trying to avoid the alien, murderous androids and other scared (sometimes dangerous) survivors.

There is minimal “gun play” with a heavy focus on survival horror, exploration, puzzle solving, stealth and roll playing. You literally almost never have a weapon and most of the time you are running and hiding under tables and in lockers even if you do. 😛

The concept of hiding is similar to the game you are currently playing (Haunting Ground) but it’s played from a first person perspective and sadly Hewie doesn’t come along for the adventure though there are a few parts where you do have companions.

Though unlike that game, there is no running away. If the Alien sees you, you’re toast!

Also similarly there are predefined save locations which I don’t actually care for as a mechanic because I swear that damn alien cheats despite protests from the developers who claim the AI in the game is “fair”! 😛

Depending on my schedule before Cyberpunk is released (now pushed back to November 19th) I may give Alien Isolation another play through if I ever have the time.

Lastly, a friend in a different state has recently suggested we play “Don’t Starve Together” as a sort of “pandemic group playdate/social activity” but we’ll see. Lock down or not, it’s difficult to get responsible adults to commit to that sort of thing. 😛

If your favorite character had a modern song as their theme, what song would it be?

This is the hardest question to answer because I’m not sure I really have a “favorite character” actually… I’ve never really thought about it.

Accounting for my narcissistic form of solipsistic tendencies… It’s hard to say who my favorite character is because I tend to like open world flexible backstories like Bethesda games, like Cyberpunk 2077 and if I’m being truly “modern” then I might say V From Cyberpunk 2077 and the song would be… My Name is Dark by Grimes:

Damn! I should have said We Appreciate Power, also by Grimes and it totally would have gone better with today’s wallpaper too! 😛

Anyway, I haven’t played CP2077 yet and if we’re being a little liberal with the “modern” requirement it could be “Stubbs the Zombie”:

With the song”Resurrection” by Mr. Kitty for… obvious undead/zombiotic reasons!

Mmmm… good kitty! 😛

What is one thing you want to change about your blog?

Well, that billionaire blank check thing sounds pretty good!

Baring that… migrating to my own “top-level domain” (TLD) and a “virtual private server” (VPS) hosting package offers interesting possibilities… but eh I dunno… should I want to change something about my blog?

Are people saying things? What have you heard? Tell me damn it!

I guess… this is probably supposed to be where I turn to the camera, smile and the mature me is says something like “more readers” and that “you guys inspire me and… stuff!”.

Hmmm, I probably should have only wrote most of that last part, oh well… too late now! 😛

What blog posts do you read the most?

Isn’t it obvious? The good ones! 😉


Here’s a list of questions I’m asking:

  • What is your favorite color?
  • Why did you start your blog?
  • What has been the most challenging part of blogging for you?
  • Do you like eggnog?
  • “Never have I ever… BLANK”, fill in the blank.
  • Cashews are clearly the superior nut… If the answer cannot be “almonds”, what is cashews runner up?
  • What’s the best “complaint comment” or spam you ever received?
  • What is socially acceptable/unacceptable today that you think will/won’t be in 10-15 years?
  • Consider your blog/community needs an app? What would it’s features be?
  • If at the end of a long life with an old and worn out body, it was possible to transplant your brain into a robotic body that looked/felt/behaved like a human body in their mid 20’s-30’s and it would last for at least another 100 years… would you?
  • On my way to St. Ives, I met a man with seven wives, Each wife had seven sacks, Each sack had seven cats, Each cat had seven kits. Kits, cats, sacks, and wives. How many were there going to St. Ives?


If you would like to answer these questions then I nominate you!

So as I said I am accepting blank checks from all who want to give them to me but if you’d rather just give me a small set amount, maybe like a dollar, I have a  Patreon.

But, if all you can do is Like, Share, Comment and Subscribe… well that’s cool too!

Much Love,


Happy Summerween 2020

Oops, did I say Halloween before? I meant Summerween! 😉

And let me just say that it’s nice to finally have something to celebrate with the year we’ve all been having!

For those who and not familiar, Summerween is the best holiday of the year… right after Halloween! 😛

And it’s basically the summer equivalent of Halloween with the notable exception that since pumpkins aren’t ripe yet people carve Jack O’Melons instead!

Google it, Jack O’Melons are totally a thing! 😛

Which is just happens to be the subject of one of today’s wallpapers! 🙂

The Summerween Wallpapers

Here’s a picture I took last night of the front of our house with our Jack O’Melon next to the gate.

Xavier decided he didn’t want this one to have teeth but insisted that the ones in the backyard all needed to have teeth! I guess he didn’t want to risk it biting any of the trick or treaters.   😛

Summerween 1920 x 1080 Wallpaper Color
Summerween 1920 x 1080 Wallpaper Color

And since some of you fine art critics like your expensive graphic novel artwork in black and white…

Summerween 1920 x 1080 Wallpaper Black & White
Summerween 1920 x 1080 Wallpaper Black & White

Bonus Summerween Wallpapers

Summerween only comes but once a year so this is truly a special occasion and warrant’s a little extra effort from me so I’ve painted another set of wallpapers for you.

It depicts hands holding a stylized dodecahedron and it will make sense by the end of the post.

First Version

Summerween Tricksters Hands 1920x1080 Wallpaper
Summerween Tricksters Hands 1920×1080 Wallpaper

International polling determined that the first version is preferred by 7 out of 10 viewers with the remaining 30% preferring the second version.

Alternate Version

Alternate Summerween Tricksters Hands 1920x1080 Wallpaper
Alternate Summerween Tricksters Hands 1920×1080 Wallpaper

Which do you prefer? Let me know in the comments!

The Tricksters Hands

So after I took that photo of our Jack O’Melon out front, I went around back to get the trashcans and put them out before it got any later since I knew I would get too tired to take them out. 😛

I left the cans and started walking toward my front door when the transformer on the pole down the street blew and arced sending sparks to the ground and one by one a procession of streetlights went out.

The flame in the Jack O’Melon flickered from the cool evening breeze and it was the only remaining light on the entire block.

The hairs on the back of my neck stood up!

Suddenly, a pair of hands just appeared out of nowhere directly in front of me and when I say “just appeared”, I mean they just seemed to materialize out of thin air! They weren’t connected to a body as far as I could tell, but it was really dark and I wasn’t about to reach out and touch nobody!

The hands seemed to be a conglomeration of old melted candies of all colors and types.

These must be the hands of the The Summerween Trickster, I thought! An ancient being of pure fused sugar. The spirit of Summerween and punisher of all children who lack a “spirit of respect” for the hallowed holiday!

Had I not shown enough enthusiasm when carving the melons, I wondered?

An otherworldly voice spoke as though the wind was whispering words directly in my ears…

“You show the true spirit of Summerween. Take this enchanted confectionery and use it’s power to spread the spirit and cheer of Summerween!”

The Tricksters sticky decaying and hands were holding what looked like a dodecahedron with a glowing lump of ancient green jaggery in the center.

I reluctantly took it and at that moment, firecrackers started popping down the street and I looked away.

When I looked back the hands had vanished and mysteriously all the streetlights were lit up once again and there was no sign that the transformer had ever blown.

I went inside and decided to powder the jaggery, I added it to a cup of coffee, then drank the potion.

The jaggery bestowed upon me the power to control the Jack O’Melon army and the title of The Duchess of Summerween!

In honor of my new status I declare this entire week, a week of Summerween jubilee and may a commensurate number of cavities be formed before the week is out!

Happy Summerween everyone and be safe while trick or treating this week!

You will not find more informative and entertaining content than you will right here…

If you agree, I invite you to consider supporting my content through Patreon.

But, if all you can do is Like, Share, Comment and Subscribe… well that’s cool too!

Once again, Happy Summerween and Much Love,



The Contrast-a-tron

Today we’re going to continue my introduction to creating your own data sets series by building Contrast-a-tron.

Now, I know what you are thinking:

“We already did that, like… a while ago!”

Here’s the thing though… we didn’t! 😉

And besides, it wasn’t that long ago!

What we built before was a Contrast-inator and a Contrast-inator and a Contrast-a-tron are not the same things! 😛

Let me explain…

  • The Contrast-inator: Learned how to “predict/classify” if a single input color was to the left (darker) or to the right (lighter) in an imaginary red line in the exact center of a 2D gray-scale gradient representation of the 0-255 RGB 3D color space.
  • The Contrast-a-tron (this bot): Is a much smarter and more interesting bot. It will learn how to “predict/classify” two input colors as “darker” and “lighter” or “the same” compared with each other. Which is a much more challenging task for the bot to learn.

But before we get into that I think I owe you a wallpaper.

A Wallpaper

Don’t mind the title, it’s definitely not a template placeholder! 😛

Anyway, just due to me being me, I have a lot of old robots and parts laying around and I was out in the o’l boneyard and I found this really beat up Krypto mining bot for us to play with.

I built it back when I was going to launch my own currency (A long time ago when it was still a cool thing to do and not everyone was like “my ICO is next week, you should mine sum!!!!” 😉 😉 ), yeah… no thanks!

Anyway, the bot’s memory is completely corrupt, but… the optical circuitry and hardware are still functional and since mining bots are built to operate deep under miles of data in extreme low light conditions at high speed, it’s visual acuity is top-notch and it even supports infrared mode!

So don’t let it’s tiny eyes fool you, they are incredibly sensitive which is perfect for today’s project! 🙂

Contrast_a_tron 1920 x 1080 Wallpaper
Contrast_a_tron 1920 x 1080 Wallpaper

I should add that not all posts get a theme song but today’s is Night Business by Perturbator (not a sponsor), I love the little vocoded? robotic voice about two minutes and twenty seconds in. It’s definitely what this bot’s voice sounds like! 😛

Also before we proceed, I’d just like to set the record straight and confirm that I’m definitely not Satoshi Nakamoto!

The Contrast-a-tron

To begin, let’s first look at what our Contrast-inator does:

Is this pixel brighter or darker than the red line?
Is this pixel brighter or darker than the red line?

It takes a color/shade as an input and then tries to determine which side of the red line it falls on.

Not that useful but it’s good for operating inside a known range that never changes. Like, was the light red or green kinda stuff, or conceptually like a line following robot.

Anyway, what if you wanted to start comparing two colors at the same time and to make things even more complicated, what if the gradient wasn’t always facing the same direction (meaning the “brighter/darker” pixel could be on the left or the right)?

For most of you that task is trivial and you could do it almost unconsciously or with minimal mental effort, not the Contrast-inator though!

To compare two pixels the Contrast-inator must evaluate each separately and because the red line (which you can imagine is “where the robot is standing” on the gradient when it’s evaluating a color) doesn’t change, if both colors are to it’s left or right (the bot’s vantage position / the red line), then it is completely unable to compare them.

Because these colors are on the same side of the red line, the Contrast-inator cannot compare them but the Contrast-a-tron can.
Because these colors are on the same side of the red line, the Contrast-inator cannot compare them but the Contrast-a-tron can.

Just to be clear, the Contrast-inator will say that both pixels/shades are “brighter/to the right” of zero (where it stands / it’s anchor) but it cannot figure out which of the two colors are brighter and the same is true if both colors are darker (to the left of the red line).

Further, there is also no guarantee that we will always present the colors to the bot in the order of darker on the left and lighter on the right meaning that sometimes the gradient will be lighter on the left and darker on the right and we will need the bot to notice that difference and accommodate that circumstance.

How the Contrast-a-tron Works Differently

The Contrast-a-tron isn’t anchored to zero (the center of the gradient) and instead we can think of it moving around the gradient to try and find the “center” of the two colors (whatever color that might be) and from there it can evaluate which side (input color / shade) is brighter and which is darker.

In the event that the input colors/shades are the same then both Input A & B will be in the same place which means that it will be neither to the right or to the left of the bot.

How the Contrast-a-tron works differently.
How the Contrast-a-tron works differently.

How the Neural Networks Differ

I didn’t spend a lot of time discussing the structure of the neural network when we built the Contrast-inator but now that we have something to compare it against let’s look at a visual representation of each network.

How the Contrast-inator and the Contrast-a-tron neural networks differ.
How the Contrast-inator and the Contrast-a-tron neural networks differ.

On the left you see the Contrast-inator with it’s single input neuron, a hidden layer containing two hidden neurons and an output layer with two output neurons.

Additionally you see two “Bias” neurons represented in yellow that help the network learn what we want by “biasing” the output of that layer to the next so that it is never “none” (zero or no output).

What this means is that bias neurons add their value to the output signal of each neuron from their layer so that the signal is never no “activation signal” and some value propagates forward.

All layers except the output layer will always have a single bias neuron. There is no need of a bias neuron on the output layer because there is no signal to propagate beyond the output neurons so it wouldn’t serve any purpose.

Bias neurons have no inputs.

In practice we don’t have to concern ourselves with the bias neurons and the ANN will manage them itself but I like draw them because they do exist and they are part of the network, however it’s common for people not to include them in diagrams because they are so easy for us to ignore since we don’t really need to do anything with them and they are just there to help the signal propagate.

In any case, the Contrast-a-tron differs by including a second input neuron (for the second shade/color) and a second hidden layer which helps the Contrast-a-tron to be a little “smarter” and learn what we want it to.

I have a post about how to create diagrams like this called Visualizing Your FANN Neural Network and you can download a copy of the open source visualization software I wrote for free from my GitHub account here:

Training The Contrast-a-tron

When we created the Contrast-inator, I walked you through each training example and how it was derived because it was a very small data set requiring only three examples however this data set is a bit longer with thirteen examples and it will be a lot easier to show you the data set and then draw you a picture than to type a description but before we look at the training data, lets make sure we understand the outputs.

Understanding the Contrast-a-tron output.
Understanding the Contrast-a-tron output.

There are two outputs and we’ll call them A & B and they are in that order.

In an ideal world the bot will give us -1 & -1 to mean they are the same, 1 & -1 to mean that A is Brighter and B is Darker and -1 & 1 to mean A is Darker and B is Brighter.

In reality… what we get is a number that comes close but isn’t -1 or 1 called a “floating point number” in computer science but most people just call them a decimal number like for example 0.123.

In practice this means that as long as A & B are not both negative, then whichever has the higher positive value is the “brighter” color and whichever has the lower positive value is the “darker” color otherwise they are the same (A==B).

Let’s look at the training data and visualize it.

This is the complete Contrast-a-tron training data.

The first line is the “FANN Header” which consists of: the Total_Number_of_Example_Sets the Number_of_Inputs the Number_of_Outputs\n

Note the spaces between the values on the header line as well as between the inputs and the output values.

Line 2 (-1 -1) is an input example. Line 3 (-1 -1) is an output example and the pattern of Input_Example\nOutput_Example\n continues to the end of the document.

13 2 2
-1 -1
-1 -1
-0.5 -0.5
-1 -1
0 0
-1 -1
0.5 0.5
-1 -1
1 1
-1 -1
1 -1
1 -1
0.5 0
1 -1
0 0.5
-1 1
-1 -0.5
-1 1
-0.5 -1
1 -1
1 0.5
1 -1
0.5 1
-1 1
-1 1
-1 1

Let’s visualize this training data which should hopefully give you a more intuitive sense for how these numbers translate to information the Contrast-a-tron ANN can use to learn.

Visualizing the Contrast-a-tron training data set
Visualizing the Contrast-a-tron training data set

The Code

Here’s the code used to train. I have other tutorials covering what this all means available on my Topics and Posts page so I won’t go into what all of this means but basically it sets up a training environment and trains the Contrast_a_tron ANN and saves the results to a FANN .net network file.



$num_input = 2;
$num_output = 2;
$layers = array($num_input, 2, 1, $num_output);
$ann = fann_create_standard_array(count($layers), $layers);

$desired_error = 0.0000000001;
$max_epochs = 900000;
$epochs_between_reports = 10;

if ($ann) {
    fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

    $filename = dirname(__FILE__) . "/";
    if (fann_train_on_file($ann, $filename, $max_epochs, $epochs_between_reports, $desired_error)){
        echo 'Contrast_a_tron trained.' . PHP_EOL;

    if (fann_save($ann, dirname(__FILE__) . "/")){
        echo ' saved.' . PHP_EOL;



We next need to test the ANN so I use two “for loops” with one counting down to -1 and one counting up to 1 and each incrementing by -0.2 each iteration of the loop as the inputs to test with.


$train_file = (dirname(__FILE__) . "/");
if (!is_file($train_file))
    die(" has not been created! Please run TrainContrast_a_tron.php to generate it" . PHP_EOL);

$ann = fann_create_from_file($train_file);

if ($ann) {
    foreach(range(1, -1, -0.2) as $test_input_value_a){
        foreach(range(-1, 1, -0.2) as $test_input_value_b){
            $input = array($test_input_value_a, $test_input_value_b);
            $result = fann_run($ann, $input);

            $a = number_format($result[0], 4);
            $b = number_format($result[1], 4);
            // What answer did the ANN give?
            $answer = NULL;
            $evaluation = '';
            if($a <= 0 && $b <= 0){
                $evaluation = 'Neutral/Same';
                $answer = 0;
            elseif($a > $b){
                $evaluation = 'A is Brighter';
                $answer = -1;
            elseif($b > $a){
                $evaluation = 'B is Brighter';
                $answer = 1;
                $evaluation = ' OOPSIES!!!!!!!';

            echo 'Contrast_a_tron(' . $input[0] . ', ' . $input[1] . ") -> [$a, $b] - $evaluation" . PHP_EOL; 
else {
    die("Invalid file format" . PHP_EOL);


The Results/Output of the test code.

Contrast_a_tron(1, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, -0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, -0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, -0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, 0) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, 0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, 0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, 0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(1, 0.8) -> [0.9986, -1.0000] - A is Brighter
Contrast_a_tron(1, 1) -> [-1.0000, -0.1815] - Neutral/Same
Contrast_a_tron(0.8, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, -0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, -0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, -0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, 0) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, 0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, 0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.8, 0.6) -> [0.9992, -1.0000] - A is Brighter
Contrast_a_tron(0.8, 0.8) -> [-1.0000, -0.2218] - Neutral/Same
Contrast_a_tron(0.8, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.6, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.6, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.6, -0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.6, -0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.6, -0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.6, 0) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.6, 0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.6, 0.4) -> [0.9995, -1.0000] - A is Brighter
Contrast_a_tron(0.6, 0.6) -> [-1.0000, -0.4005] - Neutral/Same
Contrast_a_tron(0.6, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.6, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.4, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.4, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.4, -0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.4, -0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.4, -0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.4, 0) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.4, 0.2) -> [0.9996, -1.0000] - A is Brighter
Contrast_a_tron(0.4, 0.4) -> [-1.0000, -0.6543] - Neutral/Same
Contrast_a_tron(0.4, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.4, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.4, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.2, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.2, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.2, -0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.2, -0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.2, -0.2) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0.2, 0) -> [0.9996, -1.0000] - A is Brighter
Contrast_a_tron(0.2, 0.2) -> [-1.0000, -0.8580] - Neutral/Same
Contrast_a_tron(0.2, 0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.2, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.2, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0.2, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0, -0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0, -0.4) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(0, -0.2) -> [0.9996, -1.0000] - A is Brighter
Contrast_a_tron(0, 0) -> [-1.0000, -0.9557] - Neutral/Same
Contrast_a_tron(0, 0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0, 0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(0, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.2, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(-0.2, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(-0.2, -0.6) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(-0.2, -0.4) -> [0.9995, -1.0000] - A is Brighter
Contrast_a_tron(-0.2, -0.2) -> [-1.0000, -0.9878] - Neutral/Same
Contrast_a_tron(-0.2, 0) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.2, 0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.2, 0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.2, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.2, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.2, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.4, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(-0.4, -0.8) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(-0.4, -0.6) -> [0.9994, -1.0000] - A is Brighter
Contrast_a_tron(-0.4, -0.4) -> [-1.0000, -0.9965] - Neutral/Same
Contrast_a_tron(-0.4, -0.2) -> [-1.0000, 0.9997] - B is Brighter
Contrast_a_tron(-0.4, 0) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.4, 0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.4, 0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.4, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.4, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.4, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.6, -1) -> [0.9998, -1.0000] - A is Brighter
Contrast_a_tron(-0.6, -0.8) -> [0.9990, -1.0000] - A is Brighter
Contrast_a_tron(-0.6, -0.6) -> [-0.9999, -0.9989] - Neutral/Same
Contrast_a_tron(-0.6, -0.4) -> [-1.0000, 0.9996] - B is Brighter
Contrast_a_tron(-0.6, -0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.6, 0) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.6, 0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.6, 0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.6, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.6, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.6, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, -1) -> [0.9981, -1.0000] - A is Brighter
Contrast_a_tron(-0.8, -0.8) -> [-0.9999, -0.9995] - Neutral/Same
Contrast_a_tron(-0.8, -0.6) -> [-1.0000, 0.9993] - B is Brighter
Contrast_a_tron(-0.8, -0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, -0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, 0) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, 0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, 0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-0.8, 1) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, -1) -> [-0.9998, -0.9998] - Neutral/Same
Contrast_a_tron(-1, -0.8) -> [-1.0000, 0.9982] - B is Brighter
Contrast_a_tron(-1, -0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, -0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, -0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, 0) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, 0.2) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, 0.4) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, 0.6) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, 0.8) -> [-1.0000, 0.9998] - B is Brighter
Contrast_a_tron(-1, 1) -> [-1.0000, 0.9998] - B is Brighter


As always you can download a copy of this code on GitHub for free and if you have any questions or comments please leave them below.

Contrast-a-tron on GitHub:

If you find yourself thinking…

“Joy you’re the best!”

I’d say….

If you support the resistance against Big AI then consider supporting my efforts through Patreon.

But, if all you can do is Like, Share, Comment and Subscribe… well that’s cool too!

Much Love,


Pandemically Atomic Protests

Summer is upon us and many of you have probably started thinking about usual summer time stuff like… Bellinis, Bikinis and of course, Betty White!


Oh… no, uh… no, no! Not like that!

What I mean is, contemplating her… closely guarded secret to longevity can be fun year round! 😛

I wonder what it could be?

So, I was watching YouTube the other day… an abrupt and awkward transition but go with me here… and an ad for like this mask headgear thing called a “VYZR” played… oh, uh… not a sponsor!

You can tell this isn’t a sponsored post because I’m not including a picture of it! 😛

Anyway, I’m just saying the name so you can look it up if you want to… but… let’s just say it looks a lot like this:

Regular readers will note my general skepticism and reluctance with masks.

I’m not saying fabric masks don’t work when they are properly manufactured with concern to mesh & thread sizes coupled with a sufficient number of layers (which can be calculated for any fabric).

In fact I know it’s possible because I wrote a sneeze into fabric simulation to test the efficacy of fabric masks.

Turns out, the math shows it’s totally possible but probably a few more layers than people seem to want because all I ever see anyone wearing are those single layer low thread count bandannas which my simulation shows are almost basically worthless!

Sorry, it’s not the time for that rant. 😛

I’m also not saying that masks aren’t appropriate to wear in some cases, like… right now in the middle of a pandemic where it could absolutely save someones life!

I just think that kind of “permanent” cultural change, which some people have called for, isn’t the kind of thing you just rush into without weighing the pros and cons a little… I mean… maybe sleep on it for a fortnight or two!

In any case, I had decided that once the pandemic subsided and it was generally safe, I would resume life without wearing a mask in public.

Well… that is until I saw that VYZR thing (I swear not a sponsor)!

Seeing that ad totally changed my view and made me realize that our humble beginnings as a species have been building to this very moment!

I believe we have now entered into the civilization stage “The Future” and culturally become “Space People”!

This means that going forward everyone really ought to wear a spacesuit at all times!

Because you see, it now occurs to me that for the longest time the uninformed art critics of the world have looked at “retro” scifi art and remarked in their most valley girl accent…

“Why are they wearing space suites when they are on earth? How can that be the fashion?” HAHAHA! etc…

~Smarty-pants Retro Scifi Art Critics

I’ll tell you why smarty-pants, the entire year of 2020, that’s why!

Your spacesuit serves triple duty as a pandemic-radation-bio-hazard garment and general purpose cyberpunk 2020 emergency “civil unrest” body armor!


I could sell T-Shits with that hashed tag but nobody would buy them because everyone is out of work!

And before we proceed, we should get this weeks edition of Joy’s Colorful Scribblings over with!

Joy’s Colorful Scribblings

Obviously the bubble helmet with the antennas is a retro scifi reference to the helmet thing I mentioned above. 😛

The protestors on the left should more or less be self explanatory by now and as for the nuke… well, we’ll get into all that soon enough I promise! 😉

Pandemically Atomic Protests 1920x1080 Wallpaper
Pandemically Atomic Protests 1920×1080 Wallpaper

Here’s an old Polaroid of the Peaceful Protestors in the background on the left.

Peaceful Protestors Polaroid
Peaceful Protestors Polaroid

Pandemically Atomic Protests

Okay so anyway… uh… where were we?

“The Future Space People”

Right…. well I guess I always kinda figured the future would be mildly retro-future like a Peaches music video… no, not “Fuck the Pain Away” in Andy Griffith’s Mayberry jail cell…. or even the Peaches and Chilly Gonzales collaboration, ‘Red Leather‘.

Well… maybe just a little… okay, okay “red leather trendsetter, always, always…” and that does lead me wonder if what Rihanna sang is true??

“Sticks and stones may break my bones, but chains and whips excite me!”


Hmmm… what I mean to say is, that’s improprietous, beside the point and now we’re completely off topic! 😛

Anyway, I was thinking the future would be more along the lines of her “I Feel Cream” video.

And more or less, it has been… but lately, reality has seemed lot more like this one… WATCH IT damn it! 😛

Can I just say… the three “Dirt People” dancers toward the end of the video, well… I could just watch their hilariously filthy gyrations over and over… I did when writing part of this post! 😛

I mean… just look at the dust cloud that comes off these”very relaxed” free loving stone age tribal hedonists!

Perhaps it is a dance-off for a leadership roll among the tribal elders?

But, I like to think they are performing some kind of purification/marriage ritual.

I call the one on the left “Sunwatcher – The Shaman” for… mildly obvious Kubrickian meets Clarkeian reasons that you would understand if you watch the video and mung the imagery and lyrics symbolically with some of the details of A Space Odyssey 2001.

The burnt ashes of what’s left over after the munging… that’s what I’m think of. 😉

The one in the middle I call Pink Bright-Eyes and her energetic companion to the right I’ve affectionately named, Pig-Pen after The Penunts Gang namesake he clearly resembles!

Certainly their union is made possible by a successful recent hunt of large game, perhaps even a mammoth!

Such a fortunate turn of events for the tribe will allow them to grow their numbers and expand their territory across the entire Los Angeles basin and as far as all the way through the San Gabriel valley!

That will of course mean dispossessing the existing tribes of their homes and lives but… such are the libertine hill people of Los Angeles, in summer circa 10,000 BC!

It’s almost as if these semi-evolved hominids haves accepted their meaningless position in the universe as the top predator creature that roams the surface of a large blue and green rock that is gravitationally bound to indefinitely float around a gigantic, naturally occurring, self-perpetuating nuclear explosion in the sky like some kind of “Black Sabbath Planet Caravan” and some of those simple tribal creatures, like Sunwatcher, even worship the explosion in the sky because it brings light and safety to the terrifying darkness.

Now, it seems that despite hundreds if not thousands of generations… hundreds of billions of those oh so sexy Rhianna S&M genetic material swapping/recombination events that humans are ever so fond of having passed since the union of Pink Bright-Eyes and Pig–Pen and still…. evolution has managed not one iota to blunt the human species predatory nature!





Which has left me agreeing with Professor Hubert J. Farnsworth, “I don’t want to live on this planet anymore“!


Oh where to begin?!

Hmmm… well in the middle of a pandemic a bad cop murders a man in broad daylight and the assisting murderers don’t even attempt to step in to aid the man despite protests from people observing!

I mean… how is that not murder?

Look, I’ve watched enough episodes of Cops and Reno 911 to know that when the po-po feels the need to take control of a situation that means “escalation” (even if it’s just a DUI Test) and that means they will want you to get your hands up, in front of you or stretched out to the sides and depending on the situation they may further escalate from there by using handcuffs if they feel the need for that extra warm blanket feeling security of knowing they have “the situation under control”.

Here’s the thing though… once the p.o. has “the situation” on-lock (as in… not the pink and fluffy kind with the key you can never seem to find) said po-po has a duty to “de-escalate” immediately!

Now, that po-po did appear to have Mr. Floyd well in non-fluffy cuffs so I fail to understand why all four p.o. didn’t think to de-escalate by safely moving him to his knees so he could get a breath of fresh air while they search his pockets for anything dangerous or… better yet… to the safety and comfort of the backseat of the police vehicle they were right next to!

Not only was it full of clean fresh breathable air, it’s equipped with air conditioning for that extra bit of crispy-fresh relaxation exercise-breathing all Americans refreshingly need right now!

See that thing you just did? That’s what they didn’t let him do for a very long time. 😦

And I want to know, was he even read his Miranda Rights before being executed?!

It’s like their po’ brains crashed in an infinite loop of stupid!

Mr. Floyd did not deserve to die! He and his family deserve justice and his murderers deserve to be held responsible to the fullest extent possible under the law!

When any one of our rights are stripped away from us, we are all hurt by it!

On behalf of Mr. Floyd and his family and for all of us who remain to mourn him, we must seek changes that will prevent anything like this from ever happening again!

That means pulling together as a community and working WITH the honest men and women of law enforcement, because I’ll tell you right now… #NotAllCops!

I believe there are two kinds of people who choose law enforcement as a career:

  1. People who genuinely want to help the community.
  2. People with the scholastic and athletic requirements and also the need to feed their egos with a destructive power trip.
  • In the first case we call those “Good Cops” and I believe there are many more of them who we cannot turn our backs on because we need them to help us fix things!
  • In the second case we call them “Bad Cops” and it’s people like them who rob us of a safe community! They kill and destroy what peaceful law abiding people hold dear!

So, Floyd’s tragic murder was followed by protests, then looting, assaults and more murders!

You know what they say though, if two wrongs make a right then thousands of wrongs can remake society!


I believe there are two kinds of people who choose to protest:

  1. People who genuinely want to help the community.
  2. People with the scholastic and athletic requirements and also the need to feed their egos with a destructive power trip.
  • In the first case we call those “Protestors” and I believe there are many more of them who we cannot turn our backs on because we need them to help us fix things!
  • In the second case we call them “Looters” and it’s people like them who rob us of a safe community! They kill and destroy what peaceful law abiding people hold dear!

…Ish Came Home To Loot Lead

Not a joke.

So all this ish is going on and one of those second case, second cases from above came to my house while I was wide asleep.

It was about 4 in the morning but I don’t know the exact time because I was a little shook up at the time and I only looked at a clock after everything happened.

I woke up from pounding that was quickly moving along the side of the house.

Later I thought about it and I guess they were checking for a dog or occupant?

Now… the thing is I’m more paranoid than David Duchovny listening to a paranoid Shirley Manson song, so once I was awake enough to understand someone was banging, my training kicked in and I forced myself to keep breathing and remained quite to assess what was happening.

I next heard the back door being forced and my heart started racing with dread.

For a brief moment I thought of my son and I was so thankful he was spending the night at grandmas! Still makes me cry to think about it! 😥

I jumped from bed and ran to my closet to get the Mossberg that I bought years ago just in case something like this ever happened.

I was terrified and my hands were trembling so bad that I struggled to remove the cable lock… I just couldn’t get the key in to unlock it!

Thankfully my back door has one of those heavy outer iron security doors which bought me enough time.

I ran right up to the door and hit the shotgun butt against it to get their attention.

There was a couple of seconds of silence, so just to make sure I had their attention I pumped the action to load a shell which makes a universally understood sound.

That’s when I heard them run away.

Imagine that, chaotic little me was able to scare away some big bad looters all by myself with the aid of a little technology!

Don’t try this at home! Past performance does not guarantee future success! Your results may vary!

Okay look, I’m NOT advocating violence, but I’m not a pacifist either!

Someone was breaking into my home to do… logic knows what and I’d seen videos of looters assaulting people so I was honestly afraid for my life at that moment!

In the end they made off with bicycle and broke a flower pot. Jokes on them though because that bike had two flat tires and bad brakes so… somehow that gives me a mild tingle of schadenfreude! 😛

Anyway, I haven’t been sleeping very well since this happened and it’s why I haven’t been posting or even on social media at all really… I’ve just been very unsettled lately.

Now, you might be wondering if I never opened the door, how do I know my looters are with the other group of of losers… er, excuse me, I mean looters?

Well I guess I don’t actually know they were directly associated exactly, but then again… why is it necessary to make such distinctions?

Whether we call them looters, robbers, invaders, marauders, raiders, super-mutants… they are all the same!

War… War Never Changes!

In the year 1945, my grandfather, serving in the navy, wondered when he’d get to go home to his wife and daughter and the infant son he’d never seen.

He got his wish when the US ended World War II by dropping atomic bombs on Hiroshima and Nagasaki.

The World awaited Armageddon… instead, something miraculous happened. We began to use atomic energy not as a weapon, but as a nearly limitless source of power.

People enjoyed luxuries once thought the realm of science fiction. Domestic robots, electric self-driving cars, portable computers, free wifi at Mcdonalds!

But then… in the 21st century, people awoke from the American dream.

Years of consumption without reinvestment lead to shortages of every major resource.

A global pandemic spread to every corner of the earth and the entire world unraveled.

Peace became a distant memory.

It is now the year 2020 and we stand on the brink of societal unrest, global economic depression and total war!

I am afraid. For myself, for my spouse, and for my young son… because if time has taught me one thing: it’s that war, war never changes… and last year I said “sounds mostly like saber rattling to me…”, yeah well… I was wrong.

The ashes of the nuclear treaties are basically smoldering in the waste basket as we speak and some Americans are calling for a strong “show of force” (meaning a live fire detonation of a Nuke on American soil) to “send a message” to Americas possible “enemies” that “we still have them and WILL use them”, which is just.. a stupid and inflammatory idea!

Russia too is apparently changing it’s public stance on live atomic weapons testing and as I understand it, China… well they never actually stopped apparently!

Proving once again the magical truth that stupid knows no national boarders!

Stupid hands across the water, Stupid hands across the sky!

Here’s the thing though Uncle Albert… As long as we maintain adherence to the M.A.D. doctrine, everything is more or less an uneasy okay… um.. fingers crossed! 😛

Look… I know it’s unpleasant but it’s in the news and somebody has to talk about these things!

M.A.D. stands for “Mutually Assured Destruction” and in practice that looks like what’s called “second strike” capability.

Usually this takes the form of nuclear armed submarines which can submerge and disappear beneath the waves.

What that means is that no matter if “they” (whomever that is) nukes you first, you still have a “second strike” ready even if “they” manage to destroy all your “primary” targets i.e people, cities and military installations etc..

This grisly strategy results in what in mathematics is called a game of “Nash Equilibrium“.

Put simply, once your country has nukes or is covered by those of an ally, you basically lose all motivations to use them (because whoever you use them against will return your gift in kind) while simultaneously reaching a state where you have zero reason to ever completely disarm because fully disarming means destabilizing the equilibrium which is the thing that ensures that even if your enemies want to… they are not going to invade or attack.

OK, so back to this idea that doing that stupid live test to stupidly “send a stupid message” to stupid people the world over.

It is completely stupid to think that the United States has to send anyone “a message” because absolutely nobody has any reason whatsoever to ever doubt America’s stupidly M.A.D. resolve!

Why? Well sweetie because, some Americans are willing to go so far as to burn their own cities down when they get M.A.D!

So… what chance would there be that when the U.S. Government gets M.A.D. it wouldn’t return nukes for nukes? Like none!

And if that doesn’t convince you, how about the fact that out of all of human history, for as long as humans have had the ability to make nuclear s’plosions… there has been only ONE country to ever actually deploy and use nuclear weapons in war time against another country!

It wasn’t Hitler or China or even Soviet Russia… let alone North Korea…

No that grim tiara is worn only by The United States!

Now, I’m not saying their use at that time was or was not warranted.

Truth is, I wasn’t there and I don’t know!

But what I can say is that as a result of their use we know what the aftermath of these weapons looks like and I don’t ever want to see that happen to another person! 😥

Here’s the thing though… I believe that Russia believes full well that when push comes to shove the U.S. would get M.A.D.!

Why do I believe this?

Outside of the reasons I list above, it’s simple. Russia has an unspoken cultural fear of “The Invader” because they have a history of being invaded.

So much so, there’s even a Wikipedia page called Invasion of Russia listing all the times Russia has been invaded.

I took two minutes and the information available on that page and turned it into a chart so we can better visually analyze that information.

Invasions of Russia

Invasions of Russia
Invasions of Russia

The information is arranged in years going left to right beginning in 1000 AD (just a nice round number to start with) to present.

Blue means a single invasion was occurring at that time, the orangeish red color means a second invasion was occurring in or around the same time and the yellow color as you probably guessed means that the Russians were truly not having a good time!

Anyway, as someone who is highly paranoid herself, it’s easy to somewhat understand Russia’s cultural “invasion paranoia” based on their history of being invaded.

So in some sense… it isn’t entirely “paranoia”… though that doesn’t really justify crossing fingers when agreements are signed, now does it? :-/

Now I know you are probably thinking, that was fun! Analyze China next!

My answer is China is way to complicated for me to analyze. 😛

I believe it was Winston Churchill who said:

“I cannot forecast to you the action of China. It is a riddle, wrapped in a mystery, inside an enigma; but perhaps there is a key. That key is Chinese national interest.”

Something like that, 😛 anyway back to the topic.

I believe the Russian desire to sign a nuclear treaty does seem genuine from the perspective that they genuinely don’t want to be invaded or have their people and cities nuked.

Now here’s where it becomes a soap opera plot twist: The U.S. also wants the #Don’tNukeMeBro treaty!

So why all the talk about using atomic s’plosions to “send stupid messages”?

Well… America wants China to also agree there won’t be any like… “preemptive strikes” or something, plus like some limits on what can be developed and how they can test nuclear weapons… but I only know what I read in the news and I can’t know all the details! 😛

Anyway… China and Russia are frenemies and America is like “Hey Russia, tell your boy China to trilaterally agree we wont use nukes to cap each other in the streets… then we’ll talk.”.

Now as I said, I don’t know the mind of Beijing, but their position seems to be that they only have enough nukes to end all life on the planet like two or three times over whereas the U.S. and Russia are maybe a little closer to being able to annihilate everything fifteen or twenty times over…  Which, like a magic 8 ball… too bad, so sad. Try again later!

Which leaves us, the good people of earth wondering just what the hell to do about it!

The truth is that no side is truly acting very calmly or rationally!

Ultimately, I believe everybody just wants assurances of a more peaceful and successful tomorrow.

As for whether or not its a good idea to test a nuke, not as “a message” but as a means of ensuring that all the circuits still work… well, there might actually be some justification for that.

I mean, it’s like leaving a car sitting unused for a while or a Nintendo left on a shelf for six months while you are away at college… when you come back there is a halfway decent chance it might not start.

It has been almost 30 years since the last U.S. test and if the systems don’t work then M.A.D.’s horrifically stabilizing effects are not in play and the equilibrium of “Global Nuclear Roulette” is unstable.

A test wouldn’t be done in the open on land, air or sea because we can test the missiles without warheads or conventional s’plosives if that’s necessary for some reason.

If they do a test it would likely be deep underground like they used to do so… sadly that means no 4K live streams on YouTube of a real mushroom cloud any time soon… unless… Russia you have a YouTube account right?

Though preferably a nuclear detonation test would be done in space far enough away from earth that it doesn’t interfere with global satellite networks not to mention the I.S.S..

#SpaceForce could use it’s X-37b robotic mini-space-shuttle to deploy one of those old “Senator Davy Crockett’s” the army has kicking around in a museum somewhere with a piston drive and some sensors strapped on to send that “probe” hurling away from earth!

The US gets it’s test and maybe we can do some materials science and engineering research on “Pusher Plate Drives“.

Sensors have changed a lot since the days of the analog 90’s, let alone the 1960’s when the research was first done, so just imagine the high bandwidth digital signals of the event we can record and how that information could help improve nuclear propulsion designs!

One successful test of an atomic piston drive in space is all it takes to prove people can get to Mars in 1 – 2 weeks with 1 G gravity the whole way, not that 9 month ocean voyage “transfer orbit slingshot assist” crap that people take seriously for some reason!

I mean think about it… a comfortable 1 – 2 week cruise with “zero G hour” every evening.

Your journey on the Orion space cruiser starts from a SpaceX space port on earth aboard a Starship with a 2-3 day zero G cruise to meet up with the Orion in lunar orbit.

Your Starship will birth with the Orion in one of the four internal hangars and you can then enjoy the comfortable amenities and accommodations aboard the Orion for the duration of your cruise.

You can see an early design here:

After about a week and a half to two weeks of cruising, depending on the captains discretion, you will arrive in Martian orbit.

Columbus Day 2034 Wallpaper - 3 Orion Pusher-Plate Ships

You will descend to the surface aboard the Starship that brought you onboard the Orion which will remain in orbit.

Once on the surface you will enjoy the highest of luxuries in our 5 star base camp resort and archeological dig in the caldera of Olympus Mons.

Relax and pamper yourself in a real Martian mud-bath with minerals extracted from ancient Martian lava flows just like in the Peaches video… but on Mars!

For the more adventure seeking earthlings you can set out across the Martian desserts with one of our exploration teams and participate in actual scientific research that will get your name in Martian history books for centuries to come!

And if you’re lucky enough to find a new previously uncatalogued Martian dinosaur fossil, we’ll even let you name it! We can’t let you keep though! 😛

If you elect to stay on the Orion for the entire cruise you’ll enjoy a week of gorgeous multiple daily Martian sunrises and sunsets in orbit, truly an astro-photographers dream!

Though sometimes you will be in for a real treat because occasionally someone will pay to have the Orion deliver or pickup supplies and or crew from their mining operation, in which case you’ll enjoy a free round trip out to the asteroid belt where few humans have ever ventured out, so each cruise where that happens is truly historic!

Also, occasionally someone will pay to have the ship “nudge” a rock of their choice out of the belt on a slow lunar orbital trajectory where it will show up in 30 or 40 years for the sintering and processing facilities on earth’s moon to convert the raw materials into the iPhones and transparent shoes of tomorrow.

I hear the return on those investments easily beat the stock market and even government bonds but you have to wait 30 – 40 years for the mineral rights to mature. Then again, you probably could speculate and sell someone your mineral rights for an early payout of a “lump sum” of the eventual estimated value of the raw materials but… now we’ve digressed again!

So after 1 week of surface fun in the Martian sun you will once again ascend to orbit in your designated Starship and board the Orion for the journey home, filled with a lifetime of adventure and stories to tell everyone back home!

That’s about as far as I feel comfortable revealing my plans for the Orion Cruise line to Mars without my lawyer present and a signed NDA… well, at least for now anyway. 😉 😛

Anyway, I should probably just wrap this up so in summary… don’t loot and be a good person… um… and petition your governments not to nuke each other!

But also… to create a regulatory framework that enables me to build my nuclear powered space cruise line because it’s the only real way we will ever actually be able to get off this rock and survive and in the event that you earthlings start firing nukes at one another I don’t want to be anywhere near this gravity well!

And… don’t let them say that space based nuclear propulsion is M.A.D. destabilizing because it isn’t!

They already have nuclear submarines and can annihilate all of us whenever they want so it makes no difference if properly trained and licensed civilians use atomic propulsion off world!

Further, I believe that a peaceful industrial and commercial (perhaps even internationally operated) atomically powered cruise ship in the sky… well, that’s just something we can all get behind!

Roll the end credits!

Hope you enjoyed the art and my chaotic-useless nonsensical ramblings, if so I have a Patreon.

100% of the funds will go to helping get humanity off this planet, er… you know what I mean!

Much Love,


The Contrast-inator

Let’s keep things simple, you want to read a post and conveniently I’ve written one for you!

I’ll spare everyone my recent fascinations with macabre subjects and opt to get right to the topic of the day!

Anyway, as the Jane Goodall of bots I’ve learned a little about how to communicate with them using rules they understand and today I’m going to show you how you make rules that get a bot to understand and do, what you want it to do.

But… before we get into that, here’s the wallpaper!

The Contrast-inator Bot Wallpaper

Why Contrast-inator? Well, as far as the “-inator” part is concerned let’s just say I enjoy Phineas and Ferb. 😛

As for the “Contrast” part, we’ll get into that next but the big eyes of this bot are important. 😛

Also… it doesn’t need hands, arms, legs or feet to do it’s job so I didn’t 3D print the parts, waste not want not! 😉 😛

Contrast-inator 1920x1080 Wallpaper
Contrast-inator 1920×1080 Wallpaper

The Contrast-inator

So, recently I received a few comments that amount to something along the lines of “How do you decide on the ‘rules’ for training your neural network?”.

My response is basically if you can “phrase” a training rule in a way the bot can understand, then you can make the rules to be whatever you want/need them to be.

And the thing we’re going to try to teach the bot today to help us explore this topic is… given an input value, tell us if the value falls to the “left” or to the “right” of an “anchor point”.

That sounds more complicated than it really is and I intend this tutorial to be for beginners so let me try to simplify my description… uh… so, think of a gray-scale gradient of black to white.

Imagine a red line in the center of the gradient.

Now, given some gray-scale color e.g. RGB(102, 102, 102) as “input”, how can we train a bot to tell us if the color falls to the left or to the right of the red line… like this:

Is this pixel brighter or darker than the red line?
Is this pixel brighter or darker than the red line?

I know that might seem complicated while at the same time also seem kind of useless… I assure you that neither stipulated condition is true.

In regard to usefulness, just as a hypothetical example… a neural network like this could act as the “brain” of a “line follower” robot but instead of reading the voltages directly from a photodiode and then using if/else to direct motors, you could pass the diode voltages to the neural network and let it decide which motor to move via an H-Bridge / Digital Potentiometer.

An Arduino would need a WiFi Shield for something like that to work  but a line follower built on something like a Raspberry Pi could run it’s neural network “brain” locally.

Which brings us back to complexity and how we build a rule set to teach our Contrast-inator bot to tell us if a pixel is brighter or darker than the color where the red line is.

Forget about what I said about the hypothetical line-follower robot, the Arduino and the Raspberry Pi… it’s more complicated than I want this post to be and it’s just an example anyway. 😛

Let’s start over…

We know that any answers our bot gives us (the output) will look like a “floating point” number (a decimal value e.g. 0.01) and basically our input will also be a floating point number too.

With this in mind we can start to imagine that our training data inputs and the associated outputs will look like a series of numbers.

But what will the numbers mean and how can we know if the bot is correct?

Well, let’s step back again and think about what rules we need to teach the bot first before we even worry about encoding the training data for the bot.

What rules might a human need if we had to describe the process to someone for them to be able to do it?

Plain English Rules For the Bot to Learn:

  1. If the color falls to the left of the red line then it can be described as “Darker”.
  2. If the color is neither to the left or the right of the red line, then we can say the color is directly in the center. We might describe this position or color state as being “Neutral” in relation to the red line.
  3. If the color falls to the right of the red line then it can be described as “Brighter”.

Given these three super easy rules I believe most, if not all of you should be able to answer if a color falls to the left or the right of the red line with a high degree of accuracy.

However, your accuracy would diminish the closer the color is to the red line in the center because you are intuitively guessing and the difference between the colors that surround either side of the center of the color gradient all look like very similar grays, e.g. they have a low contrast between them.

The colors at the ends of the color gradient (black/left and white/right) have the largest contrast between them and are the easiest to determine which side they fall on.

With our rules layed out in English, let’s return to the idea of the training data (our rules) which consists of numbers and how we will represent our three rules as numbers.

I’ve already said the inputs and outputs will be floating point numbers but what we haven’t covered yet is the fact that our numbers are “signed” (have negative and positive polarities to it’s range) with our range being -1.00 to 1.00.

This means that Black can be encoded as: -1.00 or -1 for simplicity with the decimal being implied.

This also means that White can be encoded as: 1.00 or 1, also with the decimal being implied.

Given our signed float range and a few colors converted to a float within our range, we can easily determine algorithmically if a color is on the left or right of the red line even if it’s very close to the center with 100% accuracy (better than human capability) simply be checking if it is greater than or less than zero.

Meaning… a neural network is NOT needed to accomplish this task, but… that’s not the point! 😛

Our goal is to teach a neural network to do this nonetheless because it is a simple problem and the rules (training data) are simple enough that a beginner should be able to understand how they are derived if they exert even a modicum of effort!

Here’s what that looks like:

Example Colors to Float Range Input
Example Colors to Float Range Input

Notice that the first two colors are to the left of zero (darker) because they are negative and the third color is far to the right (much lighter) because it is closer to 1 than 0.

Color R, G, B As Float Side Meaning
42, 42, 42 -0.66797385620915 Left Darker
102, 102, 102 -0.19738562091503 Left Darker
221, 221, 221 0.7359477124183 Right Lighter

Fascinating… but… how are you converting the colors to floats?

Okay look, this won’t be on the mid-term test and it’s in no way actually necessary to go over because we won’t need to do this to train the bot but since you are curious here’s a function you can use to convert actual RGB & Grayscale colors to a float in the right range:

How to convert a color to a signed float between -1.00 to 1.00:

// Input a number between 0 and $max and get a number inside
// a range of -1 to 1
function ConvertColorToInputFloatRange($color_int_value, $max = 255){
    return ((($color_int_value - -1) * (1 - -1)) / ($max - 0)) + -1;

// RGB Color to range of -1 to 1
$R = 42;
$G = 42;
$B = 42;
echo  "Pixel_RGB($R,$G,$B) = " . ConvertColorToInputFloatRange($R+$G+$B, 255+255+255) . PHP_EOL;

// RGB to Gray-scale to range of -1 to 1
$gray = ($R+$G+$B) / 3;
echo  "Pixel_Grayscale($gray) = " . ConvertColorToInputFloatRange($gray, 255) . PHP_EOL;

// RGB Color to range of -1 to 1
$R = 102;
$G = 102;
$B = 102;
echo  "Pixel_RGB($R,$G,$B) = " . ConvertColorToInputFloatRange($R+$G+$B, 255+255+255) . PHP_EOL;

// RGB Color to range of -1 to 1
$R = 221;
$G = 221;
$B = 221;
echo  "Pixel_RGB($R,$G,$B) = " . ConvertColorToInputFloatRange($R+$G+$B, 255+255+255) . PHP_EOL;


Pixel_RGB(42,42,42) = -0.66797385620915
Pixel_Grayscale(42) = -0.66274509803922
Pixel_RGB(102,102,102) = -0.19738562091503
Pixel_RGB(221,221,221) = 0.7359477124183


Now that you all at least believe it’s possible to convert a color to a float between -1 & 1 forget all about this function because we won’t need it to train the bot! 😛

Then… how do we teach a neural network to do this?

Well, let’s talk about what the output for this bot looks like before we get back to creating the training data from our rules.

We know that our output is a float, and even though it is possible to teach the neural network to do this with a single output, I find I get better results from the neural network using two outputs.

This is because it’s actually very easy for the bot to understand we want it to detect if the input value (color) is slightly offset to the left or right of the red line but it’s not the easiest thing for it to determine exactly where the center is (just like you but it’s still better at it) so our margin of error (the number of colors it can’t tell are on the right or left… e.g. the colors it will say are neutral) tends to be slightly larger if we only use a single output float.

What that means is:

  1. Our Input looks like: float
  2. Our output looks like: float_left float_right

With that in mind we have now covered everything necessary to begin converting our rules to training data.

Remember, that the decimals are implied!

Lets start by teaching it what the darker colors on the left look like:

Black RGB(0,0,0), is the farthest most color to the left and is encoded as -1 and with two output values representing Left & Right we get a rule that looks like this:

Learn “Darker” colors (floats closest to -1.00) are on the left:

The output value on the left is set to 1 which means negative values more strongly polarize to the left and this is reflected on the left output being 1.00 and the right output value being -1.00.

1 -1

Learn “Neutral” colors (floats closest to 0.00) are near the center:

I’m using -1.00 & -1.00 to mean that an input of exactly zero is not strongly polarized to either side of the gradient with zero (the exact center – whatever color that is) is not strongly polarizing (-1.00, -1.00) in either direction.

The goal here is that this will help it learn values near zero are are not strongly polarized and zero isn’t polarized at all.

-1 -1

Learn “Brighter” colors (floats closest to 1.00) are on the right:

The output value on the right is set to 1 which means positive values more strongly polarize to the right and this is reflected by the right output being 1.00 and the left output value being -1.00.

-1 1


FANN (The library we’re using for training the neural network) requires a header is stored with the training data so it can read the training data and that looks like:

Number_Of_Training_Examples Number_Of_Inputs Number_Of_Outputs

*Note the spaces between values

So, combined our training data file looks like this:

3 1 2
1 -1
-1 -1
-1 1

And that’s it, we’ve converted our rules to training data so… lets train the bot!


You will need FANN installed to train this bot.

Follow this tutorial to learn how to install FANN.


$num_input = 1;
$num_output = 2;
$num_layers = 3;
$num_neurons_hidden = 2;
$desired_error = 0.000001;
$max_epochs = 500000;
$epochs_between_reports = 1000;

$ann = fann_create_standard($num_layers, $num_input, $num_neurons_hidden, $num_output);

if ($ann) {
    fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
    fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);

    $filename = dirname(__FILE__) . "/";
    if (fann_train_on_file($ann, $filename, $max_epochs, $epochs_between_reports, $desired_error))
        echo 'Contrastinator trained.' . PHP_EOL;

    if (fann_save($ann, dirname(__FILE__) . "/"))
        echo ' saved.' . PHP_EOL;


It won’t take very long for the bot to learn our rules.

Once you see the message “Contrastinator trained.” you are ready to test your new bot!


This code will test Contrastinator using input values is has not trained on but because we designed good rules, the bot is able to answer correctly even when it never actually saw most of the test values, it did see -1, 0 and 1 though along with their “ideal” outputs.

Notice, the $brighter and $darker variables are the the output of the neural network.

The $evaluation variable is a test for our benefit and does not modify or affect the output/results of the bot’s answers and the answers are correct even if we don’t do the evaluation, it just helps us confirm/interpret programmatically what the bot’s answers mean.

$train_file = (dirname(__FILE__) . "/");
if (!is_file($train_file))
    die(" has not been created! Please run TrainContrastinator.php to generate it" . PHP_EOL);

$ann = fann_create_from_file($train_file);
if ($ann) {
    foreach(range(-1, 1, 0.1) as $test_input_value){
        $input = array($test_input_value);
        $result = fann_run($ann, $input);
        $darker = $result[0];
        $brighter = $result[1];
        if($brighter < 0 && $darker < 0){
            $evaluation = 'Neutral';
        elseif($brighter > $darker){
            $evaluation = 'Brighter';
        elseif($brighter < $darker){
            $evaluation = 'Darker';
        echo 'Contrastinator(' . $input[0] . ") -> [$darker, $brighter] - Input is $evaluation" . PHP_EOL; 
} else {
    die("Invalid file format" . PHP_EOL);


Notice that it has no trouble detecting that an input of zero (0.00) is neutral and that it also correctly determines which side a color (represented by a float) falls on in relation to the center zero value.

Contrastinator(-1) -> [1, -1] - Input is Darker
Contrastinator(-0.9) -> [1, -1] - Input is Darker
Contrastinator(-0.8) -> [1, -1] - Input is Darker
Contrastinator(-0.7) -> [1, -1] - Input is Darker
Contrastinator(-0.6) -> [1, -1] - Input is Darker
Contrastinator(-0.5) -> [1, -1] - Input is Darker
Contrastinator(-0.4) -> [1, -1] - Input is Darker
Contrastinator(-0.3) -> [1, -1] - Input is Darker
Contrastinator(-0.2) -> [1, -1] - Input is Darker
Contrastinator(-0.1) -> [1, -1] - Input is Darker
Contrastinator(0) -> [-0.9997798204422, -0.99950748682022] - Input is Neutral
Contrastinator(0.1) -> [-1, 0.9995544552803] - Input is Brighter
Contrastinator(0.2) -> [-1, 0.99954569339752] - Input is Brighter
Contrastinator(0.3) -> [-1, 0.99953877925873] - Input is Brighter
Contrastinator(0.4) -> [-1, 0.9995334148407] - Input is Brighter
Contrastinator(0.5) -> [-1, 0.99952918291092] - Input is Brighter
Contrastinator(0.6) -> [-1, 0.9995259642601] - Input is Brighter
Contrastinator(0.7) -> [-1, 0.99952346086502] - Input is Brighter
Contrastinator(0.8) -> [-1, 0.99952149391174] - Input is Brighter
Contrastinator(0.9) -> [-1, 0.99952000379562] - Input is Brighter
Contrastinator(1) -> [-1, 0.99951887130737] - Input is Brighter

Contrastinator on Github

As with all my public code, you can download a copy of this project for free on my GitHub profile.

GitHub: Contrastinator

I hope this helps you better understand how create your own training data sets and as always, if you have any questions or trouble understanding any part of this post, please leave a comment and I would be happy to try and help you.

If you enjoy my content and or tutorials like this one, consider supporting me on Patreon for as little as $1 a month and cancel any time!

It’s not required but it helps me out.

But if all you can do is Like, Share, Comment and Subscribe, well… that’s cool too!

Much Love,

Dear Spammer Creep

Good golly Miss Molly,  it’s Friday,  and I haven’t written a thing, so I guess I probably should! 😛

What should we talk about? Hmmm….Oh, Great Gosh A’ Mighty that’s right! Can you believe it?

Little “The Innovator” Richard has rocked his last roll!

Which if I’m being honest, I wasn’t actually aware he was still around so this comes as a particular (albeit sad) surprise to me!

And, speaking of recent surprising deaths… did you hear Roy… Orbison? no wait… Horn, as in, the magicians Siegfried (Fischbacher) & Roy (Horn)… yeah that Roy, well he died recently too!

Of the Corona Covid-19 virus no less!

Yep… this post is so totally not going to be read by anyone because I mention death and “the virus” before I even reached one hundred words and I can practically guarantee this post isn’t getting any better from here on out!

Oh well! 😛

Anyway, unlike Little Richard where I wrongfully just assumed he was already among the life challenged…

Jokes aside I swear I’m not ageist! Age begets wisdom!

It’s just that I seem to recall that more than a few years ago Mr. Horn was unfortunately attacked by one of his own tigers and I guess I just thought… well, I thought he had died from that attack?

Now, I’m sure some of you are thinking that this might be a clear case of some sort of “Mandela Effect” (the old Berenstein vs Berenstain false memory debate) where I crossed over from an alternate branching dimension due to “quantum instability” or something and I’m simply remembering the events correctly, but from my own timeline and… while I cannot discount that outright, I’d say that is probably the least likely scenario and more likely I am simply mistaken! 😉

Though I’m sure being pandemically Tove Lo “day drunk into the night” back into the day… causes oneself to ponder over such nonsensical things….

Oh, but I’m not judging and I wont hold that against you!

In any case, I guess what really surprised me the most was that Mr. Horn wasn’t eaten by his pets!

None the less, I choose to remember Roy’s death in the most epic way possible!

Clearly, he was practicing the worlds most mind-freaking “disappearing act” with his tigers Chris and Angel and instead of the tigers disappearing that last time… Roy did! 😦

Um… you know… just like that “Tiger Kings” ex girlfriend/manager’s… uh… husband? (or… something)


I’m sorry, I couldn’t follow that whole thing and even now… I’m not really sure what exactly the “Tiger King” thing was about and further still… I’m pretty sure I don’t really care to know either! 😛

So… our last but not least “untimely gameover” for this week is Frank Costanza (the originator of my anti-creed’s non-religious winter holiday festival er… I mean Festivus 😛 ) better known as “Jerry Stiller” who died of “natural causes” (argue all you want but I refuse to believe death is anybodies “natural” state! It’s a disease that needs to be cured!) and if I had only known that my not observing the “Airing of Grievances” this past winter would end like this I would have, out of love for you all, insulted each and every one of you! 😦

On a happier note, as I predicted Betty White is still alive and kicking, which frankly… continues to raise some suspicions about her possibly being an immortal interdimensional being sent here to observe and study us!

When asked for comment about her secret to longevity, Mrs. White responded:

“You didn’t see this…”

Okay look, I’m sorry for my mildly morbid death fixation that I’ve had lately… fingers crossed it’s only a phase and I’m sure it’s just something a psychiatrist would charge me for but since I’m supposed to be social distancing… maybe I’ll just bottle it all up inside and cook something really special this Halloween!

In any case, I get a lot of spam and some of it is special to me… which is what today’s post and wallpaper is about!

My Dearest Spammer Creep…

So here’s this week’s edition of “Joy Plays with Crayons” wallpaper/image set.

It depicts me (obviously?) and a very special spammer / cyber stalker of mine… you know who you are!

The Painted

Dear Spammer Creep - Color
Dear Spammer Creep – Color

The Sketch

Dear Spammer Creep - Sketch
Dear Spammer Creep – Sketch

The Half Color

Dear Spammer Creep - Half Color
Dear Spammer Creep – Half Color

The Pretentious & Spooky Black and White

Dear Spammer Creep - BW
Dear Spammer Creep – BW

Leave a comment and let me know which is your favorite or even least hated, those among you who are indifferent shall forever hold your peace!

In any case, there is a very special someone in the audience and I call them my dear spammer creep.

I know you are reading because well… we both know you read all of my posts, though it’s been a while since I’ve even acknowledged your existence or directly interacted with you through your seemingly infinite number of “burner”, “sockpuppet” accounts.

You’d change your fake name, phone number, email etc… but I always knew it was you and play along for my amusements sake.

It’s one of the things I loved about you actually, you were always so curious about me in the hopes you’d get your dirty hands on my sensitive… personal information!

But, It’s also what made your spam, out of all the spam I receive… special and I receive loads of spam, my dear spammer creep!

Like, that one time… when you said Microsoft owed me a hefty refund, that was entertaining!

That time you claimed to be a developer who wanted me to sign your NDA so you could get my home address, presumably to dox or SWAT me? Super thrilled about that one sweetie!

Or that time you somehow managed to track down my cellphone number and fill my text message inbox with dick pics… so funny! Although, I could tell it wasn’t your dick because obviously it could be photographed without the use of a microscope!

Anyway, it’s been months since you’ve even really tried to put any creativity or imagination into scamming me (not that I’m really complaining) and although I’m sure the pandemic has something to do with it… if I’m being open and honest, I know that’s how we both prefer our relationship, I haven’t been feeling the warmth and love from your scams since even before the pandemic!

You used to send me such spammatic poetry such that on several occasions I was truly moved by it’s genuine beauty and was tempted to click your spear phishing attempts using locked virtual machines and my own “puppet” accounts out of appreciation for the artistry!

But your spam grew cold, formulaic and distant from me, like you’ve moved on… like… you want to spam other people, and yet you continue to string me along like I’m just another mark on your mailing list or something!

I need to know my dearest spammer creep… and please for just this once… be honest with me… Are you trying to scam other people too?

At this point, I’m not sure it even matters anymore!

Look, scam whoever you want! I think we may just need some time apart!!

The truth is, I never loved how forceful you were with me, It’s like… you didn’t respect me as your victim!

Certainly you must know that some geeky women like to be wooed a little before being scammed into byteing on your short URL and sweetie, your URL’s were always the shortest!

An no, it wasn’t because your URL was in the pool!

I shudder to think of the kind of infections you’d upload to my personal inbox if I just clicked your download linkz!

You know what actually?

Come to think about it, going forward my dear spammer, even though I’m dying a little inside right now saying this… don’t ever spam me again!

Looney Tunes Nothing To See Here GIF - Find & Share on GIPHY

If you enjoy my content, consider supporting me on Patreon for as little as $1 a month and cancel any time!

It’s not required but it helps me out.

But if all you can do is Like, Share, Comment and Subscribe, well… that’s cool too!

Much Love,

Dead Astronaut Screams Into Space

So… I know I owe the pink empress post or two and I will do them… but today I’m just going to publish some artwork because that’s what I felt like doing.

Today’s picture is called “Dead Astronaut Screams Into Space”.

Dead Astronaut Screams Into Space
Dead Astronaut Screams Into Space

Sorry, Bob Ross this ain’t! 😛

Now, you might be wondering how can a “dead” astronaut scream into space?

It’s sort of… posthumously, or an after the fact recognition of the eventual unfortunate fate of the astronaut who is depicted screaming but… well, where it goes from there everybody already knows.

Think of it like the metaphorical phrase “deadman walking”, it speaks about impending and unavoidable outcomes.

The astronaut is shown screaming demonstrating humanities struggle and unwillingness to just give up and be quiet in the face of certain failure.

The image depicts the astronaut overlaid a large shadowed ship with it’s thruster in foreground.

In the background is a planet with the sun peeking over the horizon (I swear it’s there) giving the trailing explosions in orbit an almost ghostly quality as the glow completely fades away from view leaving the sun to rise.

Moving your eyes over the image is supposed to be like moving forward and backward through time.. It’s an experiment and it’s meant to be like a mini still movie. 😛

I guess I would say I was partially inspired by the lyrics from Steam Powered Giraffe’s song, Fire Fire:

“Oh it’s such a shame
Of all the things to go wrong while out in space
Fire fire
Burns much brighter
When oxygen
Is the supplier
And fire fire
Has killed his desire
To not be cold
As he expires
Burning in space”

~Steam Powered Giraffe – Fire Fire

If you like my art, code or anything else I do, then please consider supporting me on Patreon for as little as $1 a month and cancel any time!

But if all you can do is, Like, Share, Comment and Subscribe, well… that’s cool too!

Much Love,


OCR 2 – The MNIST Database

I know I probably haven’t been posting as frequently as many of you would like or even at my normal quality because… well, like for many of you, this year has just sucked!

Someone I’ve known my whole life died recently, not from the virus though it didn’t help things.

She went in for a “routine” procedure where they needed to use general anesthesia and there were “complications” during the procedure. Something to do with her heart but if I’m being honest, I don’t know all the details at this time.

Also, I’m not sure how by anyone’s definition anything involving anesthesia is routine?

An ambulance was called and she was rushed to the hospital, long story short, despite being otherwise fine when she went in, she never woke up from her coma. 😥

The hospital is/was on lock down like everyone else and so friends and family were unable to visit her before she died.

Her family intends to sue the Dr. for malpractice, personally… I think they should!

To add insult to injury, she was cremated without a funeral due to the whole pandemic social distancing BS that I’m just about ready to tell the government to go fuck itself over! 😦

I’m sorry, do my harsh words offend you? SHE DIED ALONE! That offends me!

Going forward, my advice… any procedure where they need to administer general anesthesia to you… or maybe any procedure at all… make sure it’s in a hospital or hospital adjacent (NOT A CLINIC) because those minutes waiting for an ambulance really do mean your life!

And if your doctor is like, “No worries this is routine… I’ve done this a thousand times”, maybe think carefully before putting your trust in that person.

Yes, we want doctors that are confident in their ability to treat us but make sure that it is confidence and not complacent hubris!

Further, no procedure is truly “routine” and a doctor, of all people, should know that and act accordingly!

“Primum non nocere”

~Hippocrates… (allegedly)

Regardless of the historical veracity of that quote, does the spirit of that principle still not apply?

Look, I’m not saying this to detract from the important life saving work doctors and medical workers do every day, it’s just that this is part of what’s going on in my life right now (and for many of you as well) and I’m sharing because I guess that’s what you do when you have a blog.

Additionally, less close to home, though still another terrible loss, John Horton Conway, notable math hero to geeks and nerds alike died as a result of complications from his contracting the Covid-19 virus. 😦

I’ve previously written a little about Conway’s work in my ancestor simulations series of posts.

Mysterious Game of Life Posts:

But that only scratches the surface of his work and famously Conway’s Game of Life was perhaps his least favorite but most well known work among non-mathematicians and it would both amuse and bug him if I only mentioned his game of life here so I’m not going to list his other accomplishments.

I’ll have a little chuckle off camera on his behalf. 😛

He really was a math genius and you would learn a lot of interesting, not to mention surreal… but I’ve said too much, ideas by reading about his accomplishments, which I encourage you to do!

In any case, people I know and admire need to stop dying because its killing me… not to mention my ratings and readership because I keep talking about it! 😛

I may have a terribly dark sense of humor at times, but going forward I demand strict adherence from all of you to the Oasis Doctrine! 😥

Oh, and speaking of pretentious art…

The OCR 2 Wallpaper

The original OCR didn’t exactly have a wallpaper but I did create an image/logo to go along with the project and its blog posts:

For the reason you might think I made it look like an eye… because it looks like an non-evil Hal 9000! 😛

Also, I like the idea of depicting a robotic eye in relation to AI and neural networks because, even though I am not superstitious in any way, it carries some of the symbology of Illuminati, “The gaze of the Beholder”, “The Eye of Providence”, “The Evil Eye”, The Eye of Horus, The Eye of Ra, Eye of newt and needle… sorry. 😛

In this case, the eye of a robot invokes a sense of literal “Deus ex machina” (God from the machine) and it illustrates some peoples fears of “The Singularity” and of the possibility of an intelligence that is so much greater than our own that it calls in to question our ability to even comprehend it… hmmm… is that too lovecraftian? 😛

Anyway, because I enjoy the thought provoking symbology (maybe it’s just me), I wanted to keep the same concept of the robot eye but update it to look a little less like a simple cartoon to subtly imply it’s a more advanced version of OCR but that it still fundamentally does the same thing, which is most of the reasoning behind this wallpaper.

In any case, I hope you enjoy it.

OCR 2 Wallpaper
OCR 2 Wallpaper

If you’d like the wallpaper with the feature image text here’s that version.

OCR 2 Wallpaper (with text)
OCR 2 Wallpaper (with text)

So I guess having shared a few of the recent tragedies in my personal life and a couple of wallpapers, we should probably get mogating and talk about the point of today’s post!

We’re going to look at doing hand-written number (0-9) Optical Character Recognition using the MNIST database.

OCR 2 – The MNIST Dataset with PHP and FANN

I was recently contacted by a full-stack developer who wanted advice on creating his own OCR system for “stickers on internal vehicles”.

I think he means, some kind of warehouse robots?

He had seen my OCR ANN and seemingly preferred to work with PHP over Python, which if I’m being honest… I can’t exactly argue with!

PHP is C++ for the web and powers like almost 80-90% of the internet so it should come as no surprise to anyone (even though it does) that there are people who want to use it to build bots! 😛

But, if you would rather work with a different language there is a better than decent chance FANN has bindings for it so you should be able to use the ANN’s even if you are not using PHP.

So anyway, he gave me a dollar for my advice through Patreon and we had a brief conversation over messaging where I offered him a few suggestions and walked him through getting started.

Ultimately, because he lacks an AI/ML background and/or a sufficient familiarity with an AI/ML workflow he wasn’t very confident about proceeding so I recommended he follow my existing tutorials which should help him learn the basics of how to proceed.

Now here’s the thing, even among people who like my content and value my efforts, few people are generous enough to give me money for my advice and when they do, I genuinely appreciate it! 🙂

So, as a thank you I want to offer another (more complete) example of how to use a neural network to do OCR.

If he followed my advice, he should be fairly close to being ready for a more complete real world OCR ANN example (assuming he is still reading 😛 ) but if not, his loss is still your gain!

Today’s code implements OCR using the MNIST dataset and I demonstrate a basic form of pooling (though the stride is not adjustable as is) and I show convolutions using the GD image library, image convolution function and include 17 demonstration kernel matrices that you can experiment with, though not all are relevant or necessary for this project.

This is still very basic but everything you need to get started experimenting with OCR is here.

Having said that, in all honesty, to accomplish your goal requires building your own dataset and modifying the code I present here to meet your needs.

Neither are exactly hard but will require significant time and dedication to testing and refining your processes.

Obviously that’s not something I can cover in a single post or even assist you with for only a dollar, but since so few people show me the kindness and consideration you have, at a time of shrinking economies no less, I wanted to offer you this working OCR prototype to help you along your way.

Our Method

1. Download the MNIST dataset (link below, but it’s in the GitHub repo too).

2. Unpack/Export the data from the files to images and labels.

(technically we could even skip the images and go directly to a training file but I think it’s nice to have the images and labels in a human viewable format)

3. Create training and test data from images and labels.

4. Train the network.

5. Test the network.

The MNIST Dataset

MNIST stands for Modified National Institute of Standards and Technology database.

And since I’m still recovering from last nights food poisoning due to the Chicken à la Nauseam we’re just going to use Wikipedia’s introduction to MNIST.

It’s easily as good as anything I could write and doesn’t require me actually write it so…

Wikipedia says:

“It’s a large database of handwritten digits that is commonly used for training various image processing systems.[1][2]”

It also says:

“It was created by “re-mixing” the samples from NIST’s original datasets. The creators felt that since NIST’s training dataset was taken from American Census Bureau employees, while the testing dataset was taken from American high school students, it was not well-suited for machine learning experiments.[5] Furthermore, the black and white images from NIST were normalized to fit into a 28×28 pixel bounding box and anti-aliased, which introduced grayscale levels.[5]”

Here’s 500 pseudo-random MNIST sample images:

I randomly selected 500 1’s, 3’s and 7’s and composited them into this 1337 animation. 😛

500 random 1337 MNIST images.
500 random 1337 MNIST images

Seriously though,  today we will be training a bot to identify which hand-written number (0-9) each 28×28 px image contains and then test the bot using images it hasn’t previously seen.

Our bot will learn using all 60K labeled training images and we’ll test it using the 10,000 labeled test images.

Here’s the wiki article if you would like to learn more about the database.


And as I said above, I’ve included the database in the GitHub repo but you can download it again from the original source if you prefer.

Original MNIST Download:

Continue reading “OCR 2 – The MNIST Database”

Are Makeshift Masks Safe?

Last week I took a “mental day” off from my blog because I was feeling like many of you and I’m not saying that crying is an effective use of my personal reserves of water and electrolytes long term… just that sometimes it just feels really good! 😛

I was able to upload my simulation code that I mentioned in my last post to GitHub so it wasn’t like I got nothing accomplished!

Also, it’s nice to see it was cloned a few times leading me to hope that it is helping people, though we’ll discuss the simulation later in this post. 🙂

In unrelated but relevant news about some “notable playthroughs” that ended in “game overs” in the the last couple weeks.

There comes a time in life when even the gambling mavericks among us knows when to “fold em” and “cash out”, after all the dealin’ is done… sadly we lost both Kenny Rodgers and Bill Withers just ten days apart! 😦

And I know, I know, I know, I…,  I know, I know! Hey, I oughta this leave the young topic alone!

It’s just that, ain’t no sunshine when their gone, only darkness every day… and as the old adage goes “death comes in threes” so, I really started to worry… about Betty White! 😛

Well, that is before I remembered she’s probably immortal and logic willing, will almost certainly outlast us all!

Gallows humor aside, I know a lot of you are here just for the art and maybe a few laughs if I could ever manage to write something funny, so… with that in mind here’s today’s edition of Joy Finger Paints.

Joy Survives Post-Apocalyptia Image Set:

“But.. I’m just here for the code!”


I’ll totally admit that over the years I’ve maybe played a little too much Fallout and 7 Days to Die but I swear I don’t just play apocalyptic games, I just happen to enjoy them! 😛

And… as a stereotypical totally a self-absorbed millennial…

I egotistically had to make a set of post-apocalyptic posters of myself enjoying this spring 2020’s latest in high fashion!

In fact… here’s a few “geek sneak peeks” from my upcoming spring/summer lookbook.

The whole collection is made from tyvek and acetate for his or her pleasure!

Note the zombie resistant face shield for that extra level of protection when you can’t avoid adventuring through crowds of infected!

These thumbnails link to my Patreon where you can view and download them for free.

Each fabulous look depicts a variety of different scenarios that make up the “post-apocalyptic” genera.

You can tell they are different because the colors change! 😛

Pretty sure one of them could take place in the post apocalyptic  Rick and Morty episode Rickmancing the Stone.

Hmmm… now that I think about it though, the images could depict the various stages of my descent (not the game, though oddly in that case a virus is still involved) into the clutches of the zombie virus… Oh wow! I just realized that I am one of the Hazmat Zombies in 7 Days to Die… huh, looks like I made it between 5 to 8 days depending on if you include the blue pix! 😛



Now if you are wondering why I only have the thumbnails here instead of the full images, it’s basically because Patreon offers me unlimited storage (more or less)  whereas I have a finite storage amount on my blog and I feel the images have a certain charm close up, so  I didn’t resize them down from 1920 x 2300 px (~2.8 MB each).

Which is your favorite? Leave a comment and let me know.

Now to more consequential affairs!

An ⍺-𝚶, “Alpha” to “Omicron”… April Adage

My atrocious affectations aside, there are ardent appeals for appropriations of PPE because no matter how assiduous Alan Alda’s auroral attempts are to agilely assuage the afflicted and arrest the arduous apocalyptic antecedent (#AnnihilateTheArc), the aforesaid aftermath is antipodal to an aspired aftermost, although… assorted avowal assertions are advanced that absent the accoutrements, they will accomplish our ambition to attack, anull, abolish and abrogate the affliction!

As much, according to alleged accounts, all anterior aid attendants are apparently anticipating the assumptive acquisition of the ailment and await apprehensively the AbEnd of, albeit abide, the advancing abstinence of abatement appliance, articles and apparatus.

Alright, all appurtenances advised… I’m not saying that’s going to happen and it probably wont this time (most places, they did say 3M had to produce for domestic use first and besides, weren’t some of those claims of lack of PPE debunked? Not saying all were but… perhaps it’s not as bad as some claims have suggested?), but that is enough of a reason to treat this and all future pandemics seriously!

Dang, er… I mean, abhorrence! I should have aforesaid “accept and administer the all-over-anguish as acute admonishment against all approaching adversity!” 😛

Absolutely astonishing! I acknowledge and I am aware that aloof arrogant arguments are audacious abuses of my alienated admirers allotment of time in the annals of anthology who are altogether accustomed to an assured amount of assertive acumen on my account, as such… I am now going to abandon my “a” aligned address and antics in accommodation of alacrity… admitting as much that, arguably I could act abundantly to advance that aesthetic if my appetite allowed me the agency and abandon to be adrift.

Okay, ancillary absurdity aside… 😛

Are Makeshift Masks… Safe?

Whether you are struggling to escape Raccoon City and face countless hoards of infected or just need to get through the pandemic du jour you may find the need to rely on makeshift personal protective equipment like cloth masks to ensure your personal safety.

Also, everyone seems to forget about eye covering but that’s out of the scope of today’s discussion. 😛

And… provided I didn’t delete any words prior to this point (added a little padding here and there) I should be just over one thousand words meaning that the censorship bot has probably stopped eavesdropping and left the room and we can now speak freely.

How can we be sure (more or less) that when we’re told to use fabric masks that it isn’t just a way for “the authorities” to control public fear?

Quite honestly, I’ve seen some terribly half baked recommendations such as “just cover your mouth and nose with a bandana or t-shirt”, which if only a single layer, I can basically prove offers almost no protection to you!

But like me you might also be asking… what about my Uptown Girls “sheets of Egyptian cotton”, would they be better than a t-shirt?

What if we used multiple layers, would that be better (it is) and if so, could we figure out how many layers would (more or less) provide “sufficient” protection?

Well, I could rely on my thousands of adoring Patrons to fund real world materials safety research but I feel like their hard earned cash is best spent supporting my work in other ways!

Besides… the obvious simple solution is to build a simulation! 😛

Continue reading “Are Makeshift Masks Safe?”

Blog at

Up ↑

%d bloggers like this: