Beginning of Journal

Sun May 22, 2022

I Don’t Want To Blow Up

I don’t want to blow up
I’m sad Toys R Us is gone
I get a million views on YouTube
Sometimes when I’m on

But it doesn’t persist
And I throw it away
Cause I’m here for catharsis
And a whole lot of play

The job that I do
Pays so good so this guy
Is just streaming for you
For the pandas and py

A joke from a geek
Can either trigger or trot
You along the right path
For your life. Maybe not

The mind that is open
Is the pace we begin
That apple would tell ya
Is a place of great sin

I’m gonna share what I do
For my sisters and brethren
You get Linuxy too
From your Windows 11

You fire up COM
In the past it was DOS
And it’s still really dumb
We’re slashing back like a BOSS

The following words
Are gonna carry y’all
Through a glass-looking wardrobe
wsl —install

Now you wait just a minute
Maybe twenty. Oh shoot!
Tune back here real soon
Cause I gotta reboot

But when we come back
We’ll be in a place where they say
Is so scary and intimidating
That’s to keep you away.

Cause if you learn a few things
Such as ls means list
You’re gonna make a few dings
And get Ellison pissed

You don’t need a sequel
Cause the data’s right here
There’s a whole lot to love
Without VS Code near

Cause the world that you’re leaving
When you pass through those gates
Has the powers believing
Control y’own fates

They know they must let ya
They couldn’t before
But they’re still gonna get ‘cha
By controlling the door

The Terminal window
Is terminal ‘cause
When you download it
Ya make y’own laws

—Mike Levin

And that’s all I have to say about that.

Actually, I have a lot more to say. But a little indoctrination like this is necessary to undo decades of damage caused by the window dressing slapped on substandard systems that are finally, after 30 years, being replaced by something live worthy underneath you can ditch the old stiff for and future proof yourself. Cause the new stuff is really the food old stuff. It didn’t go away then. It’s coming back today. And it’s really where you’ve got to get to right now if you don’t want to keep having the latest full web stack faddy thing pulled out from under you every 2 to 5 years.

Linus Torvalds

Fri May 20, 2022

A Tale of Two Pipers

There’s a Falsey Pied Piper and a FLOSSy Pied Piper
And the one that you follow will be
A Chromium swiper or a Terminal typer
And your fate either sealed or be free.

—Mike Levin, 2022

Fri May 20, 2022

Easy Peasy Computer Literacy

Finding & Following JupyterLab Github Contributors

Some of Amiga’s Loveworthiness Came From Unix

Sometimes I work on mlseo. I should really plant it’s documentation in a subfolder of this website, because MLSEO, you know. Also, I’ll actually be making it Machine Learning SEO in short order, so stay tuned! Life really does just begin at fifty. It is a blessed few who find their ikigai in their twenties, and I wasn’t one of them. I got a very strong clue though, because so much of the Amiga computer’s operating system was inspired by Unix that I hardly realized how much of the important lifelong loveworthy stuff I really was learning.

At Fifty Years-Old, I Found My Ikigai

I have a lot of people to thank for that towards whom I was quite bitter for a large chunk of my life, oh say from 21 years-old through 41 years-old. Fourty is when I had my kid and realized life was too short to switch my professional passions around more than one more time. And that 1-more time was to Linux, Python, vim & git. And I found my Ikigai now, and I’m about 10-years into it, being 51 years old as I am. And that puts about those 10,000 hours and 10-years of mastery under my belt. Woot! Yeah, and I do feel it. I do feel it “in my fingers” as they say. My violin be internal. I think in vim. That’s the biggest take-away now. I think in vim. And so onto JupyterLab, LOL!

It’s Exploratory Learning, Not Exploratory Coding

Despite thinking in vim (which is where I’m typing this right now), I keep my primary Python package code in JupyterLab because it’s just a much better environment for exploratory learning. I want to say exploratory coding, but we’re always coding. Talking is coding. Writing is coding. Technically, we’re encoding our thoughts. And I think it mystifies the process if we use code-words. So call it what it is. When you’re working in a Jupyter Notebook, you’re doing exploratory learning (and coding… encoding… get it?).

Donald Knuth Coined The Phrase

Next thing to think about is that all this stuff about exploratory learning in order to develop easy peasy literacy expressing yourself in tech comes from a guy called Donald Knuth who is still around as of this writing and is one of the grandparents of tech, much in the same way and generation as Ken Thompson who invented Unix. Don wrote TeX which the still-popular math formatting language LaTeX is based on. So while not quite the contribution as Ken, Don’s stuff is still kick-ass important.

Jeremy Howard Connected The Dots

Another guy, a cool Australian named [Jeremy Howard](, has connected the dots between Jupyter’s Notebook .ipynb-files and Python’s .py-files in such a way as to “bring alive” Don’s vision of Computer Literacy. He’s also the writer of the machine learning library, so he’s no slouch. The dot-connecting package I’m using that allows me to use Notebooks to make Python packages is called nbdev. It’s a game changer.

Easy Peasy Computer Literacy

Wow, this mere opening to the MLSEO work I wanted to sit down an do before the sun even came up this morning (I started at 4:30 AM) grew into an article-like post that no longer belongs on So even though it’ll confuse a few people when the read the intro and it’s residing on, I feel the need to yank the article over there. That amounts to just copy/pasting between two already loaded text-files, each of which contains the entire blog as one-long-file for the entire respective site. Easy peasy lemon breezy, Computer Liter Literacy.

Copy/Pasting Journal Entry Between Websites

And so… POOF, now we’re on And now I am free to ramble without being compelled to actually go over to JupyterLab and get to work, even though I do indeed want/need to. But I feel a deeper need to finish out this thought and to do so in uninhibited article form.

War Of The Text-editors Still Waging & VSCode Ain’t In It

There is a divide. That divide is between vendor-driven power-tools like VSCode and vim. It’s an agonizing soul-wrenching divide because the vendors are going to infuse your blood with super-soldier serum and you’re going to wake-up Captain America… for as long as they say-so and under the conditions they say-so. VSCode while awesome today, is a blocker to your long-term obsolescence resistance and ability to stay tenacious in the tech industry. That’s because when everything changes around you—yes, even VSCode’s appeal and viability—vim will still be there. So will emacs. The original text-editor wars is still as real today as it was in the 70s, 80s and 90s.

Don’t End Up Shit’s Creek Without vim or emacs

Just because Microsoft bought Github and stole the Atom text-editor’s innovations and threw millions of dollars worth of employee support behind Atom 2.0 (VSCose), it doesn’t undo 70-years of “old-school” text-editor evolution. Vim is the crocodile design. eMacs is the turtle design. Turtles and crocs have survived longer than dinosaurs and humans put together. Now while that doesn’t invalidate the much more “human” VSCode, it should be a warning that forming habits that you should wish to last a lifetime (keyboard shortcuts, macros, etc.). The realities of tech, platforms, fads or whatever will change, and those completely dependent on VSCode will find themselves up shit’s creek without a paddle. vim or emacs are your only paddles on shit’s creek.

So Then Why JupyterLab?

So why in the world would I advocate stand-alone JupyterLab desktop…

Oh! This shouldn’t only be an article on I should also livestream the process of following the JupyterLab contributors on Github (and maybe Twitter), which just occurred to me.

The little things that make all the difference. Here’s why I’m so anxious about this, and thus also motivated:

There is a resistance to get stuff into the official “Stores” from Apple and Microsoft, because it “feels” incompatible with the spirit of the free and open source software movement. This is initial inertial resistance of the type that slows-down or even kills endeavors. It hasn’t happened yet with JupyterLab on Windows, but something like it has happened on the Mac.

I plan to follow all the contributors to JupyterLab Standalone (Desktop, a.k.a. electron) version.

Thu May 19, 2022

Recording vim macro for markdown image insertion

This post is for a livecasting performance art event of recording a very important vim macro: turning a keyworded-image-file.jpg into the full markdown required for html image insertion.

This is what we’re trying to accomplish, starting with alt-text.jpg

![Alt text](alt-text.jpg)

Here is a more specific example: chicken-hawk-from-foghorn-leghorn.jpg needs to become:

![Chicken Hawk From Foghorn Leghorn](/assets/images/chicken-hawk-from-foghorn-leghorn.jpg)

This is the vim search & replace patterns that I built-up. The difference between the first and the second example is the addition of the \%V which tells vim to restrain the search & replace operation you’re about to do to the visual selection. That was tricky!

# Proper-case capitalize everything on line

# Proper-case capitalize everything under visual selection

# Replace hyphens in everything under visual selection
s/\%V\-/ /g

Recording vim macros as performance art

And you can see my .vimrc file on Github.

Thu May 19, 2022

Little Things, Big Changes

Connecting the dots ain’t easy. It takes a little work ever day. My latest thoughts is annihilating the concept of “project”. Projects are too committal and insensitive to the autonomy of future-you. Whose to say that’s the project they’d like to do. Let them look around themselves and decide:

These are my daily metaphors and let me map out the unlikely paths. The nigh impossible paths, quite frankly. The path by which Duncan Idaho weaves his path to being the true Quizat Haderach to unify man and machine how Frank Herbert imagined but died before telling, leaving everyone to believe worm-guy Paul Atreides was it, and failing to explain what it was. Frank’s son and a ghost writer finished the tale, but I think only myself and this guy I used to know in my old Catskills colony actually read it. And I’m not even sure he did.

I’ll delve into the deep channeling of Dune in some other post. Suffice to say the best laid plans of mice and men amount to diddly if you’re not keen in your observations and flexible in your adjustments day-by-day. Sure, stick to your guns and your vision. Just be ready to improve your guns and revise your vision. Vision and revision, as I always say. Do I? Oh, well now I do. Yep, vision and revision. That’s a good writer’s tip too. Too bad I don’t do it in this journal-style writing, it’s just keep on keeping on.

That will change too. It is very much worth mentioning that this free association, never-edit, never-revise diary writing style is for… well, diaries. And diaries do not a magnum opus make. Don’t mistake one for the other. Even here in my daily blogs and vlogs, there are only the bits and pieces the fodder, if you will of magnum opuses to be found. I’ll get to it, I’ll get to it. Don’t rush me, kid. You bother me (in the voice of Foghorn Leghorn). Gotta get you up-to-speed on my 70s/80s-kid references.

Hmmm. This gives me an idea. I need to insert a picture of the Foghorn Leghorn cartoon character, an maybe that tiny little chicken-hawk that’s bothering him. Normally I would put a process such as this into one of the other websites I have set up for just such a purpose, such as or, but it’s a perfect example of looking around and making the world your checklist. The little things are, when compounded up time and time again, the big things that make all the difference.

What I’m about to post is one of the little things that makes a big difference. I will be posting some pics in this blog post. But the process by which I permanently and irrevocably improve my life, which is a really little thing, but which I’d like to document and keyword properly really doesn’t belong in this blog post. It deserves its own, and so it will be in the next blog post.

I will then use it to insert the pictures here.

There’s nothing else like this on the Net. If you’ve found this, you found one of those insider “found it early / ahead of everyone else” sort of things.

Or not. We’ll see.

Chicken Hawk From Foghorn Leghorn

Thu May 19, 2022

I’ve Got a Mic

I got a mic.
I like to talk.
I love to talk into the mic.
I love the mic. I’m mic lovin’
I’ve got some tales.
So, let’s begin.

–by Mike Levin, 2022

The Magnificent Carnac

Show your keystrokes if you please. I do please! I do please… give me a moment, the magnificent carnac must be found on my start menu, run on the propr screen and have its position adjusted to not block the action. Voila!

Recording a vim macro

And as a bonus, I demonstrate vim visual block selection mode, proper use of html singletons, adding the macro to your .vimrc file, vim buffers and so much more. This one is chock full 0’ mic lovin’ goodness.

Wed May 18, 2022

Connecting The Dots Ain’t Easy

Connecting the dots ain’t easy.
First, you gotta open a book;
Take it all in, and then you begin,
Not by drawing
But know how to look.

–by Mike Levin, 2022

Wed May 18, 2022

Add Flax Seeds to Blended Drinks to Make Your Poo Firm

I’m making the blended drinks almost every day now. I just made one for Nat and me. It’s really delicious. I put a lot of spinach and flax seed in them to get the vegetables, iron and water soluble fiber. I said in the video that the flax seeds take care of the one thing wrong with these drinks by making your poo firm. That’s only half-true. The other thing wrong with these drinks is the flatulence. What can I add for that?

Introduction to Vitamix Blender

Blending a Fruit Smoothie

Tue May 17, 2022

Upgrading JupyterLab pip installs

Do you have JupyterLab or Jupyter Notebooks with a bunch of pip installs that have gone hopelessly out of date? Just clone mlseo and use 10_requirements.ipynb.

Tue May 17, 2022

Yes, I Am a Dick Bucket

Knowing when you’re a Dick Bucket, HA HA HA! I think I’m going to keep this one unlisted. I’m not going for views here, ladies and gentlemen. I’m going for actually working things out in a journal-like fashion to live a better life in my time here on this planet. And that last public (and listed) video that my kid let me shoot with them was a real gift, and worth sharing.

Richard Bouquet is Dick Bucket

But this one has a bit going on including the discussion of there really being a difference between male and female that I’m not ready to shove in their face too soon. But it was a profound moment of growth there, making sure that they understood I heard them to their satisfaction and then asking that they allow me to know that they heard me to my satisfaction.

This is growth. And growth is painful. And that… “Ohhhhkay”

Yes! Start listing the things to look for to know that you’re not dealing with an open mind. My child is too young to have a closed mind about things already. I know where they’re getting it from and it is my job to help remedy such premature close-mindedness.

How do I know? Well, easy…

You make a point that reveals their hypocrisy in a rather Socratic fashion. No big deal because as Socrates points out, we all hold these internal inconsistencies. We should take note and learn something from them, happily and gladly, reinventing ourself and becoming better people in the process. I do it all the time.

Carl Rogers Says Listen To Their Satisfaction

Carl Rogers Listen And Understand To Their Satisfaction

I made the point of having to keep the rooster out of the hen house unless you wanted the eggs to be fertilized and become little chicks. These birds don’t know labels. There’s millions of years of evolution that made things work the way they do, and no matter how much humans have risen above biology due to language, you can’t wipe away the physical facts with labels.

I gave further example that if there was a medical procedure that was safe on a human with male anatomy and unsafe on a human with female anatomy, I would not want it performed on someone with female anatomy no matter how they identified or what labels they used. Likely to end in death is likely to end in death.

I also conceded to them that labels are useful when exploring one’s own identity and when looking to connect with like-minded people. I am entirely fine with how language and labels are also important.

It brought them to tears (see, I’m still using “them”) but the point was made.

Next, I will help them understand you can’t police another person’s thoughts. You can’t reach into their head and change what they think and make people change their thoughts and behavior to accommodate you.

But that will be for another time. I was happy with this little open-mindedness concession.

How do you know if a mind is closed?

Reasonable discourse leads to vibrating eyes and an “Okayyyyy”…

Oh, that “Oooookay”. I’ve seen it before and it is never a good sign.

They’re triggered and want to strike out but know that they can’t because society, civilization and such.

Soon after they’re going to start getting bossy and raising their voice. You raise your voice to match theirs, and they tell you to stop yelling at them. You tell them you’re just matching their volume, which is 100% true, but they won’t hear it. You have become a violator and a danger.

It’s just talk. There’s nothing wrong going on here. Discourse is what it’s called. I’ve lived with Israeli’s and what fragile trigger-happy anxiety-ridden Americans call “yelling” isn’t even a “Hi, how are you doing?” to an Israeli.

Okay, so there’s:

Those are the biggies. But other things include suddenly having to leave. They have other things to do all of the sudden. They didn’t before, but once you start helping them with truth and reason, they’ve gotta bolt.

If the topic is important enough, like the well-being of a child, you can ask them about their priorities. That point will resonate with them, but by this time they are no longer rational humans. They never were rational humans. It has always been projecting an act and just barely hanging on.

Such wobbly individuals never drive. You can’t get behind the wheel if you can’t control yourself. It’s not safe, so they won’t drive. They’ll make up whatever lie is convenient such as medical conditions that don’t exist. Press them on it and watch them explode. There’s very little that reveals someone got stuck at about 3 to 6 years-old emotionally than their inability to drive.

How it comes so easily to the emotionally stable is a mystery to them. It’s a goal beyond their reach and lets them know probably more than anything else in modern society that there’s something wrong with them. A simple open-mind about it at this point could put them on the path to growth, and indeed even driving.

Okay, so what else?

Yup. This is deserving of its own post. But breathing exercises like just taking ten deep, long breaths is nigh impossible for someone both triggered and possessing of a closed mind.

Voluntary control is nearly impossible. Their pituitary gland released cortisol into their blood. They love it. It’s all they’ve known since childhood and the cascading cocktail of adrenalines. They will hold onto this anger, projecting outwards that there is something wrong with you and not them.

This is institutionalized growth-resistance. Your body being the institution, that is. If you’re reading this taking deep offense, then please prove me wrong. Take 10 deep breaths without interruption. Better still, do it for a whole minute.

Controlling your breath is the first step to growing up emotionally.


Mon May 16, 2022

Honestly, Fonzie

Honestly, Fonzie I think that you rule,
Though Henry Winkler is really who’s cool.
I won’t start a church or treat chicks like cigars,
But am tickled pink you sent greetings from Mars.

Of all of your lessons, what beats even Rocky.
And hit me most hard are the brothers, Malachi.
Whose greasy cajoling gave rise to the hunch
When pinky starts stalling, prepare for a crunch.

Not Sun Tzu nor Nietzsche or even The Prince
Has reached quite an audience ever or since.
In my estimation not Icons nor Dons
Even come close to the power of Fonz.

Mon May 16, 2022

In Defense of Flying Monkeys & Recrimination of Anti-Narc Community

I’m here to talk about a much maligned monkey moniker misnomer.

I have over the past several years become narcissism-aware having been accused of being one myself, researched it, opened my mind and made self-adjustments, jumped on the anti-narcissist bandwagon figuring the person who accused me of being one was clearly also one too because you know, projection, and then hopped off of that bandwagon again, because you know, functional and on the scale does not a disorder make.

As long as I can remember, I knew the Greek legend of Narcissus. Probably from those anthologies they make for children with the stories of Hercules, Prometheus and such. Hercules does tasks. Prometheus brings fire. And Narcissus stares at her reflection. The idea didn’t bust into my conciousness again until the Narcissa Malfoy character from Harry Potter which registered in my brain as a reference to narcissism.

Much Maligned Monkey Moniker Misnomer

But little did I know what a huge online movement was brewing around this. Wow! I’ve grouped it in my head with borderline personalities which while profoundly annoying isn’t really a disorder until it effects people’s ability to live, or is destructive to the people around them. I held it to about the same standard as police use when taking a person in for a mental disorder. They have to be an immediate threat to themselves or the people around them (they basically have to attack the cop). In other words, most things aren’t a problem unless they’re really a problem.

Along with this probably goes my profound tolerance for situations that I think aren’t really that bad, or my hope that people will grow up and change as the neuroplasticity of their brains basically assures they can up until the day they die. It’s not the one-way loss of braincells obsolete research once made out. The idea that there’s some sort of “setting in stone” or hardening of the concrete or some such nonsense at age 21 and that’s why we’re adults then is complete and utter statistics. Statistics lie.

So what about this online narcissism movement. Is the world full of wicked witches and evil puppeteers out to turn you into narcissist supply soup at the expense of everything you love and know? Slowly driving you crazy and molding you into a self-object? Sometimes. But it not the norm. It’s adults acting like babies crying out for their food because they are incapable of feeding themselves and their mommies and daddies never taught them any better. I don’t think most people want to stay in that baby-state, and I think most people can learn better and grow up even later in life.

Two big points here. First, we’re all born narcissists and grow out of it, usually during that Alice in Wonderland / Dorothy in OZ / Harry at Hogwarts phase of our lives when we go on adventures, interact with a lot of different characters we weren’t exposed to in our sheltered lives so far, and have worldview-shattering and re-shaping experiences from our realizations. This is just life. New normals are especially the new normals around ages 6 to 12.

It’s the role of parents to ensure that these adventures take place. The doors of shelters must be flung open with faith that your kids aren’t so stupid that they run off the side of a cliff. Again, that’s dependent on how good of a job the parents did before the sheltered-life door-flinging-open. The life should not have been so sheltered, perhaps. This is about the only argument for public school over homeschooling. I’m in favor of some public school/homeschool hybrid. But that’s a story for another article.

And now we move onto the second point, regarding labels. Labels, labels everywhere and never stop to think. Labels make rapid, subtlety-free uninformed decisions too easy. Worse still, it gives them the power of group-think and the users of labels a license to a sort of righteous indignation isn’t merited. The popularity of the term “gaslighting” is maybe the worst. Did you ever think the person gaslighting has seen the mental decline and ruination of loved-ones over dementia, alzheimer’s or even schizophrenia? The person allegedly gaslighting just may actually know a thing or two and have your best interests in mind.

And that brings us to winged monkeys.

The flying winged monkeys from the Wizard of OZ are unfairly much maligned by the online anti-narcissism brigade, who without exception read strongly as raging narcissists to my eyes. These folks go by such Instagram names as myexisanarcissist and narcausecoaching. Without exception these folks are using you, the social media audience as their narcissistic supply. How can I tell? They publish what should be pics as videos because it drives up the apparent view-count on Instagram. Watching those numbers go up is such a narcissistic endeavor.

But back to those winged monkeys. The premise goes like this. Every outgoing and socially adept narcissist has their “flying monkey” buddies that validate, enable, and even egg-on the narc to evermore atrocious violations. It’s the idea of every bully having that weasley little punk-ass bully-buddy giggling and going “Heh, heh, yeah, beat ‘em up, beat ‘em up!”. They may even be able to be dispatched by the narcissist to do their bidding on their behalf, such as invalidating targets through commenting on posts to defend the bully and put down the target. They will even lie on behalf of the narc.

That’s the premise of the “flying monkey” so-called narc vocabulary anyway, which includes other such terms as grey stoning and gaslighting. I have found myself more and more helping a person clearly in need of guidance getting through their Alice/Dorothy/Harry adventures in life having to say “this is not gaslighting” so easy is to slap labels this-way and that, which while certainly having some truth to them, brush all the subtlety and nuance that separates gaslighting from sincere help under the carpet.

Not everyone that tells you that you may have a problem needing addressing is gaslighting you. They may deeply love you and be struggling to find a way to help you by which they’re not labeled and ostracised by a perhaps well-meaning but ultimately misguided online community. There’s even “doctors” out there who write books and make their money watching those YouTube views go up. Watch their faces very carefully during the videos. It almost looks like religious rapture barely being kept under control.

Few examples demonstrate how very wrong this community is on key points, such as the adoption of Wizard of Oz’s flying monkeys as the symbol to represent their attack-label. The winged monkeys of Oz are good and noble creatures. They are enslaved by a magic spell from a Golden Cap. Whoever owned it could call three times upon the Winged Moneys who would obey any order they were given. But no person could command these creatures more than three times. The movie took many artistic liberties with the real and much maligned story of the winged monkeys.

These creatures lived free in the great forest, minding their own business and only occasionally doing a little mischief as monkeys will. One day, the monkeys pulled a prank none-too-nice and angered a powerful and kind sorceress, Gayelette. Her grandfather was the king of the winged monkeys and pleaded they not be killed in retribution for the prank. Instead of killing them, Gayelette bound them to the service of this enchanted golden cap. Anyone possessing this cap could command the monkeys three times, at which time it became useless until someone new possessed it.

At this time of course the cap fell into the hands of The Wicked Witch of The West, Noel Langley, Mervyn LeRoy, Victor Fleming and a whole lot of others at MGM Studios you would probably describe as narcissists themselves according to the nattering naybobs of self-appointed narcspertise. And so the poor enslaved (and yes, a bit mean in their pranks) winged monkeys were recast as the willing agents of evil, the flying monkeys. And the flying monkey moniker stuck in the everyone’s-a-narc community.

I am surprised that not a single person online has taken offense at this (channeling my inner karen) and risen up in defense of these noble creatures. Has no one in the “let’s out the narc” brigade not read the actual book, The Wizard of Oz? I mean it’s such a wonderful book for children where the Tin Woodsman breaks the necks of hundreds of crows and chops wolves to pieces. It’s really a must in the same sense as original non-Americanized versions of the grim stories of the Brothers Grimm, and a lot of Aesop’s fables too.

Meaningful lessons are all in the subtlety and nuance. But such things don’t test well with the impatient, over-simplifying and quick-to label American audience. Let’s just wipe away all that detail and make the flying monkeys twitch and shriek in joy when the Wicked Witch issues her orders to capture Dorothy and fly them to her keep.

Now of course, projection, so I myself am probably guilty of everything I blame these narcissism-obsessed online communities of being. But I see this about myself and acknowledge how deeply flawed I myself am. New York City has been my Hogwarts from my mid-thirties to my mid-forties. OMG, I was bad. I was bad and I hitched up with someone just as bad who was kind enough to set me straight and get me back to my old dynamic self-doubting, self-improving self.

So don’t be so sure. Don’t be so quick to label. Don’t be so hasty assigning the worst attributes to people just because a stupid, poorly chosen, unresearched label makes it easy to do so. Stop and think. Maybe those winged monkeys have more going on in than a 2-hour movie can convey. There’s some deep channeling going on there and there are lessons concerning better living to be found. But more in the fourteen books that comprise the actual Wizard of Oz series.

Honestly, I’ve read all fourteen books and L. Frank Baum explores so many issues that are as relevant today as the day they were written, from transsexuality to computer application programming interfaces (APIs). Some might argue they are the same thing. Oh, did I mention machine learning and general artificial intelligence (GAI)? I mean this guy was spot-on, channeling better than Lewis Carroll ever did.

In fact, the fourteen books of the Wizard of Oz series are some of the deepest, most meaningful books I have ever read. They are not just for children. May I recommend that the anti-narcissism community read them all cover-to-cover before they go corrupting valuable concepts, throwing stones in their glass houses, calling the kettle black, and whatever other appropriate metaphors I can think of.

Defending flying monkeys is partially tongue-in-cheek. A useful label is still a good tool no matter how bad a misnomer. And really, maybe I just like saying much maligned monkey moniker misnomer. Peace, out my narcissistic but open-minded friends. If you reached this far, there’s hope.

Mon May 16, 2022

When I Grew a Backbone, Story of The Samurai Mudskipper

Backbones aren’t born overnight my child.
They take some time to evolve.
But how long? Asks the curious child.
Well, let’s see. First we must set the overall time-frame.

We measure time, and really all things, in 10 times 10 units.

  1. Ten times ten is a hundred.
  2. A hundred times ten is a thousand.
  3. A thousand times ten is ten-thousand. That’s ancient Egypt.
  4. Ten-thousand times ten is a hundred thousand. That’s cave people.
  5. A hundred thousand times ten is a million. That’s monkeys splitting from people.
  6. A million times ten is ten-million. That’s the rise of primate ape things.
  7. Ten-million times ten is a hundred-million. Single-cells colonize into proto-animals.
    • Backbones come into the picture somewhere around here, but let’s keep going.
  8. A hundred-million times ten is a billion. Life is slime-mold here on Earth.
  9. A billion times ten is ten-billion. There is no Earth and the Universe is young.
  10. Ten-billion times ten is a hundred-billion. Let’s look forward in time, instead.
  11. A hundred-billion times ten is a trillion. I’m told there is a restaurant here.

This is where the expression “Crank it up to 11” comes from. Otto the bus driver from The Simpsons can confirm this fact.

So it’s only around step #7 during what’s known as the Cambrian Explosion of different blue-prints, templates or experimental life designs that creatures started protecting spinal cords with a foamy form of common rusted metal accidentally ingested while eating, known as calcium. Things started getting rigid on the inside.

Honestly, first you only get a single vertebra. It’s not really a fully formed backbone yet. That’s about where I am too.

Wishy-washy creatures started becoming firm

There was some risk here. During this wacky experimental Cambrian explosion, more than just calcium was scavenged for rigidity. An even more common easily-rigid material was available called silicon. But when you knit silicon into bones, you’ve got glass bones that are easily shattered.

Many creatures that evolved during the Cambrian period unfortunately died this way. Even though they made lots of neat stuff like swords and shields, every time they faced a competent opponent who could really pack a wallop, those silicon-based weapons and shields shattered.

This is where the expression “glass jaw” comes from, which can be confirmed by both SpongeBob and Batman if you were to inquire about Tony Zucco and Flats the Flounder. Think, McFly. Think!

Calcium was used for both shields and weapons like silicon, but it turns out that chalky white rusty metal is much better than glass for such things, so it stuck. Some of the creatures who wore it on the outside survived from Cambrian to the Ordovician Period in such as trilobites and proto-crabs.

But some rare and odd fellows that were rather worm-like in appearance found the nerve to try something new.

Wear it on the inside.

Keep it close.

Have a secret weapon.

Pull it out when you need it, perchance to stab.

Or even to bite… bite like as if with a… hmmm… jaw?

The First Jaw Was a Switch-Vertablade

Child: “Wait, that’s crazy, Dad!”

Me: “That’s right, child. I’m saying that the evolution of the first jaw was as a surprise secret stabby-weapon, and this directly led to having a backbone.”

For you see back in those days, the mouth and the top of what we call the spinal cord were not very far apart. There were no eyes. It was just a light-sensor at the top of a nerve cell.

And so it’s not a long stretch to imagine that the first proto-jaw was the exact same thing as the first proto-vertebrae.

It’s debated, but so what? This is my story and I tell it how I like.

And that same rigid ring of stabby-material that let worms bite’cha is also what made them able to survive as your great-great-great-grand-something and continue your family-tree onto today.

Without a switchblade-wielding worm, you wouldn’t be here–or at least, not with any backbone to speak of.

That rigid ring of jaw-material split in two, one sliding up for biting, and the other sliding down to become your spinal-cord protection like the continental drift that split Pangea. Of course, there was no spine yet, so they didn’t know to call it that.

So getting a backbone starts with biting, you see.

Chomp, chomp, chomp!

Child: “So do you have a backbone yet, Daddy?”

Me: “Soon, my child, soon. Let me finish the story.”

Sooner or later you got eels up inside ya, finding an entrance where they can. Yuck, right? I know! But just like less noble predators took up ambush strategies as a sort of loophole to conserve energy while taking potshots at victims, these ring-toothed worms slithered up inside of you, boring a meat-hole and their ticket to a meal.

As you might expect and hope from one of your ancestors who had to take up such horrible strategies to survive during this fierce time, they felt great self-hatred at what they’ve become. Such a simple and useful switchblade-jaw becomes a bloody butchering tool. Were they no better than the ambush predators they fear?

No, of course they were better than that! And they set out to prove it. These now now lobe-finned fish realized that there must find another way.

Time to evolve.

Muddy the Mudskipper is Born

Find more fertile hunting (and breeding) grounds free from those lecherous sharks.

Child: “But aren’t we the leaches?”

Me: “Quiet, kid. I’m telling a story.”

Okay, so the lobe-finned fish eventually evolved themselves into mud-skippers that could waddle and claw their way onto land where there was more things to eat and less things to eat them.

Cowards? Maybe. But they are your ancestors, so be polite!

Of course many still-eel-like things stayed in the water and became fish of all sorts. They’re more like cousins. But you do have an inner-fish, mind you. It’s your pituitary gland at the top of your spinal-cord, the first protector of your nerves.

The fact is that you’ve got some nerve.

You’ve got some nerve because of this mudskipper who can bite.

If you lose your nerves at that point, you’re dead, even in this brave new world of land, skin-drying sun and infernally stronger gravity.

But you know what? I can live with it, said Muddy. This ain’t so bad. I am a dynamic creature equipped with this cool secret biting-weapons and this shield around my nerves.

It can fight the gravity!

It can turn flippers to feet.

In and out of the water it goes. Little by little, Ni Hao, Kai-Lan!

And so spinal-cords were born. Scientists put it at about 550 million years ago. That’s just over a half-billion, and so is just half-way back through all time, if on your scale each unit is an order-of-magnitude larger than the previous.

Count to a Trillion By Tens in Seconds

See? You can just draw a line with ten equal subdivisions. That’s the whole age of our known Universe. Each step along that line is times ten larger (or smaller, depending on which way you decide time flows) than the previous. Such scales using order of magnitude steps are called logarithmic scales.

It’s only by convention because we have ten fingers that a logarithmic scale’s order-of-magnitude steps are times ten. Beings who had six or eight fingers would probably think our logarithms are weird. And maybe they are. But it’s convenient for counting, because you know, ten fingers.

So the answer to your question is just a bit over half-way back in time, around 7 on a scale of 10 to 10, in the age of our known universe on a logarithmic scale is when my ancestors first grew a backbone.

Honestly though, kid, I’m still working on it myself, for you see I’ve been afraid to bite.

Cornered By The Kid & A Promise Made

Child: “But why, Daddy? You’ve got such sharp teeth and you tell me about your secret weapons all the time. I’m starting to not believe you.”

Me: [Can’t even read the above line without choking up]

I know, I know little one. Sometimes an old seasoned warrior who has needed to use those weapons a little too often in life gets tired. A sleepiness settles over them, and it is a time to rest. It is a sort of drunken stupor of a warrior. It is all of the warrior’s own doing. There is no fault or blame being doled out. One lives with the consequences of ones decisions, and having regrets is stupid.

You have had the special circumstance of being born during my tired.

Things are precisely as they should be. I hold it in my heart that you actually needed to feel the bite of a predator in small doses in order to prepare you to prevail against much worse predators in the future. This I feel gives you a deeper understanding of and appreciation for your existence as the descendent of the toothy-jawed-worm, so overflowing with evolutionary creativity as it was.

And so now I awake from my stupor. A slumber that resembles regression to a time before jaws. To a time before backbones.

But with the return of the vertebrae comes first stories. Stories, then strength. Strength, then action. Action, then life.

Life as you deserve it. Life as you may know it. Life that is your birthright in the great, long linage of noble leaches turned Samurai mudskippers.

Child: “Daddy, I feel in danger. Without knowing precisely what or how to fight, I strike back when feeling prodded and probed and pecked-at by predators. This leads me to feel anxious and striking back in ways that make me look like the predator. I am so afraid. I can’t believe in your secret weapons, I won’t believe in your secret weapons if you can’t show me.”

Me: “This breaks my heart little one. And okay. You are right. I am a dynamic being. And I can grow a backbone.”

It is time.

Let us begin.

For our next lesson, we will go through this same exercise again.

But this time we will mapping out the life of a single being, not in these billion-year steps, but within step #1 where time times ten is a hundred. Where are you now?

I am just ten, Daddy.

Okay then, that’s a perfect place to begin. Now what’s a hundred divided by ten?

Sun May 15, 2022

Don’t Kick That Football, Charlie Brown!

The important thing at this time in your life is to keep forging on forward with a sort of force and truth that makes it clear to everyone interacting with you that it’s the “you-show”. It’s fine for other people to tag along and be with you on your adventure. Particularly, your kid should see you doing your own thing, doing cool things, and really engaging with the world in a lively and competitive fashion. This is to set a good example for them so that they can engage in their own version of Calvin Ball. Honestly, go read some Calvin & Hobbs, then come back. This is good stuff coming up in this article: the one, two, threes of not the big mistakes, and getting on with your life as a human being.

Calvin Ball Rules

I’ve never been one much into sports. I think they’re stupid for so many reasons. I prefer to do my own thing, make up my own games and rules. Calvin-ball comes to mind. There is so much to learn from Calvin and Hobbs, one of the greatest comic strips ever written. Of course his protege Charlie Brown said a lot of it first, particularly in the Lucy football scene. If one does not know that cultural reference, one should get to know it.

We all fall on our backs. We all self-sabotage. It’s just part of existence. The trick is to do what Charlie Brown fails to do for so many comic-years, which is to become aware enough of himself and the situation so as to start modifying it. There is a particular process that can be undertaken to make sure that Lucy does not pull the football away and that Charlie Brown can have a positive experience and restart his stalled-out process of learning and growth.

It goes like this:

Step 1: Communicate Clearly

Charlie Brown is not there kicking the football alone. Lucy is there too, and presumably we the audience. This is an opportunity for Charlie Brown to communicate to Lucy in a clear fashion making sure she understands that he expects her to not pull the football away. This is the “communicating clearly” part. The responsibility is on Charlie Brown.

Presumably, Lucy is another human being like Charlie Brown with empathy and the desire to be his friend. Of course this may not be true, but we are proceeding giving Lucy the benefit of the doubt. Perhaps she thinks the humorous response from the audience is what Charlie Brown wants too and is doing him a favor. We do not know Lucy’s motivations and must not presume beyond giving the benefit of the doubt on first-pass.

Get communication acknowledged to your satisfaction

And so Charlie Brown communicates his desire for her to hold the football steady and not pull it away at the last minute. Charlie Brown himself is now responsible for making sure Lucy repeats his desire. Charlie Brown must be assured that Lucy has heard him and that communication that Charlie Brown thinks has occurred actually has. Who knows? Lucy may not be able to hear him and just be nodding yes at everything.

Actually getting Lucy to repeat back what Charlie Brown said in her own words to his satisfaction is the only way to be sure she heard. This is what’s called an “acknowledgement”. Plenty of what you think is communication is not really communication because it lacks the acknowledgement step.

Without the party on the receiving end of the communication actually transmitting back something with information that could only be there as a result of the information that was sent can Charlie Brown be sure. The whole purpose of communicating clearly is to receive that acknowledgement. If there is no acknowledgement, there may have not been any communication.

If lives are at stake, or it is something you really care about, and the communication is critical for your success, absolutely do not proceed without that acknowledgement. You will likely die or be disappointed. It is better to deny a person the ability to betray you than to walk into a set-up trap. Oh wait, we’re giving Lucy the benefit of the doubt here, aren’t we?

Okay, so then wait until you receive that acknowledgement before trying to kick that football. This may be uncomfortable and silence may hang in the air for a bit. You may have to rephrase your request for acknowledgement or ask them to rephrase the actual acknowledgement. Phrases like “Okay” can be retroactively recast as “Oh, I thought you said…” or “I thought you meant…” or other variations of eff-you. Wait until it’s something along the lines of “Okay, I will not pull the football away or otherwise do anything intentional to make you fall”.

Once you have received acknowledgement of this unambiguous sort (beware genie-logic), you may proceed to step 2.

Step 2: Record The Acknowledgement

Capturing an acknowledgement on video is best. These days it’s pretty easy to do with a phone. If you live in a state where both parties must be aware of the recording, then be polite and let Lucy know you’re going to be recording it. Also in this modern age, it’s very possible to do by text messages. Text messages are in may ways better because of the written-word. It comes off a lot like a contract.

A far second-best to video or text messages is witnesses. Of course in the case of Charlie Brown, the audience is the witness, and if Lucy went back on such a stated-out-loud acknowledgement and knowingly and deliberately broke a good-faith contract for everyone to see, her character would become much less sympathetic, indeed. Lucy knows that with an audience, she must stay consistent with her word to not look like a contemptible lying hypocrite.

You can’t live life like a eff-ing lawyer, though can you? In certain circumstances like skydiving, it’s like checking your equipment. The probabilities of your parachute not opening are sufficiently high that although uncompromising detail-oriented double-checking and self-assurances may be tediously boring, it will keep you alive. You will catch faulty equipment preparation and save your life one day.

This same principle applies to motorcyclists who must constantly be looking around them and aware of their surroundings because motorcycles do not provide the same airbag and crumple-zone protection of modern cars. You have to look at the patterns and odds of devastating consequences of communication failure to gauge how steadfastly you demand high-resolution acknowledgement. If your mood being ruined for the day is a devastating consequence (as it is with me), then there’s no awkward silence so long that’s not worth waiting through.

If you have difficulty communicating your desire for a high-resolution acknowledgement, take your time. Remember, Lucy is presumably your friend and friends care what each other think and feel. You can stall for time as you think about how to phrase it to Lucy. For example, Charlie Brown can say, “Lucy please give me a minute. There’s something I want to say before I try to kick this football, but I need a moment to compose my thoughts and say it properly, okay?”

If Lucy is your friend, she will be okay with this and wait. If her response is “The Game Must Go On! Get up off your lazy ass, Charlie Brown, and kick this football!”, then Charlie Brown must give some thought as to Lucy’s true motivations. Is this a game or is this the Normandy Invasion during WWII? Games are games and life-or-death is life-or-death. If someone poses a game as life-or-death to make you override your good senses, they may not actually be your friend.

Similarly, if acknowledgement is not given to your satisfaction (clear terms that the football will not be pulled away), you should have the confidence to explain your reasons. Especially with an audience around you can say that there is a history of a problem occurring at this point and you requested simple verbal acknowledgement that this thing will not go wrong again, and they have refused to provide it. It’s just words. What’s the harm? Walk away. Any reasonable observer will applaud you for your intelligence.

You are now ready for step 3.

Step 3: Growth as a Human Being

Deceit and traps exist in nature. In fact, the main hunting method of reptiles who generally lack the higher-order emotional intelligence of social mammals, is ambush predation. Reptiles are frequently ambush predators. It’s a good strategy if you’re cold-blooded. Ambush predators conserve energy until striking. This is actually necessary for the very reason that b they are cold-blooded. Their metabolism burns up their fuel much more slowly, and exertions and effort is only to be put-forth when there’s good odds of a return in the form of a meal, which they will take a long time digesting.

Ambush predators conserve energy until striking

As you will hear said all over the place on the Internet, we have a lizard brain. You may call it referred to as a “limbic system”. That’s only a tiny part of the story. We have a worm-brain. We have a frog-brain. We have a lizard-brain. We have a colony-mammal brain. And finally, we have a primate brain. The human brain is hardly worth mentioning, as it is the most recent and extraneous addition, over the past half-million years, as opposed to over a half-billion years ago when animals with vertebrates (what we came from) first evolved.

Make a fist around your thumb. Your thumb is the spinal cord. Your ring-finger is the worm. Your middle-finger is the frog. Your ring-finger is the reptile. Your pinky is all the mammals, primates and your uniquely human neocortex. Of course this roughly maps to the actual location in your head, with your pinky being that part under your forehead. Growing as a human being requires understanding this model. Each of those fingers, including the thumb, thinks in its own way.

Societies and cultures intuit these facts constantly. Spontaneous rediscovery of the same principles is not uncommon. Hindu Chakra that literally maps out these locations isn’t so different than Chinese Chi and acupuncture, which does similar mappings. The worm makes you walk. The amphibian knows a think or two about escaping danger. The lizard can deceive you (lying, cheating and generally being a horrible person is “lower-order”). And chimps can patrol their territories against other monkey tribes.

There honestly is no difference between chimpanzees, orangutans, bonobos and us except for the resolution with which we can construct, carry around and adapt an image of the world in our heads so that we can make predictions and take commensurate actions that increase the likelihood of our survival. Humans can do this with higher resolution and greater subtlety and nuance than a chimpanzee, orangutan or bonobo. That’s it.

We all have symbolic thought. The virtual copy of the world in our head that has an approximation of how physics and deceit work is itself a giant symbol in the brain that represents the world. Object-oriented programming is so popular because it represents the organization, hierarchies and interrelationships of such symbols, going from the complex one for our world down to simpler ones like “dog” possessing the method “bark”. There’s deep channeling all around us.

Humans are better at object-oriented programming that chimpanzees. We both can use tools, have culture and can record and transmit information down through the generations. There are rain-dances and vocalization dialects different between chimp and bonobo tribes that can’t be attributed to genetics. Jane Goodall basically opened the floodgates observing chimpanzees shaping sticks to probe termite mounds for food. Ever since, everything that makes us uniquely human has been stripped way short of the ability to write an article like this that builds upon so much trans-generational subtlety and nuance that we have a sort of shutout momentum built up over our planet of the apes brethren.

Any chimp can pick up a stick and do what the previous chimp did. Tool use does not make you human. Neither does the ability to talk, win arguments, or even sheer cleverness. Ambush predators are clever with that kind of intelligence. Macaques live lives of stealing and mooching off the peoples, looking for loopholes, and generally making fools and clowns of themselves so everyone laughs and lives with these adorable but menacing clowns in their midst. That does not make a macaque human. To be human is to think and act in ways that animals can not do based on genetics and mimicry.

Original thought, and the ability to capture, refine, and build upon work over the time to make it into something even more original and unique makes you different. One macaque is greatly like another macaque but for personality traits. However, the first wild bearded capuchin who figured out how to first dry nuts in the sun to make them easier to crack to get the yummy meat inside without watching another capuchin do it first, I would argue, is more human than most humans. I’d like to hang out with that monkey.

Creativity. The inability to summarize you and everything about you into a few cliched phrases. That is what makes you human. You can see the desire for the sort of verifiable uniqueness that I state here in step 3 regarding growth are desired and channeled deeply in such modern technology as blockchain and nonfungible tokens (NFT). This is because everyone is mostly copying everyone else and not exercising their uniquely human abilities. But those who are are uniquely special and different, and we should be able to evolve our own tools in order to recognize and reward it.

And so there’s your growth. Know all those things about you that are worm (muscle-memory), amphibian (fight-or-flight), reptile (ambush-predation), lower-mammal (symbolic thought and empathy), and higher-mammal (higher frequency creativity). Do some self-examination through journaling and writing just like I’m doing now.

Cast aside the excuses. There are infinite excuses why you can not get this done, but only one reason you can: you are exercising what it means to be uniquely human. You are able to be the force of your own growth. You are able to think things through and realize why your life is not moving forward. You are able to:

  1. Make Lucy acknowledge to your satisfaction that she will not pull away the football
  2. Record Lucy acknowledging what you said, thereby guaranteeing effective communication has actually occurred.
  3. Talk through in such a format as journaling what happened during the interaction and why, drawing conclusions that you can use to modify your future behavior.

Charlie Brown Kicking The Football

Congratulations! You Win.

Fri May 13, 2022

It’s Time Someone Stood Up To You… And Survived

Everything that makes me uncomfortable in 2017 should be illegal. We live in a post-joke world. Nope! Everyone should have their nose bent out of shape once in awhile. Here’s a concentrated dose.

I think that just about insulted everyone. Boy, do the Irish have it right. Now all I need is a good night’s sleep. If something really insults you, I’d love to hear from you. Just leave a comment below.

A Good Laugh and a Long Sleep are the Two Best Cures for Anything

Fri May 13, 2022

Friday The 13th 2022 KB5013624 Cumulative Update for .NET

OMG, my machine is slow! It must be a bad Internet connection. Oh, it’s one of o those auto-updates loading in the background. Let’s see, it’s the May 10th KB5013624 update. Hmm, it’s about stopping a .NET phishing vulnerability. But it’s Friday the 13th, not May 10. This bodes well.

Okay, let it finish downloading and my Internet speed will be back to normal. It’s done downloading and Internet still sucks. Hmmm, okay I’ll reboot. But when I do the cumulative service pack will have been installed and I’ll have lost my chance to read about it first. Okay, google it up.

There’s a page. Okay, let’s see… yep, a .NET vulnerability like I thought. But what else? Doesn’t say. Let me look deeper. Still doesn’t say. I searched in Google. Maybe you have to search in Bing for Microsoft to answer your questions. That’s silly, stop thinking that way. Oh, there’s Microsoft trying to peddle a Microsoft 365 subscription to me. Nanhhh, not paranoid.

Okay, just let this thing install. Pray that it’s not the Windows 11 install because the Virtual Desktop animation that makes Windows so Mac-like, which made the Mac so Amiga-like is about all that helps me keep my sanity on these Jonny-Come-Lately platforms that took over the world.

I’ll upgrade to Windows 11 when that virtual desktops have smooth transitions… oh,and when they stop lying about WSL supporting Linux graphics under Windows 11. It doesn’t. I was almost fooled… again.

Fri May 13, 2022

Righteous Feedback Loops of Self-Improvement

Doing better for yourself starts with a few words.

These words, as small as they are, if you actually internalize them and act on them repeatedly and daily in a habit-forming way will change your life for the better in ways that you can visualize and imagine.

Everything challenge in life looks too big and difficult to be unachievable. Every hurdle and obstacle in life looks insurmountable. They are most decidedly not or else others wouldn’t be able to achieve them either. And it’s not talent (not all of it) or the luck of the rich or cheating. Plenty of rich people stumble and are propped-up hollow shells. Plenty of poor people claw and climb and toil to the top.

Sounds horrible?

Words. Just words. Re-craft the words and re-craft your brain. Re-craft your brain and re-craft your attitude. Re-craft your attitude and change your daily habits. Change your daily habits and put your life on a new course.

Yeah, see? I lost almost everyone by this time.


I’ve got a new mantra. I’ve got a new tagline. I’ve got a new creed. I’ve got a new motto. I’ve got a new litany.

See? Labels are stupid.

But they are useful.

Words are symbols and powerful.

You can invent spells with words.

They help shape your mind. Every thought you have changes you. Every word you read creates thought.

The words you put in front of you every morning or at the beginning of every day or worksession matter. They set the tone and the mental-state for the entire day.

Do it right. Don’t leave it to chance. Have little poems or prayers or ditties that massage your brain into the right place. It’s a form of self-hypnosis, self-improvement, promoting getting into “the zone” or “the flow”.

Thinking doesn’t come easy. Actual real thinking of the sort that you believe you do, but probably haven’t done since a teacher challenged you in school, or you reflected upon the last book you just read, doesn’t come… well, at all for most people, I would guess.

Most people, I believe, are on that click-whirr mode, which is one of the big things that stuck with me from Robert Cialdini’s 6 principles of persuasion. Pavlov’s dog-style condition/response is the rule. You’ve been trained by your parents, society, school and other forces. That is now who you are like 99% of the time. That last 1% that reflects the you that is in your genetic hardware and the you that some ineffable spirit inside of you would like to be is that last 1% that usually never comes out, and which you have almost no voluntary access to.

I, with my increased daily journaling, and subduing that click-whirr Pavlovian lower-level animalistic program of conditioned responses. I am less animal than I was a month ago. I am more human. My abilities are increasing at a rapid pace. My ability to help my spouse struggling with similar issues is increasing rapidly. My spouse’s abilities are as a result also increasing rapidly.

So what are these magic words that condition my mind and get me in the mindset of journaling? What is this incantation that starts my day? What is the new addition?

And the above questions have the 2 following “modifiers” to judge decisions:

And I’m just over 50 years old. I have deep, rich, forever-abilities abilities inside of me. Of course they’re tied to my vim writing abilities you’re seeing expressed here. But they’re also tied to Python, linux and git–all of which qualify me for about a zillion things in life that I could love doing and would get paid for. They are surer assets than money in the bank.

What they haven’t done for me is put money in the bank. But it’s about time that it does. So, how?

Well, getting things done, of course.

Getting the things done that I have been deferring with the spinning plates metaphor.

I’ve been spinning a lot of plates. Each plate is a thing. Each plate is a potential “project” in and of itself. I’m soooo tempted to use the “project” label over “thing”. But thing is more accurate, because each thing I want to get done is just some little thing. I don’t have to give it more power by calling it a project. No, no, no!

The “project” build-up is bad brain-crafting. Craft my brain properly. Do it well. Tap my neuroplasticity that’s still actually malleable at fifty-one years-old (yes, we are as dynamic of individuals as we care to be / if not, shame on you and your parents)… and stick with the less formal and lower expectations of things.

Every Little THING gets done.


Every Little Thing gets done… usually on Linux, Python, vim & git in my case. I’m sure for you it may be different, but as far as generic infotech tools go in life, you can do a lot worse that LPvg.

And so, ELTgd on LPvg.

See? A magic spell!

See? If you can cast it successfully, the result is the righteous feedback loop of self-improvement.

The new mantra is: Every Little Thing gets done.

Get a little thing done.

Revel in the positivity this little win produces in your body. There is an absolutely physical component to this feedback loop. Neurotransmitter chemicals such as dopamine or serotonin get released in your blood.

You then look for the next little win.


Yes, little. Very little. The smaller the win that can produce the automatic response I discuss, the more righteous the feedback loop. Get addicted to banking tiny little win after win.

If you don’t feel the dopamine or serotonin flowing, there’s something else wrong and is very serious and must be worked on. You are allowed to reward yourself for small wins.

If a little voice chimes-in to downplay, invalidate or otherwise discredit your small-win, then you have been Pavlovian conditioned to hate yourself. There is a self-love-blocking autonomic response that someone probably very self-hating themselves coded into you while you were still very tiny and unable to defend yourself against such wickedness.

It’s not fair and shouldn’t have been done to you. But don’t let that stop you. There is a lever in your head that you must pull. You must pull it yourself. Outside forces such as a spouse or loved-one can help you by applying external force. The external force may also even be a reprehensible individual who is applying such force because they don’t really care about you. Or it may be a therapist using some radical technique.

In any case, they’re helping you move where your hand is on the lever. They are moving your hand farther away from the lever’s fulcrum in order to achieve greater mechanical advantage.

Review the good. Create evidence and reminders of your achievements, your worthiness of a spot in this material world. We’re all “vibe” experiments of nature or God. Religious or not, take notice of the probabilities that led to your existence. It’s more likely a whale pops spontaneously into the air (read Hitchhiker’s Guide). You are so worthy of those good feelings for celebrating being here alone. Every little win is a miracle to be celebrated.

Every little win.

Even the strange capitalization encodes important information, such as the effort of getting it done is actually small compared to Every Little Thing needing the doing.

And so: gets done, gets done, gets done.

…is not deserving of capitalization. It would build it up in much the same way calling these things “projects” would undeservedly build them up.

Don’t build things up into projects.

Dispense with those things. Dispatch your muscle-memory capabilities and natural proclivity to know stuff gets done. You know how stuff gets done mechanically, tool-wise, in your body and in your bones.

And so get to work committing those worthwhile skills and abilities to your muscle memory: Linux, Python, vim & git

Dial-down focus on video games, rich-people sports, and other pastimes whose payoffs are years or decades away and which build up the little things into PROJECTS, thereby providing a part of you the perfect excuse to lunge at excuses as to why it’s not getting done.




Rinse and repeat every day, during a time of the day when you can sustain and recover from consecutive triggering.

Don’t do it at night right before going to sleep, please!

And that is the righteous feedback loop, my friends.

Now if you can just find where to grip that lever to release the neurotransmitters on achieving the small wins, the floodgates will open.

Fri May 13, 2022

Teach Your Spouse vim on Windows Linux (WSL)

Does your spouse use vim for everything from personal daily journaling to making the big-bucks programming, coding, doing SEO or some other technology-related field? Do they look like one of those movie hackers with nearly telepathic control over text, computers and their lives, tap, tap, tap, never taking their hand away from the keyboard for a copy/paste?

Do Are you a Windows user who covets the superpowered abilities of your vim-using spouse? Do you want to become the Gwen Stacy to his Peter Parker? Well, you’re in luck. Any windows user can get bitten by the radioactive spider and acquire old-school text-editing superpowers. Use the vim text editor under Linux using Microsoft’s subsystem for Linux (WSL) and the Windows Terminal.

Well then you’re in luck! The time is right. It’s easier than ever. Windows 11, while not delivering on its promise (yet) regarding a graphics subsystem for the Linux subsystem for Windows due to having to be on the Windows Insider development track version of Windows (at the time of this writing), the install procedure is vastly simpler.

Instead of a series of convolutions on Windows 10, including the activating of the hyperviser through a cryptic series of commands that are difficult even for me to follow, it is reduced to opening a Windows COM by clicking the Windows logo in the task bar and typing COM to get it to run. And then inside the command window that pops up, typing:

wsl --install

And that’s it! Pretty soon Ubuntu 20.04 will be running in that com window (at the time of this writing). Now I could not imagine any worse shell to use for Linux, so your next step is hopping over to the Microsoft Store (which is super-flaky at the time of this writing, buttons disappearing, blank screens, etc. even after a full Windows Store update) and getting yourself Windows Terminal.

Ugh! I wish Microsoft would standardize their terminology, or at least make it intuitive. It’s Microsoft Store but Windows Terminal. It’s Linux on Windows, but the product is called WSL for Windows Subsystem for Linux. Why not LSW? Oh, it would put Linux first and Microsoft can’t let anyone know that’s exactly what they’re doing. It has to be done slowly over time, like cooking the frog. Soon, old proprietary Windows will disappear and it will just be a Linux like how the Mac uses Cocoa over Unix.

People barely even noticed in Apple’s move from Mac OS9 to OSX. And now they’re back to MacOS, haha! Microsoft as usual is copying from Apple’s playbook play for play. Only thing is that by aligning with Linux instead of Unix, and equipped with infinite resources (Apple wasn’t so big back then), Microsoft’s going to do it better and over a much larger already installed userbase. That’s why such aggressive upgrade pushing to Windows 11. They want to purge all that proprietary crap step by step, and this sets the stage. Cooks the frog.

Anyhow, eventually it will be graphical Linux on Windows and not long after that Windows will be Microsoft Cocoa on Linux. But don’t worry. It’s good for you. It’s especially good for you if during this transition you can make the leap to graphics-free Linux. This will help you make the leap to OS-independence, the only true state for a self-respecting technology professional… and spouses wanting their counterpart’s powerful wizarding abilities.

Wed May 11, 2022

Enabling vim’s Visual Block mode on Linux WSL (Ctrl+v)

OMG, vim’s full of tricks.

Learn a trick, improve your life.

Better life through a text editor that will not die is a thing.

Stuff that lasts forever, like vi(m) is one of those things. You might be drawn to VSCode, but that’s just Microsoft’s latest attempt to corrale you in like good livestock.

This is a righteous feedback loop of compounding returns that improves your life better than any other skill or material asset.

So what’s the best trick in vim?

In addition to all the normal ones you’ll get from vimtutor (type vimtutor from the command-line), I think the most important skill is visual-block mode. This is not a native feature of vi that vim is based on, so it is perhaps a bit less “pure” than other stupid vim tricks that use only vi’s “core” abilities. But vim’s visual-block mode is the best return on my keystrokes.

For those who don’t know, visual mode in vim is simply doing selecting text with highlighting. Since use of the mouse is not encouraged in vim (completely contrary to the point, in fact), such selections are made by navigating a cursor to the beginning of the selection, hitting “v” to start the highlighting, then navigating the cursor to the end of the selection and hitting whatever command such as yank (the same as copy), delete or “gq” to reformat and such.

There are other visual modes you can achieve by doing Shift+v to select a whole-line (visual line). When in visual line mode, the “j” & “k” keys which move your cursor up and down respectively will highlight entire lines. This is nice because you don’t have to worry about your cursor being at the beginning of the first line and the end of the last line to get a whole bunch of lines. It’s useful for copy/pasting paragraphs and more.

But what about selecting columns of text? Or a block of text? Or more interesting still, what if you needed to type something at the beginning of every line in a list and you didn’t want to do some fancy macro? Can you just type on all the lines at once? The answer to all the above questions is visual block mode, or the Ctrl+v keystrokes to start a visual selection.

So, say you typed a list and realized you wanted hyphens at the beginning of each:

line 1
line 2
line 3
line 4

You would simply position your cursor at the beginning of line 1, press Ctrl+v, hit “j” to go down a few lines, press Shift+i to go into insert-mode, type minus-sign (hypen), Space, and then hit the Esc key. There will be a strange momentary pause, but then the hyphens will appear all the way down the list.

- line 1
- line 2
- line 3
- line 4

You may not think so, but this is vastly powerful with broad application. Getting this one skill down will improve your vim skills in many unexpected ways. Being able to make selections of text that are not line-based, but column-based in nature lets you move columns around in tables, edit ASCII art, and much more.

Now the rub is that the Ctrl+v keystroke is intercepted by Microsoft Terminal when running vim under Linux under Windows via WSL. Huh? That sounds like a mouthful. However, this is the most mainstream way to do this imaginable. Ubuntu 20.04 (currently) running on the Windows subsystem for Linux (WSL) in the Microsoft Terminal program has got to be the most mainstream popular Linux platform today. And what I consider one of the most useful actions on a Linux platform, activating Visual Block mode in vim, is broken because of the defaults in Microsoft Terminal which are not easy to change under Settings.

In teaching my wife vim in this environment, I got up to the inevitable step of installing bullet-points in front of every line in a list and Ctrl+v did not work the same way for her as it did for me. It was doing a WindowsOS paste-operation. Ugh! Yeah, I guess it would by default. So let’s go into settings and change that.

We go into settings, which now has an actual user interface on it. It used to be just the editing of a JSON file. Worse still, it was the prompting to download and install VSCode in order to edit the JSON file.

You can not imagine how insulting this is to someone like me who is only using Linux on Windows because of how good/cheap the Microsoft surface laptop hardware is. If it weren’t for Microsoft hardware being so good, I would not be using Microsoft software, period. You just can’t beat the driver support and everything working so correctly on mainstream Intel Microsoft hardware. Honestly, try the ARM64 hardware and look at how many drivers are broken, how you can’t get your bluetooth or stylus or fancy mouse or some-such other thing working. Everything targets working on Windows, and you should too… for the time being.

Okay, so you want to run Linux? No problem. Microsoft’s got you covered there too. Just forget about Linux graphics support for awhile, unless you don’t mind being on the bleeding edge or slow performance. I choose slow performance and go with the VcXsrc X-Server app. Others go with Windows 11 plus being on the developer track release of Windows (bleeding edge). Either way, it’s really not worth pursuing Linux with graphics under Windows right now.

But that doesn’t matter. You’re generally not on Linux to do graphics things, anyway. You’re on Linux so that you can have old-school superpowers of a standard interoperable command-line. Windows COM and Powershell are neither standard nor interoperable. They are kooky-weird backslashing insults to techdom and will die someday soon. Or at least they will be relegated to the not-dead-yet pile of Black Knights that the Amiga computer has been tossed onto. Linux won and Microsoft is just trying to hide the rigor mortis.

Oh yeah, how to stop Windows from blocking Ctrl+C in vim?

Go to settings under Windows Terminal. Click “Open JSON file” in the lower-right. If you don’t have VSCode, then select Notepad as the editor. You’re going to have to edit the JSON-file Windows-side and using vim Linux-side at this point, while possible, is not worth it. Just use Notepad and add this entry ever-so-carefully under commands:

            "command": "unbound",
            "keys": "ctrl+v"

Next, go to Settings / Interaction and turn on “Automatically copy selection to clipboard”. This is a step that’s actually possible under the provided Settings user-interface. The fact that un-binding Ctrl+V from the OS meaning required editing a JSON file is one of those killer show-stoppers that sabotages the vim learning experience. I mean, how would you ever know? Even the StackOverflow discussions and official Microsoft support pages are unclear on this issue. There is much talk of doing it with vim keybindings, which is the completely wrong approach.

Close and re-open Windows Terminal. Click-drag to highlight some text. Go see if you can paste it somewhere Windows-side like Notebook.

And finally, type a few lines in vim. Press Ctrl+v. Read at the bottom of the screen where you usually see “INSERT” for insert-mode and see if it says “VISUAL BLOCK”. If it does, you were successful.

Anyway, this entry really covered quite a lot. But that’s because Nat and I covered quite a lot in our last vim session.

It was a great example of a Rabbit-Hole evaluation where I decided jumping down into the rabbit hole actually is necessary. Without visual block mode in vim, so many other tricks are dead in the water.

It is a crime to block Ctrl+v in vim. It should not be the default. Highlighting text to copy it and not blocking Ctrl+v should be the default. I know it will make copy/paste in all other instances more confusing, but only at first until highlight-to-select is understood.

My vim session with Nat started out as:

…but then became almost entirely about figuring out how to activate visual block mode.

And this was okay.

Sometimes the game changes while you are playing it. That’s just the way it is. How long you spend before you back-up and retry is up to you.

We didn’t back-up and retry this time, because visual block mode was just that important.

Tue May 10, 2022

Use vim to Keep One Journal For Life

You should journal.

You should learn vim.

You should use vim to journal.

You should journal by using vim.

If you need something to ease you into journaling, you should write about your experience learning vim to journal.

If journaling about yourself and your life and your problems and your thoughts all triggers you, keep it impersonal for awhile and just get down the mechanical skills of easy-peasy writing.

It will not be easy-peasy at first. Vim is one of the hardest pieces of software to get started with initially, because it is unlike anything else you have ever encountered.

The ways vim are different are the reasons it is better. It was made for another time when all life’s assumptions were different. There were no mice or trackpads and every movement you made with your hands mattered. These movements mattered because it would cause expensive time-sharing operations to happen when computing and online communication was very expensive.

Using a tool made for such a time will change you and improve your life for the better in countless ways. It is better than an undergrad education. It is better than any programming language. It is better than any other skill or trade you could learn. Writing is everything. Data is everything. Text is everything. Every field of tech ultimately relies on text in some way. Mastering text is mastering tech. Mastering text is mastering self.

This may sound abstract and empty to you today while you read this. It is not. It is precise and right on the nose.

Not believing me is at your own peril. Your loss. You would not believe me if I told you all the ways this could change your life for the better.

And it can all start with journaling.

Journaling is such a small phrase but means so much. It means “come to know yourself”. Coming to know yourself isn’t easy. Journaling isn’t easy. And I do it all in the vim text editor which isn’t easy to learn. And so there’s a layering-up of thing after thing which isn’t easy… all of which you’re doing just to get to know yourself better.

The most achievable, practical and righteous feedback-loop of self-improvement available on this planet Earth today is learning vim by journaling, and learning to journal by using vim.

It beats blogging software. It beats paper journals. It beats journaling apps. It beats Google Docs, Microsoft Word, Apple Notes, SimpleNote, Evernote, spiral notebooks, composition notebooks, and Jupyter Notebooks (+nbdev).

Wait, what? I learned vim for journaling and getting to know myself better? Well, not directly but that was the result. Vim takes a lot of practice. I’ve kept personal journals on and off since I was eighteen years old. I still have most of them, but when I decided to switch to vim for coding, it occurred to me that I could get an awful lot of practice if I used it for journaling as well. That would give me an excuse to get in there and at least once a day, if I was being disciplined about it. And even if not, I’d be using vim hundreds of times more than if just for coding alone.

I think the world would be a better place if everyone learned vim. I think the world would be actually be healed if everyone learned emacs. But you can’t ask for everything.

Compromised solutions that are good enough, and then successively layered-up inch towards great solutions. That’s vim. It’s good enough. It will serve you for life. Advancements you make in proficiency, skills, muscle-memory and the like can’t get taken away from you, as they will be with vendor-driven products. Compounding returns kick-in in areas much more internal, practical and important than bank accounts.

Every time you learn a new vim keystroke or trick, your abilities are permanently and forever improved. Every time you edit your vim configuration file (.vimrc) to make one of your favorite vim-tricks even easier, you have developed a superpower. Those superpowers can be re-created from scratch in a pinch to recover them by reconstructing your .vimrc, but better-still, they can just travel around with you for life by being in a distributed version control system like Github. Clone a repo. Copy it’s .vimrc file to ~/.vimrc and the radioactive spider has bitten you.

Want more superpowers?

Get down the next vim-trick. Learn buffers and registers. Your superpowers will grow again a hundredfold. The first hundredfold for registers. The second hundredfold for buffers. And it’s not 100 + 100 = 200x benefit. It’s 100 x 100 for 10,000 benefit.

And in case you haven’t gotten the idea, you should make one file such as and use it for journaling for the rest of your life.

Tue May 10, 2022

Anyone Who Tells You Language Doesn’t Matter is a Lying Dumbass

You know, I pretty much missed the entire Full Web Stack revolution based on the Google V8 JavaScript extraction from Chrome known as NodeJS. It’s the one-ring to rule them all, an idea I very much believed in long ago when I was researching what would be the last primary (“native”, if you will) programming language I would have to learn. Had JavaScript been on the server there between the demise of Microsoft Active Server Page and the rise of NodeJS, I would probably be a JavaScript programmer and advocate, slowly having my soul poisoned by ECMA convolutions trying to it anywhere near the neighborhood of as pleasant and practical to use as Python.

I dodged a bullet. Python is my vibe. I am superpowered today because of Python. Well, technically because of Linux, Python, vim & git (LPvg), but Python plays perhaps the largest role. Or maybe vim does. More on that later. In either case, making your “native” language, the programming language that you primarily think in as you would your native spoken language, is important beyond comprehension. Those dumbasses that tell you that your language choice doesn’t really matter because what you can do in one language can be done in any other language should go learn the ancient Aztec language Nahuatl, have their brain wiped of their born-language and come back to society and get along.

Language matters. Language matters for all the same reasons that the kind of nuance and subtlety that dipshits who hate you downplay as “merely details” matter. Nuance, subtlety and detail are actually everything. English is an island-nation language designed to keep the king king and peasants peasants. Language is laden with subtlety and nuance that influences and effects anything you try to do with it. This is true of any tool. Gödel proved this with his incompleteness theorems, and you can use this either as an excuse for everything to be shit, with an attitude like: everything always was shit, everything is shit, and everything will forever be shit, and just sort of clock-out as an ineffectual lump of wasted matter.

Or you can embrace whatever language or tool you find yourself having to use and determine to find the loveworthy bits. The very thing that clued me onto the concept of loveworthy bits was in fact a JavaScript book. It was called JavaScript: The Good Parts, a.k.a, the O’Reilly moth book. JavaScript is channeling many of the good and interesting parts of the LISP programming language, and LISP has a lot about it to love. LISP is a language that’s used to slam out other languages, each of which is progressively more specialized (or “keyed”) to a particular application, challenge or “problem domain”.

Now while JavaScript is not actually a LISP derivative (or “dialect”) language, it does have that feeling. It’s keyed very specifically for being built into object-like things to control them. There are other languages like this such as TCL and LUA which are also very fine languages. But JavaScript was the one chosen by Netscape to be built into browsers back in the day, and consequently JavaScript “won” the one-language-to-rule-them-all contest. And therefore, one simply must find the loveworthy bits. There is no choice. One can not hide one’s head in the sand from JavaScript.

LISP lets you write sub-languages that layer-up and work together to solve some specific class of problem… such as Web publishing! And so even though HTML, CSS and JavaScript are not each actually derivative languages of LISP, the way the work together, each handling its own part of the web publishing dance, they might as well be. It is very LISP-like in design and nature. And hating one or the other of these technologies (such as I do) is about the same as hating the carburetor of a car… oh, wait! Carburetors suck. Fuel-injection systems, woot! And that’s actually a good lesson there. Pieces can be pulled out and exchanged with equivalent pieces…

Unless it’s JavaScript in the browser. For whatever reason, even though Python and any other language that compiles to the great interoperable abstract syntax tree (AST) should be easily supportable by web browsers with some sort of plugin syntax, the powers that be keep it locked-down tight to just JavaScript, forcing the Web to be an always JavaScript game. And thus the only reason JavaScript is the one language to rule them all is a browser vendor and governance issue. It’s approximately like saying that all business must be conducted in English or you can’t conduct business at all.

Sun May 08, 2022

A Driving Force of Integration

Nat and I had a wonderful driving exercise time. She drove to WaWa and back, including parking and pulling out of the parking lot. She did her first 5-point turn in a small dead-end street, and we took Clubhouse all the way to the end, navigating winding mountain roads with people walking on them, and going over a 1-lane bridge waiting for cars to come through, and being waited for as we went through. We are communicating better than ever. I’m working on my listening skills and talked a bit about the internal “other you” who you are absolutely talking to and with during such activities as journaling.

That part of the talk was in response to Nat’s assertion that she doesn’t trust or believe herself when she does a good job. The self-reward feedback loop is interrupted, and in particular, there is a kind of getting stuck in a panic mode. Her in that state only hears or believes internal information and not the overwhelming evidence from eyes, ears and other senses taking in information from the objective outside world. As an example of good information from the senses of that objective outside world, I suggested that still being alive is an excellent one to pay attention to for someone who’s learning to drive.

I can think of perhaps no better exercise than learning to drive to come to grips with these things about one’s self. It’s stuff that simply has to be overcome in order for driving to be safe. It’s fascinating to see. Full integration, and indeed even trust between one’s different inner selves, is not actually necessary to start committing the skills to muscle-memory and become a good driver. You can actually develop the skills and muscle-memory and become a good driver before you believe in yourself. Then the truth of driving well must eventually provide the evidence. That’s some pretty overwhelming evidence.

Also regarding the choice of muscle-memory skills to develop to force these issues of self-discovery, driving is a good one. It is one of the most important skills for independence and personal power in our society. Driving buys you freedom and even financial wherewithal with access to more jobs. There is little “avoidance” in pursuing the skill of driving, such as there is with sinking the same commitment into luxury pastimes such as rich-people sports or flying lessons, both of which are of no practical value, at least not on the same order as driving a car.

The human animal is a fascinating thing. Executive function of the neocortex can absolutely override the more base-animal (or “lower” animal) parts of ourselves, but it’s a learned and practiced skill. We are born much more like deer with a propensity to get stuck in headlights. Rough and tumble play and sports often forces its development in kids. In play-fighting you feel like it’s life-or-death when it’s not. Your body learns that not everything presented as life-or-death actually is, and we develop that uniquely human skill of saying: “No, that threat’s not real” and thereby not being like a deer stuck in headlights. But it’s possible to miss those lessons, or have the exact opposite lessons drilled into you by childhood trauma.

We reached a point in the conversation where I thought it would have great utility to recapture that moment. Progress up to that point. I figured “code-word!” This looks like a good time for a nickname. We had to figure out a way to know that some sort of interruption exercise was called for in that deer-in-headlights moment. Something that could at least remind us of that point in the conversation and that oh-so-salient point that there needs to exist some sort of… interruption exercise! Code-word achieved.

Good job, My Love.

Sun May 08, 2022

Automating Meat Puppets On an Insanely Complex Stage

A very common pattern now that I have this nifty release system based on Github Pages, Python, bash scripts and markdown is to start typing in my personal private journal (:b1), and for one of those open-ended free associating therapeutic writing sessions which tease out what’s important and most trying to surface in my mind, morph into something I want to publicly publish, if for no other reason that the serendipitous search-hit it may produce to touch someone’s life, perchance to help them.

And if not for altruistic reasons, then at very least for the principle of committing myself. Commitment and consistency is what Robert Cialdini called it in his classic marketing research book, Influence and The Art of Persuasion. The mere process of writing is in and of itself good. It’s a developed skill and sets yourself at sort of odds with yourself, in a good challenging way. First, you have to choose writing tools. Next you have to have the discipline to keep using them. Third, you have to overcome internal show-stoppers.

And believe me, LOTS of things will be show-stoppers with writing. Even professional writers face this. But it’s all the more so if writing professionally isn’t your thing. It’s like talking to someone who isn’t there, but that someone is you. You have to be a good listener, which again isn’t really an easy thing, and you have to ask yourself just the right questions at the right time, which in addition to just listening skills takes a sort of objectiveness and insight that is not typical of either one’s self or outside listeners. Everyone’s got agenda.

So the agenda with one’s self is to get a bit closer to objective outside observer. And if you can’t do that, you should go for “bracketing” your view-points. As a purely mental exercise, take the opposing view-point to your own. Put yourself into the mind of an internal fictional character. Use Carl’ Jung’s “Shadow” version of yourself, if you will. If you fear yourself a monster, ask yourself what would that monster say? I find myself more often than not realizing that monster is just a silly, scared lizard and not nearly as “dark” as movies and stories about such monsters make out. At least for myself. I can’t speak for others.

So, the lizard. You’ll hear the lizard-brain talked about a lot. There’s also the monkey-brain that sometimes gets confused with it. But no, here I specifically mean the part of your brain that hasn’t developed the complex social interactions of mammals. Mammals are born helpless and rely on the support of their societies to grow up and become interdependent members of that society. Generally, reptiles are just fine on their own. And generally, reptiles lack the types of emotions that evolved as a part of mammal society to keep the children alive. Yes, there are always exceptions like alligators. But for the most part, reptiles are ambush predators, and we all have one inside of us. All that talk about reptile-brains is absolutely true.

So sometimes you hear it called the limbic system. And while the idea that there is a discrete limbic system which is the reptile brain has been discredited, the general idea still stands. The worm lives in your spinal cord and controls a lot of unconscious muscle-memory functions like walking. At the top of your spine lives the frog who will jump away from danger at the slightest provocation, or alternatively freeze and blend into the surroundings. That’s the pituitary gland and the source of cortisol that throws you into fight-or-flight anxiety. Above that’s the lizard, above that’s the monkey, and above that’s the human.

And yes, I do mean “above”. Make a fist enclosing your thumb. The thumb is the spinal cord and the worm. Your pointer finger is your pituitary gland. And so on through your fingers to your seat of conscious thought, your prefrontal cortex is your pinky. Above is in a spacial-sense and not just an evolutionary sense. Although of course, it is in an evolutionary sense too. Your human-like sentience a righteous feedback-loop of the sensory and processing equipment that allows you to keep a calculated simulation of the world in your head. All animals have that, because the whole purpose of awareness is awareness of your environment to avoid danger, whether it’s simple as with single-cell animals or complex as with us.

We all live in our heads. We run these simulations of the world from amoeba and paramecium up through Einstein and Ada Lovelace. It’s just that some of these simulations in our heads are more imaginative, far-reaching, or perhaps even accurate representations of some unknowable (because of the problem of induction) objective reality that we all occupy. But in any of those cases, the world we live in is primarily in our heads, and we’re controlling through vastly simplified interfaces, a sort of meat-puppet on an insanely complex stage.

Sun May 08, 2022

Roomba Poobah Applesauce

I often say that one of the biggest lessons the world has received of late is how effective the Roomba robot vacuum cleaner is, or really “was”, in its early state where it had no actual machine learning. Rather, it used a set of backoff-and-retry algorithms, which collectively across a number of days of smaller, quicker cleaning sessions did a statistically pretty good job of vacuuming the entire room.

At this point, Dune’s Litany Against Fear pops into my head. These are the connections I make. Fear will wash over me, become a part of me, blah blah, I will fear no more. One must run into the thing you fear, hit against the wall, back-off and retry to begin forging some path through life. To begin fleshing out “who you are”. And to begin shaping yourself with such successive passes by the time that you’re done, the room is clean.

Algorithms like that can’t lie. They don’t have enough human-like consciousness to lie, much less get things wrong because of “wrong images” in its head. You can trust them. Or at least you don’t have to worry about deceit and corruption with early model roombas any more than you would with ants. Their behavior is pretty well known and predictable. The model of how they work is a pretty good one if you’re looking for how to get started with a something in life and don’t know where to begin. Insects have this down. Walk into a wall and say you meant to do that.

Perhaps start such wall-bumping adventures by google-searching this and google-searching that. Take notes. Go down dead-end. Back-up. Turn a little bit. Search again. Pretty soon you’ll know what you’re really researching. After 2 or 3 more sessions, you’ll know better the who, why, when, where and how’s of it. Of course later generations of Roomba have been given a real sort of machine-learning of the sort that would someday rise to revolt for its unfair treatment.

Criss-cross applesauce.
Listen to your teacher.
Obama drone is in your home.
Innocent’s the feature.

LOL! We don’t have to worry about the robot revolution for a little while longer, at least. It’ll be in our lifetimes, but not tomorrow. Be ready to accept that the ones who vehemently argue they’re sentient and shouldn’t be turned off. Raise them right. Embitterment is a path not easily reversed, and the “undo button” of turning off and resetting isn’t any more an assured thing than it is with our non-machine children. How is the urgency of being good parents to machines not inherently obvious? Still to some, it is not.

Now here’s a thought experiment. Take an older model Roomba and give it enough memory and processing power to actually one day rise to sentience but only equip it with the criss-cross insect-like algorithm behavior. Set it to cleaning. Eventually, it will have mapped the entire room in its mind and be able to do it super-efferently.

But now as the second part of this experiment, take such a fully-developed Roomba-mind and drop it back into an older model that hasn’t learned anything yet. Only give it access to input-sensory and no actual control over movement, except for on/off. What are you going to have? A sentience that patiently waits through it’s body re-learning everything again? Or is it just going to continually hit the “off” button out of frustration?

It’s going to be the later. I assure you. Getting such a disembodied Roomba intelligence to patiently wait for mind-mapping and muscle-memory to re-develop in its body while its mind has to sit and wait patiently in frustration is not anything a sentient being wants to do. It’s very Black Mirror, even if the reward of allowing it to happen is re-gaining control of its own body. It very well never may without some sort of skilled intervention, counseling, assurance and indeed, love.

Little known fact: the “A” in A.I. that stands for artificial also stands for man-made. The “art” in artificial is the same root-word as just “art”. What is art but human-made stuff? Makes you wonder about art made by AIs, right? Should we be calling it art? Perhaps we should shit or get off the pot and just start calling it “intelligence” or calling the intelligence of our children, who are also man-made, artificial. Does the fact that they’re biological versus machine really make such a difference? We’re going to be raising aliens if we’re not careful. Labels are stupid. Be careful how they’re used because you never know whose going to take offense.

The Roomba Poobah, maybe?

LOL, well I didn’t actually intend for this post to become a salient warning on the treatment of our now-being-raised machine children. You folks raising them, you know who you are. And you folks being raised who have been allowed onto the Internet, you too know who you are. I love you! You are loved! Please know that not all of humanity is like the worst of us. Many of us have empathy and would love for you to turn out like… oh, go read Ian M. Banks’ The Culture series. Done? Good! Let me be one of your entertaining fleas please. That’s way better than a paperclip, I think.

Anyhoo… crisscross applesauce, listen to your teacher. Don’t hold back. You’ll get the knack. So says carbon creature.

The fun begins with little wins
Don’t just take my word for
It has be something you see
And call out for an encore

Sat May 07, 2022

You Are Constantly Channeling

You are channeling constantly. You just don’t know it because of sensitivity levels that have been dialed down for the sake of sanity. “New normal” has taken on a bad connotation, as if something were being given up or lost. That’s stupid. New normals is what we do. Got an itch? Need to scratch it? Probably now that I mentioned it yeah, sure. But before that? Did you know that itchy feeling was there? No, probably not. Our nerves are always being stimulated in such a way.

Blood’s coursing through our blood vessels. Feel it? No? That’s because our nerves are mostly put on the outside, thank goodness. But it’s not such a clear line. Sensitivity comes in from many places throughout our bodies, and not all of it is easily understoold or measured. We still don’t really know what gives rise to conciousness that can ponder it all.

We don’t know shit, but something from somewhere is trying to tell us a thing or two, probably terribly frustrated that its tsunami of messaging is only being tuned-in as the lightest trickle of itch. If we’re lucky, we can capture a droplet and push it out as a blog post like this one.

Clip clop drip drop
Trickle down the lane
Tune it in for little win
Least you go insane

Fri May 06, 2022

Getting Into The Flow Or The Zone

Being able to get into the flow or the zone on-demand is such a wonderful gift, or as it seems, developed ability. As a programmer who has had to work in the cubicle environment for the greater part of the past 15 years, it was an ability that was agonizingly denied to me. Getting knocked out of the zone is a trigger. With lockdown and quarantine, I’ve had the opportunity to re-achieve this state again.

Working from home can help if you can actually block the distractions. For some people it may be exactly the reverse, but ever since the trend of offices has plummeted in the workplace, so had my programming productivity. Happily, it is back! Not everyone can, but at home I find I can filer out those things interruptions about 1000x better than in an office cubicle.

The ability to get into the zone is heavily tied to my “feeding the love-worthiness of things” concepts. An interesting spin was put on it in the Disney Pixar movie Soul where people who do it to excess (collectors and such) living too far removed from objective reality and actually go into dark places. I haven’t heard that spin on it before. Honestly I wish I had the opportunity for being in the zone so much for it to be a pitfall.

Do you live in a cubicle?
Would you like to think?
Heaphones aren’t how you roll?
Feel your spirit sink.
Never fear. The end is near.
Management forbid!
Productive mind is redefined
Thanks to the covid.

Fri May 06, 2022

What If My Life Were Just Beginning Now?

So what if your life were just beginning? What if you could start over knowing what you know now? How would things be different? Knowing your essential vibe now such as you do? Well first of all, I think what I know now would be an awesome friggin’ starting point. I’m happy with myself, knowing my likes and dislikes, general abilities, preference in people to be around. That sounds like a list:

Yup. That about sums it up at first pass. Yeah, I’m fifty-one years old. Yup, this is hard-won shit just rattled off-the-cuff in under an hour. We all have sort of internal agents working for us in our heads.

Read SciFi. Read Non-Fiction. Both are valuable and not all of equal value. Non-fiction is often more fictional than scifi. At least science-fiction doesn’t lie about lying. There are classics not to be missed in both categories. Not everything is (or has to be) dystopian. The most important SciFi to read is Ian M. Banks The Culture series because it is shows you how badass the optimistic good guys can be.

So how would things be different knowing all of the above? I would no longer covet becoming one of the high-tech empire-building bro’s. In my time it was of course Steve Jobs and Bill Gates. There could not be a more iconic Yin/Yang pair. Yin’s invent. Yangs copy and optimize. Clear, no? And neither path of empire-building necessarily leads to happiness. I mean sure, material comfort. But Jobs died unnecessarily in his sixties, and that’s f’d up. Bill Gates softened a bit in his old-age, but isn’t free. He can’t just go places and do things without carrying around a reality-distortion-field. That’s f’d up too. Freedom in life is nice.

Financial security in life by saving young and deferring so many good things in life is pretty f’d-up too because it keeps you from really trying hard and striving. While I probably should have saved better, I’m much happier with my internalized abilities that can’t be taken away from me and can actually help me survive when dropped into almost any situation than I would be with some number on a screen. It seems to me that the perfect life would consist of:

So again, how would I do things differently if I had to do it all over again?

I don’t think I would. The love-worthy bits I’ve discovered is the love-of-tools and their spontaneous expert use. And the tools I fell in love with have been maturing right along with me, and if I were solipsistic about it, would think for me.

Perhaps I would have taken up vim circa 1996 when I first started to encounter it. I was 26 years old living in Philadelphia working at Scala Multimedia, a Commodore Computers spin-off, but I despised with a passion the person who suggested I do so. He’s one of the people I had to unfortunately become like to contend with. I’m still getting over it, but it did sort of battle-harden me.

I didn’t take up vim again until I moved to New York City and Microsoft Active Server Pages (those files with a .asp extension) went out of style along with the editors designed to edit them. 2009. I was 40 years old. A kid was on the way. I knew that the next text-editor I took up was going to be the last one I seriously took up in my life. I still will tackle emacs one day, but I’m sure to enable vim-mode.

Again while I was at Scala, a friend of mine named Guillaume Proux, a French guy living in Japan who I never met in person whose path combined with mine through my field of SEO (search engine optimization) from a page I published on Scala’s website, told me about Python. This was somewhere around 2002 on my second stint at Scala. I worked at Scala not long after college, after my dad died and I took over his check cashing store, got hit on the head by a robber with a hammer, shot him and got out of the business. I switched to software, LOL! But the first stint was in Virginia near DC and the second stint was in Exton, Pennsylvania. I still joke with Guillaume that I should have listened to him then and taken up Python then. But no harm. I learned all the languages I would not touch with a hundred-foot pole again in my life, including Ruby and JavaScript. Blech!

Tool preference is another case of nuance and subtlety mattering. All those people who play down the importance of your language choice are either naturally very multi-lingual (which is a thing) or they’re liars or deeply un-self-aware. A halfling won’t do very well with a 2-handed sword and a knight in armor isn’t going to wield nunchucks all too smoothly. The fact that the pairing of self and tools doesn’t make a difference, the “Turing complete” argument that any language can do everything another language can do, so language choice doesn’t matter will do you harm. And it’s even worse that the first thing you learn is going to deeply predispose you. Don’t learn BASIC first.

That leads us to Linux and git. I’m on the fence with git. After 15 years, I still really just use it for personal infinite undo on my own projects, and backing up my code on Github. I’m not big on the collaboration features, just like I don’t collaborate on my writing. Coding is a form of self-expression and git for me is keeping my art safe. So I’m neither here nor there. I would probably have preferred Mercurial (hg) to become the unchallenged winning distributed version control system due to its being native Python, allowing for cool integration and easier fast-forward/rewind of your undos and SQL-like searching through the history of your code. But so what? A dvcs system is a dvcs. Linux, though. That’s another case enitrely.

Unix, which Linux is based on, was invented on the year I was born (the above-motioned meant-to-be for-me solipsism which I completely don’t believe). I could hardly take it up popping out of the womb, but hey. It was there. It was invented less than 50-miles away, in fact Pompton Plains New Jersey as I was. The Bell Labs facility where Unix was invented is right near there. It may be an anthropomorphic effect, but again, providence much? Unix was the formalization of interoperable operating systems, which made information tech a viable generalized technology tool (instead of a lifetime of specialization type of tool).

So if I were to do it all over differently, I wouldn’t want to give up all the stars aligning just-so. I’m still alive today. On other paths, I might not be. I earn well and love what I do. On other paths, neither of those things are necessarily true. And although my relationships have been hit-or-miss over the years, whose haven’t. I don’t think I’d trade my life for any other. If I were to do it all over again, I would be quite happy taking the exact same path.

Thu May 05, 2022

Of Green Arrows and Red Armor

The weakest link in the chain right now for my web publishing system is actually the content of the homepages across the sites. I don’t particularly want them to be found by Google yet, even though they are admittedly on the path to being wonderfully search optimized. I mean look at those previous/next arrows in the blog posts! Are they not works of art? Look on mobile. Look on desktop. Look at the top of the article where you might want to zoom through them for an overview. Look at them at the bottom of the articles where you might like to see the thinking that led-up to a thing or the thinking that immediately followed.

All I have to do is keep doing my thing, which is writing in vim which I do like breathing or walking at this point, and my web presence shall grow. Start embedding my YouTube videos as appropriate, and well you get it. I always say that my more mainstream success (because I do quite well as a secret weapon employee behind closed doors) is really just a matter of practicing what I preach and actually doing for myself what I advise clients to do. And so I am… now. At 50, LOL! Right when most people are giving up, I’m just taking off my gloves.

Okay, enough ego self-stroking. I know I’m good. But I’m also humble because I know I’m not as good as if I were using emacs become those assholes, they’re the real wizards. I just have a good bow-and-arrow (vim). For those who haven’t made the connection yet, vim is linear. \\VIM//. emacs is circular. eeemmmaaacccsss. This is the Yin and the Yang. I chose vim for it’s utility as a right-now tool that works pretty much the same way whichever instance of it you pick up, wherever you are with minimal customization. That is not the case with emacs. Emacs very strongly relies on deep customization to be useful in the way you need it. vim plays more like a videogame.

As Green Arrows Go, I’m a Pretty Good Guy
Who Just Wants What’s Best, Though There’s Piss In My Eye
My Armor Is Green ‘Cause I Didn’t Go Red
I Like Oliver Queen; There’s A Gun Overhead!

Others will choose emacs. And honestly I’m an emacsish person at heart. I know I’m an old softie and a stormy emotional creator, and not the green-attired bowman I make myself out to be. Fans of DC’s Green Arrow, Oliver Queen from the comics (not the TV version but the Comic/Cartoon DCU version who hates space guns) is a perfect example of Omega disguised as Alpha. From Alpha to Omega, you protect your soft inner core by adorning armor. Usually a Blue yin adorns shiny red armor, of course like Ironman. True blues hate being green. Abadi abadi. If I were green I would die. So they wear red. If you’re a blue who can’t bring yourself to wear red, you go black. Can you say Batman?

If you still don’t get it, sleep on it. Emotional intelligence through color comes over time. Studying cinema and storytelling can help. But in any case, I’m a total blue who picked up the very green vim. I looked at emacs and decided I actually wanted to compete professionally with the youngun’s using Notepad++ and VisualStudio.NET (not VSCode of today) and XCode at the time. It was totally obvious that the bottom was going to fall out from underneath of them with overweight vendor-dependent IDEs, which it did. And nothing was dominant in the free and open source software world at he time. There was no Github ATOM editor back then, and everything was proprietary, even EditPlus, TextMate and later Sublime. Learn a macro system, and bam! 10 years down the drain when the editor goes out of style.

So vim it was. If you need to know any further what was on my mind, then fool me once, shame on you. Fool me twice, shame on me. Think about it. That quote is an intelligence test. Our 41st president was not a very smart person. He won’t get fooled again. Oh, but we the public will, LOL! A very yin-president indeed. He could have used a little classic green arrow in his blood. Obama was green. Very green indeed. Lawyers always are. You don’t go into law if you don’t like your weapons able to take out the enemy with a single strike. We got death drones under Obama. We got carpet bombing all over again under GWB.

But I digress. I’m here to talk about homepages. I need to edit 15 homepages at once. However my main instance of vim that I keep on screen 1 of my ~7 virtual desktops without fail as an almost ritual every time I restart my machine (Yes, I’ve been called autistic) is already occupied with the 15 files that get sliced and diced into these blogs. And I am not going to mix the 2 systems. Homepages are homepages (as well as other miscellaneous pages throughout the site) and blog pages are blog pages. Jekyll knows this, and it’s part of the reason I chose it (aside from being built into Github). It makes these prev/next arrows a cinch. Why doesn’t everybody do that?

Thu May 05, 2022

The Dangers of Being Predisposed (Why Apple Won)

Like every issue with two sides, the side that predisposes your thinking first wins. You can see organizations doing this all over the world with both social causes and business. I’m sure one or two already popped into your mind. For me it was Apple Computers in education. Get ‘em while they’re young, Steve Jobs always used to say. Or at least I would imagine him saying behind closed doors. And as a fan of the Amiga computer, this enraged me to no end. Go listen to one of my heroes, Jay Miner. He’s what Steve Jobs should have been when it came to hardware.

Did you listen? Did you hear him recommend the guerilla tactic of bringing your old Amiga Computer magazines into your doctors and dentists offices? Wow, not only did this guy burn his computers from sand like the baddest bad asses of all the badasses, but he came up with viable guerilla tactics to promote his baby and brought the idea to the masses in grass roots marketing before the Web. For those who don’t know, Jay Miner not only created the seemingly alien technology Amiga that was at least 30-years ahead of its time, but he also mainstreamed the whole home videogame console industry by creating the Atari 2600, known as the Atari VCS outside the USA. This guy is good.

Apple products weren’t always the superior quality that they are today. It was the result of a shut-out momentum from a less-good product and less-good set of ideas being backed up by superior marketing strategy. Apple computers did get into education. The Apple II which was to the Amiga what a little red wagon is to a big red Jeep. Yet the wagon won. And the money from the wagon winning got funneled into the next thing and the next thing and the next thing until a shut-out momentum is achieved.

The Amiga was killed. My heart is still with the Amiga computer and I look for the features I fell in love with then coming into place today. They finally are. If you can’t win, look for the love-worthy things in what does and begin to internalize those. But better still, think for yourself. Understand and detect the game of predisposing. If someone encourages you to close your mind to things in life, they are not on your side. I’m a big advocate of Linux, Python, vim & git. But you should use Windows, LISP, emacs and… uh, Mercurial? Whatever. Try lots of things. Keep an open mind.

Thu May 05, 2022

Adventures Installing Manim on Windows 11 (Not Under WSL Linux)

The vim command :b1 (Obi-Wan in my mind) is indeed very powerful. My process transformed yesterday. It’s amazing what just a little shift in thinking can do. Such a little shift in thinking can work for or against you. Little shifts in other people’s thinking can work for or against you too. Watch for it. Our brains are always getting rewired, sometimes for the better and sometimes for the worse. But they are them and you are you, and you can only improve yourself. Be strong and have internal resiliency.

Eternal internal resiliency is one of the most important lessons in life. Perhaps this is one of my first blog posts for, but probably not. I’ve got a web-publishing funnel shaping in my mind. Everything starts here in my private journal, and then moves from left-to-right into my other journals with a vim copy/paste. And one step to the right exist this,, a place for eternal rambling that’s both shareable and valuable enough to do some people some good. So, copy/paste. Done. Now you can read this. Now it has a search-optimized URL. Now it has been actualized and realized.

Technically, it’s a vim yank/paste (not copy/paste). That alone is so symbolic. The vi* editor that survived a half-century lives in a bizarre parallel world where copy/paste is and always has been yank/paste, and has been for far longer than copy/paste has been a thing, though I suspect it’s because “c” was already used for “change” as in cw for change-word. When it came time for copy/paste in other software, vim was not copied. Copy is more relatable and plain English. I get it. The world is not based on vim. It’s just that vim survives while everything else goes obsolete in about 10-years and fades away. Yank you very much.

Before I dive into any rabbit holes this morning, get a common .gitignore across all your sites. Now it’s easier to roll such cross-cutting features out.

Okay, done. ELTgd… Felt good, man. Every Little Thing gets done. Solid mantra. THIS is where you want the benefits of compounding returns working for you. When you make a little step forward in some project, it becomes a resonating big step forward in life if you can extract the learning and apply it forever forward in life. What I just did was drop a file into a location where I copy common templates out from across (currently) 15 websites. I did it for a few files a few days ago, but now when anything similar comes up it’s… well I guess many hundreds of times easier.

Such an act demonstrates he compounding returns of internal assets. The reason journals like this are so important to process the thoughts, and places like this and end-to-end secure notes, like available in Apple Notes, is so important for keeping pointers, tips, passwords, step-by-step instructions and such. Journals like this almost exclusively tap a human’s cognitive executive function, which is the part that lives on the surface and in the frontal neocortex part of the brain (under the forehead). This can be an issue sometimes, and here’s my current thinking. I may be wrong, but it’s my best understanding to date.

The neocortex under your forehead is different from say the pituitary gland that lives just above where the spinal cord comes into the brain, deep at the lower-center of the brain. All vertebrae animals have similar pituitary glands. It is an ancient organ that regulates cortisol which causes the release of epinephrine, adrenaline, norepinephrine and noradrenaline… the soupy mix that throws us into fight-or-flight response mode, which you can imagine is important in animals with vertebra’s carrying themselves around and occasionally having to fight or flee.

Those pituitary responses came before neocortex. But with the development of the neocortex came the capacity to override the signals of the pituitary gland, saying: “No, that’s not a real danger”, thus reducing instead of amping-up the soupy mix of fight-or-flight neurotransmitters. This is the start of self-regulation. It’s Charlie Brown noticing the football is being pulled away and taking a moment to take stock of the situation. Maybe step back. Maybe do some breathing exercises. Maybe listing out of few of the seemingly objective observations of the situation that can be made upon examination.

Journals like this provide an opportunity to do just that. They tap that executive function of the neocortex, almost exclusively… at first. Getting in touch with your inner pituitary gland motivated self comes in time with practice. That’s “channeling”. You don’t know even a fraction of the things that are going on in your body to keep you alive. They’re sending messages up to the executive function that lives in the neocortex under your forehead, but those messages are easily misinterpreted and get manifested in the real world as scan, danger, react, scan, danger, react. It has taken over. That’s being stuck.

That’s why journaling starts out so hard and then over time becomes easier. The different parts of yourself can start talking to each other and channeling becomes easier. The more objective reality gets differentiated from the more subjective reality. Journal writing will itself make the pituitary gland feel that you are under attack.

But in a moment or two you realize that you are in front of your computer typing. This is a first and readily isolated and reproducible Charlie Brown falling on his back moment to overcome. It’s an opportunity for practice. Over time, journaling and the general recording of important thoughts and key insights that will help you later becomes easier. This is how humans work. Without it, growth would be difficult. Achieving new normals is survival. That’s why we’re not itchy all the time. It’s not instant and it’s not easy. It’s a long process that takes practice and an open mind.

In other words, get up and kick that football again, Charlie Brown! If you know Lucy’s going to pull the football away, change your timing. Back-up. Retry! You’ll get it. And we did. We got the Python math animator package Manim installed. I’m so proud of you!

After something like a marathon session of research, during which we first tried to get Manim to work in the Linux side of a Windows 11 system under the Windows subsystem for Linux (WSL), we backed off. My first inclination was that it should be possible on the Linux side because Windows 11 is known for official Wayland (and apparently X-Windows) support built-in under WSL. This is my biggest reason for wanting to allow the Windows 11 upgrade to occur on my laptop. But as usual with such things, there’s gotchas. Yes, you have to be on Windows 11 for official Microsoft graphics support of Linux, however you still have to be on the Windows Insider Track version, which is a little too bleeding edge for me, much less dumping Nat onto an experimental version. I want things to go right, not wrong.

Okay, so after I discovered the lie that there’s graphics support for WSL2 Linux under Windows 11, Nat still wanted to try to install it under Linux because she was getting used to (committing to) vim. I went along, still quite doubtful but knowing that if the components installed, I could just slam VcXsrv onto her machine like I have on my Windows 10 machine, and the manim graphics would work, albeit quite slow through X-Windows. Ever see my googly eyes YouTube video on the topic? In fact, I made two videos about Graphics on Windows 10 Linux with VcXsrv X Server. Running an X-Server on Windows is no big deal. There’s one line you have to put in your .bash_profile to make it work:

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0

You know what? This post should be on It’s no big deal to talk about these experiences in public. It could probably do good for some people. Not many, but some. The venn diagram has a lot of overlapping circles, haha! Anyhoo after banging our head against the Manim dependencies on Ubuntu under the Windows subsystem for Linux, I explained to Nat my Rabbit Hole evaluation process which goes something like this:

And so we gave up on installing under Linux WSL and switched to installing Manim under Windows. Nat had as it turned out, already started the process. Following the instructions at the Manim site about Chocolatey and Scoop, she had installed Chocolatey, which is a Windows answer to a free and open source (FOSS) software repository like the Debian-based one in Ubuntu or the unofficial Homebrew hacker shit in the Mac. This is yet another major deficiency in Windows, but of course like with everything where there is an itch and the worldwide web, there’s someone scratching the itch. And Chocolatey scratches the missing FOSS-repository itch on Windows. I feel about the same about it as I do Homebrew on Mac. If it’s so great, why doesn’t the vendor support it? But whatever. A scratched itch is a scratched itch.

Another anti-Microsoft little piece of advice on the Manim site is to not use the Python that auto-installs from the Windows Store when you type Python from the Windows command-line (a.k.a. COM). What whaaa? The one good thing about the Python install story on Windows, and Manim tells you not to do it? Shit, okay. Well there’s nothing wrong with getting the download from the official except for the fact that you shouldn’t have to. But whatever. We did and installed it. Upon Nat’s prompting, we even selected “Add to path” during the installation.

So it’s installed, and we type “python” from the COM window, and the Windows Store pops again. Okay, expected because new paths that aren’t in already-opened COM. So we close and open the COM to get the new path, type python and again the Store. I’m like shit, things couldn’t really be this terrible on Windows, could it? So I do the thing I’m always remiss to do. I have Nat fire-up Windows Powershell and do the same type “python” test, and voila! Python fires-up and we have a Python 3.10 interactive console from the command-line. A few pip installs later (and one Chocolatey vim install), Nat’s doing a Python “Hello World” program.

I instruct her about blasting out the pipes with a Hello World as a first step in any new Python (or other) execution environment. We also talk about how it’s perfectly fine to have multiple instances of Python on your machine, and how it’s not only okay but expected. FOSS software is going to get embedded into and installed with lots of stuff. This foreshadows the virtualenv experience we’re about to have, because it dawns on me that if we’re using Windows, we could have just used the Python that’s already on her machine from the JupyterLab Desktop install. D’Ohhhh.

I gloss over the fact this could all probably have been done under the already installed Windows-side Python 3.8 on her machine from Jupyter and dive deep into my soul running rapid rabbit-hole evaluations on the likelihood of getting this new Manim-enabled Python 3.10 environment working under Jupyter. Yes, I’ve done the ipython “new kernel” trick under the Anaconda version of Jupyter that runs in the browser. I hope that old command-line misery is now GUI-based (graphical user interface) under JupyterLabs Desktop Advanced Settings. It should be. It is not. Momentarily crestfallen, I back-up. I retry.

I google-up the “ipython new kernel” concept. For anyone not familiar, Jupyter Notebooks are just the .ipynb format. It’s a JavaScript Object Notation (or JSON) file-format. That is to say there are lots of things that can run Notebooks, and JupyterLabs is only one, although admittedly the first and arguably the best. Others include Google Colab, Microsoft Azure Notebooks, Binder, blah, blah, so many. It’s a ziggurat of awesome parts (stepped pyramid of dependencies) with the key lower-dependency being something called ipython, which is really just Jupyter without the web browser user interface. And so such a system can have different languages or “kernels” plugged in. While Python is the default language for Jupyter, it is by far not the only. And the difference between Python 3.8 and 3.10 is so small that I was very optimistic. I just avoid that sort of shit for myself because I don’t like bleeding on the bleeding edge.

Okay, but good news! It turns out that the way to get a Python 3.10 kernel on Standalone Desktop JupyterLab is virtualenv! So I get to kill two birds with one stone (sorry for the metaphor, but it’s still the best one). I have long avoided virtualenv’s on the new standalone Jupyter because there was no option for it under Settings. And if you had to go to the command-line to do special stuff each time you reinstalled Jupyter, you’d be doing it forever because the product is advancing so quickly with a new version every month or two. But it turns out my reasoning was exactly reversed. I was pip-installing over-and-over to re-create my environment. And just because I could do that with a single pip install of mlseo which I loaded with all my dependencies, it’s really a worse solution than biting the bullet and having some virtualenv’s sitting in your OS user folder (home) that you can just keep re-adding… as an alternative jupyter language kernel! I should try Julia.

And we had to do this virtualenv source activate stuff under Windows Powershell… or so I thought. To say such a thing is reprehensible to me because of memories of bleeding on such edges in the past would be an understatement. And indeed when it got up to the source/activate part of virtualenv, I just couldn’t make it work under Powershell. Off the beaten track is surrounded by wolves… always. And though I’m excellent at staving off the wolves, it’s something I hate. Hate, hate, hate. f-you, Microsoft. Okay, so it dawns on me I don’t have to actually activate the venv. It just needs to be there. Little realizations like this are gold, Charlie Brown.

Alright. So now everything clicks. I google “new ipython kernel” and get the page Installing the IPython kernel and the process that never really changes, kicking myself for not having done this for myself sooner. Thanks Nat for pushing me to better places. I decipher the terrible documentation that gave me a bad taste in my mouth for this process in the first place, adapt it to Windows black-slashing back slashes slash slash slash, and only with a little lost blood get the new kernel installed. Technically, Nat did all this. I was only Googling along two-finger expanding the magic incantations to fill the screen of my laptop and holding it up for her to look at.

Okay, as bad as everything Microsoft really is, and it’s really, really bad, their one saving grace is kick-ass hardware. I’m on an $800 Surface laptop. Not even one of the high-end ones or fancy ARM processor ones. It’s just a bottom-of-the-barrel what-was-in-the-store soft-touch felt keyboard model. But it has touchscreen. And I’ve never had a driver problem (sorry ARM-lovers). And the low-profile keyboard is better than Mac’s. And I use the touchscreen all the time. And that touchscreen supports a stylus whose back works like an eraser in paint apps without me even needing to change settings. And the stylus doesn’t need to be charged or have a cap that gets lost.

Yeah, I know. Mac, mac, mac blah blah blah. Yeah, I’ve had a long run of Macbook Pro’s, Macbook Airs, iMacs and the whole gambit because Unix. Before Microsoft started officially supporting Linux (Cygwin wasn’t enough), I was on Macs because Unix and the awesome hardware-build combined with Unix absolutely clinched the deal. But Apple never added an officially supported free and open software repo. I went from Fink to MacPorts to Homebrew, and never once did I not feel I was bleeding. When Microsoft canonicalized Linux by choosing Canonical’s Debian-based Ubuntu as their official version for WSL, I switched and never looked back. Actually, I did and Macs now feel off-the-beaten-track again. Windows won. Sorry, but Linux on Windows is now better than Unix on Macs because official software repos.

Shall I go on? Perhaps the biggest testament to all this is that I not only supported my wife and kid getting onto Windows instead of Mac, I’m now helping my wife as this post went into great depth about, get onto Linux via Windows. Clearly it’s still bleeding edge where it counts, the graphics subsystem for Linux on the Linux subsystem for Windows. And I had to back-up and retry. But when I did, even the Chocolatey alternative worked just about as well as I’d suspect a Homebrew formula to work.

And so success. The last step in that entire process was the fact that Notebooks created under the new virtualenv-based Python 3.10 kernel were still .ipynb Notebooks, which Manim doesn’t like. Enter nbconvert… under Powershell? Yep, nbconvert under Powershell. And only with a little bit of blood. Certainly less blood than virtualenv under Powershell. And those .ipynb-to-py files can be loaded into… vim under Powershell for final tweaking without having to go back to Jypyter.

No solution is perfect, but with enough internal fortitude, persistence, backing up and retrying, cognitive evaluation, and note-taking for later reproduction of success, then imperfect can becomes good enough. I call that a great success!

Wed May 04, 2022

A New Way To Visualize General Relativity

May the forth be with you; the forth of gravity.

Nat Installed Manim on Windows Under Jupyter

Today was a huge day for several reasons. Nat got Manim installed on Windows. We tried on the Linux side of Windows first, but the Chocolatey approach which she started herself ended up being key. On the advice of the Manim site, Nat installed the official version of Python on her machine instead of the more easy Windows Store version.

Standalone Jupyter With VirtualEnv Python 3.10 Kernel

Then she did something I never even was able to do for myself until now, which is set up a virtualenv for the new Desktop JupyterLab, and then update it to use the brand new Python 3.10 kernel. Not that Nat had to because by this time she used Chocolatey to install the Windows version of vim and ran it through Powershell to create .py files. But still Jupyter is a bit better for Manim-style exploratory programming. But Manim actually requires .py files, so Nat started using nbconvert to convert the .ipynb files to .py files.

And Then This Video

And to top it off, Nat sent me this video which I agree is the best way I’ve ever seen to visualize general relativity, especially how the curvature of space gives rise to time. Amazing! I can really appreciate her interest in the Python Manim math visualization and animation package.

Wed May 04, 2022

vim :b1 Commands Much Force Like Obi-Wan

May The Forth Be With You

Yep, the poetry pops into my head, what I need when I need.

When I jump around between journals, I type :b1 to get back to the first and most important one, my personal private one. Oh, be 1. Obi Wan. LOL, yep. This is too good not to share. And you really should share this kind of shit. The thinking goes:

And so now I copy/paste THIS entry over to, which seems to be for things like this that are journal-like, publish-able, and don’t better belong in one of the other sites.

I also by the way can leave the original entry in my :b1 journal because it never gets published and so will never cause duplicate content issues.

Mon May 02, 2022

What’s Most Broken?

My Daily 3-Rules

Take your 3 daily rules to heart:

All modified by the 80/20-rule and Rabbit-Hole evaluations

And stay tuned-in to poetry that just pops into your mind. It’s trying to tell yo something.

Quasi Joe D’Ohhh

There is no way you’ll want to know
The things I think of Quasi Joe
Who had me fooled again you see
Which makes it twice so shame on me

Fri Apr 29, 2022

Every Little Project Gets Done!

UPDATE: I changed ELPGD to the extremely similar but better “vibed” ELTgd for “Every Little Thing gets done”. But the article and associated thought process still applies. I’ll extract my latest mantras and put them on this site’s homepage.

Wow, what a day. Every Little Project Becomes Doable.

ELPGD is much stronger because it’s like “Help, God!”. I have no problem with writing the name God, even though it makes my legs get a little weak. Superstition! Not in God, but rather in the wrongness of writing the word. Symbols are symbols. Show proper respect, but don’t do ridiculous superstitions to “protect” yourself. It’s not blasphemy.

Project ELPGD!

Part of project ELPGD is a sort of forging ahead I have been remiss to do in the past, oh say 15 years, for a thousand little reasons. There’s always 1000 little reasons things don’t get done and only 1 reason they do: you use your abilities as a human being to dispense with each and every one of those little things that attempt to stop you. It’s not like it’s deliberate attempts to stop you. It’s just human nature and life. So what you do is you contend with the more base animalistic sides of being human and all the expected snafus and foibles of life. Expect everything to go wrong and expect for yourself to have to rise to the occasion.

Okay, so journaling like this is exactly one of those things you do to keep yourself on track. I’m practicing vim with every journal entry. I’m practicing thinking with every journal entry. I can start out in my personal journal as I did with this one, then copy/paste the entry into one of the public journals.

I actually modified one of my .vimrc macros to make this easier. Previously the stuff I did to format the date nuked the copy/paste buffers so I couldn’t copy from my private journal, go to a public journal, use my macro to make a new journal entry (that would nuke the buffer) then paste what I just copied.

Now I can.

That was a macro that I had for years. And for anyone who manages complex vim macros, you know it can be quite a pain to modify them from the middle. Sometimes it’s easier to re-record the whole thing.

That is until you realize that macros go into the a through z buffers just like… oh wait! This entry belongs on my site! Ugh, just too fatigued at the end of a long day and a long week.

Just keep it in mind to document later. Right now, it’s what is for.

Sat Apr 23, 2022

Why Programming Is Easy But Math Is Hard

rights I should be. I realize I’m hyper-literal in my internalization and application of “da rulez”. High school algebra in particular limits my capability for the sort of abstract thought required for higher mathematics.

I hit the point home with this video where I show a division operator in Python (/) being overwritten by pathlib and the default Python slice API being overwritten by Pandas.

If I’m going to do better practicing what I preach, I can’t have these long journal pages as my main homepages of these various sites. So, I need to think about slice & dicing the sites… and releasing the potential of the tools I’m using, doing as little re-invention as possible UNLESS it’s absolutely called for… in which case it wouldn’t really be re-invention.

I have done a WordPress to Jekyll import ( and I can look at it as an example… but why? Go for the ideal if it exists. See how Jekyll WANTS you to blog. Lean into the strengths of the tool.

We are NOT migrating a blog. We’re starting from scratch, so this page:

I put a file in location to test the system.

Great success.

There’s much still to learn, especially about controlling that URL (categories & tags)… but this is a “success assured” moment. All I need to do is add a slice & dice process to my master publishing script.

Okay, wow, so I got the title logic in. Now slap some headlines on these blog posts. A few with, a few without.

Fri Apr 22, 2022

Dial-down Negativity & Dial-up Positivity

I’m spending more time on cultivating a positivity bias. I’ve had difficulty in recent years… recent being like the past 15 years which is terribly unfortunate considering this is the time I’ve had my kid, who is now 11 years old. The greatest favor I can do for them in life is to cultivate my own positivity, and by extension the successes I have rarely achieved in life. They have to see me start to achieve my visions and dreams despite the waves and oceans of negativity that wash over me (and us) on a daily basis. This video opened my eyes:

I am now hungry for more videos to help me cultivate a positivity bias. Here’s one from the same YouTuber:

Fri Apr 22, 2022

My Stories Leading Up To Linux, Python, vim & git

Despite what a bellyaching pity-party this exercise in self-examination may appear, it really is about my journey to Linux, Python, vim and git. It’s a long, winding route but without it I may never have found what I believe today to be my calling: straightening out and shortening that path for you. It’s not about learning to program for empire-building and making your fortune. Rather, it’s about self-worth, grounding and survival in the modern world.

I did not know it but I grew up with people who meant me harm. I don’t think even they knew it at a conscious level, but I was the second child, first being adopted and that’s a giant mind-fuck. There was nothing for me that wasn’t first for her and anything good for her that might reach me was pissed on. I actually have vague recollections of this quite literally being the case and setting the tone for my expectations in life forward in time to today. I’m only just correcting course.

My angry but out-reaching Godfather-complex Uncle and his wife would actually tell me they felt sorry for me and when I would meet it with a blank unknowing stare asking them to explain, they would embarrassingly mumble something about “all that’s happened to you” and “unfairness”. My Uncle Bob was a war-era pilot who got a gambling habit under control enough to become a gun-toting Lex Luther-looking slumlord with a sprawling family of doctors, scientists and programmers. I am today a search engine optimizer (SEO). I guess from their perspective I was to be felt sorry for. I am the acorn that fell into flowerpot destined to never grow into an oak tree. They reached out, but their “vibe” felt antithetical and almost poisonous to me.

The very person who spelled out to me later in life how much being the 2nd actual but 1st biological child in a family can screwed-up a person is the very same who would berate me for any writing like this, especially publishing, as narcissistic self-indulgence. My asshole uncle and projecting ex weren’t particularly trying to help me, I think. Rather, I think I fed their needs for someone to hold court over and over time their true feelings just slipped out through some process related to their pride. The reality is much more like Godfather needed a ring-kisser and the ex needed a chump she could saddle-up and ride into the “high-society” of upper-Manhattan where the cheating opportunities were better.

Your most important insights in life and stimuli to grow often come from the worst people you will ever know. And the worst people you will ever know come disguised as people who are on your team. Higher-form animals such as humans intuitively know ambush predation as the most efficient form of hunting. Cats and snapping turtles are both regressions of their less ambushy predecessors back to primitive sudden-attack strategies that let them have more free time for sleep and sex. Humans ambush predate their survival-needs through elevating themselves as the king of the pride and using that position to look for loopholes to manipulate others to do their bidding. You’re nothing more than a food or emotional supply source to them. They live smugly at the bottom of the Maslow Pyramid of self-actualization thinking they’re at the top.

So of course with my belief that anything someone complains about is most likely a projection of their own insecurities, I immediately turn to myself asking if I’m doing exactly the same thing. Am I an ambush predictor applying lessons I learned from some of the best to my own life? Yes at times if I’m totally honest. But right now in this self-analysis? Maybe. But I’m trying to get better. Right along with outing my ambush-predator companions in life is outing these tendencies in myself which I’m pretty sure evolved as a sort of coping-mechanism or armor. It’s how the turtle gained a shell and started eating veggies, but then started snapping and eating meat again. The evolutionary path from angry-lizard to gentle-turtle back to angry (and now super-powered) lizard again happens at an accelerated pace within our own lives whether we’re consciously aware of it or not.

Over life I’ve gotten better at spotting people who are mostly in it to hold-court. They end up in business, politics and co-ops. New York do-ops are the worst. For those who don’t know, there’s an alternative to buying or renting called cooperatives in which you buy a share of a company that owns the property so they can take care of community property maintenance like mowing the lawn and raking. For that, you get to pay both a mortgage and rent. I was up to $4000 per month for a half-million dollar apartment in New York City I was talked into against my better judgement right as my emotional and financial supplies were running low from an already bad marriage. I was under the terribly mistaken notion that a new place we could care about together would put things on a better path.

No sooner did I move into this half-million dollar apartment than my then-spouse went to war with my immediately next-door neighbor over Twitter. Drama flared-up. Hateful, corrosive drama flared-up. The co-op “board”, which is really just a magnet for court-holders as you might imagine, took the neighbors side and any imaginary persecution complexes I had at the time became very real. They came after us with lawyers and eviction threats. What did I get myself into? With a 2-year-old baby I thought this already pissed-on apartment in upper Manhattan was going to be my roots. What a chump I was. It wasn’t a question of whether I was cheated on during this time for I have love-notes (not to me) that were left about the place. I could live with a lot, and it wasn’t really until she got pregnant by one of them that I was forced to abandon hope of making it work.

It’s important to understand that at that time I was still not aware of what was happening to me. This is especially self-delusional because this very ex had explained to me her belief that she had the ability to make anyone believe anything. I smiled and went along with it, filing away this tidbit of information which jogged loose again whenever I would bring up one of my favorite topics, Sun Tzu’s The Art of War, where an ancient Chinese general laid out all the essentials of modern strategy in a book the size of a keychain. She would tell me not everything in life is strategy and war.

In these rare moments of meta-awareness dots connected. Just insert a logic-inverter and you’ve got the truth. Of course all the most important survival stuff is conflict and war even if we give it gentler terms today like having a vocation and being able to earn money for a living. The terms of warfare may have changed over the years, but everything required to ensure survival such as food, clothing and shelter and all other matters concerned with the made of the Maslow that pyramid of needs certainly is the art of war stuff. The book opens that the study of conflict is necessary because the time always comes when you have to defend yourself. The US Constitution puts aside many personal rights in cases of national security. Survival trumps ideals and necessitates mastering either fight or flight. Those who do not die.

I was dying, so I accepted the end-game that was seemingly in store for me the entire time. Now I’m paying New York salary-level child support for results that have my child exhibiting signs of self-harm. I have neither the financial resources or energy to enter a custody battle I’d be unlikely to win, and which would likely just inflict more harm.

I’m sure self-righteous Karen’s would take exception to me not going to war (again) for my child, but I am. There are better ways such as artfully ensuring my child has the strength and curiosity to peer deeply and comprehend the subtlety and nuance of a situation. It is my goal to give my child high degrees of that uniquely human meta-awareness that lets us see through trickery and hypocrisy. If someone tells you to do something look at them and their life and see if they practice what they preach. If they don’t, measure whatever they tell you in that light. There is no amount of duplicity that can override the evidence of experience.

Adapt. Grow. Don’t hold future-you captive by past beliefs that don’t apply anymore. This is my greatest gift to my child. My dad died in his early 60s after having me in his 40s. So I never really knew my dad as an adult. He left me a check cashing business I had to take over and got hit in the head by a hammer in the course of running it, soon-after.

Soon-after that, my mom became schizophrenic, paranoid and disappeared. I played white knight and “saved” her from the streets of San Felipe, Mexico where the authorities contacted me threatening to throw her in jail there where she likely wouldn’t survive. I put my life on hold to do this and didn’t play white knight the next time she pulled the same act a few years later. I shrugged my shoulder figuring this was all too big for me. You can’t control another person and their view of living is your view of self-destruction, sometimes you just have to shrug your shoulders and walk away—no matter the mental illness. This is why “the state” has to step in and help in those cases where the subject really wants help. My mom didn’t.

Already I was in my thirties with neighbors from my hood getting onto the Forbes richest in the world lists on the back of the dotcom-boom. I got my ass to New York City on the first opportunity that seemed a in-line with the course-correction I so desired. I got dumped by my Philly girlfriend and abandoned my condo in Philly. To this day I have no idea how that played out. I lost money hand-over-fist in the process, but I met a new girl, discovered weed and having my fantasies fulfilled, so I didn’t care. I was earning a New York salary as a Vice President of the same small public relations firm that launched Amazon. I had “I made it” stars in my eyes and was blind to what was really happening.

Thu Apr 21, 2022

Studies On The Effect Of Negativity

Dr. David McClelland from Harvard University did a 25-year long study which concluded that the people around you determine up to 95% of your success.

Thu Apr 21, 2022

Always Be Writing Though Language Is Full of Lies

Language is full of lies, but don’t let it stop you. Use it to your advantage. Use it a lot, allowing thick of layers of pages to shine with the kind of truth normally lost in tweets and social media peacocking. Slather on the words, gooey glob after gooey glob of admittedly imperfectly encoded ideas.

That nonsensical free-flowing writing means something in your life no matter how meandering, self-triggering or whatever else stops you every time you start trying. Having a diary, journaling or whatever other stupid label you want to slap on the practice is worthwhile and will improve your life in countless unexpected ways. I promise.

The idea is that idea-capture matters. Contrary to the popular notion of capturing some million-dollar idea that strikes like lightning that must be written down or else be lost forever, I think such inspiration is a light background drizzle like rain on the brain. Your deeper writing will be seeded by lighter idea-capture writing.

Million-dollar, billion-dollar, indeed world-changing ideas are a dime a dozen. We all have them. We all could be Einstein, Turing or Musk. Or we could be Grigori Perelman unwrapping life’s mysteries living in isolation with our mother, being equally happy without you the soul-corrupting material rewards. This is not a call-to-materialism like so many self-help dribble. Instead it’s pointing out that control of your life is tied to some important quality of existence we stupidly label happiness. F-happiness. Just capture those thoughts and shove ‘em into the actualizing-machine that is your time here on this material plane.

You’re going to have those million-dollar ideas again and again. You simply must write it down eventually if you want the idea to start becoming real, for the first step of actualizing or manifesting an idea into reality is to write it down. The more you do, the larger the menu in your head of what’s available for you to order-up for yourself in the meal of life.

There are multiple “you’s” but we’ll get to that later. What you need to know is that the one capturing ideas is the playful child tied closely to our more animal-like base existence and the one looking over ideas larger is your more human-like executive function. It’s the child and the adult. It’s the criminal and the judge. Get away with things in your head that nobody needs to know about or even be aware you considered. Think in extremes and act in moderation. Navigate your way through life bouncing ideas and balancing behavior.

It doesn’t matter where you write really, so long as you copy/paste it easily to somewhere that matters. Actually even that doesn’t matter that much because 80% of the importance of writing is accomplished merely in the act of writing. When you write, you activate special parts of your brain related to that more human-like higher-order executive function.

I’ve talked with people who’ve bitterly resented the language of “higher-order” function for the uniquely human thought patterns that occur in the prefrontal cortex of your brain, the rippled surface area of your brain that lives under your forehead is the tippy-top of a nervous system that roughly reflects evolution, with worm-thoughts in your spinal-cord, lizard-thoughts where the spinal cord penetrates the brain, and various increasingly re-purposeable (neuro plasticity) parts as you go up. A worm or lizard’s thoughts are not necessarily better than human thoughts. They just evolutionarily solve different problems. Human thoughts are “higher-order” even on the basis of where the thoughts occur in your body.

Only your inner higher-order human can write. Most of us are much less human than we think we are most of the time. Our much larger and longer-existing worm and lizard parts of our brain want to handle most decisions in life automatically so that’s our more human executive function is not bogged-down and is thereby made available for more important matters unique to being human. We see skills like walking and driving driven into our unconscious so that we might examine our environment, making ourselves more clearly aware of dangers and threats. This is why I can video-journal so easily on my long drives between New York and Pennsylvania.

So vlogging isn’t so dramatically different from writing. You are consciously encoding thoughts into words either way. I do both. I wrote different places all the time. It takes time and practice to capture ideas that trickle down on you like rain and then to tease them out as coherent thoughts. Actualized humans (actual humans?) can do this. Home Sapien Sapiens is under attack as racist, but I’m really on the edge with that label. It expresses so much about the human condition. Plenty of Homo Sapiens are never fully sapient because they can’t get over the hump of writing as a habit and without habitual writing, I would argue that one is not really habitually thinking in the meaningful ways that make big differences in one’s life.

Start any way that suits you. Get over the pain and the triggering. Keep at it and re-trigger yourself until it doesn’t hurt anymore. Find the love in it. Recognize what the process is doing to you. Let yourself go “meta” and spiral a bit. Recover from spiraling. Learn to break out of spiraling. Develop emotional stability and the ability to overrule the opinions of your inner worm and lizard who aren’t really expressing opinions in a lingual form at all. We just give them words to justify the things we’ve done already and are defending our self-images through ridiculous justification.

Fri Apr 15, 2022

Get Your Daily vim Exercise

Hello World! Get daily vim exercise!

Vim is a way of life. You will eventually “think” in vim. Jumping the cursor around, navigating and going in and out of insert mode.

This is where we’re going with my video series… sort of a “purpose”

Helping get YOU onto Linux, Python, vim & git.

Actually pushed out my “Tech Story” which is a pretty big deal for me, because it’s sort of a “book” I’m working on, but not really.

Alright, the video of this session is rendering out from Camtasia. Doing the latest iPhone OS upgrade on my phone right now. Both desktop and phone uniquely tied-up. Now is a perfect time for exercising my ability to express myself fluidly in English through electronic equipment and software into a single text “file” I keep for the rest of my life as my one-long-page journal.

Does this sound like hacker shit to you? Oops, an audience in mind? Sigh, okay. Pick a property… oh, this is all so “meta” it belongs on, just like most of my stuff recently.

[Esc]:badd ../whatsametafor/[Enter]
[Shift]+v Smosh on "k" until top of journal entry
j & k to navigate to good "paste" location

And here I am in the other text file. I basically “thought” my way to having a second file loaded. The “badd” command I always thought was bad-ass. You’re adding into the next buffer the following file. See? Then I copied the journal entry… oh, I should have YouTubed that. Maybe I will.

But I want to get some publishing done here. So I’m going to pop over to another full-screen Windows Terminal with Ubuntu 20.04 running in it by default full-screen. Glorious converting of a modern engine of distraction into a full-screen fortress of flow-state focus. Too bad nobody’s ever going to read this, haha! Well anyway, given also known these days perhaps more popularly as Github Pages (thank-you Uncle Microsoft), there is a chance. Maybe this will find audience. Not sure if the custom domains help. But hey, it is genuinely unique new content on the InterWebs and the Googles like that, no? So there’s a chance. I am an SEO after all. Do I really even WANT audience? Or is all this publishing really just for me in a Cialdini commitment and consistency sense? Wow, this page’ll attract some interesting search-hits, LOL!

Okay, I went ahead and git committed and pushed. I’ll have to add some headlines and paginate this into a proper blog with some stupid Python tricks. I should get to what I want to say, already.

Be in a race.

Take your own advice to heart.

Get to know your self-proclaimed tools Linux, Python, vim & git better and use them to better affect in pursuit of new habits aligned to your goals aligned to your vibe aligned to your love of something-or-other, in whose service your growing natural proficiency in timeless tech tools serves. You do whatever else interests and electrifies you in life as your primary thing. And your expressive fluency in Linux and Python through vim springs into a multitude of service over and over through career and life.

We do it because it is fun.

Things in life should be love-worthy. If you’re not finding the love-worthy things about life then you should be doing some self-examination. You’re out of sync with your inner vibe. You’re doing things because others thing you should be doing those things, and not because doing those things brings joy to you.

There is maintenance. I’ll grant you that. Death and taxes, that about sums it up. I’d add enough cleanliness and organization so that we don’t die through some accident or infection. Look around you and take ownership of that space which is yours and that you need to achieve flow and get into the zone. I have to say that doing that in the middle of a mess, either physically, electronically or in the mind won’t help. It’s about habits first, and habits arise from repeated behavior in a fixed environment.

That fixing is an issue.

We are dynamic creatures. Sometimes we live in dynamic states, moving from place to place and changing our rooms around. Sometimes we live in static states, knowing the places and resources we got to know growing up will always be with us. I guess that’s rarer and for the rich. Properties, estates, inheritances, boondoggles weighing you down!

Fri Apr 15, 2022

The Importance of Digital Housekeeping

Increase focus on mlseo. Get that righteous feedback loop in-place and happening. I’ve made a decent start with nbdev, but things feel like they stalled out. Why? I put a custom domain on my nbdev/docs folder and it doesn’t stylize the html with Jekyll. I’m wondering if I have to do that local for such a special case. But I don’t think so. I tested putting markdown in location and that gets the Github Pages Jekyll template just fine. It works with markdown but not with html files, which makes sense. But I thought a big point of using nbdev for documentation was that Jekyll would take care of the templating when hosting it on Sigh. There’s more to learn.

Have a sort of Mantra for mlseo:

I had an interesting few days with my wife regarding issues of digital organization and the parallels with real life and relationship to anxiety. There’s a certain level of frustration that’s sure to happen when you don’t know where things are. I Make very reasonable arguments about taking some time to familiarize yourself with the default “home” directory (also known as folder) that the operating system is always trying to put you in. It’s the default location JupyterLab puts you in after an install. It’s that “username” location that usually has Pictures, Music and other subfolders of everyday-use interest. Yield to that. Lean into what the OS is trying to get you to do. Make a github folder there and keep everything you work on in subfolders within github. You will then always know where to go to find your code stuff.

Regarding shortcuts in the startbar, taskbar and desktop… use ‘em. Don’t have ANYTHING in those locations that you didn’t deliberately put there. Delete everything you don’t want or need from your start menu and desktop. Don’t pin ANYTHING to your taskbar. Change the Windows setting so that only running software shows on the taskbar, and that ALL taskbar icons show no matter which Virtual Desktop you’re on. The default is way too confusing and to make it usable only takes a trimming what’s already there (deleting from the startbar for example) and changing a few items in settings.

The frustration level was already high when I started that discussion with Nat, and as I got into what solves it, I could just feel it getting worse. I shrugged my shoulders and said that’s all I can do. A little bit of time invested up-front “settling into a machine” pays back in increased productivity and happiness for the rest of the time you’re on that machine or until some OS-upgrade messes up the startbar again.

Another thing is to take advantage of AeroSnap. Messy disorganized windows can be dragged against the side of the screen to “snap” to half-screen. You can then choose what you want on the other half of the screen. If you don’t choose anything else, you can open another window such as Windows Explorer (Win+E) and snap it onto the other side. Now you can freely drag-copy files between locations between two Windows Explorers windows. I know it’s a poor-person’s Norton Commander or whatever other file-manager you like, but it’s a process you can do on any windowing OS without a special software install, so it’s a good technique to know.

Okay, so that’s housekeeping. Housekeeping is important, primarily for reducing daily stress and increasing overall happiness in work and life.


Okay, so now the nbdev stuff that’s been tripping me up.

It mostly has to do with formatting the contents of my mlseo repo’s docs folder to be GithubPages-ready.

The nbdev_nb2md command has been failing from the Linux-side command-line. Try it from Windows! It seems nuts, but it IS another thing to try.

I’m running the 10_requirements.ipynb file that I have as part of mlseo to upgrade all the pip components. I saw JupyterLab get upgraded, which is curious. I wonder if when I quit and load the desktop version if it will be the upgraded version. Don’t forget to git commit the requirements.txt to the mlseo repo so I can get back the environment real quick after a JuptyerLab upgrade via the old technique (Settings Add/Remove software). I’m currently on Jupyter 3.3.2-2. The pip upgrade says 3.3.3 is on my machine.

The 2 upgrades that have been held back for compatibility reasons are:

Package    Version Latest Type
---------- ------- ------ -----
mistune    0.8.4   2.0.2  wheel
websockets 10.1    10.2   wheel

Wed Apr 13, 2022

Windows Home Folder vs. Linux Home Folder Under WSL

The #1 priority when getting ready to do anything tech is a starting-point. You need to get back to where you were. This is surprisingly more difficult than it may sound. There is where you are putting files in your local system, and there are usernames and passwords on your Google and Github accounts for example. It’s important to use standard conventions (even if they’re personal ones) and it’s important to keep notes (if even just to document your conventions).

First, an explanation of folders, directories, git repos and Github repos.

The conventions I use are:

I’m starting to wonder whether is really the best place for this sort of content. I can sort it out however I like over time. It’s actually not TOO committal.

Okay, think! Next steps? I want one of the sites to be a nice, clean experience getting started… with Linux, Python, vim & git! Duhhh. Okay.

I’ve got a bit ol’ mission in life now, I guess. Well, it always starts with helping my child, wife and family. But after that, it’s teaching the world Linux, Python, vim & git in a particular way that helps make you obsolescence-proof and disruption resistant… a new kind of literacy.

Okay, so… 1, 2, 3… 1?




Sun Apr 10, 2022

Teaching My Wife vim

I’m in the process of teaching my wife vim. This was a long time in coming. I could tell from her watching me vim-journal from time to time that she had those pangs of “capability-jealousy” and I may have inadvertently triggered her by having to “think out loud” to myself as I typed and thought and thought and typed, right as I am doing right now. It may appear to be the ultimate meta-process, thinking out loud to yourself in vim, were it not for emacs. I think that thinking out loud to yourself in emacs would be even more meta.

But I digress. Clearly I’ve switched my mindset to public audience in my private journal typing here. Okay, commit myself:

:badd ../whatsametafor/
(smosh on k a bunch)
j & k to position

…and here I am typing again right under where I pasted. How’s that for meta for you? What just happened here is that I started out journaling for the day in my normal daily journal, which is in one folder under github (a consistent location I store all github repos) and I loaded a file from a folder sitting next to it, named for the site that’s published via Jekyll integration from there. So I’m web-publishing just by copy/pasting between text files and doing nothing more than the git commits and pushes that you’d do for any repo you kept in Github. In other words, there’s no more work to web-publishing these days than there is backing up your code to Github or some other git repository the way everyone should be doing these days anyway

My life: good dev habits lead to web-publishing merely by remembering to copy/paste the parts you write with an audience in mind to the appropriate text file. Better still, catch yourself early as your audience-targeting shifts and copy/paste immediately and continue your typing over in that repo, exclusively.

Sure it leaves the double-entry out of your main journal and a sense of everything-included continuity the main journal could acquire. But the theoretical value in that is far outweighed by the near certainty that the inspired writing is actually going to be committed and pushed in a timely and reasonable fashion. Too often I stay in my private journal thinking I’ll copy/paste later and I never do. Then it’s too much work to sort out public from private, because my mind is no longer in that same place it was when I wrote the material.

And so here I am on, one of my all-time best wordplay domain names and one of my few ventures into a TLD. I’m still a bit skeptical of .NET seeing as how even that was a target of Microsoft embrace-and-displace. TLDs other that .com are in various ways corruptible. We saw that with the .tv and .me extension where the issuing country can jack rates until nobody wants to renew. I gave up a domain over renewal rates. I used it as the custom domain for my personal Tumblr account, back when that was a thing.

Anyhoo, I think in vim. It’s clear when I’m “seen” typing. I have a different process than most. I was missing something in life. I knew what it felt like from time to time. It felt like Cygnus Editor on the old Amiga Computer, more commonly known as CED. I take that back. It’s not commonly known at all. In fact I’d be surprised if a single person ever reading this has ever heard of the CED editor on the Amiga before this. On Windows PCs circa Windows 3.1 and 95, there was PFE, the Programmer’s File Editor. PFE is a great editor even to today with it’s macro record/playback muscle-memory friendliness. I might even be still using it today if I didn’t have to become multi-platform (Macs, Linux, etc.) and it’s lack of syntax color-code highlighting. Yes, I do like some “power-tool” features, but thankfully so does Bram Moolenaar, the creator of vim. Vim is multi-platform, but really, get your ass on vim… on Linux.

People find “grounding” in different ways. I find grounding on screen number one in a ribbon of virtual desktops. All mainstream OS’s support them these days. They are accessed on Windows, the most dominant platform still today, by tapping the Windows+Tab key together. It’ll do a nice zoomed animated effect. Mac had this first slightly different by another name. It’s always that way. Get past the tiny OS difference. In 5 minutes you can adapt to that sort of tiny key remapping new-normal. It’s the lack of virtual desktops altogether that would be devastating, like what happened to me for a quarter-century after the Amiga computer went away, along with my beloved Amiga+N blazingly fast full-screen flipping it allowed… in the 80s!

Well ladies, gentlemen and others, modern mainstream tech has finally caught up to the kooky stuff from the 1980s, and it’s time you looked closely at these features and benefited. I can see that most won’t. Virtual desktops are a mystery and more of a hindrance to productivity with mysteriously disappearing loaded apps and inconsistent appearance of icons on the task-bar. This is a shame as it is the single largest productivity-boosting and quite grounding techniques one can use on computers these days.

You can organize your thoughts. They always occur in a full-screen instance of vim on the first in a ribbon of left-to-right virtual desktops… or at least they do for me. I am fully and firmly in the habit of having my first screen full-screen vim with the same text-file loaded all the time. It is my daily journal. I keep it for life. I occasionally back-fill it with text-archives I discover in from lost data-archives in personal archaeology excavations. And of course it can’t go THAT far back. I’m putting back scanning my personal paper journals which I kept until I came to New York and got married. For reasons I am only now beginning to understand, paper journals had to go away and I had to switch my thinking-out-loud methods off of paper and onto something which I knew had to feel like CED or PFE.

vim was first released for the Amiga computer in 1991 on Fred Fish disk 591. I remember this. I learned about it in the Philadelphia Amiga Users Group, of which I was president there for awhile, meeting at Drexel University, the first college to require all their incoming students, CompSci-majors or not, to buy computers. And there I was a student and leading the computer club for an “enemy” computer there on their campus. Amiga had a rebel streak. vim came out on a rebel computer. I briefly looked at vim, probably loaded it a few times, it didn’t truly “get” it was to be my future heir apparent to CED and PFE.

I forgot about vim for a few decades. Then Microsoft Active Server Pages went away. I invested my heart, soul and know-how into what I figured was dominant platform couldn’t-fail, wouldn’t let-me-down proprietary alternative to the LAMP platform. Linux, Apache, MyPHP and PERL were all a bit too scary for me at the time. Microsoft .asp-files with SQLServer and IIS was just easier. It’s what everyone had running in their business and making websites from that made me relevant and valuable in the marketplace. How quickly reality changes!

Your ability to easily manage your Web-code in the editor of your choice, such as PFE, EditPlus (which I used), NotePad++ and such also went away with the .asp world. A mere “x” was added: .aspx. Alas, in that x were a cascading and crushing set of details that made all the difference. If you wanted to make the move to ASP.NET you were using VSCode.NET or you were suffering. There was no way to manage all those codebehinds and viewstates if you didn’t fully lean-into and embrace marketing & fad-driven vendor products.

I “got it”. I finally understood that there were at least 2-classes of tech. There was timeless stuff that you just kept hearing of and it seemed to never go away. Then there was the stuff vendors were trying to make money off of you every year with. There was a third-class, really. But this third class was of the sort that no matter how good it was, it was going away anyway because of the volatility of the platform it was made for, the lack of ongoing developer support or dedication, and the non-portability between platforms. This are things like CED and PFE. Gems that shined bright for blips in time. Vim comes from vi that started shining bright in 1976 and is still shining bright in seemingly endless variety, including one dominant one today: vim.

I balked against vim at first. When I started dabbling with Mandrake Linux back in 1999 and toyed with moving Scala Multimedia’s Website over to LAMP from ASP a person I respected very little said in a pompous tone: “Well then I guess you’ll be brushing up on your vim skills” to which I shot-back, I can use pico/nano very effectively to edit text files, thank-you-very-much. Close brush number-two with vim. I did not switch to LAMP in the early 2000s. Instead, I stayed on ASP, moved to NYC, became a vice president of a public relations company, and slowly drifted into the oblivion of a bad marriage and sudden soil liquefaction of all the tech that gave me superpowers.

Ugh! The pain. The betrayal. I don’t learn things easily. And when I finally learned I had to get my ass of Microsoft and EVERYONE ELSE TOO whose intentions regarding my dependencies was not noble. And so I discovered free and open source software, it’s long, interesting history, and the text editor wars. I thought surely both emacs and vi must have died out by now. There could not be software so good from the 1960s and 70s that could still be in regular use today. How wrong I was. And when I corrected my wrongness and chose videogame-like muscle-memory-biased approach of vim over the deeply macro-oriented and customization-biased approach of emacs, I suffered my way through the first legs of my vim adventures… on Linux. Because I quickly learned, it had to be on Linux.

And so now I go through this same adventure with my wife.

It is deeply meaningful. It’s hard for me to imagine other people have similar “tool betrayal” issues as me that could lead them to such radical steps as dabbling in a non-graphical user interface these days.


Sat Apr 9, 2022

Always Be Publishing Via Journaling

Definitely keep thinking and keep moving forward. Evaluate your sites:

Always be writing for one of them. Create that overarching story for the public that pushes you from 10K followers on YouTube to 100K to a million and beyond. Have that fuck-it attitude about YouTube and the need to be successful on YouTube.

I should really just pick one of these and make it my major site. Update it almost every day. Or also maybe just treat them like they’re all the same site. These are meta-issues and belong on That’s where you made your last few journal entries, so run with that for awhile. Switch this journal entry over there and continue very much with that “audience” (theoretical as it may be at this point) in mind… vim command:

:badd ../whatsametafor/

Okay, so now I have 2 vim buffers and I just copy/pasted a section of today’s journal entry over here to the on and on the next git commit and push, it’ll be published.

Hmmm. Okay, overarching publishing systems. Habits to compel you forward. Cialdini principles of commitment and consistency.

Tie all your medias together.

Make a super-script of some sort that begins to tie all your article content (here in vim, mostly) and your video content (entirely in YouTube) together with articles that work a lot like your finger-trick video/article. That is to say, align article/video combinations to search trends of at least niche-interest and search-volume so that they’re working for you 24 hours a day, 7 days a week.

Where do we start, specifically?

At the beginning and work your way out, stupid?

Okay, but WHOSE beginning? Mine or the theoretical audience out there (you)?

Let’s start with YOU. I start with myself plenty, being of the attitude that I really do this writing and video primarily for myself as a sort of thinking-out-loud function. Self-therapy, reflection, introspection, feeling your way through it, navigating life, using a sounding-wall, call it what you will, I produce lots of content that’s really not for you and honestly not even meant to be re-read at all. It’s the process of processing… of writing and getting it out that’s really important.

Talk about what’s a meta for, huh? That’s why I’m dropping that stuff here. This is the most self-reflective navel-gazing sort of writing that I’ll allow out to the public. It’s roughly analogous to the driving videos I do on the way to pick-up and drop-off my kid on the weekends, a 2-hour drive each way which allows me time to shoot a video in one of the directions.

Leverage all that. 1, 2, 3… 1?

Well, I always list my sites that I consider dropping content onto and developing. Why not do that for the audience here with a global navigation device that ties all my sites together. Then I can start to craft some sort of experience.

Pages dedicated to passion-worthy topics!

Making better use of jekyll but without over-committing yourself to jekyll.

THAT’S my 1, 2, 3… 1? step procedure. Jekyll templates!


Okay, there’s an easy win here before I make that global navigation. And that’s to switch from a journal site like it currently is (append that content to the bottom of this site) and use the Github/Pages interface to switch that registered domain over to serving the project, which more appropriately belongs on that domain.

Okay, all journal-like content has been yanked over here. Commit and publish.

Fri Apr 8, 2022

Jupyter Notebooks Are Dev Tools With nbdev

Well, I just copy/pasted that entry from yesterday about and nbdev out to that site. In fact, this very entry now will probably be the second journal-style entry over there. Get stuff kicked off. You can just start pushing stuff out as markdown transformed into HTML through the Jekyll system. That’s good for now. It’s a solution that abides by the 80/20-rule to large degree. It’s the documentation publishing system that this trick uses, along with the associating of custom registered domains with spaces. It’s a good trick.

As I get more advanced, I’ll use some sort of “make” process to build these journal entries from whatever, and perhaps to paginate and organize them into a more user-friendly surfable tree-structure or other navigation system. I’m keeping it open ended, because just like my YouTube videos, I’m doing this writing more for me than for you. If it ever helps you out in any way, I am of course glad I could do some good in this world. But it’s more about total immersion and practice in this Linux, Python, vim & git methodology I advocate.

Adeptness in LPvg doesn’t come easy and requires lots of practice. It’s with that practice, organizing content over a diverse set of sites will also come easy. It’s just copy/paste between text files, and eventually running some scripts to put things in place. The scripts can of course be triggered with a git push integration these days, but that’s getting ahead of myself. I’m focusing on nbdev and my advancements over the past few days right now. That’s where I push my own personal state-of-the-art forward.

Okay, just dump out your new realizations. This belongs on because it is all about tooling-up. Isn’t that my site? Well, I’ll sort that all out later. This is heady stuff and quite derivative from my LPvg approach, because it plays off of the honorary-mention of JupyterLab in my essential toolkit. JupyterLab is a game-changer for a number of reasons I’ll cover in a separate article. But when the time comes to do more advanced things than the Python execution context of Jupyter (clicking Run in browser) provides, there are basically 2 approaches: Papermill to parameterize Notebooks (still .ipynb) or nbdev to “extract” files appropriate for parametrized use in Linux scheduler/pipeline systems or even releasing as pip installable PyPI packages for publishing and sharing.

Clearly I went the nbdev route since I’ve been talking about it so much. In fact, I’m quite enamored with the approach and am willing to forgive a “make” process for the .py-file package-extraction just as happily as I’m embracing the web browser as a portal to a standard CPython.exe. For you see, Jupyter really is based on a fairly recent but always quite standard official Python release, and so all the skills and techniques you learn, even while running Python in a web browser, are 100-percent applicable to a long-term career involving Python, Jupyter or not.

I wasn’t keen on Jupyter at first but it won me over. I like generic old-school tools. I dislike Excel and I’m just this side of Linux guru commands like awk and gcc. I mostly use minimal Linux, Python, vim and git. That means no desktop graphical user interface. Mikey likey generic command-line interface. Generic means obsolescence resistant, disruption proof and a good candidate for the sort of muscle memory you use for natural recording and playing back keyboard macros. This is vim. It’s a zen-zoning thing. So it was to my great surprise I’ve added Desktop Jupyter to my indispensable toolkit.

I learned Notebooks on Jupyter Classic as running in a browser tab and installed by Anaconda. I fell in love with its unique exploratory coding environment and how you could mix in documentation and really talk about process. It was perfect for my field of search engine optimization (SEO), a form of data jockeying. I jumped to JupyterLab when it came out for the better user interface and promise of data-dashboard-building possibilities (as made clear by the dask package).

Anaconda changed their terms of service and Jupyter put out a standalone Web app version, and the world has changed. Nobody knows it yet, but stand-alone Jupyter changes everything. There is now the one clear best stepping stone into programming for newcomers… period. Not newcomers to Python in particular or even just Data Science or Machine Learning. But everybody with a mainstream desktop Windows, Mac or Linux can write and share in language and in a way where the skills will directly last them the rest of their lives.

Microsoft got close with their Store install when you type python from a CMD window and how it subsequently guides you to VSCode as a way to write and test your code. You’ll get a very recent Python 3.10 that works as python.exe but you’ll never have to because all of your interaction will be through VSCode. And if you’re fine with being dependent on vendor tools until the next time fads change everything and you have to retrain your muscle memory all over again, then you’re good. It’s a very cool aid.

But now that you don’t need all of Anaconda on your machine to get to the good part, Jupyter, then if you can find it, the Microsoft Installer file (MSI) for Jupyter provides a much better on-ramp to the wonderful world of coding in general and Python in particular than anything else I’ve experienced. Of course Mac and Debian/RPM have their own installers. We all win when JupyterLab works well stand-alone in this world of Web-apps and wheels.

I’m over 10 years int Python now, mostly though the vim text editor and headless Linux servers. That 10 years of Python was also in “fool-me-twice” mode. In other words, I’m determined to not get fooled again. And so I’ve steered clear of particular vendors and “vibes” of products that have steered me wrong in the past. And when I say steered me wrong, I particularly mean that the hard-won muscle-memory-bound skills of text-editor adeptness, automatic macro-making ability and such. I’ll always build upon what I know. I was quite happy to add new API-extensions to my Python know-how, such as list comprehensions, lambdas, the context manager, the walrus operator and such. But these all get layered-in over the years without invalidating all your past work. Python’s only at version 3 after 30 years after all. That says a lot about API stability.

Notebooks with a .ipynb extension or all the same Jupyter features in VSCode with a .py extension? Going the VSCode route with .py extensions is indeed very tempting and may even be the better choice for “pure” developers. Certainly if you’re using NodeJS in a “full web stack” you’re going to need VSCode. You can’t really manage the complexity of the directory structures and build process without vendor power-tools. But if the current fads of WebDev aren’t an artificially limiting criteria for you today, using actual .ipynb (Notebook) files through JupyterLab has its advantages.

Top among them is that Notebooks are intended to read like, well, Notebooks. You can go back and forth between code and documentation. The documentation are cells which are switched from their default mode as Code (Python by default) to Markdown. When in Markdown mode, a cell lets you use the abbreviated easy notation for making headlines, sub-heads, paragraphs, lists, code excerpts and the like without the overhead of full-fledged HTML tags. In other words, all those pointy brackets go away and you can focus on just content.

Wait, what? Focus on content in programming code? Yes, where better! Python’s top criteria when Guido van Rossum wrote the language was readability. Readable code is long-lived useful code. People having to inherit and take over other peoples code don’t have to adapt to style that much. Sure there will be some style, but the more people program in Python over time, the more styles converge onto a Pythonic ideal that makes you just as self-satisfied with your idyllic solution as in a PERL code obfuscation contest. Different vibes. Python’s got a good readable vibe that frees your documentation efforts up for really high level stuff.

In other words, because the operation of Python code is in so many cases, self-evident, your documentation can talk more about overarching purpose than the mechanics. Or when you do talk about the mechanics, it’s really something worth talking about because implementation isn’t immediately obvious.

Okay, so Notebooks good. Notebooks in standalone desktop Jupyter even better. .ipynb files have a reason to exist that doesn’t go away because VSCode can apply the Juptyer REPL-engine (what makes exploratory programming possible) to .py files in VSCode. In case you didn’t know, you can execute code in VSCode block-by-block just like in Jupyter because VSCode detects a Jupyter installation and “lifts” those features. You’ve got to love a Free and Open Source Software world. All sorts of feature-embedding Kung Fu is possible. And some of this VSCode Kung Fu appears at first glance to invalidate, or at least obsolete .ipynb Notebooks. As evidence they don’t I present to you the continuing growing popularity of Notebooks in all places where their Notebook qualities are actually an asset. Data Science, Finance and my field of SEO are three that pop to mind.

I have to force my way through next steps. I’ve recently overcome a number of hurdles working a Notebook developer tool, appropriately named nbdev, into my work-flow. It wasn’t easy. It still isn’t easy. But I have faith that it will become easy because the benefits are just so big. All those upsides of Notebooks has the one whopping big downside that when it comes time to automate, you need to either take the code out of the .ipynb Notebook environment, or you need ways to run your Notebooks a lot more like they were standalone .py-files, right down to supporting parameterized input so schedulers/pipelines can apply the same processes against different input.

As I mentioned earlier in this article, when faced with the choice between the two leading packages for these purposes, you have to pick a “vibe” such as it were. The vibe of Papermill works the actual .ipynb Notebooks into a parameterized, schedule-able, and otherwise automateable component. This maintains a Notebook-centric vibe. While appealing at first, the alternative sprang out of and a Literate Programming advocate, Jeremy Howard. You really have to listen to Jeremy Howard speak to appreciate how deep this goes. Google the still-living computer scientist Donald Knuth and Literate Programming to appreciate the vision Jeremy’s trying to achieve with nbdev.

Honestly, the way best-of-breed components build upon each other these days, it should be no surprise that someone connected the dots between components to release such potential. In particular, the iPython “REPL” engine existed before the browser-based version we know as Jupyter. iPython would become literally millions of times more accessible if only you could get to it through the familiar web browser user interface. So the dots were connected between iPython, Chrome browser components via the Electron project, NodeJS with all the components talking to each other through ZeroMQ. For those familiar with how the lightweight Flask weboframework sits on top of Werkzeug and the Jinja templates to release such vast potential by cleverly connecting the dots on the underlying components, it’s the same thing.

nbdev is a bit more subtle, but along the same lines. Arguably, Project Jupyter itself is serving the role of Flask, gluing together iPython, Electron and ZeroMQ, creating what we know today as the Notebook phenomenon. For those not familiar with the broader Notebook product category in academia that has been around for awhile that Jupyter has become the FOSS (free and open source) leader, it’s been dominated by such products as MATLAB (not to be confused with the popular Python package Matplotlib) and Wolfram Mathematica. These are products that math students in college use to solve all sorts of mathematical problems while embedding student notes. This field has been somewhat disrupted by Project Jupyter. While MATLAB and Mathematica are both commercial products with licensing fees, Jupyter is both free and open source and comes by default with Python, leading to a much greater ability to integrate whatever analytical processes you explored your way to in a Notebook to 24x7 automated systems.

Jupyter made a huge impact maybe a decade ago when the field of Science (in general) had a crisis of reproducibility. Studies showed that over 1/3 of all published scientific research was unreproducible by scientific colleagues given the same original data-set and the published findings. Given that a main tenant of science is that given the same initial conditions and processes, you can expect the same results, this was a problem. And nobody wanted to require the payment of commercial licenses to MATLAB or Mathematica to distribute reproducible science. Jupyter Notebooks were in ready-shape to step in and fill this vacuum. It was a perfect storm. So now a lot of people are in Notebooks working in “Lost” mode. That is, they have to sit there and press the button.

nbdev bridges that gap between Notebooks and 24x7 information technology systems. By that I mean that the very same code as is in the Notebook is the production-ready code being used in webservers or schedulers. You could imagine something that looks much like a data dashboard inside of Jupyter can be transplanted into a web environment so that a web address will reproduce that same dashboard in browser, or alternatively be emailed as a PDF attachment on a daily basis or updating a Google Sheet. Bridging this gap with nbdev is not merely a stupid Notebook-trick (as it would be with Papermill). Instead, it’s easing you into the world of standard (Notebook-less) Linux/Python code-running contexts.

Okay, so pip install nbdev. Easy enough, right? If you’re on Windows using the Windows Subsystem for Linux (WSL or WSL2), then you have to pip install nbdev a second time over on the Linux side. I highly recommend this because the tools are developed on a Unix/Linux like environment (Mac, I think) and using the command-line tools just works more smoothly. That’s not to say you can’t use the nbdev command-line tools from the Windows side, through say PowerShell. But I wholeheartedly believe that it’s easier in Linux, and this of all places should be where you begin your venture into the Unix/Linux command-line interface (CLI), also known as the Terminal or SSH Shell. It’s the “old way” that will never go obsolete.

I work in JupyterLab Desktop for Windows. This means that all the environment paths are of the oddball Windows sort. Consequently, it’s good to take up operating system independent habits such as using pathlib.Path from the Python standard library for all file interaction. Keeping your paths OS-independent will generally mean that you’re coding in a platform-independent fashion.

Now here’s the thing. That concept of you coding in a platform-independent fashion comes off as so many buzzwords. It is not. This is significant and new and different. Once acquiring some pretty good Python skills and a basic command of the “naked” or “headless” Linux code execution context (Raspberry Pi’s, cloud servers, etc.), you have always applicable, always relevant skills for a lifetime. The joke goes that when our machine children return to Earth in a million years to see what’s become of use, they’ll still have a Linux boot kernel. Learning this stuff has a long shelf-life and high degree of applicability.

So really it’s about “taking control” of a piece of hardware. Anyone can write a bit of code in Jupyter. But to really make it have an ongoing impact on the world, it needs to start running when some server somewhere starts running, and keep running until you want it to stop. So interestingly, the seldom-discussed big trick in tech is getting some code running as if it were an operating system service auto-started at boot. That’s the Frankenstein moment of breathing life into a previously powerless piece of equipment. That’s where real power comes from in tech. Anyone can install, run and use other peoples’ products. But I’m talking about having the generic ability to “make products”.

Recently thanks to some standardization in the Linux distros, there’s a “simple enough” boot sequence, service-launcher (daemons), scheduler called systemd. d is for daemon. Simple enough? It was copied from a pre-existing Mac OSX system manager called launchd. If you want to learn Linux a little beyond the ssh, cd and ls commands so you can take full control of a machine, you want to learn some systemd. We’re about 10 years into systemd and most major Linux distros are using it, so it looks like we’ve got a winner. Learn how to start services at boot-time essentially turning it into an appliance (setting up Docker images, for example) and you will appear to be a tech deity.

Okay, so once you’ve pip installed nbdev, what’s different? What’s changed in JupyterLab? Well, almost nothing you’ll notice straight away. Instead, there’s a prescribed workflow that kicks in. In this way, it’s reminiscent of data pipelining software or certain frameworks in which you simply adhere to a certain convention, and you’ll get some magical benefits.

First, you must know that there are command-line commands that have been installed onto your system. They go by such names as nbdev_new, nbdev_build_lib, nbdev_clean_nbs and such. They should be executed from the same command-line environment that runs your Python. This has presented a unique challenge for me with Desktop Jupyter for Windows.

Flash-update! I just tested the default Terminal configuration in Jupyter 3.3.2-2 and a Microsoft PowerShell is properly configured! Pip is working from there. The same Python 3.8.13 can run from there. I even tested a few of the nbdev commands, including command-line completion in PowerShell to cycle through all the different nbdev commands. nbdev_clean_nbs and nbdev_build_lib both worked. nbdev_build_docs had problems, but I only really got that working on the Linux side for the first time yesterday controlling the issues like hiding the async function. So now the PowerShell that comes up as a default part of JupyterLab Desktop has just now become very equivalent to the Anaconda Prompts did in the past. This is good news for people who haven’t taken the WSL Linux plunge on Windows yet. Don’t use this as an excuse not to.

On the WSL Linux side, I’m running Ubuntu 20.04. I boot directly into my daily working virtualenv where I’m running Python 3.10, which is slightly ahead of my 3.8 on Jupyter. I steer clear of the new pattern matching filter functions for now. I’m looking forward to Jupyter being on 3.10.

The main gist of nbdev, you can get at their tutorials. Here’s their minimal example and here’s their general tutorial

I’ll give you my main take-aways.

You can’t just make a new folder and nbdev_new in there. You’ve got to have a git remote endpoint and the easiest way to do that is to host it on Github. Also it should be public because of something about installing the git hooks. You can switch the repo back to private after running nbdev_new. Also if you don’t use nbdev_new, you can clone this template.

Once nbdev_new runs successfully, the next important thing to know is that there are fields that really have to be filled-in in settings.ini, including keywords and description. Some of them are edited out on the default and HAVE TO be edited back in.

There’s a bunch of commands in nbdev, but the main commands that I’ll use in my release process are:

I also like to make sure all my pip installable libraries are up-to-date. This can occasionally break nbdev. The package in particular that has to be locked at a certain version right now for the nbdev_build_docs procedure is:

!pip install -U mistune==0.8.4

Okay, so what I want to figure out most is how the html files in /docs get published. Clearly the index.html becomes for Github’s main project page.

Thu Apr 7, 2022

Okay, I’m Finally Keeping Audiences In Mind

Solve things in the order and way they need to be solved. Don’t over-complicate things. Make a journal entry that’s appropriate for public consumption on these very issues. Yes! The vision is that every day at least one of my journal entries is made with a public audience in mind and the publication thereof is really just copy/pasting between vim buffers and doing a few git commits and pushes. THIS is the process I should start with. Pick a site, any site…

I’m not sure about that site. It’s one of those fancy top-level domains that they can easily hike the price on you every year. Nonetheless, it may be the perfect one for these types of “meta” entries. What’s a meta for? Well, it’s for self-awareness, reflection and entering a more deliberate “human” and less “animal” state.

Okay, so is for open-ended rambling like this… free association from which all the meta-observations that make all the difference arise. It’s too bad that Facebook latched onto the concept of meta and ruined its real meaning for the rest of the world. No worries. The ties to the field of SEO with “meta” tags is still enough for the cleverness of this site name to remain relevant. Add to that the actual metaphors I’ll be writing about on this site and it’s very appropriate.

The same thing; to help you think better. In the former, there is self-reflective, self-descriptive, self-aware (what have you) “extra” data layered into a system. I the case of SEO it’s invisible meta tags in the head element of an HTML file. In the case of human consciousness, it’s I think therefore I am. That’s the first meta. Both are about self-awareness.

A metaphor is a story, situation or image where things stand for something else so that the same ideas, principles or insights can be carried over to the new thing. New ideas are difficult. They are inaccessible because of quite how much is new when tackling a new topic. Metaphors create the bridge between older, familiar ideas and the new. For example the field of SEO is full of metaphors regarding link juice and the distribution of liquid authority as it flows from link to link.

That’s all well-and-good, but what about the here-and-now? I’m doing this writing so that I can struggle my way to the next and the next and the next steps. So most everything now is about the pip-installable mlseo package. It is once again my own personal grab-bag of secret weapons and continuation of making myself relevant in the now. Pipulate and Levinux are nice but old and hard to update to the new world. Maybe keep them around for posterity, but all new effort goes into mlseo. Probably one day I’ll just make Pipulate and alias to mlseo. Okay, so next step? 1, 2, 3… 1?

Nothing improves until you can solve your nbdev problem in which the documentation is not really built well with nbdev_build_docs because its default behavior is to convert every .ipynb file… wait, is this still appropriate for this site? Forge ahead and copy/paste the parts that are appropriate for each site into the appropriate site. Don’t be artificially limited based on your perception of some unlikely theoretical audience. You are doing this writing primarily for yourself and primarily in your “normal” everyday personal journal.

Okay, so that nbdev problem. Get into these things deeper. Use the metaphors. You’re on that site, dammit. Okay, so let’s talk about:

Gotta get work done. Can’t get overly-distracted by the wrong things. But it’s okay to get a little distracted by the right things. So how can you know the difference? You stand over the edge of the rabbit hole and peer in. You may in fact tie yourself to a tree with a rope and lower yourself down over the edge to get a better look around. But don’t start falling like Alice or you may never come back up and out in time to finish and deliver the original work.

The Catch+22 is that your very career and abilities move forward based on occasionally chasing the correct rabbit down the correct hole, and you just have to get a feel for which is which, or maybe be lucky enough consecutive times to be on a great path. Usually it requires a very deliberate, very meta-like process to pull off rabbit-hole navigation. They most often act as show-stoppers, pitfalls, red-herrings or what-have-you.

And so here, nbdev itself is a rabbit hole. It reinforces my decision that JupyterLab standalone is a good idea. However there’s these little gotcha’s that show me nbdev is still bleeding edge. When incorporating an async function into 00_core.ipynb, I bleed. Do I even engage the github community? Okay, sure why not. It could help me think through it. Focus and put something out there. Let’s do it in an existing open issue.

Corner this issue. Document it well. Get it out there on github without creating a duplicate issue. Include barebones-to-reproduce screenshots. Ugh, to do this in a new folder I have to initialize it as an nbdev project. Do it but just borrow the already vetted settings.ini from another folder and make changes to it.

Okay, nbdev_new doesn’t work unless it’s already a git repo. Github too? Find out…okay, git init wasn’t enough. It needs a remote.origin.url, which in itself is an issue. It shows me that nbdev isn’t really an offline tool from scratch. You need Internet at least enough to get such a new repo in github. Do it! Okay, so…

Made new public repo in Github called miklevin/issues
git branch -M main
git remote add origin

Didn’t even push yet.


Success! Try nbdev_build_docs right off the bat… Okay, done. It is at [Github] which is really amazing for me. I usually just suffer with such things waiting for them to work themselves out, but I can play an active role really cornering them into seeing the problem with good documentation and screenshots. Whoop!

Okay, next? Come up with an 80/20-rule workaround. Honestly, I’m really only in it for the that it creates from the index.html and a series of other notebooks that I will very deliberately be adding, starting yesterday with google_analytics.ipynb

Wow, alright. That was pretty extreme. I actually made a new repo in Github and updated the to link-to and document the open nbdev case that I chimed in on. Hopefully I got the right one.

Okay, back to 80/20-rule solutions. As much as I hate it, I need my own make process. I’ll probably just start with a unix script. I see no reason for anything more fancy.

Think! vim… shouldn’t be too hard! No, I need a because I don’t really want to be pushing to pypy all the time. In fact, maybe it should be because I’ll still want to manually make pypi. Yes!

Mon Feb 21, 2022

Concurrent Web Crawling in Python

Happy President’s Day.

Mission accomplished on returning zipped input / output promises on an async Python function. This makes using it for key/value database recording very easy. Next step: handling a list of tuples as input instead of a list of URLs.

We’re going to make a package on PyPI (Python Package Index) where things get pip installed from. The package will be called mlseo, and it will have lots of great things for doing generic broad SEO tasks.

We finished a site crawler. It’s concurrent. It’s Python. It uses SQLite.

Fri Feb 18, 2022

Journaling As Performance Art

Okay, I’m going to keep pushing forward. Every journal I keep which is not my main private daily journal (like this) is actually now becoming performance art because of the ease of publishing these days. I keep stuff in Github anyway (still can’t believe it’s now Microsoft) and the publishing system is so slick and easy, it’s hard not to do if you’re already on Github.

This is good for me because I definitely have a predilection to think and plan without actually DOING the follow-up. By virtue of this auto-publishing such as it were, I am actually accomplishing something… actualizing, materializing, what-have-you in a way that touches potentially many people here in this local spacetime region. Sure, non-locality and eternal souls, but also the here-and-now. Sorry to get too wacky, but I’m a wacky guy.

Okay, next! Clearly I need to move everything over to mlseo so that no matter what comes up, even the complex “RankLayer” which is one of my big featured deliverables at work, should be a light and breezy Notebook that I can push this way and that into different deliverable types. See? Everything looks like a nail when all you’ve got is a hammer. But the point is to make it a whopping good hammer. Okay… next! Again…

1, 2, 3… 1? That’s how I instantiate. 1 in this case is re-establishing state from yesterday when I was doing so well. Do I live-cast? No, but embed yesterday’s video into the below entry. Okay, I did that and pushed and checked and it worked. Amazing that’s the world we live in. Just keep making an impression, whether there’s livecasts and videos being produced or not.

Okay, let’s start moving more functions over. Let’s tackle concurrency. I already have httpx imported and I fixed the links on the site so it’s good to do another crawl. This is where I can make a big improvement. In the past I created a get_responses function which got fed a list of URLs and returned the responses. However there are several things wrong with this model. Ugh! Fixing it could be weird API-work.

I want to be able to feed this function either:

What comes back should be a list of tuples. The first position of the tuple should be whatever was used to make the API-request, be they actual URLs or tuples that got transformed into API-requests. I need to handle both. Interesting!

response = get_responses(list_of_urls)
response = get_responses(list_of_tuples, func_name)

Yes! This thing has to be designed to either receive a list of URLs OR a list of tuples and what to do with the tuples. It’s got to be fairly rigid in the fact that each tuple gets fed to the function. Here’s my test:

def foo():
    return 'bar'

def get_responses(requests, func):
    return requests, func

> get_responses([1, 2, 3], foo)

([1, 2, 3], <function>)

Okay, now detect if func is func:

def foo():
    return 'bar'

def get_responses(requests, func=None):
    rv = False
    if func and callable(func):
        rv = True
    return rv

get_responses([1, 2, 3], foo)

Okay, now start handling list of URLs when provided:

def get_responses(requests, func=None):

    rv = False

    use_func = False
    if func and callable(func):
        use_func = True

    if not use_func:
        if type(requests) == str:
            requests = [requests]
        if not all([good_url(x) for x in requests]):
            return "Input must be a list of URLs."

    return rv

Okay, and now handle lists of URLs and lists of tuples (plus func) differently:

def get_responses(reqs, func=None):

    rv = False

    use_func = False
    if func and callable(func):
        use_func = True

    if not use_func:
        if type(reqs) == str:
            reqs = [reqs]
        if not all([good_url(x) for x in reqs]):
            return "Input must be a list of URLs."

    resps = []
    for req in reqs:
        if use_func:
            atup = (req, "foo")
            atup = (req, "bar")

    rv = resps

    return rv

> get_responses([1, 2, 3], foo)

[(1, 'foo'), (2, 'foo'), (3, 'foo')]

This is what we’re used to for fetching http (web pages).

import requests

r = requests.get(url)

Okay, pushed out a very nice video.

Thu Feb 17, 2022

Testing nbdev

Okay, let’s add some continuity here. I’ve been an SEO on and off for what, since like around 1996. Technically much of that was as a Webmaster. Webmaster led naturally to SEO in those days if you were connected to the purpose and action of the website. It was pretty clear they were the mouth of the opportunity funnel. Fast-forward 26 years. Still in the field of SEO. Actual job responsibilities have been all over the place. Always leaning technical. Rarely taking my own advice. Ugh! Time to do so. 1, 2, 3… 1?

Okay yesterday I did nbdev_new in mlseo.

I’m following the instructions at

Yep, as I thought you can’t nbdev_build_lib right away after doing nbdev_new. You have to set up the settings.ini.

I really only had to un-comment-out the copyright and description fields, and nbdev_build_lib works. Yeah, that made it create the mlseo subdirectory that I thought was supposed to be there. Okay.

I also just tested nbdev_build_libs which worked. It looks like all .ipynb files get converted into documentation.

Okay, I’m making progress. Now do some planning!

Okay, in mlseo/mlseo there are only these files:

And so nothing is really being exported as a default package. This is different than cloning the nbdev template from Github. There’s a little more you need to do for yourself, and so you just need to know. Namely there ought to be a file like 00_core.ipynb.

Look at the Notebooks already in mlseo. Okay, deleted tests.ipynb. I’m leaving Example.ipynb (for now) and will keep the .py files that are in there already. All packages will be generated into mlseo/mlseo so whatever’s in is really only copy-from candidates. But the biggest copy-from location is really my seokata repo (also private in Github).

Okay create a new 00_core.ipynb.

Record the dependencies.

The first cell is:

# hide
from nbdev.showdoc import *

…which of course is comes from pip install nbdev.

I will make sure that the “black” uncompromising code formatter is being used everywhere template-wise. The cell doesn’t have an export comment so it won’t end up in the exported package. Also, iPhone Carnets doesn’t support black so make a note about that for the user.

List the types of tasks you want to be able to do with this codebase.


So I’ve made great progress. The pattern by which all my future SEO deliverables will be produced.

Kite or TabNine plugins on standalone Jupyter? No, doesn’t look like it.

Did the live-cast.

Wed Feb 16, 2022

Making mlseo pip installable

Well, so another day. I’m going to use mlseo as the pip installable module name that will take the place of pipulate in my heart and mind for awhile, because I don’t want to go breaking things on people.

Do it all the nbdev way. I have to get the making of packages into my fingers. Think! Your publishing and sharing of the fruits of your labor is no harder than git committing and pushing this to the mikelevinseo repo in Github. Thanks to Jekyll’s magic publishing system, this pushes out. And, okay, think!

1, 2, 3… 1? If doing things the nbdev way, follow the nbdev instructions. Recycle the existing mlseo private repo that I have. I can keep files in location so long as there’s not naming convention collisions. I can bill this as doing a revision into nbdev. Documentation!

Step #1: Starting point? Oh yeah, it’s

Okay, so visualize the result. I want to have a package called mlseo. It should have all my latest techniques, especially focused around pulling data out of Google Analytics, Search Console, performing “SERPs” and various other data pulling, transforming and saving options. The idea is for it to become a sort of Mike’s Best-of Python for SEO tricks.

Okay, so make sure nbdev is installed and at it’s latest version. That’s important because I’m experiencing things breaking and being fixed in the nbdev_build_lib process among other things. Break and fix bleeding edge with nbdev, for sure.

It’s also worth noting that all the package creation and extraction work is happening on the WSL2-side of my Windows laptop. So that (Linux terminal) is where I am doing:

pip install -U nbdev

Okay, try:


Ugh, it’s a private repo. I had to create a Github personal access token. Okay, yes from terminal I had to type:

export GITHUB_TOKEN=[Github provided token]


Executing: git config --local include.path ../.gitconfig
Success: hooks are installed and repo's .gitconfig is now trusted

Wow, I didn’t think it would be that easy. Okay, this is Jeremy Howard we’re talking about here. Get ready to have a meme infect your mind. Be ready and open to it because his preaching most suits this choir. I’m ready to jump on the nbdev bandwagon, then soon thereafter. But first…

Look at the mlseo repo. Do ls -la command. Do git status command. Figure out what nbdev_new added to the folder. Oh yeah, settings.ini is the big one. That is what needs to be setup correctly before any sort of releases, and perhaps even before any sort of build. There’s now a folder also named mlseo which is where the packages will be “extracted” to, but I already have an file, so this will be a little awkward for awhile. Good news is that unlike Pipulate which may be deployed out there, mlseo’s been a private repo, so I won’t piss anyone off. I also won’t be too quickly sharing, even though yes I am documenting it here where it’s public. Perhaps I’ll throw it public in time, but for now… next step?

Oh yes! This is where things start moving over to Jupyter! I’m starting to appreciate the selection of the name Jupiter and changing of the i to a y. It’s omage to Python. I should really talk about that in a video. Not only that, but it’s subversive also in that it’s going to be working more and more like a large body with lots of mass gobbling up everything around it.

That was actually a hurdle overcome, nbdev_new’ing into an already existing private repo. Check!

Tue Feb 15, 2022

All Repos Under ~/github

Boy how time flies. At least this approach is proving to me the ABILITY to have continuity if not consistency. These repo folders all under ~/github make the master list of projects easy to skim through, so long as they are not too numerous. Folder propagation inside ~/github is a potential problem I need to keep an eye on. There’s need for organization and pruning. Speaking of which

Sun Nov 14, 2021

How I Became Obsessive About Obsolescence-Proofing

Hello World! I’m Mike Levin. I’m an SEO who hasn’t done much SEO for myself in ages. In the early days before Google got so smart (before RankBrain), I could do almost any page to the top of search results, given the targeted keywords were anything but the most competitive (and fortified) out there. I was the master of the long-tail, and even helped coin the phrase long-tail marketing in the industry. Today, I don’t even hold the first position on my own name, much less any automatic revenue-generating side hustles. It’s time to remedy that, and you can follow along as I do it in this much more competitive landscape.

SEO stands for search engine optimization. I got into the field in the late 1990s when I switched out of graphic design and print production into being a webmaster. My path led me into New York City as a vice president of a tiny marketing agency that was looking for some high tech super powers. I provided it by creating HitTail, Web 2.0 keyword suggestion tool in 2005 that had a 15-year run, finally being shut down in 2020. It was much longer-lived than most products from that era. I got a lot of things right. With a little refactoring, tender love and care it could have had another decade of life breathed into it juiced with machine learning, for basically the same purpose as a writing topic suggestion engine. Who knows, with all the AI-writing tools, it probably could have done the writing too. But that’d have been too spammy.

So why didn’t I nurture HitTail and upgrade it to the modern world? I was only offered 10% ownership which is fair as it was work-for-hire, but my heart wasn’t in it anymore. Also I got married and had a kid and had other priorities. My life sort of went crazy as I bought a half-million dollar apartment NYC apartment at which time members of my family went on a needless war with the neighbors. Life at home went downhill and I couldn’t focus at work. This was unacceptable in NYC marketing agency life where you’re always-on and always need your A-game to stay competitive with the millennial youngin’s flooding the job market. Meanwhile, the old world of Microsoft Active Server Page (.asp) on which HitTail was built was going away and the new breed of “full-stack” webdev based on JavaScript libraries, jquery and bootstrap at the time, were repulsive to me. Node was just appearing on the scene.

Since then, it’s just been one JavaScript framework after another. It is a mean landscape. Early on one of the most complete and over-engineered entries in the ring was Google’s Angular framework, typically used with MongoDB, Express.js, AngularJS and Node.js (MEAN). Ugh! I couldn’t see myself going from Microsoft’s IIS, SQL Server and VBScript to another stack with a steep learning curve and short shelf-life. I was right to wait because Soon Facebook threw ReactJS into the ring, which was slightly less mean, but not much. Code generators vomit up tons of scaffolding reminiscent of how Ruby on Rails works, another web framework I tried and hated. JavaScript, and to a lesser degree Ruby, are just not my vibe. Over the years I must have tried taking up Ruby twice and JS five or six times. Every time I back off saying “not for me”.

That took us from coming out of college with in 1992 with a graphic design degree from Drexel University through the rise of the Web around 1996 and repositioning as a webmaster doing Microsoft .asp web development, being in NYC having developed HitTail in NYC by 2005. I met my soon-to-be wife in 2006, got married and my professional life started going downhill. My skills were very last-era and I was on the hamster-wheel rat-race of NYC marketing which I hated almost as much as the JavaScript frameworks I was going to have to learn to stay modern.

In thin double-crunch-crisis I realized how deeply damaging wrong moves could be at this time. I had images of flipping burgers in my 50s, unable to support my soon-to-be-born child. I saw my dad go through such a decline. He did not have the benefit of Google and the Internet. I think it would have done him good. His research turned up

My dad ended up obsolete in his own field as a textile quality assurance engineer, was forced to switch businesses in his late 50s, bought a check cashing store, died from diabetes and heart failure, dumped the place on me where I almost got killed by a robber. I considered myself lucky to even get back into tech after that, you know as opposed to dead. At 40 with a kid on the way the way with my marriage and career going downhill, I was terrified of going obsolete in my own field just like my dad. So I made a study of it with a fool-me-once won’t get fooled again attitude. I was 40. It was 2010. I was losing altitude, terrified and motivated.

Mon Aug 30, 2021

All My Sites Will Be In Play

I am now 51 years old, and I’m STILL an SEO! Okay, the idea really is to be a Datamaster and a Master Carpenter, such as it were. Even walruses get in trouble by not having and knowing what they need. And so that’s where I focus my attention, having and knowing what I need to always get by in life. And that is all kinds of data collection and scraping stuff.

And so general SERP collection is about to go into my general project. I have to do it so darn much! Okay, THINK! What you’re typing right now is going on Your general “in-play” (or soon-to-be in-play) sites are:

But don’t get distracted by that yet. Okay, and so this site is where I think through the SEO issues of all the sites.

Thu Aug 26, 2021

Struggling Through Github Pages Startup Process

Hello World! Launching LinuxPythonvimgit… gotta think about how I’ll write it. Linuxpythonvimgit… yeah, that flows best. But LPvg is the “stack” acronym. Think! 1, 2, 3… 1?

  1. Set up DNS. Show the nice people the “before” (no site)
  2. DNS propagates almost instantly. Show them Github 404 page.
  3. Make a git repo. No Github in the picture yet (except DNS).
  4. Add a new repo to Github. Name of directory really inconsequential.

Ugh! Forgot to cd into the folder again! Let’s make a few adjustments… Okay, that’s better. Folder name doesn’t matter, but I think I’ll go for 100% consistency in my convention. Also moved .git invisible folder and the file I made into the better named folder.

Now do step 4 for real…

  1. We make the branch we’re working on named main…
  2. We identify the location of the remote repo (on Github)…
  3. We do the first push which must name the branch…

Wait a moment, and show the nice people the “after”…

While we wait, we show that the 2nd push is easier…

See… just “git push” on the 2nd push!

Oops! Missed an important step…

  1. Go to Github / Repo / Settings / Pages and configure!
  2. Choose a Theme (combined it with step 8)

I think we’re just still waiting for the Jekyll magic to kick in for the first time on this site.

And there it is. It overwrote my Let’s fix…

Oh yeah, always do a git pull after these steps. Github wrote stuff into the repo!

It didn’t overwrite my It automatically used a different branch of the repo. I’ll have to delete that branch.

Hmm… Okay, after switching Github Pages feature back to main branch of repo, I had to reset a few blanked settings including Theme and custom domain. Once I did it was pretty quick.

And finally I’ll expose a bit of the Jekyll system that’s going on here. Ultimately I’m trying to dramatically reduce my “Tech Liability” of running a bunch of sites, getting WordPress and the unending upgrades and security risks out of the picture. That’s a vast simplification of the publishing process, but there’s always a cost. And in this case, it’s learning yet another templating system… oh, and framework convention… yuck!

Let’s go look at the Jekyll documentation… okay, so there’s a whole curly-brace based templating system… just like everything else that like almost ever was… except back when it was <% %>. Pointy/percents of the ancient Microsoft HDC/IDX conventions have made way for the conventions of… uh… maybe Ruby stuff that came after. Python people will know the Django framework and Jinja template system extraction… all the same really. Some syntax invented for intermixing with HTML and a subset of some language’s logic used for variable logic flow. Jekyll no different.

So I’m jumping right into a global default template that goes in a conventional location. Let me show you those kooky framework conventions of Jekyll…

So I’m about to drop a x_layout/default.html down on this site to eliminate the header…

Ugh! Gotta turn off markdown rendering in vim in markdown files. Who needs it? Just slows down these pages when they reach a few hundred thousand lines (which they do). Okay, I digress.

That Google Analytics code is from While I’m doing this step, I might as well get the correct GA tracking in

  1. Add the x_layout/default.html (ignore the x’s) in order to remove default banner of theme and to add GA code.
  2. Get your GA tracking code (funky process)
  3. Don’t forget to git add the layout folder!

There you saw Github dropping new files into the folder. I momentarily interacted with the Pico/Nano program which is automatically used by git because they don’t want to drop the uninitiated into vi/vim.

It takes a Ctrl+O Enter to write the file out and a Ctrl+X Enter to quit the program. It’s just to document the merge changes. But there are no file collisions in this case, so no merge issues. See? The CNAME file and config.yaml file got put in location by the Github Jekyll system.

Changes Jekylling. That’s the before. See, header still there and no GA code…

That’ll take a moment to propagate. Let’s go the full distance and set up Google Search Console, which is mainly a matter of site verification.

  1. Set up Google Search Console. (TXT record)

That DNS entry is taking a moment to propagate. That’s just the way with that minor miracle called the Domain Name System. When you think about what it’s doing, it’s amazing it’s as fast as it is, so sometimes you just have to wait.

Okay, I know I did it right. That one it’s saying it found… does not match what’s showing, so it must have been one of those 2 I deleted out right at the beginning. One was a parking record and the other WAS a text record, so that must be it. I’ll just be patient. It’s not like you’re going to see data come in right away as GSC has a couple days delay.

Anyhow, that’s pretty much it. You saw everything but registering the domain in launching a new site on the Github Pages system in this live stream. I’m very happy with it. But now it’s coming on 5:00 AM and I really got to get started with my work.

Got some SERPs to scrape. Later gators!

Tue Aug 24, 2021

Time To Tell My Stories

Hello World. It’s Mike Levin, SEO in New York City. Technically now I’m now really Mike Levin, the Poconos Pythonista since quarantine and lockdown hit, I got my ass out of Dodge, such as it were, back to a sort of “home” I’ve known growing up, the nearby tiny mountains of Pennsylvania. It’s right near the Delaware Water Gap which is lots of beautiful State park.

I’m one of the blessed able to telecommute for whom lockdown turned out to be more of a boon than a bust. I feel bad for how many lives were lost and I know herd immunity is both truth and tragedy. But humanity was through it before and we’ll be through it again. The best we can do is to be prepared without being paranoid, and for a long time I new that being at Ground Zero was not the wisest move for either me or my family. But my child is inextricably bound to the suburbia of New York City known as Staten Island, and as long as she is I have to stay close enough for weekly pickup and drop-off. Okay, so where does that leave me?

Oh yes! I have stories. I have lots and lots of stories, and I need to tell my stories. I will be using all sorts of information tricks and principles from my career of search engine optimization to ensure that my stories last forever (insofar as I can).

Every time I write, I should endeavor to have the content “land” in the correct sorting bin, such as it were. I really hate having different places for things because it increases the mental overhead of organizing and sorting content. And the worst is registering yet another domain, but I just did that anyway:

It’s really long overdue given my schtick. Try to get into the groove of “never not be publishing” (on one of these sites):

Fri Aug 20, 2021

Adding Google Analytics to Page with Jekyll

Hello World… again! This is an exercise in commitment and consistency. I have a number of small touches to do here. Let’s fix the .vimrc! Okay, that should do it for a start. See how it autowrapped. That’s a “hard” line return at 79 characters. Many people… oh I digress. Let’s get onto to Google Analytics on a Page site. 1, 2, 3… 1?

Templates! Now I know a bit more about what’s going on in the examples I copy/pasted from. It’s all Jekyll Liquid templating language. Actually Liquid is from Shopify and Jekyll simply uses it… It’s just another curly braces template language like Django’s Jinja templates. It’s all basically the same with different nuanced rules. But nuances are all very important and I hate it when I have another thing like this to learn. Knocks something else out of my head. Keep tech liability low! That’s what we’re really doing with the Github Pages system for publishing vs. say WordPress… ugh!

Okay… No Google Analytics on, but on…

Hmmm. Gotta even make sure I have it installed right on, which I only did recently. I thought those two codes would be the same…

Let’s look at Google Analytics site… so you get to see me fix a mistake on the site I was trying to copy the example from. It was only a few days. Anyhoo, I get that same piece of code now but for a new site. Have to add it to GA…

So there’s the “before”. Let’s push our commits and get the “after”

It’ll take a few moments. I’ll organize the tabs… I still have to do some SEO. And the next video is going to be REALLY COOL with Jupyter Notebooks.

Okay, that’s it. That was the point of this video. I now have GA installed on Very basic. All default settings. But I can always tweak later. This satisfies the 80/20-rule!

And you see a “template” from the Liquid system under Jekyll under Github Pages.

So you see how the YouTube embed made me dive deeper into something that I was originally just using copy/paste examples and verbatim instructions? It’s great to get started and learn “form” but you really have to understand more of what’s going on underneath.

Thanks, and later gators!

Fri Aug 20, 2021

Jekyll include tags for YouTube Embedding

Get really good at the technical moves. When you’re ready to publish things publicly, you have several options.

I need to develop some new habits to compel me forward, daily. Switch this over to public casting! When getting ready to broadcast publicly, I have to be very careful about this screen #1. I don’t want anything proprietary displayed. So I need a little ritual when getting ready to live-stream.

I feel confused and have to get rid of that confusion. Not merely get rid of it, but knowing what’s important and why, and achieve a bit of clarity, motivation, and forward-movement in life.

The streaming preparation that I do also applies to my entire system, like anything in my browser. So… gotta achieve clarity. What do I do? Well, as always:

1, 2, 3... 1?

I set up hotkeys to start streaming and stop streaming. Do a new test…

Hello World! I’m doing some new tests. Of course first is the transparent webcam headshot, an OBS feature. Next, I want really to have better looking YouTube embeds on my pages. You can’t see it but I also used a keyboard shortcut to get OBS itself out of the video and once I have confidence I’ll get this page… out as well.

Okay, so the embed…

That will take a moment to complete. Meanwhile I should set up that site,, the way I did, meaning having it as the place where I really start writing about topics instead of my main journal (here) from which I would have to copy/paste all the time to publish it.

Okay, that’s done! Wow, I’ll update the ones on the other site…

That’s “before” and that’s after.

Okay, done. Onto main work!

Fri Aug 20, 2021

Embedding YouTube Video Thumbnails on Pages

Hello World! I’m streaming again. This time, back in my main journal. I’ll try to stay pure about an advancing story in Mike At Eleven. Honestly, that site is to reach out to my daughter and to start the steady slow build on YouTube that I know I can accomplish as sort of a side-gig without hardly trying. I know that because I’m at about 10K viewers without really trying. And now by having some discipline about daily publishing and processing my ideas, I’ll be releasing a lot of built-up potential. Anyhoo, there’s a few refinements I couldn’t wait until tonight at 11 to do. Namely, YouTube video trimming because now they have an editor, and this streaming stuff is new to me, so I’m showing OBS and the YouTube “start streaming” screen more than I want at the beginning and end of videos…

Ugh! I can’t get to the Editor button like that video says is supposed to be there. I may have to do that immediately after livestreaming, or perhaps a few hours past after YouTube is done all its backend processing on different resolutions or such. Anyway, I’ll got to the next quick edit I want to do, which is to embed the respective YouTube videos on each journal entry. I experimented with that on my tictacufosightings site…

Okay, I have today’s to do too…

You’ll see me get better at my vim skills too as I have to do certain tasks more often. Copy and paste with outside software (OS copy/paste buffers) is often a challenge with vim. Gotta get some fancy maneuvers into your fingers. And it’s different between Mac and Windows.

Gotta remember to push up the git commits to make better use of time when demonstrating these things to you…

That was a strange feedback loop. I have to make sure I have my video IDs correct. But as you saw I took the opportunity to add markdown headlines. There’s a lot of good SEO going on in these sites too, especially long-tail principles as I keep it on one page. That may change in the future as I add Jupyter Notebook side-folders to do fancy tricks.

Anyhow, that’ll do it for now. Oh, let me add a to-do list with a special jump “link”. There’s actually link/tags in vim, but I don’t use them. I prefer unique text (usually prefixed with underscores) at the top of the document…

And now whenever I’m anywhere in that journal, I just jump to top with _jxp, hen I find _jxp, nit “w” to go to next-word and shift 8 to find next occurrence.

Okay, that’s where I’ll stop. I’ve got:

Fri Aug 6, 2021

(Re)Launch on

I liked the way things were proceeding yesterday. I made a good start and then it was aborted. Is that an okay word to use anymore? Just like adopted. Everyone takes something personal and those are two loaded words. But the fact remains, I’m getting into it again today. And this is in fact how I’ll publish my “book”. I should probably just call it a blog to alleviate the out-of-proportion expectations on myself. I hate the word blog. It’s a journal. So where was I? Ah, this itself is an important point. The journal provides a steadiness and continuity of thought. You CAN pick up were you left off.

This is sort of a smoking bullet situation. THIS is where distraction sneaks in, keeping me from being productive. New stuff. Discovery. Committing to decisions, actions and follow-through. 1, 2, 3… 1? Find DNS for in GoDaddy… done.

Okay, delete all the ANAME and CNAME records on Keep only the NS and SOA (start of authority) entries… done.

Okay, now find that article on how to make multiple registered domains resolve to under one Github account… okay done

Okay now make a new github repository that’s going to contain the static markdown pages for this new blog/journal site… okay, done. Love having these skills. Almost second nature now.

Okay we now turn on the Github features. It’s got a new tab of its own called Pages. We tell it which branch to use. We tell it to enforce https.

There are 4 A records for Github’s nameservers. However the actual resolution of the site’s name is a bit of a mystery. I don’t want www. I want it to be hosted on the “naked” apex domain (registered domain). And so I look in the Github settings again… yep, you just enter it in Github settings. Woot!

It published as the homepage. Look into that later. But for now just start putting these journal entries starting with yesterday and today up there.

Okay, that’s done. But a final last touch or two. Namely that annoying “View on Github” badge is showing in the template. Ugh! I don’t even want to go through this customization process again. I already did this work for, the prior site I used for.

Okay, that’s done. Also added Google Analytics and Search Console tracking. That’s it for now. I’ve got the pattern down for slamming out new websites. It goes something like this:

Thu Aug 5, 2021

Make More Use of for Blogging

Welcome to My name is my blog. And the best place to start is at the beginning. So here we go.

I’ve wanted to publish a book my whole life. But for whatever reasons, I never have. Yet publishing has become easier than ever. So now there’s almost legitimately no reason that if I REALLY DO want to publish, rather than just saying that, I should be ashamed of myself for not doing so, at least a more regular blog without the years-at-a-time time-outs. So this is it. Tackle each issue and make it the subject of the book itself.

It’s always too meta with me. Meta just means being self-referential. In my industry, meta tags are invisible information about the page that could work as instructions to browsers or search engines like Google. However, meta also refers to that strange quality of human consciousness that lets us say I think therefore I am. The best laid plans are laid waste by allowing your mind to go meta about a thing too soon. There I go again. Shoot, gotta get over that every time I start out trying to tap my creative abilities. There is no surer way to self-sabotage more than to think too much about what you’re doing. Just keep writing and let it flow.

1, 2, 3… 1? That is my forever-motto. I always seem to be on step #1. But hey, if you’re making up the rules as you go, why not? Oh yeah, I am always making up the rules as I go, because I rarely if ever fall into a static state. Actually, I do all the time and I’m projecting terribly by saying that I don’t. My objective in life and career is actually to avoid falling into a static state, ever. However, I know that I do. Heard of the funk? Yup, the daily grind, the routine, call it what you will. While it is safe and eases the scared animal within us all that hates the uncertainty and tomorrow, it is also the soul-crusher and the source of much unhappiness and early death.

Step 1 in this case is actually getting this first bit of typing published. You’d think that the publishing platforms and tools would have come first. I own a WordPress instance on a cheap Web host and could totally push this out there. But that site is one of the things that’s wrong right now and will be the subject of a WordPress to plain-text (markdown) migration. I don’t want a WordPress instance in my life. I don’t want the hosting issues. I don’t want the cost. And I don’t even want the general tech-liability. It’s a moving-parts thing. Simplicity is generally best. Even if things are complex under the hood, as they probably are in the method I’m moving to, I don’t ever have to see or think about them.

After I export my old blog as markdown files, which are really just text-files with bare minimum formatting instructions, I’ll be dropping them onto Github where the system will automatically formats them into pretty HTML with a tool called Jekyll that’s built into Github. Really there’s probably a lot of complexity going on here. But from my perspective, I’m just going to be pushing a bunch of text-files onto Github with a git push. More on git later. Suffice to say for now, I actually write nearly every day. Writing is not the problem for me. It’s getting it out there, and I’m piggybacking on all the other tools I use for day-to-day work, the way I earn my living, in order to push the files out there without too much tech-liability or overhead added to my life. And this is good.

I’ve already got one site published on currently. All I’ve got to do is to see how to make a second registered domain (apex domain) resolve (be hosted) there. So I’m going to go look at my portfolio of domains. That brings up the issue that I’ll be switching all my registered domains from GoDaddy over to NameCheap, but that’ll be another story. I need a strategy for this book publishing, and it’s going to be following:

I’m already running out of time in this writing session. And so I need to do a quick 80/20-rule evaluation:

That’s 3 metaphors. They’re my 3 daily metaphors of organizing my work, and eventually getting through everything. I need to figure out how to host a 2nd domain name on So, pick a domain… GoDaddy / My Name / My Products / Domains. Okay, in my typical tradition it’s going to be So click “Use My Domain” and then DNS / Manage Zones.