Commit e7cec602 authored by Rob Muhlestein's avatar Rob Muhlestein 🎧

initial

parent 7ddddc90
tools/editors/vi
./courses/boost/rules
......@@ -5,6 +5,7 @@
./contrib
./contrib/guide
./copyright
./courses
./courses/boost
./courses/boost/calendar
./courses/boost/faq
......@@ -34,8 +35,9 @@
./lang/bash/mmp
./lang/bash/mmp/greet
./lang/bash/mmp/waffles
./lang/bash/stuff
./lang/bash/tasks
./lang/bash/tasks/comp
./lang/bash/tasks/complete
./lang/c
./lang/data/json
./lang/data/xml
......@@ -53,6 +55,7 @@
./live/streamers
./live/streamlink
./map
./reviews
./reviews/books
./reviews/books/annotations
./reviews/books/eloqjs
......@@ -183,6 +186,7 @@
./what/hci/ui/graphic
./what/hci/ui/terminal
./what/hci/ux
./what/ibm
./what/infra
./what/interface
./what/knowledge
......@@ -194,25 +198,6 @@
./what/knowledge/node
./what/knowledge/readme
./what/lang
./what/lang/bash
./what/lang/bash/mmp
./what/lang/bash/mmp/waffles
./what/lang/bash/tasks
./what/lang/bash/tasks/comp
./what/lang/c
./what/lang/data/json
./what/lang/data/xml
./what/lang/data/yaml
./what/lang/go/install
./what/lang/html
./what/lang/java/tasks/install
./what/lang/js/deno/tasks/install
./what/lang/js/node/tasks/install
./what/lang/md
./what/lang/md/basic
./what/lang/md/common
./what/lang/md/github
./what/lang/md/pandoc
./what/learning
./what/learning/cognitive/bias
./what/learning/cognitive/diss
......@@ -240,6 +225,7 @@
./what/rwx/r
./what/rwx/w
./what/rwx/x
./what/script
./what/server
./what/serverless
./what/shell
......
......@@ -93,12 +93,12 @@
/appstores /stupid/appstores
/readme /knowledge/readme
/motivate /learning/motivate
/rwx /learning/rwx
/r /learning/rwx/r
/rwx /what/rwx
/r /what/rwx/r
/x /what/rwx/x
/w /what/rwx/w
/worker /occupations/worker
/w /learning/rwx/w
/wsl /tools/linux/distros/wsl
/x /learning/rwx/x
/whatsnext /boost/whatsnext
/sre /occupations/sre
/wgu /education/wgu
......
---
Title: Proactive Proof of Engagement
Subtitle: Chart the Course, Ask to Engage
tpl-h1duck: true
tpl-duck: true
---
> "Captain, there's a unknown debris field ahead. I've locked in a course around it. How would you like to proceed?"
......
---
Title: Linux Isn't Dead. GNU Just Killed Itself.
Subtitle: And GNU Deserves It
tpl-h1duck: true
tpl-duck: true
---
The [GPLv3](https://duck.com/lite?kae=t&q=GPLv3) license placed on all [GNU software](https://duck.com/lite?kae=t&q=GNU software) --- that was originally intended to cover [the Linux kernel](https://duck.com/lite?kae=t&q=the Linux kernel) as all previous GPL licenses had done until [Linus Torvaldz vetoed it](https://youtu.be/PaKIZ7gJlRU) --- has destroyed the reputation of the GNU project and indirectly a lot of interest in Linux as well. Software projects and organizations are fleeing GNU as fast as they can. But Linux will remain alive as the short-sighted, over-reaching GNU project and unethical FSF organization slowly die the death they deserve.
......
---
Title: Remote Isn't the *New* Normal, It Always Was
Subtitle: Forget About Crusty 'Ol Google, Look at GitLab
tpl-h1duck: true
tpl-duck: true
---
Everyone's talking about how COVID is creating a "new normal" in work-from-home business models, but the fact is working remotely has *been* normal for more than a decade for several well-established companies such as IBM and newer ones like GitLab. Forget about crusty 'ol broken business models like Google. Look at modern companies like GitLab whose innovated business approaches have made it the subject of a [study by the Harvard Business Review.](https://store.hbr.org/product/gitlab-and-the-future-of-all-remote-work-a/620066) Companies and individuals unable to create value from those working remotely are increasingly paying a very real price in available talent and work-life balance.
......
......@@ -48,7 +48,7 @@ ${endif}
${if(tpl-h1off)}
${else}
${if(Title)}
${if(tpl-h1duck)}
${if(tpl-duck)}
<h1><a href="https://duckduckgo.com/lite?kae=t&q=${Title}">${Title}</a></h1>
${else}
<h1>${Title}</h1>
......
......@@ -64,7 +64,7 @@ Except where otherwise noted below, the [RWX.GG]{.spy} project follows [The Greg
* Do not put links of any kind in any heading.
* Use `tpl-h1duck: true` to activate link from `h1` heading to DuckDuckGo search.
* Use `tpl-duck: true` to activate link from `h1` heading to DuckDuckGo search.
```vimscript
autocmd vimleavepre *.md !perl -p -i -e 's,\[([^\]]+?)\]\(\),[\1](https://duck.com/lite?kae=t&q=\1),g' %
......
......@@ -75,7 +75,7 @@
<li><p>Use a default empty link populate line in your <code>.vimrc</code> to fill in empty links that pull up searches on Duck.com rather than not link at all. Later you can return and provide local content as time allows. This saves those learning on the site from having to type in all the links to search the Web for terms that are likely to need explanation and allows mobile users to simple tap as they go.</p></li>
<li><p>Never depend on color for anything. Keep stuff black-ish and white.</p></li>
<li><p>Do not put links of any kind in any heading.</p></li>
<li><p>Use <code>tpl-h1duck: true</code> to activate link from <code>h1</code> heading to DuckDuckGo search.</p></li>
<li><p>Use <code>tpl-duck: true</code> to activate link from <code>h1</code> heading to DuckDuckGo search.</p></li>
</ul>
<pre class="vimscript"><code>autocmd vimleavepre *.md !perl -p -i -e &#39;s,\[([^\]]+?)\]\(\),[\1](https://duck.com/lite?kae=t&amp;q=\1),g&#39; %</code></pre>
<h2 id="callout-types">Callout Types</h2>
......
---
Title: Courses
---
[RWX]{.spy} courses are designed with our core community [values](/values/) and [opinions](/opinions/) in mind. Above all we believe [becoming an autodidact](/what/autodidact/) and mastering the [linux](/tools/linux/) [terminal](/what/terminal/) are the most important goals since they provide a solid foundation for all other learning and growth.
## Boosts
Boosts are smaller courses to help beginners get started out right but don't get into the details. Often a boost will include a configuration file and brief explanation of what it does so you can become productive as soon as possible.
* Bash
* Vi/m
* TMUX
* Lynx
* SSH
* Git
* cURL
* JQ
* GraphQL
* Find
* HTML
* CSS
* Markdown
* Pandoc
* JavaScript
* Knowledge as Source
## Comprehensive Mastery
Mastery courses cover *every detail* of the topic or tool providing comprehensive coverage with no gaps. For example, *Master Bash* includes coverage of *everything* in the [Bash man page](https://duck.com/lite?kae=t&q=Bash man page).
* Bash
* Vi/m
* TMUX
<!doctype html>
<html lang="en">
<head>
<title>Bash Language Tasks</title>
<title>Courses</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
......@@ -34,20 +34,35 @@
</header>
<main>
<a id=top></a><div class=container>
<h1><a href="https://duckduckgo.com/lite?kae=t&q=Bash Language Tasks">Bash Language Tasks</a></h1>
<h2>HowTo, Recipies, Tutorials</h2>
<p>This is a comprehensive list of Bash <a href="/what/programming/">programming</a> <a href="/what/task/">tasks</a> organized by how commonly you might be asked to use them and therefore importance. Master them progressively in order and <a href="/what/rwx/r/">read</a> about the terms and concepts related to them. <a href="/what/rwx/w/">Write</a> your own <a href="/what/codebook/">codebook</a> containing code with personal notes as you go. Make sure to <a href="/what/rwx/x/">exercise</a> your new skills as soon as you learn them by completing <em>and understanding</em> some of <a href="../mmp/">these mini projects</a> or others of your own creation.</p>
<div class="co-stop">
<p>All the listed tasks could have “from the terminal command line” added to the end. This is assumed.</p>
</div>
<h1>Courses</h1>
<p><span class="spy">RWX</span> courses are designed with our core community <a href="/values/">values</a> and <a href="/opinions/">opinions</a> in mind. Above all we believe <a href="/what/autodidact/">becoming an autodidact</a> and mastering the <a href="/tools/linux/">linux</a> <a href="/what/terminal/">terminal</a> are the most important goals since they provide a solid foundation for all other learning and growth.</p>
<h2 id="boosts">Boosts</h2>
<p>Boosts are smaller courses to help beginners get started out right but don’t get into the details. Often a boost will include a configuration file and brief explanation of what it does so you can become productive as soon as possible.</p>
<ul>
<li>Create a Bash Script
<li>Bash</li>
<li>Vi/m</li>
<li>TMUX</li>
<li>Lynx</li>
<li>SSH</li>
<li>Git</li>
<li>cURL</li>
<li>JQ</li>
<li>GraphQL</li>
<li>Find</li>
<li>HTML</li>
<li>CSS</li>
<li>Markdown</li>
<li>Pandoc</li>
<li>JavaScript</li>
<li>Knowledge as Source</li>
</ul>
<h2 id="comprehensive-mastery">Comprehensive Mastery</h2>
<p>Mastery courses cover <em>every detail</em> of the topic or tool providing comprehensive coverage with no gaps. For example, <em>Master Bash</em> includes coverage of <em>everything</em> in the <a href="https://duck.com/lite?kae=t&amp;q=Bash%20man%20page">Bash man page</a>.</p>
<ul>
<li>Create a New File</li>
<li>Turn a File Into a Bash Script</li>
</ul></li>
<li>Bash</li>
<li>Vi/m</li>
<li>TMUX</li>
</ul>
<p><em>This list of tasks is obviously not yet complete but will eventually be. Adding new tasks will be an ongoing effort. Perhaps you would like to <a href="/contrib/">help</a>?</em></p>
</div>
</main>
<footer>
......
---
Title: Linux Terminal Mastery
Subtitle: Learn to Live on the Command Line
tpl-h1duck: true
tpl-duck: true
---
1. Introduction
......
---
Title: Software Developer
Subtitle: Fastest Growing Tech Profession Per Income
tpl-h1duck: true
tpl-duck: true
---
[Software Developer](https://www.bls.gov/ooh/computer-and-information-technology/information-security-analysts.htm) (aka [Software Engineer]) is the second fastest growing [technology occupation](/jobs/).
......
---
Title: Geting a Job
Subtitle: Again and Again
tpl-h1duck: true
tpl-duck: true
---
Getting a job isn't hard if you are prepared, confident, and have contact with those who need what you have. You simply need to gain their trust by *proving* what you can do for them. Every single position and potential employer will have a different idea about what that proof looks like.
......
---
Title: IoT Embedded Device Developer
Subtitle: Protecting Us from Our Toasters
tpl-h1duck: true
tpl-duck: true
---
It's hard to pin down this new occupation in the industry. It has elements of an [Electrical Engineering](https://www.bls.gov/ooh/architecture-and-engineering/electrical-and-electronics-engineers.htm) as well as [Software Development](/jobs/dev/). It's fair to say that the education and salary are comparable to a [Computer Hardware Engineer](https://www.bls.gov/ooh/architecture-and-engineering/computer-hardware-engineers.htm) (Bachelors, $117,220).
---
Title: Security Analyst
Subtitle: A Hacker By Any Other Name
tpl-h1duck: true
tpl-duck: true
---
The title *Security Analyst* is taken from the [BLS](https://www.bls.gov/ooh/computer-and-information-technology/information-security-analysts.htm) but we are really talking about hackers here, whether they be on the blue team (defense) or red team (offense) or no team (forensics). Hacking is currently the fastest growing technology profession by a long margin when [compared against others](/jobs/) but has a rather unique set of skills required that go far beyond the purely technical.
---
Title: Site Reliability Engineer
Subtitle: Google's Stupid Title for System Administrators Who Codes
tpl-h1duck: true
tpl-duck: true
---
> "[SRE is] what happens when a software engineer is tasked with what used to be called operations."
......
---
Title: System Administrator
Subtitle: Bastard Operators from Hell
tpl-h1duck: true
tpl-duck: true
---
A *System Administrator* keeps the computers up and operational. This [occupation](../) isn't surging in growth but also isn't slowing. There are still servers to be maintained even in a "#serverless" world. Most sysadmins will specialize in a particular operating system family such as Linux, Windows, or Mac. Google famously decided to start calling their sysadmins [Site Reliability Engineers](../sre/) instead.
......
---
Title: Web Developer / Full Stack Developer
Subtitle: 'What even is a *Full Stack Developer*?'
tpl-h1duck: true
tpl-duck: true
---
*Web developer* (aka [Full Stack Developer]) is the third fastest growing [technology occupation](../) and requires the least amount of education.
......
---
Title: Typing / Keyboards / Keystrokes
Subtitle: Grok the Keyboard Like a Coder
tpl-h1duck: true
tpl-duck: true
---
You can't do anything these days without being able to use a keyboard. The selection of a keyboard, however, is a *very* personal decision.
......
---
Title: Recommended Languages to Learn
tpl-h1duck: true
tpl-duck: true
---
The following nine languages provide the most personal empowerment and overall knowledge of how languages work so that you can pick up *any* language later more easily.
......
---
Title: Bash Scripting Language
Subtitle: The Default Interactive Linux Shell
tpl-h1duck: true
tpl-duck: true
---
> "`/bin/bash` is premature optimization." [\@beginbot](https://twitch.tv/beginbot)
......@@ -100,6 +100,7 @@ By the way, if you do *not* understand why `Control`-`L` is so bad to burn into
:::co-pwz
Don't forget to know all the [extra key combinations and how to get yourself unstuck](/key/).
:::
## Omissions
There are several valuable and important elements of Bash that the book leaves out. Make sure you understand them.
......
---
Title: 'Bash MMP: Waffles'
Subtitle: Short-Circuit Logic with Butter and Syrup?
tpl-h1duck: true
tpl-duck: true
---
Watch the [waffles video](https://duck.com/lite?kae=t&q=waffles video) and write a one line program that combines several command functions using short-circuit logical. Remember to create prompts for user input and to fully validate each response.
......
---
Title: Stuff You Can Type Into Bash
---
Bash accepts a lot of different stuff that you can type into the [command line](/what/hci/ui/command/) or place into [scripts](/what/script/).
<!doctype html>
<html lang="en">
<head>
<title>Hyper Text Markup Language / HTML</title>
<title>Stuff You Can Type Into Bash</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
......@@ -34,9 +34,8 @@
</header>
<main>
<a id=top></a><div class=container>
<h1><a href="https://duckduckgo.com/lite?kae=t&q=Hyper Text Markup Language / HTML">Hyper Text Markup Language / HTML</a></h1>
<h2>The <em>Content</em> of the Web</h2>
<p><em>HTML</em> is the main <a href="/lang/">language</a> for the <a href="https://duck.com/lite?kae=t&amp;q=World%20Wide%20Web">World Wide Web</a>. Every <a href="https://duck.com/lite?q=web%20site">web site</a> has some HTML in it. HTML is one of the most important coding language anyone will learn because it is so <a href="/what/ubiquitous/">ubiquitous</a>. Every single technical occupation requires some knowledge of HTML.</p>
<h1>Stuff You Can Type Into Bash</h1>
<p>Bash accepts a lot of different stuff that you can type into the <a href="/what/hci/ui/command/">command line</a> or place into <a href="/what/script/">scripts</a>.</p>
</div>
</main>
<footer>
......
---
Title: Bash Language Tasks
Subtitle: HowTo, Recipies, Tutorials
tpl-h1duck: true
tpl-duck: true
---
This is a comprehensive list of Bash [programming](/what/programming/) [tasks](/what/task/) organized by how commonly you might be asked to use them and therefore importance. Master them progressively in order and [read](/what/rwx/r/) about the terms and concepts related to them. [Write](/what/rwx/w/) your own [codebook](/what/codebook/) containing code with personal notes as you go. Make sure to [exercise](/what/rwx/x/) your new skills as soon as you learn them by completing *and understanding* some of [these mini projects](../mmp/) or others of your own creation.
......
#!/bin/bash
# FIXME breaks on weekfor '????????'
if [[ -n "$COMP_LINE" ]]; then
days=(monday.md tuesday.md wednesday.md thursday.md
friday.md saturday.md saturday.txt sunday.md)
shift
for day in ${days[@]};do
if [[ "$day" =~ ^$1 ]]; then
echo "$day"
fi
done
exit 0
fi
declare day="$1"
[[ -z "$day" ]] && usageln 'week <day>' && exit 1
echo "You wanted ${day}."
---
Title: Easy Bash Programmable Tab Completion
Subtitle: A Tab is Worth a Thousand Words
tpl-h1duck: true
tpl-duck: true
---
Bash tab completion is perhaps one of the most overly and unnecessarily complicated topics in all of Linux. The best documentation on it remains the Bash man page itself, but even that is complex and gives almost *zero* attention to the humble `complete -C foo foo` approach even though implementing tab completion using `-C` instead of `-F` and others means that the code that prints the possible completions is *also* the code that executes the completed command line. Bundling completion *with* the command is simple, concise, and more sustainable. There isn't an additional script to maintain and install (typically in `/etc/bash_completion.d`). Users just add the `complete` to their Bash configuration and works. Those making software packages can still install a separate completion script, but it becomes a single line instead of an overly complicated Bash function. Moreover, your code --- with encapsulated, detectable completion mode --- will be ready to integrate into any number of other shells that support it besides Bash. When you consider these advantages its rather surprising everyone doesn't use this method probably because most just don't know about. Now you do.
......@@ -15,10 +15,10 @@ First you'll need to find a place to create a simple Bash script, preferably not
```sh
cd /tmp
touch week
chmod +x week
chmod u+x week
```
Then go ahead and add the `complete` command for our little test. Note that we are using the local directory path just for our test.
Then go ahead and execute the `complete` command in the currently running shell. Note that we are using the local directory path just for our test.
```sh
complete -C ./week ./week
......@@ -28,6 +28,8 @@ You can already test this by running `./week` and tapping `Tab` a couple times t
## Getting Started with a Simple List
## Simple Grep
......
......@@ -42,8 +42,8 @@
<p>First you’ll need to find a place to create a simple Bash script, preferably not in your <code>PATH</code>.</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1"></a><span class="bu">cd</span> /tmp</span>
<span id="cb1-2"><a href="#cb1-2"></a><span class="fu">touch</span> week</span>
<span id="cb1-3"><a href="#cb1-3"></a><span class="fu">chmod</span> +x week</span></code></pre></div>
<p>Then go ahead and add the <code>complete</code> command for our little test. Note that we are using the local directory path just for our test.</p>
<span id="cb1-3"><a href="#cb1-3"></a><span class="fu">chmod</span> u+x week</span></code></pre></div>
<p>Then go ahead and execute the <code>complete</code> command in the currently running shell. Note that we are using the local directory path just for our test.</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1"></a><span class="bu">complete</span> -C ./week ./week</span></code></pre></div>
<p>You can already test this by running <code>./week</code> and tapping <code>Tab</code> a couple times to see that it does nothing, having taken over the default Bash tab completion that uses files and directories.</p>
<h2 id="getting-started-with-a-simple-list">Getting Started with a Simple List</h2>
......
#!/bin/bash
# FIXME breaks on weekfor '????????'
if [[ -n "$COMP_LINE" ]]; then
......
---
Title: C Programming Language
Subtitle: Created to Create UNIX
tpl-h1duck: true
tpl-duck: true
---
The C programming language is mandatory learning for anyone who truly wants to understand how *all* languages and digital computers work. While it is not the easiest language to learn, it is by far the most significant language ever invented. Every major language and operating system started out in C including the re-write of UNIX from Assembly. Mastering C fundamentals will significantly boost your learning of *any* other language later.
......
---
Title: JavaScript Object Notation / JSON
Subtitle: World's Most Prominent Structured Data Language
tpl-h1duck: true
tpl-duck: true
---
```json
......
---
Title: eXtendible Markup Language / XML
Subtitle: World's Most Hated Structured Data Language
tpl-h1duck: true
tpl-duck: true
---
```xml
......