I Have No Mouth, And I Must Scream

Alright, friends and family, I’m over this. I’ve remained really quiet and patient about the strange dumpster fire that has become the politics of the United States for some time, namely to avoid any stressful discourse with those who tow a much different political line than I do. But I’ve had it. I’m really, really over all this, so I’m posting my perspective here so you can choose to follow or unfollow as you wish. Please do so with extreme prejudice.

A little background here. I’m a Navy veteran. My dad is an Air Force veteran. My grandparents and great-grandparents are are a mix of Navy, Army, and Coast Guard veterans. In fact, I’m darn near “Lieutenant Dan” status. My family has been in America for so long, we’ve fought in pretty much every war, going back to the American Revolution. Yep, I have ancestors buried in Confederate cemeteries throughout the South. I’d tell you where, but lots of folks have already kicked over those headstones. Vandals. It wasn’t political, I don’t think. I consider myself a Southerner, and I was once proud of the “stars and bars”. “Heritage not Hate”. I absolutely subscribed to that. But that was long before groups of very narrow minded idiots decided to use it for propaganda purposes, and never understood one damn thing about what Southern heritage meant.

So, now on to this whole NFL-players-kneeling deal.

If you think for one damn second that I, as 17 year old wet-behind-the-ears kid, signed my name on the enlistment papers, suited up, and gave Uncle Sam a blank check with my life on it, just so some rich sports guys, few if any who served a day in the military, could just kneel while the National Anthem was played…

Well, you’d be right.

See, this country was built on political dissent and discourse. Evelyn Beatrice Hall once said, “I disapprove of what you say, but I will defend to the death your right to say it.” It was falsely attributed to Voltaire, because she was a woman writing in the time before women could vote. Writing in a time when blacks couldn’t sit at the same lunch counter as whites. Writing in a time before we locked Japanese in internment camps. I absolutely agree with her, in every imaginable way. It is a principle for which America did, and should stand. We are a nation of those who stand up for what we believe in.

Kneeling to illustrate that one group of people feels injustice, in this day and age, in no way is deleterious of the courage and sacrifice of our veterans. Yes, those athletes are wealthy, but who better to stand up and fight for a group of have-nots? They have a massive platform, and I suggest we listen to them, debate with them, converse with them, and ultimately, seek to understand them.

America, to me, is the shining hope of freedom, equality, justice, truth, and peace. I’ll throw science in there too, because we have made some amazing things. Look at the visionaries we have seen throughout the years who have contributed to our scientific prowess. Men like Tesla, Musk, Einstein; In case you noticed, I named immigrant visionaries on purpose.  That vision is what I believe in, what I fought for, and what I like to think my forefathers fought for. If some men, who represent a great and diverse cultural cross-section of America, playing on a sports field, kneeling before an anthem, somehow offends your thin-skinned sensibilities, maybe YOU are the one in the wrong country, not them.

The flag is sacred, to me, yes. It’s important as a symbol of the freedoms that America purports to uphold. But seems like most of you have forgotten, so for those that are unfamiliar with Title 4 of the USC (and we military guys love our regs), remember this: “The flag should not be used as “wearing apparel, bedding, or drapery”, or “for covering a speaker’s desk, draping a platform, or for any decoration in general (exception for coffins). The flag should never be used for any advertising purpose. It should not be embroidered, printed, or otherwise impressed on such articles as cushions, handkerchiefs, napkins, boxes, or anything intended to be discarded after temporary use. The flag should never have any mark, insignia, letter, word, number, figure, or drawing of any kind placed on it or attached to it.” (Frankly, this means you, Blue Lives Matter folks).

And in case you’re wondering about the legal precedent about kneeling or saluting flags and anthems? I suggest you read the 1943 Supreme Court decision (interestingly brought on religious bases) regarding whether or not any American citizen is required to pledge or stand for an anthem:

We are in extraordinary times, folks. Disasters befall our friends and family like never before. A nuclear-armed country is emerging that would love nothing more than to eradicate American values from the face of the earth. Famine and death spread not only through countries we’ve long forgotten, but in countries that are close to our hearts, countries that are a part of America; I mourn for Puerto Rico, a country very close to my Seabee heart. I worry for friends that have pre-existing conditions that might lose healthcare. Or friends that have kids that might be yanked out of America and deported to countries they may never have known.

Ok, ok, yes, I covered a lot of issues when I only meant to talk about NFL players kneeling. But we have a Commander in Chief right now who is more concerned with uninviting people from the White House than he is with world issues. Southerners, he has DUPED you. This is a classic New York shyster whose only claim to fame is real estate, pageants, and game shows. Yeah, I get it, you hated Hillary, fine, me too, but honestly, you can stop supporting this asshole anytime you like. Admit your mistake. Can we all agree that he called a war hero “not a war hero because I don’t like people who get captured” while serving in boarding school that “basically felt like I was in the military” and getting five, FIVE, deferrments from Vietman because of a bone spur (while playing varsity tennis). It’s ok, he’s a moron, and it’s ok if you voted for him. He doesn’t love the military, he uses them, and he will send your children to die so his stocks nudge up, or so he panders to his base.

So talk, folks. Stop towing the line and formulate your own opinions, hopefully considering opinions that are not your own. I never grew up in a black neighborhood. I never had to worry about a meal. Sure, I was bullied, like most kids, but I never worried about anyone pulling a gun on me in middle school. Have you? Maybe reach across that aisle.

“You never really understand a person until you consider things from his point of view, until you climb inside of his skin and walk around in it.”

– Atticus Finch, To Kill A Mockingbird, Harper Lee

Form and Function

I finally completed the initial design of the new bot. Yes, it took a while! I opted to design all of the parts to my own specifications myself, rather than utilizing any existing models or plans, so there was somewhat of a learning curve to overcome. On top of that, with my new “treaded” design, I wanted to design the interlocking tank treads myself, so they could be printed and simply snapped together. No easy task!

The completed design of the “Tank Bot” without treads attached.

The final design consists of only 12 parts that require printing, and most are of a flat and simple enough design that they are easily accessible to beginners. The primary parts are:

  • Turret
  • Turret motor
  • Main body
  • Left and right drive motors
  • Chassis
  • Drive wheels (6x)
  • Tread links (32x)

By far the most tedious part is printing out all 32 tread links and locking them together to form two 16-link chains, but the rest is fairly straightforward.

Detail of interlocking treads with a drive wheel in the background (for scale)

There is ample room in the main body for all of the components that I wanted to use:

  • Edison board
    • Wifi
    • Bluetooth
    • HDMI out
  • 720p digital camera
  • Lithium ion battery pack
  • 3 motors
  • GPIO board

With all of the “guts” inside there should be room for expansion if so desired. Additionally, I created two openings in the back of the bot for an HDMI and a Micro-USB receiver. This allows the maker to fully assemble the bot and still be able to charge and connect a monitor to it for programming (Bluetooth keyboard can be added wirelessly).

Blown apart view showing internal motor structure and interior separators.

The next step is the printing!

Pale White Houses in Rain

He pressed his hand to the window, watching as icy rivulets of rain carved impotently at the glass, trailing down from the skies, destined for the dingy gutters below. The pane was cool, vibrating with a gentle pulse that synchronized with the flow of the water. It had been raining for three days in a row and he could not be more happy, or more miserable, about the sum of the experience. These days his core nearly always ached for gloomy weather, like an addict seeking the next surge of dopamine. Sunlight gave him no inspiration; only the thick, oppressing gloom called to him, wailing like a Siren through the lonely days and nights. Everything that surrounded him reflected shades of gray; the dim paint in his workspace, the pregnant skies outside, even the dusty light that filtered through the grainy glass and sprayed onto the distressed wooden floor like a wistful sigh.

He had been stranded here of his own volition. Mutineed by a life that had seen him drawn tightly with lines, cast adrift, and finally marooned on an island of his own design. His failures had been absolute, and he reveled within the darkness, his smile a ghostly memory of a past that was never his to control in the first place. It was a curse he both loved and loathed, but one he cared not to remedy. This dark space, this cloistered house, this broken staircase, this ambient drip-drip-drip of a broken faucet were near perfect companions to the dark gray hopelessness that he wore like a pale cloak. He had shrugged into it years ago, and now wore it like a favorite pair of jeans.

Standing, he strode across the vast empty space of his quarters. When a wooden floorboard squeaked he stopped, still as an antelope, then slowly rocking forward and backward on the ball of his foot, allowing the board to squeak in a tortured rhythm. He repeated until the sound reminded him of the taut lines of a docked boat straining against the rise and fall of the seas. He closed his eyes and cast his head back, breathing deeply through his nostrils, straining for a scent of the sea air. It never came, stifled instead by the musty smell of old plaster and rotting wood.

“Take me to the sea, again, someday,” he whispered quietly, his head still held back and his eyes closed.

He slowly opened his eyes as the moldy, cracked paint in the ceiling swam into focus.

As he released his breath in a long, focused effort, he caught it sharply as he was yanked back into focus by a crisp knock at his front door.

He stopped breathing entirely for a moment, staring at the door, daring it to knock again.

The knock came again, with even more alacrity.

He trod carefully over toward the blackened oaken panel, his bare feet plodding almost silently on the wooden floor. A burst of rain immersed the sides of the picture windows, clawing to get in.

He placed a tremulous hand on the bronze knob. The patina dulled the door pull greatly, but it felt ice cold in his right hand, its oblong form sinking gently into his palm. His breath shortened, and his heart seemed to take a different place in his chest altogether.

“Go. If you want to go,” he whispered, pressing his face to the door.

The sharp knock came again, reverberating through the wood as if a shillelagh cracking him on the cheekbone. His arm hairs pricked, and he thrust himself backward and twisted the knob hard, yanking the door back, his face a wretched mask of anger as he started into oblivion.

A wash of grainy white light burst into his gloom, seeming to push the door off its hinges. The slim figure silhouetted in the doorway was bathed in a blue glow, her essence already creeping in through the doors. Tendrils of vapor so much like fingers wrapped her lithe frame, creeping sinuously through the open portal and finding their way, like a lost soul, into his cloister.

He shoved his palms to his face, ushering back the brilliant light, shielding his eyes from the bright glow. He took a startled step backward, his feet scraping callously against the wooden floor. The misty tendrils crept inward and the figure took inside, the vaporous smoke flinging the door shut behind her as she did.

The darkness of his own space pushed back against her, and a balance was soon reached, her shine dulled only moderately by the dim quarters. He dropped to a knee in obsequiousness, his arm still shielding his face.

“I have loved you for a thousand years,” she whispered ethereally, tendrils of colored smoke reaching to him, tracing gestures on his bare forearms. She raised her head, curled tresses blowing in the breeze as she fixed her smoky eyes on his face.

Still bowed on one knee before her, refusing to meet her sultry gaze, he shook his head fiercely. “No. No. There is a sickness here. We are all only sick in here,” he said, shaking his head, the timbre of his voice approaching a near wail.

He thrust his hand forward, urging her back. A sudden gust of wind blasted the glass picture windows open behind him, shattering dozens of small glass panes as a surge of rain attacked the interior like the blast from a shotgun. Long black drapes railed against their captive rods as the wind gusted in, animated the dark curtains like shadowy spectres. His breath escaped him in short bursts and he could see it clouding before him as the temperature in the room dropped to near freezing.

He could not bring himself to look at her. Tears escaped the corners of his eyes, trailing down his cheeks and falling to the floor in silent crystal shatters, nearly frozen. A surge of terror possessed him then and he stood with alacrity, raising his chin to gaze at her, his eyes wide and panic stricken. He pushed his hands forward and grasped her nude shoulders in a futile effort to shove her away. Instantly, the warmth of her porcelain skin thawed his numb fingers and he felt the warmth of her flush beneath them, the tingle of energy jumping from her to his fingertips and spreading to his elbows and shoulders like an electric current. His intent to shove her back was immediately repulsed as his frozen soul seemingly collapsed upon itself like a dark star. He convulsively grasped her arms, the soft, toned muscle beneath filling his grip. She arched her back with a yearning sigh and fell forward into him, her silken breasts pressing against his chest, urging him to capture her. As her flaxen hair fell in waves down upon his chest the two dropped to the hard floor as one, her head landing on his chest, tiny body pressed close to his.

“It will all be lost,” she sighed, pressing her rosebud lips into the side of his neck. “It’s ok. You didn’t die. I’m here to show you the way. Let me,” she breathed sensuously, her warm breath hot against his skin. She gently kissed him on his sharp jawline.

Wispy tendrils of smoke, turning first from blue to green and then yellow encapsulated their bodies, running snake-like over their entwined forms. His head fell back against the hard floor, now wet from rain as it billowed inward from the rapidly intensifying storm outside, his shocked azure eyes staring skyward as they blinked back tears. Rain immersed the pair, soaking their naked skin in chilly liquid before coursing in tiny rivers down their bodies and pooling on the floor beneath them.

She pressed her body against his more firmly, thrusting her hips against him and exhaling with a sigh of ecstasy. He felt her heat against his legs as a sudden surge of fire filled him from his throat to his heels, countering the freezing chill of the icy rain. Resting her hands to the floor she pushed back and arched her spine over him, her hair hanging in wet layers around her face as she met his stony gaze. Little drops of rain dripped from her chin and nose onto his chest, sizzling into steam with a hiss as it made contact with his skin.

Without a thought he was inside of her, pressing himself into her as she returned the motion. They desperately clung to each other, fingers raking against each other’s cool, wet skin, railing against the frigid rain and gloom. The smoky haze wrapped them in a blanket, metamorphosing from yellow into a brilliant ochre. The light in the room flashed, pushing back the gray and the darkness for just a moment, in a fleeting yet perfect moment. Their bodies collided in a clash of violent energy, and for the briefest moment the world was empty; a great void filled only by the sheer power radiating from their intertwined bodies.

With a flash of lightning, an echo of thunder, and a crackle of heat, it was over. Tiny motes of light drifted down around them, falling to the floor and darkening.

She collapsed atop him, inhaling in ragged breaths. He could feel her heart drumming against his chest, racing as she clutched him compulsively. He wrapped his arms around her body, pulling her against him fervently.

“This is how the world ends,” he recited into her ear.

The mists around their forms tugged around her, became more tangible, and suddenly she was nearly weightless, levitating carefully off his body, drawn back and to her feet by an unseen, smoky hand. The tendrils of smoke around her faded from a brilliant ruby hue, darkening until they were jet black. They wrapped tightly around her body, constricting her movement completely. A look of confusion fell across her face as he carefully stood, standing naked before her as the sinister fingers of darkness held her firmly at bay.

“But you never told me why,” she breathed, her voice cracking into a sob.

He turned cautiously away from her and walked, one foot before the other, purposefully, toward the broken, open windows.

The rain fell straight down in fat droplets, a noise like hammered metal ringing in his ears as it came into contact with the hard copper gutters. He felt the broken glass crack under his feet as he walked, warm blood gently seeping out as the shards lacerated his skin.

In a step he stood on the window sill, his arms extended outward against the sash, hands pressing into the wet wood.

He turned his head over his shoulder to look back at her.

“I loved you when the snows came,” he said in a calm, deep baritone, letting his gaze fall upon her beautiful face.

“I loved you in the spring!” she cried, fighting against the black fingers of mist surrounding her. “And I would love you in the summer, too!” she shouted through choking sobs, “I would love you for a thousand more years! Please!” she sobbed, struggling to free herself.

“I have loved you too much,” he said quietly, turning his head away, and looking down from the open window. Tiny gray cars lined the ashen streets below. Grainy sodium vapor lamps cast pallid light on gloomy sidewalks and soaked black asphalt, flecks of rain illuminated momentarily as it fell.

“I have savored perfection in you, and it can never be eclipsed by anything else,” he murmured quietly.

She fell to her knees on the floor, her soaked hair hanging in tatters around her tear streaked face.

He stood, sinewed muscles wetly silhouetted against the demure light of the cold, gray sky and soapy glow of the lamps as the rain fell around him. He cast his blue eyes on the dark horizon. Somewhere in the distance, thunder rumbled.

“I will love you in the fall,” he whispered, finally.


Of Babies and Bathwater

It’s been a bit since I posted about my work on the Xpider. The main reason for this is that I’ve decided to abandon the original design in lieu of my own. While the downloadable plans for the Xpider are neat, they just aren’t terribly practical. Basically, I felt like there were too many moving parts, and that the design was too complicated overall.

So I started designing my own in TinkerCAD (name forthcoming, but thus far codenamed “Epic Gogo”). The design view is posted below, and I realize it’s not much to look at right now, but it actually represents a considerable amount of tedious work. The main body is squared off (since most of the electronics are square in shape) and the motor mounts (three of them) are designed and placed. The motor mounts were particularly complex because they had to exactly fit the motors I already have on hand.

The advantage of this design is that while still compact, it makes better use of the space for added “gadgetry”, like the speaker, GPS, and a larger battery pack. It also won’t be a “walker” like the Xpider, but rather have two independent tracks (like tank treads) which will give it 360 degrees of motion. The tedium really comes down to efficiently designing the tank tread links, which I’m working to create so they simply snap together with no tools or pins.

So, while this may be a bit of a delay, I’m still pretty excited because this bot will be 100% original and created by me (and my daughters). I guess we’ll try to give it a better name this weekend.

Initial design of the new bot showing the motor mounts, Edison platform, and support struts.

Intermediate 3D: Designing Models

If you’ve been reading my Xpider posts, you may have noticed that the Xpider “Fatty” doesn’t come with a nice 3D printed “head”; most of the electronics are completely exposed. This is fine in most cases, particularly during building and development, but I’ve always been a “finishing touches” kind of person, so I decided to try my hand and designing some sort of cover for my finished product.

Model designed in TinkerCAD

Not wanting to spring hundreds of dollars for a design suite that I may or may not like, I tested out a few online applications, and finally found one I fell in love with. It’s called TinkerCAD, and it’s so easy to use I was able to show my kids how to design basic shapes. I took a little time and some measurements from the hexagonal shape that makes up the frame of the Xpider, and extrapolated it out into a shell that looks very much like the head of R2-D2 (unintentionally).

The tabs are there so I can attach it to the frame with screws. I could have been fancy and put pilot holes in, but I figured I’d just drill them out. Once you finish your design, you can download the STL file, open it in Cura, and do everything else you need to do, like generate your GCode, or setup supports or brims.

Model rendered in Cura

So while I may not be ready yet to design my own full scale model, this is at least a good start, and fun to use.

Giving Xpider a Brain

As part of the development of the Xpider (now affectionately named G.A.J.E.T. by my 11-year-old daughter, which stands for “Gadgetized Analytic Just-so-cute Exploratory Technology) I wanted to give it the semblance of a “personality”. Years ago I had written a sample Markov chain algorithm first in C++ and then ported to Javascript. It was just a fun experiment to see how well a Markov chain could generate human-like text from some training data.

After learning that the Edison board that powers GAJET would run Node.js, I decided to work on some social aspects of the little robot. I ported what I had from my earlier algorithm into Node.js, and found 2 sources of training data; the complete text of “The Hitchhiker’s Guide to the Galaxy” and the script from “Monty Python and the Holy Grail“. Using these texts, I “trained” the application to format the Markov chains and to properly normalize the responses. Not finished, I created a Twitter account for the robot called @MontyHitchhiker, and leveraged the Twitter API to have the application post tweets every 10-60 minutes (randomly). Additionally, I leveraged the API to fetch the top trends for the United States, so GAJET will tag a post with a random trending topic.

It all turned out pretty comedic, and while the little guy still has some work to do regarding refining the chains, I’m fairly happy with it overall.

The next step is to incorporate a speaker into the system, and utilize a text-to-speech service (probably MaryTTS) to have the ‘bot actually “speak” its “mind”.

If you’re interested in seeing the workings of the Node.js app, I’ve attached the current working application to this post, so feel free to download and use it. You’ll want to sign up for a Twitter account and create an application in order to get the requisite keys, but everything else should be there.

Click the link to download the MontyHitchhiker source code.

Building the Xpider

I’ve decided to embark on a 3D printing and engineering project with my two daughters. They’ve come to love the stuff made here at my work with the Lulzbot Taz 6 3D printer, so I searched around and found what appears to be a fun and relatively straightforward project – the Xpider Fatty.

Billed as the “smallest programmable spider robot in the world” at 85mm tall and just 150 grams, this robot is fully programmable thanks to the Intel Edison board it carries. Additionally, we’ll be fitting it with a tiny UVC driverless camera so it can do some facial recognition and object avoidance.

I was able to cobble together the parts list using Amazon and DFRobot for a little over $100 USD, not including delivery (though most of the parts were available on Prime thankfully).

I’ll be posting periodic updates on our progress with pictures, but you can check out the specs and see the little gizmo in action here.

Understanding Elasticsearch QueryDSL for Analytics

This month I spoke at Big Data Jax on the topic of Elasticsearch and QueryDSL as it pertains to data science. Matt Berseth from NLP Logix was good enough to arrange speakers for my Drink and Think event, so I’m returning the favor.

My presentation covered the following general topics:

  • Brief history of Elasticsearch
  • Download and installation of Elasticsearch 5.2
  • Nomenclature and cluster overview
  • Indexing data
    • Inverted indexes
    • Mappings
    • Analyzers
  • QueryDSL
    • Common query types
    • Aggregates
    • Statistical aggregates
  • Usage

You can download the full PDF of my presentation here: Elasticsearch Presentation

For more events, please check out Big Data Jax on Meetup.