A blog is the idea of a log on the web. I'm pretty sure I invented blogging when I built the first blogging system for Nike to cover the Nagano Olympics in Feb 1998. I created Teleport Web Weaver, the first server-side web authoring tool, about a year before that. Sigh. Those were the days. 😉

I write this blog mostly for myself and adult peers. Every word should be taken in that context. One reason I include it here is to help you decide if I'm the kind of person you would pay to be around.

If you are a member or student under 16 stop right there and go someplace else. I use adult language in the following page (and only this page). You have been warned.


I started SkilStak mostly because so many systems -- not just education -- are just so woefully broken. Fixing this stuff first requires calling a lot of it out for what it is and creating a dialog about it. That's not the same as complaining just to complain.

Therefore, if you continue to read below, be prepared for

  • a high level of unedited verbosity,
  • getting your feelings hurt,
  • strong, changing opinions based on current facts,
  • a fair amount of uncomfortable raw personal sharing,
  • pedantic, impolite ranting,
  • unapologetic technical jargon,
  • regular attacks on moronic ideas,
  • countering mob and sheep mentality,
  • the not-so-occasional curse word.

Bringing about change is usually very messy business. Just being passionate about a scientific fact (such as climate change) can make some people your mortal enemy.

So be it.

Historically those who succeeded in shining a light on truth have suffered -- even died -- for it, Jesus, Galileo, Socrates, Lincoln, Aaron Schwartz. The least I can do is be ok with uncomfortable conflict for having informed opinions and calling out idiotic -- sometimes dangerous -- ideas -- at least as long as I am always willing to change them when presented new facts and attack the idea, not the person when possible.

And yet right in our neighborhood (at Hough High) is a "Computer Science" teacher who uses her class to promote her views of the Flat Earth Society. That shit has to be called out and I'm here to do it. If I have to be indelicate about it, fine.

In many ways we are living in the start of the Idiocracy film. Thankfully I'm not the only one noticing this. Heroes are emerging to stand up for what's right in their own ways. I hope I can be considered among them.

If nothing else, you will definitely get a sense of who I am and my personality. Consider it time well spent if it helps you decide whether to register or run away screaming. 😉 As I have witnessed those who need to find me will. This is for them.

9:04:14 PM, Tuesday, March 19, 2019

I really need to make a full article for Medium describing how to create aliases and functions for searching from the command line like this:

? what is bash
? why is the terminal so powerful
?? what if I want to search google from command line

Everyone who sees me do this demands I teach it to them immediately.

6:54:08 PM, Tuesday, March 19, 2019

I take back anything negative I ever said about Scratch. These guys are loving this and really getting a sense of when-then event-driven programming. The creative element makes it very addicting. With a renewed focus on empowerment above everything else this is core since they immediately have something created that can be shared. It might be level 1 empowerment, but it is empowerment. Finishing a task and getting a certificate and nothing else to show for it is not empowerment.

4:40:43 PM, Tuesday, March 19, 2019

So there are literally dozens (if not more) usages of the term KnowNet on the Web from radically different perspectives. Throwing yet another interpretation of the word certainly won't hurt (or worse, ruffle any corporate feathers).

There is no kn command in the Debian package system currently, so that's a good sign. kn it is.

The format for knowledge modules is the same as when initially conceived from the Essential Web days:

  • or or +
  • data.yaml or data.yaml.gpg or data.yaml + data.yaml.sig
  • *.{png,jpg} or *.{png,jpg}.gpg or *.{png,jpg} + *.{png,jpg}.sig

Secondary files can be anything at all, with or without encryption or signing.

An entire knowledge module can be zipped with any compression supported by the following ex extractor and may be titled anything that is a valid slug:

  • my-module.tar
  • my-module.tar.gpg
  • my-module.gpg
  • my-module.xz + my-module.xz.sig

This allows the maximum transportability and decentralization.

Everything on the KnowledgeNet can be created, read, and presented with nothing but the following well-established standard tools:

  • Pandoc
  • GnuPG
  • Vi/Vim

Obviously this means anything more robust can also be used. The goal is a minimal common denominator.

The language of KnowledgeNet is Pandoc's specific flavor of Markdown without any extensions.

3:13:11 PM, Tuesday, March 19, 2019

More evidence Egghead is just clueless is their recent referral to Google's Dart language as one that is compiled into JavaScript. Google has widely accepted that is not the core usage of the language (with TypeScript dominating in that space) but has made it a native part of their Fuscia operating system (to replace Android and Linux). Yet Egghead makes no mention of that. Instead they chose to emphasize the worst part of Dart, the part Google is trying to de-emphasize.

2:07:23 PM, Tuesday, March 19, 2019

The problem with Google having made $55 billion of it's some $70 billion a year from advertising and selling us is that when they launch a social media platform -- or more recently a gaming platform -- no one wants to trust them. Google destroyed its future profits by violating everyone's trust, same as Facebook. You can't come back from massive privacy violations and consumer commoditization. I predict Google (much like Apple has shown this year after loosing 50% of its stock value) will eventually seriously plummet, a catastrophic failure like that of MySpace and AOL and Yahoo before. When the lawsuits hit it will definitely be a critical point. They already are fractured internally and bleeding badly. The climate is right for global revolution, #metoo and the others have turned into absolutely no patience for questionable practices like these. Bubye Facebook and Google and Apple. You taught us a lot as you died.

("This guy is crazy." We'll see. I've called these before.)

11:39:49 AM, Tuesday, March 19, 2019

Pretty conflicted at the moment about whether to pursue the SkilBots challenge system I mostly completed that is built around the assumption that anyone using it have command line skills or more toward the SOIL direction that was more for enabling other educators with universal methods for simplifying and free education from the monopolistic hold that MOOCs have on them (BlackBoard, etc.)

The SkilBots system was going to be proprietary, but I've completely abandoned any ownership of anything at this point (and make my living off of membership and teaching gigs).

SkilBots are also perfectly suited to create capture-the-flag competitions because they can monitor a system for compliance checks and report on them.

The SOIL initiative was founded on what I now believe is a false assumption, that other educators and educational administrators will give an actual fuck about improving learning and focusing on empowering their students instead of controlling them, monitoring them, and dictating their futures based on their broken idea of what learning is. Let's be real. No schools do that today -- especially not the ones who make a big deal about doing that very thing. Reminds me of FOX News' "fair and balanced" tag line or Russia's main paper entitled "Pravda (Truth)", absolute horse shit.

So I will be taking down all the SOIL stuff and redirecting that effort into the KnowNet initiative. The few who are involved will quickly become 10x technologies and hopefully their expertise and influence will spread exponentially underground while the lumbering moronic pace of main stream reform continues on its slow path.

Harry Potter and the Order of the Phoenix comes to mind, once again.

11:20:24 AM, Tuesday, March 19, 2019

Scratching my head at just exactly what the International Association of Privacy Professionals does. The minimum for a student is $100 a year (I think)? And they have certificates that cost to earn. And they have "members only" content behind a paywall. And you can't go to the "KnowledgeNet" meetups without having a membership. What is up with all this privacy private club stuff?

I suppose it is because it is for "privacy professionals". But what about all the millions of people concerned with the privacy topic who don't want to join your private privacy club? 😕


They seemed to have taken the KnowledgeNet term and given it to their private meetups, which leaves me wondering if I should keep it for the KnowledgeNet framework.

Yes. Yes I will. Mostly because I want to use the kn command and already have the

I'll float KnowNet by the gang and see what they think.

"Are you in the KnowNet?"

Besides the word "on" was always a wrong. No one is "on" the Web. They are "in" it.

There are plenty of others vying for the KnowNet moniker, but who cares.

I'm not naive enough to think the KnowNet will grow to any significant size during my lifetime, but we can have fun launching it anyway.

10:54:19 AM, Tuesday, March 19, 2019

So turns out complete -W is virtually useless (not complete -F) since -W does not regenerate the list every time, which means you get only the list at the time the shell was initialized. So the verbose -F is required if you always want the most updated list.

10:30:16 AM, Tuesday, March 19, 2019

Oh my God, VuePress is so completely and totally broken, GatsbyJS as well. They completely fail on sites with more than 500 distinct pages, you know, like most sites worth visiting with lots of good data on them organized as flat URLs. 😉

10:14:25 AM, Tuesday, March 19, 2019

Elizabeth Warren has a plan for everything. She's attacking monopolies violating our privacy and selling us as products, she is seriously taking on the electoral college. I think she could actually do it. She practically single-handedly took down the financial crap despite being attacking by White House elite. Actually gives a guy hope.

9:25:16 AM, Tuesday, March 19, 2019

Chuckling at the Ad Blocker warning on the LinuxCraft site for using lynx as a web browser. Pretty much sums up how clueless the entire Web publishing community has become.

9:03:06 AM, Tuesday, March 19, 2019

Update: I was totally wrong on this. See 10:30:16

Working with Bash completion again (so great to have it) and realized pretty much everything most practical people do can be handled with complete -W "$(lswhatever)" mycmd so long as you never put spaces in anything output by lswhatever. The complete -F option is very powerful, but almost never needed.

9:41:36 PM, Monday, March 18, 2019

Women have always been in tech, just hidden away by men fighting constantly with deeply rooted feelings of inadequacy and unimportance at core level. As Campbell overwhelmingly showed, men need more to feel important. The first human gods were the "divine feminine", not angry white guys. Women are fundamentally connected -- physically -- to the universal cycle of life, men not so much. It is probably no accident that women and physically connected to the lunar cycle of our planet. At the great risk of being misunderstood, I say they are therefore more naturally connected to mother Earth than men will every be.

9:36:29 PM, Monday, March 18, 2019

When the slow moving government finally realizes how incredibly bad our cyber-security is and calls for a "moonshot" specifically to protect our electrical grid, well, people should be turning off the games and sports and focusing on truly defending anything left in this country to defend:

Serious threats to U.S. infrastructure, and especially to the electrical grid, have grown significantly in the past year and, as National Intelligence Director Dan Coats reiterated to Congress recently, “the warning lights are blinking red."

Read it yourself.

Then go and see all the systems publicly cataloged on for anyone to simply walk into legally.

9:28:18 PM, Monday, March 18, 2019

Just hearing about Love2D, a gaming engine for writing in Lua. I don't see the appeal at all. Whatever gets people programming I guess. It just makes no sense to learn something that has no value whatsoever beyond its specific use. Unless that is the best of breed makes no sense. The only thing I can figure is that it compiles to unreadable code for people who think they want to distribute their games on Steam or something.

5:45:31 PM, Monday, March 18, 2019

Doing a lot of Scratch today with beginners.

The new Scratch3 is really quite good. (The Flash version was completely and totally bad and based on seriously security flawed, dead runtime engine.)

The concept of Scratch for pre-algebra learners has always been amazing, even if it isn't real. The difference I have witnessed between beginners who have been using it and others who have never seen it is astronomical. In fact, three of my top coders ever all game with incredibly complicated Scratch code to show off when they arrived.

Scratch is a great substitute for anyone who has done any visual GameMaker (which is the freaking devil and has corrupted more kids games than I care to remember).

Inside the downloadable Scratch games (once unzipped) is just a bunch of assets and JSON. It is just a matter of time before someone writes an independent Scratch runtime allowing anything on Scratch to run independently in any web browser or site.

I'm quite surprised MIT didn't make that in the first place. Actually I'm not. They want control and the funding and prestige that comes with it. I bet MIT would even sue anyone who tried to make such a runtime.

Why MIT would want to shackle learners to their system instead of empowering them? Is MIT yet another fundamentally corrupt and horrible player in a academic system filled with cronyism? Probably.

This is really getting exhausting.

4:07:56 PM, Monday, March 18, 2019

Really happy to see added Bash language (and Julia). They even made sure to include wget and curl and perl so quite a lot can be done.

But here's the thing, they took away vim bindings and typing vi freezes your window. It simply makes absolutely no sense to teach anyone shell programming through a web page. Using the standard Chrome SSH extension gets you direct access to a real bash command line, container or otherwise. And when giving those learning full control they are empowered to also learn apt and pacman or any other software installation tools.

I mean what good is learning to automate all the things and create useful functions if all you have is a handicapped container to run them in? Why not give those learning real empowerment that comes with a Raspberry Pi running a true Linux shell or a container you run on a modest on-site Kubernetes cloud.

And, by the way, all the escape sequences for clearing the screen, suspending a terminal, and coloring things do not work and why would they. It's not a shell!

12:19:21 PM, Monday, March 18, 2019

Got this in my email last week from

Hi Rob,

There comes a point in a developer’s life when it becomes necessary to pick up some command line skills to save time from moving the mouse around a GUI that could have been designed better.

You spend some time memorizing which commands do what, and what order to put your arguments in, and after a while you get comfortable with the command line.

A while after that, you end up finding yourself running the same handful of commands with little differences here and there.

It becomes the same problem as before: You know you could be faster. You know that your computer should be able to handle doing repetitive tasks for you.

But it’s hard to know where to start, or who to learn from.

Luckily, Cameron Nokes has been at the forefront of the fight against Repetitive Command Disorder.

His previous course on automating daily development tasks with Bash is full of pro-tips on kicking your command-line-fu up a notch.

Now, thanks to all the great feedback from learners like you, Cameron has put together a new course that picks up where the last one left off.

Advanced Automation for Web Developers presents a deep dive into how Bash commands can be combined into workflow powerhouses in file management, dead dependency cleaning, and even how to automatically open new pull requests.

Invest an hour to work through Cameron’s course material, and be paid dividends in saved time.

I bet you can guess my reaction ... NO SHIT!

My favorite moronic thing they say is, "there comes a point in every developer's life" when that point should be within the first month of real development. Oh my god.

I ask for your patience, gentle reader. I am most certainly having a moment right now.

They even cite "repetitive command disorder" as a reason, which should be obvious to anyone who has used a computer for more than eight solid hours.

These are the reasons informed people have been pushing terminal-first development for fucking decades and now these people discover this amazing break-through and present it in terms of wellness and empowerment when it should be the first thing every developer learns! (At least England is starting kids out right.)

They do make one poignant statement, it is "hard to know who to learn from" because no one in America (hardly) is teaching any of this stuff until the third year of Computer Science at a university.

I will find solace in knowing that the mainstream is finally coming around, even if it means I have to read more suddenly enlightened proclamations made by arrogant young people making millions repackaging what so many of us have known for decades. We all think it. I am perhaps one of the few to risk the finger-waving for saying it.

"Toxic much? Why can't you just be happy they are teaching it?" I can hear you saying.

I suppose yeah, on that point I kinda am toxic. I am just tired of the combination of greed, idiotic ideas drowning out the good ones (earlier), and not-invented-here syndrome. These faults are not new to humanity, just really rampant in America.

Guess I won't be getting any kind of gig with egghead after this rant. 😭

12:13:54 PM, Monday, March 18, 2019

Harvard Professor Says Half of All Colleges will Be Bankrupt in 5-10 Years

Well duh.

11:49:25 AM, Monday, March 18, 2019

I love this story in the latest from the Raspberry Pi Foundation:

In Greece, Computing was introduced in secondary education more than 20 years ago. The current Computing curriculum often feels inconsistent, as a result of a series of focused patches over the years. However, it does allow for sufficient flexibility and is quite broad in range. It exposes students to fundamental computing concepts, familiarises them with programming environments such as Scratch, App Inventor, or Python, and steers them towards using computers as a tool for creative self-expression.

I absolutely love that line. Computers -- and particularly the Raspberry Pi -- are "tools for creative self expression. The Pi is the sandbox game of physical computing. You can do almost anything with it once you realize its potential.

He describes his job at the National Centre for Computing Eduction and I'm scratching my head wondering if America has anything even remotely similar. We sure as hell don't have a National Computing Curriculum based fundamentally on Linux running on Raspberry Pi computers. The best substitute we have is Tim "Apple" trying to hock Swift and iPads to unsuspecting idiots.

10:40:43 AM, Monday, March 18, 2019

Codecademy, that love 'em and hate 'em site, has added Phaser3 development lessons. I have been teaching it for almost four years at this point (starting with Phaser2 and now Phaser3).

The best part about this bit of news is that it completely validates my decision to teach this stuff four years ago when everyone else was teaching GameMaker, Flash, and other broken technologies. I have been a Phaser3 Patreon supporter for almost a year now. I am super happy to see Richard getting this level of attention. He so deserves it. He is a completely amazing human being.

After completing the lesson I have to say they did most of it very well. They opted to only teach basic functional programming and not to use arrow notation, which I understand even if I no longer do it to save learning time (teaching fat arrows and class methods, function is dead).

One huge complaint is them not using arrow functions where they make natural total sense.

They also use a much more complicated way of dealing with keyboard input. (this.input.keyboard.addKeys(KEYS) is so much easier.) But the worst part is that they use the absolutely, completely useless addCursorKeys() which should be removed from the entire library. It immediately confuses learners who want to add W,A,S,D keys and can't like addKeys(KEYS) allows. It also promotes use of the confusing and overly verbose state.cursors.left.isDown v.s. k.LEFT.isDown.

I have to support their decision not to introduce physics at all, but that is a serious blow to fun. Adding physics is phenomenally educational and just so much more fun.

But the biggest reason of all not to waste time with the Codecademy tutorial (and use the samples from Phaser3 lab instead) is because it entirely depends on using Codecademy's web site. The tutorial lacks that crucial element of focusing on full empowerment. Where do you put this amazing game you just created? What can you do further? These are all symptoms of the greatest malady in education, "Just do what I say while I explain it and shut up." There is almost no focus even on using vocabulary that potential learners would be using. It is as if the creators were focused on getting something cool out their to promote use of Codecademy and not really thinking how best to empower those learning there. (To be fair, they might not have even created a web-based educational system in the first place if they truly cared about that.)

To give you an example of what I mean. I showed the basic tutorial to a student and all the places to go and learn more as well as how to host it on Netlify (because he was already on GitLab) and his Math teacher asked him to code in a blackout period so they could actually have class. His game he researched and created in a week, which I only started him on, became a school-wide phenomenon. You can still play it at [](]. Yeah, his game was that successful.

This humble student now has a very legitimate project (and accompanying story) for his resume to submit to the many companies now hiring Phaser3 developers.

Now that is empowerment.

In contrast, I have had members beg me to release them from the Codecademy HTML, CSS, JavaScript (which they destroyed by adding all the Node shit) and CLI (ruined by teaching nano) tutorials. "Mr. Rob, can you please just teach me the same stuff. It is just so completely boring and I don't get to keep anything I am making during the process." Those are almost the exact words of two different members.

You will never find the empowerment of my "insanity" member at Codecademy no matter how many amazing tutorials they create. I applaud their intentions, just not their method and aptitude. They are more focused on keeping their funding coming through the door than on actual empowerment no matter how much marketing spin they try to put on it.

10:09:31 AM, Monday, March 18, 2019

For fun an advanced member and I did the classic magic eightball (now called oracle) project in bash with full color support.

oracle () {
  local answers=(
    "Yes that is so."
    "Maybe so."
    "No, definitely not."
  echo $(sol y)What is your question for the oracle?
  while true; do 
    read -p "$(sol b1)> $(sol b3)" question
    echo $(sol c)${answers[$((RANDOM%${#answers[@]}))]}$(sol x)

The cool thing about all the shell scripting is that members can show off their creations at any time because they are automatically loaded up into their Bash shell when they login. This association goes a very long way. It means there is no dependency on (which doesn't even have Bash still). It illustrates that anything can be added almost immediately to their personal tool.

It follows then that learning curl and wget are vastly more empowering than the inner workings of an HTTP library in Python or any other language.

A conclusion like that is only seen as valuable in college computer science courses in the 200 to 300 level (according to any search results that come up when looking for random shell stuff). This is somewhat objective evidence that really smart empowered people (CS college professors) value Linux and Bash, and alto Python.

Meanwhile back in the land of moronic public and private educational organizations. No one even knows what Linux or Bash is. 😦

9:56:52 AM, Monday, March 18, 2019

Realizing how much faster the learning is going for those who have the following hardware:

  • a Linux Mint laptop
  • a Raspberry Pi Lite server at home
  • a minimal Ubuntu server in the cloud

The difference is so remarkable that I have decided to base any new curriculum on that particular hardware footprint.

My goal is to provide all of it for minimal additional cost. $5/month to rent a laptop from me. A free loaner Raspberry Pi that they have to return when they stop coming. And a free Ubuntu Server docker image running on my k8s cloud here.

I think it is important that the Raspi not have any desktop environment at all, a short-of first experience with terminal-only demands associated with setting up, coding, and using a server. This will promote strong ssh skills and GitLab storage of essential dotfiles and other utilities.

11:58:36 PM, Sunday, March 17, 2019

Elizabeth Holmes and Theranos is exactly what most of Silicon Valley is all about. The rest are only now just getting caught, including Facebook, Google, Amazon, Microsoft and Apple. The place is a complete cesspool of greed, corruption, false fame and value manufactured and manipulated by people smart arrogant enough to get other equally horrible people to believe them. Anyone who thinks differently is like the extras in the final scene of The Wolf of Wall Street looking on entranced by the felon liar who still held a spell over the temporarily-delayed-millionaires all Americans think they are.

Miss Holmes is the epitome of everything wrong with people born in the 80s -- especially the smart ones. She valued "becoming a billionaire" over everything else. She felt like she didn't need to do the actual work of learning engineering. Her extreme hubris had her convinced she could do things no medical engineer had ever done. She was injected with that false sense of innovation and success that comes from thinking "she can do anything" (see SNL skit).

Well she couldn't.

Not because she was a woman, by the way. Because she was an arrogant, greedy, dismissive asshole who refused to listen to anyone around her who questioned her -- despite their false faith in her she had lied to gain.

Her chief chemist killed himself over it.

Yeah, now there's leadership. Lie, defraud sick people and doctors and lie about your cousin on Ted talks. Oh yeah, fake your voice to be really low just because it sounds cooler. What a fucking bitch.

Like any cult leader, she began to believe her own lies. That is how Jim Jones so calmly gave instructions over the PA to mothers giving their babies Cyanide-laced kool-aide. He completely and totally believes what he is saying. He isn't maliciously lying to them. He believes his own shit.

I'll bet she justified her asshole behavior (as I have been known to do) because Steve Jobs, Bill Gate, Ellison, and Linus Torvalds led the way.

Meanwhile people make fun of Stallman for being quirky. Pfff. I'll take quirky over a deadly sycophant any day.

Everyone (including me) should learn from all of these case studies that we have to constantly ask ourselves if we might also be self-deluded, we have to constantly challenge our own assumptions, even our own vision. We must surround ourselves with legitimately amazing human beings, such as my wife. Who can share with love and respect when we are just dead wrong, or even starting down a wrong path.

I welcome the reckoning. It is time for these cancer cells posing as humans to be sought out, irradiated, or taken out by medical nano-bots (like I hope a SkilStak member someday perfects). The question is, are we too far gone to recover. I want to think not.

Ironically the heroes of the Theranos story have a lot in common with the heroes and survivors of the Jim Jones tragedy. It was the real sense of community and accomplishment that bound them together. Often this is what powers those in a cult past the hard parts. The bond of community is strong and wonderful, enough even to overcome the obvious darkness emerging.

Those engineers who stuck to it, who worked as hard as humanly possible to see if the dream of "democratized health care" could actually exist and then had the courage to say that it simply wasn't possible, to "boil the water" as some bosses say by raising legitimate, objective concerns and suggesting alternatives where they might exist.

Thankfully such heroes are gaining more and more power and the billionaire manipulators are being forced ot face their own cognitive dissonance. Things will get better as long as no one is content to accept the status quo, as long as we all have the courage to call out bad ideas and just plain broken engineering early and disassociate our egos from it so we can course correct as soon as possible, not lower our voice, put on a mock turtleneck and lie about test results to preserve our image and falsely won investment capital.

8:36:50 PM, Sunday, March 17, 2019

Scripting is ultimate power. I've never been more convinced of that. It is the reason Perl dominated the emergence of server-side scripting in the 90s. It is the reason JavaScript is now dominating the graphics applications world. It is the reason Go, a compiled language, is essentially just a compiled scripting language.

Scripting is the closest thing to speaking to a computer. It will always be more efficient and practical than actually speaking to one (and without the required privacy violations to properly process the spoken words).

Scripting can morph to the demands of the individual, group, or organization faster than anything else. When problem arises, it can be quickly fixed and contained. For most applications this is beyond what is required.

Strictly typed languages have their place most certainly for larger projects. But the scale and scope afforded by modern scripting is plenty for almost anything.

Bash is the dominate scripting language at the moment, even more than JavaScript. Bash is really the ancillary to JavaScript, Bash on the terminal, JavaScript in the browser.

But as I've rediscovered, graphical applications are usually less empowering than a raw terminal (even though most of the planet disagrees with that conclusion).

Since scripting is the quickest and most powerful way to make a computer or device to what you want immediately it follows that context-specific languages, which are closest to naturally spoken languages, are the most powerful. This is why Bash and Perl are far more powerful than Python for scripting.

I have come to realize it is a moronic conclusion that Perl and Bash are bad languages because of their esoteric syntax and context-sensitive approach. These criticisms are lobbed idiotically by corporate types and others lumping them into programming languages to create brain-dead, immediately-full-of-technical-debt behemoth applications that bloated and brittle. Python is heralded as the "simplest language to learn" and that might be so, but it comes at the cost of true power and speed.

Truly mastering Bash turns a human into a cyborg faster than anything else. It is the common language agreed upon between the computer and the human.

One specific case of this comes up when considering something relatively simple. Do I create a Go or Python program to speak to my SQLite members database? Or do I cobble together a bunch of Bash functions calling the sqlite command instead. So very many might not accept the objective reality, but for this application it is actually faster both to code and maintain a system that using nothing more than Bash scripts.

The SQL statements can quick and easily be changed. They don't have to be mapped to any other data structures. When a change is needed all that changes is the SQL.

This ultra agile stage of development is absolutely essential in order to capture the actual requirements of a system and develop relevant solutions to problems in a given domain. The emerging code that gets the most usage becomes the focal point of use cases in a potentially larger system to follow.

If there is one huge mistake I have seen company after company make it is designing and deploying to large a system to early and never understanding what it is that they actually need. Company types need to authorize ongoing, flexible improvement to the system and hire those empowered to become familiar with the business needs and create systems from a place of caring about the system they are making. The ancient idea of handing off a specification to someone else is largely broken because that person or group will never understand or care about the system they have been contracted to build. This is why outsourcing fails to totally and incredibly. This is a lesson -- it seems -- the world has to learn over and over again.

The key to growth and success is empowering everyone in the organization with the capacity to participate in the technical deployment and design of the system. That is exactly why scripting is so important.

Of all the well-paid senior business people who have come to me to learn almost all of them did so because they felt "out of the loop" or even less respected by the technical people (hence The Man in the Taupe Blazer]). Had all of these people been minimally empowered with basic Linux scripting skills in Bash and Python and JavaScript they would never had a need to come to me. They are products of a broken educational system that somehow finds value in creating silos of learning and information. Thankfully all that is changing and more and more colleges have open curriculums which graduate more well-rounded people allowing them to explore without penalty.

Now all we have to do is help them realize they need to script -- not as an afterthought (as recently portrayed in its marketing for a command line class) -- but as core knowledge every empowered human/cyborg requires. Scripting is how you supercharge your cyber-self.

7:45:42 PM, Sunday, March 17, 2019

WinRAR has always been sketch. No surprise discovering it has been seriously security flawed for 19 years. I'm sure script-kiddies are having a full on party now (the rest already were but just didn't say anything about it).

5:41:23 PM, Sunday, March 17, 2019

Woke from a short nap in which I dreamed about KnowledgeNet, an extension of Essential Web which I started some years ago focused on enabling a freer exchange of decentralized knowledge that ensured both privacy and origination (through GPG). The concept included a decentralized, non-Web dependent network that allowed individuals to host their own content and share and redistribute in a peer-2-peer way. It is an effort that Engelbart, Aaron, Stallman, and Lessig would approve and support. I wonder if I could bake this idea enough to present to them.

Centralization is the source of power and corruption these days. A decentralized peer-2-peer knowledge sharing platform, sort of like torrent meets epubs is the idea, but true to Engelbart's vision the creation and capture of knowledge would be as simple as writing words. No HTML to learn, nothing but the simplest communication focused on the ideas and message nothing more.

I searched for KnowledgeNet and was very pleased to see the term was picked up by the IAPP which, apparently, even has local KnowledgeNet meetups now. I seriously need to look into that.

I went to see if I still had the domain (which had lapsed) and found that was available. Can't believe I snagged domain!

There is a little known (but substantial) network of curses-enabled web sites that will detect if being retrieved with curl or a graphic web browser and respond accordingly (curl, curl

This effort is a compatible foundation for SOIL leaving this stuff look something like. SOIL is a method and collection of best practices for helping others learn the way I do. (kn) is a grassroots standard for creating a new network of knowledge, a new web that focuses on words and minimal images, where is king over index.html, Markdown over HTML, one where the source code itself can be viewed as if in final rendered form. There is no distinction between a rendered and raw version. Everything is just EzMark Markdown.

The best part about such a network of knowledge is how completely easy it is to host and share. Anyone with a Raspberry Pi could host their own "knowledge node".

I'm starting to feel like how Babbage must have felt. My head is exploding and I feel like I am constantly fighting the clock to get these ideas out there and realized.

I really need to enlist some other great minds to help make the "net of knowledge" a thing.

10:44:53 AM, Sunday, March 17, 2019

Discussing with my wife the realization of how confused the whole #serverless model is for a better future Internet and how that might affect SkilStak when it became clear that the goal of empowerment implies a definition of what power is -- and perhaps more importantly -- how that power is used. This opens the sticky question of ethics in technology that cannot escape philisophical -- even religious -- biases and conclusions, again.

She reminded me that "full stack" means having some level of mastery and exposure to as much as possible so that one can select the right tool for the job. So many do not even know the most powerful tools that exist (Linux, terminal, vim, PWAs, etc.)

What is power to a 10-year-old? A 20-year-old? A 50-year-old?

Does gender and race play into one's definition of power?

Why do I care?

Because there is a decision to be made, or that has already been made, about which definition of power I follow when selecting and preparing learning material and projects.

This is further complicated by the reality that no one will become empowered who does not enjoy the learning. This is the reason I have always successfully used enticements such as Minecraft servers, memes, and game development. When the time is right I introduce the command line, Linux, the terminal, Vue and eventually vi.

Had I started with those (which I have done) what would become of those here to learn? Would they leave and hate programming? Would they stay and realize how amazing it is?

The answer I have witnessed is simply "both".

One thing I have learned is that when I impose my definition of power on others they simply chose not to engage. It is not unlike eating habits and tastes. Kids like sugar (as the disappearing Halloween Nerds stash has confirmed). I detest them. Kids like silly videos and cartoons. Nothing wrong with that. Aaron Schwartz's obsession with not wasting time and making a difference from the age of 5 was an extreme anomaly. Some call this "seriousness" or "maturity". It definitely is not just by age, but generally tends to be.

Therefore, the best I can do is attempt to project and predict what a single member might perceive power to be, create an IDP based on it, and identify the best technologies to provide empowering experiences based on that definition.

It's not easy.

One thing is for sure, this was impossible in a classroom setting -- especially with mixed ages and aptitudes. Solo and paired private lessons are the only hope of getting this truly right.

10:42:57 AM, Sunday, March 17, 2019

Sold a Thunderbolt monitor today for $200. Bought originally for $1000. New they are $400 on eBay. Still working on the list of all our Apple hardware for sale. Looks like more than 70% depreciation on it all. I suppose that is just the way of tech. 😦

9:57:52 AM, Sunday, March 17, 2019

I just realized the entire drive for #serverless and #mobile-first and #responsive is being driven by the graphics and media-heavy Web going to mobile devices, which is fundamentally broken.

Think about it, who cares about having static content on a CDN with 600 nodes all over the world if all you are pushing is server-side generated text with the occasional image.

The entire need for PWA service workers is completely deflated on a terminal/text-centric Web. The server-side can be as fat as needed and located anywhere in the world because those with terminal access to the content will enjoy 10x the efficiency with 100x less connections.

This fully enables, compliments, and even promotes the idea of server-heavy content -- even server-generated content -- which is also ridiculously safer.


9:40:22 AM, Sunday, March 17, 2019

Based on monolithic metric -- empowerment -- I have come to question if JavaScript is indeed more empowering than Python. Here's why:

  • JavaScript is ubiquitous but Node and NPM are seriously broken (Ryan Dahl's own words.)
  • The greatest empowerment comes from joining the terminal master race.
  • Python3 is much more powerful on the terminal than Node.
  • Bash is yet more powerful than Python3 in terms of empowerment.
  • A terminal command is usually easier and more powerful than a progressive web app.

In other words, anything a SkilStak member might create using graphic JavaScript will usually be for others and not their own empowerment or will be secondary in importance to a tool that could be made faster and more powerfully as a terminal command, first.

This is the odd exception where graphics are required. For example, games are very definitely in the Web and Unreal Engine space. More practical use of graphics can be handled by dynamic image creation from a command in the terminal more simply and powerfully than any Web interface and requires no centralized hosting.

This presents something of a dilemma. Young programmers are often attracted to game development, although not all, some also detest games in an aaron-schwartz-ian way, I have discovered, particularly the naturally brilliant ones.

Pushing those attracted to game development too early might put them off to the idea of joining the terminal master race. But is that an essential culling of the herd? I mean, if I am honest, I would love nothing more than only members who want to become terminal-centric users. Most applications of technology that will truly save the world simply do not have a graphic user interface -- but there are definitely some.

I suppose the conclusion is to ensure I give equal attention to Web development and terminal applications and make sure members understand how direly important it is not to listen to the hordes of sheep following champions of moronic ideas off the cliff of a JavaScript-only Web.

The thought makes me want to revisit the Knowledge Net and Essential Web ideas all over again. Hummm...

9:30:50 AM, Sunday, March 17, 2019

No web site with data to be consumed should ever depend 100% on JavaScript! It is sick and wrong to build in such dependencies. (And yet currently does for search because of VuePress, which I am rooting out.)

The idea of creating a blog that is "optimized" with any JavaScript is beyond moronic.

Thankfully there are plenty of sites and people that value the standards and origins of the Web enough not to destroy it with that idiocy. I have been been more convinced how completely and utterly naive the entire JavaScript community is. All the good ones (TJ, Ryan, etc.) have realized this and moved on. Only the script-kiddies clutching onto the language of their childhood continue to blindly promote a JS-JS-JS Web.

11:37:55 AM, Saturday, March 16, 2019

Bought another 10 32GB MicroSD cards for Raspberry Pi loaners. $7.30 each. The 8GB where $17 from the same manufacturer. Insane.

10:17:07 AM, Saturday, March 16, 2019

Locked down Chromebooks are the antithesis of good learning tools. The only thing worse is an iPad. Google and Apple are defrauding the entire education system. When Tim "Apple" says the following within minutes of each other it is pretty clear his priority is getting people he can put to work to increase Apple's bottom line, which is and will always be his priority and agenda:

  • "you don't need college"
  • "we are practically giving kids iPads in schools"
  • "we want everyone to do only our Swift curriculum"

Apple could give a shit about empowerment of the individual. They want them empowered alright, just with only skills that they can mostly use working for Apple.

Same thing for Google.

Meanwhile Great Britain is kicking our ass with Raspberry Pis running Linux for everyone and making Linux, the most important operating system on the planet, a core part of their formal curriculum.

9:56:53 AM, Saturday, March 16, 2019

I'm conflicted on whether to keep the script UNIX toolbox approach (smallest possible commands, one command that does the one thing really well) with the modern approach of adding monolithic commands with their own actions/verbs (like git).

My gut feeling is that the one-command approach was particularly important when developers were dealing with RAM sizes in the megabytes and not kilobytes.

9:54:23 AM, Saturday, March 16, 2019

Wife found this scholarship program for women:

8:16:58 PM, Friday, March 15, 2019

Just a reminder to terminal learners: CTRL-S will pause (suspend), CTRL-Q (continues)

3:31:51 PM, Friday, March 15, 2019

Watched 1984 with John Hurt and Richard Burton while organizing electronics and Raspberry Pis (all of which have to be set to en-US instead of en-GB). I had watched parts of it before but for some reason it struck me harder today. Maybe because I had learned of John Hurt's passing from an interview with his good friend from acting school on Steven Colbert's show. Maybe it is because John Hurt's face has come to symbolize the struggle for true freedom to me after watching V for Vendetta so many times.

While I am no more a member of Anonymous than our dog, Samadhi, I do have the very real feeling that all of humanity will have to stand up against a very real emerging evil powered by greed and as brainwashed as Winston by the end of the narrative.

Trump is a classic dictator with one tenth the intelligence of Stalin. People are utterly blind to what has happened in Russia. But I have studied this shit for years. Majored in it. Lived there. Watched them. I've deeply studied how the Stalins, Putins, and yes, Hitlers emerged. Yet, I'm but a babe compared to other scholars on this topic. All of them see the signs and quietly, politely do interviews and videos when they can calling out the comparisons.

Meanwhile, the Idiocracy scratches its head at all the words and changes the channel.

To say Trump is a Putin or Stalin is giving him far more credit than his moronic, encephalitic mind deserves. "For the good of the country" greedy, deluded, duplicitous, hypocritical politicians like Orin Hatch call this person 'one of the greatest presidents who ever lived'." (I would pay good money to learn what Trump is blackmailing him with.) Well meaning but uninformed conservative voters claiming to be followers of Christ put this narcissistic, porn-star fucking mobster anti-Christ into power, and now many of them are preparing to become violent to defend when he refuses to accept a loss. Their minds are as much mush as Winston's after Big Brother got through with him.

Is my mind mush?


The difference is that I accept the possibility. The others do not. That is the distinguishing difference between open thinking, and cognitive manipulation.

The possibility of real violence is more palpable today than since the time I feared for destruction of our world from a Russian nuclear attack back in the 70s. This is not paranoia. I am not alone. Thankfully, humanity consistently prevails against such evils.

"Beat the crap out of them, I'll pay the legal bills."

Yeah, that man is our president and actually thinks he earned and deserves his position of power.

When the last remaining shred of our democracy falls, if it does, it will be squarely on the shoulders of the once outspoken Republicans who denounced Trump, and then became his lap dogs praising him until the end.

Am I afraid of getting political in my blog?

I guess not. Mostly because I have high confidence most of them would have stopped reading in the first paragraph.

1:23:14 PM, Friday, March 15, 2019

This video perfectly captures why Google simply has to die. There is no reforming it. The very premise of the company ($55 billion out of $70 billion per year from ad revenue) simply has to die a horrible death.

"That's impossible."

To the doubters I recommend you read about Yahoo's dominance as well as AOL's.

The fact that Google purchased to specifically stop its competitor, and blocked using DuckDuckGo in its phones is beyond what Microsoft was convicted for.

"That's just the way it is, sorry to break the reality to you, Mr. Rob."

Actually it isn't. We make our reality.

Thank god the EU is awake and fined Google $8 billion ordered them to cease their aggressive practices with

Google literally controls your reality. It is far more dangerous than Time Warner or any other Internet provider because it controls what you see on the Internet directly and is completely unregulated.

I am so thankful for DuckDuckGo and those with the courage to fight this very important fight. I will relish Google's demise. The world never needed a company that would sell us as a product in exchange for feeding the cancer that is the advertising industry. is a shining example of good humans coming to the rescue in the face of a ravenous, greedy horde. This is a very real war for our minds, our reality, not just our dollars.

So yeah, working for Facebook or Google or Amazon is the last thing I want for any SkilStak member. might make it look amazing in their videos, but it is beyond naive to think your life would be for a good cause working for any of them.

"I don't care. I just want a job that pays really well. I don't care what the company does really and why should I as long as I work really hard and can support myself and my family. Besides, after I get rich at Google I could do amazing things with that money to help others. I just want to make sure what you are teaching me will get me one of those jobs."

"Did you really just say that?! Be gone, Sith Lord! Get out of my sight and never return! No code for you."


11:46:10 AM, Friday, March 15, 2019

On Thursday I slammed the hypocrisy of repentant, suddenly remorseful and enlightened billionaires unwilling to part with their cash, to "put their money where their mouths are."

It was a naive conclusion.

I've since realized during a conversation with my wife about something unrelated that someone like Bill Gates has an larger responsibility now that he is trying to give all his money away to make sure that money doesn't land in the wrong hands.

Imagine if Bill just gave 10 billion to a developing country he felt needed it without any research or consideration of how it would be used. It would be like the Vulcans coming to Earth prematurely and gifting us warp technology before we were really ready for it (which is why I am convinced our contact with extraterrestrial life defies objective statistics).

The conclusion is simple, now that these billionaires have this money -- and the incredible power that comes with it -- they have to be very careful how they get rid of it.

Combine that with the reality that the amount of wealth they have increases exponentially through interest and it is extremely difficult to give it away in a responsible way.

You could say their penance is now to spend the rest of their days making sure all their potentially ill-gotten gains actually make it to good people and projects. Ignoring it, dying and letting the country they are in just take it all is phenomenally irresponsible -- especially if they live in America.

9:09:31 AM, Friday, March 15, 2019

When you spend 80% of all your waking hours in front of a screen you realize how important small things all, for example visual cognitive consistency.

Think of the noise on a line when dealing with electronic or digital signals.

Now think of the human-computer interface that enables all of us to be "cyborgs" (as Elon Musk calls it).

We are all Borg. We plugin every single day, not with some jack, but with our eyes and fingers. Our eyes attach to our screen and our fingers to our keyboards. That is our modern cybernetic interface with our cyber-selves.

Given these facts it is no surprise that the cleaner and more efficient the interface the better our connection, the higher the bandwidth between our brain and our digital bus.

This explains why those who achieve membership in the terminal master race are so much more prolific with pretty much anything they choose to do. But that is the obvious part.

What isn't as obvious is how that is achieved. That is where my simply observation comes in.

A terminal with a consistent color scheme, font size, and method of cutting and pasting from the keyboard (thank god for tmux) allows much less cognitive overhead. There is no wasted processing. Even the muscles in our eyes can focus at one level and never need to adjust. The meaning of certain colors, 16 maximum usually is immediately digestible and understood by our brains.

It is worth noting that efficient interfaces are not meant to be aesthetically pleasing through variation, but more through elegant, beautiful consistency.

This is why the Solarized phenomenon exists. It is completely designed to prioritize and bring attention to stuff that matters and let the stuff that does not fade into the background.

This is also why a big fat ugly zsh prompt shows just how completely inexperienced (if not just plain stupid) you are. You have purposefully put a major cognitive block in place.

But the absolute worst offender is any graphical interface -- especially those riddled with advertising that deliberately means to distract us from the actual content. Why anyone would subject themselves to that cognitive war is absolutely beyond me. In fact, most have given in to the powers that be and do what they think they have to do. I know. I fell victim to it as well for a while. No longer.

The visual cognitive efficiency of a terminal interface workflow cannot be overstated. We are not talking about a few minutes of time savings, we are talking about hours returned per day. Any serious technologist should examine these objective realities. They are based on physics, not opinions.

7:53:58 PM, Thursday, March 14, 2019

Today was my last day of this "trimester" at Woodlawn. I still have another, but it will be my last. It was tough making the decision to leave, but it's the right one. I'm now teaching 42+ hours a week (again) and getting ready to launch our private Saturday night events again (3 hours, 7-10pm). Combine that with time to eat and maintain some level of physical health and top it off with the constant critical need to curate current tech skills and knowledge to remain a top 1% of the 1% tech learning shop and there simply is no more time.

One very important thing I noticed is that teaching a full class of students is vastly different than teaching solo and paired private classes. Just about everything is different. It is hard enough keeping up with one curriculum, let alone two different ones. Once I realized this the decision was solidly made.

7:34:37 PM, Thursday, March 14, 2019

I am seriously kicking myself for ever giving up vim and terminal for everything. Using any graphic interface seems to completely slow and clunky now. I WAS HERE BEFORE. That's the frustrating part. I forced myself to use nothing but a terminal when I was and "CGI Guy" at Teleport. It feels exactly like the same but with so much more available for the terminal linux master race (which is apparently a thing on Reddit). 😉

Latest (re)discovery? vi -s SCRIPT FILE

I can actually open this blog markdown file and create a new entry with a dated header simply by using the blog bash function (which I included here simply by doing a :.!type blog:

blog () { 
    [[ -z "$BLOGDIR" ]] && echo "BLOGDIR not set" && return 1;
    cd $BLOGDIR;
    if [[ -z "$BLOGSCRIPT" ]]; then
        vi -s "$BLOGSCRIPT";
    [[ -n isgit ]] && save;
    cd -

This level of extreme efficiency is only available to vi + bash + linux power users. It's just an objective reality -- and if you do almost all your development on a laptop it removes the need to use your touchpad or mouse.

6:31:53 PM, Thursday, March 14, 2019

Just found Sconsify, a terminal Spotify client with full vi key navigation. Sometimes I am incredibly thankful for the Internet. Yet another reminder that "terminal master race" is alive and well. It is so ridiculously more effective to use and browse music collections. I hate the lag looking through graphic Spotify or searching.

Spotify is now nicely tucked away one tmux window away.

The common GUI user will just shake their head at each of these terminal applications, until they see someone proficient using them. Then they want the power so bad you can see it on their faces. My job is to enable it for them as simply as possible.

Built a conf.d module for this in the new home-config. Modularizing these installs with the following scripts in each. For example,

  • sconsify/install.bash
  • sconsify/config.bash
  • sconsify/remove.bash

The idea is not original. It's just package management for home user configurations that might widely vary depending on the thing being configured. Some need installs, some just links, some PPAs, some AURs, some are in snap, some deb, etc. Who knows the idea might take off. It will never become some sort of registry.

I have also ripped out the concept of $EDITOR from home-config and just assuming vi from now on. It really is the only terminal editor that matters. Sconsify support of vi bindings out of the box just reconfirms that terminal nation uses nothing else.

10:25:47 AM, Thursday, March 14, 2019

Decided to migrate my dotfiles to a new Home Configurator project in order to kick start Linux command line beginners with the very best-of-breed tools and configuration for a terminal-centric existence. 😉

Decided to modularize the installation components so users can create as light or heavy of a home configuration as they wish, light for simple bashrc and vim setups, medium for just terminal centric, full for all the apps that we use at skilstak. There will be other levels as well.

8:39:42 AM, Thursday, March 14, 2019

WhatsApp cofounder makes billions of dollars selling his company Facebook -- and all its users with their data to now be monetized -- and then gives a paid lecture at Stanford (guilty of corrupt admissions processes) about the "evils of selling people's privacy" encouraging everyone to get off of Facebook.

Yeah, that is alternate reality these assholes live in.

Even Aaron Schwartz made millions off the Reddit thing before leaving because it suddenly conflicted with his ethics.

Put your money where your mouth is, hypocrites.

It is like actresses who made porn all there lives and then suddenly developed sensibilities about the movie industry. Or a black man paying to fake police brutality to get famous. Or Bill Gates running around being all philanthropic with the billions he made through decidedly evil practices. Or Thomas Fucking Jefferson who eloquently penned about "life, liberty, and the pursuit of wealth, uh, happiness" while owning the largest slave-drive planting operation in Virginia . (He actually made that change at the last minute). I bet he had slaves bring him his coffee while he wrote it.

My brain hurts, and my soul. I'm certainly all-kinds-of-hypocrite myself sometimes, but at least I'm looking for it so I can root it out.

How much can we attribute to just allowing people to be people and learn from their mistakes (even though they are now billionaires because of it)?

Obama and Michele were anti-gay marriage.

All of America as pro-slavery.

The Explained documentary talks about the value of "reparations" for slavery. It is based on this idea.

All of America says, "Oh yes, slavery was horrible. Thank god its past us now." Meanwhile, entire social classes are still basking in the billions of wealth earned from the blood work of slaves. Some of the hardest working Americans who every lived. Everyone is happy to proclaim their newfound wisdom and emotional intelligence, but none are willing to actually make up for it in ways that kick them in the wallet like they deserve. It doesn't matter if it wasn't you specifically, or how much you have learned in the process.

Do you let a murder off of death row because he has legitimately changed and is now sorry?

Do you reduce the fine on a father for stealing hundreds of people's retirement money just because he has innocent children who were not involved in the crime?

At least Bill Gates is trying his damndest to get rid of all that wealth he accrued, but he has so much of it, it grows faster than he can get rid of it. That is the reality of raw capitalism.

8:17:30 AM, Thursday, March 14, 2019

I was wrong about HTML tables. Turns out they are much easier for blind people to access than a CSS grid. The accessibility tools to navigate tables are already there and very mature.

(I looked into it before I added the GitHub Flavored Markdown table below, which both VuePress and Pandoc both support out of the box.)

Based on this I really need to update the EzMark spec (formerly BaseML).

I have also concluded that my time is much more productive and does more for my members dedicated to creating learning content and just using existing tools instead of writing new ones. I will still make soil but will employ a messy hodgepodge of best-of-breed tools (Pandoc, Bash, SQLite, Go) rather than polishing a single perfect app. Pandoc in particular has most definitely become the standard tool for academic writing of all kinds. Might as well use it as-is and contribute to it where I can.

I do lament having to abandon a Markdown spec that could be captured in ABNF, perhaps I can maintain that for EzMark without necessarily writing a parser for it (at this time).

7:04:31 AM, Thursday, March 14, 2019

Updated this blog with a rather lengthy preface. I have no way of knowing if and when people are reading it, but it has enabled me to more efficiently and sustainably dump ideas that would otherwise have potentially been lost on Twitter and Medium (as I was reminded by the day-long Facebook and Instagram outage yesterday).

5:48:40 PM, Wednesday, March 13, 2019

That Bottega thing just reminds me how broken our base expectations of education really are: to get a job. Yes a job is important, but it is a benefit of empowerment. When you focus on empowering learners your choices are based on the best of breed technologies and concepts and not the brain-dead old technology and practices of employers.

Employers also need to seek out empowered individuals and not just those that know what they think they need right now.

The whole system is broken and cannibalizing itself.

Clueless companies say they need more tech workers, so bootcamps like Bottega churn out tech workers that the companies say/think they need.

Where's the innovation?

Where's the modern technical advances?

This is why so many colleges continue to create crappy Java and .Net programmers because the ancient banks think they need to keep Java and their old Microsoft houses alive, not because these are the most empowering technologies out there.


By the way, their "accredidation" is from a private company and not the American Council on Education, which provides all the real accredidation. Looks like yet another well meaning Utah fraud.

5:40:54 PM, Wednesday, March 13, 2019

Just reading the news about "Utah's Tech Outcomes Show the Way Out of Nation's Tech Shortage" (having grown up there) and find myself laughing out loud at the Bottega "award-winning" curriculum that combines Python and React along with their other Ruby on Rails stuff. I might support their focus on getting more tech education but they are making ridiculously bad technology choices -- unless you are looking to just keep on churning out mediocre programmers instead of 10xers.

The most attractive thing about Bottega is actually all the proof anyone needs about how completely clueless they are: the fact that they are "accredited" and have "the only certificate accepted by colleges and universities." Meanwhile, in tech reality land Tim "Apple" and Ginni Rometti are practically begging people not to get college degrees for coding but instead learn to code through experience and projects (with or without a school involved) and apply to their companies like, as Tim says, ("50% of all Apple developers who don't have a college degree).

Bottega is just a typical, clueless bootcamp like all the others, except it is marginally better because it is not stealing your money and leaving you with absolutely nothing like so many others do. (I have heard the stories first hand and in person).

11:51:31 AM, Wednesday, March 13, 2019

Found this great interview with the creator of the vi editor.

11:33:49 AM, Wednesday, March 13, 2019

After two tests of teaching nano to beginners it has become obvious how completely and totally broken it is. It is actually less work to teach beginners vim with arrow keys (assuming they can ween off of them later) than it is to do nano -- especially if they start with a really good vim configuration and plugins.

In other words, all my efforts for editors will be focused on creating the most beginner-friendly vim configuration possible. nano just got eliminated from the curriculum again other than to mention it exists and isn't worth anyone's time. That isn't just me saying it, that is three separate beginners expressing their impressions after being exposed to each.

"Why bother with nano when I can just keep using VSCode until I learn Vim?" they say.

I agree. Turns out nano provides much less cumulative empowerment because once they learn VIM they will never learn it again. Better to us VSCode until they learn Vim and never discard any learning in the process.

8:05:10 AM, Wednesday, March 13, 2019

Realized there are several paths to level up in different full-stack engineering skills and tools. They have sort of emerged from the first stack, full stack changes (even though they were there the whole time):

L1 L2 L3 L4 L5
Text CSV Sheets SQLite PostgreSQL
EzMark Markdown Pandoc Latex PDF
VSCode Vim I Vim II Vim III Ed
Terminal Screen TMUX TTY Serial
Gmail Proton Thunder Mutt SMTP
Bash I Bash II Bash III Bash IV POSIX (Dash)
JS I JS II Node I Node II Deno
Phaser3 I Phaser3 II VueJS I VueJS II VueJS III
Netlify I Netlify II

(This is really rough and will need to be reworked, but the skill levels are taking shape.)

I love that you that this gives us something to hold onto. I like where this is going because it will provide a quick view of exactly what full stack means to SkilStak (since it is such a misunderstood and overused term).

This also reiterates the notion that there is only one title at SkilStak: Full Stack Engineer. By the end of a single block everyone can attain a Level 1 full-stack engineer. The increased mastery is denoted in the level.

The industry job postings will generally be expecting a level 4 or 5 FSE.

8:56:51 PM, Tuesday, March 12, 2019

I'm reminded how crucial and fundamental understanding screen is as I help these guys learn this stuff -- even before tmux. It is actually a horrible idea to learn tmux without first knowing screen and how to properly configure tmux to reinforce your finger muscle memory of screen which can be found on pretty much any UNIX system made in the last 20 years, tmux is harder to find. Same tmux for your cushy personal workstation/laptop environment.

3:52:42 PM, Tuesday, March 12, 2019

Just discovered another 10x developer mattn while looking at go libraries for SQLite. It's no surprise that almost all of his other work is creating amazing tools for the terminal and vim. He's also not that verbose on social media, but hugely prolific. Just reconfirms my position that most of the best developers and technologists are people that few will know by name. Steve Jobs couldn't even code. King of the posers.

3:47:47 PM, Tuesday, March 12, 2019

As I have been converting from Google Sheet to sqlite I have realized I could include a flat sqlite database generated with the full site containing all the meta data and keywords for the site along with a simple script or go command that queries it and fetches the markdown directly instead of trying to render it as html. This would effectively turn the soil executable into a universal man page tool for anything that follows the SOIL conventions.

2:57:50 PM, Tuesday, March 12, 2019

Spreadsheets are sorta dead. (Tabular data is still alive though.)

Google's support of JavaScript functions (instead of the ancient MS Excel formula language) is only one indicator. It's just easier to deal with data without a spreadsheet these days, no matter how elegant the API that you slap onto it.

That's the realization I came to as I moved my member data into a simple file and then later into a simple 'sqlite' database.

Decided to drop any education about spreadsheets and focus entirely on JavaScript and bash scripting and go programming with sqlite and sql instead. Much more empowering than just a spreadsheet now that a bash command line and sqlite are so incredibly easy to come by and integrate so much better into anything than just a spreadsheet. In fact, you could make the case that spreadsheets dead or dying for anyone with even rudimentary coding skills. All anyone needs to know about a spreadsheet is how to convert it into a table or so code their results to be importable into a table. Everything is JSON now.

Will business people born before 1980 continue to use spreadsheets? Of course, but I would bet the number has significantly dropped for those born after that time.

11:32:48 AM, Tuesday, March 12, 2019

A quick discussion with my wife reminded me we don't have to cater to every possible scenario. There are hundreds of different martial arts and yoga. All of them have largely the same empowerment goals.

There are thousands of different technologies for achieving the same level of empowerment.

It follows, then, that my style and selection of technologies is equivalent to honing a style of yoga or a martial art for a given organization. In fact, my martial arts instructor as a teen created Kung Kwan Do that fused two disciplines. I can do the same pulling from the of multiple tech areas.

All things being equal there is one best way to gain a certain skill or level of empowerment. That's my focus.

For example, rather than having many ways of editing a file I can focus on one specific way to do so if you have a mouse and another when you don't.

Based on this I will be returning to the following very specific, very minimal skills and technologies:

One core side-effect of this is I know exactly what to include in the tutorials and documentation. In fact, that was a key consideration of all of this. If you say, "well you can use this, or this, or this" in a tutorial you lose people. Instead, I will start all of it with a summary of the workflows and technologies of (what I think I will now call) the SkilStak method and people can decide up front. Of course, I will document why I believe in the SkilStak method for those who want justification.

10:14:14 AM, Tuesday, March 12, 2019

The ability to loan old laptops running Linux or Raspberry Pi computers to those who do not have something they can install Linux on at home has dramatically changed what I can teach and how.

For example, while VSCode is still useful for beginners because it gives them visual indication of what is wrong with their code and the ability to clean it up quickly with a "Format Document" menu selection, there is no reason anyone who wants to start doing development only from the command line can't do it with nano and then vim.

It turns out, in fact, that browser-sync (properly configured) is far more stable, resource efficient, and useful than the Live Server VSCode extension. My testing of bs + tmux + vim has proven to be far more efficient than a VSCode + extensions alternative. It is at least equivalent and does not require a mouse. If these efficiencies prove to be sustained throughout the coming weeks it means that the most empowering workflow setup is, in fact, command line driven (which was my original position before VSCode came along).

I have had original members really chafe at the idea of VSCode and told me they just would not use it because it sucks down so much battery life, which I have recently been really aware of now that I use a laptop for everything again. I allowed this and listened, but I did not internalize how significant a cost VSCode exacts for almost no additional benefit over what is possible with a fully command-line alternative. It is costly enough just to have one instance of FireFox running on a Laptop (or two if you could Discord).

Now that I have Linux again (and all the wicked efficiencies it brings to everything) and have seen students respond to seeing these efficiencies for themselves and preferring command line over graphic user interfaces I have to conclude that most of my original methods and approaches were the right ones but got muddled with Windows and Mac constraints in an attempt to force such efficiencies onto these highly inefficient operating systems.

Another reason was because my 1%-ers were so different from everyone else that I began to allow myself to wonder if that would keep them from being accepted in some way by the others in their peer and tech groups.

I could not have been more wrong.

In fact, of those who started that first year or two compared to the mass that started coming after that my star members have always been those who got cli + tmux + linux instead of the cutesy alternatives (yes including and VSCode, which I see now was a disastrous consideration despite how many actually liked it).

Turns out the fix all along was just to get on Linux and get rid of Windows and Mac altogether (other than for compatibility testing, of course).

I did not consider this a possibility before because I certainly could not rent a Linux laptop to all my members nor just give them a Raspberry Pi. But, ya know, I probably could have.

What I think I am concluding is that is back in the house and only a temporary solution until members can get their own Linux workstations and servers running (safely) in their homes.

Which leaves me realizing I need to really bake the dotfiles repo so they can use it (like they did home-config before).

I am blown away by how many things I got seriously right that first and second year that the last four years since have overwhelmingly validated:

  • start with the command line (nano -> vim),
  • solarize all the things,
  • provide a dotfiles helper to get them started
  • browser-sync for web dev previewing
  • raspberry pi driven robotics and home hosting
  • minecraft servers for all
  • canned solarized putty config for windows

In fact, the only thing I would change now is:

  • make sure everyone has a decent Linux machine at home
  • allow nano for ultra-new beginners
  • Web before Python
  • Bash before Python
  • promote protonmail over gmail
  • encourage installation of protonmail bridge, offlineimap, and mutt

The last remaining consideration is whether to teach VSCode at all. VSCode has many great things, but that is part of the problem. It shares the same fatal flaw as, it pacifies those using it into not ever learning the real stuff, which is arguably harder to learn initially.

You can make the same argument about nano v.s. vim. Once they learn nano they may always cheat and never actually learn vim. Hummmm.

So the follow up question is just how hard should it be at first?

I already know the answer about Woodlawn. Those people can't even find the semicolon on the keyboard (at first). Throwing them into bash and browser-sync and tmux right off would probably scare them away from coding, or would it?

Most who see the command line immediately fall in love with it. Perhaps I am not giving the random noobie enough credit. Perhaps all they would need are the basics.

I feel good about the progression right now from VSCode to command line. It comes with a terminal and demonstrates graphically all the things the terminal allows. Then, at their pace, they may choose to do more and more without VSCode using only the terminal -- especially as they do more command line work with Linux either on a Linux laptop of their own, on their own servers at home, or The important thing is that I do as much command line stuff as possible from the very beginning. Then the progression looks like this:

  1. VSCode (Git-Bash on Windows) + VSCode Terminal
  2. Terminal + Nano
  3. Terminal + Vim

Removing the terminal turns out to be one of the biggest flaws in both my changed direction of the past as well as all education (and is a main reason isn't just less good, it is downright horrible for bringing young full-stack engineers to where they ought to be). In fact, directly discourages proper command line terminal usage and always has. (They just added PyGame support after adding turtle support before, which shows how clueless they have become having no real concern for empowerment.) You can't blame though, it is operating in a world where people thinking giving all students iPads or Chromebooks is actually a good idea. It so is not.

Schools don't want empowered students, they want compliant students.

8:10:10 AM, Tuesday, March 12, 2019

Woke to a simple idea: prioritize concepts by level of empowerment. This is more than making the decision about which language to learn, which is also evaluated based on the same empowerment criteria. (Web more empowering than Python. Shell more empowering than Python. Go more empowering than Rust. Rust more empowering than C++. Python more empowering than Java. Java more empowering than C#.) It is about what concepts within a language (or other larger category) to learn. So, for example:

  • JavaScript let/const > (and less broken) than `var.
  • Arrow functions and class methods > function keyword.
  • setTimeout() and setInterval() taught early since so useful.
  • Describe Math (Math.random()) stuff early and dev tools console.
  • Use nano before vim because more immediately empowering.
  • Teach command line on whatever computer they have first with ssh access.
  • Vue is far more empowering (earlier) than React.

If you consider languages to be toolboxes, and the concepts and idioms the tools within the toolbox, then these things are the tools that see the most use and therefore are at the top so they can be grabbed more easily and often.

I have never encountered a curriculum designed based on the concept of empowerment, only what was based on the rules of how it has always been taught in the past.

This also affect the frameworks chosen. Phaser3 is an extremely powerful 2D framework with multiple applications outside of simply game development. For most ages 9-18 this is the single most important Web famework to learn. As they age beyond 18 or so, Vue becomes the more important framework because of how it empowers more of what most in that age range would want to create. As I mentioned earlier, this makes picking something like Unity or even Unreal Engine simply a joke in comparison. Neither are as empowering as Phaser3 for most things anyone would want to make. 3D frameworks are limited to 3D applications and the demand for such things overall in the world is very, very low when compared to the overwhelming demand for mobile apps, web content, and 2D games and animations. It doesn't mean Unity and Unreal should not be taught, only that they are far lower in priority when empowernment is the ultimate criterion.

"I don't care as long as they learn."

Such a statement is very short-sighted and not in the best interest of the person learning. The learner is an educators customer. Would you sell a customer an inferior product at the same cost as another that game them more options (skills and empowerment) for the same price?

No. In fact, it would be considered -- at best -- aggressive sales tactics and -- at worst -- fraud.

So why, then, do curriculum designers and educators have no problem teaching things that are easier for them and far less empowering for those learning from them?

Obviously the reason is greed and laziness.

The worst part is some companies are counting on this greed and laziness. Apple did, and look what it did. It's stock has fallen almost 50%. No one needs Swift. Yet they keep lying to everyone that they do. Rather than peddle educational platforms that empower learners the most (by teaching a main-stream language) they put everything into Swift as their educational platform. At best that is disengenuous and self-serving, at worst, it is unethical.

Again, if I sold you a computer that has a CPU that was 80% less powerful and a keyboard that breaks with minimal dust for the same price as another brand, with all things being equal otherwise, what would you think?

You'd think I thought you were stupid. You would get angry at my attempts so sucker you into buying a lemon.

Yet this is exactly what so many educational organizations are doing -- especially colleges. (And, of course, it is what Apple has been caught red-handed doing and is now paying the price.)

When you cannot test out of a beginning programming college course that costs you $2600 in mandatory credit hours even though you have entirely memorized the material and more, or the material is teaching you a dead language using ancient paradigms, then you know how rampant this program is.

No wonder more colleges are beginning to provide "open curriculum" (like Brown) where the students are treated as consumers who effectively vote for which courses remain by research and selecting them. Those that get low enrollment are automatically eliminated by the market. Obviously there are pros and cons here, but that is an amazing approach that could potentially fix a massive fail of a system right now. College programs have no market to answer to, no reason to remain innovative at macro scale. Most have entirely forgotten the most important asset of the organization isn't the fucking football team, nor the affluent alumni, it's their students, duh.

3:09:19 PM, Monday, March 11, 2019

Blown away by how many beginners here are choosing to throw off the graphic user interface as soon as they see the command line interface.

It is almost tragic how few people even know such a thing exists -- even more so knowing that one SkilStak member was sent to the principles office for using a command line terminal to code in Python during a class and was reported by his moronic classmate, "He's hacking!"

When you operate on a level so high above what even other capable technologists can do it becomes something of a survival skill to either help them understand or not to scare them with this mysterious magic you are using, not unlike showing a television to an Elizabethan.

Remember, people were tortured and killed for being smart and informed anciently. Truth is, only the methods have changed. When you tell people objective facts they attack you with accusations of things being your opinion, like 2+2=4 is somehow your opinion.

Every once in a while the moronic state of most humanity really weighs on me -- especially after randomly filtering through television channels or YouTube, or reading Twitter posts and "news" articles.

2:51:43 PM, Monday, March 11, 2019

Today must be "moron monday". Hey, maybe I'll make it a tradition to point them out. Somebody has to, even if it is rude. These people are confusing the hell out of anyone trying to actually learn something. They deserved to be called out.

Trinity Junior High joins engineer program (Times Record) Python, a coding language used by programmers, is the first curriculum the school is teaching. It is used to create mobile apps, other web and ...

The amount of total and utter cluelessness is really hard to take sometimes. Python is never used to "create mobile apps" -- at all. There was a time when Kivy was sort-of used but no one uses Python for such things -- especially not anyone employed to create them.

12:29:06 PM, Monday, March 11, 2019

Android is the most widely used operating system in the world."

More completely clueless from Codecademy.

Here's what has to say:

What is Android? Android is a software stack for mobile devices that includes an operating system, middleware & key applications.

As much as I praise the intent of I have to laugh when the make claims like "Android is the most widely used operating system in the world," which is ridiculously false, everyone knows Linux us. Android isn't even a fucking operating system at all. That's how clueless these people are.

The truly horrifying thing is people are paying for this idiocy like that bootcamp that had the word "Ajacks" on their board in the write up about them in some article. (It's AJAX morons.)

10:29:48 AM, Monday, March 11, 2019

I was asked about the Librem5 in light of this rather informed skepticism.

Even though that guy actually uses Fedora (likely because he is supporting a Red Hat shop, like I did). He makes many very valid points with specific details. The main point he makes is that Purism simply will not be able to deliver on their promise. The stuff they claim to be putting into the Librem5 is physically impossible -- mostly the complete absence of closed hardware, which is Purism's big thing.

Truthfully, this guy is articulating very well a gut-feel doubt I had about it. I want it to be a reality so badly that I (and others) have disengaged myself from simply must be. Even if he isn't completely right, he'll likely be right enough, and at $600 I would rather consider the alternatives, which for many privacy conscience is simply not a smart phone.

Here's another great skeptic before it was even announced.

11:58:16 PM, Sunday, March 10, 2019

Got the schedule back together, mostly. Still need to add the end dates back to the private one I maintain, but the main weekly time slots are covered and back on the Schedule menu item. Over the last year I have started using member IDs and really love the facility they allow.

Sad to have some initially report too much lag on the Raspberry Pi Minecraft server, which doesn't surprise me. Back when I was providing a full server to everyone it was on a much beefier computer with dual quad-core processors.

The conclusion with the Pi just means that we only send those home as ssh and web servers eventually enabling students to run their own websockets multiplayer games.

Everyone will still get a Minecraft server, it will just be a Docker instance running on our k8s cluster, which will be super easy to spin up once I get an image fully configured. Everyone will get a 2GB RAM with a single i5 processor just for their instance. (That would cost $20/month on Digital Ocean.)

7:20:28 PM, Sunday, March 10, 2019

So I have to beat on. It is a Raspberry Pi 2 with the following optimizations:

  • Raspbian-Lite
  • overclocked to max
  • minimum CPU memory split (16)
  • screen (not tmux, less memory)
  • timeout changed from 60 to 360 in spigot.yml
  • ln -s $(pwd)/spigot.13.2.jar spigot.jar
  • java -Xms500M -Xmx700 spigot.jar

So far this has stopped the random crashes at the cost of a bit more lag, but nothing to horrible.

Having members login and mess around with it for a while to see what kind of uptime I can maintain on such a small system. I have been really impressed with its performance so far. I have read reports of even the 512MB RAM pies maintaining an uptime over months once they were honed in. That would be ideal

Having a Pi as a Minecraft server is actually the perfect system administration practice because it requires frequently system tuning, monitoring, backups, security hardening, and regular remote access to restart and configure.

5:17:59 PM, Sunday, March 10, 2019

So looks like the latest Raspbian has oracle-java8-jdk in its PPA but needs an apt install for lite edition.

Stay tuned for viability of an actually Spigot server on the very minimal Pi (assuming you are patient enough for 10 minute startup times).

10:15:25 AM, Sunday, March 10, 2019

While writing the previous blog post I discovered how broken many #serverless sites are -- especially those that are fundamentally flat-documentation sites. The most import element of my site is the search bar, but it doesn't work at all under Lynx. Even though most won't be using Lynx to browse SkilStak for content this really bothers me, which got me to thinking.

What if the SOIL static site generator I am working on to replace VuePress created a flat index of every important word and put them all on a single page with links to the exact locations in the site? That way if no JavaScript is detected I simply show a link to that page instead of the search bar at the top? This allows users to use whatever search ability they have built into their browser, text or graphical, to find what they need just as quickly.

The only downside is that the page would be pretty long and would automatically reveal everything on the site making some of my Easter Eggs easy to discover. Both of those could easily be worked around -- especially since this is just text we are talking about.

Since I am already planning on producing a broken links maintenance page I will already be doing the crawling required to get the links. (By the way, I plan on crawling the Markdown and not the HTML.)

Perhaps the best solution is in two steps:

  1. Convert the current window to use DuckDuckGo site search.
  2. Work on the creation of the static index for offline searching as well as online.

This testing has reminded me that I need to have a path to every single page somehow so that DDG will find and index them. I see that only pages were linked from my top level pages are there now. But, my god, the search results look so much better for DDG than for Google.

9:54:33 AM, Sunday, March 10, 2019

The Lynx test. Your site failed.

Nothing proves how inept a web developer (of team of developers) can be than the lynx test. Just open your web site using the Lynx web terminal web browser. Does it work? Is it readable?

What you see with Lynx is a pretty close approximation of what a blind person would see -- or more importantly to some, a web crawler like Googles. While it is true that Google's web crawler is JavaScript aware you should never depend on it.


Because more and more people are simply turning JavaScript off. While it has become incredibly powerful as a platform for deploying web applications it has also caused a larger and larger number of people to just turn it off entirely. Tor, for example, disables JavaScript completely. Some might say Tor isn't mainstream, but it is becoming more so every day. The uMatrix plugin gives advanced controls over exactly what is running and what it not. Google might not like all the power end users ultimately have over their web experience, but deactivating JavaScript will only continue -- especially as more people understand that enabling JavaScript has become as dangerous as downloading an executable program. They wanted the "web platform" and all it's exe-like power. Well they got it, and all the insecurities that entails.

Every week I have students (usually on Windows or Macs) who come in infected with new viruses and Chrome virus extensions. These are because of JavaScript.

Trackers are already well understood to be rampant and unchecked and they depend on JavaScript. People are fed up and will turn it all off. Firefox has made it their mission to enable this control. Thank God.

All of this means that no one should ever depend on JavaScript for any critical content. Don't listen to the JS-JS-JS moronic mob. Their version of the web would destroy privacy and security.

Instead, let's allow a clear separation of the content web from the platform web.

So open up your site in Lynx and give it a try. Did you pass or fail?

By the way, VuePress and Gatsby sites fail miserably at the Lynx test, despite their claims to produce static-web-friendly web sites. Things as simple as preformatted code blocks are polluted with disconnected numbers and more. The VuePress search bar is completely dependent on JavaScript rendering your site unsearchable. This idea of "hydrating" a page is the epitome of moronic, disconnected thinking -- especially give the attempted justifications.

Only the bravest, smartest, and most empathetic web developers will have the courage to face this reality.

Just keep asking yourself the question, "What if everyone did this?"

1:47:14 PM, Saturday, March 9, 2019

So interesting to seen some Silicon Valley CEOs actually waking up to the "day of reckoning" related to unsustainable "data hungry" business models content to violate everyone's privacy. Good on you, Dennis. Vanguard technologists are already wide awake and the lumbering mainstream is finally seeing it, like when a fashion trend hits the runway and eventually dominates the racks at Walmart.

11:42:20 AM, Saturday, March 9, 2019 just got added to the clueless list. They sent out a bulk email saying "Python has Dethroned JavaScript" referring to the number of StackOverflow questions. The only thing that shows is that more educators are jumping blindly onto the Python-as-a-first-language bandwagon and adding it without any consideration for the failed level of empowerment it provides -- all for the mistaken idea that it will be easier to learn. It's not.

Blows me away how clueless people can be about such things. Who do you think is asking all those questions that are "dethroning" JavaScript? Noobs. Beginners. And people forced to use it for data science who have never used it before. None of that makes is a more popular or better language. At best it means more people are asking questions about it. Perhaps the reason more questions are not being asked about JavaScript is because it currently is more well established and understood by the larger developer user base.

This whole thing is yet another symptom of likeism (which I think I coined). It is the neurosis that brings people to think something is actually of higher quality simply by how many likes it has. It is moronic to make that conclusion, but there are apparently a lot of morons out there.

10:31:36 AM, Saturday, March 9, 2019

Empowerment. That is the primary measure of priority and inclusion. Finding myself asking the question, "Which of these language and technologies most empowers this learner at this level?" When there are redundancies or conflicts ultimately this is the deciding factor. For example,

  • Web languages empower a person far more than Python,
  • Minecraft empowers a young person far more than Roblox,
  • Linux blows away Windows and Mac for empowered users,
  • GitLab empowers users and orgs more than GitHub,
  • VIM empowers command line editing more than Nano and Emacs,
  • VSCode empowers light weight editing more than Sublime,
  • Lynx empowers searching for data more than Firefox or Chrome,
  • Firefox empowers browsing more than Chrome or Edge,
  • Vue empowers front-end developers more than React,
  • Vimeo empowers video creators more than YouTube,
  • Google Cloud Services empowers more than Amazon Web Services,
  • USB-C empowers more than whatever the old one is called,
  • real robotics and electronics empowers more than Legos,
  • the Librem5 phone will empower callers more than iPhone or Android,
  • Phaser3 2D games empower developers more than GameMaker2,
  • Unreal Engine empowers young game devs more than Unity,
  • CodeCombat empowers coders more than for syntax,
  • empowers coders more than CodeCombat for concepts,
  • Scratch empowers coders more than or CodeCombat for open-ended creative coding,
  • one-on-one instruction empowers a learner five times more than a class of two or more,
  • SkilStak empowers learners more than any public or private school. 😉
10:25:32 AM, Saturday, March 9, 2019

It is ridiculously easier to manage a computer lab of Linux machines v.s. Macs and Windows -- even if you had their fancy, expensive, "made for education" management software. I can push changes and backup the entire lab with a few simple shell scripts or Python Fabric (fabfiles).

Blows my mind that America is so far behind on this. Europe has been using Linux in the classroom for, what, more than five years now.

8:59:38 AM, Saturday, March 9, 2019

Here's a start at capturing the stuff for the first level of first stack, full stack learning progression:

Computer usage:

  • keyboard awareness (where are the different keys)
  • three button mouse usages in linux (fun fact: UNIX/Linux had the first three button mice)
  • cutting and pasting in linux
  • universal search interface
  • context switching with alt-tab
  • linux laptop rental (optional)

Web usage:

  • history and reasons for
  • Firefox
  • Chrome

Essential accounts:

  • (grant gold edition)
  • (depending on age level)
  • password management strategies


  • invention, origin, and when to use
  • GUI
  • CLI

Graphic code editor (VSCode):

  • installing and introducing to VSCode
  • Live Server extension
  • Stopwatch extension
  • Bracket Colorizer extension

Terminal editor (nano):

  • opening
  • saving
  • exiting
  • warning about bad CTRL-X habit

Bash shell:

  • explanation of bash prompt
  • fundamental commands (ls,pwd,cd,clear,CTRL-C, touch, mkdir,cp,mv,rm,cat,top)
  • globbing
  • fun skilstak bash aliases and functions (sol,sols,arrrgs)
  • basic bash command line scripting (echo, while, for, $())
  • command line file editing with nano (vim will come later)
  • tab completion
  • basic history navigation (arrow keys, set -o vi will come later)

Networking basics:

  • ip a
  • ifconfig
  • ssh
  • scp
  • tracepath (traceroute)
  • ping
  • nmap (basics)
  • IP addresses
  • ports
  • domain names
  • routers

Source management:

  • intro to public-key crypto
  • git command
  • skilstak save function

Art Editors:

(account-less usage saving into repos)



  • dangers of converting mp3s from youtube

Web development:

  • dev tools (settings, inspector, console)
  • basic html
  • basic css
  • Phaser3-centric JavaScript
  • create your first site
  • create your first platformer game
  • host on netlify
  • get your own domain name (optional)

And all that is just Level 1. I might break it in half into a Level 0 that is just the remedial basics that most everyone should know even before coming here combined with account setup.

Some might chuckle a bit at how simple this stuff is, but believe me, it has to be included to make sure people have covered it. I have had adults not know what a tilde or backtick is (let alone how to properly escape and the control-[ alternative).

8:42:12 AM, Saturday, March 9, 2019

JSON ftw!

Been having an unexpected amount of success introducing young beginners to JSON before anything else. It covers the three main data types (strings, numbers, booleans) as well as mixed-type collections (objects/dicts/maps, arrays/lists).

It is a simple exercise but very effective if you involve something the learner is interested in. The challenge project is rather easy and engaging. Just have them create one or more JSON files describing things they love, Pokemon, Minecraft mobs, cars, oldies, personalities, whatever. I have noticed that once they settle on a group of things they get really immersed in organizing the data describing the thing. Makes me think there is an innate human desire to organize and categorize data.

Having the data types and syntax of them covered before even getting into JavaScript (or any language) really goes a long way in avoiding problems with their first code.

This activity also introduces the idea of data and storing that data. They don't realize it, but they are creating a basic flat-file database for their project. This is a great way to take the first step toward understanding storage and eventually databases and file IO.

JSON also just so happens to be the language of Minecraft command blocks, the holy grail of code-like creative engagement in Minecraft.

YAML will come next and pairs nicely with Spigot BungeeCord, the Essentials plugin and other required Minecraft server extensions.

The early learning possibilities afforded by Minecraft (Java Edition) are just astounding -- not to mention the creativity it inspires.

(Fortnite is for brain-dead losers destined for sales and real-estate jobs.)

9:19:59 PM, Friday, March 8, 2019

Bubye titles.

I always felt off inside as I prepared them. Now I know why. They are a part of an entirely broken system, as holacracy has so objectively and poignantly brought to light.

The work I did to arrange work into achievements that ultimate build up to a title is still valid and valuable. That ain't going anywhere. But I have always hated titles on anything. Titles are part of an old and broken approach to work in general. Why would I ever want to perpetuate that -- especially just to appease some misinformed dinosaur of an organization about the accomplishments of my members that speak for themselves? I just won't.

Anyone who truly wants to understand why titles are so completely useless and played out need only look at the holacracy business model where everyone has multiple roles and not titles.

I won't be a part -- or promote my members become part -- of a completely broken system and business model, no, not even to get more members or placate the parents of those who are here now. My mission is to empower them and doing so would be a lie.

Those playing by the old rules are going to get left in the dust in less than five years -- including large companies using these ancient business models. Competition for great talent is already fierce and has prompted particularly important tech companies, including Apple and IBM, to promote a new way of approaching education and work in general.

Apple just recently confirmed the same direction having made very public statements saying college is not needed with an almost pleading tone that more would learn the skills, create projects to demonstrate them, and then get a job at Apple.

Feelings about their over-centralization and proprietary stranglehold aside, this proves well established companies -- as in the highest valued company of all time -- do not see a need for the old rules and are actively campaigning against them. It is only a matter of time before more adopt holacracy, or at least the core parts of it including abolishing titles, after the Zappos and other business experiments conclude.

Anyone born before 1980 is going to have a really hard time accepting this reality -- especially those who so diligently played by the old rules and climbed the ladder to earn what they think is an amazing title. The truth is, the upcoming generation is laughing at your titles. "Show me what you can do?" That is all they care about. Your seniority, political maneuvering, and status doesn't mean shit to the rising generation and thank GOD it doesn't. Fundamental change is coming. AOC is just the start of a tidle-wave of don't-give-a-fuck-about-your-title thinking. And I'm with her.

So no, I don't have to have titles, and boring, lame, irrelevant testing and useless assessment devices. Instead I can use that precious time (as any essentialist should) to help my members develop their raw skills and foster ways to prove what they have built, configured, improvised and made.

One thing is for sure, it's working.

Professional organizations are finding full-time developer authorizations to hire one of my 16-year-old 10xers. Others are operating on a level so far above that of their peers and educators that they can't even explain what they are doing to them, instead they are sharing what they have learned and leading programs and clubs in those same schools.

For these members of the rising generation is it not about preparing them for the world, it is about preparing the world for them. Like it not, they are here to shake up the status quo and, yes, save the world from your broken policies, rules, mediocrity, and bloated apathy. Titles are just a speed bump on the road to the future they will demand, create, control, and enjoy. My job is to help them, not hinder them even if many won't yet understand or accept the inevitable changes coming their way.

7:40:14 PM, Friday, March 8, 2019

Looks like I am going to have to relent on my "just say no to nano" position if I want every member of SkilStak to adopt the Linux command line without revolting. Something as simple as editing the eula.txt file when starting up a Minecraft server for the first time requires basic command line editing.

I have always understood (and supported) the reasons for nano since vi was such a huge hurdle for Linux adoption by beginners, and perhaps I have forgotten myself how hard it was to begin using vi. In fact, now that I think about it, I remember the moment of slight stomach-turning terror committing to myself that I would never edit anything on the command line in anything but vi. It must have been 1998 when I decided that. I even remember the room and desk at Teleport I was sitting in to do it. (God I loved that place. I owe everyone at Teleport so very much -- especially Lynne and Joey.) It was there that I got to see true 10x UNIX (Solaris) users in action. Joey was the one, in fact, who told me, "well you can always just use Linux." "What's Linux?" I said.

Plus, using the incremental approach of "first stack, full stack" allows me to release my worry knowing that those who progress will inevitably learn vim in the process.

Based on all of this, I feel like using $EDITOR in my dotfiles is critical, which is the reason I added it to begin with.

Those who have known me over the years must be chuckling right now, "Mr. Rob is actually supporting beginners using nano?!" They have always enjoyed making fun of my frequently changing position on things -- especially when it involves returning to something I changed from, and often as suddenly as I made the first change. The fact of the matter is that everyone should be challenging their workflows and methods constantly and returning to those things that are objectively proven to work better. It is the ego that gets in the way of this. Ego destroys progress. The quicker your course correct the greater your progress.

Be Vulcan. Make the most logical decision at the time based on all the current facts.

5:12:21 PM, Friday, March 8, 2019

A very successful member and I worked out a very substantial change to the content and method at SkilStak. Without intentionally doing it, we have uncovered what might be the perfect approach to full-stack learning from the very beginning. I'm calling the approach first stack, full stack. More on the details later. The infographic will be so much fun because it will literally be just a tall stack of skills that build on each other and -- most importantly -- that no longer distinguish between apps and ops but integrate layers of learning both at the same time, something to host, and how to host it, beginning with the most basic ways and progressing to the same technology and architecture of a full IT department.

I'm so excited I could explode with this discovery. It means that ever single member will be a full-stack engineer from the very beginning. Each will know how to create and host applications. Each will be 100% independent and fully empowered. The power levels will increase as the breadth of their skills, knowledge, and abilities increases in all disciplines simultaneously.

Becoming a polyglot programmer is inherent in the system because they need to learn both shell scripting, JSON, and web programming from the very beginning. They learn both a graphical and a terminal editor at the same time.

Seriously, this has finally addressed a curriculum organization challenge I have faced since the very beginning. It puts structure around what was organically happening in my most successful students, those who hosted their own web and Minecraft servers while also learning how to may apps in Python, Go, and Web languages.

I wish I could communicate this fully to every single tech educator on the planet and look forward to capturing the changes over the next months so that they can be recreated and peer-reviewed.

I just remembered, this works in the Gooligum Assembly and C programming as well!! OMG, this is so amazing. Of course, it only happened because I have moved to the one-on-one model where such discoveries can organically emerge. Instead of having one or two really special students who make these discoveries, I now have 50 of them. 😉

1:13:24 PM, Friday, March 8, 2019

Great link for Linux kids education:

11:45:53 AM, Friday, March 8, 2019

Concluded a very informative discussion over coffee with my very wise wife about the essence of motivation, about how broken the classical reasons for obedience are:

  1. fear,
  2. duty,
  3. love.

These are usually couched in Western philosophy and therefore have Western religious influences.

"If you love God, you will obey him."

(That sounds so weird to me now having been exposed to so many other valid ideas about what "God" is.)

At the risk of alienating all those unable to wrap their head around even the possibility of an alternative reality I will simply suggest that billions of people in the Eastern world consider God to be us, and by extension, me and you.

Saying, "you are god" today ruffles feathers here in America. While "namaste" literally means, "I recognize God in you."

Westerners often jump to assuming this means you are claiming to support a collective god complex. As arrogant and pedantic as I can be, nothing could be further from that conclusion.

Discovering the godly parts of you is an essential part of life. Those who fail hardest at life either never realize this or never have the courage to make the massive sacrifices and changes in order to act on it.

The first task in life is the discovery of what you know -- deep down -- is your calling, your mission. The more in tune you are with this the more joy and true prosperity you allow. The more godly you become. (Spoiler alert: the answer usually isn't something someone is going to tell you directly. Be weary of any such person telling you what your mission in life is. Only you get to be the final judge of that.)

Once you are honed in on what your calling is all of life's decisions become easier even if they do involve great sacrifice, but more importantly, once you know you are acting in accordance with your godly mission then "selfishness," for lack of a better word, becomes godly.

(Queue accusations of sophistry justifying self-indulgence driven by cognitive dissonance.)

When Joseph Campbell said, "follow your bliss" this is exactly what he meant. He didn't mean follow a life driven by debauchery, indulgence, numbing distractions, and reality TV. He meant, discover the godly part of your inner self, then follow that to blissful ends. In other words, we are not just children of God. We are God. "Do unto others..." becomes "do unto thyself" because we are all interconnected. You cannot be godly without empathy, period.

Therefore, the highest level of traditional obedience, love, becomes not an externally manifest love for heavenly parental figure, but for yourself in the best way, the truest way, the way that will directly benefit everyone around you and the world. By discovering this and acting on it you will do more for others than you ever could running around figuring out what everyone else needs and attempting to solve their problems for them. The familiar term "lift where you stand" starts with lifting yourself, with "removing the beam" from your own eye (to Biblicize it).

How do you love and help others then?

Your life will directly benefit everyone. The best education comes by example, and the more you lead such a life the more others around you will feel to live such lives as well. The light will shine, spreading, dispelling the darkness of obedience for all the wrong reasons and in all the wrong ways.

What does this stuff have to do with tech?

Technology is about empowerment. But what are you becoming empowered to do? We should all ask that question every single day.

9:48:23 AM, Friday, March 8, 2019

Now that I have my ? alias back I realize I really need to do a video or at least a Medium post about how incredibly critical setting one up is to any developer -- especially those on the command line all day. Here are some examples:

? what is netrwhist
? how do install a deb file 
? what is the current version of linux mint
?? why is google so evil

The alias itself is just a call to the lynx terminal web browser that is further configured for maximum efficiency and vim feel (like set -o vi for dealing with command history).

urlencode () {
  local str="$*"
  local encoded=""
  local i c x
  for (( i=0; i<${#str}; i++ )); do
    case "$c" in
      [-_.~a-zA-Z0-9] ) x="$c" ;;
      * ) printf -v x '%%%02x' "'$c" ;;
  echo "$encoded"

duck () {
  local url=$(urlencode "$*")
  lynx "$url"

google () {
  local url=$(urlencode "$*")
  lynx "$url"

alias "?"=duck
alias "??"=google

Why is this so important to tell everyone about?

Because there is simply no faster and safer way to retrieve information from the web. For most technologists all they want are the words. Any graphic UI element is a distraction to getting to the code snippet, configuration keyword, or concept description they need to find immediately.

By the way, this is why the entire my-blog-is-a-javascript-react-gatsby-app crowd are so completely clueless. The Web was created first and foremost to exchange information, not to be a "platform" for your crappy apps that should just be pages in the first place.

This is not some angry old crank ranting here (ok I am) it is the voice of reason and efficiency. I can look up and deal with email faster than most people doing the same in a graphic web browser by a factor of 10.

That's right, 10xers realize the simplicity and value of this immediately. Then again, 10xers master vim and prefer a terminal over anything graphic.

Few have the courage and motivation to take their skills to that level. It's just a fact. And frankly they don't need to. It is what makes a 10xer a 10xer. If everyone did it (which would be amazing) then we'd only be 2xers at best.

The thing about most 10xers is that they don't waste time blogging about it at all. The best part about having grown to become a 10xer and not being tied to a day job other than the one I have helping others means I do have the time to share this with others, no matter how arrogant the facts might sound. Other 10xers will respond. If I am brutally honest, that's all I care about.

1:19:08 AM, Friday, March 8, 2019

Finally! It took limiting the maximum RAM available to Java to get the spawn areas to finally complete:

java -Xmx600M -jar spigot.jar

Looks like the lesson would be to get Spigot to build on a faster Linux machine here or a laptop.

Then start up a server on that same high performing system.

Then show them how to scp the generated files over to the server, login with ssh, startup a tmux session, and start the server over there. Looking forward to trying it will a few this week.

12:33:49 AM, Friday, March 8, 2019

Like watching grass grown waiting for Minecraft (Spigot) "Preparing spawn area" on this little Raspberry Pi. Internet rumors say you can run a Minecraft server on one, but I'm very skeptical (having managed a server cluster in the past).

Still, worth researching because it is yet another thing members can do with one at their homes learning Linux skills to manage it and possibly even some Java coding skills to write their own Spigot plugins (which are ridiculously difficult).

Was looking at a few competitors to the Raspberry Pi and they are so clueless. ASUS actually put proprietary hardware in theirs to get 4K support.


They have no clue about the community they are trying to market to. Most Pi users don't even care about graphics let alone 4K. If they do they prefer cute little LCD displays.

There is a certain number of tinkerers making media and retro gaming consoles, perhaps these are targeted at them.

The extra GB of RAM would be nice though. Two would be just ideal for running a small Minecraft server, assuming the rest of the performance holds out.

12:04:06 AM, Friday, March 8, 2019

I'm so much more productive with a full Linux terminal workflow: solarized bash + vim + set -o vi + mutt + lynx + ? alias to + dotfiles full of easily edited aliases. I really want to kick myself for ever leaving Linux as my primary workstation. What the hell was I thinking? Ugh.

Of course this means a complete revamping of the separation of skills into apps and ops. Rather than divide them they really need to be smashed together and learned simultaneously at incremental levels, a little apps one week, a little linux ops the next. The response from members to having a Raspberry Pi server at home and using the command line has overwhelmingly confirmed this is the right way to go.

Unfortunately I will still have to remain only focused on apps at Woodlawn. There simply is not time to do both.

The more I review the offerings the more I realize how absolutely amazing SkilStak is. I realize there is no way that cannot sound at least arrogant, but it's just a fact. I would have been out of my mind excited to have had an opportunity to learn this stuff this way when I was just starting. I suppose that is what makes it so fun (for me).

Do what you love, and you'll never work .... uh, scratch that ... you'll work 14 hours a day every day because you can't get enough.

1:53:18 PM, Thursday, March 7, 2019

Whew! Finished the migration of the different Google/GSuite accounts to ProtonMail. Feels good to be off GSuite, which has a particularly horrible UX.

I did have one casualty, the weekly schedule. For some dumb reason I did it under the account and not the account (which is still around just for historical purposes. Thankfully I have solid records of attendance in our class notes and payment start dates in PayPal. I have been meaning to get off the horrible embedded Google calendar anyway. It is kludgey and takes forever to load. It will give me a chance to work on a SOIL plugin to generate calendars during static site generation.

10:43:00 AM, Thursday, March 7, 2019

Learning to manage one's own dotfiles and private configuration data in a way that is preserved is critical to one's personal technical survival. This goes well beyond backing certain files up on a USB or SD Card. I'm very happy to re-institute this learning for everyone. It is one of those Linux cultural rights of passage that few talk about in official educational organizations but that everyone identifies with from the Linux community. In many ways, one's dotfiles repo is their Linux signature to the world. What it contains and how you implement it says volumes about your technical skills and interests.

About a year ago I concluded that dotfiles and private repos now need a complimentary utilities repo specifically to contain the source code and build scripts for compiled utility commands.

I no longer believe that is needed. Any such utilities (which should seriously be examined to ensure writing them as bash functions would not be more efficient) are better placed within the dotfiles repo itself with an interactive option to compiled them during setup.

It is worth noting that the days of having a bin directory full of small Python, Perl, and Bash scripts are largely behind us. All of that can be easily covered in Bash 4+ and made available without any additional installation or dependency on a sub shell running an interpreter.

I would go so far as to say we are beginning to see the end of interpreted languages other than interactive shells and JavaScript.

Yes, that means I do not see Python persisting through the LLVM era. The only thing keeping Python so popular right now is the core dependencies people have on its TensorFlow implementation and things like Fabric, both of which can be done better in any LLVM or modern language but simply haven't been yet. (They have been done, just not better.)

I predict within 5-10 years the Python mania will give way to practical needs and better implementations as those truly aware of the internals and possibilities realize Python, by its vary nature, can never match the other modern languages (short of deploying its own LLVM version).

Keep in mind MIT has been teaching and focusing on functional languages from the very beginning having inspired Brendan Eich when he created JavaScript, (which is more like Scheme than Java). Only now is the world waking up to functional advantages and the necessity of hybrid languages that effectively allow the best of OOP as well as functional programming. It might have taken the popular masses 10 years to come around, but they did, just like they will eventually with Python's core limitations.

In fact, we are already seeing this. Sublime set the standard for light-weight editors. It was written in proprietary C++ and Python with Python extension supported.

Then Atom/Brackets/VSCode came out. Bubye, Python. Hello Electron and modern JavaScript.

The world never looked back.

That is one very solid example of how the industry will continue to wake up to just how bad Python is for most things. As dystopian as it would sound to someone from the 90s, JavaScript kicks Python's butt for most things -- especially with the advent of mainstream TypeScript.

9:21:23 AM, Thursday, March 7, 2019

After several hours of research and comparison with other members it is clear the best choice for Raspberry Pi OS is Raspbian-Lite. (I heard you just say, "duh".) I really should have known. The Raspberry Pi community and foundation are just so completely and totally on it. They get so many things intuitively that I agree are important for those learning tech skills.

For some reason I thought having an Ubuntu Server image would be a better idea only because that is the most popular Linux server distro right now and I want them to get properly habituated.

Turns out all the habits and skills I would ever want them to learn are covered by Raspbian-Lite. The main ones are:

  • bash - first language besides JavaScript
  • ssh - the most essential "ops" tool
  • vim - the worlds best command-line editor
  • apt - after Manjaro fiasco no more Arch, ever
  • systemctl - most modern service manager

The real clincher was raspi-config that is just enough training wheels to get them over the hump of system and service configuration before they learn the deep skills.

Why Lite?

Because all the other stuff is just a waste in my opinion. The main advantage of a Pi is having a true Linux server to work with. I prefer they learn the Linux Mint desktop environment instead of the minimal one that comes with Pi Desktop. If an educator is looking for a desktop Linux and going with Pi because of the price, well, I empathize but would hold out to get everyone $150-$200 laptop -- even refurbished -- with Linux Mint instead. Then the Pi can be a secondary server to promote network and remote administration skills.

Plus I really disagree with the selection of stuff to put onto the Pi desktop by default. Why would anyone waste that much RAM and disk space on what amounts to useless toy applications to me?

8:38:55 AM, Wednesday, March 6, 2019

A core part of SkilStak has also been learning to build, install and maintain your own Linux server, be it for web hosting, personalized Minecraft worlds, or just a great command line available from anywhere via remote secure shell login. You can't call yourself a full stack engineer without these important skills.

For a while I allowed myself to be influenced by the overwhelming momentum of the tech industry to put everything in the cloud, to de-emphasize server skills such as Linux command line, the VI editor, and remove server maintenance.

No more.

My mission has always been to empower individuals with tech skills so they can better improve the world.

Learning to run ones own server is far more inline with that goal than building dependencies in their skill set on proprietary cloud providers.

When you think about it, cloud providers are the worst possible dependency because they are completely and totally unregulated. If you thought losing net neutrality was bad for the Internet and humanity then why would you buy into the idea that giving one of five cloud providers all the power over your content is a good thing?

Cloud providers have already shut down servers of all kinds because they did not agree with what was being hosted, and that is their right. But what happens when they decide to start shutting down servers and denying hosting to people and causes that are good?

People always dismiss this concern based on the current dominant societal ethos. They agree with it and therefore never think there is cause for concern handing over massive power, control, and centralization to a government or worse, a corporation. But neither is guaranteed to keep that ethos. All we have to do is look back at the start of World War II, or Stalinism to see how that happened.

In other words, learning to run your own server might save the world some day. I certainly helped the Egyptians and other good people who brought about Arab Spring. The government there shut down the Internet itself. Some might think this is not a possibility in America, but Putin has already suggested just such a "test" disconnecting his entire country.

This is what happens when power and technology is centralized and things go bad.

Therefore, knowing how to run your own server is more in line with that mission than just helping members learn to host their stuff on centralized cloud servers -- especially those known to violate their own ethics policies and even the law.

In fact, I predict the cloud and #serverless mania will eventually subside as people realize the hidden price they are paying for nearly free cloud computing hosting giving way to a new generation of smaller groups, companies and organizations hosting their own servers on high-speed fiber connections from home.

This is why a neutral Internet is so important. This is why command line, Linux skills are so important.

Linux skills don't just make you powerful, they make you more free.

11:36:03 AM, Tuesday, March 5, 2019

Been having the time of my life restoring all my own terminal-centric workflow efficiencies. Fun to remember when I first started with Linux in 98 and setup fetchmail, procmail, mutt, lynx, screen and the rest. It seems like there is a resurgence of popularity in these types of tools.

I now blame my desire to become more mainstream for anything that ever went wrong with SkilStak over the last six years. I will never do it again.

What does that mean for SkilStak?

It means every single SkilStak member will have a Linux system at home of some kind by the end of the month. England actually make Linux a part of their core curriculum.

And by god, we don't need no stinking graphics.

I noticed that lynx got a very welcome update and now supports full color terminals. There is nothing faster and safer for browsing the Web. Here I was trying to lock down Firefox and mess with Tor when, in fact, the best way to browse the web is still using a text-based browser.

OfflineIMAP has replaced fetchmail it seems as the leading mail transfer agent and combines a lot of the original functionality of procmail with filters.

NeoMutt is Mutt brought up to date and is still absolutely amazing. I was so pleased that my finger muscle memory remembered everything.

Screen has been replaced with tmux and I have researched and created a .tmux.conf that has the same keys as screen for compatibility.

By the way, my posts about Visual Studio Code rendering vim + tmux are absolutely moronic looking back at them. The main thing I missed in the comparison is startup speed, the very reason a terminal-based work environment will always destroy graphical ones in terms of raw efficiency. In fact, the only time Visual Studio Code makes sense is when doing web development as a beginner (but I'm about to test that premise as well by simply using a web browser and vim with browser-sync, as I had been using before).

All of this rediscovery of an exceptional, terminal-centric work setup -- which I used for more than eight years from 98 to about 2007 when I switched to Gmail for some stupid reason -- has been prompted by Linux. It is almost unbelievable to me at this point that I somehow chose to remove Linux as my primary workstation and replace it with Mac.

Another major factor has been moving back to laptop development as a primary. Not only it is better for posture and ergonomics because you can vary your position all day and are completely mobile, but with a touch screen and deactivated touchpad you are driven to make the greatest efficiencies by finding keyboard shortcuts for everything. This directly improves efficiency for every process and pushes you toward alternatives that may not be widely used that are ridiculously superior to what most people use.

Basically, it's good to be 100% back in the 1% again.

That sounds arrogant, but it is just a fact. Linux/UNIX power users have always been -- and will always be -- the elite of the elite in all tech circles from ops to apps. It is what propelled my career like a rocket in 98 and I can already feel it doing the same for others learning it from me now.

Being a top Linux power user makes is ridiculously difficult not to look on every other human being with a certain amount of comedic head-shaking. Linux users are pedantic. There is no escaping it. It is the challenge of us all to overcome it and treat other humans and technologists with respect. Those JavaScript developers bickering over semicolons and function hoisting start to seem like toddlers throwing mud at each other.

Will confessing all this win me any points with the public? Probably not. But it is a part of being authentic to own our challenges as well as our strengths.

So yeah, if someone doesn't agree that Linux-fu is the highest art any technologist can learn then I happily welcome them passing SkilStak and Mr. Rob on by and finding what works for them. Leave the leet for me.

4:45:34 PM, Monday, March 4, 2019

Nice to see ssh-copy-id has been added to ssh. (Yet another old script I don't need in my dotfiles.

11:43:21 AM, Sunday, March 3, 2019

The last two weeks have been a wonderful renewal:

  • moving toward a linux only learning environment,
  • promoting linux in every home,
  • promoting safe server setup and hosting in every home,
  • de-emphasizing dependency on centralized services,
  • completely organized all cables and hardware,
  • re-emphasis on the command line,
  • de-emphasis of Python programming (best at few things),
  • re-working of dotfiles,
  • broader color terminal support,
  • planning of raspi-driven urban adventure game,
  • addition of bash shell scripting lessons,
  • improvements in learning through Phaser3 game development.
10:30:01 AM, Sunday, March 3, 2019

SkilStak applicants who first ask the question, "will this get me a job?" are frankly unlikely to be accepted. My mission and focus is on those who prioritize learning and empowerment and then ask what kind of jobs match their goals for life and contributing to humanity. Those who "need a job" likely have not answered the bigger question first which is "What do I want to do with my life?"

I've always been ok with those wanting to figure that out by sampling tech and coding, but my priority is on those who largely already know those answers and realize coding and tech skills are a means to that end.

Going ultra small has been so remarkable because it means I can be ultra picky about who gets to learn here. I choose to only empower those I feel will have the best chance at applying what they learn to the world in a way consistent with my values and the golden question. It's a good feeling. There is a lesson about education in general in their somewhere.

One side-effect of this is that I tend to accept more younger members than those who have made it into adulthood without any vision of what they actually want to do -- except for those who have worked successfully in other areas (notably Uber and retail) who fully understand the value of learning a tech skill to get them to the next level.

9:54:32 AM, Sunday, March 3, 2019

Being Sunday morning and all it is tradition for me to wax philisophical, a bit.

"What should I teach?"

It's a questions many educators almost pedantically expect any other teacher to know. Such judgment from out of touch educators is the polar opposite of the truth. Those who stop asking the question are the problem.

Every time you I give a lesson I am constantly asking myself if that specific concept still needs to be taught and in what way. Sometimes I even ask the students about it. Their input is invaluable.

But asking the question at the highest level is equally important.

"Should I be teaching students stuff that will get them a job at Amazon, Google, Microsoft, Apple, or Facebook?"

If you had asked me that question a month or two ago the answer would be a definite yes.

Not anymore.

There's a great dialog between two scientists in the film Contact.

The morally bankrupt scientist who has a porn stash, bad haircut, and no problem stealing others research and flipping his position when it suddenly becomes popular looks the protagonist SETI scientist with a big heart and bigger brain,

"I wish the world were a place where hard work and fairness were rewarded. Unfortunately we don't live in that world."

She replies,

"I always thought the world was what we make of it."

Who's right?

They sort of both are when you think about it.

We choose every day what kind of world we will live in. Every single decision we make throughout the day directly affects our world and the world to come for generations -- including where and how we work.

Too many of us dismiss that responsibility. Which brings me to the golden question, an all-powerful principle governing all life, love, and harmony on this planet -- far more important than the Bible's broken golden rule (which doesn't even make sense as it is).

What if everyone in the world did this?

A more scientific way to ask this is,

Is this sustainable?

A more constitutional way of asking it is,

Does this promote life, liberty, and the pursuit of happiness for all?

The greatest problems in our world come from everyone thinking they are the exception to this rule. These people blissfully throw trash out their car windows, over-fertilize their unused lawns, buy vehicles designed for military use that they can't even drive out a simple driveway, and yes, seek jobs at places that cannot sustain more than an isolated few.

Instead of living by this golden question most humans -- especially Americans -- life by another question, I'll call it the scumbag question.

What can I get away with?

Note that this is not the same as What rules can I break? Breaking rule is frequently required to live the higher law and better respond to the golden question. It was a rule that black people could not attend the same schools as whites, or live in their neighborhoods. It was a rule that women could not vote. It was a rule that drinking cocaine in your Coca-Cola was ok. It was a rule that doctors should drain a person's blood to "get out the bad blood" when they were sick (until they died).

Forget about all the religions and spiritual traditions of the world. In fact many of them are breaking our world because they embrace the scumbag question with false piety and "manifest destiny" mantras.

In the name of God we can get away with convincing ourselves that we deserve affluence at the expense of others' humanity, that someone who doesn't look or act like us is not entitled to the same stuff we can get away with in the name of God. God is too often just an excuse to live by the scumbag question every day, with a slight twist.

What can I get away with -- with God on my side?

This sort of thinking is the most dangerous of all human philosophies. It can be found at the base of all pure evil. It allows separation and dehumanization without true guilt, a guilt that should be motivated by being a horrible member of the human family. Once this guilt is gone you get gas chambers, poison kool-aide, bloody noosed corpses dangling over frolicking party goers, child sacrifices, massive brain damage from toxic chemicals, lobotomies for those with bad genetics, caged children on our borders who no longer accept their mothers, mass shootings, and planes flying into skyscrapers.

Every religion that claims to promote love and humanity does so with an underlying piety about their specific version of humanitarianism. This is how to end up with emotionally-bankrupt morons who support bombing abortion doctors while promoting the separation of children from their families to "protect our borders with a deterrent." That kind of insanity is the result of rampant scumbag-ism, those who live by the scumbag rule and not the golden question.

"I don't do empathy."

That is exactly what my land-lord said just before he gave me 30, then 60 days to find another location after letting him know roofing nails and razor blades where dangerous and bad for my students, parents, and Summer campers. You can look him up and ask his side of the story. It would be a little entertaining watching him figure out how to explain his way out of it. I have moved on, but those words really epitomize the problem.

Many just "don't do empathy." They think it is weakness.

People pay thousands of dollars to go on "missions" to countries that neither need nor want them while people in their own communities starve and die of exposure.

I once asked one such group at a church I was visiting about their pamphlets with faces on them. I was sincere and kind and finally got an honest response, "Well, these children aren't actually those that are being sponsored, it just puts a face on the effort that is helping everyone?"

My jaw about dropped to the ground.

She had no remorse telling me the truth about the deceptive brochures and the money I was watching people fork over.

My one regret is not interviewing a few of the donors indirectly to ask them if they thought their money would actually get to that specific person or if they knew it was all marketing and were simply ok with that. Either way, it was pretty messed up.

"Lift where you stand?! Naaaah, imma waste all this money pretending to care for people in another country and I'll have a blast doing my 'service' over there.

Living by the golden question means that such missions are well-intended but simply wrong.

What if everyone flew all over the world spending thousands of dollars to help people in other cultures that we do not understand at all? Should we expect that of all humans?

Nope. It wouldn't work.

What would work would be everyone using that money to help those in their communities and send any excess to well-established organizations in those areas with a solid understanding of the culture and people. People who either have lived their all their lives or chosen to live there permanently and embed themselves into the society.

But that idea is far too unsexy to ever get people to accept it.

"What? You want me to give my money and time to those in need right here in my own neighborhood? No. You want what? You want me to walk over to that neighborhood and help them? Pardon my French, but hell no! They deserve to live like that. These people in this far away country don't so I will help them instead."

Yeah, that's most of the Western world right there -- and it is really tough to watch.

Of course, this gets even more uncomfortable as soon as you ask the golden question with regard to money.

"What if everyone made as much money as me?"

(Queue accusations of me being a communist.)

Frankly this reality is the reason we humans have a very long way to go.

Here's some real "good news" (the translation of the word gospel):

There is no way God is going to rapture anyone or save anyone who thinks our current level of disparity between humans -- even the well-meaning good ones -- can exist on the scale that it does today.

Now that is good news (sorry to those who think its not). Believing in any true god means that those claiming to believe will be shunned some day with, "get the hence, for I never knew thee." That's a god I would/could prostrate myself before with the greatest humility.

Hell, the hunter-gatherers in remote tribes live by a better human standard than most of modern society today. Sure some of them still ritually sacrifice willing members of their tribe, burn them, and then eat their flesh, but at least they don't kill people indirectly with their apathy and piety and pretend they deserved it or had nothing to do with it like we do every single day.

God bless America.

9:17:47 AM Sunday, March 3, 2019

Dell XPS 9757 does work with Apple Thunderbolt monitors after all! Thanks to a student who told me there is only one of the identical USB-C ports that has Thunderbolt support I was able to plug into the right one after tweaking the BIOS and it started right up. I did note, however, that only one external Thunderbolt monitor is supported with the lid open. When you close the lid you can have an external Thunderbolt as the main and still use another HDMI monitor (the class room 60" Viseo in my case).

6:46:16 PM, Wednesday, February 27, 2019

When in doubt, zero it out! Here is a great way to zero out an SD card (if you are having troubles getting it to take an image):

fdisk -l         # to find out what device
dd if=/dev/zero of=/dev/YOURBLKDEV bs=4M status=progress
sync             # flush any unwritten buffers
5:08:01 PM, Wednesday, February 27, 2019

Boy do I feel old. 😉 Just found out there is a new compression format xz and that MicroSD cards are up to 1 terabyte of data now. They are only $45, which is pretty unbelievable. They can't possibly be reliable, can they?

Also found a great way to organize them.

3:51:09 PM, Friday, February 22, 2019

Yet another reason to stick with Linux Mint: seamless integration with ProtonVPN over OpenVPN.

1:05:01 PM, Friday, February 22, 2019

No one should be trusting blockchain technology for anything right now. This MIT Technology Review confirms my suspicions after having read a much as I cared to about it. There is no fix for the 51% attack, period. It is a flaw in the foundation of the entire approach and billions of dollars have been stolen now as a result.

There might be something I'm still missing. I do not research this as deeply as others. But the facts are pretty clear.

There may be hope for some technology to build on the lessons learned from blockchain, but the real solution might be something as simple as just managing our own data and keys in an easier way, using the approach that ProtonMail has taken.

I've come to conclude that it is not necessarily centralization that is evil, but the method and purpose of centralization. Amazon, Facebook, Google have all proven objectively that most corporate actors peddling centralization are doing so with truly evil intent, to lock the world into permanent dependency on them. While organizations like Mozilla and ProtonMail demonstrate an emerging centralized corporate model that seeks to truly put the power and privacy in the hands of customers / users.

12:16:05 PM, Friday, February 22, 2019

Since I had to rebuild my personal system (a Dell XPS 9750 2n1 running Linux Mint which is rock solid so far) I decided to go entire Google-less on it. My goal is, at least on this system, to never login to Google for anything including the following:

  • Gmail
  • YouTube
  • OAuth
  • Sheets
  • Docs

If your service or product depends completely on Google (like you are simply a failure.

This will mean I have to transfer some exported versions of documents and sheets I still have in Google cloud as well as my personal photos and such, but this has been personally very liberating.

This is especially poignant after Google reveals it included a secret microphone in its Nest security system without telling anyone about it.

Google is getting downright creepy and people are finally waking up to it. Google owning the company that puts more IoT devices in homes than any other, Nest, should scare the shit out of everyone. But it doesn't. Instead we happily add more wiretaps to our homes. In 1984 these things had to forced on the people. But the reality of this dystopian future is that we welcome these things into our homes and even buy them.

I'm not some conspiracy theorist nut-job. I'm stating facts. The average American has more than a dozen cameras and at least 4 cameras in their homes that they purchased to be there and have zero real control over.

Just think about that.

The greatest irony is that Google and these companies are not only spinning this as convenient and helpful but now they are saying it will protect you and make you safer. They have the gall to scare you into buying a product that is more terrifying than any risk of a home break in (which is extremely rare even in high crime areas). They spin their lie that having a mic (that they never planned on telling anyone about) in your home would allow them to protect you better. That the best way to preserve your physical safety is to let them fully invade your digital and physical privacy.

Hell no!

Anyone who actually believes a company that brings in $55 billion a year in advertising revenue, which is 80% of their total, that openly says it uses all your private data to "make the service better" while collaborating with government agencies all over the world, including China, to provide surveillance and search censorship is the best company to protect you in your own home by buying even more of their product is objectively a complete moron.

Then again, our countries are currently being run by absolute morons.

By the way, I apply the moron moniker to myself for all those years I bought into the Google circle of trust, which they have completely and totally destroyed at this point. But few are awake enough to see it, even fewer brave enough to actually do something about it. Not me. I see the monster we have allowed it to become.

In fact, I used to encourage young coders to set their sights on a job for one of these companies.

No more.

I realize this will repel some potential students (and particularly their parents) but I really don't care. The goal of learning tech skills should never be getting rich. If that is a student or parent's priority for being here then frankly I prefer they leave right now. No really, get out and make room for those waiting who truly want to do something positive for the world with what I help them learn. I have never been in this for the money so why would I want to help others with only money as a priority?

The best application of tech skills is for the smaller and medium sized businesses who are full of soul, purpose, and integrity. Facebook, Google, Amazon, Microsoft, Apple. They have all seriously lost their way. Seek out the best alternatives and make the world truly a better place.

6:34:29 PM, Thursday, February 21, 2019

Turns out Manjaro is a horrible distro. It brings me no pleasure writing that. In fact, I feel a little betrayed. The idea of Manjaro is very sound even if it is unrealistic. But the reality is very far from what it claims to be.

Clicking the innocuous update bricked several people's machines and six of mine. No, you don't get to blame that on people not reading the announcements and forums telling everyone not to use the basic package install button. Don't put it there by default and encourage everyone to use it if you ever plan on having it potentially brick a system.

Manjaro violates user trust by masquerading as a stable, double-vetted and tested "rolling release" when in fact the massive releases are essentially full upgrades.

Everyone was really supportive and helpful during the whole process, but the fact remains that is simply unacceptable.

It isn't a issue with technical skill, it is a matter of trust, transparency, and expectation. When you market your distro as the best "for professionals" as well as beginners you are required to deal with massive releases in the same way as any other consumer-facing operating system. Otherwise, don't build the expectation in the first place.

Rolling-releases are impossible fantasies because of the many dependencies involved. Web browsers can get away with it because the entire application is replaced every time.

I am going (back) to Linux Mint, which is a better distro for other reasons--primarily it's basis on Debian, which is the industry standard. As soon as I saw the beautiful, intelligent installer for Mint and the boot screen with readable text in 4k for decrypting the disk I knew Mint was the right decision all along.

People complain about all the adding of PPAs for different Debian packages, but that is trivial to add to a dotfiles repo that can be saved into GitHub/GitLab. Everyone should do this anyway for all the same reasons the VSCode users should install Settings Sync. We all have a set of packages that we need and prefer and should always maintain that list in a way that can be updated and automatically installed onto new workstation. That has been a core part of being a tech from the beginning.

This also forces people to review and specifically authorize what they put on their machine.

The history of Arch security vulnerabilities actually supports a more controlled PPA approach. The AUR is much like NPM and has all of its same flaws.

So sometimes the old way is the better way. Lesson learned.

9:59:39 AM, Tuesday, February 19, 2019

Clicked Update this morning. Turns out Manjaro has a full new version. Now staring at a black screen. I can just say I am really happy I did this on a random student desktop and not my primary machine. Nice reminder of what Linux really is (and will always be): a wild ride.

To be fair, upgrade my Mac made my system randomly crash hard for move than six months until they came out with a new release. Difference is, there was nothing I could do about it. At least with Linux you have more control.

4:38:08 PM, Sunday, February 17, 2019

After watching some TED talks today while building Manjaro Linux laptops (that I will be loaning for $5/month to some beginners) I have come to realize that giving a TED talk does not mean your opinion matters more, in fact, in many ways it means you should be considered with much more healthy skepticism--especially if you push your book at the end (my god).

The most significant influencers in my life have been those that were either the hardest or must surprising to discover. So often their authentic priorities are so solidly on lifting their they stand, on making immediate, lasting local change, that their accomplishments are not as easily discovered with a Google search.

Makes me wonder how different the world would be if more journaled their discoveries and thought processes openly for others to discover on their own (sort of like this here log). I did notice GitLab and its founders and team members practice this in an open-core transparent form. Sid Sijbrandij is sometimes ridiculed in social media circles for doing what I find so valuable, brain dumping constantly.

3:42:20 PM, Sunday, February 17, 2019

My search for Amazon alternatives sent me down a wonderful research rabbit hole reading about holacracy and how Zappos (and Medium have fared in the experiments with it.)

I can say that the last five years of my work at IBM demonstrated just how completely and totally bad traditional management environments are. I am glad to hear they are dying the death they deserve.

Even though I had vice president's asking for my personal involvement in ground-breaking virtual worlds projects my immediately manager regularly shutdown my official work for them because "I was too important to his team." (So, I did it anyway on my own time because I believed in it so much).

What a completely horrible manager he was, definitely the worst I ever had. I think he measured his success by how much extra money he was able to get us based on reclassifying us as "software engineers" instead of "system administrators."

Think about how completely stupid that whole concept is for a minute.

I used to tell myself for fun how much I would be worth if I were actually paid for every skill I possess instead of the one I am immediately suppose to perform on:

  • fluent French
  • fluent Russian
  • certified yoga instructor
  • river rafting and paddle-board guide
  • senior systems architect
  • senior developer (in pretty much anything)
  • senior devops engineer
  • cybersecurity engineer
  • junior guitar player and musical
  • sound engineering
  • instructor
  • speaker
  • blah, blah, blah

Holacracy has a badges concept that would have paid me more for keeping several of those skills up and I could have actually used them by contributing to different circles that might be radically unrelated.

It is at least interesting enough to follow.

With this crappy manager at IBM we even had to pay for our own tickets to attend a team building meeting that I had to beg him to allow so we could overcome the team politics that were destroying our productivity because we had never met in person in three years.

Compare that to my former manager who flew us all into Boulder to have an architectural brainstorming meeting that resulted in one of the most successful initiatives ever within IBM Global Services (Virtual Server Administrator).

Or to perhaps the best manager I ever had, also IBM, who created the "doughnut meeting" where we essentially practiced holacracy without having a name for it.

"Anyone have any experience with sendmail?"

Me raises hand sheepishly while still chewing.

"Well, I run my own mail server at home for fun. Does that count?"

Before I knew it I was managing 25,000 emails a day on the client's corporate mail server and fighting to get us off black lists for VP's sending porn and worse to forums. ugh I hated it and loved it at the same time, like most great occupations.

The point is, I was able to do something I wasn't directly being paid for because this manager had the intelligence and wisdom to seek out our interests and aptitudes unrelated to our job title. That's what holacracy is founded on.

1:47:44 PM, Sunday, February 17, 2019

Found a great list of alternatives to, the last big dependency I have on a soul-less company:

  • (even though Amazon owns)

Best Buy recently saved me $600 on a purchase that was both on sale and an open box. All online alternatives would have been much more. Just never buy the smaller items there (which is where they do their markup).

As far as I know, these companies have not crossed over into evil (at this point). eBay has had its own struggles, but has always had more soul than Amazon which openly seeks proprietary lock-in on all fronts.

Hell, Bezos openly admits to wanting to literally buy up the American roadways. He has long proclaimed his success as being to seek control of the core things that people will always need. At the rate AWS is going, he will end up controlling most of the Internet. Even the American government hosts their NSA servers on AWS. That should scare the shit out of every single American.

I have heard from a very reliable source that Amazon engineers regularly violate their own ethics policies to go looking through hosted applications on their AWS infrastructure. When I heard that I lost every ounce of respect I had built up for them.

Combine this with the quiet reality of the biggest hack in history and how the government forced Apple to lie about having been completely owned by China to avoid a national economic panic.

The theme seems to be, don't actually look at what is happening right before our eyes unless you really want to know the truth, because the truth is almost as bad as being a copper-top.

12:28:53 PM, Sunday, February 17, 2019

All the reasons you should install the NoScript extension:

Yeah, stalker alert.

All this JS-JS-JS conversation has not even included the most important topic, the loss of privacy and security by making every web browser (particularly the one owned and run by Google) into an unchecked executable running on your computer.

At least we can see most of Chromium and know what is in it, but not all. Operating systems from Apple and Microsoft are dark pits of whatever-the-hell-they-want.

That is exactly what happens when you have a bunch of tunnel-vision web developers running forward with blinders and no contextual experience. Static content is not only faster than JavaScript and easier to be indexed by search engines, it is safer for everyone. But most web developers really could care less about that.

That said, there is nothing wrong with authorizing a trusted web app to work in your web browser. It is far more secure and free than only allowing things from the Apple and Google stores. When combined with an extension like NoScript you can individually authorize every single script and keep them honest. It seems like a tech-savvy thing but is actually rather simple for everyone to install and use.

1:46:29 PM, Saturday, February 16, 2019

Very good session with a senior student who started out annoyed by the idea of increased privacy and password protection--until I showed him, (which is not most definitely mandatory learning here). After he saw both his email and passwords were pwned and where he suddenly started to care. I think seeing that the password that he uses has been pwned more than 2300 times really gave him pause. There is something visceral and seeing this stuff that makes it instantly real and personal.

He is advanced and therefore wanted to know about KeyPassXC immediately and how to use it to create a ProtonMail.

Reading through the docs on VIM encryption and noted that many of the problems with blowfish were addressed in blowfish2 in 7.4-ish and above. Good to know.

Noted a passphrase more than six characters should definitely be used and that only medium (person) data be protected with it. This is great to keep prying eyes away and make storing hand-written data in YAML and such to be reasonably protected even if made available publicly. A perfect use for this is student personal data that is stored in private repos already.

And yes, I am moving everything off of Google that I am not comfortable making available to the entire public Internet.

10:15:07 AM, Saturday, February 16, 2019

Just realized vim has had medium-grade encryption (Blowfish) with the :X command for years. It is so convenient to use that I have to wonder why I have not been using it all along. I will start using that for things like student information that includes personal identifying stuff like home addresses (instead of a Google Sheets spreadsheet, which still fulfills privacy requirements legally, but not really morally).

9:44:45 AM, Saturday, February 16, 2019
Not found: <<<<

Google has lost its soul. Not even the 90s Gates/Balmer Microsoft had Amnesty International come out against it and hundreds of employees leave in protest.

Google has lost its soul. Not even the 90s Gate/Balmer Microsoft had Amnesty International come out against it and hundreds of employees leave in protest.


I will not support Google any longer. I can't. I know too much. Google is indirectly contributing to the capture and torture of Chinese citizens and "dissidents." That seriously crosses the line no matter how much other good they may be doing. They already collaborated with the US government to sell out all of our privacy (according to the Snowden leak). My convenience is not worth the lives and freedom of billions. Google has lost all trust, and yet it controls most digital communications (search, gmail, youtube).

8:36:06 AM, Saturday, February 16, 2019

On our walk last night with the dog my wife and I worked out a future the could involve a personal/private AI. An organization would simply have to model itself around something like the ProtonMail model where the company did not keep any of the encryption keys on sight. Rather than a bunch of encrypted email each person would be given an encrypted container or virtual machine that only their local keys could unlock. Access to the container, and the AI within, would be completely protected and as private as the user requires.

I really need to write this up in a short book or paper that includes a reference to how we have always portrayed our interactions with AI through science fiction. Rarely do we consider the privacy implications of AI knowing a lot about each of us in order to better help us.

The dilemma remains, however, that in order to achieve AI humanity will have to give up a lot of its personal data to sufficiently training a near human level of intelligence, but public data may be enough to suffice for that.

10:23:53 PM, Friday, February 15, 2019

I have to create a module (and potentially a small booklet) on how to use KeyPassXC after making all the discoveries I have. Just add all my SSH keys to it and activated the SSH Agent component. This means that SSH keys never have to be kept in flat files on disk any longer. Anyone who has done any work in system administration, security, or devops knows just how huge that is. All keys can also be given very long passphrases seamlessly making advanced SSH security a very real thing. All you do is add your keys as attachments to KeyPassXC and while it is open it will serve as a SSH agent provider so you can automatically login to systems without even having to type a single thing. This should be mandatory learning for anyone working in the operations and security sector.

Now that I have TOTP also working from KeyPassXC there is nothing else to worry about. All my security and privacy needs are met in one ultra-secure database. The convenience and security of this option cannot be overstated.

7:41:08 PM, Friday, February 15, 2019

I am really struggling with the dilemma of having a smarter Internet based on all the machine learning taking place and the trade off of having to give up so much of our personal data to make it happen.

In fact, it has turned me off so much, learning about the massive abuses of late, that it has soured me on the entire machine-learning discipline. Everyone is scrambling to learn it to get the jobs for large corporations deploying it to massively invade--and learn from--our personal lives and information. We are actually excited about helping 1984 actually happen.

I suppose I can find some solace in the incredible progress of decentralized encryption technologies that are keeping up pace with machine learning.

Why do I care?

Because it directly shapes what I learn and help others learn.

I ruled decentralized crypto technologies when I realized that the computing power of the entire world would evaporate based on that anticipated future. That we would undergo massive energy droughts not being able to keep up withe power required.

Now I am having the same concerns about the conversational web and the personal-data-hungry AI it requires.

Can a conversational web exist without adding wiretaps to our homes and phones that are constantly listening?

Who is even watch-dogging the industry on this?

While I really enjoyed the convenience of being able to tell my phone to wake me up or ask it questions hearing my voice recordings for the last year in my Google privacy logs really freaked me out. The level of voice recognition and synthesis could not have happened without all the data Google has used to train its assistant, but at what point do we say enough, I want a local solution that will work even when I am completely offline.

The original Conversational Assistant, Virtual Agent model I wrote down last Summer as we did Discord chat camps could still work, in fact, it is less centralized because everyone has their own assistant and agent that only know about each other and you. They have no mother ship to report to nor do they have dependencies on anything but an open Internet.

Unfortunately this model is not something that Google (or any large corporation) is really looking at. It doesn't make money. It also wouldn't catch the interest of the ProtonMail community-types because it has a centralized server to keep track of you and ultimately really learn about your needs and wants.

Imagining a world where everyone has a virtual agent AI and a conversational assistant AI would imply that if people wanted to get information about the owners of each they would have to get it out of them.

Now I'm imagining my virtual agent being tortured, robot-style, to get information on me by some authorities.

It is a fun science-fiction scenario, but it also illustrates where this is going related to privacy. Right now Google is setup to become the all-powerful, master-control-program (Tron ref). It would know and control everything else. In fact, currently we cannot talk to anything else. Google likes to sell us on the idea that we all have individual assistants, but there is really only one, monster intelligence behind it all, and Google is holding the leash, for now. That alone should be enough to give us all pause.

Another possible future is where the evolving AI's are actually privately associated with each of us and the organizations we create. In the best possible scenario these AI's evolve independently and are as varied as the people associated with them. They are treated democratically but with different rules. The are encrypted and tied to us individually through strong encryption and physical authentication. That is the future I want to see.

Unfortunately this is a very unlikely future.


Because money.

It takes a lot of money and data to even get to the point where we have an AI that is reasonably intelligent and the way that AI gets intelligent is buy studying the thoughts, writing, photos, videos, and behavior of billions of humans. It's the only way.

So we have to give up some level of privacy collectively if we are ever going to achieve natural intelligence.


Do you see the problem, the dilemma?

If we lived in a world where people did not abuse both the amount of private data we give Google, and the potential AI that will result then maybe I would be ok with it.

Instead, we live in a world where people are hunted and killed innocently for disagreeing with those in power who have access to such things. This is why Google has people leaving in protest over Dragonfly, the collaboration with Google and China to add extensive search censorship (and probably a lot of surveillance we don't even know about, you know, like Snowden proved America is doing unconstitutionally to all of us without even a slight regret).

So I guess my conclusion is that privacy trumps everything else.

Google is that super creepy app that somehow tricked us all into thinking a free email and some storage was worth giving it all of our personal data to do whatever it wants with and make billions of dollars in the process.

7:06:54 PM, Friday, February 15, 2019

🎗add exhaustive regular word indexing of all SOIL content
🎗create bash completion for edit has that uses index to complete based on index search rank

Updated the linux page to represent our move to recommending Manjaro as the standard desktop and Ubuntu the standard server distro.

5:05:12 PM, Friday, February 15, 2019

Updated the schedule with Summer information. Very pleased with how it is working out to be able to allow more to attend at a reduced rate (as low as $200) as well as flexible for those registering again. Really looking forward to it now that our space is so well organized--particularly the whole everyone-gets-a-Minecraft-server thing.

4:56:32 PM, Thursday, February 14, 2019

Working on a student's Alienware to restore some software on it that we use. Earlier today worked with another two students at a school who had them. I just can't stop thinking what incredibly stupid computers they are. They make no sense whatsoever:

  • weigh 10 lbs.,
  • have very limited battery life,
  • have to be plugged in to play any 3D game,
  • easily breakable streams,
  • so huge they take more than a desktop,
  • burn your lap if you use it there,
  • require a mouse for most things.

Compared to the 2-n-1 Dell XPS (which costs $1300 after sale and open box, which is easy to find), the Alienware line is an objectively stupid decision. I'm not saying the people buying them are stupid, just uninformed. The computer itself is ridiculously stupid.

It was also an opportunity to use Windows a bit after having been Windows free for a week. It was absolutely painful. Git-SCM is at best a horrible kludge for a fundamentally horrible operating system. I had hoped Microsoft would pull it together, but Manjaro Linux is so completely ahead that Microsoft would simply have to adopt a Linux distro at this point to keep up.

Perhaps the main thing about Linux is that it makes using a computer actually fun. The only thing Windows is good at is playing games or running 3D-dependent software such as Solidworks. People who choose to only create software only for Windows are just completely and utterly uninformed. Thankfully most will eventually go bankrupt based on the current trajectory of software.

The world is waking up to the privacy concerns of the last two decades and seeing Linux and ProtonMail and alternatives like them as very attractive--especially the young, untainted generations.

3:21:48 PM, Thursday, February, 14 2019

Discovered that Apple Thunderbolt monitors actually work with Thunderbolt ports on the Dell XPS line! That is huge and means I don't have to essentially throw away our $1000 monitors--especially since so many advance SkilStak members are moving from Mac to XPS 15" 2-n-1s, (which blow the Mac Pro away). I am writing up a complete Manjaro Linux on XPS 9570 guide that will be publishing broader a little later. Dell really nailed a hanging business need that Apple essentially abandoned. Students are reporting that the lame Macbook Pros are actually sucking down battery just for the completely stupid touch bar, probably the dumbest Apple decision since the Newton.

Starting to think of privacy in terms of four common categories that everyone can understand:

  1. PUB - public
  2. PRS - personal
  3. PRV - private
  4. SEC - secret

For those who really get into it you could even classify each one.

5:07:20 PM, Wednesday, February, 13, 2019
11:19:03 AM, Wednesday, February 20, 2019

Mixed feelings. Manjaro Linux has rejuvenated my enthusiasm for pretty much everything. It is so fun to code and create and make with Linux. Much more fun than any computer game ever created, and so much more useful. Helping others realize this while still enjoying the fun of learning to code for the web using Phaser3 2D game development has been the perfect combination.

For example, people really respond to learning Bash shell programming. Bash blows away Python for so many things. Educators quickly go with Python because it is so easy to install on a Windows or Mac machine. This popularity is understandable given the complexity of setting up a bloated Java development environment (as AP CS requires).

However, when you start with Linux as your base, which has many other advantages including 99.9% immunity from viruses, then you have a lot more options for teaching computer science and coding.

Perhaps this is why England made Linux a core part of their base curriculum. (EU is so ridiculously ahead of America on the entire education front.) It took two educators at Oxford to create the Raspberry Pi to address the lack of "tinkerers" entering into their CS courses.

If you start with Linux, Bash is the easiest bang for your buck immediately to get kids coding. There is nothing like making stuff happen immediately from the command line--especially if you Solarize it up a bit to be more fun to look at.

Had a student create an amazing Bash function for generating rgb text colors. So simple, yet to effective and wicked fast. There is nothing faster than a Bash function loaded into your running shell from .bashrc. Not even a compiled executable is as fast.

Reminded that teaching programming and tech skills is more about empowerment and allowing the individual to control and build whatever they wish. All of the following are important but secondary:

  • getting into a great school (which is often a misinformed decision),
  • getting a job (which is important, but secondary),
  • getting a good grade in your current school,
  • getting rich.

That last one is particularly important. There is no better story to illustrate that point than Aaron Schwartz tragic life. As one person put it, he "climbed the mountain of silicon valley shit to pluck the rose, and then he climbed back down." We are talking about a guy who co-authored the Creative Commons license and policies at 15 and invented Wikipedia at 12 several years before the actual Wikipedia was created. What our government did to him and those he loved is forever inexcusable and wrong. We must never forget. We must never forgive. Governments and intelligence agencies that crucify innocent, active geniuses like him are unforgivable.

The more I read, the more I learn, the more I realize just asleep so many of us all are.

For example, when I tell people Amnesty International has openly called out Google for human rights abuses they look at me with surprise, incredulity, and suspicion. Better they understand who I really am before deciding to talk to me. They might call me liberal for it. Fine. If agreeing with Amnesty International makes me a "liberal" than so be it. The world is in this mess because so many people are asleep and just too busy to care.

Someone has too.

I choose to care.

My mission is to get as many other people to care as possible. If that troubles some, so be it.

5:07:20 PM, Wednesday, February, 13, 2019
6:35:50 PM, Monday, February, 11, 2019

The discoveries are just pouring in this week.

Renting a 100% safe Manjaro Linux laptop preconfigured with ProtonMail, Minecraft, Spigot Minecraft server, Krita, Inkscape, OSS Code, and more that is literally virus proof is the smartest thing I could ever offer a parent. It started just as a way to make use of old laptops and has grown into a standard offering. It just makes their lives so much easier. Kids get full admin on the machine so they can tinker and experiment without fear of breaking mom and dads computer.

6:27:50 PM, Monday, February, 11, 2019

Discovering how totally broken VuePress is for any significant site. is breaking and not loading CSS for some. Need to put more priority on the port to my home grown SSG using shell and pandoc.

First beginning student really loved ProtonMail. It is clearly a hit for reasons I had not anticipated. First, it is different and therefore cooler ( Second, parents love it because it isn't as creepy as Google spy/stalker mail. Third, you can customize the look and feel any way you want by providing your own CSS templates. That last reason alone is worth it for anyone learning. All of a sudden kids care about CSS, like a lot.

Trying to decide what the title for my long blog about getting off of Google will be. Right now looks like, Lose Google SpyMail: How to Deny the Biggest, Creepiest Stalker in the World. The time has come to deny the creepy corporate stalkers their cheap thrills (and make the world a better place in the process). Might even put it into a small book form.

2:42:09 PM, Monday, February, 11, 2019

Finding myself using vi a lot more than VSCode these days. I stand by my VSCode recommendation for education and use as a first editor experience, but I have rediscovered a few big advantages of vim over VSCode:

  1. VI supports replacing lines with the output of a command (time stamps, loops, etc.)
  2. Extending vi functionality boils down to writing shell functions and go utility commands, less proprietary.
  3. VI is so much faster. Pulling up a terminal and editing a file is 100x faster than opening the very bloated vscode. Nothing kills productivity like waiting around for VScode to fire up (or load a window) for every code edit.
  4. Laptop development is naturally not mouse / touch friendly negating cut/paste speed improvements from having a mouse.
  5. The dependency on Sync Settings (and therefore on GitHub) to create consistent work environments is problematic (dotfiles just easier).
  6. Auto-building, make, watch, for loops all better in a tmux window.
  7. Creating a save some message bash function for VSCode equiv of committing and pushing is not only faster, but more intuitive and verbose so you catch any problems much faster than being forced to look them up in the terminal.
  8. Multiple cursors are ok, but not nearly as fast as equivalent operations in vi.
  9. Find and replace is wicked fast, supports full, intuitive regx without mouse clicking.

I can hear my own students saying, "sseee, we told you so." 😉 Truth is, I am always open to potential improvements and really giving them a test up front. Even more, I value freedom and choice and allowing the same for others.

Speaking of choice, I've decided not to require ProtonMail, but to instead allow it as an option and encourage it. The issue is more about the right to privacy and the freedom to make ones own decisions about it. Mandating ProtonMail seems counter to this idea. I can however, strongly encourage it and even set it up myself for beginners who are young enough to not really be aware of the issues (or care).

10:00:36 PM, Sunday, February, 10, 2019 looks like it wins over because it has more features (including text) and allows logins with just email not dependent on any other service.

I'm all but certain I will be having everyone move to protonemail this week and get off of Gmail. If they want to keep their Gmail that will be their business, but I will require they move for any communications with me and for using any apps while here in the classroom. I don't think that is overreaching given the objective to create healthy privacy habits for them. All schools have their own email systems for their students, the only difference will be that here they have a much better email that they can keep with them when they leave.

10:27:14 PM, Sunday, February, 10, 2019

Just read this in this account of a journalist who blocked the big five as an experiment:

An Ivy League professor tells me he regularly employs a Google blocker. “I had to disable it when I paid my taxes because they have Google Analytics on the IRS website,” he says. “It was kind of horrifying.”

The fact that Google has access to any tax submission (no matter what they might claim to the contrary) is simply astounding.

9:17:18 PM, Sunday, February, 10, 2019

Got a great opportunity to meet a potential parent today from the IT world. I have to laugh at how excited I can get just to talk to other adults who still work there. I love teaching and mentoring and would not easily change careers at this point, but there is always a certain siren's call to go back to big IT projects and applications. There is just something about working with terrabytes of data and thousands of servers that have to be coordinated that can only be found in really big IT shops. The best I can do is build our own IT cloud here and enjoy the scaled down process. So far that has given a taste of how fun that can be to my more advanced members here.

Lab / classroom is still a mess while I put together the other workstations. ugh (I find myself taking a recent Google review calling me "unorganized" to heart. I will say that I am very organized on the things that matter and that people do learn. But keeping up with tech innovations and brilliant students is like a perpetually, 60hrs/week jungling act, one that I absolutely love.)

After a solid week on Manjaro the decision to go full Linux seems to be well accepted by all but one or two. Some have already attempted to do their own installs at home. This is one of the joys of Linux, that feeling of owning your own operating system, of having full control, and all the endless possibilities that holds. It is good to see this rekindle the fire in some who remember doing nothing but Linux when I started all those years ago.

12:23:21 PM, Sunday, February, 10, 2019

Every wonder if the reason data science is exploding onto the tech scene is because there is so much of our data to analyze? That we have given so much of our everyday lives over to unregulated mega-corporations and governments that the highest paying emerging jobs are to make sense of it all and learn ways to use it and to monetize it?

Do you think for a second the government would ever bring Google before a senate hearing like it did Facebook given how dependent the US Government intelligence agencies are on Google itself?

Do you think anyone has a prayer of ever bringing a lawsuit against Google given the in-bed relationship it has with every government on the planet?

This is downright 1984 we are talking about, but not some fictional or tinfoil-hat worrying. This is our factual, daily reality.

After sleeping on it, watching the Snowden documentary, and realizing that every single thing I have said to my phone has been recorded and is stored at Google I have decided to eliminate all Google tracking and data stealing from my life and the lives of those over whom I have influence.

Some of my students (current and former) will chuckle a little at how long it took me to come to this realization, but it is an inevitable conclusion. It is amazing how much even me, this Linux loving, Russian major has been hesitant to face this horrible reality and the monumental inconvenience it entails.

Scary Google voice history.

These are just some of voice recordings that I can show. Some of them where from Google just randomly thinking it needed to record what I was saying. Others are times I was too lazy to simply type in my text message. The entire text is there for them to read and listen to, or play back to anyone with access to Google's database, which we now know includes the government who has a special application Google helped them build to make it easier to eavesdrop just by clicking "I have a warrant" without any oversight whatsoever. (By the way, that is exceptionally illegal in Switerzland. Anyone being surveilled by law has the right to defend themselves before the survaillance is even allowed to activate.) People say this is needed to do spycraft on legitimate terrorists. I'm no expert, but that sounds lazy to me. It is just too easy to be abused and has been repeatedly.

I realize writing these things for all to search out will likely put me on a list just for thinking them outloud and asking the question, but people need to know this is happening and make informed decisions. I honestly do not care how unpopular that makes me with anyone. Nor do I care about those who will critism and groan for having to get off of gmail and use protonmail instead if they want to use SkilStak infrastructure. Our democracy has already been eroded enough. I certainly do not want to erode it further.

Just the fact that Google is training itself in recognizing my voice anywhere it hears it to better respond to my needs is frankly terrifying to someone who has read a lot of Solzhenitsyn.

It is not so much that things are bad now as much as how completly bad they could be if this much power were being misused.

It is already. Facebook proved that. Snowden proved that. In the imagined best interests of our government it is completely and totally ok to violate several constitutional rights protected under law for the cause of anti-terrorism. The government indirectly killed Aaron Schwartz just for using and sharing legal information in ways that were in no way wrong.

What does that mean for me and SkilStak?

It means no more Google, period! Effective immediately I am no longer recommending in any way that new students (or existing students) use any "free" cloud service including Google. I will instead be helping them setup ProtonMail accounts, which are actually in the better interests of especially younger users and should further assuage concerns parents have about their children going online for the first time.

It will mean finding ways around using Google to sign into everything.

This is the polar opposite of what I have encouraged up to this point, which was to use Google sign in for everything to help students not have to remember the passwords. But perhaps the single greatest tech skill I can help them learn is to create a password management strategy in their life that works and does not depend on a single sign in. The convenience is never worth the cost to all of our civil liberties -- especially when fully supported, easy to use options like KeyPassXC exist.

No, I will teach my students young and old to value their privacy and that of those they love, not from some nefarious reason, but because all humans have a basic right to privacy and respecting that keeps our social structure in tact and out of the hands of mega corporations and governments that we can honestly never be 100% sure will remain benign and working for our benefit. (Just watch the Roger Stone documentary and Farenheight 11/9 to realize just how bad things really are in America. They are not exaggerations.)

12:48:39 AM, Sunday, February, 10, 2019

Lost all my Settings Sync VSCode extension stuff. The gist model is rather fragile. Considering creating a cronjob instead that copies local.

Had a great meetup with our uber-geeks talking about our k8s cluster we are building and converting our lives off of Google for anything significant. Good adhoc discussion about the issue surrounding privacy and the over-centralization of technology we are experiencing today that is directly affecting our civil liberties. I am putting together a comprehensive guide for those who want to get off of their dependency on the big five for everything in their personal and professional lives.

2:08:23 PM, Saturday, February, 9, 2019

The younger generation doesn't even know what privacy is. I am feeling a strong responsibility to help them understand that they actually have a choice, that they can use protonmail instead of Gmail just fine, that single sign-in is actually a bad thing despite its convenience (at least for anything that really matters).

Andy Yen describes it best.

It is almost eery how many people associate a basic desire to not want your data owned by Google or Facebook with some hidden nefarious motivation. The irony is that the good people have the most reason to be aware of privacy because bad people won't hesitate to take advantage of them if they do not protect themselves using basic privacy measures, like the guy who owned an entire neighborhood by listening to all the wireless phone calls before there was wireless phone encryption (not mobile phones). The bad guys (at least the non-stupid ones) take measures to protect their privacy. To use a popular consertative argument, if only the bad guys have guys what happens?

There are really multiples levels of privacy and Internet usage:

  1. completely public and minable
  2. personal, safe from mining and surveillance but shared with friends
  3. private, intimate secrets no common person or corporation should be able to discover
  4. secret, no hint of identity or discovery even by the NSA's latest enigma

A lot of the conversation about privacy and users being commoditized is about level 2 of this scale. This is because Facebook and Google and others are promising (or implying) level 3 privacy but in fact are treating your data at a 1.5 level and even selling it to other companies. This disconnect has destroyed trust in a massive way for any such corporation leading to the current privacy resurgence. No one is talking about hacking or even whistle-blowing (like Snowden). They simply want reasonable assurance their personal data isn't exploited and that they themselves are safe from those who would hack even their secret data if they could.

At least the conversation is happening.

6:40:27 PM, Tuesday, February 5, 2019

Here's the major commands involved in migrating from windows to manjaro:

  • mkdir repos - make a repos directory
  • cd repos - change into directory repos
  • ls - list to see it is empty
  • ssh-keygen - create a new key pair (hit enter for all defaults)
  • pwd - show where you are
  • cat ~/.ssh/ - display (cat) your public ssh key
  • (control-c to quit when you get stuck)
  • ssh - test the gitlab connection (yes to accept)
  • git config --global YOURUSER - set your @username for gitlab
  • git config --global YOUREMAIL - set your email for gitlab
  • git clone - clone your codebook
  • cd codebook - change into codebook directory
  • ls - see what is in it
  • cd platformer - change into platformer game
  • code . - start up vscode right here

⚠️ Change the saving of Sync Settings token to the file in each student's private GitLab repo (rather than Google Docs). The process then becomes 1) install vscode 2) clone the codebook repo 3) install sync settings with token from 4) validate all settings and extensions synchronized

5:17:01 PM, Tuesday, February 5, 2019

Turns out turning off suspend in Manjaro Gnome Linux does not turn off suspend in Gnome Desktop Manager (GDM) so that has to be done separately. My first quirk that has to be hacked to fix, feels like home again.

🎗 setup NTP time on all new workstations

2:52:23 PM, Tuesday, February 5, 2019

👍 AUR has to be activated on Manjaro Gnome (if you need it, but you don't for VSCode if you make sure to update all your packages first.) In other words, just update all your packages and OSS - code will be available.

9:11:29 AM, Tuesday, February 5, 2019

Discovered mDNS (Bonjour on a Mac) today. It does auto discovery of DNS names on a local area network but has to be installed on every host who is participating. I have always been content to simply add /etc/hosts entries, but that never accounts for new DHCP arrivals such as visitors or students with their own laptops.

Turns our the avahi-daemon service is disabled by default. Need to reactivate it in systemd:

sudo systemctl start avahi-daemon
sudo systemctl enable avahi-daemon

I can see why it would be off by default, but that was a bit annoying to track down.

Also there is no nslookup nor dig nor host in Arch Linux. They have been replaced mostly with drill. Awww Linux. I've missed you. *Only the cool kids use * drill. (I remember when they said that for dig.) 😁

Probably the most annoying omission is ifconfig, which has been fully replaced with ip. In fact, looks like ifconfig has been deprecated across the board. That one really caught me off guard—especially since I have had an ip alias set for a decade.

12:01:20 AM, Tuesday, February 5, 2019

Watching clips about Aaron again and realizing how similar his childhood was to so many of the others here. His story is both an absolute tragedy and triumph. To think they did what they did to him and didn't prosecute a single person responsible for the biggest financial fraud in American history.

The humans that did this to Aaron are absolute evil to the core. So many put priorities above humanity that are driven by fear, hate, and ultimately suffering. Aaron became their poster boy, but not for what they wanted. Soon after his death another 14-year-old credited inspiration from Aaron and submitted an idea for pancreatic cancer that he was able to discover because of Aaron. All from looking at exactly the same documents he collected.

🎗 I need to really research Lawrence Lessig, who created Creative Commons and has chimed in on a number of other things over the years. Such a remarkable human being.

10:54:12 PM, Monday, February 4, 2019

Caught up on pre-registrations and such and realize I have an obligation to those waiting to make sure I hold those who take this learning opportunity for granted. Every once in a while I will catch the feeling that someone looks on me like so many Americans look at our honorable, self-sacrificing teachers. As if for some reason we lowly educators do not matter as much as them, that their schedule doesn't matter as much, that we can be forgotten and dealt with later.

The wonderful thing about being in business for myself as an educator is that I do not need to go on strike. All I have to do is put my foot down, deny access, or expel if I absolutely have to. I have only had to do it very rarely, but every time I followed through I am so glad I did, for my sake, and the sake of every other member.

All this happened ironically in the same few weeks that two different well-known, rather large companies had their executive recruiter, COO, and—in one case the CEO—contact me directly trying to get me to join their team for what would probably be triple what I make now in order to be there for these hungry, motivated learners.

I know that what I am doing is valuable and it isn't arrogance that drives my desire to hold people accountable, on the contrary, it is out of some easily misunderstood desire for them to all learn what is just good and right in the world. The good news is I think I am getting better at communicating this sort of thing without projecting anger or getting personal. (I have failed on that point before.)

It's just never ok to 5-point turn on someone's soaked front lawn.

It is never ok to drop your child off for lessons 40 minutes early because you "have to be at a football game" or you were "out of town and the nanny didn't understand."

It is never ok to drive 14 miles away to "meet someone" and be 30 minutes late getting back to a pick up after a 60 minute lesson.

It is never ok to just not bother telling me (or anyone) you just are not going to show up, at all.

It is never ok to say you "need" to pay in two payments (when no one else is doing so) and then "forget" to pay for three weeks past the reminder to do what you said you would. Would you try that sort of thing even with the teller at a bank or the check-out person in a grocery store? You don't get to haggle just because you are dealing directly with the person you are paying to teach your child.

How would your employer hold you accountable for that behavior on the job? How is dealing with the person in charge of your child's education any different? Isn't it more valuable?

It is hard to convey that I am not angry when writing these words. It is frustration. Not with a single person, not with a single school or community or even country, it is the overwhelming misplace priorities humanity seems to have bought into that are manifest in the most subtle and consistent of ways. For some reason we are more willing to play by the rules when dealing with in-human corporations and transactional systems. When dealing with another human directly we someone justify an entirely different set of rules and values.

10:22:44 PM, Monday, February 4, 2019

Once again I am reminded that human beings always abuse those are not strict with them and demand respect. After giving in for one parent and allowing payment in "mid Jan" and having sent a reminder on that day it is now February and the payment has not been received. It is not my job to remind people to pay. This is totally unacceptable—especially now that there are three people on the waiting list and this person has a very prime-time spot.

No more.

I sent notification of forfeiting that spot at 5pm this coming Wednesday and have three people anxious to take it. For the sake of this great kid I hope his parents come through for him. But I will not relent on this disrespectful behavior, I don't care who the parent is or how important or busy they think they are, or even how understandable forgetting is. I'm not being toxic, I'm being real.

As of today I am instituting a -200 VIP penalty for anyone who misses a payment deadline for any reason—absolutely no exceptions. This will "bankrupt" most beginners of VIP points making the decision to drop them easier to determine, clearly documented, and more than justified.

I realize it may seem harsh to penalize the student personally for what is often an error on the part of the parent, but the consequence is the same for me. I'm sorry. I did not make these rules. They are reality. It may seem wrong to leave this penalty on the student/member's record forever, but it is the only way to ensure abuses like this don't continue. History (and my experience) has shown those who abuse this are almost always repeat offenders that will continue to do so. Consequences are the only thing they understand. It has nothing to do with my liking or how much I value their learning and input.

8:26:31 PM, Monday, February 4, 2019

Decided the easiest starting home project is definitely just getting them to play around with code on provided while they are here (in class) they use MS VSCode. Better for them to be playing around with stuff rather than doing nothing but codecombat and nitrotype.

Students reporting preference for Manjaro (Gnome) over Windows overwhelmingly. Windows was so broken. It would open multiple windows with clicks and delay. It was so totally sluggish to respond. Linux is so incredibly snappy and allows me to automate updates and deployments to every computer in the room.

8:15:17 PM, Monday, February 4, 2019

Noticed how much I love Lost, Nothing More to Contribute on the lofi channel. Can't forget it.

12:10:32 PM, Monday, February 4, 2019

It sure feels like the Spring cleaning bug has hit me early. Building this k8s cluster with the left over hardware is the single best idea of this year. It has allowed me to essentially build a super computer out of the 15 Mac Minis and 4 Tridents that would otherwise go unused and sit (because I could never recuperate the lost cost of buying them).

This in term has fired up everyone here to help build it and learn Linux all over again.

All of my original Acer laptops still work just fine and since they are literally worth nothing I am putting Manjaro on them and renting them to kids for $5/month who need a computer to use and cannot yet afford one or in situations where the parents are a little shy about committing to getting them a full computer. The money is just a token so they at least remember to take care of them as much as they can.

8:25:56 PM, Sunday, February 3, 2019

So yeah, Gnome still wins and here's why.

And RancherOS leaves out the hint to use scp to copy over the cloud-config.yml file. Here's a description.

Great k8s on bare metal blog.

5:36:36 PM, Sunday, February 3, 2019

After a morning of research (combined with that over the last weeks) have decided to build our DevOps k8s cluster and nodes with Rancher and RancherOS. CoreOS with RedHat seems to get a lot of enterprise attention, but RancherOS is light-years ahead in its approach. By the time most SkilStak members are doing this in the wild I imagine Rancher will have dominated the market.

Why is Rancher better? One word: open. All the CoreOS crap is being bundles with RHEL and all the other expensive closed-source, proprietary offerings that Red F*ing Hat has become so well known for. Red Hat went from being an amazing open source product in 1999, to flipping off OSS with "Fedora", to being literally in bed and owned by IBM now. If that doesn't define "corporate sell out" I don't know what does. Rancher is (currently) free from all of that and is being (rightfully) rewarded by the community.

What about CoreOS? It's a tiny afterthought now that RedHat has consumed it and IBM along with it. Don't believe any of the spin on their page about "maintaining support for Container OS". I've been around long enough to recognize bullshit like this peddled by those whose actions are directly against what they claim.

11:50:49 AM, Sunday, February 3, 2019

Got a lot of DM's in Discord about the Minecraft restoration to SkilStak. People are really excited. I noticed many more were actually playing Minecraft in the Playing... section. It feels rather nostalgic bringing it back (along with Linux). All my most successful students started out with Minecraft and became really amazing system administrators. Now they are doing DevOps at 16.

Moving (back) to Linux will also enable a lot of automation with Python Fabric and SSH like before. Because it runs with so little CPU drain I can make all the desktop systems also into very powerful servers that can be accessed remotely. This means students will be able to remotely ssh into their very desktop systems, which reminds me I need to setup double NAT.

6:18:05 PM, Saturday, February 2, 2019

Looks like Manjaro wins over Xubuntu just for the rolling releases and better font rendering and a solid KDE compositor driven interface that takes advantage of the GPU in these MSI Tridents. The only slight annoyance so far was getting Chrome installed and that wasn't too bad.

Of random interest: Overwatch installed in about 20 minutes and plays flawlessly.

In fact, as I sit back and think of all the things you can do now with Linux there is only one thing that I know for sure you cannot do: Roblox. They decided to purposefully prevent it from running on Linux at all. That is the dumbest decision they could have made. I refuse to support of even talk about it any longer. Even Microsoft's ongoing support of Minecraft Java Edition is more open than that. I'm inclined to go on a ranging rampage against Roblox after learning that.

3:29:28 PM, Saturday, February 2, 2019

🎗 find a safe youtube -> mp3 converter that can be recommended

2:18:19 PM, Saturday, February 2, 2019

Discovered group.refresh() in Phaser3 instead of individual refreshBody() calls on each in a staticGroup().

Looks like sprite.body.touching.none is the check to make sure all collisions have ended. This is required to get the bump sound to work (otherwise it plays infinitely). The key example of this in the lab was this one.

1:26:46 PM, Saturday, February 2, 2019

Woah. I was illustrating the difference in performance between sourced shell functions, compiled machine code (Go, Rust, C) and interpreted Python scripts. The results blew me away. I knew the first two were way more efficient (enough to make using Python or Perl for anything you don't have to a serious waste) but I was not expecting this.


hello () {
  echo hello world

From hello.go:

package main

import "fmt"

func main() {
  fmt.Println("hello world")


#!/usr/bin/env python3
print('hello world')

I could have recovered some in Python with #/usr/bin/python3 instead, but really, just wow.

12:18:17 PM, Saturday, February 2, 2019

Definitely coming down with the flu or a cold. Seems to be going around. Many at Woodlawn out sick. Several coming to SkilStak have had a sniffle (nothing to stay home over).

11:47:51 AM, Saturday, February 2, 2019

I've decided there is enough ancient JavaScript in the world to require students learn the very old and broken JavaScript that is taught at and is in most books and tutorials. I will make sure to teach the right and modern way immediately after that.

This keeps coming up. The requirement to teach old, broken, and unnecessary material. For example, few will ever create their own linked list in the wild, but it is a frequent question in the very broken coding interview process. I can't just say, "well don't apply for those companies" as much as I would like. Amazon, Google and others require them.

🎗 research and document the interview and hiring process for several great companies

11:33:01 AM, Saturday, February 2, 2019

Reminded how horrible is for young developers who would otherwise learn to download VSCode and install it.

The only reason I even mention it to them is because so many of them have literally nothing else when they are in school.

Now that GitLab has a fully function WebIDE there is really no reason to use for beginners, at least not here where I insist they learn HTML, CSS and JavaScript first so they don't become Python bigots later unwilling to code in anything that does not look like Python.

Besides, it is just a matter of time before Microsoft creates a cloud version of VSCode. The piped container REPL model is not particularly original or hard to implement. Several languages (Go, Rust, JavaScript) already have "playgrounds" that do this that are superior for those languages.

I think the thing that irks me the most about the whole thing is that the fundamental premise of is that coders should not have to worry about setting up their own development environments. This promotes a level of laziness that lasts with them and makes anyone teaching them real tools and processes look like the bad guy. Of course beginners are going to like it.

That is not unlike feeding a kid sugary cereal supposed fortified with vitamins and then one day telling them to eat actual food. Of course they will gripe and complain. One of my sisters would literally not eat anything but PBJ for almost 3 years (and the result is as you would image).

Removing young learners from the reality of what they are learning is not the right approach. Simplifying does not need to mean replacing. It means slowing down and finding other ways to get the started. Like perhaps setting the environment up for them until they age into being able to setup their own. That way they learn the right tool instead of feel like it is being forced on them later, like poorly prepared vegetables.

10:15:11 AM, Saturday, February 2, 2019

🤔 Realizing the value of prototyping business processes and applications before jumping in on a full-blown app. Basically that means doing everything in Bash shell scripting and Google Sheets with formulas and scripts. Once I have used stuff for more than a few months I have a better handle on exactly what needs to be built.

🎗 add a blurb to some page talking about minimal rate for me to come out and setup a professional workstation at a member's home when needed so the parents don't have to go through the hassle
🎗 make a video about setting up a professional workstation

8:54:36 AM, Saturday, February 2, 2019

If this were 2002 I would say it is ironic that Microsoft Visual Studio Code runs better and cleaner on Xubuntu than it does on Windows. These days there are people working at Microsoft who have never even used Windows. They use Linux instead.

🎗 send new student all of the following info
🎗 add terms from lesson
🎗 add prettier assets for standard platformer

Now that I have a lot of kids younger than 12 here returning to the old ways has really been essential:

  • everyone gets a Minecraft (spigot) server
  • for homework we do
  • typing practice on
  • pixelart with
  • for simple web development
  • story flow charts with
  • html5 game development with phaser3

I just have to say it again, Xubuntu is far easier for beginning programmers and computer users to understand—by a very long ways.

🤔 Haven't done CodeCombat in a while. I pulled up their "really cool tech stack" and had to stop from laughing (even if they can't hear). It is literally every bad architectural choice you could make, but hey, they did it and it works, right? 😜 (at least that is what everyone says).

Problem is now (as I just read) people are leaving because they are not doing modern JavaScript and have no way to extend or add new languages.

That entire thing should have been wrapped in an api so that any language would be plugged in at any time. You could even allow teacher's to configure what they want to allow much like Babel. None of that is possible with the current version. is 100% open source, which means I could make an entire clone based on Phaser3 and VueJS and even keep it Electron compatible for stand-alone versions.

I could add in the concept videos that they are missing that has that keep kids learning instead of just repeating back the syntax they see in the examples.

God I wish I had time for all of that.

I suppose I could start small with just a basic Phaser3 game that has an editor built in. The ACE editor makes so many things possible now.

I have no desire to do any beginning language besides JavaScript ES6 and because all browsers support it now, well, that's a no brainer.

In fact, the way to do it would be to simply allow any JavaScript that the browser directly understands and trap any errors cleanly. That way no transpiling is required and the game automatically keeps up with whatever the current browser supports.

My God, it must be created.

8:48:13 PM, Friday, February 1, 2019

Cannot express enough how much more efficient setting VIM mode for VSCode plus multiple cursors as well as drag and drop block repositioning. It is the holy grail of editing efficiency.

5:54:07 PM, Friday, February 1, 2019

Xubuntu is installing and I can't help getting that excited feeling all over again with Linux. It is such an amazingly fun operating system. As I was going through the very simple menu driven Xfce manager I realized this is actually simpler than both Mac and Windows and better for particularly young kids. I wouldn't have imagined myself ever saying that about a Linux desktop distro before.

3:38:03 PM, Friday, February 1, 2019

Just read a tweet from some HaloPlayerBlah saying "The older generation sure seems like it was really bored" referring to the reason we chose to have children. Someone please remind me the rising generation is not that complete, utterly moronic and disrespectful. Sure we screwed things up, but to suggest we were "bored" (likely because we didn't have Halo, according to this guy) just confirms we are truly heading for an Idiocracy.

1:59:27 PM, Friday, February 1, 2019

Having a blast planning our architecture migration to 100% Linux (like we had for 3 of the last 6 years). I switched to mainstream OSes to facilitate coding from home for everyone but VSCode has unified that experience across the board so developing on Linux, Mac or Windows feels the exact same anywhere. This frees me to return to my preferred all Linux setup.

This means full automation and remote access as well as a server for every member again on which they can run whatever they want (protected in a k8s container).

👍 I am SO happy to be going back. Bubye Apple and Microsoft!

This also means we can build a proof-of-concept crypt-mining rig to help others who might want to get into it.

🎗 setup a team for the linux migration, pick a date, send invites

12:21:35 PM, Friday, February 1, 2019

Been adding more pages all morning but only wanted to update the workstation page. I keep running into terms and concepts and people that I have to document for that page to make sense, which just dove-tails into a ton of writing.

I will say that using the information node approach and hyperlinking between them was absolutely, positively the right decision. It makes the editing process so much easier and allows the inclusion (or omission) of information that can simply be linked. This was the entire purpose of the original Web.

💢 Been having a really hard time with the current JS-JS-JS v.s. HTML-CSS-JS battle for the future of the Web happening right now. Developers are seriously thinking that the web should be made into a for developers only "platform" against every intention of the Web's creators and inspirers going. HTML was itself too technical. I wish that Engelbart had more of a say than Tim Berners Lee.

8:44:58 AM, Friday, February 1, 2019

Just now finding out about the experimental "spoiler" markdown add in. You use two bars around ||something||. There is no consistency. Another does it by adding an ! after a blockquote.

! This is something.

Because spoilers are an edge case and never of primary importance to the content I group them under secondary content along with Vue components and such and am totally ok keeping them as simple HTML instead. That way when learning content is rendered to PDF or for print this cute little addition doesn't cause the whole thing to fail.

8:13:05 PM, Thursday, January 31, 2019

Zachtronics is—by far—the coolest game company in the world.

🎗 add {1..10} to glob page

5:47:08 PM, Thursday, January 31, 2019

Really enjoying how this GemSpirits™ (their name) game is shaping up. Nice foray into homemade tile-mapped worlds.

✅ create a Discord Projects category
✅ create a #gemspirits channel

One ongoing dilemma is how much game art to let them do. Frequently it is the creative element that makes coding really enjoyable, that hooks coders because they see their creations coming to life. But obviously there has to be a lot coding as well. Balancing the two is definitely an act of educational skill that I'm constantly working to improve.

5:33:12 PM, Thursday, January 31, 2019

Typical Job Posting

Sometimes a job posting is so good at illustrating how phenomenally clueless most organizations are. I'm not being mean, just real. I think my favorite part of this posting was that it is "part time", which is code for "one hour shy of a 40 hour full-time job so we don't have to pay you any benefits even though we clearly have described 60 hours a week of work."

It's kinda cute that they still use mySQL and bootstrap, but their dependency on PHP and Java is just, um, nauseating. It's like they are trying to repel modern developers and educators. I would bet real money they have no clue what FaunaDB even is.

5:20:32 PM, Thursday, January 31, 2019

Found the Windows 10 Emoji picker. Just Windows Key + . or ;. The equivalent on Mac is control + command + space.

🎗 need to add Emoji Picker page’s-new-emoji-picker-in-any-app/

4:25:00 PM, Thursday, January 31, 2019

🎗 add sh, clear, ls, cd, rm, rmdir, mv commands
🎗 add a soil function to add links to subdirectory in the current directory

Found and looks like a good raw source for shell scripting learning.

By the way, true blogging is so much faster than tweeting all of this. Honestly, it makes me question the whole premise of Twitter because you can't really accomplish anything in the space provided. I would much rather be able to follow a few key individuals on Twitter for a log such as this one instead. That whole RSS thing really killed it, unfortunately.

4:00:49 PM, Thursday, January 31, 2019

Such a great time shooting the breeze with the parent of a new potential member.

1:51:56 PM, Thursday, January 31, 2019

Sitemaps are a thing, a thing that VuePress completely ignores. I keep running into very real reasons not to use VuePress for pretty much anything, or any other excuse for a "static site generator" that "renders" your site by crawling every route with a JavaScript web crawler every time you build it.

🎗 add a lesson for generating a sitemap.xml file for your site automatically.
🎗 add sitemap.xml generation to soil automatically.
🎗 seriously need to fix the broken links to avoid SEO downgrade (even if the content is pending).

1:30:49 PM, Thursday, January 31, 2019

Driving home from Woodlawn today I could not help thinking back to previous students I had, some of whom where my first, who could never leave GameMaker studio and learn proper web development and other coding. It's not like they couldn't they just wouldn't.

I can't help associating that with the very real experiences I have had with other students never learning another language besides Python after having been taught it.

There is something very real about a person's first coding and creating experience. It creates a strong cognitive bias that seems to direct their choices and future. I would love to see the research on that.

The best I can conclude is be very difficult what you teach first to young, impressionable coders!

Based on this GameMaker was the worst decision I made. I felt learning to code gradually would lead them to be able to code other real things later. It at least equally dissuaded them from learning anything else.

"Why? This works."

That's what you will hear. The interest you gained by doing something related to what they love (games in this case) is overcome by their loss of interest in anything else later.

💡 Moral of the story: teach web tech first, then shell (bash), then Go, then C, then whatever language matches their long term goals. Python really does not matter unless you are looking at scientific computing and even that is radically changing. I've never been more convinced by everything I'm observing and have observed over the last six years here and even longer before.

11:25:13 AM, Thursday, January 31, 2019

🎗 finish up the details of Prepare for Learning

Moved everything under /blog/ to their own articles and replaced it with a definition of the term and link to What Happened to Blogging?

Changed Blog to Log from the main page with now links to this messy but real blog. 😁

11:06:52 AM, Thursday, January 31, 2019

Wrote What Happened to Blogging and combined the articles I had under the Blog title into this.

9:25:35 PM, Wednesday, January 30, 2019

So happy to get another girl coder to join us, and from a returning family who was with us from near the start. Once again, another Roblox fan. Roblox is so great to learn to code, much better than Minecraft. Minecraft is good for learning system administration from running your own Linux server and, of course, command blocks create JSON masters.

7:38:27 PM, Wednesday, January 30, 2019

Revised the workstation recommendation.

🎗 find a solid mac-like, low-profile keyboard recommendation to go with the rest

6:52:18 PM, Wednesday, January 30, 2019

Looked at FuanaDB again. Looks so promising. Came from some guys at Twitter who were not getting what they needed from the existing options.

Realized with one student that GitLab does not need to have a project created before creating a repo from the command line. Sid (CEO of GitLab) picked it up and retweeted. Always a great object lesson when a student gets recognized for their own research by the industry itself.

Read up on GitLab a little more (members asking me what companies to consider). GitLab is huge on work from home. No wonder the predominant Silicon Valley culture is so opposed to it. It feels like GitLab is the uncool kid on the block that is smarter than all of them so everyone beats him up. So far GitLab tech is objectively better than GitHub on more than 35 points that I am documenting—particularly for the enterprise. Point #1: no executives accused repeatedly of sexual harassment.

12:50:40 PM, Wednesday, January 30, 2019

Listening to Chillhop station with the video of a cracking fire on an empty beach at sunset reminds me how much of an outdoors guy I have always been. All this tech is ultimately just to enable me to recover more of my time so I can get outside again!

11:54:49 AM, Wednesday, January 30, 2019

Now that universal Bash command line terminals are available to everyone via VSCode and Git-SCM I am inspired to add more command line interface stuff back by way of (which is where I used to host all our member and did all of our coding).

Services available via curl like that is available both from the command line and as a web site really inspire me. I have the skilbot framework complete and dormant and this could breath new life into it. By using the curl interface (or hiding it behind an sk executable written in Go that they can download easily) and teaching it early I can create routes that match learning content and actions under that could cache and invoke a bot on a given topic.

I could even allow the sk command to detect its environment and intelligently help the user through configuration of their workstation, perhaps even do several of the steps for them through automation.

Eventually I could add a conversational interface to sk making it a personal learning assistant.

Now that Go supports plugins functionality could be incrementally added and updated, universally. However, I think I will make command/actions into separate, runnable commands so that additions could be made in any compiled manner. Then I just need an internal standard for communicating between the runnable commands. This is something I did for components in the architecture while at IBM as well. This prevents lock-in to any particular language (allowing Rust to live with Go and C and C++ and Julia and Crystal). The executables would have a hard requirement to never be dependent on any runtime whatsoever, however.)

There would be a safety consideration to address because anyone using the sk system is authorizing me (or any sk executable author) to run anything on their system. Users are ok giving up such trust (and regularly do so) but every sk module would have to be 100% open for review. The sk executable itself would also require open source and therefore could never be monetized in the traditional way, but who cares. Safety is more important. An open approach allows a potential registry (or discovery convention in git repos) so that an unlimited number of contributors could create sk bot functions.

I would need to make sure sk could both be executed as a single action or command as well as a REPL that maintains an open connection to allowing for real-time interactions.

Then, it is a simple matter to create an sk interface from Discord or Slack as well.

Or, I could keep just for pulling the raw markdown content from and using it from the shell like man for looking things up. OMG, I have to do that!

The funny thing is that with everything being in markdown already I can easily render it as colorized terminal text. In fact, all I have to really do is provide some syntax highlighting. This really tilts the BaseML/EzMark scale toward having pretty raw, readable text rather than text that is simply fast to write. This is more along the lines of Essential Web markdown before and directly in line with Gruber's original intent that Markdown be as easy to read in source form as in raw. Hummm, because of this things like tables and mermaid become much more important. My thought about just using an image to convey the content of a table still holds because I have always said images, sound, and interactivity should always be secondary to the core content. But by allowing GitHub Flavored Markdown tables you have a visual way to represent that content that would be possible through something like the searching and display that I'm talking about.

I am really glad I have been holding off on codifying BaseML/EzMark. While I still feel strongly most writers should hold themselves to it so that their content can be cut and paste into Medium and stuff. The math rendering in Pandoc is really important. The dilemma I have is how much to stay compatible with blogging platforms versus allowing the richness of other publishing mediums (pun intended). Academia has clearly lined up behind pandoc and novelists behind MultiMarkdown because they serve their domains. More informal writers and less academic educators, however, do not need all that complexity and frankly won't use it if they are exposed to it.


11:39:31 AM, Wednesday, January 30, 2019

Sometimes it is the smallest things that bring so much joy, like a stupid simple alias that makes my life just a little bit easier and more fun.

alias reminders='egrep "^🎗" $SOILHOME/log/'

Example of reminders alias

Even though I have been using it for more than 20 years, I'm still blown away by the power of the shell. When combined with VSCode for word processing and code editing there are no limits to productivity enhancements that sometimes take seconds. No need to find the proper service or web site or app to do the same thing. You think it, code it, and boom it's there.

Unicode (emoji) support across the board has really made this sort of stuff more fun and aesthetically pleasing. ✨

11:30:27 AM, Wednesday, January 30, 2019

Whew! So much work just to get a keyboard common image layout so I can indicate specifically on the image where the key is. So worth it though. Also, I'm thinking I might have to get these new dark keyboards for the students here since I only need a few of them and these other keyboards are finally giving out.

Made sure to put a big fat warning about getting a gaming keyboard for coding because most are international and have the enter and \ keys in the wrong places.

Surprised to discover that Apple made the esc and function and arrow keys all full size now. They say because of "gamers" but developers will love that as well. Nothing beats a full-size chicklet keyboard for development, period.

9:34:16 AM, Wednesday, January 30, 2019

Remember when you were a kid and woke up full of energy and excitement about what you were going to do or build that day? That's me every day since I started SkilStak. The best part about learning to code is the amount of creativity it allows. You understand you can literally build anything given enough time.

But first, I have some terms to quickly define. I've decided to use the colorful 🎗 as a reminder and ✅ when complete instead of the GitHub Flavored Markdown - [ ] and - [x] only because I can scan them out in the document easier.

11:31:40 PM, Tuesday, January 29, 2019

The All-Powerful Front-End Developer should be mandatory viewing for every single web developer in whatever organization or role they might be in. With a very friendly approach Chris Coyier explains why servers are completely optional these days and #serverless and JAMstack are such things.

6:42:51 PM, Tuesday, January 29, 2019

Discovered websocketd that turns any program that has a stdin and stdout into a websocket API.

4:52:49 PM, Tuesday, January 29, 2019

✅ add terms: terminal, glob, splat, backtick, tilde

4:28:41 PM, Tuesday, January 29, 2019

Research of Arduino (Elegoo) language confirms it is C and supported from VSCode instead of needing to use the vendor-specific cloud editor.

3:42:11 PM, Tuesday, January 29, 2019

Looks like I'm an official contributor to the Deno project now.

Deno Contribution

It was nice interacting with Ryan. He's such a good guy. Makes me want to make lots of other (more significant) contributions to the project. First I have to port all my libraries to Deno and get off of VuePress. Then we'll see.

11:31:35 AM, Tuesday, January 29, 2019

I love open source. Ryan Dahl himself responded to the ticket I wrote within about 10 minutes of writing it. This quirky, amazing developer personifies so much that I value and just confirmed it further. Something as simple as that makes me want to be a better developer, contributor, and human being.

11:02:29 AM, Tuesday, January 29, 2019

I did it. I threw myself upon the mercy of the Deno gods. I can't help myself. It is just too good of an idea not to help grow and take over the very broken Node framework.

4:44:10 PM, Monday, January 28, 2019

🎗 add terms: Internet Protocol (IP), protocol, route, router, packet, routing, domain name, Secure Shell (SSH), shell, terminal, string, putty
🎗 Add the video with girl pranking her dad with ssh

1:27:25 PM, Monday, January 28, 2019

🎗 I need to remember to port all my Medium blogs to

Turns out there is already a Deno test module started. Ugh. Wish I had seen that 48 hours ago.

💢 Why is it all the tech from Facebook starts out sounding so great and ends up being absolute crap?

  • React
  • Babel
  • GraphQL
  • Flow
  • Jest

For being one of the biggest tech employers in the world, Facebook is really bad at tech. Remember their mobile fail?

At the end of the day all of these are horrible and people are waking up to that fact slowly but surely. Over the last week there has been a strong back-lash against JS-JS-JS web over HTML-CSS-JS as has been used from the beginning. The core technology behind the JS-JS-JS crap is React—and specifically the bastard migration of plain web documents into JS rendered versions in Gatsby and VuePress, and for what, so it is just a little bit snappier? Hell no! This is bad for the web. It has become glaringly obvious that the well-meaning Gatsby (and any other JS-JS-JS) technology is broken at the core, it's premise flawed, it foundation on sand.

Why so messed up? Domain confusion. The Web is used for vastly different things. Each domain needs to be approached independently and addressed as such. The JS people thing everything should be an app, even simple documentation. I wrote about this some time ago when trying to decide how to teach web technology. There are actually four Web domains:

  1. The Document Web
  2. The Application Web
  3. The Streaming (Broadcast) Web
  4. The Voice Web

You can then layer accessibility versions on each to compound the confusion.

Gatsyby and VuePress are bad because the together #1 and #2 and do so very poorly. Each has redundant copies of all the content. A version that is crawled to provide SEO hacks to keep Google happy, and a version of the page entirely rendered in JavaScript. Why didn't anyone call out this insanity earier?

12:49:41 PM, Monday, January 28, 2019

Really annoyed that Jest testing framework does not support raw ES6 modules (as Deno does). Tweeted how much I would really like to see a built-in test framework in Deno like Go has. Takes all the work out of thinking about and setting up testing. Got several instant retweets. Problem is that Deno is written entirely in Rust now so any such framework would need to be written in that. Because Deno isn't into heavy tooling at all there really is nothing to hook a testing framework into. Unless...

What if someone wrote a testing framework in Deno that is entirely contained in a single Deno URL? That way a test script would simply need to import it and it would naturally be cached. This would be amazing because testing would just be a matter of adding the test scripts and perhaps a configuration file. Jest could probably even be ported to be 100% independent from babel and the other tooling (by manually tree shaking) so that the existing tests and configurations would work.

No, that won't work because the most broken thing about Jest is that it is not ES6 friendly. Instead, creating a new Deno module, with another name, and creating migration code that detects Jest setups would be preferred. Yes. But what to call it.

10:29:56 AM, Monday, January 28, 2019

Added blurb about Rust being paired with C++ in what is becoming an increasingly popular The 7 Languages You Need post on Medium. After revisiting them I still think they are the best, that you can literally make anything if you know them.

🎗 Scheduled a meeting with new student to pair with friend who is currently attending for Thu 2pm.

10:17:46 AM, Monday, January 28, 2019

Read great Medium article about Geoengineering in 2069 and am reminded how critically important technology will be to literally save the world in the coming decade, so long at it is informed with other research and dialog.

9:42:16 AM, Monday, January 28, 2019

Updated the location information to make it easier to find and added more explicit payment information, specifically no payment plans. Makes me chuckle a bit when people ask about them. What am I, Mastercard?

9:22:40 AM, Monday, January 28, 2019

One of the best things about coding in Go is the lack of decisions you have to make about what to use, how to test and such. Sure there are sometimes two or three good packages out there to pick from, but usually there is one solid one everyone uses.

This is not true for JavaScript where you have to make decisions about everything, which server-side runtime, which test framework, whether or not to use let or var, whether to transpile or not.

After everyone writes about how great jest test framework from Facebook is I struggled with it for more than two hours just to get it to use ES6 imports. The answer seems to be "just use Babel or Webpack" but the whole point of having a command line version is that I did not want to build a dependency on that bloated tool set.

7:02:46 PM, Sunday, January 27, 2019

Only now just discovered Mermaid diagrams which is very timely since I was preparing to create progress charts for work toward title requirements. Now I can generate text and have the diagrams created simply by adding them to markdown documents that support it, such as GitLab Flavored Markdown. (GitHub does not support them. Pandoc does.)

Also finished up some pretty useful tab completion for my edit and draft commands to quickly pull up documents to edit or new ones and initialize VSCode work work with them. Stuff is in the soil code repo for now (which needs to get ported to GitLab still).

Decided to stick with quick and dirty shell scripting to capture the soil use cases and then eventually port those into a single soil executable.

10:57:11 AM, Sunday, January 27, 2019

Sipping coffee like I do every Sunday morning going over administrative stuff I wonder what a log such as this would have read like had I started it from my first days in May of 2013. Can't believe it is coming up on six years.

I do a lot of pondering and pontificating on Sundays. It has become a refreshing habit. Self reflection is a good habit I picked up from being a Mormon all those years.

Perhaps the biggest lesson I have learned in all of that time is that small is better, as in, one or two students maximum. Not only does this increase the pace of learning by a factor of five (it feels like, need to measure that), but it makes teaching really fun again.

I don't have a single student about whom I have doubts or griefs. That is an absolute luxury to any educator.

While I don't cherry-pick my students (I have three who are autistic) I do make sure—as much as possible—that we have compatible personalities and can work well together—especially the parents.

Parents have been the worst thing about this whole endeavor. My worst memories always involve a parent.

Speaking of memories ...

Child affected by fighting parents.

The single worst incident with a parent was watching a downright evil man spitting at his ex-wife as he shouted at her through the window during the pickup custody exchange of their son. These kids, like some others, bring their suitcases with them to class. It reminds me of the brief time I did that with mine and how damaging that constant instability must be on them.

This guy personified the opposite of just about everything I value.

My first clue should have been him spouting his child's resume of activities and accolades (none of which ended up mattering to me at all).

My second clue should have been him bad-mouthing me and my program on our third week in the lounge I had prepared for parents to one of our best family friends, a mother of another student who became a TA and went from failing math to the honor role (a story I love to tell because it happened accidentally when I said, "pay attention in math class because you need it to program games").

"Isn't there anything else?" he asked her with a wink-wink.

"Nope," she responded, "and you should really be glad you found this place."

My wife and I laughed out loud hearing that story.

It blows me away that some parents can be so completely and totally disconnected from their children even though they are with them all the time. Even more so, that they can be so completely disrespectful to a guy who took early retirement and a 50% pay cut to teach their children. I have run into way too many of these people.

Am I the perfect teacher? Hell no! I make mistakes and experience frustration—even get angry—like everyone else, but the level of utter cluelessness and lack of empathy exhibited by some of these parents completely confounds me.

One explanation is that somehow, it seems, Americans are trained to look down on educators. Perhaps because some are so completely bad. Finland (according to documentaries on the topic) does not have this problem. Teachers are revered and respected.

Perhaps it is because everyone knows teachers make less money than most. We live in a time where more people are revealing that they actually value money above all. When making more money as a Java developer somehow makes Java the best programming language.

Perhaps it is because they feel quietly insecure around those whom they consider much smarter than them, subconsciously. Americans are particularly afraid of intelligence. They belittle it, devalue it, mock it, and beat it up. That's 'merica for ya.

Back to the story ...

I tried as hard as I could with this young, intelligent, troubled boy. He had to live with this situation. I sincerely wanted him to have some light his life despite is flighty lack of interest, random swear words, and incredible emotional instability. It was tragic. He was a very disturbed. I confess now I was trying to save him, which I have since learned never works.

After two years (I think) I finally just could not do it any longer. It was a real dilemma because this father had invested a lot financially into his son. I had also invested a lot of time.

But I began to seriously dread having to interact with this parent. I would even have nightmares about it. It overpowered my desire to help this boy. I also felt like he was no longer learning, he was just too distracted. I felt despite the financial investment up to that point that if I did not let him go it would just get worse.

When his father came to pick him up I said, "This will be Joe's last day." (name changed)

There was silence.

I choose to not say anything further, which is unusual for me.

While I was still shaking from the emotional stress of the situation I refunded the remaining $200 or so (which is against my own policy).

Then I unloaded, as I always do, on my very understanding wife. Without here I would never have made it through many of these trials.

I still had to teach some 50 students that day. I owed it to them to be on top of my game. This is ultimately why I let anyone go.

I felt I had failed this boy, but the seething evil of this man was not something I ever wanted to be around again and the boy clearly was learning at a pace much slower than the rest, mostly because of his distraction and despite his raw intellectual acumen.

I can still see that boys face. He loved coming. I can't bear to imagine the heartbreak on his face when his dad had to tell him he would not be returning. It still haunts me.

By the way, his mother once asked if we could be sure not to let him play Minecraft because, and I literally quote, "I've heard Minecraft is rather violent." Having seen what she had to live with, I imagine she is hyper-concerned about her son being exposed to violence.

This boy's biggest challenge was that he could not fail without completely and totally losing it. I witnessed what it means to never have learned that failure is a learning process, that it is a good thing. He had never learned this important lesson.

Then the story gets interesting.

A very negative—downright slanderous—Yelp review came from the boss of the man (who somehow thought we would not figure it out).

The review stated that I "locked children up in my basement." and "didn't do anything you can't do at home." I laugh a little now it was so bad.

Of course, Yelp took it down immediately.

There was some truth to the review.

Technically our classroom was the bottom floor of a downtown Cornelius town home, which might qualify as a basement.

And yes, I did lock them in, for their protection.

In fact, it was because of this troubled, distracted 10 year old that I added unreachable bolt locks and bells to the doors. He was the first (and only) child to randomly run out of the building and wander the sidewalks during the minute I was checking on other students.

Because of that incident I also hired a TA to cover the other students so I could give this one student all of my attention (even though there were lots of other students and a TA there).

No good deed goes unpunished.

*Sigh.* Catharsis. Without it most educators would completely collapse.

Every one of these incidents has caused me to relish the luxury of accepting the most compatible students and their families.

I have not given up on helping those stuck in horrible parental situations, only realized I can't save them all, and often when I try to my ability to help others is compromised.

I'm therefore ethically compelled to only accept the most compatible families for the sake of all who are already here. One bad experience (that could have easily be avoided) could take down the whole thing.

Imagine if every teacher was able to interview and accept his or her students. Obviously that isn't very realistic, just a curious thought. It always reminds me that humans have been learning using the master/apprentice, guru/follower model since humans first started learning. It is the most natural.

How is it that humanity moved away from this?

10:31:48 AM, Sunday, January 27, 2019

Received registration email for returning student, handled setting him up, takes about 30 minutes on average even with automation. This is why I have considered charging a registration fee in the past. Now that I am really picky about who I accept, however, I am more inclined to meet for free with candidates and their parents and really be sure it is a good fit. A good fit means the hour-long consultation and 30 minute setup is easily recovered by them becoming a strong repeat sign up. This is also why I value returning students more than new ones. In most cases I alread know what I'm dealing with.

I realized it might be faster to prepare a form letter for new registrations. Here is something to start from:

Ok, here's the invoice:

This has him starting this coming Monday. Let me know if you would prefer to push it out another week.

And here is his classroom notes link containing his member ID. I suggest bookmarking it in your web browser:

Give this to anyone you would like to follow exactly what we are doing in every lesson including any "at home" work we have discussed in any lesson. Also look over and particularly the and https://skilstak/policy pages. You may drop Andrew off no more than five minutes before class and he must depart no more than five minutes after the hour. We have a library in which they can wait so as to not disturb the other student(s).

He won't need to bring anything with him, provided he still has access to the Gmail account he used before. I will need the following information for my records:

Birthday Gmail Account School Hours Available for Work from Home per Week Estimated Departure (usually graduation) Date Phone (if he has one) Home Address (safety and planning) Contact Name (I assume you) Contact Email (billing and newsletters) Contact Phone

Thanks. I look forward to getting started with him and showing him all the new stuff we have been working on.

2:05:43 PM, Saturday, January 26, 2019

Without any coaxing from me, students continue to complain about how boring and irrelevant is. One diligent student did the Learn JavaScript only to realize it went into and downloading Node and CommonJS modules and more. This is overreaching since it has nothing to do with raw JavaScript programming—especially now that ES6 modules are supported in every major web browser.

This student said he could not get through the homework (losing valuable time) because it was so completely boring. He practically begged me to make a better one.

💢 I really don't like having to create my own version of stuff but the stuff that is out there continues to be really bad, despite the great efforts of those involved.

🎗 Make a video going over how to bookmark SkilStak class notes on GitLab for easy lookup for parents and students.

💡 lowercase, no space, alphanum (memorable naming advice)

Reason for no sound playing extension in VSCode: "no access to DOM directly".

Decided to use phaser.min.js instead of phaser.js in lessons.

👍 Using GitLab projects and markdown for class notes has been a major win over Google Docs since it is versioned, easy to read, drop-dead easy to write, and a completely portable format so no worries about something better coming along.

💢 It appears EPIC has removed all the beginner tutorial videos from their academy, grrr. I am so glad we are moving away from 3D game development and focusing on 2D Phaser3, web applications, and systems engineering. Even when we were doing the Unreal Engine development the version of the engine changed like 3 times during the year, once in the middle of a Summer Camp. Unreal Engine is still way better than Unity as a company and engine, however.

😲 Learning programming with 3D game development is rather unsustainable for most educational organizations because of the prohibitive cost of obtaining and maintaining machines powerful enough to do it (even though we have it). It's better to focus on entertaining programming challenges that focus on the concepts—including 2D games.

💵 Forking over $500 for NitroType gold memberships for everyone hit the budget pretty hard but has been worth every dime. Everyone is posting significant typing speed gains.

💡 Put all the notes into a single in each member's class notes project. Just way easier to find for everyone. (Had been putting separate ones in the assets directory, for example.)

👍 Discovered emojis in my logs to help scan them quickly later, obviously.

1:05:29 PM, Saturday, January 26, 2019

Reminded of an article I read a while ago about the biggest attack in history from China by injecting a chip onto video cards before they shipped infecting entire supply chains.

11:27:01 AM, Saturday, January 26, 2019

Decided not to have all students use the skilstak-SSID project approach but only those advanced enough to understand GitLab projects and subprojects.

🎗️ Add today's lesson terms to
🎗️ Figure better standard way to start sounds after "user gesture".

Having all students bookmark their codebook projects on GitLab in Chrome and rename the bookmark to their student/member ID so it is always visible when using Chrome. This will hopefully make it really easy to pull up the notes and homework assignments.

Debating with myself about spamming the membership group with update about this log. It is already public so I suppose that is fine.

Having great success using Sam (our dog) to illustrate class-based object-oriented programming compared to Jenga Fett for prototypical OOP. Fun having Sam speak() and walk() and sit() to illustrate that although we are all mammals we have different methods of doing the same thing (operations or actions).

8:23:15 AM, Saturday, January 26, 2019

Started The Problem with GatsbyJS and VuePress based on how broken the architectural approach of mixing traditional static sites (usually documentation stuff) with SPA—especially now that very advance progressive web apps are supported.

💢 Who the hell thought it was a good idea to crawl all the routes of an SPA with a JavaScript web crawler?!

This is in the opposite direction of modern static site generation advances. It takes VuePress 10 minutes to "compile" my site with more than 500 routes. It will only get worse. In other words, the entire approach is broken at its foundation.

This one will need a very pretty, well thought out blog post later after I have all the solid evidence demonstrating how completely moronic this approach is.

That said, data-driven SSGs are a nice thing (that I started with Hugonot and FADB about three years ago). GatsbyJS was the first modern SSG to even attempt this.

9:34:07 PM, Friday, January 25, 2019

Today I met with a returning student about scheduling in the morning. Before the end of the day I would receive two more email queries from potential new students. I wonder if it has something to do with this month. While I don't have the stats available that I do now, I remember the same being true in the past.

All the 4pm and later time slots are now filled as is the entire day Saturday.

One is anticipating coming during the day, a high school student attending community college as well.

Another is an adult looking to upskill as others have and who is having questionable results from a national bootcamp that did not know what Go or Linux was. This organization is teaching Java Android development. It is more than troubling how out of touch the organization actually is. My wife said, "he should sue them" when I described my conclusions having researched the organization.

Another is a friend of a recent student sign up who heard about us through him. It is a constant reminder that the absolute best advertising costs nothing, it comes from having an authentic, quality program that people are happy with and will talk to their friends about, and they do.

Yet another new person just emailed asking to schedule an interview in preparation for potentially filling an empty slot as one comes available.

Perhaps the most troubling event this week was having to say no to one of my favorite past students. It would have already been a challenge because he is attending college and wanted to do a remote weekly meeting, but not particularly a lesson.

Given the number of others applying I was already in a difficult position.

I like to give priority to returning students, but remote ones? those who don't really want a lesson but more just discussing things?

This particular student has a history of not doing what is asked and always feeling things are slowing him down. He wants to do "the advanced stuff" before the basics.

Part of his approaching me is realizing this now that he is in college and they are asking him to use Linux, vim, tmux and such, all of which were taught to most of my students in the first or second year and which I asked him to do but he never really did.

Then I asked him to do something very simple that I ask of all my current students, do a few races on NitroType and get me his average words per minute.

He said, "I type 70 words a minute."

I said, "Great! So do a few races and let me know so I can check."

Then he burst out into, "What does doing a typing test have to do with you teaching me to code?"

Normally that kind of question would get a more patient response from me, but I knew this student well and had watched him challenge my asking him to do simple—but critical—things all along.

I said, "I'm sorry but I cannot accept you as a student at this time. Nothing personal, I just feel this is not going to be productive for both of us given our personalities."

Then I rather directly said something that is true but painful to hear, "Asking all my students to do that simple thing is actually a test of teachability. You failed."

This was harsh, but I have adults far older than him willing to do what I asked for my records, having discovered a serious deficiency in typing speed among them all. His impatience and attitude would likely have erupted into a departure later that could have been far worse (as I have experience far too many times).

I was very calm and went on to express my position. He chose not to respond, at all.

This is a person very used to getting whatever they want. I do sincerely wish him the best but it would have been dishonest of me to have given him that position here while others would have been kept away because of it.

By the way, if you cannot type 60 words per minute you have no business being hired in any technical capacity, period. You don't have a prayer of passing any remote coding interview to say the very least.

6:18:24 PM, Friday, January 25, 2019

I'm reminded that the crab rave video is top of the kid-pop-culture list, case anyone cares. Seems like a candidate for a coded-meme project.

5:11:51 PM, Friday, January 25, 2019

I have discovered that GitLab projects are extremely useful when using GitLab as a tool for education. Each student creates a private group with the student ID as the name for example skilstak-dc7f6f. Then they all create (or migrate) their codebook repo into a project of the same name. Advanced students can be given coding challenges that must be in projects with a specific name and add me as a Reporter (a level of access GitHub does not have) so that I can download and correct the challenge. This entire process can be automated while introducing everyone to continuous integration and testing. This was all possible on GitHub but required using GitHub education. The process is entirely independent and itself educational on GitLab.

This means that good 'old SkilBots are back. I can add intelligence to the bots to do this checkout and examination on their own. All the analysis and checking are already built into the skilbot framework. This means skilbot can be used to check real-time challenges as well as "offline" assignments that are being committed to GitLab. With the proper hook any commit can trigger the bot to do the checking and report to the student however, email, Discord, issue on the project, etc. Needless to say, I'm very excited about these possibilities.

I think we should rename skilbot to skeeziks.