Blog - September 2019

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

Monday, September 30, 2019 - 6:12:01PM

Yeah, putting Go and Rust ahead of JavaScript is definitely bad — especially since most will have a site up and be ready to make it do fancier things.

After doing the following simple Rust greeter project, and realize that you must teach pointers and memory allocation on the first day that Rust has no place anywhere near a beginner or even intermediate coding curriculum. I was very hopeful, until I wasn’t. Story of my life. Here it is. Imagine teaching this to a 10 year old.

use std::io;

fn main() {
    println!("Well hello there.");
    println!("What's your name?");
    let mut name = String::new();
    io::stdin()
        .read_line(&mut name)
        .expect("Didn't catch that.");
    println!("Nice to meet you, {}", name);
}

Just no. I applaud the everything-is-a-constant approach and all that does to how an experience programmer looks at code and state, but just too much for absolute beginners.

Monday, September 30, 2019 - 12:39:45PM

Just discovered xclip which let’s you pipe command line output directly to the graphic copy and paste buffer. You can xclip -o to dump it as well making it way more efficient for small things that using a file.

Sunday, September 29, 2019 - 4:59:21PM

Eli’s the Art of the Bunny has inspired me to name the entire category of learning to learn and be independent, etc. as the Art of Learning.

Sunday, September 29, 2019 - 4:43:14PM

It might seem silly to mention, but its is worth saying that when using your hands to make gestures and draw in the air during a presentation or exposition of something to make sure to do it backwards (like looking in a mirror) so that the person watching you sees it in the proper direction. Such a small thing but makes such a big difference. Often just using your hands is enough to make the point without opening up a screen or writing it out and for some reason people often respond better, they don’t glaze over like they do with a screen or board. I would love to better understand the psychology involved.

Sunday, September 29, 2019 - 12:24:42PM

Going to try a different personal schedule with Fall upon us:

8:00 AM Up and run. Wake up on the run. Leverages bodies fat-burning state for the first 15-30 minutes after you wake up. I’ve proven this to work over and over again after hearing about it a decade ago. Just hard to do, of course. You have to have your running gear ready and almost literally jump into your running shoes from bed to work. Have to remember to go easy on the run so you don’t hurt yourself until your body warms up.
8:30 AM Walk the dog. Stretch. Rinse off quickly. Talk to family.
9:00 AM Breakfast (usual protein oatmeal, coffee, vitamin). Journal. Read. Focus on spirituality and self-examination.
10:00 AM Best brain work. Do all the stuff that demands the most from my brain, usually coding, architecture, reading, and writing. Avoid brain killers like social media (for now). Go someplace far from family and make it clear to everyone not to be disturbed until lunch time.
Noon Lunch. Talk to family. Cleaning. Busy work. Social media. News.
1:00 PM Yoga. Preferrably out in the sun (for the vitamin D, which is a real thing, I promise). Meditative or with the tunes cranking. Do not make it stressful. This is a reward, an escape. I so need it after three hours of very intensive brain work often sitting in not-so-ideal positions the whole time. Include 10+ minutes of Savasana, 10+ minutes of meditation. Remember to pray.
2:30 PM Shower immediately after Yoga. Groom. Dress. Drink smoothy right at 2:55 to power through until dinner.
3:00 PM Mentored sessions. Start music. Clean and prepare room. Induce flow state for members. Be immediately available to help them through their challenges. Write and update notes and challenges during sessions. Keep writing as relevant to the immediate session as possible to capture the best fresh feedback and information. Regularly ask which way of writing something is best. Burn incense if Yoga was inside (for obvious reasons). Use restroom between sessions when needed. Except for sending invoices, emails, or making calls to that member’s contact, avoid social media and answering emails as these can pull you away from being present in the session. Do not feel bad about resolving business related to that member during the session. That is part of it.
6:00 PM Eat dinner quickly while member sets up for session. Remember the first and last five minutes of any session are written off for the transition and any such logistics.
9:00 PM End sessions. Eat again. Talk to family. Walk the dog. Game. Watch the news of the day. Read. Relax. Liquid food at about 11:20 PM.
Midnight In bed falling asleep as fast as possible.

I realize many will look at that schedule and wonder any number of things, so here’s why. Plus it helps if you are thinking about starting your own community so know what kind of life you will have.

One thing I have realized about living and working at home is that one really has to schedule specific times for family interaction or it will destroy your flow-state with constant interruptions.

Sunday, September 29, 2019 - 12:09:38PM

Having tremendous success with the new flow-state-focus approach to mentored sessions. We talk a bit at the beginning and then end and put the headphones on and do challenges as much as possible during the rest of the time only talking when some explanation is needed. It perfectly models the best learning lab environments I has experienced elsewhere — the Calculus lab in college for example. They were quiet enough to work but we could discuss problems with one another. When needed we could call a lab assistant over to help out. I learned so much in those labs because the energy of learning was palpable. Everyone was doing it. We were all promoting each other’s work simply by being in the same place.

I realized there is another parallel to all this, New York. Being in New York automatically inspires me and fills me with ambition to do anything. While I love sitting on the beach just as much as anyone, my absolute favorite vacation is traveling to New York (or Europe if I could) and simply finding the local cafe and coding, thinking, writing, and creating. No wonder that is how so many amazing creators behaved in Paris. These experiences model that of the learning labs. It is also one main reason that co-working spaces are taking off so well. (But I prefer a cafe or pub over a co-working space any day.)

Cultivating flow state has a much to do about building the right environment and culture as it does providing solid content to learn. No wonder so many schools simply cannot achieve this in their overcrowded classrooms full of people who actually are doing whatever they can not to learn anything. Not here.

I know it sounds crazy, but this is one reason I needed good speakers in the lab. The music I play is amazing at cultivating this feeling and ambiance, as are the wonderful smells from Doris’ kitchen, or even the occasional incense. Our senses affect how our brains work.

Saturday, September 28, 2019 - 11:43:05AM

Reminded that there needs to be an actual title or category for independent learning in general. Title is bland but Independent Learner probably fits. This is no slouchy title. It will take personal discipline and dedication and for many, stepping out of their comfort zone.

Saturday, September 28, 2019 - 10:28:48AM

After reviewing learning objectives with everyone it has become clear that there is sort of a main quest line emerging with several secondary quests. The order of the tasks to follow each quest in the main quest line doesn’t really matter. (Sure playing all that Witcher has affected me, it so deserved Game of the Year.)

For example, the following can be done in any order and are made up of several quests themselves:

Despite how I despise titles it seems like there needs to be one after this work is accomplished. Since this work is all about preparing a person to pursue programming it feels like ‘pre-programming’ or something like that (much like pre-algebra). I think Coder is probably best since writing all that HTML, CSS, JSON, and YAML is code, just not programming (as most understand the term).

I’m a little surprised to realize that CodeCombat has no place in the Coder stuff because it introduces programming directly, and without any explanation of the concepts is helps them practice. A Programmer title should therefore include at least the following:

I do think Programmer is the right title to give at that point. Then to achieve Polyglot Programmer the following would be required:

This is consistent with the priority languages learned here:

With at least one of the following being required:

For those who really want to go deep adding both the following would grant the title Polyglot Systems Programmer.

The Developer title then would add knowledge of the following required frameworks and APIs:

I realize that is just the coding stuff. Other than the stuff for Coder, which includes Linux systems and networking, there isn’t much operations stuff.

I feel like there could be two main quest lines, not just one, one for coding and another for operations. That way the switch between them would provide variety. Perhaps the two lines are even locked together at each level meaning you cannot level up all the way to Polyglot Systems Programmer without doing the equal amount of operations work.

So an operations level title/milestone of the equivalent to Coder is needed. If we remove the following from Coder and put them into another group, for operations, say Operator:

That works out nicely because it is exactly four in each. I love that JSON goes in Coder, where it read and written a lot by code, nd YAML goes with Operator, because server and Docker configuration files so heavily depend on it.

Saturday, September 28, 2019 - 10:13:45AM

During a session today while taking my regular notes for a member I was excited about the automated log weekly emails that will soon be setup. So proud of this ultimate communication tool that I have never seen anyone in the world do. Imagine receiving a personalized log update about your child’s learning directly from your child’s instructor every week. I know of mentoring programs that require this for every session, but schools in general would laugh in my face at such a proposal. Yet another example of tech-to-the-rescue.

It brought me to remember a few completely shitty parents I had to deal with over the years. An incredible warmth came over me as I thought about how emotionally freeing and wonderful it has been to let them all go in one way or another. The remaining community members and parents are an absolute dream to work with by comparison. As Maty Ezraty used to say, “let them go, it’s just not worth it and your good people will suffer.” It is so true — about so many things in life.

Friday, September 27, 2019 - 7:21:56PM

“Yes, Mr. Rob, it’s okay to shut up and let them learn in quiet. You don’t always have to be talking for them to learn, quite the contrary in fact.”

Those are the words of the voices in my head today.

Flow state. It’s absolutely sacred. When it occurs in any learning environment it should be protected at all costs. Too often people who are helping others learn, formally or otherwise, violate the sacred flow state of those they are helping to learn.

Perhaps the biggest challenge I have is that misguided fear of silence. For some reason when everything is silent and a quiet glance from my note-taking confirms that a member is deeply into what they are working on (as opposed to being distracted) I still occasionally feel a need to ask “Is everything alright?”

In one case, the amount of disturbance was visible on the face of my poor learner as if to say, “Do you think there is something wrong? Because I feel fine, other than your disturbance.”

I feel hyper-accountable for the trust these members and their sponsors have placed in me to ensure the maximum amount of learning. Often learning is noisy and involves lots of discussion, presentation, and noise. But it is those sacred times when you give a challenge and let them go that must never be undervalued. That is when learning is internalized and adopted. You can practically see it on their faces.

At least part of the $50 per session is paying for an environment where learning almost envelops those who enter our learning lab, more that separation from the usual, like when you go to a library to read. You could read anywhere, but somehow being in the library to learn and study just makes it so much more visceral. SkilStak is exactly that, even more so now that everyone is a one-on-one session. There is literally nothing (but our dog and Doris’ kitchen smells and noises) to distract members at all. It’s learning bliss and I can never forget that.

Thursday, September 26, 2019 - 12:31:17PM

Thinking seriously about focusing as much as I can on preparing people to work for companies that directly involved with saving the planet, like this one.

Wednesday, September 25, 2019 - 1:49:41PM

After talking it out with Doris it became pretty clear. All learning is ultimately about finding solutions to challenges facing humanity. The challenge can be as small as being entertained or as large as solving the destruction of our planet’s climate.

Skills are how to solve the problem.

Knowledge is why solve them and which to solve.

Abilities involve answering why, which, and how combined.

Most skill can be learned through tutorials and learning bots and practice. But knowledge requires reading, debate, discussion, and research.

For example, at home a young person might learn to play a piece of music and the scales. When that person meets with the master the focus is on why play the piece, the discussion about bringing energy and self into it. Skills provide the mechanics. Knowledge provides the artistry.

This specifically means that a flipped classroom is exactly the way to accomplish the best possible learning. The somewhat mundane skills practice can be done “at home” and the discussion and pair programming and design review can be done one-on-on during the weekly session.

Actually putting words into this realization helps me to see that the entire category of skills related to learning itself is even more important that I thought and deserves priority in documenting it. I feel inspired to take Mr. Lundquist’s ideas (from my first class of this kind when I was 11) and apply them by researching and then sharing the skills and approaches to learning like he did with us. He taught us what he was taught. He taught us to be our own teachers. It actually makes me want to finally get that masters in education (or equivalent) just to pass those skill on to my members as early as possible.

Now that I look at the learning tree I had started I see that a skill like reading and typing actually branches into both technical skills (such as coding) and the entire set of learning skills such as maintaining a personal learning log.

Now I need to come up with a way to clearly and succinctly communicate this discovery and focus so that members, parents, and other potential community leaders can understand and discuss it.

Wednesday, September 25, 2019 - 1:17:01PM

The metaphor of a tree continues to come to mind about all of the skills to learn and how they ultimately bear different fruit.

But it brings out the question about learning categories again, something I am still largely undecided on.

Since hearing about the categories of skills, knowledge, and abilities I’ve been somewhat obsessed with testing them for validity.

Skills can be directly monitored and measured and have a solid, observable outcome.

Knowledge is something you get from Adam Ruins Everything and cannot easily be measured without directly asking for it to be repeated back in whatever form.

Abilities can also be observed but require a longer time period with multiple, non-specific measures and assessments.

I’ve been toying with the idea that acquiring a skill requires knowledge beyond just how to do the thing. The best I can conclude is that there is how knowledge and why knowledge. How knowledge is contained in tutorials and guided projects. It is amoral and not directly related to if and why a skill is being used.

There are a lot of specific skills related to acquiring and maintaining knowledge, even the application of knowledge to a specific situation including what skills to learn and what to do with them. In fact, there is an entire category of skills focused on just choosing and learning skills themselves.

In short, skills contain knowledge, but knowledge does not necessarily include all skills. Knowledge envelopes the skills category.

All this gets rather complicated when selecting a way to represent learning. Something as simple as a tree with fruit leaves out the entire concept of why and if knowledge.

Tuesday, September 24, 2019 - 6:07:45PM

Warning to the world: do not have young beginners with GitLab use the Web IDE to edit any files. It defaults to creating a new branch forcing beginners to wonder were the heck their additions have gone. Also the Markdown syntax highlighter is more broken than the one that works by just clicking Edit instead of Web IDE.

Sunday, September 22, 2019 - 4:07:59PM

Seriously considering changing the core programming languages learning order to the following:

  1. Markdown (Basic)
  2. HTML
  3. CSS
  4. JSON
  5. YAML
  6. Go
  7. JavaScript
  8. Bash
  9. Rust

“Are you out of your mind?”

Yeah, I think I am. Here’s my logic, which has fundamentally changed based on my top criterion not only being “What is the most empowering” but also “What will produce the best practices, habits, and patterns of thinking?”

It is worth mentioning the following languages that instill bad thinking and horrible habit:

All of these are heavily tainted by the class-based, single-inheritance failed approaches of the object-oriented languages of the 90s. Thinking of everything as objects from classes is spectacularly bad for modern programmers. Learning to structure data and model a domain before learning how to do things is so much more important.

Concurrency is also an absolute disaster in all of them.

It is such a horrible shame that so my educational organizations are incorrectly instilling young programmers with this poison. At least I can fight it by doing it right.

After these are learned advanced learners should pick up these:

And then perhaps one or more of the broken languages mentioned earlier.

Tuesday, September 17, 2019 - 5:36:02PM

Note to all: you have to have sudo apt install build-essential to do anything with the LLVM including Rust development. The cargo build command will fail until you do:

/usr/bin/ld cannot find crti.o: No such file or directory

This is one of the biggest annoyances I have encountered with any of the LLVM-dependent languages. Go works beautifully at install and never complains.

The Rust installer also directly modifies your .bash_profile file which is a huge design mistake.

Sunday, September 15, 2019 - 12:08:40PM

Had the idea for learning-quest skills where the rewards are just icons or badges but each unlocks other quests. Quests can be anything but are usually projects that can be tested either through automation or manually by someone looking them over.

There could be different types of quests:

Primary Part of the overall learning goals
Secondary Fun but not essential reinforcing learning
Applied Make something specific with specific reward

Quests could even have a suggested level.

I know this flies in the face of everything I have said about not needing levels or credentials to prove ones learning and position, and it certainly doesn’t mean everything stays the same without entropy, but it would motivate some to do more on their own exactly like it motivates those in games.

Quest learning is the best way to gamify most standard learning needs. It would also allow the application of entropy to different quests and skills.

Obviously the easy stuff lends itself well to this style of learning, but this is also the boring stuff so might make it more interesting.

The really hard learning are the bigger, multi-discipline projects, and, of course, the application of good architecture and best practices. There is no way any bot could ever measure that.

At one level automated learning objectives are very strict and at the other they are very loose in terms of how the solution is created. The bot is either directly examining the code, or directly examining the outcomes with no regard for the code or how it was accomplished.

This reminds me that there are code linters and algorithms for determining code complexity that could be applied in the case of code, but the different learning objectives might not be so easily assessed through automation.

This is where a human mentor comes in. The human does the evaluation providing direct feedback to see if you have passed the challenge based on the same metrics that all are measured against. That stuff has been well-covered by academic research and approaches to learning.

Saturday, September 14, 2019 - 4:03:12PM

Just found this amazing RPC for go from Hashicorp. Definitely going to use it in the new SkilBot 2.0 API (or possibly MoniBot).

Saturday, September 14, 2019 - 2:45:27PM

OMG! I am so fucking tired of all the half-ass tutorials and documentation sites out there. This time it’s freeCodeCamp. I actually codified during the first two certificates into my suggests to those I mentor only to learn while going through it that less than 20% of the HTML tags are actually covered with absolutely no actual coverage of significant HTML5 changes that made <i> and <b> first class citizens again.

My frustration comes because I teach Markdown and the conversion to HTML contains <pre> and <code> that are not fucking covered by FCC.

I know. I know. You will tell me to just make a tutorial about them and add merge request that may or may not be actually added.

Then there is the whole fact that nowhere is YAML and JSON covered by itself on FCC.

I am so very tired having to essentially do my own versions of everything, but at the same time, I have never seen a more pronounced need to do so.

Thursday, September 12, 2019 - 4:19:17PM

Discovered that ProtonMail uses Go (golang) for most of its stuff including the ProtonMail Bridge that uses Qt graphics library. So good to see such a significant up and coming company making these choices, very validating.

Tuesday, September 10, 2019 - 10:07:54AM

Received an apology from the only member I banned who then actively campaigned through a public review and in Discord chat sharing personal emails against me personally. He forced me to make a rather lengthy reply to his Google review and has just now taken it down (after more than a year). This person is now the age of applying to internships (like those his peers have received) and probably found his own choices have inhibited his future opportunities in the area. It’s sad really. Some lessons have to be learned the hard way. God knows I have learned my share that way.

Ironically, this comes the day after I had to ban another member for the parents violation of my trust (saying they were signing up and would pay, coming twice without paying, and then bailing saying they don’t have the money).

One thing I have learned is that being nice instead of strict — and making exceptions — usually ends up working against you forcing you ultimately to do things that seem even meaner than just holding people fucking responsible in the first place. Maty Ezraty says the same thing when talking about catering to feedback from yoga students.

Monday, September 9, 2019 - 3:03:32PM

Manjaro is one of the worst distributions I have encountered in my 20 years of Linux experience. It has all the worst parts of other failed distros:

It is completely obvious to me that the creators of Manjaro have no idea what they are doing on several levels. Linux Mint has solid industry professionals behind it with decades of experience (which was recently reconfirmed when I learned my son’s Idaho High School (5000 students) uses Mint Cinnamon). It really shows, but Manjaro has painted over all this ugliness with a nice shiny exterior and a good marketing team. Their branding and marketing team is far better than Mint. That is always a bad sign to me.

It is also clear to me that most who pick Manjaro refuse to see anything I have outlined until it happens to them (I was one of them.) It’s the same mindset as those who love Apple, until they don’t.

Monday, September 9, 2019 - 2:13:19PM

Some time ago I shifted my sleep schedule to better be prepared for sessions. I found that waking up at 7 or 8am was actually bad because by the time sessions started at 4pm I would be completely drained, like most are after a hard day at work.

So I now wake up at noon and go to bed at 4am. That’s eight hours of sleep.

Yes is it tough to maintain my circadian rhythm, but so would living in space when we get to that place in history (been watching The Expanse a lot lately). The biggest challenge is Saturday because two of my members who have been coming forever absolutely cannot come at any other time besides 8 and 9am.

Monday, September 9, 2019 - 1:32:31PM

Created projects for the SOIL guidebook and the SkilStak mémoire.

Hit an obvious snag with using directories with my sl tool. The tool can change directories and startup a bash shell there, but this is less than optimal because to change into another member directory just adds on sub-shell (yes even with the syscall exec) that have to be exited. The only way around that is adding the commands as functions that can be sourced in the .bashrc for the currently running shell, which is what I’ve decided to do.

I already need that for complete -C sl sl so I will rename the main executable to soil and provide a soil bashrc command that will output everything so that it can be sourced with eval $(soil bashrc) in the .bashrc. I learned this trick from what pandoc does. The sourced shell code will include a function called sl that will wrap soil and call other shell functions for things that do not work well within the Go source code, like the cd into a member session directory.

I know it seems fickle, but I’m back to sl instead of sk. So far there is nothing that I need that is SkilStak specific. I’ve dropped a lot of the stuff I had in the original in favor of simpler universal equivalents. For example, just printing out a full week instead of today, tomorrow, on and the like.

The most important command I have to complete is report (<name>|<id>) which will automatically create an HTML email containing the last session log, the current enrollment invoice sessions, and any news since the last report. This will go to everyone with an email in the member.yaml file including all contacts and the member. Having this automatically sent (from crontab) is the holy grail of mentor-member communications. I will automatically be sending them 20 minutes after session conclusion to motivate me to complete all session notes on time and while fresh in my memory.

Sunday, September 8, 2019 - 2:11:51PM

After talking to one of my best members about starting his own mentored learning community I’ve made a decision about the approach to creating documentation and tools for others who wish to create their own communities.

Essentially the decision came down to one of the following:

  1. Abstract tooling and method descriptions such that anyone, at any technical level could use the documents and tools.

  2. Create documentation and tools hyper-focused on my specific community and make them all public so others can use them to fork and build their own.

One thing I have learned about abstraction and developing anything for an imaginary group of people with presupposed needs is that it never works. The best solution is one for a specific need. In other words, specificity trumps abstraction.

I would go so far as to say that this has emerged as a macro-best practice in most things. The JVM failed miserably. The LLVM is an abstraction, but at the low-level. Universities like Olin are the modern model for successful specialized education. They partner with other specialized educational institutions to allow students a full range of specializations.

One reasons this confirmation is nice is that it means I am now back to a single tool, sk (instead of sl and kn).

The new focus is, therefore, on creating the best possible tool for my specific community needs and packaging up the code that others might want to build into their own tools, such as terminal colors, unique identifiers, terminal table output, static site generation, subcommand interface and more. The cmd package is particularly useful because I can literally extend the kn command (that will still ship with the kn package) by simply including all of its subcommand .go files and adding new ones that are related to my sk package.

It also means that I can follow convention over configuration, which means fewer configuration files that have to be written and parsed and that I can be okay with hard-coding a model that makes my specific SkilStak domain.

Another thing this settles is what to call the book someday. I have been on the fence about whether to refer to SkilStak at all in the title and content, but this solidifies my decision to write the guide in first-person and use direct experiences from SkilStak as anecdotes and object lessons to justify decisions and recommendations.

The new title might be The Mentored Learning Community Guidebook: The Definitive Guide to Building a Shared, Sustainable, Open, Independent, Learning Community. It is a bit long, but so what. My plan is still to publish it entirely online in Markdown, HTML, and PDF form for free under Creative Commons Share-Alike as well as in Kindle and print form under full copyright

Sunday, September 8, 2019 - 12:19:52PM

A parent asked to have an exception to pay have in now, and the rest in a few weeks. I trust my parents as a matter of policy but also know that I need to hold them accountable. Against my better judgement, because it was only a two weeks way, I said they could wait and pay the whole amount.

I turned away other people and went through a very rough patch because I am separating out everyone into solo sessions.

Guess what. Those parents I trusted? Remember them? They announced they couldn’t pay the full amount and wanted bill for the sessions they had attended thinking that would be okay.

Of course that isn’t okay and it is open stated in my policies and values. But they don’t care. They are among the group of shitty parents I have had to deal with over seven years. What the fuck is up with people? How do they think this behavior is acceptable? Do they think there will be no consequences? They were even friendly about it as if it was no big deal.

I hate to be the person holding these wayward shitheads accountable, but I did. Their son is now banned from our community because of this open violation of trust, policy, and values.

It is so fucking sad because this boy is one of the best I have ever encountered. I hate that these members have to pay the price for having absolutely clueless parents.

Saturday, September 7, 2019 - 1:37:27PM

Wow, typing.com has been radically improved. Definitely a must for everyone — even veterans who want to just check their habits.

Friday, September 6, 2019 - 4:28:19PM

Decided not to put the hours worked and anticipated in the member sessions logs and just ask for a scrum-like report instead:

Makes sharing them more more readable for parents and such.

Friday, September 6, 2019 - 1:03:43PM

It takes at least the first month of sessions with me — sometimes the entire first block — to master the following core skills and knowledge before I can even get to coding:

For most educational institutions this is simply too long, sadly.

I have personally witnessed the extraordinary level of power this gives each individual. That is something I have never been more sure of and will never change. I have experimented with the alternatives and seen the overall reduction in power and progress.

This reminds me of my high-school friend’s professional drum instructor. My friend was the super-star drummer for the school with ridiculous skills everyone acknowledged, but his instructor had him practice paradiddles and other techniques for up to an hour without playing to any music. Mastering the mechanics and “tools” applies to everything. His dedication put him beyond anything he could even imagine, but it took patience and dedication to the boring “hard” stuff.

Do you want to be a rock-star, or just able to play Stairway? The world doesn’t need more mediocre technologists. It needs virtuosos.

Friday, September 6, 2019 - 12:52:23PM

There are compelling reasons to create command-line apps instead of terminal apps. Some might be unclear on the difference between the two, but it is substantial.

Command-line apps can be invoked from within vi to replace or add to the current location in the file with output from the app.

Terminal apps require locking and controlling the entire terminal session in order to address each cell of the screen in a pixel-like manner. Such apps are useless from within vi.

Output from a command-line app can also be further filtered, parsed and used by other shell manipulation using standard UNIX pipelines.

I share this because I now realize that making a terminal app to look through and update my member data would have been a huge mistake — even with super-cool vim bindings. It would have forced me to maintain all the data in JSON or a heavy database just to be able to change something. Using well formatted and commented YAML files is so stupendously easier to use, modify, and maintain — even for an non-technical person.

Monday, September 2, 2019 - 1:06:34PM

Going to YAML files for everything related to scheduling, notes, finances, invoicing and the rest has to be one of the best decisions I have ever made. I have discovered many of the YAML extensions that are simple enough for everyone to use but so powerful. Sets, for example, which begin with question mark, are great for an hours.yaml file to create an index of your available slot for calendaring.

Parsing YAML from Go is ridiculously trivial while still providing all the power of compiled C code and simplicity of coding that Python or Node provides.

[Past Months]