Blog - January 2019

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

5:47:08PM, Thursday, January 31, 2019

Really enjoying how this GemSpirits™ (their name) game is shaping up. Nice foray into homemade tile-mapped worlds.

✅ create a Discord Projects category
✅ create a #gemspirits channel

One ongoing dilemma is how much game art to let them do. Frequently it is the creative element that makes coding really enjoyable, that hooks coders because they see their creations coming to life. But obviously there has to be a lot coding as well. Balancing the two is definitely an act of educational skill that I’m constantly working to improve.

5:33:12PM, Thursday, January 31, 2019

Typical Job Posting

Typical Job Posting

Sometimes a job posting is so good at illustrating how phenomenally clueless most organizations are. I’m not being mean, just real. I think my favorite part of this posting was that it is “part time”, which is code for “one hour shy of a 40 hour full-time job so we don’t have to pay you any benefits even though we clearly have described 60 hours a week of work.”

It’s kinda cute that they still use mySQL and bootstrap, but their dependency on PHP and Java is just, um, nauseating. It’s like they are trying to repel modern developers and educators. I would bet real money they have no clue what FaunaDB even is.

5:20:32PM, Thursday, January 31, 2019

Found the Windows 10 Emoji picker. Just Windows Key + . or ;. The equivalent on Mac is control + command + space.

🎗 need to add Emoji Picker page

4:25:00PM, Thursday, January 31, 2019

🎗 add sh, clear, ls, cd, rm, rmdir, mv commands
🎗 add a soil function to add links to subdirectory in the current directory

Found and looks like a good raw source for shell scripting learning.

By the way, true blogging is so much faster than tweeting all of this. Honestly, it makes me question the whole premise of Twitter because you can’t really accomplish anything in the space provided. I would much rather be able to follow a few key individuals on Twitter for a log such as this one instead. That whole RSS thing really killed it, unfortunately.

4:00:49PM, Thursday, January 31, 2019

Such a great time shooting the breeze with the parent of a new potential member.

1:51:56PM, Thursday, January 31, 2019

Sitemaps are a thing, a thing that VuePress completely ignores. I keep running into very real reasons not to use VuePress for pretty much anything, or any other excuse for a “static site generator” that “renders” your site by crawling every route with a JavaScript web crawler every time you build it.

🎗 add a session for generating a sitemap.xml file for your site automatically.
🎗 add sitemap.xml generation to soil automatically.
🎗 seriously need to fix the broken links to avoid SEO downgrade (even if the content is pending).

1:30:49PM, Thursday, January 31, 2019

Driving home from Woodlawn today I could not help thinking back to previous students I had, some of whom where my first, who could never leave GameMaker studio and learn proper web development and other coding. It’s not like they couldn’t they just wouldn’t.

I can’t help associating that with the very real experiences I have had with other students never learning another language besides Python after having been taught it.

There is something very real about a person’s first coding and creating experience. It creates a strong cognitive bias that seems to direct their choices and future. I would love to see the research on that.

The best I can conclude is be very difficult what you teach first to young, impressionable coders!

Based on this GameMaker was the worst decision I made. I felt learning to code gradually would lead them to be able to code other real things later. It at least equally dissuaded them from learning anything else.

“Why? This works.”

That’s what you will hear. The interest you gained by doing something related to what they love (games in this case) is overcome by their loss of interest in anything else later.

💡 Moral of the story: teach web tech first, then shell (bash), then Go, then C, then whatever language matches their long term goals. Python really does not matter unless you are looking at scientific computing and even that is radically changing. I’ve never been more convinced by everything I’m observing and have observed over the last six years here and even longer before.

11:25:13AM, Thursday, January 31, 2019

🎗 finish up the details of Prepare for Learning

Moved everything under /blog/ to their own articles and replaced it with a definition of the term and link to What Happened to Blogging?

Changed Blog to Log from the main page with now links to this messy but real blog. 😁

11:06:52AM, Thursday, January 31, 2019

Wrote What Happened to Blogging and combined the articles I had under the Blog title into this.

9:25:35PM, Wednesday, January 30, 2019

So happy to get another girl coder to join us, and from a returning family who was with us from near the start. Once again, another Roblox fan. Roblox is so great to learn to code, much better than Minecraft. Minecraft is good for learning system administration from running your own Linux server and, of course, command blocks create JSON masters.

7:38:27PM, Wednesday, January 30, 2019

Revised the workstation recommendation.

🎗 find a solid mac-like, low-profile keyboard recommendation to go with the rest

6:52:18PM, Wednesday, January 30, 2019

Looked at FuanaDB again. Looks so promising. Came from some guys at Twitter who were not getting what they needed from the existing options.

Realized with one student that GitLab does not need to have a project created before creating a repo from the command line. Sid (CEO of GitLab) picked it up and retweeted. Always a great object session when a student gets recognized for their own research by the industry itself.

Read up on GitLab a little more (members asking me what companies to consider). GitLab is huge on work from home. No wonder the predominant Silicon Valley culture is so opposed to it. It feels like GitLab is the uncool kid on the block that is smarter than all of them so everyone beats him up. So far GitLab tech is objectively better than GitHub on more than 35 points that I am documenting—particularly for the enterprise. Point #1: no executives accused repeatedly of sexual harassment.

12:50:40PM, Wednesday, January 30, 2019

Listening to Chillhop station with the video of a cracking fire on an empty beach at sunset reminds me how much of an outdoors guy I have always been. All this tech is ultimately just to enable me to recover more of my time so I can get outside again!

11:54:49AM, Wednesday, January 30, 2019

Now that universal Bash command line terminals are available to everyone via VSCode and Git-SCM I am inspired to add more command line interface stuff back by way of (which is where I used to host all our member and did all of our coding).

Services available via curl like that is available both from the command line and as a web site really inspire me. I have the skilbot framework complete and dormant and this could breath new life into it. By using the curl interface (or hiding it behind an sk executable written in Go that they can download easily) and teaching it early I can create routes that match learning content and actions under that could cache and invoke a bot on a given topic.

I could even allow the sk command to detect its environment and intelligently help the user through configuration of their workstation, perhaps even do several of the steps for them through automation.

Eventually I could add a conversational interface to sk making it a personal learning assistant.

Now that Go supports plugins functionality could be incrementally added and updated, universally. However, I think I will make command/actions into separate, runnable commands so that additions could be made in any compiled manner. Then I just need an internal standard for communicating between the runnable commands. This is something I did for components in the architecture while at IBM as well. This prevents lock-in to any particular language (allowing Rust to live with Go and C and C++ and Julia and Crystal). The executables would have a hard requirement to never be dependent on any runtime whatsoever, however.)

There would be a safety consideration to address because anyone using the sk system is authorizing me (or any sk executable author) to run anything on their system. Users are ok giving up such trust (and regularly do so) but every sk module would have to be 100% open for review. The sk executable itself would also require open source and therefore could never be monetized in the traditional way, but who cares. Safety is more important. An open approach allows a potential registry (or discovery convention in git repos) so that an unlimited number of contributors could create sk bot functions.

I would need to make sure sk could both be executed as a single action or command as well as a REPL that maintains an open connection to allowing for real-time interactions.

Then, it is a simple matter to create an sk interface from Discord or Slack as well.

Or, I could keep just for pulling the raw markdown content from and using it from the shell like man for looking things up. OMG, I have to do that!

The funny thing is that with everything being in markdown already I can easily render it as colorized terminal text. In fact, all I have to really do is provide some syntax highlighting. This really tilts the BaseML/EzMark scale toward having pretty raw, readable text rather than text that is simply fast to write. This is more along the lines of Essential Web markdown before and directly in line with Gruber’s original intent that Markdown be as easy to read in source form as in raw. Hummm, because of this things like tables and mermaid become much more important. My thought about just using an image to convey the content of a table still holds because I have always said images, sound, and interactivity should always be secondary to the core content. But by allowing GitHub Flavored Markdown tables you have a visual way to represent that content that would be possible through something like the searching and display that I’m talking about.

I am really glad I have been holding off on codifying BaseML/EzMark. While I still feel strongly most writers should hold themselves to it so that their content can be cut and paste into Medium and stuff. The math rendering in Pandoc is really important. The dilemma I have is how much to stay compatible with blogging platforms versus allowing the richness of other publishing mediums (pun intended). Academia has clearly lined up behind pandoc and novelists behind MultiMarkdown because they serve their domains. More informal writers and less academic educators, however, do not need all that complexity and frankly won’t use it if they are exposed to it.


11:39:31AM, Wednesday, January 30, 2019

Sometimes it is the smallest things that bring so much joy, like a stupid simple alias that makes my life just a little bit easier and more fun.

alias reminders='egrep "^🎗" $SOILHOME/log/'
Example of reminders alias

Example of reminders alias

Even though I have been using it for more than 20 years, I’m still blown away by the power of the shell. When combined with VSCode for word processing and code editing there are no limits to productivity enhancements that sometimes take seconds. No need to find the proper service or web site or app to do the same thing. You think it, code it, and boom it’s there.

Unicode (emoji) support across the board has really made this sort of stuff more fun and aesthetically pleasing. ✨

11:30:27AM, Wednesday, January 30, 2019

Whew! So much work just to get a keyboard common image layout so I can indicate specifically on the image where the key is. So worth it though. Also, I’m thinking I might have to get these new dark keyboards for the students here since I only need a few of them and these other keyboards are finally giving out.

Made sure to put a big fat warning about getting a gaming keyboard for coding because most are international and have the enter and \ keys in the wrong places.

Surprised to discover that Apple made the esc and function and arrow keys all full size now. They say because of “gamers” but developers will love that as well. Nothing beats a full-size chicklet keyboard for development, period.

9:34:16AM, Wednesday, January 30, 2019

Remember when you were a kid and woke up full of energy and excitement about what you were going to do or build that day? That’s me every day since I started SkilStak. The best part about learning to code is the amount of creativity it allows. You understand you can literally build anything given enough time.

But first, I have some terms to quickly define. I’ve decided to use the colorful 🎗 as a reminder and ✅ when complete instead of the GitHub Flavored Markdown - [ ] and - [x] only because I can scan them out in the document easier.

11:31:40PM, Tuesday, January 29, 2019

The All-Powerful Front-End Developer should be mandatory viewing for every single web developer in whatever organization or role they might be in. With a very friendly approach Chris Coyier explains why servers are completely optional these days and #serverless and JAMstack are such things.

6:42:51PM, Tuesday, January 29, 2019

Discovered websocketd that turns any program that has a stdin and stdout into a websocket API.

4:52:49PM, Tuesday, January 29, 2019

✅ add terms: terminal, glob, splat, backtick, tilde

4:28:41PM, Tuesday, January 29, 2019

Research of Arduino (Elegoo) language confirms it is C and supported from VSCode instead of needing to use the vendor-specific cloud editor.

3:42:11PM, Tuesday, January 29, 2019

Looks like I’m an official contributor to the Deno project now.

Deno Contribution

Deno Contribution

It was nice interacting with Ryan. He’s such a good guy. Makes me want to make lots of other (more significant) contributions to the project. First I have to port all my libraries to Deno and get off of VuePress. Then we’ll see.

11:31:35AM, Tuesday, January 29, 2019

I love open source. Ryan Dahl himself responded to the ticket I wrote within about 10 minutes of writing it. This quirky, amazing developer personifies so much that I value and just confirmed it further. Something as simple as that makes me want to be a better developer, contributor, and human being.

11:02:29AM, Tuesday, January 29, 2019

I did it. I threw myself upon the mercy of the Deno gods. I can’t help myself. It is just too good of an idea not to help grow and take over the very broken Node framework.

4:44:10PM, Monday, January 28, 2019

🎗 add terms: Internet Protocol (IP), protocol, route, router, packet, routing, domain name, Secure Shell (SSH), shell, terminal, string, putty
🎗 Add the video with girl pranking her dad with ssh

1:27:25PM, Monday, January 28, 2019

🎗 I need to remember to port all my Medium blogs to

Turns out there is already a Deno test module started. Ugh. Wish I had seen that 48 hours ago.

💢 Why is it all the tech from Facebook starts out sounding so great and ends up being absolute crap?

For being one of the biggest tech employers in the world, Facebook is really bad at tech. Remember their mobile fail?

At the end of the day all of these are horrible and people are waking up to that fact slowly but surely. Over the last week there has been a strong back-lash against JS-JS-JS web over HTML-CSS-JS as has been used from the beginning. The core technology behind the JS-JS-JS crap is React—and specifically the bastard migration of plain web documents into JS rendered versions in Gatsby and VuePress, and for what, so it is just a little bit snappier? Hell no! This is bad for the web. It has become glaringly obvious that the well-meaning Gatsby (and any other JS-JS-JS) technology is broken at the core, it’s premise flawed, it foundation on sand.

Why so messed up? Domain confusion. The Web is used for vastly different things. Each domain needs to be approached independently and addressed as such. The JS people thing everything should be an app, even simple documentation. I wrote about this some time ago when trying to decide how to teach web technology. There are actually four Web domains:

  1. The Document Web
  2. The Application Web
  3. The Streaming (Broadcast) Web
  4. The Voice Web

You can then layer accessibility versions on each to compound the confusion.

Gatsyby and VuePress are bad because the together #1 and #2 and do so very poorly. Each has redundant copies of all the content. A version that is crawled to provide SEO hacks to keep Google happy, and a version of the page entirely rendered in JavaScript. Why didn’t anyone call out this insanity earier?

12:49:41PM, Monday, January 28, 2019

Really annoyed that Jest testing framework does not support raw ES6 modules (as Deno does). Tweeted how much I would really like to see a built-in test framework in Deno like Go has. Takes all the work out of thinking about and setting up testing. Got several instant retweets. Problem is that Deno is written entirely in Rust now so any such framework would need to be written in that. Because Deno isn’t into heavy tooling at all there really is nothing to hook a testing framework into. Unless…

What if someone wrote a testing framework in Deno that is entirely contained in a single Deno URL? That way a test script would simply need to import it and it would naturally be cached. This would be amazing because testing would just be a matter of adding the test scripts and perhaps a configuration file. Jest could probably even be ported to be 100% independent from babel and the other tooling (by manually tree shaking) so that the existing tests and configurations would work.

No, that won’t work because the most broken thing about Jest is that it is not ES6 friendly. Instead, creating a new Deno module, with another name, and creating migration code that detects Jest setups would be preferred. Yes. But what to call it.

10:29:56AM, Monday, January 28, 2019

Added blurb about Rust being paired with C++ in what is becoming an increasingly popular The 7 Languages You Need post on Medium. After revisiting them I still think they are the best, that you can literally make anything if you know them.

🎗 Scheduled a meeting with new student to pair with friend who is currently attending for Thu 2pm.

10:17:46AM, Monday, January 28, 2019

Read great Medium article about Geoengineering in 2069 and am reminded how critically important technology will be to literally save the world in the coming decade, so long at it is informed with other research and dialog.

9:42:16AM, Monday, January 28, 2019

Updated the location information to make it easier to find and added more explicit payment information, specifically no payment plans. Makes me chuckle a bit when people ask about them. What am I, Mastercard?

9:22:40AM, Monday, January 28, 2019

One of the best things about coding in Go is the lack of decisions you have to make about what to use, how to test and such. Sure there are sometimes two or three good packages out there to pick from, but usually there is one solid one everyone uses.

This is not true for JavaScript where you have to make decisions about everything, which server-side runtime, which test framework, whether or not to use let or var, whether to transpile or not.

After everyone writes about how great jest test framework from Facebook is I struggled with it for more than two hours just to get it to use ES6 imports. The answer seems to be “just use Babel or Webpack” but the whole point of having a command line version is that I did not want to build a dependency on that bloated tool set.

7:02:46PM, Sunday, January 27, 2019

Only now just discovered Mermaid diagrams which is very timely since I was preparing to create progress charts for work toward title requirements. Now I can generate text and have the diagrams created simply by adding them to markdown documents that support it, such as GitLab Flavored Markdown. (GitHub does not support them. Pandoc does.)

Also finished up some pretty useful tab completion for my edit and draft commands to quickly pull up documents to edit or new ones and initialize VSCode work work with them. Stuff is in the soil code repo for now (which needs to get ported to GitLab still).

Decided to stick with quick and dirty shell scripting to capture the soil use cases and then eventually port those into a single soil executable.

10:57:11AM, Sunday, January 27, 2019

Sipping coffee like I do every Sunday morning going over administrative stuff I wonder what a log such as this would have read like had I started it from my first days in May of 2013. Can’t believe it is coming up on six years.

I do a lot of pondering and pontificating on Sundays. It has become a refreshing habit. Self reflection is a good habit I picked up from being a Mormon all those years.

Perhaps the biggest session I have learned in all of that time is that small is better, as in, one or two students maximum. Not only does this increase the pace of learning by a factor of five (it feels like, need to measure that), but it makes teaching really fun again.

I don’t have a single student about whom I have doubts or griefs. That is an absolute luxury to any educator.

While I don’t cherry-pick my students (I have three who are autistic) I do make sure—as much as possible—that we have compatible personalities and can work well together—especially the parents.

Parents have been the worst thing about this whole endeavor. My worst memories always involve a parent.

Speaking of memories …

Child affected by fighting parents.

The single worst incident with a parent was watching a downright evil man spitting at his ex-wife as he shouted at her through the window during the pickup custody exchange of their son. These kids, like some others, bring their suitcases with them to class. It reminds me of the brief time I did that with mine and how damaging that constant instability must be on them.

This guy personified the opposite of just about everything I value.

My first clue should have been him spouting his child’s resume of activities and accolades (none of which ended up mattering to me at all).

My second clue should have been him bad-mouthing me and my program on our third week in the lounge I had prepared for parents to one of our best family friends, a mother of another student who became a TA and went from failing math to the honor role (a story I love to tell because it happened accidentally when I said, “pay attention in math class because you need it to program games”).

“Isn’t there anything else?” he asked her with a wink-wink.

“Nope,” she responded, “and you should really be glad you found this place.”

My wife and I laughed out loud hearing that story.

It blows me away that some parents can be so completely and totally disconnected from their children even though they are with them all the time. Even more so, that they can be so completely disrespectful to a guy who took early retirement and a 50% pay cut to teach their children. I have run into way too many of these people.

Am I the perfect teacher? Hell no! I make mistakes and experience frustration—even get angry—like everyone else, but the level of utter cluelessness and lack of empathy exhibited by some of these parents completely confounds me.

One explanation is that somehow, it seems, Americans are trained to look down on educators. Perhaps because some are so completely bad. Finland (according to documentaries on the topic) does not have this problem. Teachers are revered and respected.

Perhaps it is because everyone knows teachers make less money than most. We live in a time where more people are revealing that they actually value money above all. When making more money as a Java developer somehow makes Java the best programming language.

Perhaps it is because they feel quietly insecure around those whom they consider much smarter than them, subconsciously. Americans are particularly afraid of intelligence. They belittle it, devalue it, mock it, and beat it up. That’s ’merica for ya.

Back to the story …

I tried as hard as I could with this young, intelligent, troubled boy. He had to live with this situation. I sincerely wanted him to have some light his life despite is flighty lack of interest, random swear words, and incredible emotional instability. It was tragic. He was a very disturbed. I confess now I was trying to save him, which I have since learned never works.

After two years (I think) I finally just could not do it any longer. It was a real dilemma because this father had invested a lot financially into his son. I had also invested a lot of time.

But I began to seriously dread having to interact with this parent. I would even have nightmares about it. It overpowered my desire to help this boy. I also felt like he was no longer learning, he was just too distracted. I felt despite the financial investment up to that point that if I did not let him go it would just get worse.

When his father came to pick him up I said, “This will be Joe’s last day.” (name changed)

There was silence.

I choose to not say anything further, which is unusual for me.

While I was still shaking from the emotional stress of the situation I refunded the remaining $200 or so (which is against my own policy).

Then I unloaded, as I always do, on my very understanding wife. Without here I would never have made it through many of these trials.

I still had to teach some 50 students that day. I owed it to them to be on top of my game. This is ultimately why I let anyone go.

I felt I had failed this boy, but the seething evil of this man was not something I ever wanted to be around again and the boy clearly was learning at a pace much slower than the rest, mostly because of his distraction and despite his raw intellectual acumen.

I can still see that boys face. He loved coming. I can’t bear to imagine the heartbreak on his face when his dad had to tell him he would not be returning. It still haunts me.

By the way, his mother once asked if we could be sure not to let him play Minecraft because, and I literally quote, “I’ve heard Minecraft is rather violent.” Having seen what she had to live with, I imagine she is hyper-concerned about her son being exposed to violence.

This boy’s biggest challenge was that he could not fail without completely and totally losing it. I witnessed what it means to never have learned that failure is a learning process, that it is a good thing. He had never learned this important session.

Then the story gets interesting.

A very negative—downright slanderous—Yelp review came from the boss of the man (who somehow thought we would not figure it out).

The review stated that I “locked children up in my basement.” and “didn’t do anything you can’t do at home.” I laugh a little now it was so bad.

Of course, Yelp took it down immediately.

There was some truth to the review.

Technically our classroom was the bottom floor of a downtown Cornelius town home, which might qualify as a basement.

And yes, I did lock them in, for their protection.

In fact, it was because of this troubled, distracted 10 year old that I added unreachable bolt locks and bells to the doors. He was the first (and only) child to randomly run out of the building and wander the sidewalks during the minute I was checking on other students.

Because of that incident I also hired a TA to cover the other students so I could give this one student all of my attention (even though there were lots of other students and a TA there).

No good deed goes unpunished.

*Sigh.* Catharsis. Without it most educators would completely collapse.

Every one of these incidents has caused me to relish the luxury of accepting the most compatible students and their families.

I have not given up on helping those stuck in horrible parental situations, only realized I can’t save them all, and often when I try to my ability to help others is compromised.

I’m therefore ethically compelled to only accept the most compatible families for the sake of all who are already here. One bad experience (that could have easily be avoided) could take down the whole thing.

Imagine if every teacher was able to interview and accept his or her students. Obviously that isn’t very realistic, just a curious thought. It always reminds me that humans have been learning using the master/apprentice, guru/follower model since humans first started learning. It is the most natural.

How is it that humanity moved away from this?

10:31:48AM, Sunday, January 27, 2019

Received registration email for returning student, handled setting him up, takes about 30 minutes on average even with automation. This is why I have considered charging a registration fee in the past. Now that I am really picky about who I accept, however, I am more inclined to meet for free with candidates and their parents and really be sure it is a good fit. A good fit means the hour-long consultation and 30 minute setup is easily recovered by them becoming a strong repeat sign up. This is also why I value returning students more than new ones. In most cases I alread know what I’m dealing with.

I realized it might be faster to prepare a form letter for new registrations. Here is something to start from:

Ok, here’s the invoice:

This has him starting this coming Monday. Let me know if you would prefer to push it out another week.

And here is his classroom notes link containing his member ID. I suggest bookmarking it in your web browser:

Give this to anyone you would like to follow exactly what we are doing in every session including any “at home” work we have discussed in any session. Also look over and particularly the and https://skilstak/policy pages. You may drop Andrew off no more than five minutes before class and he must depart no more than five minutes after the hour. We have a library in which they can wait so as to not disturb the other student(s).

He won’t need to bring anything with him, provided he still has access to the Gmail account he used before. I will need the following information for my records:

Birthday Gmail Account School Hours Available for Work from Home per Week Estimated Departure (usually graduation) Date Phone (if he has one) Home Address (safety and planning) Contact Name (I assume you) Contact Email (billing and newsletters) Contact Phone

Thanks. I look forward to getting started with him and showing him all the new stuff we have been working on.

2:05:43PM, Saturday, January 26, 2019

Without any coaxing from me, students continue to complain about how boring and irrelevant is. One diligent student did the Learn JavaScript only to realize it went into and downloading Node and CommonJS modules and more. This is overreaching since it has nothing to do with raw JavaScript programming—especially now that ES6 modules are supported in every major web browser.

This student said he could not get through the homework (losing valuable time) because it was so completely boring. He practically begged me to make a better one.

💢 I really don’t like having to create my own version of stuff but the stuff that is out there continues to be really bad, despite the great efforts of those involved.

🎗 Make a video going over how to bookmark SkilStak class notes on GitLab for easy lookup for parents and students.

💡 lowercase, no space, alphanum (memorable naming advice)

Reason for no sound playing extension in VSCode: “no access to DOM directly”.

Decided to use phaser.min.js instead of phaser.js in sessions.

👍 Using GitLab projects and markdown for class notes has been a major win over Google Docs since it is versioned, easy to read, drop-dead easy to write, and a completely portable format so no worries about something better coming along.

💢 It appears EPIC has removed all the beginner tutorial videos from their academy, grrr. I am so glad we are moving away from 3D game development and focusing on 2D Phaser3, web applications, and systems engineering. Even when we were doing the Unreal Engine development the version of the engine changed like 3 times during the year, once in the middle of a Summer Camp. Unreal Engine is still way better than Unity as a company and engine, however.

😲 Learning programming with 3D game development is rather unsustainable for most educational organizations because of the prohibitive cost of obtaining and maintaining machines powerful enough to do it (even though we have it). It’s better to focus on entertaining programming challenges that focus on the concepts—including 2D games.

💵 Forking over $500 for NitroType gold memberships for everyone hit the budget pretty hard but has been worth every dime. Everyone is posting significant typing speed gains.

💡 Put all the notes into a single in each member’s class notes project. Just way easier to find for everyone. (Had been putting separate ones in the assets directory, for example.)

👍 Discovered emojis in my logs to help scan them quickly later, obviously.

1:05:29PM, Saturday, January 26, 2019

Reminded of an article I read a while ago about the biggest attack in history from China by injecting a chip onto video cards before they shipped infecting entire supply chains.

11:27:01AM, Saturday, January 26, 2019

Decided not to have all students use the skilstak-SSID project approach but only those advanced enough to understand GitLab projects and subprojects.

🎗️ Add today’s session terms to
🎗️ Figure better standard way to start sounds after “user gesture”.

Having all students bookmark their codebook projects on GitLab in Chrome and rename the bookmark to their student/member ID so it is always visible when using Chrome. This will hopefully make it really easy to pull up the notes and homework assignments.

Debating with myself about spamming the membership group with update about this log. It is already public so I suppose that is fine.

Having great success using Sam (our dog) to illustrate class-based object-oriented programming compared to Jenga Fett for prototypical OOP. Fun having Sam speak() and walk() and sit() to illustrate that although we are all mammals we have different methods of doing the same thing (operations or actions).

8:23:15AM, Saturday, January 26, 2019

Started The Problem with GatsbyJS and VuePress based on how broken the architectural approach of mixing traditional static sites (usually documentation stuff) with SPA—especially now that very advance progressive web apps are supported.

💢 Who the hell thought it was a good idea to crawl* all the routes of an SPA with a JavaScript web crawler?!*

This is in the opposite direction of modern static site generation advances. It takes VuePress 10 minutes to “compile” my site with more than 500 routes. It will only get worse. In other words, the entire approach is broken at its foundation.

This one will need a very pretty, well thought out blog post later after I have all the solid evidence demonstrating how completely moronic this approach is.

That said, data-driven SSGs are a nice thing (that I started with Hugonot and FADB about three years ago). GatsbyJS was the first modern SSG to even attempt this.

9:34:07PM, Friday, January 25, 2019

Today I met with a returning student about scheduling in the morning. Before the end of the day I would receive two more email queries from potential new students. I wonder if it has something to do with this month. While I don’t have the stats available that I do now, I remember the same being true in the past.

All the 4pm and later time slots are now filled as is the entire day Saturday.

One is anticipating coming during the day, a high school student attending community college as well.

Another is an adult looking to upskill as others have and who is having questionable results from a national bootcamp that did not know what Go or Linux was. This organization is teaching Java Android development. It is more than troubling how out of touch the organization actually is. My wife said, “he should sue them” when I described my conclusions having researched the organization.

Another is a friend of a recent student sign up who heard about us through him. It is a constant reminder that the absolute best advertising costs nothing, it comes from having an authentic, quality program that people are happy with and will talk to their friends about, and they do.

Yet another new person just emailed asking to schedule an interview in preparation for potentially filling an empty slot as one comes available.

Perhaps the most troubling event this week was having to say no to one of my favorite past students. It would have already been a challenge because he is attending college and wanted to do a remote weekly meeting, but not particularly a session.

Given the number of others applying I was already in a difficult position.

I like to give priority to returning students, but remote ones? those who don’t really want a session but more just discussing things?

This particular student has a history of not doing what is asked and always feeling things are slowing him down. He wants to do “the advanced stuff” before the basics.

Part of his approaching me is realizing this now that he is in college and they are asking him to use Linux, vim, tmux and such, all of which were taught to most of my students in the first or second year and which I asked him to do but he never really did.

Then I asked him to do something very simple that I ask of all my current students, do a few races on NitroType and get me his average words per minute.

He said, “I type 70 words a minute.”

I said, “Great! So do a few races and let me know so I can check.”

Then he burst out into, “What does doing a typing test have to do with you teaching me to code?”

Normally that kind of question would get a more patient response from me, but I knew this student well and had watched him challenge my asking him to do simple—but critical—things all along.

I said, “I’m sorry but I cannot accept you as a student at this time. Nothing personal, I just feel this is not going to be productive for both of us given our personalities.”

Then I rather directly said something that is true but painful to hear, “Asking all my students to do that simple thing is actually a test of teachability. You failed.”

This was harsh, but I have adults far older than him willing to do what I asked for my records, having discovered a serious deficiency in typing speed among them all. His impatience and attitude would likely have erupted into a departure later that could have been far worse (as I have experience far too many times).

I was very calm and went on to express my position. He chose not to respond, at all.

This is a person very used to getting whatever they want. I do sincerely wish him the best but it would have been dishonest of me to have given him that position here while others would have been kept away because of it.

By the way, if you cannot type 60 words per minute you have no business being hired in any technical capacity, period. You don’t have a prayer of passing any remote coding interview to say the very least.

6:18:24PM, Friday, January 25, 2019

I’m reminded that the crab rave video is top of the kid-pop-culture list, case anyone cares. Seems like a candidate for a coded-meme project.

Friday, January 25, 2019 - 5:11:51PM

I have discovered that GitLab projects are extremely useful when using GitLab as a tool for education. Each student creates a private group with the student ID as the name for example skilstak-dc7f6f. Then they all create (or migrate) their codebook repo into a project of the same name. Advanced students can be given coding challenges that must be in projects with a specific name and add me as a Reporter (a level of access GitHub does not have) so that I can download and correct the challenge. This entire process can be automated while introducing everyone to continuous integration and testing. This was all possible on GitHub but required using GitHub education. The process is entirely independent and itself educational on GitLab.

This means that good ’old SkilBots are back. I can add intelligence to the bots to do this checkout and examination on their own. All the analysis and checking are already built into the skilbot framework. This means skilbot can be used to check real-time challenges as well as “offline” assignments that are being committed to GitLab. With the proper hook any commit can trigger the bot to do the checking and report to the student however, email, Discord, issue on the project, etc. Needless to say, I’m very excited about these possibilities.

I think we should rename skilbot to skeeziks.