Blog - May 2019

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

Friday, May 31, 2019 - 7:06:46AM

Discovered it really is the right thing to do to separate sk from kn and have sk use kn. I was about to have sk use the stuff built into the API modules of kn directly when I realized I have a golden opportunity to truly test the premise of CAVA by making sk only talk to kn through its command interface. So far it has been a great opportunity to explore what elements of code can be factored into the CAVA API so both can benefit from them.

For example, I realized I need a human-readable way to place time-aware slug translation as a utility:

blog-MONTH-YEAR -> blog-may-2019

But it definitely needs to support international usage in any written language. It also must not be expensive, no map traversals.

I came up with a interface scheme:

func TimeStringEN(s string) string {

This way other languages can use different identifier tokens based on the language. It is similar in concept to Go’s handling of Time formatting but simper for a writer (who might not be a programmer) to understand.

Thursday, May 30, 2019 - 6:52:28PM

Arrrg, the Codecademy CLI tutorial focuses on sed and grep instead of the Bash equivalents. I understand why they do, mostly because they are operating from best practices that are 10 years old. But the fact that they are promoting unnecessary use of subprocesses really annoys me.

And people wonder why I feel like I have to redo everything that’s out there. Sigh.

Thursday, May 30, 2019 - 3:16:06PM

Another reason I love Pandoc

[Some link](/ok/){target=o}

Thursday, May 30, 2019 - 11:20:50AM

“We recently moved our site to React and we were having indexing issue and rank drop issues.” (Naren Kholiya, JavaScript Site in Search Working Group)

Why people persist in using any library for their main page is beyond me. The only thing that should be using it is stuff you don’t care about not being properly indexed. Most web content is not app content.

Thursday, May 30, 2019 - 4:12:12AM

Writing my own recipes is a much for me as anyone. I love being able to grab one and quickly use it rather than having to depend on untested — often horrendously bad — StackExchange and other alternatives that people would find out there. When I get enough of them I’ll put together an index by language. Just need to make sure I keep adding them as I go. Only takes a minute or two for me to document them so might as well.

I love that this quells my constant concern and drive to post every recipe to Twitter as I did before. Writing a single command line tool to post a article to Twitter is really begging to be written. Hummm, I could even take the opportunity to integrate tagging into each article using Pandoc’s exceptional meta data and tag support.

Wednesday, May 29, 2019 - 8:57:15PM

Need to write a complied command line version of this script to remove color. Seems like such a tools needs to be a standard utility these days. One of the great things about it is that it simplifies the creation of other command line tools that usually use color. I love that this allows defaulting to the use of color because I can use constants for the shell escapes rather than running each through a function call, which is ridiculously slower than a constant. A streamed replacement approach like this is brilliant because it works with anything that has been coded to use color, not just one library.

while (<>) {
    s/ \e[ #%()*+\-.\/]. |
       \r | # Remove extra carriage returns also
       (?:\e\[|\x9b) [ -?]* [@-~] | # CSI ... Cmd
       (?:\e\]|\x9d) .*? (?:\e\\|[\a\x9c]) | # OSC ... (ST|BEL)
       (?:\e[P^_]|[\x90\x9e\x9f]) .*? (?:\e\\|\x9c) | # (DCS|PM|APC) ... ST
       \e.|[\x80-\x9f] //xg;
       1 while s/[^\b][\b]//g;  # remove all non-backspace followed by backspace

Wednesday, May 29, 2019 - 5:49:38PM

I am seriously questioning the value of learning SQL at all for beginners. Only the most legacy of projects will use it in any complicated capacity. It’s like one of those things that you only learn if you need to in that moment and use so infrequently that when you do actually need it you will have to relearn everything anyway. Practically no one who does modern development uses it every day.

In other words, it is far more important to learn domain modeling, JSON, YAML, and implementing safe loading and validation of those models well in JavaScript and Go. This also syncs up nicely with the entire idea of computed properties popularized by Vue and other frameworks. Learning map, filter, reduce and Go’s sort.Slice() are many times more valuable than learning a single line of SQL. SQL can inform decisions about how to create domain models, however. When you do a join with code you will know it.

I think I might be on to something there. What if I taught the fundamental principles of select, join, and views from traditional SQL development and translated them into the wonderful strict typing of Go? That way the very valid approaches of such can retain their value without the SQL that smells like moth-balls protecting grandpa’s punch cards.

Wednesday, May 29, 2019 - 5:38:00PM

More Manjaro grief. God I hate that distribution. Not even worth describing why. Would take several paragraphs just to get people up to speed to understand enough to know what the reasons for my conclusions mean. Sometimes explanations are just too exhausting.

Wednesday, May 29, 2019 - 2:10:06PM

It’s official SkilStak focus is shifting to 70% back-end and deep-end skills with 30% front-end consisting only of Vue Progressive Web Applications. I’m crafting technologists who will be instantly impressive for their skills breakdown who happen to know enough front-end to put a dashboard on something but mostly are amazing at making great Web APIs.

Tuesday, May 28, 2019 - 6:27:41PM

Perhaps that most unexpected, slightly disturbing discovery this month has been that the only equipment requirement to do the SkilStak thing is VSCode with Live Server extension installed and Browsersync so that I can share the real-time sk.local version of with the session notes live. No need for any big screen. No need for a classroom. Just a way to communicate, — even Discord will work for that. It’s insane how easily collaborative learning has become.

Tuesday, May 28, 2019 - 4:12:22PM

Blown off again. There is nothing that makes me rage more and will get you removed more quickly from SkilStak than repeatedly promising to make contact or just deciding you can’t be bothered to tell me you aren’t coming, I don’t care who you are, that is ridiculously rude. Once, ok, twice, um, but by the third time it is pretty clear you are just a flake. I swear, how do these people hold down jobs at all? My experience has been that such people are like that in all aspects of their lives, not just with me, and if they are just doing that with me, well …

People seem to think that because I’m mentoring their children that my time is less valuable. That is why teachers leave the profession in droves. Our society automatically looks at the most important profession in the world as less than others. It is absolutely disgraceful.

Tuesday, May 28, 2019 - 1:31:01PM

Today is a very important day. One I will likely never forget. There must be something particularly magical. The influx of activity is absolutely amazing — on several levels.

Tuesday, May 28, 2019 - 10:00:59AM

Nothing reveals how completely and totally uninformed you are than to call Software Development “Computer Science.” It has nothing to do with science. It is a skill and an art, not a science. One of the worst perception-management sins to ever happen. People trying to sell things adopt this term to describe what they are doing and make it sound more important to those who don’t know better. I’ll repeat that, programming is not “Computer Science” and never has been — unless you are creating your own languages, compilers and optimizing them for specific computers. Most “computer science” algorithms and data structures are simply math and statistics.

Monday, May 27, 2019 - 10:41:10AM

Turns out Google Gmail is even more evil than I thought, they seem like they are purposefully sending address — especially those from ProtonMail — to the Spam folder of recipients so they think that the sender has a broken / bad email provider. I have now had two different people tell me they stopped getting email from me. But it was there the whole time.

Monday, May 27, 2019 - 9:36:01AM

It would be so cool to have a design tool for terminal color themes that would allow you to preview the different way something looks on the screen in real-time like I do with DevTools for web stuff.

Sunday, May 26, 2019 - 5:27:07PM

Some guy actually tweeted, “I’ve been thinking about writing a book on being a ‘thought leader’ for some time now.” I almost vomited. I immediately unfollowed, blocked, and added him to my clueless list. What the fuck is wrong with an entire segment of the population who spends extraordinary amounts of time just on self promotion (and helping others self-promote)? We need more capable people focused on sharing their skills, abilities, and knowledge that matters, not worthless marketing shit. There is a need to get your voice hears I suppose, but making that the focus is just fucked up. I have learned some of this lesson the hard way, and some from becoming acquainted with actual amazing people.

I maintain that just getting shit done and writing out it in ways that can be discovered is almost all you need. Other than that engaging on occasion to help those sincerely asking questions by sending them references to what you have prepared documenting your experiences is the best way to help others.

Besides, you don’t have to be discovered to live and contribute a quality life. In fact, usually the opposite will be the case. Think about it statistically. What percentage of people who are “publicized” compares to all the people who are doing far more amazing things quietly, the TJs, Maggies, Katies, Aunt Nonas, and Mr. Poulsons of the world. The most amazing people to have lived have done amazing things without anyone knowing at all. I more people I meet the more I feel the truth of what I have always intellectually known. It’s what you do, not what you tell people you do.

Sunday, May 26, 2019 - 2:21:30PM

Realizing I really need to make my own exhaustive guide to all the HTML5 tags and their usage with recipes. The stuff on is so broken (again) and the Mozilla stuff is too exhaustive for beginners. Ugh.

Sunday, May 26, 2019 - 1:55:01PM

Been really wrestling with how personal to get in a blog or with my community members. Not in any bad way, but for the sake of sincere, authentic connection. I recently read a very good article on the importance of humanities “teachers” because they have served indirectly as a way for those learning to work through philosophical and ethical issues that could also fall under religious discussion, but are not necessarily religious in nature. The recent issues of racism, hypocritical religiosity, and the definition of life certainly are not technical topics, but they have a lot to do with how we apply what we learn.

I would go so far as to say that all learning should include some emphasis on context that involves “should” questions, which almost always invoke ethics and even spiritual topics.

Sunday, May 26, 2019 - 8:37:38AM

Forced to miss my son’s graduation because of legal battle started by my ex-wife.

To anyone reading this: avoid the Mormons like the plague they are. Not unlike Scientology they hook you with good things and feelings, then they reveal the bat-shit crazy foundation of what can only be described as a cult. Do not put your families in that kind of danger. Any organization, evangelical, Mormon, Catholic, or whatever that continuously and regularly violates the teachings of Jesus Christ — or any other actual vessel of God — is not Christian. “By their fruits ye shall know them.”

Saturday, May 25, 2019 - 6:09:32PM

It’s amazing how many actions I built into sk that ultimately built up to one or two actions that I use all the time. I needed the others to arrive at these core actions, but all the rest of them could be completely private and I would never miss them. This is a perfect example of why duct tape coding is so critical for arriving at the first iteration of an application that meets the exact needs of the user — even if that user is me.

At the same time, now that I’m approaching 500 content nodes again it is time for a refactor with performance and strict typing in mind that includes caching site data in a JSON file for easy integration into static API requests from different apps. Time for a Go port (after I finish skeeziks). This will also mean creating local keyword searches is also right around the corner.

I’ve decide I will keep sk (instead of skz) since it is so easy to type and encapsulate calls to kn so that kn can be used by others who may not want the organizational related stuff. It’s a great composition relationship at the command and business tooling level. The amazing muffet is licensed under MIT so I will use it heavily as-is and build it into kn for link integrity checking. One of the most important additions will be automatic URL redirection and global renaming.

It has been absolutely amazing to compose web content as fast as I can speak it during the middle of learning sessions. I am able to immediately add warnings and extra tips based on even the slightest adjustments to what any given member understands. I have solid empirical evidence — even if the sample set contains only one person — that the KN^3 approach works. There is no way any other modern pedagogical method can ever keep up with my speed at the moment. It’s a great feeling. It powers me up to continually polish it to the point where I can present it at ISTE eventually.

Saturday, May 25, 2019 - 4:11:11PM

It occurred to me that making a copy of my core data.json flat-file database every day automatically provides every opportunity that I need to chart changes in the state of the company, community, and all its members over time. I had entertained the idea of deploying a full business event IT model, but this is so much simpler. The only thing I lose is things like pattens for when in the time of day that things happen, but that is not very important information anyway.

Saturday, May 25, 2019 - 1:27:38PM

It is so convenient to use curly brackets for adding attributes inline with Pandoc Markdown:


Saturday, May 25, 2019 - 9:15:11AM

The Eternal Awkwardness of Wearing Glasses

Saturday, May 25, 2019 - 8:00:21AM

The entire premise for to existence is fundamentally flawed. Think about it:

It is exactly what you would expect from a bunch of beginners without enough experience to see how fucking broken it is.

You know what would be better but they will never do because they can’t and won’t?

Each member should create and write their own blog instead which serves not only as a way to link to their thoughts but gives everyone ample opportunity to actually think about what they are writing and not just so they will get lots of hearts. They won’t do this though because it doesn’t give them the false sense of connection this social-media raised group craves. They would rather have a bunch of clueless people sharing uninformed opinions instead of having actual experience and information and writing it in a way that has more lasting substance. No, they want to wear a fucking “DEV” t-shirt and remain clueless instead.

I bet there isn’t a single member who even knows who Jim Coplien is and yet they blog authoritatively about shit they haven’t got a fucking clue about, like the “importance of inheritance over composition.”

Another reason they won’t create their own blogs is because they simply don’t know how.

So why aren’t more experienced people with actually informed experienced and stuff to say saying it on

You probably guessed it.

All the quality people that you want to listen to and learn from actually have their own blogs. Hell even the mediocre ones have a Medium account.

This leaves nothing but the most clueless beginners filled with FOMO to discover and participate in Those, like me, who go into it with a desire to help realize what a waste of time it is compared to quality writing, presenting, and helping as many as you can in person to learn what you could never convey in a post. is one serious case of developers making something because they can without every asking the question, “Why am I making this?”

Actually that is the kindest assumption.

The other is that they understood and chose to do it anyway, which is 1st-degree cluelessness.

If the mission of is to actually increase dialog and information for developers then they should have promoted any number of other existing forums, technologies, and communities. There are all ready far too many of them.

“But Mr. Rob you are fostering community and have a web site?”

Yes, but it’s different. I’m dumping opinionated but informed content into one place so people can retrieve it and leaving the discussion about such things to Discord. And every single member is encouraged to start their own web site and blog as soon as possible so they can contribute their own voice. I also do no allow comments in order to promote conversations about topics in established forums and communities rather than making yet another forum. This promotes blogged responses instead of shallow, disjointed, ad hoc comment threading, which is never as good. You actually want people to take time to compose thoughtful responses rather than giving them a pressure-release value in the comment section where they can rant without any substance. In fact, this is one thing that makes the Medium community good. There is a stigma against uninformed responses. Your response becomes a story automatically. You don’t have the fear of losing your investment in quality content. But the best of all is to compose your thoughts in a blog you maintain and manage where you can adjust them over time. All the links over time will remain.

All anyone really has to do is apply my life ethics mantra, “What if everyone did it?” What if everyone spun up a because they felt the existing communities were somehow not good enough instead of fighting back the not-invented-here syndrome and supported others?

No, promotes entirely the opposite saying, “fuck you and your blog, you need to participate in where everyone should be writing.”

Do you see how critically and horribly flawed all these premises are?

All this objectively demonstrates why is just so fucking stupid to begin with.

Here’s what triggered this rant.

Absolute noob programmer responded on a post.

“If class-based OOP is so bad then why did ES5 JavaScript add it?”

It is absolutely exhausting encountered the level of ignorance and inexperience out there. This person probably does not even know the difference between run-time and compile time or the importance of “run-time train-ability” or even who the three-amigos are, or what UML even is.

I have a choice. Waste my time on this single person hoping my response is read by a few other people and just having to make almost the same identical response again in another forum, or ignore him and write an article about it with a link.

Now there’s an idea. What if actually actively promoted simply linking to one’s own blog responses and that was it? Now, there is an idea for an actual site/app that promotes the best possible dialog while providing a means of centralized searching. Hummm, I might have to add that. The unique element would be creating categories and tags and only allowing members to post links to vetted blog posts. It would provide the forum like cohesion to the best possible dialog consisting of only blog posts. This is largely what Medium does already, though.

It is not that these people are bad people, they are just so damn inexperienced which is what got us into this Java mess in the first place. I was so excited about it in my 20s. I had no fucking idea how bad it was. Neither did its creators. All of us seem to understand now, but the legacy monster that looms out there, and has infected our very educational systems like AP Computer Science, cannot be killed easily. No, it keeps producing young, vibrant, spawn who almost cannot be saved once they have been infected with the OOP disease.

There are many very young seeing it for what it is and saying NO, which I love, but the great majority of them have no fucking clue.

That means I can have a bunch of half-baked threads in forums of noobs, or I can continue to write and code and demonstrate what I mean and instruct those that I can in person so that they can fight it.

I only have so much energy.

Friday, May 24, 2019 - 6:53:48PM

Most human-computer interactions are getting information or “read-only” operations with predictable, consistent verbs:

“Write” operations are almost always better with a keyboard, or a voice processor that is typing the text for you.

Friday, May 24, 2019 - 6:40:04PM

Been weighing heavily the advantage of canonical tab-completable argument parsing v.s 100% natural language using regular expressions and eventually machine learning models. It dawned on me that you can include traditional bash completion and if something doesn’t fall within that I can bail to a version of the command that parses the argument list using more complex methods and returns the closest canonical versions that can be completed or asks for more information. That way the bash completion can be there for those who use it, but the natural language support can also be supported.

My gut is telling me that bash completion is going to be best. That the easiest way to meet the need to communicate with our computers will be using short, stinted sentences.

Friday, May 24, 2019 - 5:48:16PM

The more I learn about GitLab and their architecture the more I want to reach out to their HR department and custom train people for that company — well, that and Netlify or ProtonMail. These are some of the most important tech companies on the planet right now — and they get it unlike so many others.

/me strokes beard

Hummm, I feel like I need to create my own top 10 or top 100 companies to work for and target them for potential placements. The criteria would be their tech stack and ongoing plan to manage their technical debt. I would prioritize local employers and those who focus on work-from-anywhere.

Friday, May 24, 2019 - 12:16:05PM

Woah, Peek is amazing.

Friday, May 24, 2019 - 10:00:47AM

Designing and coding a command line utility is the best way to stay focused on what is needed and important. When a solution is distilled into the action verbs of the command the larger project is automatically factored down to something manageable. Later, as luxury or HCI demands, you can add the graphical interfaces needed. The core code will already be written. This is the equivalent to just writing anything when fighting writer’s block.

Thursday, May 23, 2019 - 5:46:10PM

It is almost impossible to get members to focus these weeks of May. They have so much crap going on in their lives I have a hard time not toning down what is being asked of them here. Amazingly when I do, I see them put the headphones on and get seriously down to work on stuff they care about. That is really the difference between actual learning and other “education”.

Thursday, May 23, 2019 - 5:05:01PM

Moved the browsersync for sk watch to have sudo and run on port 80 so that when combined with avahi-daemon service members here on my local network can go to the same sites by replacing skilstak with sk.local. This includes live, immediate updates to their notes and scroll syncronization so we are always looking at the same thing.

This has to be the best local replacement for a “board” possible.

Thursday, May 23, 2019 - 11:27:31AM

I keep seeing conference posts in Twitter and thinking what fucking wastes of time they are. What’s worse is that they feed this idea of popularity making ideas more valuable. I’d bet that if most attendees were honest they just want to be in a room and listen to someone else tell them what to think and do, while they eat food and imagine the trip they can take after the conference is over.

Look, I’m no different, I’m going SELF and looking forward to it, but I don’t think for a second that the time I am there will have any value other than getting out of the house and meeting other geeks who share my interests. The amount of learning will be practically zero and could be obtained by fast forwarding through the bad parts watching the video instead. I’ve received countless insights doing exactly that to all of the recorded conferences online. Conferences that don’t produce value are nothing I would ever sponsor or support with my money.

People just need to call conferences what they are and be real: big parties of people like you talking about stuff and topics that you love, most of which you already know. This is why you rarely see seriously productive people attend these circle jerks.

Thursday, May 23, 2019 - 10:53:14AM

Just published the splitting of VIP into Priority and Mastery Metric and looking forward to developing the system to track and determine them. Posted about it to News. I can like someone intensely at a personal level but it still does not change the reality when logistics fail due to inattention or just sheer laziness. People only understand consequences, no matter how nice you are. It’s a law of the Universe.

Wednesday, May 22, 2019 - 10:50:02AM

And another thing, so much of Jim’s rant is about the scientific studies and “papers” justifying his conclusions — which I whole-heartedly agree with when it is available — but so much in software development is learned through pragmatic discovery and not applying scientific method strictly. Then again, this is why he calls it “art” and not “science” or “engineering.” That made me feel good having called this company SkilStak Coding Arts from the beginning. I do believe Full-Stack Engineer is still a viable appellation since I include understanding basic electronic engineering and operations of a computer at the hardware level in there. Jim would have a stroke if he heard that Hough High calls its after-school gaming club the “Computer Science” club. There’s simply no science involved at all.

Wednesday, May 22, 2019 - 10:39:38AM

Something I really don’t understand about all these smart academics talking about OOP and championing use cases is how they can do so and not see the fundamental reality that when focused on HCI these use cases always begin with a verb, an action, often one of create, replace, update, delete, list, show, transfer, calculate, or dump. I’d go so far as to hypothesize that there are a finite number of recurring actions for any interaction with a computer.

I’m running into this now as I give skeeziks a brain. In fact, the verbs for listing and showing are so redundant that skz list sessions for this week becomes skz sessions for this week or even skz sessions week. While I like the natural language part of it, I think that tab completion could be the HCI principle that trumps natural language. We really just want to see all the options for he next part of the command line. Minecraft has masterfully implemented this for kids as young as 7 providing all the completion to help them out. The problem isn’t processing the language perfectly like a human would say it, it is providing all the information about the possibilities instantly and in a way that is reasonably human readable. The human natural language (the articles and helper words), is fun but unnecessary.

The idea of dynamic command phrase creation with tab completion is a very powerful one.

Once again, this insights don’t come to those flying around the world giving conferences, they come to those who do the work.

Wednesday, May 22, 2019 - 9:30:34AM

Jim Coplien nails the problem with class-based object-oriented programming. “Objects are run-time entities.” This means that the very definition of OOP requires run-time object definition and mutation — the very thing that is ignorantly demonized by people who call it things like “monkey patching” and such.

The best way to address this is by thinking of the actors in the system by their roles, each takes on different roles, each has data, but the actors are not data themselves. Then we get the idea of “trained objects” that can be trained at run time.

His points on contextualized polymorphism is brilliantly pragmatic and obvious when he presents it. I remember using strict OOP at IBM and realizing so many times I had no idea which identically named method was running and in what code. “Polymorphism is goto on steroids.”

“We don’t deliver classes. We don’t deliver patterns. We deliver use cases! That’s where the value comes from.”

“Java is the only language that prevents you from doing actual object-oriented programming”

The core of his explanation is being able to map methods to operations differently depending on context (although he describes it differently).

He has a lot of other ideas that are opinions not backed by science and a lot of strong opinions, strongly held, but he nails the problems with OOP.

When I think of Jim compared to someone like Rob Pike I just have to grin. It just confirms that the amount of talks a person gives is directly proportional to their level of pragmatic cluelessness for lack of doing actual work. They write more books than code. I certainly write a lot, and don’t have near the daily experience with deep complex coding architectures that I used to have, but at least I realize it.

Wednesday, May 22, 2019 - 8:52:03AM has a lot of amazing, real layout examples.

Tuesday, May 21, 2019 - 4:53:07PM

Annnnd Jeff Bezos just successfully bullied ICANN into creating the .amazon domain. Bubye Internet.

Meanwhile …

Tuesday, May 21, 2019 - 3:46:20PM

Really need to look into the science behind “mob programming” (pair programming is already proven).

Also “Organizational Learning: beyond process to structure” and importance of “cross functional teams”.

“The interface is the product.” Focus on UX knowledge at every level. This is why I love the whole idea of CAVA which focuses entirely on the user interactive experience.

I need to read the “Zen story of the eight bulls.”

“Most of what we do is design.”

“Focus on end-user programmability.”

“The only thing that matters is usability testing. It is the first and final indicator. End user testing is all that matters in the end.”

Tuesday, May 21, 2019 - 3:12:26PM

“Java is the only language that cannot do object-oriented programming. … Polymorphism is goto on steroids.” (James Coplien, GOTO;)

Tuesday, May 21, 2019 - 2:23:10PM

The more I research this the more I realize that avoiding surveillance from any country outside of the US that provides components for electronics sold in America — particularly Broadcom who refused to release open hardware specs even though it accounts for almost all Wifi and network device chips in most computers — is an easy attack vector for such companies. In other words, we’ve already been hacked over and over and over again. There is no escaping it. We are far beyond any protectionism and legitimate paranoia. We are already completely and totally owned.

The next question is, what can we do about it?

To which I answer, I have no fucking idea. The best I can think of is to do what I did to catch the hacker on my email server at home in the 90s, track and log every single change to any file on your system and every output network connection.

Time to make time for such things.

Tuesday, May 21, 2019 - 1:46:24PM

Here’s the author of the Bloomberg report talking about the rise of Chinese surveillance, one very probably reason Huawei is so far ahead.

Tuesday, May 21, 2019 - 11:42:58AM

I need to write all this China stuff up into an article. I just remembered a conversation I had with someone recently about why China’s communism has not only held up, but prospered. China has a unique education and connection with Western capitalism providing a pressure relief valve to the Chinese people preventing them from truly revolting, while gaining all the efficiency of communism or any totalitarian regime. This is super dangerous. China doesn’t have to bomb anyone. They could hack or poison any and all of us and have — many times.

Meanwhile you have the brain-dead Americans maintaining their huge military war machine as if it was actually protecting the world — like at all. It’s not.

The only thing America’s trillion dollar military is doing is sapping us of all resources, financial and educational. America’s military is the most substantial example of massive national technical debt that history will ever see fall.

Think about it. We can’t just bomb China. That’s not how war works today, nor has it worked that way for most of this millennium — even though we think it does.

No, war is on the cyber front and we don’t get to see the Pearl Harbors. When it is on the ground it’s all special ops and drones.

Think about the annual cost to maintain just one aircraft carrier.

Does anyone actually believe our military power scares China one bit?

They fucking laugh in our faces. They own 30% of our land, import almost everything we buy. They literally know every small detail about American buying interests and culture through Walmart forcing reverse cost bidding. They don’t even have to fucking hack our Facebook accounts to know everything about what we actually want and buy. The fact that they have hacked us just makes it all the more laughable that any military muscle just looks like a ’roided out, artificially tanned, small testicles body builder. As China continues to slowly destroy America using our very capitalism against us, they sit back and laugh their asses off quietly.

I had not fully researched and realized the extent of this until this last week after spending most of my free hours researching it after seeing that Joe Rogan episode. Mr. Robot could not have more perfectly captured what is actually happening with our relationship with China. I find the two big bad guys in Mr. Robot delectably accurate metaphors for the dialog and perceptions between China and America.

America: “I will reign chaos, mother fucker.”

China: “Don’t mistake my generosity for generosity.”

Tuesday, May 21, 2019 - 11:35:00AM

It occurred to me that while the entire world is moving toward more nationalism and authoritarianism the values of some countries are emerging in a diseased way in the authoritarians themselves. Trump is the epitome of everything wrong with American values and hypocrisy and anti-intellectualism. He was put into power as all the worst of capitalism came out — and was instigated — in Americans as they voted. Even the electoral college is objective evidence of giving authoritarian control to small states unequally mostly for the preservation of slavery. The American revolution is finally (and strangely) consuming itself not unlike the French Revolution did as well as the Bolshevik revolution.

Tuesday, May 21, 2019 - 10:21:04AM

Another thing being out of enterprise for so long has allowed me is the perspective to see things without the biases and prejudices of being tainted by the enterprise you are in.

For example, all these talking heads on YouTube at conferences seem to have absolutely no fucking idea how business itself is being transformed. Many of these pretty redesigns and changes to these relatively old organizations are going to be obliterated by the economic pressures of the escalating China trade war and the inevitable world-wide Gig economy. This is going to fundamentally change what people buy, how they buy it, and how they get what they buy.

One thing is for sure, companies that want to remain competitive must allow work remote possibilities. This will become an absolute financial imperative as companies running off their large cash reserves and stock value have to face the music and produce real value or die. These realities will force companies to hire foreign workers who can deliver code and systems faster and cheaper than Americans. All the realities of sourcing components from foreign countries will come to apply to labor and when they do American companies — despite the massive public outcry from most Americans — will have no choice but to outsource. This is the very reason so many are promoting They need the skills or they die.

“The limit in the system is that we simply cannot hire enough qualified engineers fast enough.” (Mark Zuckerburg, Facebook).

There’s a reason Google threw off any consideration for humanitarian concerns and bowed down to China’s demand for censored searches and giving up location information of individuals to the Chinese government. Google is a world-wide organization. It realizes it has to “play nice with China” to remain alive. We all joke about being nice to robots so the singular AI that rules us all some day will be nice to use. Google is doing that very thing with China today, ethics be damned.

Americans and not being educated enough to keep up with this critical need and so these large companies — who have a proven track record of doing what is in their best financial interests over that of their host countries — will continue to just hire people remotely who can do the work from Brazil and elsewhere.

I personally witnessed this exact thing happen at IBM while there. More than 300 system administrators were replaced by the auditing system I principally helped create and when the remaining “support” roles went to the systems operations center in Brazil. IBM is a multinational corporation. They could care less about American jobs. Same goes for Google. They care only about what their board says and their stock price at the end of the day.

Either these large corporations will be divided up and crumble because they cannot compete with Chinese mega corporations motivated by state interests as much as profit, or they will dominate and only get more powerful, more global. The result for anyone wanting to have a job is the same.

All of them will have very direct pressure to high as many as they can for a little as they can.

I once tried some gig work online where everyone bid on smaller tasks. I was intensely frustrated because I simply couldn’t do anything. As good as my skills were, I was being undercut on my bids by more than 50% on average. I lost just for being American.

This dynamic is not going to change, in fact, it is going to get way worse. The ugly but objective solutions are to prepare for the following realities:

The tariffs in the news are just the beginning. 30 economists — including several noble laureates — wrote to Trump asking not to do it because ultimately it destroys the economy of the country forcing them.

The economy will get worse, and when it does, only those able to adapt will have any chance of maintaining a middle-class lifestyle.

Huawei is just the beginning. I saw a laptop yesterday that a member bought not knowing it is probably bugged at the hardware level. But the elegance of this product exceeds that of Apple products and cost 50% less. It was hard not to want one myself. In fact, I found myself justifying buying and recommending them for new members over anything else, that’s how good they are. Their phones blow away iPhone. Most people could care less who makes the things. They don’t even realize they are literally buying a product created with illegally obtained plans and code. Huawei has been caught over and over releasing products that have actually stolen code in them. Same even with wind turbines. China is owning all of us and reselling us stuff we created for half the cost. But this isn’t going to stop, it will only get worse.

China is so smart they are even sponsoring and building up the third-world countries where they obviously see the bulk of work going as the cost of living there is so low that when people get trained up to deliver code and manufacture components will dominate the industry. India is losing ground to these countries. The Chinese are brilliant, if evil. They see the long term macro-economics evolving and are actively preparing for it. Meanwhile, Americans are literally JAQing off playing video games and watching the political fights and praising themselves for finally adding coding as an elective to certain special schools.

We are going to be fucking owned by the Chinese. Those who see this can prepare. Preparing has nothing to do with stock piling food and ammo. It is more about having the skills and mobility to adapt to a massively different world economy and landscape.

While I’m still working on the emergency preparedness plan for this, here’s my start:

I know this sounds like a “sky is falling” post, but its not. Thousands of people are already living amazing lives as “digital nomads” and finding residency in countries that are more stable with costs of living and social systems that sustain a better quality of life. I’m hopeful AOC and others can instigate the changes needed in America to catch us up with the rest of the world so we have even a small chance of fighting back China, but even if they succeed it will be almost a decade head start for China who is already punching us in the tech balls with Huawei. It will only get worse.

This is one of those many times in my life when I’ve realized I’m right about something that I want to be oh so wrong about. The research and observations from well-informed, but not often heard, experts on the topic is undeniable.

I predicted the Linux dominance in the 90s.

I agreed with Tapscott about the elimination of everything “middle.”

I’m afraid there is no other conclusion than China’s momentum will rule the world within the next 10-20 years. Remember, I was alive when I saw “impossible” things happen like the fall of Communism and the equally unexpected rebirth of Russian tyranny. Tyrants and dictatorships are tough to beat. They get shit done faster than democracies. Any who has ever played Civilization knows this (but most are too fucking Fortnite brain dead to play such games today). America is losing on every level currently and there is only slight glimmer of hope that this will actually change. The educated who can do something about it are being drowned about by the morons with zero education who are so desperate because they haven’t even got basic health care that the react to everything — wrongly. That is a recipe for disaster. Being prepared is all we can do.

Tuesday, May 21, 2019 - 10:00:06AM

The more talking-head, book-writing, 30 somethings I watch struggle with “enterprise architecture” challenges around microservices and “managing the data” the more I feel like the idea of what I call event-driven IT could really be the next evolution. Problem is that it is so radical and transformative that almost no businesses that following any of the traditional IT models will be able to implement it.

The idea is actually very simple, turn every action in a business into an event.

The tough part would be fighting off the organic evolution of internal business processes that don’t want to register an event with the central business event handling system. To deploy such a system every single business unit would need a mandate to create an input event queue (like Bezos did for microservices) and a way to register subscribers/listeners to that business units events.

Just think of the metrics and visibility into all of the business from such a thing. No scrapping logs after the fact. You could produce dashboard that give visibility into the entire enterprise in near real-time. Enterprise IT bottle necks could be identified quickly and addressed with immediately visible metrics that change.

Rates of certain events could be measured to graph peak occurrences by geography.

In short, what if the entire enterprise was managed like the internals of Linux operating system kernel?

Microservices has proven that solutions from the internals of software development can be applied to enterprise real-world problems as well. Why not take that a step further? Why not leverage for organizations the same advantages that Nginx gave over Apache giving it the disruptive top position as world’s most deployed web server?

This reminds me of yet another reason procedural and functional approaches are better all around. All you have to do is look at the real-world organizational IT successes to see that they are not based on objects. They are about data and product transformation as functions are applied to them and procedures more them around and ship them. It’s not nor even It’s addbody(car); addwindshield(car) or, as JavaScript might soon allow, car |> addbody |> addwindshield. These are not methods, they can take anything and are intelligent enough to realize what they are dealing with. This is exactly how assembly lines work — especially those that contain multiple different types of things.

The object-oriented approach was always broken. Nature and organic processes have never worked as it describes.

Tuesday, May 21, 2019 - 9:40:04AM

I’ve watched several presentations from Sarah Wells from the Financial Times and while may find her presentation style hard to last through there are a number of observations that she makes from objective experience that are very important. The take away seems to be, it really sucks and has major drawbacks but is ultimately worth it to enable continuous integration and deployment. The more macro your system the less likely it is to remain relevant.

This morning I woke full of comparisons between the microservices architecture she described and how I would envision a world a CAVA world. Assistants can best be approached and managed as clusters of microservices for humans to interact with. In fact, a microservice is just a virtual agent that speaks JSON only, like R2D2 in my comparison.

I’m starting to see a need for GPG or OpenSSH again.

With a world filled with assistants and microservices the most effective way to authenticate everything is through public-key cryptography. Obviously that much latency would only be worth it for write operations.

Monday, May 20, 2019 - 6:54:17PM

“Change approval boards don’t reduce the rate of failure. They just slow down everything else.” This is now widely accepted by the industry. I remember them at IBM and how they destroyed every level of efficiency. Continuous integration is such an amazing IT development.

Monday, May 20, 2019 - 10:14:27AM

This morning as I code and write from all over the house in different rooms, chairs, and positions I’m reminded how critically important it is for all developers to make their laptop their primary workstation. Something as seemingly insignificant as using the same keyboard all day makes monumental gains in efficiency and ergonomics.

In contrast I watched a “creator” politely rant about why she (and others) are all leaving Mac in the dust for Windows systems and saw how much so many of them still need high powered laptops. It is no surprise that she arrived at the exact same Dell XPS that I use, (which was some nice validation considering how much research she has obviously done).

Every time I see a huge triple monitor setup with glowing neon and a massive PC tower all I can do is laugh. It is the equivalent of carrying around a 10 lbs “gaming” laptop. These people don’t even realize what fools like look like to any engineer or developer with actual experience. I thought a lot about this happens and have concluded it is because of gamer mentality (most developers are also gamers), streamer mentality (most insignificant developers who actually bother to waste time taking pictures of their setups to brag about them also think they need to be YouTubers and streamers), and “look at me” mentality which diseases their brains into thinking likes and views somehow translate into developer talent.

The only reason to have a rig like that is if you are doing extensive video editing, period.

If you are a bitcoin miner you have another rig for that.

If you are a gamer you have another rig for that. You don’t want your gaming rig anywhere near your development system because — if you are an good developer — you have learned to compartmentalize your time rather than always be ready for the next game.

If you are a hacker the only thing that kind of power would be needed for is password cracking and most high-powered laptops have more than enough for that. Anything requiring more CPU gets shipped off to system you’ve hacked elsewhere where it won’t be discovered while you are doing your cracking.

So once again, if you are showing off your big, stationary, workstation where you jack-in to your system like a Borg you are literally showing all the real developers what little experience you actually have — or worse — how easily your ADHD makes it impossible for you to actually get any real work done.

The best workstation in the world is the highest powered, most reliable, Linux laptop you can afford. Right now that’s this one.

Monday, May 20, 2019 - 8:48:47AM

Why isn’t it more obvious to everyone that the only true model for good education is one-on-one?

Take music and art lessons. When is the last time you encountered music lessons being taught to a group rather than one-on-one? My wife teaches art and the way she describes it is largely a bunch of one-on-one lessons that rotate quickly during the class — a bunch of micro-lessons one-on-one.

It isn’t that certain disciplines are more prone to one-on-one instruction, it is that some are more obvious about the limitations of the alternatives. This is one of the major differences I have observed between the two having taught both ways for several years.

There’s no place to hide when you are teaching one-on-one, no “back row”. You are either learning or you’re not, interested or you’re not.

Every person has a learning style and capacity that varies as much as that person’s fingerprints. What, why, and how that person learns must be taken into consideration for true, effective learning to really work.

This is nothing new. People have been learning using the master-apprentice, guru-disciple, knight-squire model since as long as there have been humans. Nature favors the path of least resistance and has already revealed what that path for learning is. Why do we insist on complicating and breaking these natural laws and making all kinds of bad fixes and excuses?

Sunday, May 19, 2019 - 4:13:41PM

Having only one person who is learning at a time makes all the account setup so much easier. No more lock outs from different services who think my IP is attacking them with a half dozen new account sign ups.

Sunday, May 19, 2019 - 1:44:57PM

Super proud of this stupid little cava.Epochify(path string) string Go function. I hate that so many systems add (1) or whatever or even (copy). So stupid.

package cava

import (

func Epochify(path string) string {
    i := strings.LastIndex(path, ".")
    if i >= 0 {
        return fmt.Sprintf("%v-%v%v", path[0:i], time.Now().Unix(), path[i:])
    return fmt.Sprintf("%v-%v", path, time.Now().Unix())

This is such a great example of why Go dominates on the serious utility and most systems programming. Rust is so amazing, but does so much less for you making everything a lot longer. The Go standard libraries seem so much more substantial and well thought out — especially anything with text involved. Pike co-invented UNICODE for God’s sake.

Sunday, May 19, 2019 - 4:16:19AM

Perhaps one of the most elegant solutions GitLab provides to the world (that GitHub simply does not) is subgroups. Only those creating APIs will likely appreciate this. Subgroups allows APIs to be implemented in different languages without creating annoying prefixes and suffixes in the repo names.

For example, here are some Go packages hosted on both:



Sure the path is longer, but the resulting directories and project repos are so much easier to navigate. Navigating to is so much cleaner. Permissions can be setup cleanly as well with each subgroup. This is not only not even possible on GitHub, but would cost quite a bit. It’s free on GitLab and if needed could be setup internally using their open source offering. GitHub has nothing similar.

It’s funny because GitHub just announced their packaging services like it was a big deal but they haven’t even figured out something as basic as subgroups, a simple, helpful advantage that has been available in GitLab — for free — since the beginning.

Saturday, May 18, 2019 - 11:00:06AM

“If you walked into any coffee shop in San Francisco five years ago, you would’ve been hard-pressed to find a single Windows laptop in a sea of glowing Apple logos. The MacBook was the default for startup culture — not just because of its sleek looks, but because the device was so great at web development.

Over the last few years, Microsoft has tried to flip the narrative and win coders back. Last week, its master plan culminated in a major announcement: Microsoft will include Linux as part of the Windows 10 operating system, starting this summer.

Hell has officially frozen over."

I laughed so hard at that last line I started crying.

Here’s another article echoing what I’ve been saying for the last three years about Linux domination.

Linux has destroyed the Mac market for developers and Apple doesn’t give a shit. They are letting macOS sort of die so they can focus on protecting themselves from Huawei and finding other revenue streams.

Mark my words, this will be Apple’s single biggest mistake.

Apple does not understand that momentum, word of mouth marketing, and overall influence of having the entire developer population behind you. They have been wrongly attributing their success to other things because they are just obsessed with market indicators that are more “objective” but this subjective thing is so substantial it will destroy Apple.

Linux has always been the best base operating system on the planet and now it is also the best for the desktop and fully integrated with Windows, which has touch and has come far enough along to have exceeded the Mac interface for many things (but still far behind in others).

Windows will continue to validate and market Linux and Mac will wither and fucking die.

Saturday, May 18, 2019 - 9:36:07AM

While working through a new VIP system with a more accurate Entropy I discovered there’s an idea for a real learning and intelligence tracking app. The idea is to identify specific skills and knowledge that can be listed as bullet points on a resume and make them available for tracking. Here are some preliminary calculations and scoring that one of my best 10 year old members actually helped me put together:

Rate of Entropy 1 point/hour (168/week)
Rate of Input 3 point/minute (180/hour)

These base rates make my left-brain very happy. They work out well because they show that one hour a week only barely increases learning. I have always felt that through my subjective observation of others and myself.

This also means that taking even one week off with no hours can obliterate the learning for the last week. I know this is true. I have seen it over and over at SkilStak. It is a constant source of frustration when parents (or anyone) ask a member to suddenly perform when there has been almost no work happening outside of the one-hour session here. The best members are putting at least four hours outside of sessions on their own. Their learning scores would definitely show this.

Ebbinghaus discovered the rate of decline (entropy) for skills and knowledge is about one month to go from 100% to zero. Now that is assuming you just barely learned it. Over time new learning “takes root” and lasts longer, making it more immune to entropy, but never free from it. These subtle things are different for every individual and thing learned.

The best I can do is make a close approximation and allow people to change their rate values, both overall and per skill.

I like where this is going because it brings me closer to the original SkilStak app I created some seven years ago to track my own personal learning.

Now comes the hard part, categorizing skills and knowledge without over engineering it making it impractical to keep updated.

Saturday, May 18, 2019 - 8:26:14AM

False alarm on GitLab, thank God! I am so embarrassed to admit I was using instead of so everything is good with Go. That makes so much more sense since so much of GitLab is coded in Go.

Saturday, May 18, 2019 - 7:33:52AM

More reasons Go will become a substantial machine learning language: onnx-go.

Friday, May 17, 2019 - 3:47:21PM

I just found my first really substantial reason to be angry at GitLab. Looks like no Go packages on GitLab. Arrrg.

Friday, May 17, 2019 - 2:55:15PM

One Day

Friday, May 17, 2019 - 1:14:13PM

Sometimes I wonder if having so little finished and just documenting what I have as I go along is the right thing. Then I remember that the people I am working with don’t want more than is needed and I can link stuff as I go in their session notes which makes it all worth it.

Friday, May 17, 2019 - 10:50:24AM

When you die will your life and contribution back to the Universe be best described as a cancer cell or a stem cell?

“What if everyone did this?”

That’s the only commandment anyone ever needs.

The cancer cells follow a different mantra:

“What can I get away with?”

There are only two things you take with you to give back to the Universe:

  1. your capacity to love, be loved, empathize, and connect with others, and
  2. your “increase” in intelligence from investing your talents wisely.

Burning yourself out and destroying people chasing a huge million dollar home is the epitome of failure. God does not want you to be filthy, disgustingly rich while others suffer all around you. [How Christians can follow pathetic, stupid sophists who throw out the “harder for a rich man to get into heaven than a camel through an eye of a needle” just blows me away.]

These cancer cells bring nothing back to show for the talents they were given — nothing. All those talents at managing money and increase are for naught. They have proven they are nothing more than a diseased cancer cell to be excised or recycled for bio-matter. They hired a “yacht manager” for their fleet and failed the simulation. Their lives and actions have proven objectively that all they really care about it growing their greedy, tumorous selves. They provide zero return to the Universe in all the ways that matter. Their lives are worthless, malignant melanomas deformed enough to invent complicated mental models to justify their diseased, disgusting, stinking lives. They might be bigger than the healthy cells, more bloated, and think themselves more important, but the rest of the organism sees them for what they are, mutations of once healthy cells that are past hope and must be destroyed or will destroy the body both depend on for life.

What you do at work matters. It is not “just a job”. It is more than half of your total investment in this life. Make it count.

Thursday, May 16, 2019 - 9:51:41PM

Amazing work from Mozilla on this CSS Grid Tutorial

Thursday, May 16, 2019 - 9:08:24PM

People who think running Arch makes them cool and better than Mint and Ubuntu people are like the people who lug a 10 lbs Alienware “gaming” laptop around thinking they’re cool.

Thursday, May 16, 2019 - 2:58:04PM

After watching the entire Getting Started with TensorFlow presentation from Josh and Paige the conclusion confirmed what I have predicted about Python’s eventual decline for machine learning — even if it is 2-10 years away.

That came after watching almost a full hour of Kyle Simpson rant. As strongly as I disagree with his one-language view of the world I do like his vision for JavaScript’s future, to some degree. There are just so many things about his approach to self-confirmation and marketing that disgust me still. I know he means well but everything about him screams out reasons to never listen to a JavaScript “computer science” expert of any kind — especially those who have never done any significant work in any other language.

The main thing Kyle and others continue to miss is that “the open web platform” needs to have some clean compartmentalization to survive. I think Kyle might even get behind that based on his observations about “machine JavaScript” and “web JavaScript”.

However, he refuses to openly acknowledge that JavaScript is — and will should always remain — optional for use of the Web “future we want to create*.

He goes off on how we should all make decisions about the future we want and yet now once suggests the future of “the open web platform” should not even fucking require JavaScript at all.

If Kyle sincerely meant all the philosophical spew he spouts he would see this stark, real conclusion and be forced to admit that a Web that only works with JavaScript on every page is a horrible, disastrous potential future that many are very seriously pushing for — and winning.

Thankfully the good people at Netlify are more influential, better funded, and morally grounded than Mr. Kyle. and are headed in the right direction with JAMstack.

Thursday, May 16, 2019 - 11:04:13AM

Realized that set -s escape-time 5 is the perfect tmux.conf escape time when you have the proper Ctrl+a escape because there is no reason to pause at all between pane navigations. It has made my tmux experience so much snappier. I really don’t recall ever liking or needing any pause between pane navigation steps. Before I would start to do my vim stuff and since I have similar keys setup for tmux pane navigation it would switch me back to the previous pane instead of moving down in the file I was editing.

It’s the small things in life.

Wednesday, May 15, 2019 - 9:13:59PM

After going through an amazing Virtual Box Linux Mint Cinnamon install with a member today and getting the full screen activated it was clearly and completely better than any current Windows Linux Subsystem offering. For one, you get the full Linux Mint Gnome experience and not the brain-dead Windows graphic interface. Performance was just fine for anything most people are using a Linux Mint system for.

In this member’s case he was using a jacked MSI gaming laptop (that I recommended against) but the performance of the virtual machine was flawless. The fact that he can pause and snap-back sessions as well as protect himself from cybersecurity testing has tremendous value on top of that. For those who are married to Adobe products or other video editing on Windows it makes a lot of sense to go the virtual machine route. But for most Linux purists (myself included these days) there is nothing better than Mint on raw hardware.

Wednesday, May 15, 2019 - 8:55:26PM

The GitLab Web IDE blows away, CodePen and all the others for educational web development for one specific reason: IT’S REAL! Every single change is immediately deployed to an industrial-grade CDN with full JAMStack support when easily connected to Netlify.

Wednesday, May 15, 2019 - 5:34:37PM

The skill learning priorities aren’t that complicated:

  1. build web sites and full stack apps,
  2. build chat bots, command line and terminal apps,
  3. build and maintain Linux servers to run them on.

Then — and only then — build other hardware and devices for it to run on and add in machine learning.

Wednesday, May 15, 2019 - 3:05:31PM

Great write up about EM vs REM vs PX and this one also.

Wednesday, May 15, 2019 - 10:20:45AM

Reminded by one of the world’s more informed experts on the rise of China how completely and totally owned America is going to be because of all the drama and “distractions” we face in this country. It’s not a question of if, but when China will become the overwhelming dominant power on Earth at this rate. FireFly got it right. Get THE FUCK off of FortNite, and your “porn” news station and do something with your life to join the fight against the “country of engineers” who couldn’t give less of a shit about hacking, and stealing the best technology the world has to offer. This is a fucking war and you are worried about your latest outfit! This is far worse than the cold war I lived through. The difference is everyone wants to check out and not think about it rather than actually do something. At least when I die I can say I did everything in my power to counter these massive challenges facing humanity. I may not be everyone’s idea of a “good guy” (mostly because I say fuck so much and get so amped up about all this), but at least I can say I did something instead of burying my head in the sand virtual sand like every fucking game addict and obsessed sports fan. That’s why when I encounter people who actually care about our world (and not their latest Soccer tournament) I want to do everything I can to help them. Everyone needs a break, but American’s take way too many breaks. The Chinese don’t.

Wednesday, May 15, 2019 - 7:42:45AM

As I put up skeeziks again — my conversational assistant in Go — I’m very strongly reminded how fluid mastery is. I even had to lookup the JSON tag syntax for annotating structs. This is why so many coding interviews that require answers about esoteric data structures and algorithms are just such bad indicators of future successes employed with any company. The most important skill to assess is how quickly any potential hire can learn something needed to complete the job. The second most important thing to assess is how likely is the candidate to actually learn it without being told.

This reality check has brought me to conclude that although learning several languages at the start is good to get perspective, that most human beings can only stay really actively fluent in those languages they use every day. Applying that criterion to the languages I teach and maintain that leaves the following:

While learning C and PIC Assembly and Rust are valuable, most people will never need them on a regular basis — especially full-stack engineers.

As for Rust, I have read three tweets in the last two days all sharing the same general sentiment. One described Rust as that friend you really want to like and do everything to stay friends but you discover yourselves drifting away because deep inside you just can’t really bring yourself to want to be with them a lot.

I have read the opinions of some very talented programmers and all but the kernel programmers and 3D game developers who write C and C++ all day have tried out Rust on significant things and gone back to their modern Python replacements — TypeScript, Go, or Bash.

I will still learn and teach Rust because if forces a programmer to think about the very important concepts of concurrency and data sharing. These requirements exist in other languages but are not explicit. In fact, I think learning to think like a Rust programmer is far more important than learning traditional OOP these days.

Tuesday, May 14, 2019 - 6:01:16PM

After seeing a bunch of tank games — and remembering how much fun I had playing them with my dad as a kid — I have come to realize it is all the different ways to apply strategy to the bullets, by curving, bouncing and more, that make it so fun. I’m working on a new game lesson for teaching Phaser3 and JavaScript based on it called Stra-tank-ery just cuz. So the game development path will go like this:

  1. Dodge and Grab
  2. Blockhead Battles
  3. Sea Wolf
  4. Stra-tank-ery

Then we add multiplayer to these over web sockets to cover and Node and possibly Go.

Tuesday, May 14, 2019 - 9:19:07AM

Feeling conflicted about a really useful Go package I wrote some time ago called jsonsave that allows you to easily slap a JSON state onto anything that will autosave at configurable intervals. It’s super handy for quick utilities. It achieves this by loading all JSON into a map[string]interface{} and forcing the type validation to other places in the code. This allows JSON and the data models to be changed on the fly — as is popular with JSON — but this defeats the biggest reason for picking Go in the first place.

I’m rethinking the whole idea of “quick” utilities in Go — especially now that I’ve built a static site generator out of pandoc and Bash over the last few months.

I think my initial steps into Rust have also prompted this thinking.

Contrary to what many may still think. Go is not for duct taping. Go might be a Python replacement but it should not be coded like Python. In fact, the primary reason to reach for Go over Python is exactly because of the strict typing.

Go is the tool you reach for when you need something solid, something sustainable, something durable. Such things loathe short cuts I took with map[string]interface{} in jsonsave. On the contrary you want to strictly codify your domain model so that more problems are caught at compile time instead of run time.

People — like me at one point — chafe at how cumbersome JSON in Go can seem to be because it prefers to marshal and unmarshal structures with strict types over just loading everything up in a type-less blob of maps, arrays, and primitives. But the truth is, Go’s designers knew what they were doing and wanted to promote strict typing while giving us an escape hatch when we really need it.

Strict typing is good!

So instead I’ll morph jsonsave into a bot-like entity that can be given a pointer to an object and configured to autosave that thing as JSON at regular intervals. Another thing I like about that approach is that is doesn’t attempt to bolt on functionality to a thing, but to create a thing that does something — perhaps not even a thing at all, maybe just a procedure / subroutine / function like autosave.JSON(foo) — omg, why didn’t I think of that in the first place?! OOP has really diseased my brain. I love the idea of Go packages taking on procedural significance with verbs as package names over even nouns. That way an autosave.New() can pass on something that can be configured dynamically or procedures can called in simpler form that use the defaults.

Tuesday, May 14, 2019 - 7:28:19AM

Jamie Metzl shares some amazing facts about China. No wonder China has the world’s top level of optimism about the future. China is a “country run by engineers” who have no problem working ridiculously long hours and are so driven. They come to Silicon Valley and look around and say “why is everyone so lazy?” America is a country run by “lawyers and reality TV people.”

When my favorite non-fiction author in the 90s (who wrote an amazing book about Russia after the cold war), went on to write another about China calling it the “sleeping dragon” that would essentially wake up and dominate the world, well, it became obvious then what is happening now and will continue. China makes better, faster, and cheaper mobile phones and so much more. They already got caught putting devices into every computer board coming from more than one factory and have no problem buying things Americans won’t because it make sense “for the country and party” and not necessarily business sense. China has bought up much of Africa and has no problem playing the long game. They are also the worst offender against the environment. Ironically they may own the world in 20 years while it crumbles all around them.

Monday, May 13, 2019 - 9:54:39PM

Just so much to do. I got the *Regular Expression Training and Testing Tool ported to GitLab and updated to use Go 1.12 module format and have about finished porting the auto-save JSON state package. Every time I go spelunking in the 100s of GitHub repos for stuff that needs to be updated and moved over I get overwhelmed.

Happy Birthday SkilStak! Today my cantankerous company is six years old. The most telling thing about time is who the real learners are. Some I swore would never make it are still going strong, some I would have never doubted left for reasons unknown, and a very few had to be dismissed for giving in to the dark side.

Monday, May 13, 2019 - 6:40:51PM

I think I’m going to start calling functions one of the following depending on how it is used:

Perhaps this will be enough to get people thinking about the difference without confusing them and causing them to say, “You mean a ‘function’ right?”

Monday, May 13, 2019 - 6:17:14PM

I’m seriously toying with the idea of moving the entire SkilStak business model and IT to an event model and categorizing all the business events that can happen. The entire infrastructure would thereby be one big concurrent event loop. I have been thinking about this for six years now. It was the first idea I had because it solves a lot of important problems:

Something as simple as wanting to see how the business changes over time cannot be done with a pure OOP domain model. You have to bolt on additional auditing processes that take snapshots of business state at regular intervals instead of centrally logging all events that querying them at whatever time interval is convenient for immediate, real-time data.

Why all corporations aren’t doing this is beyond me. The idea of a transaction has been around for a long time. Incorporating the notion of a transaction into high-level business operations is a no-brainer. In fact, we see this with credit card processing today which was forced out of necessity.

When an entire business is built on this model it completely solves supply chain issues that can really inhibit smooth operations.

When you back away from all the dogmatic approaches to business operations you see that all of business is just a series of events with data related to each event. The event-driven model lends itself much more fluidly to a functional operations approach. There are only events and data related to those events. This detaches business execution from any particular object model and de-emphasizes the domain model itself allowing it to more quickly evolve and adapt since actions are not strictly associated with a specific object causing the “existential questions” that have proven the failure of OOP as a paradigm to approach the world.

Monday, May 13, 2019 - 5:04:48PM

A core full-stack engineer pattern of learning has been emerging on its own recently:

Category Description Specifics
Front Web site and applications development. HTML, CSS, JavaScript
Back CLI, APIs, DBs, Commands. Bash, Go, Rust, C, Assembly
Deep Linux workstations, servers, hardware. Mint, Raspi, Arduino, Gooligum

I simply rotate through activities in each at regular intervals.

Monday, May 13, 2019 - 11:49:57AM

I’m reminded of a core conclusion I made last year that any such assistant or agent AI must have solid, real, asynchronous concurrency. Because we are essentially bubble sorting every possible response to any possible text input. This brings up another cognitive parameter we need to give our AI, thoughtfulness. Do we have it respond immediate with the first hit or think harder to look through more possibilities, even all the possibilities. This makes me want to design the cognitive parameters before doing much more work to ensure the system architecture matches human cognition as much as possible.

Parameter Description
Doubt Level of certainty about what the user wants and confirmation.
Thorough How long to search for possible responses.
Attentive How much of a converation to listen to.

Monday, May 13, 2019 - 10:30:23AM

It occurred to me that the future of human interaction may be someplace in the middle between a fully complicated command with 100s of options and completely natural language. What if the most efficient middle path is a specifically defined command set for each base command and action. For example, skeeziks show sessions 2pm on which is human enough, but parseable enough to be easily understood by basic code. I noticed that the date command has been doing this for a very long time.

This approach would not require any machine learning to implement.

It looks like there will be a few base verbs related to how the information will be displayed:

Verb Output Type
list List out as text.
show Implies rich media.
print Print to physical.

The only difference between text and audio with be something like skeeziks quiet and skeeziks talk or skeeziks speak up or skeeziks out loud.

One interesting dilemma will be creating a lingua franca for such things. Other language change noun and verb order but in order to program these things they will all have to follow one basic form of natural language. I’m assuming English. This dilemma is created by organizing the coded implementation of subcommands closer natural language for better consistency and a more sustainable code base as the number of lines grows into the millions for all the possible commands.

There needs to be a standard, solid API for every package of actions, which brings me back to the valid regular expression matching solution I started with last year.

I’ve been conflicted over what to call the thing that contains a number of set responses or actions or skills. It’s just a grouping of regular expressions that if matched execute code that goes with it. The scope is far greater than a command, action, function, procedure or subroutine because a response might be triggered just from casually listening to the activity in a given chat room, for example, when making a game master bot.

I want to stay away from OOP terms like Responder, which I was using before. I want it to be data-centric and practice strict data and action separation to avoid the OOP disease from creeping in. I’m thinking Intelligence modules since that’s what it is, you are literally giving your AI assistant more intelligence, which includes the ability to hear and respond to things including commands and random conversation.

I really like the idea of modeling the entire thing after how our brains process input in general. The way we respond to any input varies substantially depending on the environment and what we did last time.

For example, say I load up three intelligence modules that all have regular expressions that match a given phrase. The winning response would be based not on the order of loading the packs, but what was the last thing you meant. Or, you could change the base behavior or the assistant to infer less and ask for clarification more. In that case if more than one thing matched it would ask which one saying or printing the clarification phrase and ask for which option. If more than three options (configurable) are matches the assistant could say, “I’m sorry, can you be more specific.”

The best part of this approach is that is is 100% flat. There are no verb hierarchies and such and it is 100% language independent. Regular expression strings can be created for any language. Multiple languages could be included in a single intelligence module or they could be broken down by language. The translation layer is regular expressions.

When combined with Go’s ability to dynamically load in-memory modules now, the assistant could make itself smarter by “fetching” more intelligence from the net — as is depicted in so many movies these days.

Monday, May 13, 2019 - 10:02:21AM

Even though shell allows for really easy command action aliases they can become problematic to maintain when porting to a real language. I’m inclined to keep everything simple, just one word for each action with no shortcuts and always enable Bash completion. Now that Windows has WSL2 Bash has become absolutely ubiquitous — and Bash tab completion along with it.

Combined with a text-based UI in addition to a command-line UI and I don’t see why aliases are needed at all. It may be faster to duct tape a shell script that behaves like it has tab completion but the slight additional work is not that bad to go all the way.

If I manage to get concmd even more developed I can perhaps realize the dream of unlimited tab completion at multiple levels that will make sense to a human, much like when filling out search words in the Google search box.

I have one member in particular that I really want to get into this with who is creating a master text assistant API. I so want to get some real time on CAVA.

Monday, May 13, 2019 - 9:21:47AM

GitLab groups provide a rich opportunity to better organize monolithic repos in practical ways that are not too disjointed. I know that having a macrorepo like Digital Ocean has written about are better for some things, but subgroups have been the ideal thing for breaking up an unnecessarily complex and bloated dotfiles repo.

However, when I attempted to apply the same practicality to libraries and modules that will likely have several different language implementations I did notice that having a top level named for the language seems less desirable. Instead, I have moved to having the top level be the main thing and then have subgroups, if not just subdirectory, for each language implementation. This provides one stop shopping for the main thing and then different versions under it.

In retrospect that seems like a rather way to organizing things that I just missed on my first exploration of GitLab subgroups.

Sunday, May 12, 2019 - 1:41:03PM

Realizing I really do need several separate executables:

Planned SkilStak Commands
Command Description
kn All the actions to maintain a KN3 cluster.
knd Daemon with browser-sync, indexing, link checking, and pushing built in.
sk Universal SkilStak client including SkilBots with sk bot; sk admin member administration including session logging, scheduling, and database updates and queries; a full sk admin tui interactive mode; and opt-in evergreen updates with just a single executable.
skd Daemon process with API listener as well.

After working with it for about a month it is clear the SkilStak specific stuff can layer on top of the base KN3 stuff without a conflict. The sk stuff can be included within a cluster of nodes — with the members data being intermingled with the cluster — or it can be maintained entirely separately in another repo.

For example, the main content might be at and the member content at with the <base> tag set in the member information so that it resolves to for the same of local referencing content nodes.

This would facilitate two separate progressive web apps as well:

  1. one for the content (maybe white on black),
  2. one for members (maybe black on white).

This separation would reduce the amount of ignoring going on in the index creation as well as any content put into the members app that is playable for the sake of illustration. For example, we don’t need 60 different copies of the platformer game (even though the plan was to reduce that into one tutorial covering it all).

This has been good learning experience because combining them into one might be just the right size for many would be mentors out there, but others who create larger communities could separate cleanly.

Sunday, May 12, 2019 - 11:52:26AM

Great interview with Sam Esmail and the gang.

Sunday, May 12, 2019 - 10:43:28AM

After a few days of research into text-based user interface libraries and options with Rust and Go it is clear that Go has an overwhelming lead over Rust on that front — probably because of the volume of developers involved in coding Go terminal applications right now. Rust lacks any good way to create terminal applications that take in field input as is provided by Tview in Go.

Rust has a far superior universal configuration file data model in Serde, however, making it ideal for command-line interface applications like jq or a replacement for the gawd-aweful yq. We have created a repo called panq to start our initial steps into creating a universal version of jq that supports all of jq’s filtering language but can read any configuration file format by leveraging the extremely well thought-out Serde data model.

Sunday, May 12, 2019 - 9:10:05AM

Some guy polishes up a nice blog post attacking the idea of Strong Opinions, Weakly Held — which came from Palo Alto research labs, the people who gave us PCs (GUI), the Internet (Ethernet), and Object-Oriented Programming (Smalltalk) — and epitomizes everything right and great about SOWH by doing the exact opposite:

That is practically a perfect, objective list of every reason why SOWH is critically important to science and progress.

I admit this is a real sore spot for me. I am sick and tired of people demonizing strong debate as “toxic”.

I initially liked his idea of suggesting level of confidence but I would rather everyone save time and not even speak unless they are more than 70% confident in their strong opinion, which is the whole point. I have always believed that we need to avoid starting with conclusions.

It might have been a rhetorical device, but the title, “Might Be”, is the author not even following the best part of the SOWH idea, which he goes on to embarrassingly confirm by not even getting the term right or mentioning it’s origins at all. That is the weakest premise for such a blog post.

What this blogger failed to do was the very thing behind the idea of “strong opinions”, which are formed after much personal research. They represent a sound conclusion you can confidently get behind because you have not lazily done what everyone else is or someone told you to do. You formulate your own opinions using as much scientific research on your own as you can.

This blogger apparently didn’t even Google the term. If he had he would have seen the raft of information explaining this and its origin. His opinion is the epitome of a weak opinion because there is zero significant research about the foundation of the term itself. All the other conclusions are automatically flawed because they are based on just plain incorrect assumptions.

The fact that he used a weak opinion in the title just confirms how little he understands that concept at all.

He goes on to slam anyone practicing SOWH — as he defines it — as being “toxic” without realizing that he is doing the exact same thing. He might try to cover it up, but to suggest that everyone practicing actual SOWH is “toxic” and a bully is his passive aggressive way of doing exactly what he claims is bad for everyone.

His very challenging of the SOWH idea is itself an attempt at SOWH.

Michael’s entire blog is a perfect, objective example of why we need SOWH and always have. Pretending you are not practicing it in order to excuse your own lack of research and pretending to be “the good guy” is not only disingenuous, it is wrong and bad for society.

Do your research. Own your opinions. Debate them strongly, loudly, and politely. Volume alone is not impolite. Attack the idea, not the person. Add “that’s a fair point” to your list of responses. The world needs more of that, not less.

Saturday, May 11, 2019 - 10:09:08AM

Chromebooks will now all be full Linux systems — finally.

Saturday, May 11, 2019 - 10:04:55AM

My wife the artist has discovered an amazingly simple way to post to Instagram from a laptop (now that we have all gone to flip phones).

Saturday, May 11, 2019 - 9:24:17AM has added the ability to share a runnable Bash script through a web site. That is pretty impressive.

Saturday, May 11, 2019 - 8:34:31AM

So telling that Netflix decided to drop the Adam Ruins Cars episode. I think it is my favorite having been a pedestrian and bike commuter my whole life. The car literally industry destroyed America by demonizing “Jay Walkers” in the 30s with a massive ad campaign giving the rich with cars priority over the roads and fundamentally changing the landscape of all of America forever. A car-based society is one of the “biggest cultural mistakes ever made in history.”

Also noticed that Adam uses a flip phone. We just traded in our “smart” phones yesterday for a flip phones. After learning all the facts about them it is nearly impossible to keep them. I have noticed the smartest and most productive humans I know and look up to don’t have them — on purpose. I won’t lie, I laugh out loud when I see people pull a big battery-sucking “smart” phone out of their pocket. There’s an objective case against them now with substantial evidence even without the very real science demonstrating how much 5G is going to microwave everyone to death.

Saturday, May 11, 2019 - 7:10:53AM

Need to make sure and include why to always have a three button mouse when using Linux. Cut and paste — traditional UNIX style — is ridiculously faster.

Friday, May 10, 2019 - 6:28:36PM

So sad to hear about Woz U. Woz really wants to do the right thing, but honestly, has no idea what he is doing in the education space and has to depend on people around him, some from shady backgrounds.

In December 2018, the board considered and dismissed a complaint over the school’s quality after a report by CBS News claimed the school provided out-of-date lectures and had typos in coding materials.

Course materials sometimes just linked to Wikipedia pages, one student told CBS News.

“I feel like this is a $13,000 e-book,” the student said.

The complaint written up by the paper is a perfect example of everything that is wrong with the perception of what education should be. The fact that the materials would be called out for having typos and referring to Wikipedia just shows how far off base the expectations are.

It is as if trying to promote independent learning and use of existing materials on the Internet is actually a bad thing to these people. This is the polar opposite of what America and the world needs related to such education.

The only significant criticism is that the “mentors” has very little experience. That is huge. The whole point of mentorship is that someone doing the mentoring actually has real experience. I imagine they just could not get people who had experience for all the reasons I have blogged will keep the SkilStak learning model so difficult for others to do.

One thing is for sure, this story absolutely confirms the importance of being up front with people about empowerment and not certificates, degrees, and specifically getting a job. My learning community is not a school and never really has been. Schools don’t work. When a student lands a job coding for a solar energy company at 16 it isn’t an expectation, but a nice benefit and result.

The biggest problem with the “school” model is people approach them with the expectation that the school is going to do most of the work to get them their jobs. That some magic “school” ferry is going to somehow ease their burden of doing actual work themselves.

I remember one person who was caught up in such a situation with a bootcamp and when he reached out to me told me all the things wrong with it, all the promises they broke. During the many hours of advice I gave this person for free even before considering acceptance into our community I said, “Do you even have a LinkedIn profile?” Where is the work you have done online? Have you reached out to recruiters and tech conferences?" This person did not do any of the minimal things required to get a job, showed no internal motivation to produce actual output and barely knew what LinkedIn was. Suffice it to say SkilStak was not a good fit.

It blows me away how lazy most people are and how much they want to find blame with everyone else rather than take responsibility for their learning. The asshole calling out Woz for typos and referring to Wikipedia is just one such person, but the fact that it closed down and was not able to fulfill any level of its commitment also contributed.

Friday, May 10, 2019 - 11:12:55AM

What if I taught terminal applications development with TView before I taught web applications with Vue? That would make the order something like this:

  1. HTML / CSS – custom web site
  2. JavaScript DOM – custom web site
  3. Bash Command Line Scripts –
  4. JSON / YAML – flat file database
  5. JavaScript Phaser3
  6. Go Command Line Utilities
  7. Go Terminal Applications
  8. Go Web Services / Web Sockets
  9. Vue Progressive Web Applications
  10. SQLite / PostgreSQL
  11. PIC Assembly / PIC C – Gooligum
  12. GNU C – kernel module
  13. Go Concurrency
  14. Rust System Utilities
  15. Rust 3D with SDL2

Funny how some things become obvious after making other decisions. For example, the most empowering tech to teach anyone right now is web technology, but the second most powerful is Bash terminal programming on Linux, and it therefore follows that after learning how to make simple command line scripts the next thing should be text-based terminal applications. In fact, it is actually more important to do that latter than any graphical app if you measure completely by level of empowerment for the person creating the thing. Learning to make Vue apps is empowering because it provides a means of producing apps for others (those who are bound to the graphical world) but a terminal master wants — above all else — to quickly and efficiently produce text-based terminal applications that fit into the masters daily workflow.

It took realizing that I actually need to make such an app for member management and scheduling more than I actually need something that needs to be on the web site since my members all have their own copies of the schedule already and the need to show others what time slots are open is secondary at best.

I don’t really need more members. I need to manage the members I have even better.

Friday, May 10, 2019 - 10:16:27AM

Ugh. I always forget that you have to git rm after you add something to .gitignore so that it will start to ignore it. It doesn’t remove the file, just the memory git has about it. git check-ignore FILE is useful for validating.

Friday, May 10, 2019 - 9:55:25AM

Microsoft is putting IE into Edge forever removing any need to care about compatibility. The need to compile modern JavaScript (ES6) has completely vanished unless you are using really new things, like the pipe (|>) operator.

Friday, May 10, 2019 - 9:51:26AM

As machine learning goes mainstream — particularly running on devices instead of in clouds — ubiquitous languages will slowly but surely take over Python as the leading languages.

Thursday, May 9, 2019 - 6:32:49PM

I just learned one of my members has the same birthday as — the one and only — BOB ROSS! Case anyone was wondering, I was actually born on the same day as the first programmer in history, Ada Lovelace.

Thursday, May 9, 2019 - 6:06:58PM

Cure song came up on Spotify. It’s amazing the influence that band has had on multiple generations. Last night watched the entire Cure induction into the Rock and Roll Hall of Fame introduced by the lead from 9-inch-nails. What an absolutely amazing experience. They so completely deserve it.

Thursday, May 9, 2019 - 5:30:42PM

Windows Build really confirms and validates the movement back to terminal workflows. I first detected this when three years ago a member asked to learn to write a Go systems monitor terminal utility quickly to demonstrate Go skills. The DevOps movement that is taking the world by storm fundamentally depends on quick terminal interfaces. At the same time, executives are realizing the many graphic apps they have created are more expensive to build and maintain and are extremely inefficient.

I predict this movement will only continue as more and more “regular” people realize the power of a text interface as was also demonstrated with the Microsoft assistant standards that are emerging to streamline communication and hand off between text-interface assistants.

The forces driving assistant innovation and the conversational text interface are closely related to the same forces that are driving the terminal workflows from DevOps. It’s a text-based, command-line world.

In many ways this is the same thing that happened with sceumorphic design dying and being replaced with flat design. It was like the entire world realized minimal was better, that simply designs were faster and more effective. Google followed on that with Material Design further standardizing the interface.

Considering the level of richness now available in all terminals — including Windows — with the emojis and colors and UNICODE support and quick refresh rates it is a natural conclusion that terminal workflows will simply continue to dominate.

This is the fulfillment of the need outlined by Elon Musk for the fastest possible interface connecting humans to their cybernetic selves online through their keyboards.

I particularly love that this means full terminal support is possible all over the world enabling things like TermBox and GoCUI — and I just barely found TView which is freaking amazing!

The age of terminal masters has once again returned!

[By the way, Python can never dream of ever creating terminal text applications that are distributable and universal like this. Yet another reason Python really, really sucks.]

Thursday, May 9, 2019 - 3:55:36PM

Oooo, another Kubernetes beginner tutorial.

Thursday, May 9, 2019 - 3:01:08PM

Realizing that the reason “Smart” Phones are horrible is not just all the privacy violations but mostly for all the same reasons that Python is horrible. Both do a lot of things, but not of them well. It is always better to have the right tool for the job instead of a bunch of hacked together less-than substitutes.

The last point I was pausing to consider was photos. I was wondering if I could find an extremely powerful camera in a pocket size and sure enough there are hundreds all with far better capabilities than anything any phone offers. Sure it means I can’t immediately post to Instagram giving away all the GPS information embedded in the photos and videos — but that is exactly what everyone should want! Take a moment to digest what is happening rather than posting everything live the moment it happens. Exercise a modicum of patience and responsible editing before broadcasting it all. Be present with the people you are with rather than constantly performing for the world. These are not hipster counter-culture declarations, they are well-needed conclusions after tons of objective observation.

Thursday, May 9, 2019 - 2:44:42PM

Python’s day of TensorFlow domination is over and I called it exactly is it is panning out. TensorFlow.js is blowing away the Python version, which makes sense because Electron runs off of Chromium which is a web technology.

Here’s another video about binfmt_misc for setting up Go, Rust or any other compiled language as a scripting interpreter. I love this guy’s attitude about Python. “Why would you ever use Python for anything?” The entire development world is coming around at the same time misinformed surveys show Python as increasing in popularity.

Thursday, May 9, 2019 - 2:31:04PM

Rather than pausing for applause for things as simple as cut and paste in the “new” Windows terminal — that finally brings it up to par with Linux terminals that have existed since the 90s — Microsoft should be on their knees at the Build conference begging the world for forgiveness for their absolutely brain-dead decisions that took them until 2019 to have a command line terminal that is minimally bearable. Microsoft should be so ashamed of themselves! All this Linux “enlightenment” is just Microsoft finally realizing how stupid and counter-progressive they have been for two decades. Sorry Microsoft, it’s too late for you. The world has finally realize what I — and millions of other actual developers have known since 1998 — Linux is the only operating system that matters for all the reasons you now openly acknowledge. Congratulations on finally catching up you remedial piece of corporate garbage.

Thursday, May 9, 2019 - 11:10:12AM

I am remarkably ashamed to admit I did not realize that !! in vi is exactly the same as :.! (which I have been typing out until today). Don’t be me. Use !! and your best Bash functions and vim utilities you have compiled in Go or Rust and shun vimscript forever. Bash and a compiled language will always be better than anything VimScript can ever offer and you save learning yet another scripting language just to do things with Vim.

Thursday, May 9, 2019 - 8:12:04AM

I’ve decided that there is no need for people to learn stuff that has been replaced with other stuff. I’ve debated with myself a lot about that. But my mission and mantras of “empowerment first” eliminates the need to waste time on such things.

“This is a thing, but don’t do it.”

“This is another thing, but don’t do that either. Just know about it.”

In tech I could spend hours just teaching all the stuff that exists that shouldn’t be done or has actually been flagged as dangerous and bad.

Instead I will 100% focus on well-established best practices and recipes. Then, when someone encounters something that is bad it will look odd and out of place and when the person researches why they will discover the bad stuff on their own.

People who claim that to understand a thing fully you have to know all the bad parts and stuff that has been removed or deprecated are not focused on empowerment as their primary goal. They waste the time of people learning from them for no other reason than to say they know about everything when such is simply unnecessary.

Some claim these things are what get you through a tough coding interview. To which I say, don’t do coding interviews. They measure nothing that is relevant to your productivity and performance on a team. Companies that require them need to be told you refuse so they stop using them.

Let’s take the very specific case of var in JavaScript.

Everyone uses it all over the place even though no one needs to any more. Safari was the latest of the desktop browsers to add it and did so in September 2017, more than two years ago.

Combine that with the fact that most JavaScript is compiled these days and that no one should ever use JavaScript to produce content that must be search indexed and you see that var is dead. I wrote up that long explanation of why, which I will continue to do, but in doing so I realized that all I really need to say is “use let and const and arrow functions” and I don’t even need to mention the other stuff until we run into it. If so I need to write up everything about .prototype and when and why not to use it all all. But I could save a full hour just by explaining the class keyword instead.

I’ve noticed that all the major brains involved with JavaScript that I really care about are already doing this. In their demos and presentations it is as if function never existed in the first place. I take stock in that fact when complete hacks like Kyle Simpson try teach others otherwise. He is such a flaming example of why people who just teach should never be hired and that mentors who have deep industry experience from actual work are always better.

Wednesday, May 8, 2019 - 10:42:12AM

I have to say the JavaScript Weekly newsletter is really pretty essential to keeping up on stuff easily in the most insanely quick-evolving industry of web development. Here are some things really worth a look from the last one:

I really appreciate the work these guys do (despite the advertising) to curate what is going on out there.

Wednesday, May 8, 2019 - 9:18:47AM

Wrote YAML vs TOML vs JSON vs XML after realizing that YAML was a bad choice for maintaining my member database. I was convinced I would only be editing the data by hand. Silly me. I captured the lesson learned in that content node.

I realized how completely horrible yq is. I’ll give you one guess why — Python. jq is so fast it makes sed look old and slow. yq incurs all horrible startup and run-time slowness Python is so bad at causing a simple bash for loop through all the records to crawl. I’m sure Python fanboys would excuse their way out of this with attacks on my duct tape approach but none of would hold because it works with jq proving how insanely stupid Python is for this sort of stuff. Python is actually a horrible duct tape language and goes directly against the UNIX philosophy.

Tuesday, May 7, 2019 - 8:50:28PM

Getting really excite for SELF. Can’t wait to show off my crew to the veterans — including Eric S. Raymond himself.

Tuesday, May 7, 2019 - 2:54:06PM

I hereby declare that the PGV stack shall be PostgreSQL + Go + Vue. Many are using it but don’t have a name.

Tuesday, May 7, 2019 - 1:57:09PM

PCRE (Perl Regular Expressions) are fully supported under GNU grep. It’s official. Perl is 100% dead. Bash has overwhelmingly taken the place of Perl (not Python).

echo '   foo bar' | grep -i -Pe '\s+fo+\sb'
   foo bar

The -P forces -e to be evaluated as the supremely powerful PCRE regex format.

At this point there is overwhelming objective evidence using Python for almost anything is just stupid.

By the way, here’s another reason to drop Mac like the shit it has become:

“For posterity, only GNU grep includes the -P option, and it’s not universal. FreeBSD’s grep is based on GNU, but the documentation states”This option is not supported in FreeBSD“. In OSX, grep is also based on GNU, but the -P option isn’t even mentioned in the man page. And on other unix systems whose grep is not GNU, you’re unlikely to see -P anywhere at all. If there’s the remote possibility you that portability may be useful to you in the future, I recommend avoiding OS-specific options like this.” – ghoti Oct 26 ’15 at 14:22

Not only has Apple demonstrated how clueless they are about real development when they got rid of the esc key and replaced it with a shiney, battery-draining, moron-bar, but they are both unaware and unwilling to keep their BSD based operating system up to date and will probably replace it entirely with iOS some day.

Monday, May 6, 2019 - 5:37:27PM

Need to remember to add weekly historical logging of vip.wpm

Monday, May 6, 2019 - 5:10:56PM

Really need to make a Phootsies tribute game to Footsies in Phaser 3.

Monday, May 6, 2019 - 11:55:46AM

Banks are such massive fails on so many levels. Just spent almost two hours working out stuff that was all their fault. Mostly because the AutoPay in Bank of America Online is not actually auto pay (which requires a form and such). I had to deal with account validation twice because the departments have no visibility into one another’s systems.

Banks have massive technical debt and they will slowly but surely fail. Do not use a big bank. You just incur all of their technical debt when you do.

I am not actively researching the many alternatives to traditional — broken — banking. Will report back.

Monday, May 6, 2019 - 9:24:56AM

I keep going back and forth on it, but today I’m putting Python last on our list of primary languages. After doing a full analysis of the future of enterprise machine learning I’m convinced Go will come to dominate the enterprise machine learning space. Plus chances are people will be learning Python elsewhere if anything.

Sunday, May 5, 2019 - 11:49:14AM

I’ve realizing that as much as I consider us all a community, there is a real comparison to a team as well. Instead of competing for sports, we are competing for jobs and opportunities to make the world better.

This coincides with my desire to start taking my members to different conferences and even coding and hacking competitions.

This is consistent with what has naturally been happening by having a limited number of spots.

It also brings me to make some radical changes to the VIP scoring system. Most importantly I am going to add a significant penalty for every week you don’t come no matter what the reason. You could be sick and dying of flu and need to have it off, I get it. But if a sports championship was that same week you would find some way to make it work. That is the expectation I am building here.

I want members to become as paranoid about losing physical training gains as I was as a Triathlete wondering how soon after a head cold I could run again to maintain my fitness.

How is maintain your technical ability any different?

Sunday, May 5, 2019 - 11:02:19AM

For some reason because I’m Mr. Nice Guy parents trample on me when I’m the guy giving their child untold opportunities that will last them through life. The football coach is just going to give you permenant brain damage.

For the sake of these kids I am done being nice about this.

You are either on my team or you’re not.

Why do sports coaches get to act all rude and stern and kick people off the team for missing practices and games and such but when a teacher holds a student to the same standard they are considered mean.

Or worse, why do parents call me and inform me that because of the obviously understandable conflict with a sports event that I should roll over and not give them any consequences.

“So you’re picking that team over this team, right?”

That’s exactly what it is and my expectations are even greater for my team than any fucking sport. Participation on my team is objectively better for my members than any sport.

People need to fix their broken priorities. Winning a state championship in any sport is nothing compared to landing an engineering job for a Solar energy company at 16.

I’m done being nice about it.

Stop disrespecting my team.

Make your choice and own it.

I want people dedicated to their learning here more than any sport. I’m not a touchy feely “after school program”. I’m your fucking future and you should start taking that more seriously than anything else.

The next time a parent “punishes” their child by preventing them from coming to SkilStak because they enjoy it so much. I’ll just ask them to please leave. I don’t have time to fuck around with parents who do not understand the importance of their child’s membership on my team. Practice for a sport isn’t optional. If you miss you get kicked out. How is that any different?

Did that sound rude, stern, impolite, bordering on inappropriate? You know, like most football coaches?

Yeah, see, you did it just there. You judged me. You allow the football coaches to get all passionate, but for some reason you judge the guy changing your child’s life and opportunities. Fuck you. Go destroy more of your kids’ brain cells while me and my team work as hard as we can to save the world from sports-fans like you.

Sunday, May 5, 2019 - 8:47:57AM

I really wish I had kept track of every hour over the last six years creating the learning platform, technical lab, applications, automations, and original content for SkilStak. As I approach finishing the new scheduling and calendar system I realize if I was putting a dollar value on it to sell to a company it would be in the $3000 range.

Simply put there is no way I could do this without

I always get contemplative on Sundays.

I suppose this confirms how overly hopeful I have been that others could reproduce what I’ve created at SkilStak and apply what I’ve learned themselves. I keep dreaming that someday, somewhere others will want to independently do what I do. They just won’t. Those who want to won’t have the experience, and those with the experience won’t want to — they can make so much more money someplace else. That’s just the reality. The best I can do is chronicle my discoveries for anyone out there who might want to glean what they can from it.

Too personal? Maybe, but when has that stopped me before. It’s who I am.

Saturday, May 4, 2019 - 10:30:23PM

So completely fortunate to randomly happen upon Brian Will and his Object Oriented Programming is Embarrassing video. It is so encouraging to hear someone so young have the courage to call this shit out for what it always has been.

Saturday, May 4, 2019 - 8:54:45PM

After the security breech on GitHub and GitLab from people having ridiculously bad passwords the need for me to formalize my learning material about KeePassXC seems to have an even higher priority.

“As a result of our investigation, we have strong evidence that the compromised accounts have account passwords being stored in plain text on a deployment of a related repository. We strongly encourage the use of password management tools to store passwords in a more secure manner, and enabling two-factor authentication wherever possible, both of which would have prevented this issue.” (Kathy Wang, Senior Director, Security)

Saturday, May 4, 2019 - 2:21:01PM

Just discovered having BrowserSync running on the local LAN makes an amazing thing for students to connect to and get my real-time updates to their session notes. I remembered that they can even control the strolling for both of us at the same.

I am going to run it as root to drop the :3000 to make it even easier using Avahi so they just go to sk.local when they arrive.

Saturday, May 4, 2019 - 1:50:50PM

May the Fourth Be With You!

Saturday, May 4, 2019 - 10:27:05AM

Confirmed Discord has less than one-second lag with doing screen sharing. Good to know for remote mastery sessions. The video and audio capabilities of Discord are far better than Google Hangouts and with less privacy concerns. (I trust Discord more than Google.)

Saturday, May 4, 2019 - 9:11:42AM

If anyone needs any more evidence that JavaScript is a full software development language then look no further than the latest Babylon.js. That demo is under 200 lines of code.

Friday, May 3, 2019 - 9:11:24PM

Had a great discussion with a member who got into Challenger Early College school about internships and the need for good people to engage in things that could be risky in the wrong hands — such as background investigations and criminal records reporting.

I had a recent conversation with someone directly connected with the criminal background check industry who informed me — among other things — that the criminal record systems of each state and even county are not connected. I might be a privacy advocate, but the idea that a murder could move into another state and go unnoticed simply because there is no way to run an efficient check is pretty damn scary. There must be a centralized criminal tracking system to ensure public health. That’s not really up for debate. How such a system is used — or abused — is the question. Given the volume of criminal activity in Charlotte and North Carolina (highest murder rate for some years running). This is a critical need that could directly benefit from information machine learning and more.

Reading my previous blogs about this topic really show I am able to change my mind when presented with new information. This is one such case. It is paramount we identify the good people and corporations and support them in any way we can so that the bad ones don’t have the power.

The same goes with something like a bad teacher in a school. Rather than rooting out a bad teacher, why not focus on making the good ones much more qualified so that the bad ones can’t compete and the laws of attrition and supply and demand correct the problem on their own.

Friday, May 3, 2019 - 5:07:56PM

So proud of the professional Good to Gig web sites these guys are putting together.

Talking about the ChatBot, ChatHub, and ChatAPI projects that has been brewing here for about a year and realizing even more how the future is not graphic interfaces but those based on text input and rich-media responses (such as are possible through Discord or Slack or even SMS).

I’m more convinced than ever that all the “front end” work is actually going to become less and less important as more of the world realizes the efficiencies of intelligent bots that can be interacted with through text interfaces. I mean, who wants to swipe and learn some particular app interface when they can just text what they want to happen — even speak their text into their phone.

I’m absolutely sure the future of modern IT systems in text and chat interfaces. Graphics apps are not only more expensive to build and maintain, but take much more time to execute on. Building a bot that gets people what they need fast takes a fraction of the time. This economic reality will drive further advances for chat and text interfaces.

Therefore, I’m preparing my members to blow the doors off of those who see their projects with a centralized, data-drive, stateful chat hub speaking an authenticated JSON API and integrated into every single text interface with bridges for Discord, Slack, SMS, Web, and terminal command line interaction.

Friday, May 3, 2019 - 10:23:37AM

Reading through Front End Masters initially leads me to remember that becoming a full stack engineer only requires a fraction of what is required to become — and maintain mastery — as a “front end master.” That specific branch is way too volatile and most of it is simply unnecessary. Some initial reactions:

Masters my ass.

It is mostly some guy’s notes and bookmark list, which is absolutely great, but don’t fucking call it the Front End Master’s Handbook. Arggg.

If anything the entire document is objective proof of why becoming a full stack engineer is way more empowering that just front-end.

The entire document demonstrates why systems administrators and operators roll their fucking eyes at “front end engineers” all the time. There is even a “Learn Computer Science Through JavaScript” section.

There is a lot of great information in there. But none of it is curated in any way. It is like they are almost afraid to have an opinion on anything, and yet they do, because they omitted Vue.js.

I did like the listing of accessibility tools. I’ll have to look into those.

The most hilarious part was them going off on the “full stack myth” and then including almost everything considered a part of full-stack development.

I love that “documentation generation tools” are separate from “static site generators”.

The compliment them on their attempt to create a knowledge base. The very idea confirms the need for a Knowledge Node Neural Network but these people would never buy in fully to the idea. They are too wrapped up in projecting their own “mastery” which is a cautionary thing for me and all my reference to mastery as well.

Perhaps one of the reasons I hate front-end so much is because the entire industry and technology is slowing down humanity. People tout graphic interfaces as making everyone’s lives better — and that is true for most — but the world would advance so much more quickly if more of us dropped our addition to graphic interfaces and returned to terminals. I can’t even suggest such things to most people because they immediately look at my grey beard and peg me as a backward neo-Luddite, but it is objectively true.

One thing is for sure, no actual innovation is going to come from the front-end industry. The entire industry, discipline, and community are as shallow as a spinning, animated logo. It’s like everyone attracted to them are like, “ooooo shiny.”

[See, this is the reason I need to follow my rule of not opening email spam — especially in the morning.]

Friday, May 3, 2019 - 10:06:38AM

Pretty good article on Imposter Syndrome, which I was able to identify in several of my members. It seems like there is a spectrum of self-awareness the ranges from full Dunning Kreuger to Imposter Syndrome.

I will say this, I’m sick and tired of reading about Kyle Simpson. The guy is a arrogant hack with near zero work experience — yet he keeps trying to get his name out there in front of everyone arranging interviews with different forums. It must be working because his name keeps showing up in the blogs and writing of novice developers. He’s like the Gary V of JavaScript.

I lost every shred of respect for the guy way before I realized the fiasco with his release of the completely horrible You Don’t Know JavaScript series. He claims to make it available for free and points to the GitHub repo, but then attempts to counter the exact Creative Commons license by rather strongly explaining how no one should ever redistribute his “open” content in any other form than a GitHub repo because that is how he makes his money, by selling the paper and digital copies through a vendor he pushes. He doesn’t even give a fuck about the impact that has or all the people in countries that cannot afford it and don’t have the skills to use GitHub repos. Just absolutely clueless.

See, the actual people you want to learn from aren’t the Kyle’s and Mr. Rob’s of the world, they are the technologists who are the best at what they do. Anyone who would claim to have your best interests at heart would openly acknowledge this and push you to study the work of these people and seek others out.

That is the beauty of free software. We get to see and digest and learn from the work of countless others who actually are good at it rather than listening to any talking head or teacher who warns and scolds you for not following what is in the book.

This is what we see in the Master Class series becoming popular and well advertised right now.

Learn from the masters, not the hacks and book writers, which reminds me I need to read the Front End Handbook to consider adding it to our list of resources.

Too often the number of books and conference talks you give is inversely proportionally to the value of what you actually have to say. Learn by doing. Don’t talk about it, and then find someone who’s the best at doing it to learn from, but never forget mastery is fluid.

My mission is and always has been identifying the best out there and facilitating learning from those people as well as me.

[I find myself feeling like John Oliver more every day. What an amazing human being.]

Friday, May 3, 2019 - 9:36:10AM

Over coffee I randomly remembered now intent I once was on moving everything in my business workflow into voice commands. I was hopeful that conversational user interfaces would indeed amount to more than they are today.

Then I realized that for any conversational user interface system to ever emerge it would have to involve some substantial machine learning using at least my voice and a massive amount of voice messages. That is exactly what Google does.

That was enough to dissuade me from promoting any form of voice-drive UI, but not necessarily text-driven.

These last three months of very intense text-interface usage have solidified my personal conclusion that it actually isn’t ever going to be voice but text is the key. Voice is just one way of entering text, but for most technologists a keyboard will will always be the fastest output interface. These things might seem obvious to others, but I was challenging the idea.

Take for example all the special characters required to code in any language for the foreseeable future. Those characters have no spoken equivalent. Try telling your Google Assistant to type an email address. It can’t. This is critically disabling and — at the very best — could only be addresses by establishing a one syllable sound for each one, “hash”, “bang”, “splat”.

Still imagine a coder speaking those things into a device. As Elon says about thumbs and a phone, “It is ridiculously slow.”

So no, maximum empowerment will never come from a voice input interface. More and more simple tasks and actions will become possible (like setting alarms now), but the keyboard as the best human interface isn’t going anywhere — ever.

Maybe someday the “neural lace” Elon envisions will be able to have us think the letters as we look at the screen and imagine the next word of character to appear making it happen almost by force of will. But that is exactly how muggles describe people today who’ve perfected a terminal master workflow.

The laws of Essentialism mean that I don’t waste another second on anything to do with any conversational UI, but should foster as much text input as possible. This is the thought behind Slack and Discord tricking everyone into using a command line interface as people make bots for everything.

Thursday, May 2, 2019 - 10:05:13PM

Every time I read a StackExchange rejection for “having opinions” I smile and realize how completely fucked up that whole approach is. We need more people with strongly researched opinions to voice what they know, not shut down an opinionated exchange by silencing them. No one learns anything that way.

Basically, if you have no opinion you either aren’t paying attention or are too lazy to form one.

Everyone should have strong opinions about their choices in life. Otherwise what’s the fucking point?

Thursday, May 2, 2019 - 8:05:23PM

Just received great news that one of my members received a $60,000 scholarship! So happy for him.

Thursday, May 2, 2019 - 6:53:26PM

I’ve decided emojis will be a big part of the Easter Eggs I have planned for after I finish the customized schedule and calendaring and porting all the content from the old version. Content in the emoji sections will unlock points throughout the site and unlock other fun sections.

Thursday, May 2, 2019 - 6:41:36PM

Cafe du Monde is the best coffee for techies because it isn’t decaffeinated and yet doesn’t blow you away with the jitters — even black — because the Chicory reduces how potent it is. I swear.

Thursday, May 2, 2019 - 6:33:52PM

I really need to submit a merge request for pandoc that has an option to just convert any string on the command line into an auto-linking slug that uses the exact same rules pandoc uses internally so there is no missed guessing. It could even detect stdin and convert each incoming line for bulk conversions.

Hell, if the request gets denied I’ll just fork my own and use that instead. It is a really reasonable request.

Thursday, May 2, 2019 - 5:29:18PM

Remember this? I do.

Thursday, May 2, 2019 - 1:34:22PM

Realizing only the guided learning projects need the following sections:

In fact, some general types of content nodes are emerging:

General Types of Content Nodes
Node Type Description
Recipes Descriptions in step by step form that fufill a specific need. These have been popularized by O’Reilly’s many tech books with this title and the responses to Quora and StackExchange questions.
Tutorials Guided learning projects with specific steps, prequisite tasks and other projects, and references.
Tasks Specific tasks that are slightly larger than can be included in any specfic tutorial or recipe.
Terms Terms and concept definitions much like in a glossary.
Info Stuff like prices and policy.
FAQs Specific questions with specific answers. This often overlaps with Info.
References Lists of links to other content nodes or places within them.
Logs Things like blogs and news and change logs.

Thursday, May 2, 2019 - 10:57:18AM

More evidence Emacs is fucking brain dead. Some idiot thought naming the application “GNU Emacs 25 (terminal)” was a good idea. It’s not. After installing it to review that status of the Emacs I noticed that my normal muscle-memory to start a terminal was inhibited by the fucking Emacs application coming up first in my system search (because of the unnecessary and inaccurate “terminal” in the name). The fucking application that comes up isn’t even a terminal application, it’s graphical GTK. I swear if I knew who made that decision to put “terminal” in the name I’d seek them out and publicly shame them as much as I possibly could. Yeah, I guess I’m a bad person. Don’t fuck with my terminal command assholes.

Thursday, May 2, 2019 - 10:39:11AM

Moving to the use of gerunds was the best writing decision I’ve made in the recent past for Combined with adding the nouns related it centralizes concepts so much better to be found more easily and makes them much more relevant. For example

Using plurals of all nouns has somehow made it easier to write and read as well.

This has really organized this organic style of writing even more. Definitely a tip to include in any sort of book later describing how to follow this method.

I still have to many nodes to port over and even more to still write, but I have never been more confident this home-grown system of mine can support the weight of 1000 or more content nodes as I continue to add more to it.

Thursday, May 2, 2019 - 10:17:02AM

Wife just had to come in from the smell of the natural gas from our backyard. Hasn’t made it into the house yet.

Thursday, May 2, 2019 - 10:02:16AM

Pretty major gas leak at the crosswalk on Beaty near our home. I walked up to see if maybe all the emergency vehicles were to deal with yet another pedestrian being hit, but the smell of natural gas just overwhelmed me. They really need to block it off.

They just started turning people away.

Moved the van out so I can make it to teach.

Wednesday, May 1, 2019 - 7:53:47PM

Now that I’m doing more with Rust I am even more proud that I created the TOML logo. It’s the small things. By the way, the Rust configuration file format handling and serialization is absolutely amazing, best I’ve ever experienced. It’s a solid case for modularization and abstraction the right way.

Wednesday, May 1, 2019 - 5:48:15PM

Yeah, I really need to switch Oracle back to Eightball.

Wednesday, May 1, 2019 - 12:37:47PM

Reminded of and need to look for more Gig Economy sites for members to get ready for. Really would love to see (or start) one just for very advanced interns.

Found this from Inc, magazine but Inc. is notorious for just plain bad information.

I really feel strongly the most important connection to make is with a specific recruiter or contract firm in person rather than these impersonal sites. This isn’t hiring an Uber driver we are talking about.

One thing that I really need to add is pushing contributions and participation in open-source projects out there. Participating on such projects is a huge vetting process. Significant contributors are virtually guaranteed work anytime, anywhere. Problem is, my members might be really sharp compared to their peers, but even my best simply don’t have a lot of time to work on open source projects. So many are so embroiled in the traditional school approach that they don’t have a prayer of landing anything but a great internship compared to the full-time 10xers on a or

They are more than qualified for more small to mid-sized tech jobs, however.

Wednesday, May 1, 2019 - 9:39:37AM

Sarah Drasner just joined Netlify as Head of Developer Experience. Previously she was in charge of maintaining the Vue documentation. She is one of he most amazing and influential developers and presenters — not to mention React defectors — and now she is bringing all her talent to Netlify and JAMstack, which got $48 million in series B financing last year and held — I think — the first JAMStack conference.

I don’t think I could get a bigger confirmation of the relevance of what I’m teaching everyone here. There is simply nothing more powerful than the JAMStack approach on Netlify. There are probably fewer than 100 people in all of Charlotte who even know what it is.

This is why scanning Twitter regularly and following the right people in tech is so important. You don’t need to trust or wait for some biased survey to get a solid feel for where the industry is going. This isn’t about fear of missing out. This is about survival as a technologist.