<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>tools on Senior Software Engineer Reads</title><link>https://llcawthorne.github.io/tags/tools/</link><description>Recent content in tools on Senior Software Engineer Reads</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 01 Oct 2026 16:45:00 -0400</lastBuildDate><atom:link href="https://llcawthorne.github.io/tags/tools/index.xml" rel="self" type="application/rss+xml"/><item><title>Build Websites with Hugo</title><link>https://llcawthorne.github.io/posts/build-websites-with-hugo/</link><pubDate>Thu, 01 Oct 2026 16:45:00 -0400</pubDate><guid>https://llcawthorne.github.io/posts/build-websites-with-hugo/</guid><description>&lt;p&gt;&lt;img alt="Build Websites with Hugo cover" loading="lazy" src="https://llcawthorne.github.io/posts/build-websites-with-hugo/images/cover.jpg"&gt;&lt;/p&gt;
&lt;p&gt;I picked up &lt;em&gt;Build Websites with Hugo&lt;/em&gt; because I&amp;rsquo;m a PragProg loyalist with
plans to revive my old blog, and if they have a book on something I&amp;rsquo;m using, I
like to have an opinion on it. My opinion is that it&amp;rsquo;s fine, but barely. The
book is from 2020, and Hugo has changed enough since then that half the
examples either don&amp;rsquo;t work or generate deprecation warnings. I was running Hugo
0.164 against a book written for 0.68, and the scaffolding generated by
&lt;code&gt;hugo new theme&lt;/code&gt; is completely different now, so it actively conflicted with
the book&amp;rsquo;s instructions at nearly every step.&lt;/p&gt;</description><content:encoded><![CDATA[<p><img alt="Build Websites with Hugo cover" loading="lazy" src="/posts/build-websites-with-hugo/images/cover.jpg"></p>
<p>I picked up <em>Build Websites with Hugo</em> because I&rsquo;m a PragProg loyalist with
plans to revive my old blog, and if they have a book on something I&rsquo;m using, I
like to have an opinion on it. My opinion is that it&rsquo;s fine, but barely. The
book is from 2020, and Hugo has changed enough since then that half the
examples either don&rsquo;t work or generate deprecation warnings. I was running Hugo
0.164 against a book written for 0.68, and the scaffolding generated by
<code>hugo new theme</code> is completely different now, so it actively conflicted with
the book&rsquo;s instructions at nearly every step.</p>
<p>Worse, the entire book has you building a custom theme from scratch, which is a
reasonable way to teach, except that anyone graduating from this book is going
to immediately throw that theme away for something maintained by people who
actually know CSS, so you spend 200 pages building something disposable. What
you do get out of it is an understanding of how Hugo thinks, with the template
hierarchy, partials, taxonomies, front matter, and the asset pipeline, and that
did turn out to be worth something, so just go in knowing you&rsquo;re reading it for
the concepts and not the site. Honestly, you&rsquo;d probably learn as much in an
afternoon of playing with Hugo directly and asking an AI assistant when you get
stuck.</p>
<p>There wasn&rsquo;t much else in it worth remembering, except maybe how to make a cool
&ldquo;This page will take X minutes to read&rdquo; summary.</p>
]]></content:encoded></item><item><title>Practical Vim, 2nd Edition - Second Half</title><link>https://llcawthorne.github.io/posts/practical-vim-2/</link><pubDate>Fri, 26 May 2017 00:00:00 +0000</pubDate><guid>https://llcawthorne.github.io/posts/practical-vim-2/</guid><description>&lt;p&gt;So, I promised I&amp;rsquo;d mention what goodies I find in the second half of
Practical Vim, 2nd Edition. Here they are.&lt;/p&gt;
&lt;h2 id="chapter-10-copy-and-paste"&gt;Chapter 10, Copy and Paste&lt;/h2&gt;
&lt;p&gt;First, the repetition of the insert mode &lt;code&gt;&amp;lt;C-r&amp;gt;{register}&lt;/code&gt; command later
in the book was something I found useful. I think that&amp;rsquo;s a pretty handy
way to paste the contents of a register.
I never knew that &lt;code&gt;&amp;quot;+&lt;/code&gt; let&amp;rsquo;s you access the system clipboard
either. If you put the two together, you can quickly paste from the system
clipboard without leaving insert mode with &lt;code&gt;&amp;lt;C-r&amp;gt;+&lt;/code&gt;. The fact that yank
stores a copy of what it copies in the &lt;code&gt;0&lt;/code&gt; register is pretty handy too.
Nice to have an alternate way to access the last yank if I&amp;rsquo;ve clobbered it.&lt;/p&gt;</description><content:encoded><![CDATA[<p>So, I promised I&rsquo;d mention what goodies I find in the second half of
Practical Vim, 2nd Edition.  Here they are.</p>
<h2 id="chapter-10-copy-and-paste">Chapter 10, Copy and Paste</h2>
<p>First, the repetition of the insert mode <code>&lt;C-r&gt;{register}</code> command later
in the book was something I found useful.  I think that&rsquo;s a pretty handy
way to paste the contents of a register.
I never knew that <code>&quot;+</code> let&rsquo;s you access the system clipboard
either.  If you put the two together, you can quickly paste from the system
clipboard without leaving insert mode with <code>&lt;C-r&gt;+</code>.  The fact that yank
stores a copy of what it copies in the <code>0</code> register is pretty handy too.
Nice to have an alternate way to access the last yank if I&rsquo;ve clobbered it.</p>
<h2 id="chapter-11-macros">Chapter 11, Macros</h2>
<p>Most of the macros chapter was fairly new to me.  I knew the basics of how to
record and playback macros, and have used them before when in native vim and
not using an emulator.  But I&rsquo;ve never given macros intense thought or tried
to be terribly clever with them.  He goes into the idea of crafting resilient
reusable macros in some depth in the tips focused on them and covers a handful
of macro best practices.  As he puts it, &ldquo;The golden rule is this: when
recording a macro, ensure that every command is repeatable.&rdquo;</p>
<p>The author sums up macro advice with the phrase &ldquo;Normalize, Strike, Abort&rdquo;
The first question to ask when crafting a macro is, &ldquo;where am I, where
have I come
from, and where am I going.&rdquo;  Make sure the cursor is positioned so the
next command does as expected where expected.  You shouldn&rsquo;t use the
mouse when recording a macro, so make sure to take advantage of the full
range of available motion commands to maneuver to the right location to
strike.  If a motion fails while a macro is executing, Vim will abort the
rest of the macro.  This is a feature!  You don&rsquo;t want to execute your
command when you aren&rsquo;t in the right location.  Motions can act as a simple
test as to whether or not the macro should be executed.  Remember that
search is a motion too.  You can do a lot with a macro that uses the <code>n</code>
key to go to the next search item and perform an action.  Once no matches
remain, <code>n</code> will fail and the macro will stop.</p>
<p>Tip 67 points out how a simple two key macro can be useful to move and perform
the dot command multiple times.  You can&rsquo;t repeat with dot, and if you could
the number would either repeat the move multiple times or repeat the dot
multiple times in the same place, so a simple macro of a movement command
and dot is a clever trick tie a move and repeat together and replay it
multiple times.  Again, you can count on the motion failing at the end if
you choose the right motion, so you don&rsquo;t have to worry about the exact
count.  The example is as follows:</p>
<blockquote>
<p>{start}
x = &ldquo;(&quot;+a+&rdquo;,&quot;+b+&quot;,&quot;+c+&quot;,&quot;+d+&quot;,&quot;+e+&quot;)&quot;;</p>
</blockquote>
<p>And we want to change it to:</p>
<blockquote>
<p>{goal}
x = &ldquo;(&rdquo; + a + &ldquo;,&rdquo; + b + &ldquo;,&rdquo; + c + &ldquo;,&rdquo; + d + &ldquo;,&rdquo; + e + &ldquo;)&rdquo;;</p>
</blockquote>
<p>And it can be achieved with the following keystrokes:</p>
<ol>
<li><code>f+</code></li>
<li><code>s + &lt;Esc&gt;</code></li>
<li><code>qq;.q</code></li>
<li><code>22@q</code></li>
</ol>
<p>That&rsquo;s much simpler than adding the spaces around the + marks by hand.
Since the <code>f+</code> movement will fail after we are out of +&rsquo;s, it is safe
to run the macro 22 times.  The author admits to being lazy like this
often.  22 is his go to repeat number, since 2 is the same key as
@ to run the macro.  That&rsquo;s a great example of making use of &ldquo;Abort&rdquo;.</p>
<p>Appending keystrokes to macros works just like appending yanks to registers.
<code>qA</code> will append commands on the end of the macro in register a.  That&rsquo;s a
small but handy tip for getting more from macros.  The next tip covers how
to apply a macro to a series of files, either with <code>:argdo normal @a</code> or by
manually advancing with <code>:next</code> to act across the argument list.  The example
he uses is a pretty handy one of wrapping several classes in a module
declaration and adding proper indentation.  The next tip seems handy, but I
doubt it&rsquo;s general enough use for me to remember it.  It covers how to prepend
an incrementing line count to multiple lines.  The final tip of the chapter
covers the fact that you can put a macro from a register, then edit the
macro text, then yank the macro back to the register.  An interesting option
for editing macros!  One note is to be careful to use a character-wise
yank like <code>&quot;ay$&quot;</code>, or else you might get an extra <code>&lt;CR&gt;</code> at the end of
your macro.</p>
<h2 id="chapter-12---matching-patterns-and-literals">Chapter 12 - Matching Patterns and Literals</h2>
<p>First off, I learned the handy tidbit that using <code>\c</code> in a search pattern
causes it to ignore case, and <code>\C</code> to be case sensitive, regardless of
<code>ignorecase</code> settings.  You can put them anywhere in the pattern, including
just tacking them on the end.  I like the default <code>smartcase</code> where if you
include an uppercase letter it is case sensitive, otherwise not.</p>
<p>The <code>\v</code> switch anywhere in a regex makes it &ldquo;very magic&rdquo;, or more like what
you might be used to from Perl, Python, or Ruby.  It makes all characters
assume a special meaning except for &ldquo;_&rdquo;, letters, and numbers,
so you don&rsquo;t need to escape all your braces,
brackets, and parentheses.  It makes the difference between
<code>#\([0-9a-fA-F]\{6}\|[0-9a-fA-F]\{3}\)</code> and
<code>\v#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})</code> to match CSS color codes, a regex
that can be made slightly even better using the <code>\x</code> hex class as
<code>\v#(\x{6}|\x{3})</code>.  The <code>\V</code> or <code>verynomagic</code> option makes a search
only search by the literal meaning of symbols provided, even <code>.</code>, <code>*</code>,
and <code>?</code>.  Only the <code>\</code> character has special meaning in a <code>verynomagic</code>
search.  So ultimately, both the <code>\v</code> and <code>\V</code> search options are
terribly useful and worth remembering.  A good example of the <code>\V</code> option
is searching for &ldquo;a.k.a.&rdquo; with <code>/\Va.k.a.</code> instead of <code>/a\.k\.a\.</code>
I think the argument has won me over well enough to use <code>\v</code> most of
the time and <code>\V</code> on special occasions.</p>
<p>Another handy fact for regular expressions is that in <code>verymagic</code> search
mode, the <code>&lt;</code> and <code>&gt;</code> keys match word boundaries.  So a search for
<code>\v&lt;the&gt;</code> will find all the &ldquo;the&rdquo; occurrences without any &ldquo;their&rdquo; or
&ldquo;these&rdquo; being matched.  It goes on to cover some ways to handle search
field terminators in the final tip of the chapter.</p>
<h2 id="chapter-13---searching-14---substitution-15---global-commands">Chapter 13 - Searching, 14 - Substitution, 15 - Global Commands</h2>
<p>I didn&rsquo;t find anything in these two chapters particularly worthwhile, except
the fact that you can leave the search part of a substitute command blank
to use whatever the last successful search was as the pattern.  That
decouples finding the right search pattern from the overall substitute
command, and you normally want to search first anyway to make sure you
got your pattern right before making changes.   The search and replace
across a project tip was possibly useful.  Everything about the global
command was new to me and worth playing with.</p>
<h2 id="chapter-16---index-and-navigate-source-code-with-ctags">Chapter 16 - Index and Navigate Source Code with ctags</h2>
<p>This  whole chapter is about ctags and was all new to me.  It looks like an
excellent way to get the ability to jump to definitions in vim.  Apparently
I&rsquo;ve been living under a rock, since I was unaware of this feature.  This
looks like a key step into making Vim into a development environment instead
of just an editor.</p>
<h2 id="chapter-17---compile-code-and-navigate-errors-with-the-quickfix-list">Chapter 17 - Compile Code and Navigate Errors with the Quickfix List</h2>
<p>The quickfix and location lists seem handy, assuming you map navigating them
to something more convenient than typing <code>:cnext</code> and <code>:cprev</code>.  I&rsquo;ll have
to checkout the unimpaired plugin he mentions that makes the quicklist
navigable by <code>[q</code> and <code>]q</code>.  It has a number of other handy mappings, so it&rsquo;s
worth checking out instead of just putting the one set of mappings in my
vimrc.  I think I&rsquo;ll use the Tip 108 that has you make <code>:make</code> run JSLint
and populate the quickfix list with any linting errors.  I didn&rsquo;t fully
understand how to do it from the tip, but this github project looks useful:
<a href="https://github.com/bigfish/vim-nodelint">vim-nodelist</a>.</p>
<h2 id="chapter-18---search-project-wide-with-grep-vimgrep-and-others">Chapter 18 - Search Project-Wide with grep, vimgrep, and Others</h2>
<p>There&rsquo;s so many neat random things in this book.  Today I learned that there&rsquo;s
a version of grep optimized for programmers called ack.
<a href="https://beyondgrep.com/">Ack</a>.  To relate it back to vim, the book explains
how to make the vim <code>:grep</code> command use ack instead, but then tells you not
to, since there is an ack plugin for vim
<a href="https://github.com/mileszs/ack.vim">ack.vim</a>
that will use it with the <code>:ack</code> command.</p>
<h2 id="chapter-19---dial-x-for-autocompletion">Chapter 19 - Dial X for Autocompletion</h2>
<p>There&rsquo;s plugins for better autocompletion than what&rsquo;s built in.  It looks like
you can complete based off ctags with <code>&lt;C-x&gt;&lt;C-]&gt;</code> or use
<code>&lt;C-x&gt;&lt;C-i&gt;</code> to complete based off your imports in various languages.
Generic autocompletion is based off <code>&lt;C-n&gt;</code> and is probably best of the
built-ins.  You use <code>&lt;C-n&gt;</code> and <code>&lt;C-p</code> to choose next  or previous.</p>
<h2 id="chapter-20---find-and-fix-typos-with-vims-spell-checker">Chapter 20 - Find and Fix Typos with Vim&rsquo;s Spell Checker</h2>
<p>This one starts out simple, with how to use the built in spell checker.  First
think I learned is that <code>z=</code> on a misspelled word will bring up suggestions
and <code>[s</code> and <code>]s</code> let you jump between misspelled words.  I was able to try
those out successfully while writing this blog post.  <code>zg</code> adds a word to the
spell file, which worked great to add &ldquo;blog&rdquo;.  Apparently, you can fix
misspelled words without leaving Insert mode with <code>&lt;C-x&gt;s</code> to
enable autocomplete misspelled mode.  It will jump you back to the last
misspelled word and offer suggestions from the dictionary.  Pretty handy!</p>
<h2 id="summary">Summary</h2>
<p>Overall, I think I picked up more tips than I can reasonably integrate into
my workflow at once from my first reading of Practical Vim, Second Edition.
That&rsquo;s why I put a lot of them here on my blog, to remind me to try them
out.  I believe there&rsquo;s still enough that I didn&rsquo;t mention to make the book
worth another read, or at least a re-read several spots in it.  I highly
recommend it if you are already comfortable using Vim and want to pickup
tricks to take your Vim workflow to the next level.</p>
]]></content:encoded></item><item><title>Practical Vim, 2nd Edition - First Half</title><link>https://llcawthorne.github.io/posts/practical-vim-1/</link><pubDate>Mon, 22 May 2017 00:00:00 +0000</pubDate><guid>https://llcawthorne.github.io/posts/practical-vim-1/</guid><description>&lt;p&gt;Practical Vim is an excellent resource for tips and trick for using vim.
It focuses on core vim features, and doesn&amp;rsquo;t spend any room talking about
plugins. Aside from a few hints to how .vimrc settings might affect certain
commands, it doesn&amp;rsquo;t spend any time telling you what to put in your .vimrc.
It does have an appendix about vimrc settings, in case you need some new ones.
The book is laid out as a series of 123 mostly standalone tips, although
they do follow a procession of least to most difficult within their
respective section. The tips are split between 20 sections. The book
doesn&amp;rsquo;t attempt to go into Vimscript. Overall, I found it a useful collection
of mostly non-obvious tips for using vim, and I feel like it has made me
more capable in using my editor of choice.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Practical Vim is an excellent resource for tips and trick for using vim.
It focuses on core vim features, and doesn&rsquo;t spend any room talking about
plugins.  Aside from a few hints to how .vimrc settings might affect certain
commands, it doesn&rsquo;t spend any time telling you what to put in your .vimrc.
It does have an appendix about vimrc settings, in case you need some new ones.
The book is laid out as a series of 123 mostly standalone tips, although
they do follow a procession of least to most difficult within their
respective section.  The tips are split between 20 sections.  The book
doesn&rsquo;t attempt to go into Vimscript.  Overall, I found it a useful collection
of mostly non-obvious tips for using vim, and I feel like it has made me
more capable in using my editor of choice.</p>
<p>The author recommends skipping around rather than reading the book from
beginning to end, however, I still found the book quite readable.  The
tips vary in difficulty from very basic (Ex: Tip 47 is &ldquo;Keep Your Fingers
on the Home Row&rdquo; and covers h, j, k, and l) to fairly advanced (Ex:
Edit the Contents of a Macro).  I really enjoy the way the author doesn&rsquo;t
repeat any content readily available in the manual.  In the electronic copy,
he links any manual references to a website with the vim manual.  For people
reading along, he provides the proper keyword to use with :h in order to
lookup the topic via vim help.  This allows him to not spend a lot of time
on prerequisite info and get directly to useful tips.</p>
<p>Some tidbits that I&rsquo;ve found useful so far are the keystrokes that he mentions
being available in Insert mode.  I never paid attention to the fact that you
can use &lt;C-w&gt; to delete back one word without leaving insert mode,
&lt;C-r&gt;{register} to quickly paste the contents of a register, and
&lt;C-v&gt;u{1234} to insert unicode character #1234, all without leaving insert
mode.  In both the previous examples, the selection in curly brackets is
replaced with just a register or just a four digit number, the curly brackets
are not typed literally.
I generally like hitting my keys one at a time while in vim, but
those are a couple of useful chords to use in insert mode.  I&rsquo;m not sure
I&rsquo;ll use the unicode one often enough to remember it, but the other two
are pretty easy to remember and of general use.  There is no tip like
&ldquo;Here are some keystrokes for Insert mode.&rdquo; but the author instead worked
providing these keystrokes into the explanation of how to do something.
The &lt;C-r&gt;{register} keystroke was provided in the &ldquo;Paste from a Register
Without Leaving Insert Mode&rdquo; tip which focused on it and &lt;C-v&gt;u{1234}
was from the &ldquo;Insert Unusual Characters by Character Code&rdquo; tip, but
the &lt;C-w&gt; keystroke was provided in the more general &ldquo;Make Corrections
Instantly from Insert Mode&rdquo; tip.</p>
<p>I learned a lot that I didn&rsquo;t know before in the section on Command-Line Mode.
As the author puts it, &ldquo;Ex commands strike far and wide.&rdquo;  I was unaware of
how the range worked with ex commands and of the variety of ex commands
available.  There are commands to delete, yank, put, copy, move, join,
normal (execute Normal mode commands on a specified or range of lines),
substitute, and global (execute and ex command where a pattern matches).
I&rsquo;ve used substitute a decent bit, but never remember knowing about the
others and how you can make them all work flexibly with a range without
having to move the cursor there first.  It&rsquo;s especially convenient that
you can use V to switch into visual line mode and select some lines, then
it will prepopulate the range of lines into your : for executing an ex
command.  You can also use % to target the whole file with a command,
which is how I&rsquo;m accustomed to working with substitute.  As an example,
<code>:%normal A;</code> will append a semicolon to every line in a file or
<code>%normal i//</code> will comment out every line in a file given a language
where <code>//</code> starts comments.  You can even write a script of ex commands
and load it into vim with <code>:source {filename}</code>.</p>
<p>I also learned that in you can use <code>:edit %:h</code> to load the working directory
of the currently active buffer as a parameter to edit, and then tab complete
it to the name of another file in the same directory.  The book recommends
you alias <code>%%</code> to <code>%:h</code> since this is so handy.  That remap made it into my
vimrc.  You can even open a file in a nonexistant directory and then use
<code>:!mkdir -p %:h</code> to create the directory so you can save the file.</p>
<p>The only obvious problem I had with some of the content is that some of it
(like the ex commands) is too vim specific to work with vim emulators.
Anymore, I spend a lot more time using IdeaVIM in IntelliJ than I clock with
real vim, but that&rsquo;s largely a personal problem.  The author doesn&rsquo;t avoid
forward references, which is only a problem if you&rsquo;re trying to read the
book through rather than skip around as recommended.  Also, the author
sometimes punts further explanation to
<a href="http://www.vimcasts.org/">VimCasts</a>.  VimCasts is an excellent resource,
and the author of this book is the man behind the site, but I like having
explanations in the book I bought rather than having to look to outside
video for them.  In his defense, he only does it for some of the more
graphical tasks like splitting windows and such.  Also, around midway
through the book when it gets to motion keys, it feels like backtracking
to such simple topics to have a Tip 47 that covers h, j, k, and l keys
and keeping your hands on home row.  This leads to a number of other
rather simplistic motion tips that are not new to anyone that&rsquo;s used
vim very long.  Fortunately these are all kept to one chapter, Chapter 8.
The fact that these complaints are all pretty nitpicky goes to show
that overall, I didn&rsquo;t find many problems with this book.</p>
<p>In general, I especially enjoy how the author explains his thinking behind
the use of
certain commands.  He&rsquo;ll sometimes show how to do something in multiple
ways that use the same number of keystrokes, and then explain why one way
better fits the general vim mindset (which often means its better for
re-use via the . command).  He does a lot of this early on in the book,
but the tips later in the book he tends to show the one way to perform
an operation.</p>
<p>I&rsquo;m only halfway through the book now, but this post is getting long
enough.  I&rsquo;ll go ahead and post what I&rsquo;ve written about the first half
of the book, and add another post later if I find some awesome tips
worth mentioning in the latter half of this book.</p>
<p><a href="http://llcawthorne.github.io/blog/2017/05/22/practical-vim-2">Second Half</a></p>
]]></content:encoded></item><item><title>Command Line Power User</title><link>https://llcawthorne.github.io/posts/command-line-power-user/</link><pubDate>Fri, 19 May 2017 00:00:00 +0000</pubDate><guid>https://llcawthorne.github.io/posts/command-line-power-user/</guid><description>&lt;p&gt;Well, I promised I would review
&lt;a href="http://www.commandlinepoweruser.com/"&gt;Command Line Power User&lt;/a&gt;
the other day when I did the
&lt;a href="http://www.masteringmarkdown.com/"&gt;Mastering Markdown&lt;/a&gt; video, so here it
is. This is probably a better video series to give me an opinion of his
teaching skills, since it isn&amp;rsquo;t something I know entirely and is actually
a little over an hour of video. Each video is longer also, so it probably
won&amp;rsquo;t annoy me so much when the video player scrolls down to where I can&amp;rsquo;t
see the video after switching files.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Well, I promised I would review
<a href="http://www.commandlinepoweruser.com/">Command Line Power User</a>
the other day when I did the
<a href="http://www.masteringmarkdown.com/">Mastering Markdown</a> video, so here it
is.  This is probably a better video series to give me an opinion of his
teaching skills, since it isn&rsquo;t something I know entirely and is actually
a little over an hour of video.  Each video is longer also, so it probably
won&rsquo;t annoy me so much when the video player scrolls down to where I can&rsquo;t
see the video after switching files.</p>
<p>The first video is seven minutes of basics that are really basic.  He advised
it was skippable, and I should have taken his advice.  He recommends
installing iTerm 2 in OS X, which is what I use already on my Macbook.  He
recommends cygwin for Windows, but I tend to prefer
<a href="http://babun.github.io/">babun</a> on Windows.  I&rsquo;m watching these on the
Macbook anyway.  He recommends installing zshell and oh-my-zsh, which I
already use and enjoy.  So we&rsquo;re about to where I learn some stuff.</p>
<p>The fifth video is about colors.  It has some annoying flicking going on.
Fortunately that went away.  I was wrong about when I would learn something.
He&rsquo;s just focusing on how to edit your zshrc in video six.  Ooo, in video
seven I learned you can CMD+click links in terminal to open them in browser;
that&rsquo;s new.  Being able to use <code>take</code> to make a directory and create it at
the same time is new to me also.  Next video is covering command history,
which is a pretty standard zshell feature.  At least it&rsquo;s short.</p>
<p>Video nine is about zsh plugins.  I never remember to use my plugins often
enough, but I have a lot enabled.  I didn&rsquo;t like most of the plugins he
showed off, but it&rsquo;s useful to get people thinking about looking at the
plugins to find something they&rsquo;ll find useful.  It reminds me to lookup
commands of some of the ones I have installed.  Video ten is about <code>z</code>,
which is unrelated to zshell and completely new to me.  It&rsquo;s pretty cool.
It tracks frequently and recently used directories and lets you switch to
them via <code>z regex</code> where regex is a partial match for the directory name.
It will switch across multiple directories with the one command easily.
I see from the video that I could&rsquo;ve installed it via homebrew rather than
by hand, but it&rsquo;s already installed manually now.  It has some handy options
that are covered in the manpage.  The final tip is about <code>trash</code>, which
is like rm, but it puts what is deleted in your Trash.  I think I&rsquo;m
accustomed enough to rm not to worry about that, but those might be words
I regret someday.</p>
<p>Overall, I think there was a lot of useful stuff if you aren&rsquo;t already
familiar with zshell and oh-my-zsh.  It was a little long for the little
bit that I got out of it, but I picked up a couple of useful tips.
Overall, his teaching style is reasonable.  I didn&rsquo;t feel like falling
asleep during either of his videos, and he doesn&rsquo;t come off like he&rsquo;s
just directly reading from notes or anything.  I might try the
<a href="https://javascript30.com/">JavaScript 30 series</a> when I&rsquo;m in the mood to
code some JS, since it&rsquo;s free also.  It should be a bit more substantial.
Hopefully it doesn&rsquo;t start out as slow.</p>
]]></content:encoded></item><item><title>Mastering Markdown</title><link>https://llcawthorne.github.io/posts/mastering-markdown/</link><pubDate>Wed, 17 May 2017 00:00:00 +0000</pubDate><guid>https://llcawthorne.github.io/posts/mastering-markdown/</guid><description>&lt;p&gt;Well, for something a little different, I decided to write my opinion of a
free video course. Since I&amp;rsquo;m writing my blog in markdown, I figured why
not review it with something other than the Kramdown cheatsheet.
&lt;a href="http://wesbos.com/"&gt;Wes Bos&lt;/a&gt;
has a number of video courses, some free and some paid for. His
&lt;a href="https://masteringmarkdown.com/"&gt;Mastering Markdown&lt;/a&gt; course is one of the free
ones. It&amp;rsquo;s really only a single 23 minute video, so not much of a course, but
since he just came out with a Learn Node course and has another longer free
course of Javascript projects, I figured why not try the little course to get
a feel for his teaching style and see if I want to invest any more time
and/or money in more of
his courses later. His other free courses if you&amp;rsquo;re interested include
&lt;a href="https://commandlinepoweruser.com/"&gt;Command Line Power User&lt;/a&gt; which has some
Z shell tips that I might check out, since I&amp;rsquo;m sure I&amp;rsquo;m not making the most
of it, and &lt;a href="https://javascript30.com/"&gt;JavaScript 30&lt;/a&gt;
which is 30 days of building
30 things in vanilla JS (which promises no frameworks, no compilers, no
libraries, and no boilerplate). Unless this one is terribly, I&amp;rsquo;ll probably
sit through the command line one after this. The JavaScript 30 one I&amp;rsquo;ll
only invest time in if I like these two. Well, without further ado, here&amp;rsquo;s
my opinion of &lt;a href="https://masteringmarkdown.com/"&gt;Mastering Markdown&lt;/a&gt;.&lt;/p&gt;</description><content:encoded><![CDATA[<p>Well, for something a little different, I decided to write my opinion of a
free video course.  Since I&rsquo;m writing my blog in markdown, I figured why
not review it with something other than the Kramdown cheatsheet.
<a href="http://wesbos.com/">Wes Bos</a>
has a number of video courses, some free and some paid for.  His
<a href="https://masteringmarkdown.com/">Mastering Markdown</a> course is one of the free
ones.  It&rsquo;s really only a single 23 minute video, so not much of a course, but
since he just came out with a Learn Node course and has another longer free
course of Javascript projects, I figured why not try the little course to get
a feel for his teaching style and see if I want to invest any more time
and/or money in more of
his courses later.  His other free courses if you&rsquo;re interested include
<a href="https://commandlinepoweruser.com/">Command Line Power User</a> which has some
Z shell tips that I might check out, since I&rsquo;m sure I&rsquo;m not making the most
of it, and <a href="https://javascript30.com/">JavaScript 30</a>
which is 30 days of building
30 things in vanilla JS (which promises no frameworks, no compilers, no
libraries, and no boilerplate).  Unless this one is terribly, I&rsquo;ll probably
sit through the command line one after this.  The JavaScript 30 one I&rsquo;ll
only invest time in if I like these two.  Well, without further ado, here&rsquo;s
my opinion of <a href="https://masteringmarkdown.com/">Mastering Markdown</a>.</p>
<p>Good to see that he isn&rsquo;t opinionated about editors.  He says use whatever
editor you&rsquo;re most comfortable with, even vim.  He uses Sublime Text though
and recommends a package for it, if you use it.  I went ahead and installed
it in my copy of Sublime Text.  It&rsquo;s called MarkdownEditing and has a lot
more features than the built in Sublime Markdown package.  I spent almost
as much time reading the Package Control Messages as the runtime of these
videos, but oh well, sometimes I open stuff up in Sublime, so I might as
well get it working alright.  I took this chance to toggle some settings
in vim-markdown while I was thinking about it.</p>
<p>It&rsquo;s a little annoying that his video player jumps down to the video list
when it advances videos.  Each one, I have to scroll back up after it
advances to see the video again.  Probably wouldn&rsquo;t be so bad on my big
monitor instead of the laptop screen.  It&rsquo;s made even more annoying by how
short the videos are. Video quality is good, and it is nice that it saves
the fact that I&rsquo;ve set the speed up to 1.25 when it switches videos.  I
learned something about footnote links that I had forgotten, and a cool
feature that lets you highlight a code block as a diff, so it wasn&rsquo;t
time wasted.  He talks a little fast anyway, so I probably wouldn&rsquo;t need
the speed increase for something that I didn&rsquo;t already know.</p>
<p>Overall, I thought the video was OK.  I&rsquo;ll try the
<a href="http://commandlinepoweruser/">Command Line Power User</a> course too and see
what I think of it.  Currently I just use zshell with oh-my-zsh and a
couple of plugins enabled, so maybe I can learn some more zshell tricks.</p>
]]></content:encoded></item></channel></rss>