Blog - April 2019

You must read this preface before continuing. You have been warned.

Tuesday, April 30, 2019 - 4:48:33PM

After a lot of pondering — to use a word from my days as a Mormon — I went ahead and put it all out there in my Mr. Rob page. I won’t lie. I feel inspired by Matthew Lesko. People who don’t like it or find it inappropriate should probably just stay the hell away from me. I probably won’t like them either.

Life is too fucking short to waste it all managing everyone’s perception of who you really are. The sooner you get over your people-pleasing self the sooner you will find true happiness and affluence because you will find opportunities doing things you really love with and for people you sincerely enjoy being around.

Tuesday, April 30, 2019 - 9:03:44AM

I appreciated Kevlin Henney’s clarification of the oft-repeated “the UNIX philosophy” couplet:

“This is the UNIX philosophy: Write programs that do one thing and do it well. Write programs to work together.” (Doug McIlroy)

“Write programs to work together” is the very important part of this that is often left off. I have always had a saying, “create clean seems” which essentially the same thing (without knowing it was actually in the original philosophy).

This idea is at the very core of rapid systems development because you can duct tape other things together very quickly to accomplish your goals. Then core parts of the emerging system can be coded in the best language possible for that part.

For example, this is why jq is so incredibly brilliant. It has one job, parse and query JSON data. It can be mixed with anything else through shell scripting.

Anyway, that video on Procedural Programming and how it “never went away” is absolutely brilliant.

Tuesday, April 30, 2019 - 8:33:39AM

Reading on JavaScript Sites in Search Working Group about a spectacular SPA failure:

“I’m working with a client who has custom built a SPA and it has many issues.”

This poor naive person who’s client site is absolutely fucked for Google search is so desperate they are reaching out to the mailing list to help save it.

I read these about one a week.

The worst part is these people are destroying the Internet archive that captures and stores sites historically and they simply don’t know or don’t give a damn.

Tuesday, April 30, 2019 - 8:02:30AM

There comes a point when you have developed your bullshit detector so well that everything stinks, which just makes you seem like an asshole to everyone, right Adam?

I had a full fucking whiff of it this morning that makes it hard to focus “on the positive.”

One truth I am continually reminded of is how much most people should just turn everything off — all the marketing shit, all the perception management, all the buzz-word bingo — and just get something fucking done, something tangible. My wife and I fully agree, getting caught up in what others are doing is the real result of seeking to learn and collaborate. Usually if you just create awesome stuff you don’t need to do any of that, it will happen on its own. I cannot say how many times I have had to be reminded of this lesson. Every time I meet someone of actual significance they are always practically disconnected from everything while they create amazing output, here are a few specific examples of such amazing human beings:

When I encounter someone like this it is instantly obvious they are the real deal.

But after being around tech bullshit for 30 years I can also smell someone full of bullshit a mile a away. For example …

Stop Using the Word Innovation!

Here’s a tip to those who would like to become real innovators. Innovators never put innovation in their marketing materials and company names. I guarantee if you put “innovation” in your company name that you actually don’t know shit.

Entrepreneurs are Actual Failures

By the way, starting a company and “entrepreneur”-ing doesn’t mean shit on its own. And your “successful” company that has never turned a profit and has no actual impact on the world is a failure, sorry.

Show us what you are actually doing to help our world and the people in it.

Just has a big full heap of confirmation on that front.

American startup companies are a fucking joke these days.

No One Gives a Shit Which College You Attended

And for God’s sake, don’t wear your college hoodies in your company profile picks and then leave no evidence of what you actually can and have done on your page. No one gives a shit. Show us objectively what you have done.

By the way, I’m not the only one who thinks this. Elon Musk vary famously did as well.

Tuesday, April 30, 2019 - 7:53:01AM

Here’s the magic code to add to your index.html when you need to disable an old service worker while you redo your site (until you get a better service worker finished).

navigator.serviceWorker.getRegistrations().then(all=>{for (let r of all) r.unregister()})

Monday, April 29, 2019 - 10:11:34PM

So glad to see the world is changing — everywhere. Here’s my Mormon Alma Mater with objective proof of all the reasons everyone deserves our love. God hasn’t changed his mind on these issues — as the Mormon leadership claims — God has always loved and considered them all his children in equal standing. Immorality has nothing to do with our gender preferences and genitalia.

Monday, April 29, 2019 - 8:28:46PM

Added Python back after Bash. It is just too entrenched out there and not knowing it will make you the only person who doesn’t. I hate having to give in on that knowing its problems. But as a third language it should be okay. sigh

Monday, April 29, 2019 - 3:23:16PM

So looks like the new schedule will start up as of May 1st. All currently enrolled will use the new enrollment and member registration and progress database. Those before May 1st will still have session logs available, but won’t be in the new membership system.

Eventually I will post docs on the database and system to the sk project for those interested in the YAML data model I’m using and why I didn’t go with an SQL database in the end.

Monday, April 29, 2019 - 11:42:54AM

The other day a kid that missed a class in a school where I teach announced “well I wasn’t here so” as if I was going to stop the whole fucking class and catch him up right there.

I said, “So what are you going to do about it.”

He looked shocked and offended that I was going to hold him responsible for making up what he missed.

I had already put the whole fucking class on hold to respond to his comment. As if some sort of excuse — whatever it was — was going to magically make him have priority over every other student in the room.

That is the kind of fucked-up entitled thinking American students somehow feel they deserve.

I swear I have to calm myself down at all of these completely broken, systemic ways of thinking that are the root of the problem.

Monday, April 29, 2019 - 11:38:48AM

It blows me away how bad most schools are for the actual education of our kids. School field trips and extracurricular events continue to conflict with member sessions here. While I support a balanced life it absolutely blows me away how matter-of-fact people are about completely blowing off actual learning for a football game (destroying the brains of our kids, that’s a fact, not an opinion) or some other stupid activity.

Some of the most important skills anyone will ever learn are not even taught in schools and when they are they are “electives” or “after school.” It is just so completely ass-backwards. No wonder America is middle of the pack at best on every objective measure of learning. Americans seem like morons to the rest of the world — not because they are stupid — because their priorities are just so completely fucked up.

Monday, April 29, 2019 - 10:20:17AM

Adam Ruins Everything is brilliant. I found myself wanting to be nicer telling people how wrong they are. “It’s always better to know.” The worst part about being obsessed with learning, research, and hard work is that people tend to exhibit their own insecurities around you. It is an uphill battle to help people understand the reason you are informing them or even actively campaigning against what they either don’t know or believe to be true is because it actually is always better to know.

Sunday, April 28, 2019 - 12:35:51PM

Reading up on Bash command and function naming conventions and read that POSIX only supports _ but Bash and KSH have always supported hyphens in the name.

Then, of course, there is ssh-keygen, perhaps one of the most important and ubiquitous commands in use today.

Kebab-case is so much better than snake_case both to type and read and is 100% compatible with URLs.

Besides, no one with even minimal experience types out all of those commands unless they are calling them from a script. If you don’t know about tab completion — and use it for everything — then your opinion simply doesn’t matter.

Could it be that the creators of the ssh commands were just fucking amazing geniuses from the start? I tend to think so. If nothing more they have almost single-handedly given everyone permission to name their Bash functions and commands with dashes in the names — because who doesn’t need ssh-keygen to run on their systems. “POSIX can kiss my ass” is what I imagine the authors of ssh-keygen saying, and rightly so. Just so amazing how early they dared to say it.

Snake case looks so horrible in so many situations now that terminals can do underlying and when combined into HTML with links that provide minimal underling. I’m beginning to conclude snake_case is yet another way Python royally fucked up in our world — significant white-space was just the start — just so completely fucking stupid for them to put that in the languages. It makes sense to me that in an era where Trump can be President a large percentage of the world’s population would be deluded into thinking significant white space is actually a good thing. It so isn’t. But most of that population is filled with one-trick pony script kiddies who don’t give a fuck.

Sunday, April 28, 2019 - 10:53:20AM

Abstraction is a disease. I have seen it consume otherwise great systems when too many “what ifs” are allowed into the design of the system. Brian Cantrill puts this sentiment into a very understandable and comical light in a very short time.

As I move off of Google calendar and sheets for I feel myself fighting second system syndrome pretty heavily, and with it all the “what ifs”.

One of the deadliest “what ifs” is “What if someone else wants to use this?”

That simple question can obliterate a svelte, amazing system with unnecessary abstractions.

In my case it comes down to keeping the Sustainable Online Interactive Learning (SOIL) and Knowledge Node Neural Network (KN^3) initiatives alive and supported. I mean, hell, I made some amazing logos.

This came to a head today over one simple design question:

Do I keep kn as my main command interface or rename it to sk?

This question is coming up because I am adding SkilStak specific data and functionality into the command line workflow. This breaks the separation between a generic knowledge content cluster and the specific things I need for the administration of member information such as registration, enrollment, waiting lists and such.

Another question always follows:

How likely is anyone else going to find something of use in my kn command and approach and want to recreate it themselves?

So far most educators I have spoken with are no where near the level of technical literacy to even understand the terminal master approach or wanting to even try it.

I imagine those who might be interested will be at the college level and will likely want to make their own customized system based on some of the lessons I have learned in the process. These particularly individuals are generally more than literate and would find some genericised command set and architecture to limiting.

The answer, therefore, is to remove yet another potential level of abstraction, to fully and directly address my specific needs in the most efficient and empowering way I can do for me. Then I can make what I do public and others can glean from my approach. That can be my contribution.

As the popularity of continues to rise more of those with the capacity to understand my approach and its advantages will find me and I won’t have to push it. This “if you built it they will come” approach has really worked well in all of my six years.

Besides, who am I kidding.

[Yeah, I really need to start yoga again.]

I have zero time to focus on anything that someone might find useful some day and might be able to even understand.

Nope. I have no fucking time for anything else.

My entire focus is on creating the most effective, efficient, empowering system and content for my main mission of producing as many full-stack engineers as possible in the years I have left. The systems and processes that come out of that will live on beyond me and anyone who cares enough to pick up and do their own thing from it would have something to study and start from. That is my primary priority.

So goodbye kn, sk it is — forever. If and when I get SkilBots back online the command will be skb.

I gotta say, I’m supremely grateful for being able to type 90+ wpm to document these thoughts as I go. My writing capacity makes up for my lack of memory capacity.

Saturday, April 27, 2019 - 8:06:11PM

Want to see all the reasons GatsbyJS and VuePress are entirely fucked up and no one should use them? Take a look at a typical default version of VuePress (which is what was before) on the WayBack Machine.

I’m still fuming thinking about it.

The assholes pushing for all JavaScript web are destroying the capacity for others in the future to experience the web through amazing initiatives such as this one. Thankfully most of them are too clueless and not just straight up malicious about their lethargy to preserve one of humanities most important innovations. But there are some ethically bankrupt morons who don’t give a shit. That is why I find so little patience for them. They are literally destroying the Web not only for those who don’t have the current version of JavaScript, but everyone to come after us.

Saturday, April 27, 2019 - 7:36:55PM

Doris Kapner presenting at Bright Ideas

Doris Kapner presenting at Bright Ideas

God I love this woman. So happy to see her art career taking on more velocity. She has certainly put in the time, energy, and thought.

[Yes, she uses Wix and types by “using several fingers” and “knows the home row, just not the other rows around it.” She’s definitely as fast as she needs to be. See, I can be understanding.]

Saturday, April 27, 2019 - 6:37:31PM

Traefik just blew everyone away, but few with understand why.

“Server Name Indication (SNI) is an extension to the TLS computer networking protocol by which a client indicates which hostname it is attempting to connect to at the start of the handshaking process. This allows a server to present multiple certificates on the same IP address and TCP port number and hence allows multiple secure (HTTPS) websites (or any other service over TLS) to be served by the same IP address without requiring all those sites to use the same certificate. It is the conceptual equivalent to HTTP/1.1 name-based virtual hosting, but for HTTPS. The desired hostname is not encrypted in original SNI extension, so an eavesdropper can see which site is being requested.”

The real question is does ssh use TLS, which I don’t see how it can.

Nope. It doesn’t. Still researching if Traefik can do intelligent routing by somehow inspecting some part of the ssh handshake to switch which destination like an HTTP “virtual host”, which TLS also supports.

Saturday, April 27, 2019 - 5:43:46PM

North Carolina School of Science and Mathematics is using R and Mathematica (as well as Python) to introduce data science. Very impressive. Introduction to computational science using R to map genomes. I think we have to add R.

Saturday, April 27, 2019 - 5:32:55PM

I need to write a list of words and phrases you are not allowed to use on your Linkedin or resume. Some of them are just too cliche and buzz-wordy.

In fact, I really need to capture the art of initiating stories from the first paragraph. People respond better to narratives rather than flowery abstract declarations.

Need to go over the resume is to entice not fully describe.

Saturday, April 27, 2019 - 2:53:03PM

Need to transfer the site over to since all the others omit things like ZZ, which is way faster and easier to type than :wq. I have to wonder if the creator of some of these actually even use vim regularly.

Saturday, April 27, 2019 - 2:15:13PM

Need to disclaim that only the tools and command on Linux Mint are documented here (so for example the latest Arch tools for dealing with DNS and traceroute are not here).

Saturday, April 27, 2019 - 1:29:58PM

Decided not to even bother with vanilla Minecraft server instruction. Spigot is really all that matters.

Saturday, April 27, 2019 - 11:16:06AM

Cutting and pasting terminal text output is always better than an animated GIF or video of the same thing because the text is searchable, meaning that it shows up in keyword searches of the site and is indexed by the major search engines as well.

Such a small important detail that nobody fucking realizes.

The whole point of creating educational material is making it easy for people to find and access. No amount of fancy GIF animation is every going to make up for that. Very rarely does video or animation in any form show something that is critical to understanding what is happening.

Saturday, April 27, 2019 - 10:42:08AM

Need to add a blank line to code fence auto selection. Also need something for output ones so they don’t display the scissors.

Saturday, April 27, 2019 - 10:33:26AM

Really need to remove in Linux and for Linux from all the content node titles since Linux is always assumed here. Need to add an entry about Linux being the default.

Saturday, April 27, 2019 - 10:26:08AM

Realized I need to change my host name to skilstak for my personal workstation so members can link to the web content http://skilstak.local on it instead of waiting for to update. Also need to change my username from rwx to rob.

Will make for better movies and animated gifs as well.

Friday, April 26, 2019 - 9:32:07PM

More evidence that Linux and Docker are core technologies to learn.

Developer Systems

Developer Systems

Friday, April 26, 2019 - 1:35:50PM

Ok, having remorse and shutting down that Python article to hard. I honestly believe in using the best tool for the job and, right now, Python is (unfortunately) the best tool for that job. I still think it is a horrible first language, but after you have mastered fundamentals in JavaScript and true asyncronous concurrency in Go Python is a good pick for things like Fabric distributed task management and — yes — machine learning.

Friday, April 26, 2019 - 1:18:13PM

Why Every Programmer Should Learn Python in 2019 is objective evidence of how naive most things posted to actually are. I don’t know why I even torture myself following it unless it is to thwart all the objectively bad advice that is our there.

Once again, motivation to keep with my own content effort to hopefully counter the tide of idiotic, unsubstantiated conclusions and trends that will seriously impact the lives of young technologists. Knocked out another 40 content nodes but I still have hundred more. Yeah, it’s harder than writing a book for sure.

Friday, April 26, 2019 - 11:51:38AM

Overwhelmed with how great this approach is turning out because of how easy it is to essentially “fill the chalkboard” instantly with data about the subject we are talking about. There’s no “turn to page …” or fumbling around with a fucking PowerPoint. I just pull it right up and can link it directly to that persons session notes.

I cannot help feeling that Sir Tim Berners-Lee would be proud. This is exactly how I imagine him imagining the Web would be used productively — particularly with the advent of hypertext approaches.

Friday, April 26, 2019 - 10:12:28AM

As I rethink the calendar and schedule I’m reminded how changes to the Google Calendar are not historically captured as they would be if I went to a flat-file model. This dovetailed into a re-thinking my position on flat-file databases vs any database engine, which has to be dumped to properly backup in the first place.

For many — I would venture — most data applications flat, simple data is all that is needed. Over-engineering systems with a dependency on PostgreSQL, MongoDB or even SQLite is absolutely unnecessary. Only when a system grows to require what these engines provides should they be considered.

In my experience, personally and professionally, over-engineering provides far more opportunities for failure than under-engineering. Plus it leads to what Brian calls, “second-system syndrome.”

It is a little frustrating to realize in my old age that so many things I set out to do were too fucking large in scope when something simpler would have met the need just fine.


The new schedule will, therefore, be entirely in YAML files. Not only does this make the app 100% independent of the Internet but removes the last tie I have with Google dependency. Google calendar is a perfect example of an unnecessarily complex system because it has to be all things to all people. I don’t even check it anymore.

This really makes be want to bring back the Filesystem As DataBase (FADB) I was working on, even more now that we have the filter (query) syntax established with jq. I so has to be made, just not now.

Friday, April 26, 2019 - 9:58:06AM

Apparently we are good with “forgiving” white-collar criminals, but not successful university students.

All the opposition to “forgiving” student debt makes me nuts. Somehow our country and government was ok “bailing out” banks and stock brokers, but not helping those who put the time in to get a great education pay for their unethically high university tuitions.

I’ve never been anti-college, I’m anti-$80,000-in-debt that most will be coming out of college.

Free those which student debt — the higher the better the person is for our society — and reduce or remove the cost blocking others from education and you will literally save the world because more people will become educated and financially stable enough to do so.

Thursday, April 25, 2019 - 6:31:13PM

All the reasons to never work at ThoughtWorks wrapped in a nice clueless article for all to see. Contrast this with Brian Cantrill’s amazingly informed opinions and exposition on the nature of modern languages and you will see for yourself why this article contains absolutely zero added value or relevance.

Thursday, April 25, 2019 - 6:26:56PM

I may have used VSCode for the last time. VSCodium removes all tracking — that I was actually unaware that VSCode contained.

Thursday, April 25, 2019 - 3:18:13PM

Just read one of Reddit’s rules: “No zealotry.” I had to laugh at that. I’m reminded that “zealotry” is not to be confused with passion — particularly for the science of discovery. Zealotry fundamentally includes dogmatism, which is the opposite of science and discovery.

Thursday, April 25, 2019 - 2:28:27PM

Coding for green or amber dots on GitHub and GitLab is the wrong motivator.

The truth about the dots.

The truth about the dots.

Thursday, April 25, 2019 - 1:45:02PM

Wow, going through the AP Computer Science Principles from Kahn Academy and Pamela Fox has done an amazing job. It warms my heart that she calls Procedures what they are (and not Functions).

Been just going through the program as a student and I am completely blown away! Khan Academy has come a long way from its beginnings. It makes most home-grown curriculum (for this target demographic) just boring compared to their engaging videos.

I will say they really lost an opportunity to teach about bases and hexadecimal in the introductory Computers video. They didn’t even use the word “base” once.

It is so much more effective to describe our number systems and include hex with it and compare them to different creatures with different numbers of fingers. Really failed opportunity there.

Also, they missed an opportunity to jump on the JavaScript console and code something right away to demonstrate how these numbers work. Chrome DevTools is a rich place to show all of these numbers in action with CSS colors and binary math and such on the console.

Just more motivation to keep my type of content coming.

Thursday, April 25, 2019 - 10:36:45AM

Greg and Barry — the best two guys I have ever had the pleasure of hanging with — my college roommates thrown together for reasons the Universe only knows. Wish I knew where you are now.

Greg are you still playing golf and taking care of those clothes like you taught me to? How you charmed those co-eds with those big blue eyes and amazing sense of prep style. You were so in the dog house with your fiance after that one night. Fiance-this, fiance-that, you were like a character from a John Landis movie, you know, the Harvard type — then you met Barry and me.

Barry, I’m quite sure you deep into some Arabic region doing intelligence or your best John Wick. I’ll never forget when you dressed up as an Arab for Halloween, top in your class at Arabic. Yeah, it would make no sense if the reason you fell off the map wasn’t because you are there. I miss you bro. Thanks for introducing me to Nirvana and teaching me to hack HyperCard to do color.

Hey guys, remember racing my mountain bike through the halls of the Mormon Missionary training center? Still unbelievable to think we used to live there and were in charge of watching over the missionaries. How about playing guitar in the showers ’cuz the acoustics were better? Or smoking Oregano in the parking lot just out of curiosity. Or trolling the elderly missionaries by pretending to hit our heads on the walkway support poles. Or watching rated PG VHS movies in the missionary laundromat after 11 with girls we smuggled in while doing our laundry.

I’ve never known two better influences on me — ever.

Greg, hope she’s still all you wanted.

Barry, hope you’re still alive and free like you were always meant to be.

I don’t think I regret falling out of contact with any two human beings more than you.

Thursday, April 25, 2019 - 7:01:37AM

Anyone using expr, sed, awk, cut, tr, or even perl today who has bash 4.4+ available as the default shell is living in the 90s. There is absolutely zero reason to fork a subshelll for any of that shit anymore.

Yet another reason Google, StackExchange, and Quora searches are failing so many many. Thousands still think these good ideas.

Wednesday, April 24, 2019 - 7:24:19PM

One of our members is making a fan site for an Overwatch Asian team and I cannot help but remember how so many Asian countries revere gaming teams more than any other sports team. I have read that cultures are drawn to sports that showcase what they value most in terms of skill, not so much the game itself, but the physical and mental achievements of the games. What does that say about America being attracted most to Football, one of the most violent strategy sports? Does that mean these Asian cultures value intellect, quick thinking and reflex more than physical prowess? Probably.

Wednesday, April 24, 2019 - 5:51:01PM

More research on the Stanford CS140e uncovered that is was once in Rust and is now taught in C. I discovered a GitHub repo that appears to be from a Stanford student when they were doing it in Rust. The idea of having a series of guided projects here that have members creating an operating system on a Raspberry Pi is really, really attractive.

Yet, I understand that C is really the language for OS development – especially with Linux being so dominant on that front.

In fact I think I would agree with Brian Cantrill that Rust fills that sweet spot between the kernel and scripts where system software and middleware lives.

It is hard enough to get all the full-stack engineering learning into these guys in the short time I have with them. It would certainly help if I could reduce the languages by one. Web + Bash + Rust + C + Assembly would be my ideal set if it works out. It would certainly help if I could reduce the languages by one. Web + Bash + Rust + C + Assembly would be my ideal set if it works out. Maybe throw in Deno instead instead of Python since the strict typing Typescript provides is way better than Python.

I can just imagine so many mainstream people reading those last paragraphs and thinking I have gone completely insane. It’s nice knowing that Sergio and Brian exist even if I may never meet them. These are relatively young guys with heads on so completely straight.

Wednesday, April 24, 2019 - 4:58:26PM

Having been bitten by data races and memory leaks more than once in Go — and absolutely loathing Go’s additional “contexts” to get around them with maps — I am compelled to strongly consider Rust after watching this..

No data races is huge.

Zero garbage collection and 100% guaranteed pointer dereferencing and memory safety were already monstrously convincing to give Rust a look, but no data races really makes it completely difficult to code another day in my current favorite low-level language. The true test will be how well Rust handles concurrency and how truly asynchronous it is.

One thing is for sure, Rust blows the fucking doors off of C++ on all counts and C itself for most things. It’s syntax is much less approachable, but it is a systems language, not a Python replacement. Go is more like a better Python.

I wonder if MicroChip PICs can be coded in Rust.

That video also grabs me because it dares to ask the ethical question, what would the world be like if everyone coded in Rust instead of C, Java, C++, Go and all the other languages that allow massive security vulnerabilities to exist that Rust shuts down from the beginning.

Obviously you know my answer to that.

Rust is a better language for the world not just more efficient and good at stuff.

It is also entirely possible to write a full operating system in Rust. The other languages just are not as good at that. The Stanford course in operating systems actually has students building an entire system in Rust.

That is huge!

In fact, it is so amazing that I definitely will have a “camp” where we write our own operating system in Rust. It just has to happen.

Tuesday, April 23, 2019 - 8:11:28AM

Ran across this explanation of how broken Windows standard input is and all I have to say is good-riddance!

My wife says since switching back to Linux this year I seem happier all the time. She’s absolutely right.

As a reminder, in 2013 — almost exactly six years ago — I started SkilStak on a single Linux machine that actually had VMware running Windows so I could teach GameMaker.

Then I bought three Acer laptops and put Linux on them. I had zero debt.

I should have stopped right there.

Instead, as I am prone to do, I listened and considered the informed opinions of others — especially my little genius members — two of whom were insanely addicted Apple freaks at the time. They were 11.

Yes, I listened and listened. Every week they would humorously bag on me for keeping SkilStak on all Linux making intelligent, informed arguments most 40-year-old technologists could not even articulate. They would talk me through what it would take to migrate our much larger groups of 8-16 to Apple. These are kids that wanted to run their own mail servers at home, at 11.

The most compelling argument — at the time — was that it would make it easier for parents to help and for members do get right into coding, Macs being all friendly and shit.

I must admit part of the decision was to appeal to the parents who perceived Macs to be something more than anything else — particularly the CTOs, CIOs, Directors of Tech, and other executives who constituted most of my parent population.

It is not an exaggeration to say some of those parents might not have signed up if I was not using Macs. They were that fucking snobby biased. I was in a stupid place of still caring what others perceived and not what I knew to be true. It was just so much energy to convince them that Linux was the superior operating system on the planet.

Many of these senior technology executives didn’t even understand what Linux was. That should have been my first clue. Many of the parents were just downright unapologetic in their lack of understanding and zero desire to understand. They wanted their kid to learn on Macs or nothing at all because Macs were “the best.” I mean, how fucking uninformed can you get? It reminds me of that intro scene with Elliot describing Terry Colby. [And no, I’m not going to explain it. You’ll just have to watch it. It’s in the first episode.]

The thought of renting Linux laptops to members in general never entered my mind – the thought of recycling old, unused hardware even less. There were too many members and perceptions I had to meet.

I did, however, loan several Linux laptops for free to the “Pro” group of senior students. Looking back now I realize almost everything I did right, I did with the Pros. Giving them a loaner Linux machine was brilliant. They messed with it and were constantly motivated to learn more about Linux. That is what Linux does. It infects you with curiosity and the feeling that you are in control. It basically makes computing fun again. I have solid objective evidence this is working right now.

The proper decision to have made then would have been to invest the modest profits I had accrued in buying more humble Linux loaner laptops — even recycled old systems — for all members and letting the snobby Mac-or-nothing parents go fuck themselves take their kids someplace else.

Instead I made the worst decision I have made in the last six years. With no financing help from Apple (their rate was horrible), I financed $30k of Apple hardware.

It will be several years before I ever recover from that stupid decision.

I want to say I made it from a good place, but looking back I realize now I did not. Deep down I knew that crappy Linux laptops were just fine.

The story ends when those same radical Apple fanatic members grew to driving age. These beloved and senior members came to me and said, “Mr. Rob, I’m throwing Apple out. It’s just crap. Look at this Dell XPS running Linux. So awesome right?”

Face fucking palm.

And here I am typing away on that exact same XPS running Linux Mint happier than I’ve ever been with how SkilStak is organized and moving along. That Macbook Pro I got because I thought all CEOs needed one to be taken seriously and just such an amazing screen my old eyes loved ended up being the subject of the biggest class-action lawsuit against Apple in its history. I paid $3400 for it. I paid $1200 for this XPS that kicks its ass by every objective measure.

What did I do with all the Macs?

Half are still sale for less than 20% of the value I paid. Apple’s stock has tanked more than half its total value. I’m running a RancherOS Kubernetes cluster with the 16 otherwise useless Mac Minis.

I never got even close to the return on investment I paid for that Apple shit.

The worst irony of all is that the Mac I had was the least stable operating system I have ever run was Apple Yosemite on my $3600 Mac Pro. (Mohave fixed it)

So to anyone thinking of buying a computer out there, take a serious look at Linux Mint. It is easier to learn than a Mac. I swear to God. I have nine-year-olds doing just amazing on it.

In short, stay the fuck away from Apple products — even more now that they purposefully include hardware that will not even support Linux drivers and the entire company is in a well-deserved nose-dive.

Apple has always been a shitty company. Always.

I allowed myself to be too blinded by what others thought I should do or what they would think of me. No one makes good decisions when they think about those things. I knew I was right and I convinced myself otherwise. Don’t let that be you. Certainly listen to others, but have the courage to act objectively in the end — even if you are the only person in the entire world who sees it. [Which makes me want to watch The Big Short again]

Monday, April 22, 2019 - 8:52:47PM

Been digging into JQ jq and been completely and entirely blown away by it. It is so well done it definitely should be at least a candidate for Linux canonization and inclusion. You could make a solid case that it is more important than sed and awk for modern shell coding.

As I’ve been getting into it more I have realized that you can actually compose new JSON data as well as query and consume it. The filter syntax is absolutely brilliant.

Now that I understand it more I simply have to move all my configurations — including for kn — into single JSON files.

And when you pipe curl to jq — I swear to God — angels sing.

Monday, April 22, 2019 - 8:16:54PM

Looks like no problem renewing our lease on this Beaty location for another year or more. Whew. It’s nice having a home we can count on. I really love this agency and our landlord. Good to know the Universe is watching out for us.

Monday, April 22, 2019 - 4:24:24PM

I was reminded recently that Bash does not have floating point division built into it. Truth is, you should really not depend on it. All you have to do is experience 2 / 4 returning 1.9999999 just once in any programming language to realized the problem. [I’m sure some of you out there have been around long enough to know what I’m talking about.]

Monday, April 22, 2019 - 1:40:58PM

Just discovered the : command, which does nothing. Here’s an amazing way to check for required arguments in Bash.

: ${1:?"Missing name."}
echo Hello "$1"

The output isn’t nearly as pretty, but if you add my sol functions (which are loaded into my .bashrc), you can clear the line.

solnames=(y o r m v b c g)

sol () {
  case $1 in
    base03 | b03) echo -ne '\033[1;30m' ;;
    base02 | b02) echo -ne '\033[0;30m' ;;
    base01 | b01) echo -ne '\033[1;32m' ;;
    base00 | b00) echo -ne '\033[1;33m' ;;
    base0 | b0) echo -ne '\033[1;34m' ;;
    base1 | b1) echo -ne '\033[1;36m' ;;
    base2 | b2) echo -ne '\033[0;37m' ;;
    base3 | b3) echo -ne '\033[1;37m' ;;
    yellow | y) echo -ne '\033[0;33m' ;;
    orange | o) echo -ne '\033[1;31m' ;;
    red | r) echo -ne '\033[0;31m' ;;
    magenta | m) echo -ne '\033[0;35m' ;;
    violet | v) echo -ne '\033[1;35m' ;;
    blue | b) echo -ne '\033[0;34m' ;;
    cyan | c) echo -ne '\033[0;36m' ;;
    green | g) echo -ne '\033[0;32m' ;;
    rnd) echo -ne $(sol ${solnames[$((RANDOM%8))]}) ;;
    reset | x) echo -ne '\033[0m' ;;
    clear | cl) echo -ne '\033[H\033[2J' ;;
    line | ln) echo -ne '\033[2K\r' ;;

: ${1:?"$(sol ln; sol r)Missing name.$(sol x)"}
echo Hello "$1"

Monday, April 22, 2019 - 12:52:21PM

Rediscovering the value of a guitar break. My god it does wonders changing up the chemicals in the brain after a long coding session. Only takes one song really. Sort of supercharges the creativity again. I swear there must be a lot of dopamine involved. So weird and amazing at the same time. The brain is an amazing thing.

[Natural is so much better than popping Adderall like so many do (gamers, med students, techies).]

Monday, April 22, 2019 - 11:56:43AM

Feels better having the Coding Languages - Quick Start written down. It really forced me to have the courage to remove everything that just isn’t that empowering – including Python, which Go clearly replaces. It is worth noting that not a single one of the languages listed is object-oriented. They can do objects when it makes sense, but are not fundamentally dependent on them.

Monday, April 22, 2019 - 10:39:05AM

I’ve decided SkilStak needs a full — beginner to advanced — Bash 4.4+ series of guided projects and put them at the same level of importance as the Web stuff. Bash will be the first terminal scripting language anyone will learn — not Python, not Node. Python and Node can come later — much later.

I keep reading about people doing things that are so much simpler just in Bash than in Python and Node but they just don’t know about them — because no one is covering them.

I’m scratching my head as to why and the best I can conclude is that Python runs on Windows without Bash even installed, same with Node. Is that the reason more people are not learning the power of the Bash shell?

If so that’s just fucked up. So many will eventually — hopefully — realize the level of empowerment from having the Bash shell but will have already learned all the other shitty ways of doing it in Python and Node. The motivation to learn the Bash way to do things is defeated. When one of these people gets around to learning Bash they are likely to bawk at Bash’s weird — but powerful — syntax. They won’t realize the raw power of composing terminal one-line scripts that Python and Node could never dream of. They will remain handicapped by their initial exposure.

The other big fucking lie that I bought into from Python is the “cleaner syntax” shit. That syntax might be sort of ok for larger projects. But larger projects should not be done in Python. A real language with actual typing should be used instead including TypeScript or Go. Noobs do not realize that the white-space-significant Python they are using is the exact reason they should not be using it. Trying writing a one-liner with Python from the command line. [Well at least that made me chuckle a bit — was getting worked up there.]

So Bash it is. Bash and only Bash until they have mastered all of its idiosyncrasies and powers. This is absolutely the right direction — especially for those going into System Administration, DevOps, Cybersecurity, and anything else on the “back end”, which is the biggest part of being a full-stack engineer.

[I really have to laugh at myself talking myself into doing what I’ve always known was the right thing deep down.]

Monday, April 22, 2019 - 9:58:15AM

This Twitter thread about dotfiles reminds me why I should never open up Twitter in the morning. It sucked me in. People are doing the dumbest things and they don’t even know it. They are great people that for some reason just don’t know why what they are doing is so completely stupid.

I suppose that is the plight of experience. I keep seeking deeply for something new in there that I might be able to learn from — but most of it is just absolutely inexperience that frustrates me so much because they don’t even see how stupid it is.


This is why I need to keep my head down and just make amazing shit and document it well so those that need it can actually find it and understand it if they wish.

Monday, April 22, 2019 - 9:24:19AM

Yeah, if you have setw -g mouse on in your TMUX config you really haven’t thought that decision through clearly.

And if you someone actually has to explain to you why set -g prefix C-z is an absolutely horrible idea, well, you are really operating at a novice level.

Every once in a while a detail like that really gives away a person’s actual ability. I don’t care how many Twitter followers you have or how important you think your position is for that massive company. You haven’t learned the basic alphabet of terminal mastery.

Learning this stuff wrong from the start can create muscle memory habits that will destroy you later when you finally realize how stupid that was. You’ll have to relearn everything over from the beginning. This is one reason learning the proper home rows typing and vi keys is so absolutely crucial — everything uses them — not the arrow keys.

This just lights a fire under me to finish the hundreds of more pages I need to port over so I can get on with explaining this stuff in detail for those who care to learn it and know why.

Sunday, April 21, 2019 - 7:24:49PM

I’ve been having so much fun coding in Bash 4 and getting shit done in 1/10th the time of Python, Go, Ruby, or even Perl (my go-to duct tape language for 10 years), that I think I have been permanently corrupted. I can’t bring myself to justify anything else — and that is really saying something considering how much I fucking love Go and modern JavaScript — especially after starting SkilStak on Python (which is still tons better than Java).

Honestly, I am still a little sore about how badly Python let me down. I can sure say I gave it every possible opportunity — ultimately it is one cluster-fuck of a language — but only a few know enough to even be able to understand why. The rest aren’t even worth talking to.

Using something like Node for this would be an absolute joke. The only people who would ever pick that option are people who can’t code in Bash, one-trick ponies with only JavaScript skills. NPM is shit. Even Node’s creator pretty much said so himself even before the massive worm incident caused by no package signing in the entire fucking architecture (how stupid do you have to be to launch a world-wide packaging system without that).

“What about concurrency?”

What about it? Forking off a subprocess in Bash is super easy and if you need something more involved then you need true async like what Go offers the easiest.

It is so completely obvious now how all that rigid OOP shit from the 90s was a total catastrophe, corporations have slowly been admitting it but brilliant people like Brian Cantrell call it out with great comic relief for what it is — absolute shit. Single inheritance was one of the fucking stupidest things to ever happen — and you know what else — so was C++. I fucking hate that language and always have. C or nothing. Rust is finally a brilliant take on what Bjorn could never get his big bald head around.

So, there’s more strong opinions to add to your list of reasons to hate Mr. Rob.

You know what? I don’t give a fuck.

I’m having so much amazing fun using this stuff and helping those who really want to do the work to understand why I have these opinions that I don’t even give it a thought any more. Those who want to learn the most amazing technology humanity has to offer right now can apply to study with me, the rest, well …

I cannot wait to sink my teeth into MicroChip PIC Assembly even more. I have forgotten everything from before and now what we have the Gooligum stuff we are off and running.

The best part about this job is I mentoring fundamentally involves doing stuff with those you are helping to learn, some of it you have mastered, some of it is emerging and you get to help them process it in a larger context while you both learn it together. Such is the case with Rust and Assembly for me right now. I wouldn’t trade it for anything.

Sunday, April 21, 2019 - 4:06:44PM

Every time I see snake_case it’s like seeing a dude with a 'stache and a mullet.

Sunday, April 21, 2019 - 11:23:02AM

The fact that mainstream bloggers are picking up on the “pivot to privacy” movement confirms that everyone is rethinking this as a priority — even though this blogger repeatedly proves he does very little research.

Sunday, April 21, 2019 - 10:09:27AM

Been coding in shell my entire professional life and never knew you could use natural language when getting date values for the date command. Was this added by Bash? Hummm.

date -d '16 weeks'
Sun Aug 11 10:11:30 EDT 2019
date -d '16 weeks ago'
Sun Dec 30 09:11:53 EST 2018

Combine this with the very handy --iso-8601 switch and you get a curl one-liner that will pull all of your Google calendar events for the past 16 weeks and 16 weeks in the future. [By the way, Google’s API docs say they access RFC3339 which looks like is incorrect. The T is an ISO8601 thing.]

calevents () {
  local id=$(<"$KNWORK/.kn/cal/id")
  local auth=$(<"$KNWORK/.kn/cal/auth")
  local uri=''
  uri+="$(urlencode $id)/events?"
  uri+="timeMax=$(date -d '16 weeks' --iso-8601=seconds)&"
  uri+="timeMin=$(date -d '16 weeks ago' --iso-8601=seconds)&"
  curl $uri

You can then jq (sed for JSON) this to death to get what you need. So useful I started a gcalsh project for it.

Once again, Bash duct taping gets me finished at least 10 times faster than if I had to do that using other language.

Saturday, April 20, 2019 - 8:57:47PM

Feels good to be back in IRC. It’s. Been. So. Long. It is just so much faster than Discord or Slack. There was never any chance of IRC going mainstream. But it is still so much more efficient, unless you need to send files and stuff and even then it’s pretty good.

Saturday, April 20, 2019 - 4:02:08PM

Time to start researching the latest web socket APIs and approaches for collaborative 2D multiplayer games. One member had a rather inventive way of transferring state directly between two players without any state management in the middle. The server was simply echoing data to the other player. Ultimately this will not support other entities in the game but I did think that was a pretty creative first step considering he knew nothing about web sockets before learning it on his own.

Saturday, April 20, 2019 - 11:49:32AM

Um. Hey look there’s a now — except we are much cooler.

Saturday, April 20, 2019 - 9:58:25AM

In less than 30 minutes I was able to implement a feedback handling text area on every page using Netlify’s amazing forms support. We so live in the future. Reminds me of perhaps the world’s first centralized form handling service running on my Mac on my desk of cardboard boxes in 1995.

Saturday, April 20, 2019 - 8:56:36AM

Matthew Lesko is perhaps one of the least understood and yet significant human beings to have ever lived. Everything about his life and motivation is authentic and lazer-focused on helping others — plus the guy is so damn happy all the time. Watching him really inspired me to focus even more on the good — calling out the bad when it appears — and fucking smiling more. [Yes, that’s a double-entendre.]

Friday, April 19, 2019 - 12:00:24PM

I cannot sing the praises of GitLab loud enough. This piece on working remotely is solidly researched, heart-felt, and just so damn accurate. I love that GitLab does things the right way even if Silicon Valley is trending on something else. If anything they are making absolute fools of GitHub and everyone buying into the GitHub mania without any objective analysis. But that is pretty much Silicon Valley, which is why so many truly extraordinary companies — like GitLab — are essentially saying, “fuck Silicon Valley and all your unsubstantiated ways.” It is rather comical watching Google and others go through this “oh shit” moment of realizing they doubled-down on just plain stupid foundations that they cannot now easily change.

One of the reasons for GitLab’s success is that the entire company is 100% transparent. The entire handbook is online. GitLab has taken the best ideas of the free and open-source software movement and applied them to the entire company model, which they have named “open core.”

This business model is laughed at by traditional corporations such as Apple, but GitLab is so far ahead of Apple one day Apple will be wondering what the fuck happened. The proprietary model is dying and Apple knows it. Losing half their value this year might have woken them up. Tim begs for people to learn Swift and come work for Apple, but I bet the large population of 10x developers from among the rising generation are no longer interested in promoting Apple’s proprietary view of the world. They actually care about the world and Apple’s planned obsolescence is not something they want their amazing talents anywhere near.

Result: Apple will slowly but surely change to an open core model or lose the talent it needs to beat the competition.

The same is happening to Google as the scramble to attract the best and brightest.

It has become a thing in Silicon Valley to work at Google to make gobs of money and then start your own thing rather than becoming a “lifer.” You are considered stupid if you stay.

I love GitLab, not just because it’s main product is objectively superior to its nearest competitor, but because the company’s business model and people are so overwhelmingly superior to those working elsewhere. I look forward to doing anything I can to help members eventually find positions there.

Friday, April 19, 2019 - 11:23:33AM

Alright fine. I confess I could not leave that 34,000 piece of garbage alone. Sigh. I’m hopeless. I really am.

I’m sorry to have to be the cynical voice here, but after scanning this entire thing I’ve concluded it’s mostly a hyperbolic infomercial with no substantial research or actual experience of any kind behind the claims. It even peddles shill that the authors refused to publish in electronic form and create a new edition every year.

I do like Brandon’s writing style, motivation, and diligence, but wow.

Cracking the Coding Interview is one of the worst books to ever to be printed and contains very little actual value whatsoever. The truth is the best companies to work for DO NOT REQUIRE A CODING INTERVIEW! Instead they hire you based on your output and watch you for a month or six and then offer you a position later. You DO NOT want to work for ANY company that insists on a coding interview. They are one of the dumbest vestiges of companies that do not understand how the Gig Economy works. Do yourself a favor and learn about the Gig Economy instead of funding that slimy book, it’s author, and any company too stupid enough to still use those types of interviews.

Brandon, have you actually read those books you list cover-cover?

Gary V is one of the singularly worst things to happen to the rising generation. (You are a perfect example.) Remember Seth Godin? Yeah, didn’t think so. You would think we would learn, but every generation has their Gary V until they wake-up and actually start doing something valuable instead of having their ego’s stroked and paying for the privilege.

There are only three things you need to land any career:

  1. skills and abilities others need,
  2. output to prove you have them,
  3. contact with those in need.

Hey look I just saved you 33,950 words.

Sure there are lots of ways to accomplish these, but they certainly are not as complicated as all of this sounds.

The biggest fail in all of this is the level of urgency-addiction and distraction from what you really should be working on – producing shit that proves what you can do and networking to show others you can do it, you know, the actually work of getting a job instead of all this fucking bike-shedding.

Believe it or not, I actually do care. I would have just went back to bed and nursed this cold instead of writing that if I didn’t. It physically hurts to see so many young people being misled into paths that will lead them to massive disappointment.

Friday, April 19, 2019 - 10:45:06AM

“How To Get Any Job You Want - A Guide To Employability Skills Free 34,000 word blog post on everything you want to know about careers” (DEV Digest, home of wonderfully naive tech information)

I am certainly guilty of hyperbole. But my god, this single blog post claims to know “everything you want to know about careers”. How fucking stupid can you get? Do people actually read that shit?

I’m so turned off by the title I cannot bring myself to even read it for potentially the good parts.

Maybe it is living with an Asperger’s son-in-law who reminds me to be more literal every single day that makes this so blaringly stupid to me.

/me goes back to producing actual value.

Friday, April 19, 2019 - 10:19:35AM

Just so sick. It’s like allergy season and flu season combined.

But I did eek out a few lines of code that allow me automatically include any content module with a single line in a vim session.

### Session

### Home

* more home projects


### Session

* [Creating a Custom Domain Web Site](/creating-a-custom-domain-website/)
* [Creating a NameCheap Custom Domain](/creating-a-namecheap-custom-domain/)

### Home

* more home projects

with just :.!kn s custom which outputs the markdown needed.

Now every member gets their own customized text book that reflects what they are working on at the time they are working on it. This learning content composability is really the future of all learning content creation. The world will come around eventually.

It took me 15 minute to tweak the existing kn s REGX command to do that. That is what duct tape coding is all about. Creating a VSCode extension to do the same thing would have taken an hour or more. Graphics users don’t have a prayer of touching that type of terminal master workflow efficiency.

The thing is the more you add slight efficiencies the more they snowball into massive workflow gains because they often stack on each other, as this one did.

In about a year I really need to take kn on the road, so to speak. This stuff is just to amazing to keep to myself. There must be other educators out there looking for a way to combine their text and workbook writing with their “blackboard” lab sessions and individualized student notes.

Friday, April 19, 2019 - 9:47:05AM

Sim card on my Google Pixel suddenly stopped working. I also got the friendly reminder my location tracking is still enabled. So now I have a tracking device that monitors all my movement and spending habits that doesn’t even have a working phone in it.

Thursday, April 18, 2019 - 12:45:23PM

Watching more of Douglas Engelbart’s introduction to mind-mapping, hypertext, the mouse and so much more. I love that he says, “we are our test subject users.” That is exactly what SkilStak has been for me developing everything I need to make learning work this way. Few humans have ever had a greater impact on our modern technical world than Doug and his team.

Thursday, April 18, 2019 - 11:25:56AM

Is it cut and paste or yank and paste? (As a member joked.) He has a point since vim was the first visual editor to read large usage and called it “yank” not “cut.”

Add that to the geek jokes file. Hey XKCD are you listening?

Thursday, April 18, 2019 - 9:01:06AM

Realizing having the same chill music all the time can be very meditative.

Thursday, April 18, 2019 - 8:22:51AM

When presented with an internship or first-employment opportunity the rising generation of workers asks one of the toughest questions in history — “What do they even do?”

Corporations with generic, stock-photograph web sites dripping in buzzwords and no substance don’t cut it anymore — thank God!

I don’t think there has been a more literal fulfillment of Elliot’s visions about Evil Corp. Ironically these corporations — and all the senior executives running them today — don’t even know who the fuck Elliot is.

Thursday, April 18, 2019 - 1:16:01AM

Having real HyperCard flashbacks tonight doing a bit of Web event programming — specifically wrestling with the decision to put the code in the widgets or in a central, all-powerful script. It was generally considered better to put everything in one script file rather than throw it all over. And yet web components are all about throwing everything all over and “encapsulating” them.

Wednesday, April 17, 2019 - 11:15:28PM

Remarkable presentation from Brian Cantrill, (Joyent CTO) about the possibility of writing a new operating system in Rust. Spoiler alert: he doesn’t think the kernel should ever be, but “the operating system is more than just the kernel.” It’s very validating to hear him make so many of the same conclusions I made after looking at it about a month ago. Rust replaces C++ and C for a lot of systems applications because of its lack of garbage collection and guaranteed safety, but it still sucks at concurrency and user-land applications, which are really the domain of Go and Python.

My favorite part of the presentation was him calling the 90s for what it was, the “dark age of object-oriented plagues” (ok maybe he didn’t say it exactly that way.)

I need to circle back and add a link to that video in a stand-alone article on Rust that is boiled down for non-system-kernel developers.

Wednesday, April 17, 2019 - 9:38:00PM

Microsoft Employee Uses Shitty Password, Gets Hacked Giving Access to All “non corporate” Hotmail, Output, or MSN Users

If you continue to use Microsoft or Google for email at this point you simply aren’t paying attention or are just too fucking lazy. (Yes including my own family. Love you!)

Wednesday, April 17, 2019 - 9:34:52PM

Just read a public school educator advocating for Fortnite in the classroom.

How stupid do you have to be to think stooping to that level is both required to engage students and that it could in any way be turned into an educational endeavor. Absolutely disgraceful.

If you have to use Fortnite to get students excited about learning you are a fucking failure.

Wednesday, April 17, 2019 - 7:29:01PM

Service workers in Firefox are really rather dumb to work with. Chrome has really taken the lead there. Yet another reason to stick with a properly configured Chrome for web development.

Wednesday, April 17, 2019 - 4:23:32PM

The Wikipedia History of Blogging is a perfect example of how fucked up Wikipedia can be. You can almost see the fingerprints of all the bloggers trying to get their little names in the list. Yes blogging is about exhibitionism to some degree — but at least a log of bloggers are doing it out of a sincere desire to share knowledge and promote dialog.

If I wanted to I could put a whole thing about inventing Teleport Web Weaver in 1994, the Internet’s first WordPress-like tool for Teleport users to post their own web sites with no coding skills.

The whole thing makes me question so much of history. I mean, how much of it is stuff we know about because someone made sure it was recorded so everyone would know about it? What is the point of that? All that does is cement what a fucking horrible human being you were. And yet, most of history is people making sure they were well known, for whatever reason.

What about all the amazing people who performed miracles of personal sacrifice for others?

I’m reminded of Maggie Ezraty when I say that. Sure she owned her own Yogaworks and was filmed a lot, but she seems to have mellowed into a person content to only help small groups all around the world, without a lot of fanfare.

Wednesday, April 17, 2019 - 2:52:58PM

Remembering Windows Refund Day. Seems so different today.

Wednesday, April 17, 2019 - 2:04:34PM

I need to lookup Robert Sapolsky, rumor has it I will really love what he has to say.

Wednesday, April 17, 2019 - 11:17:58AM might be the best way to show-off Python and other non-web code on a person brand site.

Wednesday, April 17, 2019 - 7:04:42AM

I cannot believe they left the most important moment of episode 200 out of the Wikipedia page for How Your Mother Met Me. Of course I had to fix that. God bless Wikipedia.

I added my own version, including my old meme attempt to What Is It You Want To Do With Your Life?.

I’m still a little upset that they killed her off after that. She became an Economics major and was headed to help save the world. The happily-ever-after ending should have been Ted staying home to take care of the kids (his life’s mission is love) while “The Mother” goes off and takes on poverty in the world. Instead they kill her and don’t even tell you what the disease was. Ugh.

Nevertheless, the wisdom goes a long way for everyone — including those considering a career in tech.

Is tech really what you want to do?

Tech is just a tool of empowerment — not a life’s mission in itself.

Wednesday, April 17, 2019 - 6:02:24AM

Yawning at this My journey from Python to Go blog post. (Yeah, he left “journey” uncapitalised.) Half his titles are lower-case and half are title case.

Even though my writing is full of errors my recent obsession with the Gregg Manual has me more aware of a lot of things, such as how completely horrible most Medium pieces are. I mean this shitty piece has 2000 likes. I’m pretty sure most of them never actually read the thing. They just liked the title and clapped.

One of the best things about encountering shit in the wild is that it motivates me to do better. In this case I’ll be paying more attention to the mechanics of my writing.

Tuesday, April 16, 2019 - 5:25:40PM

Terminal mastery becomes an obsession and annoyance — only because using the Google calendar for anything or the remaining Google Sheet that I still use is so ridiculously slow in the middle of all my other workflows. I feel like that slow-motion segment in the Matrix whenever I have to go out of the terminal to use it.

I already have plans to move those steps of my daily workflow to commands, but just makes me more anxious to get to them.

Tuesday, April 16, 2019 - 4:42:44PM

Mastery is Fluid is the name of a future piece I must write. It is one of the hardest ideas to convey in our grade-for-this, certificate-for-that, diploma-for-another, trophies-for-all world.

“What do we have to show for our time with you?”

That’s the implied question not so subtly behind other, more polite inquiries.

“You have knowledge and skills.”

People don’t like the reality of the most obvious response but it doesn’t change that truth. They want something more tangible, which is where output comes in.

Your output is the only credential that matters.

That is the only thing anyone (with a clue) will ever care about.

Tuesday, April 16, 2019 - 3:16:54PM

Noticed that the DevTools width setting to match Google Pixel is 390 pixels. If something looks good at that width setup on Chrome on a workstation it will look good on a Chrome Pixel. Need to check the iPhone.

I know designing to a specific dimension is a bad practice, but it doesn’t hurt to consider that one extra word in the title that just doesn’t need to wrap.

Tuesday, April 16, 2019 - 1:46:13PM

So I’m sitting there watching Chomsky talk about the arrest of Julian Assange and I find myself distracted by the title that scrolls under this provocateur, “Linguist and Author.”

All I could think about is what determines who gets the title of author today and how completely and totally broken the term is.

Some might think “sour grapes” immediately but it really isn’t about that.

It’s about the foundational principle of authorship and its dependency on a middle-structure of publishers and those who proclaim — as if from on high — what constitutes a “book” and what does not.

Knowledge is being exchanged in so many different ways and books are ancient vestiges of a middle-layer that just doesn’t work any more. Most books — especially in the technical field — are so quickly outdated that investing in the idea of such is absolutely moronic.

People are so hung up on the romantic idea of “books” that you can “heft” that they fail to realize the attraction to them is to the knowledge and art within them, that the smell, texture, and heft have become associated with that knowledge and art and therefore created a positive association. It isn’t the paper that makes a book, it’s the content.

But the failure of the idea of books and authors goes further than that.

If you are actually proud of creating “a book” on linguistics or compilers — as Chomsky is well known for — they you have just confirmed how stupid you are because you are unable to see the flaws in the approach.

Even the traditional style and format of a book — including those about relatively stable topics — is woefully broken. This is the very reason the Web was invented. Most knowledge is not linear. Bibliographies are broken. You can’t hyperlink from words without a book text.

The current and future model for scientific and creative knowledge exchange will continue to model neurons of the brain — as so many other systems have come to do.

The solution to an broken tables of contents and indexes is search-centricity. TOCs and indexes have always just been the leading search technology of the day, but on every front such search technologies are ancient and broken. Having a single index including all the flattened content works wonderfully when search is added. This is the very nature of knowledge consumption today — and books do not come close to this model.

Books are dead technology and calling yourself an “author” just shows how fucking clueless you really are. There are not authors and non-authors, there are people, and we are all producing content and have something to say. Just because you think you have passed some metric separating you from the rest of humanity with something to say just proves what a fucking moron you really are. Your work to organize, research, and write those words is noteworthy all by itself. Putting into book form is completely and totally archaic and irrelevant.

Thank God the younger generations fully comprehend and value this.

[By the way, a spectacularly good example of this modern “authorship” is The Man in the Taupe Blazer]

Tuesday, April 16, 2019 - 11:23:15AM

Hey look science says Facebook is bad for you:

“While quitting, even temporarily, can be difficult for many of us, it might actually pay off. A 2016 study of more than 1,000 participants found that people who took a one-week break from Facebook said they had greater life satisfaction and positive emotionality.” (Eric Baumer, an assistant professor of computer science and engineering at Lehigh University, discovered from Medium)

No shit. Why the fuck does that need a “study” when those affected don’t even care about science or scientific conclusions?

Tuesday, April 16, 2019 - 11:14:18AM

It’s official. Live Server is banished from my curriculum. The time is better spent installing and learning BrowserSync, which also does not require VSCode to work at all.


Because it’s fucking broken, that’s why, and I’m more than a little pissed about it. I hate how much I have to redo things that otherwise would have been amazing. I make a sincere effort to use what is there, the best tool for the job.

How is it broken?

Today with a member I noticed that it does not preserve line numbers in the Computed tab. That is a show-stopper. That extension has not been maintained for a while. I was already on the fence about using it when BrowserSync so much more professional.

Tuesday, April 16, 2019 - 10:05:39AM

Just discovered The Gregg Reference Manual and realize I have essentially been following that style all along in my writing.

Tuesday, April 16, 2019 - 8:45:40AM

An “autonomous ice cream launching boat” does very little to help with the core needs of humanity. I prefer to spend my time making contributions that, as Linus outlines, promote human survival, social order before entertainment.

There’s nothing wrong with having fun and coding games and robots that distribute ice cream to rich people with boats on the lake, except all the 1000s of other more important priorities.

Perhaps the endeavor is meant to be a big learning project, in which case sure, there’s more value there.

Monday, April 15, 2019 - 8:39:19PM

DevOps specialists and site reliability engineers are among the highest paid, most experienced developers most satisfied with their jobs, and are looking for new jobs at the lowest levels. (StackOverflow Survey 2019)


And yet there are a kajillion bootcamps teaching Ruby on Rails for $8000. Pfff.

Monday, April 15, 2019 - 8:20:38PM

New site only in full usage for one day and already the improvements to content capture efficiencies and usage are astronomical. New ability for members to pull up fully rendered notes from the site — and take them with them even without an Internet connection I wish I could shout from the housetops for everyone in education to at least consider. So completely useful.

Monday, April 15, 2019 - 3:37:15PM

Intrigued by Linus’ conclusions on the meaning of life:

  1. survival,
  2. social order,
  3. entertainment (fun).

In his own way he’s agreeing with Joseph Campbell’s “follow your bliss” mantra — one of the least understood quotations ever made. Bliss, fun, and entertainment are all just realizing the upper level of Maslow’s hierarchy of needs.

Monday, April 15, 2019 - 10:55:25AM

Need an article on “assuming the technical debt of a company by acting out of urgency instead of authenticity.”

Monday, April 15, 2019 - 8:48:53AM

Headed into a 12-hour day, three of them in fact this week. The others are only 10 hours, but when I add in the time for invoicing, email, and site updates it’s regularly an 80-hour work week.

And yet I feel utter loathing for the CEO of Alibaba praising China’s new 996 law. I wish I could get to 996.

As you can guess my health is showing it. As I age health becomes more about enabling my mission rather than endeavors to distract me from discovering it, like when I was obsession with triathlon, mountain biking, paddle-boarding, and yes, even yoga.

Thank God I’m in front of a great window watching an amazing Spring morning unfold. Birds washing in puddles of water, more squirrels hiding and unhiding, cars rushing off to who knows where. My love of fitness has always been deeply tied to nature.

Sunday, April 14, 2019 - 11:45:17PM

There’s something about “speaking truth to power” that applies across the board, not just to activism. The core value behind the saying is authenticity combined with courage.

Recently I am learning more that this can be done without fear and without contempt for the person.

I am also realizing that there are many more opportunities to do this than anyone ever imagines — right in your own community, in your own neighborhood. It feels like Sam must have felt returning to the Shire.

Sunday, April 14, 2019 - 8:25:56PM

As I port more content over from the old site I realize how much of it is not technical at all — but also how critical it is to getting a job in technology. It confirms my move toward empowerment through tech skills as the primary mission.

All these other things are required to get and keep an occupation — and be happy with your life in tech. Learning to code is just the tip-top of the iceberg of skills you need to be a professional – especially in today’s Gig Economy.

Also, I see that most of the actual code is still in GitHub and needs to be ported to GitLab. The idea to use tagged revisions representing each stage of development tied to a step or part documented in the guided project.

Sunday, April 14, 2019 - 3:10:40PM

So many amazing people out there. Reminded well by a recent moment with a family working on finding ways to help learn and keep learning. At our core we all crave new experiences we can learn from. So much gets in the way of that from the beginning of our days on Earth.

Sunday, April 14, 2019 - 12:17:18PM

Just realizing how bad syntax highlighting actually is on any website or app. I once thought it was the best thing to seek, but after reading a whole lot about accessibility, color-blindness and how our brains work when digesting code syntax for the first time I now believe all code should be plain black and white in any documentation about it.

If you notice GitLab uses only minimal highlighting and never depends on things that would look confusing to someone who just sees in gray scale.

You do not see that in the 1000s of coder and tutorial blogs out there — many from people who should know better.

Black and white has the added advantage of being more printable.

On the other hand, having a colorful editor is almost a requirement these days. I absolutely love the solarized Vim with the pandoc and pandoc-syntax plugins.

One thing I have noticed is that this forces me to isolate code in different ways and include less of it at a time when writing about it.

Sunday, April 14, 2019 - 10:56:29AM

One of the clearest ways to communicate how powerful Bash shell is for duct-tape coding is the following watch replacement.

watch () {
  while true; do
    sleep 2

Notice how I can pass the entire list of arguments directly to the shell as if they were directed at that location in the code. To do the exact same thing in any other language would require an exec() or system() function call. This is why shell will always be better than languages like Python for duct-taping.

Sunday, April 14, 2019 - 9:25:16AM

Recently I read of a Davidson College Professor receiving “tenure” and it got me to seriously questioning why anyone — besides the person with a perma-job — actually thinks tenure is a good idea. Obviously these are good people, in fact, it was meeting the professors and workers at Davidson that countered my disdain for everything that is wrong with any college approach. At one point I thought I might even want to be a professor. I regarded mine so highly in college — except for Galina Michailovna, who I hope lives an excruciatingly miserable life for the rest of her days (ok, maybe not literally). I have yet to meet a Davidson Professor whom I did not genuinely enjoy being around.

But think about it, college tuitions are sky-rocketing. Meanwhile colleges continue to grant what amounts to lay-off immunity to most of its professors.

Does anyone else see the fucking problem here?

Market forces have been obliterated by this completely.

I get that true research has to happen in a way that protects them, but why does that have to be institutionalized?

I suppose the opposite problem — which we see in shitty bootcamps — also illustrates the point. If you have educational corporations catering to businesses and clients only you get $8000 9-week Ruby on Rails cramming that does no one any good — except the company raking in the money with no accountability.

The common element is accountability. Markets hold people accountable. The target of that accountability depends on where the forces and loyalty are derived. Once a professor is tenured, their highest loyalty is to the institution. They may not think they are the universities bitch, but they are. Most universities loyalties are not to the students. That much has been overwhelmingly clear from the beginning.

The question is, does tenure free a professor to focus on the students more? Or the research the university requires?

Who’s your customer?

That’s the question everyone should constantly be asking themselves. Is your boss your customer? Probably not.

Courage comes from being able to truly do things in the best interests of your customer once you have identified them — no matter what the perception or disruption.

I’m just not sure what tenure does to that relationship.

I’m also so very grateful to have dodged that bullet. I was actually considering professorship for all the right reasons, to empower more students, help reform the system from within, blah, blah. I could not have been more wrong.

I’ve learned quite well — through empirical observation — that the most objectively successful way to contribute and influence is through mentored apprenticeships. The connection and affect could not be more direct.

Sunday, April 14, 2019 - 7:27:23AM

Going on my first month of never having to restart my Linux laptop. Aw Linux. I’ve missed you so. People fear Linux for being scary but the truth is that a relatively mature distro like Linux Mint Cinnamon is the most stable system you will ever use.

There was a period of six months where my Mac would randomly freeze several times a day. It wasn’t fixed until the Mohave release.

Saturday, April 13, 2019 - 10:39:35PM

Here’s another blog post to verify the amazing deployment speed. From the moment I finished and entered kn save it takes less than 32 seconds to see the changes live.

It actually turns my stomach thinking of all that unnecessary waiting for Netlify first to have to pull down every single changed file and then to run the VuePress build that would actually crawl every local URL every time. It took about 10 minutes on average.

Why so fast?

Because I have kn watch running in another tmux window that is watching for any changes and rendering the index.html files immediately in the background. VuePress can’t even hope to match that level of development performance. It’s a complete joke at this point.

Still just so amazed how well this turned out using pandoc and some shell scripts. It’s a real testament to duct-tape coding.

I have a permanent staging server running on localhost:3000 that can be accessed from any device here on my LAN — including mobile phones — and when everything looks good just do a kn save to instantly deploy.

There is simply no faster way to produce web content, period.

I gotta polish this up and spread the word a bit. I can think of a lot of people who could benefit.

Saturday, April 13, 2019 - 10:34:34PM

A little touch an go there on the Netlify deploy of the new site. Here are some gotchas that are not really documented:

I moved everything in .kn/theme/ to root. The theme is really just the template.html file, which is simpler in the long run.

I’ve updated the kn command as well.

I still need to implement the PWA service worker but it is pretty damn snappy without it.

Saturday, April 13, 2019 - 8:09:08PM

Super conflicted on which Markdown to teach at the moment. I’ve been all about BaseML and EzMark and CommonMark, but after using Pandoc Markdown for the new site I’m thinking everyone should embrace just how amazingly powerful it is.

I’ll teach three different levels:

Progressive Markdown Formats
Markdown Explanation
EzMark The least amount of Markdown.
EzPandoc Only Pandoc Markdown that will cut and paste into Medium.
Pandoc Full Pandoc Markdown.

Saturday, April 13, 2019 - 5:43:27PM

OMG I love WiseCrack, it’s like they are tuned into exactly the same conversations I’m having with my wife daily. Here’s one all about Idiocracy turning out to not be a prophetic documentary, but instead points out the difference between rampant “pseudo-intellectualism” vs idiocy.

Saturday, April 13, 2019 - 3:05:24PM

Just remarkable how much having a custom domain and starter HTML5 template has been to inject motivation into these guys. Definite win there. They learn from adjusting and hacking the template, the way most would in the professional world. Very few developers code a full website from scratch.

Saturday, April 13, 2019 - 11:46:39AM

I am completely blown away by how beautiful the Ubuntu Server installation is now. We have come so far from the days of butt-ugly terminal install screens. Makes me want to learn all about whatever library, framework, or API they are using to create those colorful text terminal screens.

Saturday, April 13, 2019 - 10:59:05AM

Noted that it is better to leave a link broken with nothing written as a placeholder so that kn check can find the broken link rather than thinking something is there and discovering it is just a title, or worse a big fat TODO.

Saturday, April 13, 2019 - 10:37:31AM

I am so chuckling right now at the article on how to create a “dark and light mode using CSS.” I’ve had it for, what, a year now? I’m glad they wrote it up so completely. I love that they made such prominent use of CSS variables.

Saturday, April 13, 2019 - 8:20:24AM

There are two things that pandoc does that really annoy with regard to automatic link identifiers:

This isn’t mentioned anywhere in the docs. I really need to submit a patch to pandoc that does nothing but convert a string passed as an argument to it’s id using the same algorithm pandoc uses.

Friday, April 12, 2019 - 9:04:55PM

Just got a renewal notification about Roblox, which makes me just want to rant about it. Here’s the thing, Roblox isn’t bad, it’s just 100% irrelevant. The best it does it teach you event-based coding in a 3D environment, which prepares you for development in things like Unreal Engine and Unity, but why would you do that?

I know. I know.

“But Mr. Rob, didn’t you buy all those computers do do 3D game development and visualization?”

Yes. Yes I did.

But I see now that was a mistake. Not that 3d game and simulation development is a mistake, but adding it to my already crowded schedule of full-stack engineer projects really spread me too thin and diluted the important stuff. While 3d development is a very amazing skill to have, it is no where near as foundational as creating a progressive web app, learning to become a Linux terminal master, or using and configuring servers and Docker containers.

Hell, running a Minecraft server is way more educational and relevant than anything you can do with Roblox or Unity or Unreal Engine.

There was a time when I thought 3d virtual environments were one of the greatest things to come into the world, and I do still think they are amazing. They just are not critical. And when it comes to empowerment and changing the world, critical matters more – not to mention how much more employable it is.

The great irony is – once again – I had so much of everything right from the very beginning:

It’s nice being right. It’s not so nice having to realize your were right before you were wrong for about a year.

In fact, I have started to hate the Macs in my home. Mac is one of the dumbest things I have ever bought into. I feel like I am back where I belong in so many ways. I’ve always been a Linux guy. My productivity since switching has been more than triple what it was before, mostly because of the amazing efficiencies of the Linux terminal specifically. Mac terminals just plain suck.

Friday, April 12, 2019 - 7:18:33PM

Broke out session notes by individual and now that keeping them up to date is faster with them all in separate windows in TMUX it works out. This was really essential to capture the different reported hours of two or more people in a single session.

Friday, April 12, 2019 - 1:44:38PM

As I approach release of this new web site and progressive web application version of I remember going through previous changes that also involved changes to policy, curriculum, and structure as 2.0 and such, like software.

I thought about how much I have focused on approaching knowledge as source, like software, in order to keep up, to keep agile (despite how much people hate that word in Silicon Valley these days).

Then I realized that approaching knowledge like a software developer is not the only thing that can benefit from such an approach.

What if all social structures and organizations were managed like software?

The founding father’s openly said that the Constitution would need regular revision to remain current. America itself was a massive fork from the British code base, so to speak. America could be considered a huge branch off the master.

The logic is the same. Software and technology development must figure out ways to keep up or die. Therefore a lot of the practices, policies, and approaches can be mined for wisdom and discovery that might apply to other practices, industries, and disciplines.

I have identified this with regard to writing and knowledge, but what about a small-business model?

What if I modelled revisions to my business model exactly like revisions to software?

This has become apparent as I revise the site because the new language, the new site content, the new knowledge source actually is capturing the revised business logic and execution of the SkilStak enterprise (though that is a pretty big word).

The creator of Holacracy called it a new “organizational technology” which follows on this idea.

The whole thing makes me want to come up with some sort of semantic version number for where this company is at this moment. It is fitting that May 13 will be it’s sixth birthday, and oh how it has grown and matured. I’m thinking there is a comparison to dog years in there somewhere. Perhaps I just use the year like has been done with JavaScript versioning, the fastest evolving technology on the planet right now. “SkilStak 2019” has a nice ring to it. There are definite revisions from “SkilStak 2018.”

I like this approach because those who understand project management as well as software will get the idea immediately that change should be expected regularly and deeply. Some members in the past (and their parents) have not bee comfortable with that. Thankfully they are all gone! There really is no place for the weak-hearted in this community focused on regular experimentation and refusing to accept the status quo.

Friday, April 12, 2019 - 12:23:48PM

Discovered a very subtle bug when making a custom pandoc template. If you put the $body$ template variable indented then everything is indented in the rendered HTML including the preformatted text and code blocks. This creates a very hard problem to troubleshoot because the indentation of the code will be off except for the first line, which does not have any of the initial white space added by pandoc which senses the indent in front of the $body$ and adds it to every line, no matter what. So glad I found it. Took about 30 minutes to identify. I was terrified it was a pandoc bug, but I am learning the pandoc is of remarkably high quality and it is safe to trust it (unlike markdown-it or the other JavaScript shit out there).

Friday, April 12, 2019 - 10:31:46AM

“Hey Rob, I just want to encourage you to keep teaching. You’re gifts aren’t just technical. You are making more of an impact then you know.”

What a nice random message I just received from someone I really respect. This is what proves to me something bigger than us is going on (even if I am quite sure it is not some angry white or brown guy in the sky, which makes absolutely no sense whatsoever).

This message came in literally while I was writing the last two blog posts expressing some frustration at the state of the world we live in.

Friday, April 12, 2019 - 10:01:52AM

Working from home, as I take a break from writing a new curriculum release, I watch the squirrels pat down moist soil on newly hidden nuts in our front lawn, ripped up by previous mired vehicles. Finishing my coffee and a heady conversation with my amazing wife, I feel like every day is like being on the best writer’s retreat possible, in our quaint little rental with the washer and dryer two feet from the fridge. Many will look at it with different eyes and priorities. Me? I wouldn’t trade it for anything.

Friday, April 12, 2019 - 8:59:46AM

We don’t need no fucking publishers.

[I can almost see writers and editors reading that proceeding to find every single editorial flaw with this entire blog for saying that.]

That’s my interpretation of Don Tapscott’s predictions about the elimination of everything in the middle. Why the fuck would I want to constrain my thoughts and ideas to a specific publisher, with a specific agenda, a controlling editor, a price tag out of reach for 80% of humanity, and a ridiculously slow execution time?

When I encounter technical writers who thing Packt is actually a good thing I just have to shake my head. I’ve read hundreds of tech books in my life and recently was once again reminded how absolutely stupid the entire premise of a “tech book” is. You cannot search it. It’s out of date before it hits bookstores and Amazon. It destroys the one resource keeping us alive more than everything else (trees produce oxygen and scrub the C02). If you claim to be a responsible technologist and put your fat name on any fat book – especially if it is not even available in any digital form, well they you are a huge part of the problem.

I think I need a section in Brain-Dead Stupid Things that is just for such authors. And guess who gets to go right to the top, Mr. Linux Torvalds. At this point I’m convinced the asshole is a fucking sell-out, not supporting GPL 3, checking himself into anger management, and writing a book that you cannot get digitally but you can get in hard-back. Those and symptoms of a very diseased, hypocritical mind and soul. He’s like the worst kind of 60s hippy who went on to become a corporate lawyer (like the dad in Enlighten Up).

I understand the logic behind doing so. The most honorable is reaching a larger audience who cannot use the Web, or who would never read anything that isn’t on paper. If your audience is those people than you have to write to them, right?


The number of people on the planet who do not have access to basic Internet services is continuing to shrink and creating Web content that can be printed on demand is far more responsible than physically spamming the world with your shit.

The real reason – yet again – is the almighty motivator, the “invisible hand” as Adams and Alderson call it, money.

That’s what makes Linus’ book publishing so very disappointing. He has done so much to help the free software movement and yet here and now he throws it all out the window. He could have produced his book online for nothing under Creative Commons but he didn’t. Because, to use the words he loved to throw at others, “he’s a fucking asshole moron” who cannot understand the basic point of the entire movement he claimed to have pushed all that time. What a fucking hypocrite.

And yet I bought his book.

What does that say about me?

It says I’m a bitch to the system like so many others. Sigh.

Yeah, as for my writing? I won’t play that game.

I have been tempted for sure. I’ve been offered to lead corporate training or prepare proprietary training materials for a rather large company.

The irony is that I am in the process of putting it all here for free. When I brought that up, when I asked if releasing everything I created for them free to the public would be acceptable, they politely refused.

Chomsky is 100% right when he says working for any company is signing yourself into “indentured servitude” for a “totalitarian regime” that controls “what you say, wear, do, even when you eat and can go to the bathroom.”

If my words can help anyone avoid selling away the best parts of themselves to those who would control and horde and profit disproportionately from their talents then it has all been worth it.

How do I know?

I was there. The data warehouse system and encrypted communication protocol I made for IBM probably made them several million dollars in new accounts and compliance auditing for Global Services. And yet I had to request and pay for a trip I organized to bring our team of engineers to meet each other in person for the first fucking time. My asshole manager, Ron, agreed, begrudgingly, to pay for one dinner. I shit you not. That actually happened.

Never let that happen to you. Stay good to gig and you will remain free your whole life while the crusty old business models – and those who depend on them – crumble into dust like Professor Quirrell’s face after touched by “old magic.”

Friday, April 12, 2019 - 8:20:31AM

I’m quite sure I have arrived at the optimal method of knowledge capture and publishing. Perhaps this is worthy of an article.

  1. Minimize the barriers to writing anytime, anywhere. Write with a laptop. Use a distraction-free terminal editor which can immediately import anything from anywhere. The popularity of Scrivener

  2. Write organically and spontaneously creating cluster of knowledge nodes. There is no writer’s block if you can randomly spew something and link it to other things later. This is an extension of the mind-mapping idea and promotes more creative flow because it maps directly to how our minds work. This is why hypertext and the web became a thing.

  3. Never depend on a single writing tool. Brilliant writers have known this for decades. Textbooks are not usually written in Microsoft World or Google Docs. Use Pandoc Markdown. Use source management and version control like GitLab and GitHub. When dealing with those who require other formats convert into them rather than infect yourself with their diseased tool choice.

  4. Create tools that duck-tape together established best-of-breed tools heterogeneously. Don’t waste time making more tools unless you absolutely must. Optimize tools only those specific bottle-necks when needed.

  5. Create content that is already in distraction-free mode. No ads. No comments. No unnecessary widgets. Just content and navigation.

  6. Approach your writing like a software developer. Keep it modular, linking, and importable. Be able to update a specific part of your writing like you would a specific library dependency.

  7. Incorporate concurrent testing. Just as with code use spelling and grammar checking as well as real-time and batch broken link reporting.

  8. Release early. Release often. The same developer mantra goes for coding knowledge allowing others to review and contribute as soon as possible.

  9. Maintain final editor control. Manage your writing like a software project. Reserve final commit permission or only allow a few to have it that you trust. This is one thing wikis got seriously wrong. Most wikis have no concept of a pull request and instead suffer from wasted editing fights eventually causing contributors to leave.

  10. Provide an error reporting mechanism. You need some way for people who find flaws to easily report them. This isn’t comments we are talking about.

  11. Eliminate comments from others. Comments distract from your writing and message. If someone feels it is important enough to respond they can create their own writing in response someplace else or can write you an email directly. This eliminates the assholes who destroy the value of your writing with unnecessary argument.

  12. Write in conversational first person with emphasis on stories and examples. No one wants to read a textbook. Promote engagement and ease the writing process by writing like you would talk.

  13. Role play. Include in your stories and examples conversations between different characters in a role-play scenario. This allows the reader to more easily put themselves in the character role and better receive your message.

  14. Depend first and foremost on words and basic images. One image might be better than 1000 words, but 30 images are not better than 50 words. Just look at tabloid web sites to see the antithesis in action where the priority is keeping you there popping up advertising and not giving you any actual knowledge at all. People who produce that shit don’t deserve any place in modern society.

  15. Consider anything but words and images as secondary. Video, sound, animation, games and other interactivity usually do not convey the knowledge words do. Some say humans are visual. Perhaps we are. But anyone who has spend 20 minutes sitting through a horrible YouTube video hoping for there to be something good in it understands. Had the transcript of that video been available to search and preview first that time would have never been lost.

  16. Don’t hold back. There’s a difference between becoming the literary equivalent of a shock-jock and being authentic. We need more straight talk – especially if it has been well-researched and even more if it speaks truth to power.

Thursday, April 11, 2019 - 10:01:46PM

Ooo, some nice ed reading:

Thursday, April 11, 2019 - 9:08:35PM

I’ve decided to make all external links explicit.

Thursday, April 11, 2019 - 8:43:17PM

Moving the notes into the site was one of the better ideas of late. I can use local URLs instead of fully qualifying them meaning I am more inclined to add them (and can even write a vim plugin that completes them).

It also means that there is only one site for memory-challenged parents and members to remember:

The tough question now is whether or not to link them from the main notes page. I’m thinking not. Then again, anyone looking at the source of the web site on GitLab could see them all, which makes the case for keeping the source of the site itself also private. That has the added advantage of allowing the Easter eggs to remain secret. Hummm. I suppose the index allows everyone to find what they need to find. I can then exclude all the member nodes and Easter eggs in the .kn/index/ignore file.

Thursday, April 11, 2019 - 7:57:20PM

Going to one-to-one mentored learning is the best thing I have ever done at SkilStak. There is an entire book just in the hidden advantages of one-to-one and the false efficiencies perceived from teaching a group.

When engaging an individual you are directly engaged in their every move allowing for real-time assessment and almost telepathic insight into what is happening in their mind.

Take for example the coveted Ah HA! moments. Each is gold to a good mentor or educator. They are the acoustic indication of neurons connecting that previously were some distance apart.

The same goes for fidgeting when someone is bored or frustrated.

In short, all the non-verbal cues become platinum assessment indicators none of which are available in even a minimal classroom setting of two or more.

These learning and assessment efficiencies blow away all the other stuff added to enable cramming more people into the room.

Thursday, April 11, 2019 - 7:18:31PM

It is so obvious when a member does nothing from home for a week. This last group literally forgot everything from the week before. Had to do it almost all over again. I tried to impress on them the importance of working on a bit every day, but instead I hear them talk about Fort(fucking)Nite at the beginning of every class. I started out being sort of fine FortNite (like most games) but this one is seriously making the world stupider (and Elon agrees). In contrast, Minecraft has created entrepreneurs, engineers, and amazing creative minds.

Given the number of people waiting to get in I have to start asking more application interview questions like, “What do you enjoy doing in your spare time?” I should probably write those down somewhere but don’t want people rehearsing the best answers to get in. Even if someone faked their way through an interview it would become really obvious really fast that they did. That is one of the best advantages of one-on-one/two mentored learning. You can’t bullshit me.

Thursday, April 11, 2019 - 4:52:55PM

Decided against VIM Adventures or anything similar because they are just distractions from using vim for actual things.

Instead, I’m going to start requiring members take notes for the last 5-10 minutes every session. It will get them in the habit, improve their typing skills and get them in the habit of documenting their learning and work as they do it.

Thursday, April 11, 2019 - 4:23:29PM

With all the vimtutor stuff I tried a bit of VIM Adventures with some younger members (mostly because of the game element). It is a typing game, but uses vim stuff.

I have a lot of problems with it, the first problem being the $25/six month price tag. I applaud creating this educational tool but that puts it out of the reach of pretty much every nine-year-old on the planet – even with the school plan.

No, I want to make something

Creating such a game is a very high priority given the level of empowerment afforded by learning vim and how essential it is to becoming a terminal master, which is the highest level of empowerment possible.

So after I get this new site out, and the new k8s cluster running for Minecraft and server hosting, and wrapping up the basic projects, that will be the priority. Honestly, it will be way more impactful than a what I was planning with the tech geo-caching quests. I can even embed Easter eggs in the site that require achieving a particular level with it.

Thursday, April 11, 2019 - 4:07:20PM

I cannot put into words how amazing muffet is. Because it is asynchronous it checks links faster than it feels physically possible to do.

I’m also overwhelmingly reminded how much better shell scripting is for prototyping and adding immediately functionality to your daily workflow. In about five minutes I was able to assimilate muffet into my kn app as kn ch[eck] [NODE] and get immediate feedback on broken links in a single content node page or the entire fucking cluster.

Thursday, April 11, 2019 - 2:38:04PM

Discovered you cannot use the filter: invert(1); on a parent of a fixed object, like a body element. It will turn off the fixed position. Instead you can use it on the :root element instead.

Wednesday, April 10, 2019 - 6:08:11PM has done it. They have a full VNC instance running Chromium in canvas element, which is remarkably cool, albeit ridiculously slow.

A REPL Chromium Inception

A REPL Chromium Inception

Wednesday, April 10, 2019 - 5:32:52PM

Feeling more human than human. Great sound break.

Wednesday, April 10, 2019 - 3:20:37PM

Poor-man’s packaging with GitLab subgroups and submodules, it’s a thing that needs an article written up.

Wednesday, April 10, 2019 - 11:40:23AM

I love tech!

Maybe it’s the Spring day outside my window.

Maybe it’s the coffee I had with my cashews for lunch.

Maybe it’s because I’m a completely hopeless geek.

It’s just another one of those epiphonal, existential moments when I absolutely know I’m doing the right thing. Thanks Universe. I have them a lot since starting SkilStak.

Wednesday, April 10, 2019 - 11:33:49AM

Need to up our basic Docker knowledge and lead project documentation now that so many members are reaching the middle and upper levels of system administration skills. Many of them also have full stack app developer skills and the capstone of that learning is how to bundle an entire progressive web app into a container with all the backend API stuff that it might need also built into the container.

I am also intrigued by the possibility of maintaining a Docker container with the full SkilStak command-line environment to replace what I used to do with The skills to use a container with persistence are much more lasting that just learning to ssh into a remote system.

The container approach also carries the hope of being more manageable for the few who cannot get a Linux laptop of their own to work on. Having a container they can run from their Windows and Mac systems would give them a full Ubuntu-based Linux terminal experience.

I’m sure there are those out there reading this thinking, “well duh” but for me several things have combined to make the actually time spend creating learning materials about Docker of value for a significant number of members learning here.

Wednesday, April 10, 2019 - 7:24:36AM

Last night my wife and I talked it over and decided to have our SkilStak van wrap removed. We were asked by the town to only park in our driveway because of the advertising. The sad truth is that the number of direct sign ups from it was less than 10. We will get a temporary magnet we can have put on it for trips with members to conferences and such.

The main casualty here will be the tech geo-cacheing I was planning, but I’m sure it will be worth it. It’s more important I continue writing material to keep up with all that is wrong with what is out there now. That will help more people than a tech geo-cache ever would. As fun as it would be to make it will be a huge investment in time to develop it, maintain it, and deal with all the drama it would generate.

Besides, after the problems with almost being killed as a Davidson pedestrian my efforts would be better applied to thwarting the large number of assholes who nearly kill pedestrians daily in this town. Creating something that would increase pedestrian traffic and – maybe – convince a few techies to leave their computer screens at home doesn’t come close to measuring up to the impact of maintaining a system of video feeds from multiple location in the town to monitor for these assholes and capture them breaking the law.

Laughing at myself on that last one. It just does to show that when privacy means people die to idiots without anyone knowing that I’m all about removing it. You have no right to privacy if you drive a car on public roads – none at all. That’s the entire reason for license plates. Anonymity often kills. It objectifies everyone.

Wednesday, April 10, 2019 - 7:14:04AM

The Tragety of Systemd, from Benno Rice, an Aussie Linux super hero, is one of the more well-informed, balanced and open presentations I have ever seen. Benno inspires me to aspire to be a better communicator. He starts his presentation with, “I’ve been known to have opinions.”

I have been meaning to fully understand the implications and controversy around systemd and its history and he does a masterful job covering it.

Without making this post too negative I will just say to anyone who actually watches it, “Now compare that presentation with any ever done about a JavaScript framework.” The problem I have with the JavaScript community is they almost all act like they are Linux kernel developers. Benno actually is a kernel developer and presents himself more humbly than most all of them.

Tuesday, April 9, 2019 - 7:48:49PM

First the Ubuntu, then the Librem5, now the WiPhone. A free, non-trackable, mainstream phone is definitely on the horizon.

Tuesday, April 9, 2019 - 3:34:20PM

The VIP ranking system is one of the best ideas I have ever had at SkilStak. It provides a score based on a number of factors that ultimately answers the question of who gets priority – for anything. This means when I only have 10 spots for a field trip those with the highest VIP scores automatically get priority.

Recently I was forced to remove two people from an exceptional class of three. The VIP score allowed me to decide who remained. I love them all, but in this case a decision had to be made none the less. I love that it removes any subjectivity from the decision and gives me something to specifically demonstrate why that person was given the slot and the others told they need to move onto the waiting list again.

A similar system, albeit not nearly as fleshed out, exists as STEM boarding schools and their computer science offerings. Seniors are given priority leaving out the rest. It is unfortunate that such a school doesn’t have more of a multifaceted VIP scoring system.

Tuesday, April 9, 2019 - 2:53:16PM

Recent announcement from adding full support for GatsbyJS proves how completely clueless they are. GatsbyJS is one of the single most moronic technologies to ever reach insane trendy popularity. Mark my words, one day it will all crash and burn. All the fan-boys do not see the serious problems people are having with any JavaScript dependent site, which makes it invisible to significant portions of the world population.

I’ll take and teach substance and responsibility over a few unnecessary JavaScript widgets any day.

I’m amazed how much the JavaScript web development community as a whole has remained so completely and utterly uninformed in this regard. Thankfully a lot of young, intelligent, well-researched technologists see this shit for what it is.

For instance, the very next email I opened after the announcement from was a thread from Tory Gray of Gaia expressing frustration at bugs apparent in the way Google site search and index performs on things that depend on JavaScript. The JavaScript Sites in Search Working Group is a mailing list I would bet the creators of GatsbyJS have never even known about. If they did, they would see what a horrible cluster-fuck JavaScript-driven web sites are – with content that in no way should ever depend on JavaScript.

Who even says how Google indexes a thing is authoritative? “It just is.”

Would they care even if they saw all these problems? Probably not. That’s the basic mentality of script-kiddy web developers who actually think they are the shit but don’t have a clue about the stuff that actually matters. As long as that cool widget works that they coded they don’t care.

People don’t ask themselves, what if everyone catered only to Google search indexing and nothing else? What would happen to the Web?

They do not consider the reality of these answers just like people could give a shit what using bottled water does to planet Earth. Because their only priority is getting on the top of a Google search hit. And why? So their site will be seen first. Why? So they will make the most money or get the greatest fame.

None of these assholes ask the real question? How is what you are doing impacting the world and our future?

I’m not the only one who feels this way. I regular physically and virtually bump into amazing full-stack engineers who agree, some in their 20s, which is very encouraging. Not everyone is clueless. I need to keep focusing on discovering and helping those who are not. Those who are doing this are as embedded into their beliefs as solidly as flat-Earthers are and their shallow brains are psychologically incapable of responding to reality. I know that sounds harsh, but it is just the truth. It’s a reminder to me to focus on those who are capable of making the world a better place, for everyone, not just those who can run JavaScript on their web site or produce JavaScript blogs.

Tuesday, April 9, 2019 - 2:43:04PM

The fastest growing native app development platform, NativeScript, supported Vue.js almost initially and has chosen not to support React – and for good reason. React has had ReactNative, but for many reasons it does not measure up to the full native support and power NativeScript provides. NativeScript can be used for any framework, ReactNative cannot. This puts it far above anything else at the most empowering way to produce most native apps from web-based development.

Tuesday, April 9, 2019 - 1:59:50PM

Got a notification from the town that I can’t park the van anywhere but the drive way. The town thinks I’m parking there for advertising but the truth is it was mostly to help with parking for members attending sessions. Looks like the few non-solo classes will either have to car-pool (which was always the plan) or give up their spots.

Monday, April 8, 2019 - 10:40:20PM

Just rewarded for patiently watching some dude’s YouTube video about the “Top 10 Linux Job Interview Questions”, although my first question was, “How does this guy come by his empirical, confident conclusion that these are the top 10 questions?” Maybe it was the flat-earther video just before that had be, um, so cynical.

All of the questions were yawn-able. I will never get that time back. But one super small thing made a huge difference:

sudo netstat -tulpn

For years I have been using netstat -tuna but either did not know about the -p or am just not seeing it. Adding the column associating a running process with a given listener is huge. In the old days you had to associate that with some form of lsof search.

So, you never know. Always worth hearing people out.

Monday, April 8, 2019 - 8:20:23PM

Found my Vim cheat sheet and need to publish as a progressive web app.

Also made several contributions to the site while referring to it during sessions. Love the wiki model.

Monday, April 8, 2019 - 4:30:09PM

Great article in Linux Journal about kidOYO being invited into the school district there even though they pretty much did their own thing. I love reading about these successes. The only part that made me wince was the school’s involvement and commitment to the horrible broken and unfixable College Board AP Computer Science program. It is an unforgivable flaw with the entire kidOYO foundation, they actually promote how early they get students ready to take the AP Computer Science tests, which just proves objectively how fucking clueless they really are.

I love that kidOYO managed to start out as a non-profit. I would have done that as well had I had it to do over. The trouble getting an “arms-length” board and the horror stories of losing control prevented me from entertaining that notion.

I love that they also discovered Phaser. Makes be a little suspicious actually. I was teaching Phaser three years ago.

Despite all these problems the simple fact that an entire school district is actually actively seeking Linux education for their entire student body is very encouraging, which, I imagine is why Doc Searls wrote the article about it.

They call them “makers” which is really just another way of saying “junior full-stack engineers”.

Monday, April 8, 2019 - 4:25:11PM

I am really getting hit hard with how horrible the existing on-line materials related to web development are. The only reliable source is the crowd-maintained portal. The guided tutorials that have an IDE integrated into them are actually bad for learners because they have nothing to show for their learning. The better approach is talking through through setting everything up to be truly empowered developers.

Monday, April 8, 2019 - 4:13:58PM

Reading about another kids coding camp so proud of getting them to code in C#. C# is a beautiful language, much better than Java, it’s just practically useless for anything but Windows programming (yes I know about the Mono project, which no one uses). Why would anyone limit themselves – or those they teach – to one operating system? This is why C# is on my list of Brain-Dead Stupid Things.

Monday, April 8, 2019 - 2:59:22PM

Looks like has a new Chrome extension. You know what’s better than a Chrome extension? A fucking computer. If you are on a computer where you do not have access to try out code snippets and git gists then you have much bigger problems. Most of the people forced to use Chrome never have access to install a Chrome extension. I know because some SkilStak members could not install the Google SSH Extension on their school computers.

This is absolute confirmation the premise of is just fundamentally flawed. People should only use it as an absolute last resort or to introduce coding to the noobest of noobs.

It is also another example of shit-we-can-do-just-cuz mentality, toys without a purpose.

Monday, April 8, 2019 - 12:43:00PM

Codecademy is using bootstrap for Make a Website. So dead. Need to stop recommending it.

Monday, April 8, 2019 - 12:25:38PM

Great article articulating why tech skills change your entire outlook on life. This quote is my favorite:

“Learning how to code and becoming a software engineer gave me a kind of freedom and confidence that I never had before. If I didn’t like where I was working, or if I took a risk and tried something new, it gave me the confidence to know I’d be okay. I would always have something to fall back on.”

I call this the toolbox effect. Construction workers rarely fear not having a job when they know they have great skills and tools and there are people needing construction done. They are always safe. Daniel Pink talks a lot about this in Free Agent Nation.

Monday, April 8, 2019 - 11:57:51AM

The older I get the more I realize how right and sane Richard Stallman on so many things and how wrong Linus Torvaldz has been on so many things. Stallman changed the business world. Linus did not, not to the extent that Stallman did.

The entire open core business model that GitLab and others use is founded on the principles of free software and a free and open society that Stallman championed from the start and to this day.

Linus says GPL 3 is “overreaching” and he’s just dead wrong, wrong in ways that are seriously dangerous to all of our freedoms. Hardware manufacturers and centralized tech giants are thumbing their noses as constitutional freedoms for all simply because they are opt-in proprietary monsters.

The best defense of Linus’ position is “security by obscurity” for IoT development, but that has widely been discounted as a foolish approach to any security policy. It is always better to facilitate the repair and re-imaging of IoT devices rather than lock them down in an attempt to cover up any potential security flaws. That’s how we got a major flaw in all Intel chips that went uncaught for 20 years. This right to safety, right to see what is running on your computer, is fundamental. Ironically those who fear the source being stolen are actually arguing for free software because if everyone did it then those stealing it could be instantly caught. I mean if Oracle can find the five lines of code to win the case against Google for “stealing” their Java code then the entire Internet community would easily catch those who have stolen free software, that is, if everyone were required by law to make their source visible so we could all check. Transparency is good for the world.

I can honestly say my opinion has changed on this based on new information from having switched back to daily usage of Linux as my primary workstation. When something doesn’t work quite right I can actually dig in and fix it, change it, or at least find out what is happening.

I happen to think that Microsoft might well be the first company to fully embrace free software. Their emphasis on the operating system and even software is opening up radically as they create new avenues for profit that dwarf the income of OSes and software. Services have always been king when it comes to raking in big bucks. IBM Global Services accounted for 65% of total revenue for IBM while I was there.

Monday, April 8, 2019 - 11:50:55AM

On second thought, asciinema is based on a fundamentally flawed premise that users of their service and plugin must have JavaScript installed. Such a brain dead requirement for something so easily captured in a few cut and pastes of actually text into a code block requiring no JavaScript, or when animation is needed a video link or animated gif will better provide to more users.

Seriously, I lost my mind there for a minute. It’s an absolutely stupid idea.

That is a perfect example of unnecessary-engineering-because-it’s-cool (which needs its own article).

Monday, April 8, 2019 - 11:16:51AM

Remembered and was about to build recording into kn but then I navigated their web page in lynx and it looks like absolute shit. For being so focused on terminal recording you would think they actually tested it in the one true terminal web browser. Nope.

What’s even worse is how completely shitty the HTML-based email they send to get your first password. It’s like these “terminal people” have no fucking clue what mutt even is. Sigh.

Oh I see. It is written in Python. No wonder it is shit. Probably developed on Macs.

Thank God it is free software. Time for me to create a superior app written in Go and better hosting service for it that caters to developers who actually use the terminal for everything (and realize how truly horrible Python is for this sort of thing).

That will actually be a ridiculously fun project. Maybe I can pull in a member or two to help out. The great thing about porting free software is that all the hard part is already done for us. We just have to find the equivalents in Go and implement them better than the original. Then we need to pick a name that doesn’t rhyme with “enema”.

Monday, April 8, 2019 - 11:06:17AM

I completely forgot about z= to check for good spellings of a word in vim. I swear my memory is fading fast. Of course I didn’t even know about ]s and [s to navigate between misspelled words. Such a time saver.

It’s worth noting that while I did forget, I was able to look it up in under 10 seconds using the following from my terminal command line in a new tmux window:

? getting spelling suggestions from vim

Here’s the source of the ? alias to search stuff on

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

You’re welcome.

Sunday, April 7, 2019 - 4:37:49PM

Ugh. Was going to meet with a very motivated mother putting together a coding program for several schools. I was at the Summit here. She was at the one in uptown. Still chuckling about it. She’s putting together a program for kids up to about 10 years old. Here’s enough material to keep any group like that busy for years:

That is really all anyone needs to know.

Sunday, April 7, 2019 - 4:12:12PM

One thing about using the mutt terminal mail client is that I really get to see a lot about the messages sent. I can see all the MIME headers, including (sometimes) location information and type of phone used. It’s just right there. Most people have no idea.

Sunday, April 7, 2019 - 3:54:01PM

Have to chuckle a bit at a friend of member (Windows guy) trying to get “SQL” on the loaner Linux Mint laptop I gave him and the ended up bricking the computer attempting to install “Ubuntu” (not knowing that Mint is an Ubuntu sub-distro). I don’t mean to sound rude, but it was a reminder how many well-embedded, well-paid IT professionals really don’t have a clue about modern computing practices and technologies.

Reminds me of guys I worked with at IBM who had no idea what GitHub was, still didn’t when I left.

Truth is, the Gig Economy is impacting everything – individuals and corporations. My friend mentioned that certain local big companies cannot keep their new people because their technology and opportunities for keep up are seriously limited in these traditional companies that have not got an executive clue what the Gig Economy even is and why it matters to both workers and employers.

The crux of the issue is that as a society we have thrown out corporate loyalty to workers and workers to the company. But so many companies still expect loyalty even though they decided they really don’t want to reciprocate. This means as a modern worker you are required to take absolute control of your skills, education, and career opportunities and have the confidence to leave at any time. It is the only way to stay safe. This is something Daniel Pink outlines very well, and rather prophetically, in Free Agent Nation.

Sunday, April 7, 2019 - 12:18:27PM

Dag nabit! I have to redo the kn index generator to alphabetize based on header titles rather than node IDs.

Sunday, April 7, 2019 - 12:15:34PM

Gerunds are a thing. I’ve always been conflicted about using them. Decided to be more book-like and include them, which means spending the required time to do them right in the new version of

Sunday, April 7, 2019 - 10:50:57AM

OMG! I am so glad I found muffet again, hands down the best link checker out there, but not particularly easy to find when you forget where you first saw it. [See this is why I blog everything now.]

Saturday, April 6, 2019 - 10:11:20PM

The state of idiocy all around us is at overwhelming proportions. It is so hard to remember even the worst, least educated, and even downright evil of us are human. Imma try something (having been raised in a culture where fighting until the superior ideas surfaced and having no hard feelings at the end was normal at work).

The idea occurred while posting the near death experience tonight to Nextdoor trying to rally others and seeking a smidgen of empathy to get me through it.

Change all occurrences of “moron” to “person” or “people.”

Let’s see how long I can go never referring to another person as anything more than a person – but I can still point out their brain-dead-stupid ideas and behavior.

Saturday, April 6, 2019 - 9:42:27PM

Once again we are nearly run over, twice, while walking through crosswalks with all the sound on and green lights blinking. Some old guy flipped us off for walking through a crosswalk. There were several witnesses.

Not two years ago one of Davidson’s most beloved citizens was completely mowed down in the crosswalk in front of Ben and Jerry’s while crossing the street with a crosswalk sign on.

They had to add flags and everything they could to the crosswalk right near our home because an school kid was flattened into the pavement.

I swear it takes every ounce of energy not to lose it on these people. I try so hard to find the humanity in them, I really do. But I have been nearly run down at least 50% of the time on any walk with my wife and dog outside.

Saturday, April 6, 2019 - 8:26:07PM

I fucking love the “Fecanos” James Corden Theranos Parody. I hope the level of absolute shame being generated by this and the Fyre festival wakes everyone up to just how evil the whole asshole “entrepreneur” community really is. But I doubt it.

These people laugh at their evil, like Lori Laughlin.

There will always be charlatans who will let people die (or push them to suicide) for the sake of insane levels of greed. They need to be called out, no matter where they are, and they are everywhere.

I take serious solace in the fact that James Corden, John Oliver, Stephen Colbert, and John Stewart exist to call them out. They deserve the multiple Emmy awards. They are geniuses with hearts of gold helping us all find a way through the lunacy and evil, without pulling any punches.

Trump hates them, which shows how amazing they really are. I find it absolutely hilarious that holding Trump and others to the truth is something he considers “so one sided.” Then he suggests they should be silenced proving that he is beyond a treasonous, lying, porn-star fucking piece of filth, he’s willing to destroy the constitution to preserve his ratings and lies. He is evil incarnate, a literal anti-Christ who has managed to beguile millions of sincere Americans with the dark minions under his control. Just listen to them when they break free from his cult grip and blackmail. I would pay $1000 to see the dirt he has on Orin Hatch after that “greatest president” ass kissing he did.

What does all this have to do with technology and SkilStak?


The whole point of learning tech skills is to improve the world. Theranos was a solid example of everything wrong with Silicon Valley and a huge warning to any who would enter the tech industry. Keep your eyes wide open and never let the paycheck lull you into an ethical slumber that has you waking up artificially lowering your voice and sincerely believing you are the next Steve Jobs (and that Steve Jobs was actually a good person).

You may think this is “over there.” It’s not. One local person told me of a local company that was all “smoke and mirrors” that another person, an astute professional, was able to sniff out during an analysis before entering into business with them. That professional’s eyes were wide open. That’s what we need to emulate.

Saturday, April 6, 2019 - 6:19:46PM

This is shaping up in something of a SkilStak policy. Everyone 16 and older must be good to gig (or risk losing priority to others on the waiting list):

Saturday, April 6, 2019 - 4:57:32PM

Creating a personal domain works well when creating a group in GitLab to go over how it’s down and why. Everyone really should have a GitLab “personal” account and a group account for their work stuff, gig economy stuff.

Saturday, April 6, 2019 - 2:56:24PM

Having unexpected success by starting with getting new (and existing) members their own domain name right away.

Turns out having a domain name (and nothing there) is a natural motivator to learn enough to start putting something there.

Having a free domain like those offered by hosting services (ex: doesn’t seem to be enough to trigger that real personal investment that drives real learning.

Saturday, April 6, 2019 - 2:52:11PM

Realized that instead of asking What do you dream of making? (as I have asked for years) the more poignant question should be Who do you dream of helping?

Saturday, April 6, 2019 - 1:27:44PM

Reading an article about a worthy effort in Asheville to introduce students to business incubators (as broken that entire premise is).

I giggled a bit at how completely naive and clueless the program is despite its honorable motivation and intentions.

The biggest indicator is all the “Agile” this and “Agile” that copy in their promotions and titles.

It’s like, “hey, 2009 called and wants its tech buzzwords back.”

They have no idea how pejorative the very word agile has become in the modern 10x developer community and all throughout the Silicon Valley engineering set. That is what happens when you have no connection with technology culture. And then you buy all Microsoft software for your entire corporation because you are too lazy or “busy” to keep up.

Saturday, April 6, 2019 - 11:44:33AM

Here’s some more objective proof why anyone creating native apps with anything but web technology is a fool (unless they have a hugely justified exceptional case, high-end gaming, multimedia generation and editing, etc.). Come on, if The Washington Post, Forbes, and the #1 app in the app store for 2018 (The Google Santa Tracker) are all PWAs then why aren’t you using them?

At this point any consultant telling customers to create anything but a PWA is just fucking irresponsible. It’s their job to know this stuff. If the massive news about Google allowing PWAs as full-fledge citizens in their app store didn’t give these “consultants” a clue chances are they are too out of it justify ever paying for their guidance.

Saturday, April 6, 2019 - 9:51:46AM

The CodeCombat forced ancient JavaScript rules are beyond annoying. Some of my young members really love it, but it forces them to use function, var, and semicolons. It actually forces them not to use let and const and has no idea how to handle arrow functions.

They also dropped support for Vim bindings that they had when they started.

The entire thing is available as free and open-source software, but its all written in – wait for it – CoffeeScript.

I could totally make a replacement that uses modern JavaScript and includes more concept explanations and videos – the biggest reason not to use CodeCombat only.

It is yet another project I would love to do when I am not in classes 50 hours a week. If only I could get some senior members who are qualified to help me make it. Most prefer to work on their own projects, which makes complete sense.

Saturday, April 6, 2019 - 9:22:32AM

Reflecting momentarily on some things a mentor said about the candidates I suggested for internships:

Those are almost literally the words this Vice President used.

That last one was something I wasn’t able to catch before he submitted it. (He reached out before I had a chance to review and go over the ‘resume’ and measurable metrics spiel.)

These candidates are particularly sporty and motivated and – omg – sooo competitive.

Most of my members are not like these.

It brought my attention to the many qualified candidates here who suffer from one personality issue or another even though they are more than technically qualified. (In one specific case my candidate was more qualified than the full-time adults on the team who picked inferior technologies for their architecture because that “was all the team knew.”)

Some have autism, many are border-line autistic (hell, so am I).

How can I help these guys get over this very critical hurdle?

I’m sincerely looking for answers.

One wise manager and family friend from Bloomberg shared a story of pairing a “finisher” with a genuinely brilliant developer who “never finished anything” and was challenged by “social interactions.” Most already know the most brilliant among us often have horrible social skills. It is one thing IBM understands and capitalized on very well. They have worked with such geniuses for almost a century and their approach shows their understanding of it:

I can forgive that company for its many moronic decision knowing they actually cared and catered to these types of workers. They really did, at least they did in the past.

I think helping my socially challenged members is perhaps an even greater priority than helping them learn modern tech. They will always learn stuff on their own. They won’t always seek uncomfortable social situations.

I’m glad the SouthEast Linux Fest is coming up. It will be a great opportunity to get them out in the world.

Saturday, April 6, 2019 - 7:20:15AM

GitPod followed me on Twitter, which is just a bad marketing stunt. It was a good moment to see how completely broken the thinking in technology is right now. The entire thing launches an “IDE” in your web browser tied to any GitHub repo. Here’s what’s wrong with that:

This raises one very important point about how clueless this whole cloud-driven development movement is becoming. You don’t own the system. This carries the following show-stopping flaws:

The only people wowed by this shit are inexperienced JavaScript script kiddies. It is like they invent another “in browser” thing every month and put millions of backing into from even stupider VCs. If they did even one week of actual research and user analysis they would see the most productive developers in the world will never use this shit.

Friday, April 5, 2019 - 9:51:39PM

Coding in Bash is so phenomenally faster than any other language. There is just so much more available without any importing or library downloading or virtual environment setup or compiling. And the complexity of the stuff I’m able to knock out with it is just astounding.

For example, in less than 30 minutes I was just able to implement full regular expression search and edit functionality with a select menu and using readarray in 11 lines of code. That’s fucking insane!

You know what’s happening don’t you?

I’m rediscovering all the amazing things I loved about Perl in Bash 4.0. And, well, I was a fucking Perl god. I’m just sayin’.

[You too can shameless pat yourself on the back in your own blog.] 🤪

Friday, April 5, 2019 - 8:24:37PM

Yep, Pilgrimage is definitely my favorite MC Yogi album.

[And boy to I need yoga back in my life. If you can’t tell.]

Feeling strangely nervous for my members headed out on to the next big parts of their lives. Several headed off to boarding school, some college, others working professionally and going for their first interviews.

I know they are prepared but I still worry, not unlike a parent (perhaps even more because I’ve been kept from my own kids).

Many opportunities for these guys (a gender-neutral term) are coming from parents who’ve approached me about paid internships and if I have any possible candidates. Hell yes I do!

I wish I could list the details about the caliber and influence of these parents, CIOs, CTOs, Directors, Senior Engineers, presidents, professors, and others.

Despite the notoriety it’s the love these parents show for their kids that impresses me the most. Many find ways to make the best of intensely busy schedules often taking them out of the country for weeks at a time. But I have no less appreciation for those who do the same from home. In fact, often those sacrifices were much harder to make, I’m sure. One such parent drives 100 miles every week so her child can attend, and has been for five years.

When shit hits the fan throwing on some MC Yogi and thinking about these amazing people really re-centers me. I so love my job.

Friday, April 5, 2019 - 3:57:01PM

I’m reminded how important first prototyping a thing in Bash is before you start coding it in anything more substantial. Saves you so much time reworking usage details and what gets included in the final version.

Friday, April 5, 2019 - 3:41:51PM

More evidence Python is just so dead. WebAssembly is being used to improve data science applications in web browsers by factors of 20. Python will never be that fast because it does not compile to native machine code or to WebAssembly. I’m sure someone will try, but Go and Rust and C++ are already there. JavaScript is getting native browser integration speeding it up further.

Friday, April 5, 2019 - 3:06:33PM

Hey look suddenly children of LGBTQ parents can go to Mormon heaven and not put up with “your parents are ‘apostates’ bullying”. Good job Mormon God. Now could you just stop changing your fucking mind every two-years on matters of children’s happiness and well-being?

Oh wait, what’s that you say, it’s not you changing your mind?

Well then what’s up with all the omnipotence and you can’t get a good connection that your chosen leader on the Earth.

You actually like to keep them guessing?

What a fucking troll you are. Like that Abraham thing:

“I want you to kill your son. Get to it!”

[Abraham goes through the worst trauma of his life.]

“PSYCHE!” “Just kidding testing you.”

Definitely the way the most intelligent, kind, and wise being in all the universe would behave.

You have to be a totally heartless moron to believe that shit, that is, if you believe it literally.

Here’s the thing. I believe in God. I really do, just not an angry white guy in the sky who gets off on trolling people and genocide.

As myths go many of them are sources of wonderful wisdom which we can all learn from. Joseph Campbell agrees. We just have to get over the literal interpretations of things and look underneath for the real meaning.

Christianity was once a wonderful vessel to contain some of the best of human spiritual discovery. Today, not so much. It’s like spirituality 1.0 and we are up to, like, release 42 now. Don’t let anyone tell you that you must be Christian to be a good person, or to be with God, or to get to heaven. Dogma like that has literally killed millions.

We can never forget to fully engage both our hearts and our minds, our passion and our reason. They were put there to check the other. Heed one of them substantially more than the other and you end up destroyed, entire nations, peoples, and cultures have either been wiped from the Earth or destroyed themselves when they forgot that.

Friday, April 5, 2019 - 9:15:24AM

My save function for committing and pushing to a GitLab repo now auto-detects if you are in a Git repo or not and asks if you want to create one. It’s just so convenient.

I love shell scripting – and GitLab.

So pleased with the decision to go granular on SkilStak Configuration and I am so grateful for really looking at GitLab. I’m up to 40 points where GitLab objectively far superior to GitHub. GitLab groups and sub-groups alone are worth any migration. They allowed me to manage the configuration in the most organized way.

On GitHub I would have to put all of those at the top level.

I suppose this means there is a need for categories (after ranting against them before). Hummm.

I wonder if the distinction is because GitLab categories are for things and not information, the description of the thing. Same goes for file systems.

Organizing things into their own drawers and such has been – and always will be – a sound principle and practice. Information, however, is entirely different.

I’m thinking it might have something to do with physicality. Because the biological classification system is still broken even though it relates to things. So information about things suffers from categorization (v.s. tagging) while physical things would suffer simply from tagging.

Can you imagine trying to just tag all your tools or electronic components?

This actually explains the quandary I was having the blogs on Blog is an information page, a knowledge content node. Blog - January 2019 follows the KN^3 conventions but, strictly speaking, is an extension of another logical thing. Chopping up the blog is more of a practical matter, rather than logical.

This shows up when I created the indexing scripts and realized I don’t really need all the past months included (for which I created an ignore subsystem). Structural organization constructs fall under stuff you would put in its own drawer. Topic stuff stands alone and benefits from being flat and linkable.

Thursday, April 4, 2019 - 8:49:21PM

Made a major discovery with one of the smartest members I have ever had. His dilemma is that he has very little output to show all the amazing academic research and projects he has done over the years. We were able to isolate the problem to the type of things he is attracted to, researching, and expositing on his conclusions and methods. His interests are radically varied and steeped in college level science and mathematics. He received perfect ACT/SAT STEM scores. Yet he has very little, if anything to show for it on GitLab/GitHub or in any practical projects. He is also the only member to master machine learning technologies very well.

Our conclusion is that his output needs to be academic writing mostly in the form of blogs and Jupyter notebooks.

It seems like a “no duh” conclusion looking back at it now. When an academic is said to be “prolific” that judgement is based on academic papers and other writing documenting the many paths and tangents organically driven by good research.

He agreed fully that is what is needed, but groaned a bit at the reality of having to actually write.

It would seem the Universe has been preparing me for this exact moment, however, given the amount of pandoc usage and LaTeX and MathJax learning I have been doing lately driven by my need to put similar academic writing out there through this blog and

In fact, written output has always been important here but, as with most coding, documentation takes a back site to making cool shit. No more. I am now requiring regular writing and note taking and research papers based on technology of all my members, all to be done entirely in Pandoc Markdown and saved at GitLab repos (Knowledge Content Nodes).

Writing is perhaps the most significant deliverable for any project – technical or otherwise.

Thursday, April 4, 2019 - 6:31:31PM

Arrow functions are the best thing to happen to beginner coding education. Don’t believe all the morons saying they make learning more difficult or that “they are too difficult to read”. The exact opposite is actually true for an absolute beginner:

2 * 2
2 * 10 
2 * x  // fails, no x yet
(x => 2 * x)(2)
(x => 2 * x)(10)
let double = x => 2 * x

There has never been a mainstream coding language syntax closer to algebra than that which arrow functions provides. That’s just the objective truth. In fact, with the proper handle on this students can use the JavaScript console to compose algebra functions and test their results.

I will never teach the function keyword again (other than to tell them about this ancient thing you might see that stupid people still use).

By the way, this is further proof that JavaScript destroys Python in practical computer science and coding education for beginners. All you need is a web browser and Python’s ugly lambda syntax is ridiculously inferior to this.

Thursday, April 4, 2019 - 6:04:23PM

Need to add source helper plugin handers to the kn make command so I can modularly add streamed transforms (like those used in Gulp) but that affect the source itself before rendering.

The plugins will be preferred as sourced Bash functions to avoid sub-process performance hits, but can invoke a sub-process if desired. In the final compiled version of kn these will probably take the form of Go loadable binary plugins.

Thinking there should be three types:

  1. mutators - to enable snippets and such during composition
  2. triggers - trigger asynchronous events and are simply removed

The main point is to get completely out of the way of editing. No vim plugins. In fact, no dependency on any specific editor.

They would always be just single short words with no parameters with maximum priority on being able to write them quickly so the train of writing thought can remain uninterrupted.

The first candidates would be emojis.

Pandoc Markdown does include an extension for emoji translation but the source remains full of the long form and remembering them all is nearly impossible. Allowing :wink: to be replaced in the source is the goal.

This would also allow composing ASCII art renditions of fonts and such.

Each plugin tag would be aware of its context rather than have its own parameters that have to be passed.

If I do this right, now that UTF-8 is standard, all the math symbols could be rendered in the source, but that is a questionable use case because it would be nearly impossible to maintain and alter later (unlike Pandoc math notation/LaTeX).

Thursday, April 4, 2019 - 4:53:51PM

I haven’t been this proud of our entry page description in a long time. It always felt just a little off.

Learning that keeps up. SkilStak is a private mentored learning community focused on enriching and empowering members of all ages, backgrounds, creeds, and capacities with tech skills that match their interests, resources, goals, and limiters. Become a full-stack engineer doing projects demonstrating your skills coding, configuring, building, and hacking apps, games, sites, systems, databases, electronics, devices, and more. SkilStak is a strong proponent of user and educational freedom through Creative Commons licensing, open curriculum, and regular code contributions to free and open-source software projects primarily for the GNU/Linux operating system.

I have confess the early Hello World unicorn page made by beginners made me smile when we first started. Left that there for a very long time.

Thursday, April 4, 2019 - 4:27:05PM

Apparently the :root element can be styled and is needed when inverting using only the body or html element. It covers the area of a shallow page with not enough content to fill the screen and is easier to style than forcing content to be in essentially container that fills the window.

Thursday, April 4, 2019 - 11:04:00AM

Today I realized the reason everyone at SkilStak has been supercharged since the move is mostly because I actually implemented the same model I had been following for my most productive members all along, an informal, highly-personal mentoring relationship in addition to semi-structured introduction to new skills, knowledge, and abilities.

I don’t enjoy realizing the problem with the numbers before prevented that same fertile learning environment. It’s just a fact at this point.

Thank god, there’s not a trace of that problem any longer.

Thursday, April 4, 2019 - 10:52:53AM

I’m once again reminded that any thought I had in the past of creating certificates or titles was just completely and totally broken, founded on a false premise that anything but output actually matters.

That diversion cost me a lot of time, time that would have better spent structuring guided learning projects with specific, measurable, presentable results.

It just shows I’m not immune from the influence of this horribly broken system, one that contains decision makers with diseased brains who think a piece of paper or score on a multiple-guess game has anything at all to do with output or aptitude when, in reality, only one’s output matters.

Projects, performance, and papers. That’s what SkilStak has always been about and always will be about. Fuck the rest.

Thursday, April 4, 2019 - 10:31:28AM

It’s official. No more letters of recommendation for any reason.

I had started to do this again with the one-on-one approach, but I am reminded the main reason for not doing it has nothing to do with time.

It’s about authenticity and the nature of productive learning. If your work and output does not overwhelmingly demonstrate your qualifications then you have no business getting any additional recommendation from me. Besides, any recommendation would simply be redundant. Your recommendation is your output (and I’m here to help you produce as much output as possible, and in multiple ways).

These measures of success need no embellishment or exaggerated praise from me. They say everything that needs saying on their own.

Power and intelligence are worthless until they are applied to solutions, products, and output (no matter how or what). Being smart is never enough.

If Ironman famous because he is a member of shield? Hell no. He’s famous because he can do shit and frequently does – usually for all the right reasons. He acts and builds with the intelligence given him. Would he ask Nick Fury for a letter off recommendation? Again, hell no.

Thursday, April 4, 2019 - 9:37:54AM

Decided to move all videos off of YouTube and to Vimeo after reading this account of just how bad for the world YouTube is. Vimeo has always has higher-principles in this regard.

This is part of a larger decision I made a long time ago to perpetuate the discover-me ethos (instead of look-at-me). Services that promote like mentality – like the absolutely shitty Yelp – derive their power and money from the look-at-me foundation, a foundation flawed to the core.

This decision has come up before. “Should I market and advertise or just focus on having the most amazing product and service I can provide and letting people to the work of advertising?”

I’ve never regretted the obsession on providing the best possible service over any marketing (other than our local, impossible-to-ignore van.

I will never forget the confused amazement from Yelp’s representative when asked, “Don’t you want more people to come to your web site?” and I answered, “No.” The real answer was actually, “I couldn’t give less of a fuck about people coming to my web site. The right people will find me, when the time is right. I have the objective evidence to prove it and I don’t need your fucking horrible service to help make that happen.”

Thursday, April 4, 2019 - 7:30:02AM

As I have been writing the code to create the index page I have been reminded of tags beat categories for information management science. WordPress once had both. No one used categories so they kind of let it fall aside. Those who obsess about information organization (like me) will probably relate to why.

A tag can be added and removed from anything, anytime. Tags facilitate composition.

A category is hierarchical and therefor implicitly brittle. Categories require inheritance.

If there is one thing the early 2000s taught the tech world it is that inheritance is the devil. It is the main reason for Java’s massive failure to deliver and Java’s creator’s greatest regret.

All you have to do is look at how broken the biological classification system is to realize categories do not work.

The Dewey Decimal System is equally broken. It would have been so much better to create a system of universal unique identifiers for each book (which eventually happened) and then create a system of tags with references to each book by UUID.

It’s fascinating to realize the more we humans discover about ourselves and classifying the world and universe around us how much we discover everything is organic, interconnected, webbed. When our information systems model this pattern they are automatically more successful.

When Tapscott said “the web is flattening everything” I don’t think he also anticipated our card catalogs and biological classification systems.

I have run into this reality when architecting data systems before.

When architecting the SwooshNet portal for Nike my self-created mission was to get everyone on it, all the little and big departments. The solution was not to look at them top to bottom, but to approach every level independently and add them as flat nodes. Then as associations came up link them from the content. This model survived reorg after reorg because the atomic unit, the node, remained largely the same.

It meant that rather than having a large file system directory structure on our web site, I had hundreds directories in the root directory. It meant shorter URLs and so much more.

We see this model at the core organization model for Holocracy as well.

This is what keeps Wikipedia flat and manageable.

So what does this mean for and KN^3?

It means that I have hundreds – and eventually thousands – of first level directories.

It also means that a knowledge node cluster will have the added constraint of no subdirectories.

This initial presents a revision requirement because I have blog sub-divided and I put all the movies under film. But the brittleness has already bitten me in the ass.

Consider the humble URL. Such URLs are very common in the wild but they are fundamentally broken. A blog is meant to be read, shared, and – most importantly – linked to in a way that dependably works enabling the creation of a knowledge web (the original intent from TBL). Of less importance is the fact that inbound links are a measure of SEO ranking. Breaking them gets you penalized.

So when you consider how many people create posts at that URL and them move them to archives breaking any links to them you see the problem. I’m betting you have Googled something before only to find the link was broken – especially if it was a blog. Google added cached version (an issue all by itself) just to alleviate this dumb-ass problem.

We see the solution (on steroids) with Medium. You are forced to have a gawd-aweful long URI and use that when sharing anything. This is compounded by the problem of including implicit intelligence in any universally unique identifier. It always bites you in the ass.

For example, Minecraft could not allow people to change their user names until – at great expense and trouble – they moved all users to a UUID with the username associated with it.

Whenever you make a title for an article or post you naturally have to create a slug for it. That slug cannot be changed without breaking links to everything.

Medium authors are always changing up names of articles but are stuck with the original slug, forever.

While I do not see a way out of the slug problem, mostly because we humans need mnemonic URLs, I do see a way to minimize them. Use things that do not change. For a blog that means using time stamps. Besides, a true blog does need a title for every post (stop confusing blogging with pseudo-article-publishing). So this blog is Notice I used English and don’t give a shit about how that would sort (like 2019-03 would). That’s because the URL is for the fucking human not the computers out there. It doesn’t hurt that the word april in the URL would increase search hits will all engines.

Here’s the real climax.

Change the Blog link in the site to point to the current one.

You’re blown away right?

You should be.

Anyone who does this automatically creates dependable URLs and not ones that will break when the current blog is saved off in an archive with that same kind of same anyway.

Simplicity is so underrated.

Thursday, April 4, 2019 - 6:51:31AM

Just cancelled Google Pay even though I have a Google Pixel phone still. All the pain and difficulty to actually do it was rewarded by all their begging not to do it. The difference between Amazon and Google is that Google openly violates all your privacy in a massive way in addition to wanting all my payment information and tracking. Having PayPal and Amazon know everything I’m buying and all my financial information is one thing. Letting Google have that and everything else is quite another. This is also the reason I went with Spotify over Google Play. I really love Spotify now that they have what it takes to sue Apple.

Once I get a dumb phone and throw out the Pixel I’ll be 90% Google free.

Google is more dangerous than all the rest because they track:

And don’t think incognito saves you from any of that. It doesn’t. Incognito does nothing to prevent anyone from seeing every web address that appears in your omnibox, and not just Google.

If all of that doesn’t at least make you uncomfortable something is seriously fucking wrong with you. It does not take reading a bunch of Solzhenitsyn and Orwell to understand why.

Wednesday, April 3, 2019 - 7:52:44PM

Having a moment of worry. I have objective evidence that members are learning amazing things and becoming phenomenally empowered, but I am wondering if simply an association with someone as non-conforming as myself might somehow have a negative effect on, say, perhaps a person’s chances to get into a college (given how much I bag on how broken traditional education is).

I already know the solution. It is just really tricky to execute on and communicate to members and parents still working from the existing paradigms. They ask for letters of recommendation, and personal calls, and vouching for them, or even highlighting their achievements in the paper (associated with SkilStak).

But here’s the thing. My goal is to have every achievement from ever member stand completely on its own. Like one hiring manager said on Twitter – they don’t even have to look at the education section of a resume or LinkedIn profile to know that person will be a productive good fit.

The only way that works is if members buy deeply into the reality that their output is everything and their academic background and performance is nothing.

When it works. I’m not even in the picture. I’ve just helped them produce an overwhelming amount of proof that they are empowered beyond a level anyone would want to hire or accept into their academic institution. My reputation, for good or ill, is irrelevant. Their reputations are all that matter. That way saying fuck over and over again, and calling College Board a cancerous tumor on the ass of America’s educational system won’t have any affect at all. Can you imagine an admissions board looking me up after writing a letter of recommendation? If I were in their shoes I would definitely raise an eyebrow (then I would read everything I had to say).

In fact. I have just made a decision. No more letters of recommendation. Even more importantly, I am going to actively encourage everyone to not list me or SkilStak on anything. Where a person acquired their skills and personality and priorities should not matter at all.

Wednesday, April 3, 2019 - 8:41:18AM

“Pretty Freaking Powerful” is the tag line in the email from Apple (prompting my unsub). Apple has descended into simply breaking the truth at this point in their marketing. What a disaster of a company. More than half its value lost in under a year.

Executives and unknowing engineers parade around their Apple products not even realizing what utter and total fools they advertise themselves to be to everyone who actually has a clue. Might as well start wearing a Blackberry (wait, Blackberries are still way more secure than any smartphone, so I stand corrected).

Certainly makes it hard selling all the left over Apple computers I have.

I suppose the only real use for Apple products these days is for marketing, art, and sound engineering. That is still a solid use case. Windows is spectacularly worse at such things – still.

Remembering that shitty Apple Macbook Pro and replacing the critical Esc key with a fancy, battery draining strip of wasted light was the dumbest thing they have done since the Newton. Absolute morons.

Wednesday, April 3, 2019 - 7:08:04AM

When I see a bunch of sed, awk, tr, cut, and perl my first impression is “you poor inexperienced bastard.”

I was looking randomly through someone’s CyberPatriot code (with capitalized functions no less) and was just shaking my head the whole time. The saddest part of it was that I wrote code like that as early at 1998 and all the way up to 2018. There is just no need to use any of that any more with modern Bash (4+), which pretty much every Linux system has these days.

And as for perl’s ubiquity and power? Absolutely, 100% utterly useless now for the same reason that Python is also radically less useful. When Bash got hashes to go with arrays and full regular expression support any need to fork a subprocess – no matter how small – disappeared. With sed fully supporting in-line find and replace for over a decade – the one thing that really distinguished command-line perl – there is not even any reason for that.

That last one makes me wince a bit. I have taught 10x engineers to use perl for the hard regex stuff up until last year. In fact, you will read blogs of mine as recent as six months ago lumping perl in with “shell” as one of the top seven languages to learn (which I’ve since edited out). The reality is you never need a sub-process – ever.

I was the guy screaming for POSIX compliance for the last 20 years – mostly because I had been bludgeoned by bugs working with Sun and AIX systems. But almost no one uses Sun and AIX these days, and if they do they usually have a plan to migrate off. Those who do not are more ancient than those dependent on mainframes and you should really not give a shit about.

The real question is which version of Bash do you allow. With 5 out now that is a serious question. Macs ship with 3. Ubuntu and derivatives ship with 4. Arch, well, is Arch. Even Raspberry Pis have had 4.2+ since at least 2013. Bash 4 has been around two years shy of a decade. That’s plenty long enough in the modern tech industry working for companies worth working for.

Wednesday, April 3, 2019 - 6:17:02AM

A former member posted this April Fool’s Day prank story. I don’t think I have ever been more pulled into a prank as much. I still shiver at the possibility that it becomes true one day. I mean, look what they did with nano.

Tuesday, April 2, 2019 - 10:17:15PM

It’s been more than two months since I made a Medium blog post. Not sure if that is a good thing or bad. One thing is for sure, this organic blogging as thoughts happen has completely met the need, nay the obsession, I have with capturing them before they dissipate.

Nevertheless, I should probably schedule time to post one very well written and researched Medium post drawn from the main themes and discoveries of the last months blogs after reviewing and rotating them into the past month blog archives.

Tuesday, April 2, 2019 - 6:28:13PM

Reminded why having multiple members in a single class is just to problematic. One member has not attended for three weeks now (with no indication of why this person is not coming). Even though parents might feel this is acceptable because of the price-point and all for this particular group (for which I made an exception having been here for so long) the amount of disruption is completely unacceptable when that person returns. It kills the learning for the whole group. Conclusion: such people are simply not invited back, no matter how long they have been coming. It is the only fair thing to do for the others.

Tuesday, April 2, 2019 - 6:02:38PM is pushing their SSH course with their usual amount of rhetorical liberties. Always satisfying to see their level of creativity to try and convince professionals to learn what I teach 10 year olds on the first day.

Tuesday, April 2, 2019 - 5:54:34PM

I never get tired of being right (probably because I have been wrong so many times as well). This just arrived in my inbox:

We are also beginning to build a new offline version of CS Fundamentals, which will empower schools in low- and no-bandwidth environments to teach computer science with CS Fundamentals. The work here is just starting, but we’ll give you a heads up when it’s ready for Beta testing!

Guess who sent it,, the largest non-profit organization with the most penetration into all educational organizations.

Yep, they hit the very fundamental flaw that I dreamed about last night and have a “beta” out for testing so they can get around it. Coding – including learning to code – must never critically depend on an Internet connection, period.

Tuesday, April 2, 2019 - 5:33:32PM

I’ve got it! The best way to motivate young people addicted to cushy VSCode editing. Once again the answer is Minecraft.

“Do you want to run your own Minecraft (Spigot) server like Hypixel?”


“Ok then. In order to install it you need to learn the command line.”


“Do you want plugins for it?”


Well all the plugins – and the server itself – are configured in files that have a special format called YAML. Command blocks are in another format called JSON. Don’t worry about those structured data languages yet. We’ll learn them. But before we can learn them we have to learn how to change and write them with only a terminal. And the only way [I know I’m exaggerating here.] to edit them is with vim, the world’s most powerful command line editor. And to learn vim the best way to get started is to complete vimtutor from the command line. It has taken 20-90 minutes for others.

So find some great tunes, put on the headphones, and knock out the vimtutor tutorial. Then we’ll be ready to compile configure your server so you can give yourself op and stuff and customize it for you and your friends to play on even from home.


[If only Fortnite could be run from its own Linux server and had plugins to setup from the command line. It doesn’t. Because Fortnite is for morons. It destroys brain cells instead of building them (like Minecraft).]

Tuesday, April 2, 2019 - 11:08:40AM

The Dandy Warhols. One of the least known best bands to ever have existed. And to think, I was living in Oregon at the height of their fame. Didn’t even know they existed. Bohemian Like You never gets old (reminds me of my wife who dressed exactly like the female mechanics in the first scene of the video).

Good code requires good music. It’s sort of a tech recipe. Find yours.

I always laugh when new members look at me funny when I suggest they find some great music to listen to while they do their coding challenges I give them.

“Go on, find so good music and put those Beats on.”

They look surprised and then grin from ear to ear.

I’m like the opposite of everything portrayed about schools by Pink Floyd.

[I’m literally watching huge snowflakes outside my window – in April.]

Tuesday, April 2, 2019 - 10:54:17AM

Decided to go with index.json instead of index.yml because it is primarily for computers and not humans. The humans should be using the file itself or the index.html rendered file.

I will, however, keep data.yml because it is meant to be humanly maintained data.

I briefly entertained the idea that I might want index.yml just to make it universal but that would encourage humans messing with it, meaning they would have to manually keep it in sync with the data it is derived from in

Tuesday, April 2, 2019 - 9:58:41AM

Learned that Bash regular expressions must be placed in variables when they reach a certain level of complexity:

local h1x='^# '
if [[ "$line" => $h1x ]]; then
  echo I have a level 1 atx header

This is not very common knowledge – and incredibly powerful. Need to make sure it goes into the Bash scripting learning materials.

Tuesday, April 2, 2019 - 9:25:12AM

Movin’ to the country. Gonna eat a lot of peaches. Millions of peaches. Peaches for free. Millions of peaches. Peaches for free. Millions of peaches. Peaches for free. Millions of peaches. Peaches for free. Look out!!

Now there are some brilliant lyrics. 🤪

Tuesday, April 2, 2019 - 8:59:43AM

AOC mentioned Drake on Colbert’s Just One Question and I felt my admiration for her drop substantially. His music is just … so … bad – by every objective and subjective measure. Seems like humanity is on a perpetual decline in music taste starting with appreciation for the symphony and opera to, um, stuff like Drake. “Hey, let’s turn a modern Casio machine on and add some poorly written words maximizing awareness of my utter lack of vocabulary and shallow brain.”

[And no, it’s not a race thing. Cardi B is genius.]

Tuesday, April 2, 2019 - 8:37:48AM

Was going through the Lynx configuration and found a setting for “Default Index” referring to the page to load where you would search for stuff on the web. Reminded me there was a time when such things actually were lengthy, single-page indexes that you could search through like the index or table of contents of a book to find what you were looking for.

It really reminded me that search engines are often overkill. Usually all that is needed is a structured index with links to the information that can be searched by title using nothing more than the find functionality of the browser for that page. Ironically, this means having to teach people how to use this instead of just the search box.

Based on this idea, plus the fact that adding any dependency on a search engine forces a site to be dependent on the Internet, any search capability will be based on an index with a secondary link to search engines which have crawled the site.

Keeping free from such a dependency renders the site into a Progressive Web App much more easily.

Tuesday, April 2, 2019 - 6:08:46AM

You know you have reached a new level of obsession when you wake from dreams about having conversations about educational approaches with imaginary people and compare schools and approaches from different socio-economic demographics and geographies in a fantasy town.

Essentially, I have debates in my dreams working out the best in education. So weird.

“The premise of online coding tools is fundamentally an fatally flawed.” Those were the words in my head when I woke., Codebook,, Khanacademy, CodeCombat, Codecademy and all subject to this dependency. As professional tools they are out of the question, and as learning tools they are dangerously and surprisingly imperceptibly flawed.

You would never dream of forcing a child to depend on the Internet to read, write, or do math. Why then are so many willing to force just such a dependency for coding. We need to stop thinking of coding as an elective and more like a core language skill. Everyone needs to learn to code (even if everyone does not need to become a programmer).

If you do force such a dependency you will get burned. I was seriously burned by the reality that Woodlawn does not have Internet that can use simultaneously for a class of 15 students. I would never have expected that.

[I have written about the Woodlawn discovery elsewhere a lot.]

Even if all the schools on Earth provided Internet WiFi to allow every student to learn from the Internet and simultaneously watch educational videos (which is far from reality) you still do not want to depend on the Internet to code professionally – ever. Coders code from buses, on road trips, on planes, and in a not-too-distant-future from space craft travelling between planets.

That last one might sound futuristic but it is perhaps the most important example.

Modern generations are being raised as “cyborgs” (as Elon says) connected to and enabled by the Internet. But what happens when they are permanently unplugged from it?

Our current neural interface to the Internet is our fingers, eyes, and ears. But what about when that interface goes a step further. If Elon gets his way, we’ll all have a “neural lace”.

What do cyborgs and neural laces have to do with online coding eduction?

Dependency on a particular network or interface is as flawed and subject to technical debt as the serial/USB connection to a computer has been for almost three decades (having finally arrived at what might be a universal interface standard, USB-C).

Many humans still do not have sufficient interfaces to the Internet. Access and standards vary widely and are still changing.

The politics of Internet access also affect dependable use of coding tools if only online tools are learned and used. Which begs the question, why waste time learning online development tools when professionals depend on tools they can take on the go, be it a coffee shop with insecure wifi (or no wifi), or writing scripts to adjust behavior of turbines floating in the ocean, or on a satellite.

Even if satellite wifi becomes a thing, it seems downright silly to need Google Chrome in the middle of the Atlantic to engineer a solution on an oil rig, weather buoy, science station. You get the point.

The best developers and scientists in the world would laugh out loud if you told them they have to start up their web browser to do any coding (and I am one of them).

There is a reason the most successful operating system on the planet (Linux) has a source management system (git) that provides built-in remote redundancy. This is also the reason scientists, engineers and academics overwhelmingly prefer Linux. There is simply nothing more powerful and capable of taking that power remotely.

The tech pendulum swings about every 50 years between centralized and decentralized manias. While the economies of scale Google can provide might provide a nice gaming experience or cloud of powerful CPUs on which to crunch data, history has proven overwhelmingly that tech will never be centralized – especially for development.

In fact, it was accountants wanting to break the dependency on the $100/hour mainframes of the day to tinker with account approaches on the world’s first “killer app”, VisaCalc, which funded the PC revolution.

When Sun tried to make a lightweight Internet device with the slogan “the network is the computer” they crashed and burned miserably.

When the whole tech world is obsessing about privacy-invading centralized services decentralized approaches continue to pop up.

[So you can take your #serveless and shove it right up your ass. There will always be servers, those who see and use them directly will have all the power, yes even more than the “all-powerful front-end engineers”. This is why full-stack knowledge is so absolutely critical to becoming a 10x engineer.]

Smart people never want to depend on a centralized system and never have. Why then should we encourage those we help learn to have exactly such dependencies? Is it because those making money off of such systems want it that way? Probably. Corporate greed always outweighs any external claim to “make the world a better place” (as Silicon Valley so wonderfully skewers).

The resounding answer is, we should not encourage unnecessary dependencies on centralized services for executing professional skills. No matter how convenient they seem, ultimately such dependencies can produce fatal barriers to real learning, skills, and professional pursuits.

The solution is modeled perfectly in the humble git system. Those making decisions about educational architecture and budgets should become deeply familiar with not only how it works, but why it exists and the problem is solves. The solutions apply to far bigger things than simply code management and software development.

Monday, April 1, 2019 - 7:58:27PM

Noting there are significant problems with the vimtutor that includes things that are only available in vim and are frankly just plain stupid to use compared to the alternatives in vi compatible mode. Ctrl-V is just completely stupid.

Monday, April 1, 2019 - 7:46:15PM

Just found out that if you save a file called logo.png to a GitLab repo that it automatically becomes the icon for the project. Very cool stuff. So much polish on GitLab. GitHub could learn so much from looking at all the improvements they have added.

Monday, April 1, 2019 - 3:10:38PM

It’s amazing how little is actually in most emails from random service offerings and companies these days. Reading them in mutt renders them absolutely minimal. All the visual marketing methods are completely deflated. Every time I open one, scan it in two seconds and delete it I feel phenomenally triumphant.

I’m starting to realize I’m going to have to video capture just an average session in terminal-only mode for people to realize how much better it is for most things.

This pandoc + solarized setup for vim (with conceal and full spelling) is just so fucking amazing. When combined with my evolving kn command it is absolute content creator bliss.

Monday, April 1, 2019 - 2:38:28PM

VSCode is a waste of time. Only very young beginners should start with it. You know, those who frankly require babying and enticing with game development or will lose interest.

Most of the real coders immediately see the advantages and adopt vim + tmux as soon as possible – even some that are very young.

I don’t mean that to sound too rude, it’s just a fact. The coders who pick up vim + tmux blow the fucking doors off the others in terms of empowerment and output, no matter how long they have here. It’s just a factual observation. My most amazing members all have adopted vim. I have really smart members who use VSCode whose output has been substantially less than others who stick with vim.

VSCode is certainly better than every other graphical editor, but it is still a very bloated and slow graphical editor.

[And that is no April Fool’s day joke.]

Monday, April 1, 2019 - 1:40:44PM

Realizing again just how broken traditional publishing channels and workflows are. Everything is out of date as soon as it is published. The only solution has to be weekly releases (if not more frequently). This is already a law in the software development industry, why not the knowledge development industry as well – especially with tools like git and pandoc in existence.

Monday, April 1, 2019 - 11:02:08AM

I’m through with the idiocy of those claiming to be so very smart – especially in Silicon Valley. You couldn’t convince me to move there (or encourage others to do so).

These idiots aren’t smart enough to identify massive inefficiencies and failures in their hiring procedures and requirements. If anything it objectively confirms what fucking morons are in charge of the hiring at Google, Facebook, and Amazon.

This ain’t no sour grapes. I did my time in those kind of companies (mostly while at Nike, on, one of the most brain-dead management groups I have ever encountered).

The truly brilliant companies have already discarded those moronic practices – and most have decided to get as far away from Silicon Valley as possible.

Aaron Schwartz was perhaps the greatest example of this. Having successfully made it into Y-combinator, co-founding Reddit, making millions when bought by Conde Nast, and then leaving on his own because of how lazy and falsely-prioritized the whole thing became, he returned to the seat of learning and working on actually making the world a better place.

It warms my heart knowing that many good and smart people like Aaron have had the courage to do the best thing – even when it meant giving up millions.

Silicon Valley is not the center of the universe (and never was). It was created by a guy doing exactly the same thing people leaving now are doing, starting something special with a bunch of amazing people in a fruit orchard far away from the bullshit. Silicon Valley is the bullshit today. Working there is tantamount to working on Wall Street where nothing is real. Just say no.

Monday, April 1, 2019 - 10:48:06AM

I’m particularly proud of the kn e blog and kn E blog design for the kn macro command. The first will detect a blog/.kn/vimscript file and if found execute it when starting up vim. The other E ignores the script allowing the natural vim settings to re-open the file where it was last being edited.

I’ve made the kn work public now that it is rather baked and I use it constantly. I look forward to documenting it so that other Knowledge Content Node developers can benefit.

The choice to use Bash was one of the best decisions I ever made. I have modified the different interface commands several times and reorganized application logic all without the heavy bloat of even Python or Perl of worse. Had I done this same work in anything else I would have at least tripled my development time.

This reminds me how ridiculously powerful Bash scripting has always been – even more now that version 8 has been released. It is even more powerful and empowering than JavaScript once a person understands how to leverage the terminal and type from home row.

I find myself laughing out loud at the horribly inefficiencies of those claiming to be informed who write all their terminal code in Python. It’s just plain stupid to do so.

For example, why setup a virtual environment and then import the HTTP library that you have to look up when you could have just used wget or curl?

Yes it’s a hack, but that’s the point. Most everyday work does not need to be baked into enterprise-ready quality.

This is one of the greatest lies of the industry, right up there with “you have to be fluent in esoteric data structures and algorithms to qualify for most jobs.”

Monday, April 1, 2019 - 10:19:21AM

Decided to call the place where learning and creativity happen here our SkilStak Studio instead of a lab or maker space.

The popular term computer lab has nearly ancient origins in the universities and things like Bell Labs where different discoveries are made and tested. But most “computer labs” today are simply where stuff is being created, like an art or photography studio.

So what is it that distinguishes a studio from a laboratory?

According to Oxford, a laboratory “is a facility that provides controlled conditions in which scientific or technological research, experiments, and measurement may be performed.”

A maker space is where stuff is being made, but implies a more physical meaning.

The dictionary says a studio is essentially a place where art is being created or disseminated in all its forms, which is exactly what SkilStak Coding Arts (the original name now just dropped to the first word) is and has always been, a place where code and technical arts are being learned, created, and distributed.

My wife has been doing a lot with her art studio lately and it brought up the question in my mind about the words we choose to describe these different things. I am rather obsessive about choosing the right words when possible – especially the important ones.

Monday, April 1, 2019 - 8:05:40AM

April Fool’s Day. Hummm. What if the entire revised (no VuePress site) ends up being my thing. Would be great to flip the whole site sometime.