<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Mitchell Allain</title>
    <subtitle>Robotics software engineer writing about systems, controls, and software.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://mitchellallain.com/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://mitchellallain.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2023-04-30T00:00:00+00:00</updated>
    <id>https://mitchellallain.com/atom.xml</id>
    <entry xml:lang="en">
        <title>Tmux + Neovim for Robotics Development - Part 1 Dotfiles</title>
        <published>2023-04-30T00:00:00+00:00</published>
        <updated>2023-04-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mitchellallain.com/posts/neovim-tmux-part-1/"/>
        <id>https://mitchellallain.com/posts/neovim-tmux-part-1/</id>
        
        <content type="html" xml:base="https://mitchellallain.com/posts/neovim-tmux-part-1/">&lt;h2 id=&quot;table-of-contents&quot;&gt;Table of Contents&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#tmux-neovim-for-robotics-development-a-series&quot;&gt;Tmux + Neovim for Robotics Development - A Series&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#motivation&quot;&gt;Motivation&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#version-controlling-dotfiles&quot;&gt;Version Controlling Dotfiles&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#option-1-symlinks-and-dotbot-recommended&quot;&gt;Option 1: Symlinks and Dotbot - Recommended&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#option-2-bare-git-repository&quot;&gt;Option 2: Bare Git Repository&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#tips-for-maintaining-dotfiles&quot;&gt;Tips for Maintaining Dotfiles&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#naming-dotfiles&quot;&gt;Naming Dotfiles&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#meld-or-diff-before-replacing&quot;&gt;Meld or Diff Before Replacing&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#conditional-path-extensions&quot;&gt;Conditional Path Extensions&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mitchellallain.com&#x2F;posts&#x2F;neovim-tmux-part-1&#x2F;#reference-peers-dotfiles-and-share-your-own&quot;&gt;Reference Peers Dotfiles and Share Your Own&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;tmux-neovim-for-robotics-development-a-series&quot;&gt;Tmux + Neovim for Robotics Development - A Series&lt;&#x2F;h2&gt;
&lt;p&gt;This article is the first of a series on robotics software development using
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;neovim.io&#x2F;&quot;&gt;neovim&lt;&#x2F;a&gt; and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;tmux&#x2F;tmux&quot;&gt;tmux&lt;&#x2F;a&gt;, and a few
other loosely-related CLI tools.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;This is an opinionated series&lt;&#x2F;strong&gt;. Comparisons are based on my subjective
experience, but I will try to breakdown trade-offs where appropriate.
Development environments are highly individualized, even within the same
application domain. That said, I would love to hear your feedback.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;motivation&quot;&gt;Motivation&lt;&#x2F;h3&gt;
&lt;p&gt;For over 6 years now, I have been developing robotic software systems with
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.ros.org&#x2F;&quot;&gt;ROS&lt;&#x2F;a&gt;, a framework which requires frequent interaction
with the Linux command-line interface (CLI) for configuring, launching, and
testing robotic systems. In that time, I have developed a deep appreciation for
certain characteristics of command-line tooling, namely:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Unix_philosophy&quot;&gt;the Unix philosophy&lt;&#x2F;a&gt;, in
particular the preference for &quot;small, sharp tools&quot;&lt;&#x2F;li&gt;
&lt;li&gt;the stability of command structures and options relative to the ever-changing
nature of GUIs, desktop environments, and operating systems (e.g., git versus
your favorite graphical git tool)&lt;&#x2F;li&gt;
&lt;li&gt;the ability to use the same tooling when connected to an embedded device via
SSH (without X11 forwarding)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;However, robotics software development remains a relatively small sub-field of
professional software engineering, which often leads us to borrow tooling and
workflows from larger communities, including Linux system administration,
systems programming, big data, and web development.&lt;&#x2F;p&gt;
&lt;p&gt;The goal of this series is to introduce a focused set of CLI tools and workflows
which lend themselves to supporting robotics development, and perhaps encourage
younger robotics developers to invest in their shell development environment,
which will pay dividends throughout their careers.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;version-controlling-dotfiles&quot;&gt;Version Controlling Dotfiles&lt;&#x2F;h2&gt;
&lt;p&gt;Before you can begin to supercharge your development workflow with tmux and
neovim (or improve your existing workflow with those tools), we have to talk
about &lt;strong&gt;dotfiles&lt;&#x2F;strong&gt;. Dotfiles are a colloquial term for the hidden configuration
files which are located within a user&#x27;s home directory and subdirectories on
UNIX-based systems (see also
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;wiki.archlinux.org&#x2F;title&#x2F;XDG_Base_Directory&quot;&gt;&lt;code&gt;XDG_CONFIG_HOME&lt;&#x2F;code&gt;&lt;&#x2F;a&gt;), named
after the leading dot (&lt;code&gt;.&lt;&#x2F;code&gt;) character characteristic of hidden files.&lt;&#x2F;p&gt;
&lt;p&gt;If you have developed software within a Linux environment, you have likely
edited some of these files — you may have even customized your &lt;code&gt;.bashrc&lt;&#x2F;code&gt;,
&lt;code&gt;.bash_profile&lt;&#x2F;code&gt;, or created a &lt;code&gt;.bash_aliases&lt;&#x2F;code&gt; for some of your favorite bash
functions. These files configure the shell and login environment, and are beyond
the scope of this series. However, these are often a Linux user&#x27;s first
interaction with dotfiles, followed soon after by the configuration of installed
programs and tools like &lt;code&gt;git&lt;&#x2F;code&gt; or &lt;code&gt;ssh&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Your dotfiles should be tracked in a git repository and checked into source
control.&lt;&#x2F;strong&gt; This provides a few benefits:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Efficiency&lt;&#x2F;strong&gt; - Reduce the time to setup a new installation of Linux, or to
synchronize changes between multiple machines&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Sharing&lt;&#x2F;strong&gt; - Easily share configuration files with peers (e.g., via public
GitHub repository)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Change Management&lt;&#x2F;strong&gt; - View the history of modifications to your config files
(i.e., the main benefit of VCS)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Whether you work with many Linux devices or just one development machine, and
regardless of how frequently you setup a new Linux installation, you should be
tracking changes to dotfiles in version control (e.g., git).&lt;&#x2F;p&gt;
&lt;p&gt;There are many ways to achieve this, but I will highlight two: via &lt;strong&gt;symlinks&lt;&#x2F;strong&gt;
or &lt;strong&gt;a bare repository&lt;&#x2F;strong&gt;. While I will contrast the two in the following
sections, both are good options, with pretty minor trade-offs.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;option-1-symlinks-and-dotbot-recommended&quot;&gt;Option 1: Symlinks and Dotbot - Recommended&lt;&#x2F;h3&gt;
&lt;p&gt;Perhaps the most popular method of version-controlling dotfiles, is to migrate
them to a git repository within the &lt;code&gt;$HOME&lt;&#x2F;code&gt; folder, e.g., &lt;code&gt;$HOME&#x2F;dotfiles&#x2F;&lt;&#x2F;code&gt;, and
to symlink those files back to their original directories. While this can be
achieved without any external tooling, there is an excellent tool called
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;anishathalye&#x2F;dotbot&quot;&gt;dotbot&lt;&#x2F;a&gt;, which facilitates symlink
creation and can be embedded in your dotfiles as a submodule for a seamless
setup experience. The &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;anishathalye&#x2F;dotbot&quot;&gt;dotbot&lt;&#x2F;a&gt; repo
provides plenty of instructions for setting up a new or existing dotfiles
repository to use dotbot.&lt;&#x2F;p&gt;
&lt;p&gt;While the next option is able to achieve the same end using only git, I have
been pleased with using dotbot for many years and therefore am happy to
recommend it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;option-2-bare-git-repository&quot;&gt;Option 2: Bare Git Repository&lt;&#x2F;h3&gt;
&lt;p&gt;This technique follows
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.atlassian.com&#x2F;git&#x2F;tutorials&#x2F;dotfiles&quot;&gt;a tutorial from Atlassian&lt;&#x2F;a&gt;,
and prevents the use of symlinks with some clever git configuration that
separates the working directory (your &lt;code&gt;$HOME&lt;&#x2F;code&gt; folder) from a bare git
repository, (e.g., &lt;code&gt;$HOME&#x2F;.cfg&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;tips-for-maintaining-dotfiles&quot;&gt;Tips for Maintaining Dotfiles&lt;&#x2F;h2&gt;
&lt;p&gt;Regardless of which of the two prior options you choose, here are a few useful
tips for maintaining a dotfiles repository through OS upgrades and across
multiple systems.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;naming-dotfiles&quot;&gt;Naming Dotfiles&lt;&#x2F;h3&gt;
&lt;p&gt;Some popular dotfiles examples on GitHub will omit the leading dot character
from the source filename, e.g. &lt;code&gt;.bashrc -&amp;gt; &#x2F;home&#x2F;mallain&#x2F;dotfiles&#x2F;bashrc&lt;&#x2F;code&gt;,
however this can cause syntax highlighting to suffer in some editors and
therefore is not recommended.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;meld-or-diff-before-replacing&quot;&gt;Meld or Diff Before Replacing&lt;&#x2F;h3&gt;
&lt;p&gt;It is good practice when upgrading to new Linux distributions to use &lt;code&gt;diff&lt;&#x2F;code&gt; to
compare the default shell configuration for that distribution with that of your
dotfiles, before replacing the former. As an alternative, &lt;code&gt;meld&lt;&#x2F;code&gt; could be used
to merge in any changes interactively.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #24292E; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;diff ~&#x2F;.bashrc ~&#x2F;dotfiles&#x2F;.bashrc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;conditional-path-extensions&quot;&gt;Conditional Path Extensions&lt;&#x2F;h3&gt;
&lt;p&gt;As you begin to share shell configuration, you may experience a common pain
point. Say for instance, you install a new language or framework on machine A
which requires sourcing an environment script in &lt;code&gt;~&#x2F;.bashrc&lt;&#x2F;code&gt; (e.g.,
&lt;code&gt;. $HOME&#x2F;.cargo&#x2F;env&lt;&#x2F;code&gt;), and you diligently check-in that change to your dotfiles.
A week later, you pull your dotfiles to machine B, and open a new terminal
session only to find an ugly error message.&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #24292E; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;-bash: &#x2F;home&#x2F;mallain&#x2F;.cargo&#x2F;env: No such file or directory&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;With experience and some bash scripting, you can begin to shape your dotfiles to
be resilient to these types of failures by adding bash conditionals (at the
small expense of shell startup time), e.g.,&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #24292E; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;shellscript&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6A737D;&quot;&gt;# cargo env exists and is readable&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;if&lt;&#x2F;span&gt;&lt;span&gt; [&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span style=&quot;color: #032F62;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #032F62;&quot;&gt;&#x2F;.cargo&#x2F;env&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt; ];&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt; then&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #005CC5;&quot;&gt;    .&lt;&#x2F;span&gt;&lt;span style=&quot;color: #032F62;&quot;&gt; &amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;$HOME&lt;&#x2F;span&gt;&lt;span style=&quot;color: #032F62;&quot;&gt;&#x2F;.cargo&#x2F;env&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;fi&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;h3 id=&quot;reference-peers-dotfiles-and-share-your-own&quot;&gt;Reference Peers Dotfiles and Share Your Own&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;mitchallain&#x2F;dotfiles&quot;&gt;My dotfiles&lt;&#x2F;a&gt; are the result of many
years of professional development experience, but I was helped along by other
developers that thought to share their own configuration. Some of those are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ThePrimeagen&#x2F;.dotfiles&quot;&gt;ThePrimeagen&lt;&#x2F;a&gt; - Netflix engineer
and &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@ThePrimeagen&quot;&gt;YouTuber&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;craftzdog&#x2F;dotfiles-public&quot;&gt;craftzdog&lt;&#x2F;a&gt; - Web developer and
&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;@devaslife&quot;&gt;YouTuber&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>MEEN 364 - Dynamic Systems and Controls</title>
        <published>2016-09-05T00:00:00+00:00</published>
        <updated>2016-09-05T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mitchellallain.com/posts/meen-364/"/>
        <id>https://mitchellallain.com/posts/meen-364/</id>
        
        <content type="html" xml:base="https://mitchellallain.com/posts/meen-364/">&lt;h1 id=&quot;meen-364-dynamic-systems-and-controls&quot;&gt;MEEN 364 - Dynamic Systems and Controls&lt;&#x2F;h1&gt;
&lt;p&gt;&lt;em&gt;I created this page while I was a teaching assistant at Texas A&amp;amp;M for MEEN 364,
Dynamic Systems and Controls. It has been preserved in its original form.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;I have setup this page to provide helpful resources to anyone who is interested,
and I will occassionally add more as I come across them. None of these links are
required reading, but sometimes seeing the material presented in a different
format can help with understanding. These are some of the videos, websites, and
PDFs that helped me learn dynamic systems and controls. Enjoy!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;recitation-notes&quot;&gt;Recitation Notes&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Recitation 01 - 05 September 2016&lt;&#x2F;li&gt;
&lt;li&gt;Recitation 03 - 19 September 2016&lt;&#x2F;li&gt;
&lt;li&gt;Exam Review (Recitation 05) - 3 October 2016&lt;&#x2F;li&gt;
&lt;li&gt;Recitation 07 - 26 October 2016&lt;&#x2F;li&gt;
&lt;li&gt;Recitation 09 - 09 December 2016&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;supplemental-material&quot;&gt;Supplemental Material&lt;&#x2F;h2&gt;
&lt;p&gt;Here are some supplemental resources which support MEEN 364. Each bulleted item
contains a link which will take you to an external page.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;introductory-control-systems&quot;&gt;Introductory Control Systems&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;playlist?list=PLUMWjy5jgHK1NC52DXXrriwihVrYZKqjk&quot;&gt;An excellent YouTube series on control theory by controls engineer&#x2F;legend Brian Douglas&lt;&#x2F;a&gt;.
If you are struggling with any class concepts, there is a good chance they are
covered on Brian&#x27;s channel. The 46 videos in this playlist average about 12
minutes a video and over 100,000 views each.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;ctms.engin.umich.edu&#x2F;CTMS&#x2F;index.php?aux=Home&quot;&gt;MATLAB and Simulink based controls tutorials&lt;&#x2F;a&gt;
developed by professors at the University of Michigan and Carnegie Mellon.
Covers six dynamic systems through the modeling, analysis, and controller
design phase.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;www.mathworks.com&#x2F;help&#x2F;control&#x2F;index.html&quot;&gt;MathWorks Control System Toolbox documentation&lt;&#x2F;a&gt;.
One of the reasons MATLAB is preferred for control system design (especially
in education) is the quality of the documentation and examples on the
MathWorks website.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;matlab-simulink&quot;&gt;MATLAB&#x2F;Simulink&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;mitchallain.github.io&#x2F;misc&#x2F;startup.m&quot;&gt;This &lt;code&gt;.m&lt;&#x2F;code&gt; file&lt;&#x2F;a&gt; sets the
graphics defaults for MATLAB. It will execute on start-up if placed in the
MATLAB path (type &#x27;path&#x27; into MATLAB to list the search path).&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;blogs.mathworks.com&#x2F;simulink&#x2F;2008&#x2F;05&#x2F;23&#x2F;how-to-draw-odes-in-simulink&#x2F;#&quot;&gt;How to draw ODEs in Simulink&lt;&#x2F;a&gt;,
by Guy Rouleau from MathWorks.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;bode-diagrams&quot;&gt;Bode Diagrams&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;A series of videos on understanding Bode plots by MathWorks engineer Carlos
Osorio. Carlos discusses some real world systems and their frequency response
characteristics using Bode diagrams. Four parts, 26 minutes total.&lt;&#x2F;li&gt;
&lt;li&gt;Another series of Bode plot videos by MathWorks engineer Carlos Osorio. Carlos
discusses using Bode plots to design lead&#x2F;lag controllers. Very useful for
understanding basic controller structure. Five parts, 33 minutes total.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;controls-resources&quot;&gt;Controls Resources&lt;&#x2F;h3&gt;
&lt;p&gt;These are meant to inform and inspire, if you&#x27;re interested in the field of
controls engineering.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.technologyreview.com&#x2F;topic&#x2F;artificial-intelligence&#x2F;robots&#x2F;&quot;&gt;Latest robotics articles from the MIT Technology Review.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.quora.com&#x2F;topic&#x2F;Control-Engineering&quot;&gt;The Control Engineering Quora&lt;&#x2F;a&gt;
page has some good Q&amp;amp;As about what controls engineers do now, and the future
of the industry.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;external&quot; href=&quot;http:&#x2F;&#x2F;robotics.stackexchange.com&#x2F;&quot;&gt;Robotics Stack Exchange&lt;&#x2F;a&gt;. Create a profile
and ask questions, you&#x27;ll be surprised by the quality and quantity of the
answers you will get.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Tufte CSS Showcase</title>
        <published>2016-03-30T00:00:00+00:00</published>
        <updated>2016-03-30T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://mitchellallain.com/posts/immaculate-showcase/"/>
        <id>https://mitchellallain.com/posts/immaculate-showcase/</id>
        
        <content type="html" xml:base="https://mitchellallain.com/posts/immaculate-showcase/">&lt;p&gt;This post showcases the typography and layout features available in this theme,
adapted from &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;edwardtufte&#x2F;tufte-css&quot;&gt;Tufte CSS&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;this-is-a-h1&quot;&gt;This is a H1.&lt;&#x2F;h1&gt;
&lt;h2 id=&quot;this-is-a-h2&quot;&gt;This is a H2.&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;and-this-is-a-h3&quot;&gt;And this is a H3.&lt;&#x2F;h3&gt;
&lt;p&gt;Here is a &lt;strong&gt;bold&lt;&#x2F;strong&gt;, an &lt;em&gt;italic&lt;&#x2F;em&gt;, and a &lt;a href=&quot;&#x2F;&quot;&gt;hyperlink&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;A block quote:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;But say, my brothers, what can the child do that even the lion could not do?
Why must the preying lion still become a child? The child is innocence and
forgetting, a new beginning, a game, a self-propelled wheel, a first movement,
a sacred &quot;Yes.&quot;&lt;&#x2F;p&gt;
&lt;p&gt;— Friedrich Nietzsche, &lt;em&gt;Thus Spoke Zarathustra&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
&lt;label for=&quot;sn-side1&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;&#x2F;label&gt;
&lt;input type=&quot;checkbox&quot; id=&quot;sn-side1&quot; class=&quot;margin-toggle&quot;&#x2F;&gt;
&lt;span class=&quot;sidenote&quot;&gt;This is a sidenote.&lt;&#x2F;span&gt;

tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur
&lt;label for=&quot;sn-side2&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;&#x2F;label&gt;
&lt;input type=&quot;checkbox&quot; id=&quot;sn-side2&quot; class=&quot;margin-toggle&quot;&#x2F;&gt;
&lt;span class=&quot;sidenote&quot;&gt;This is another sidenote.&lt;&#x2F;span&gt;

sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.&lt;&#x2F;p&gt;
&lt;label for=&quot;mn-margin1&quot; class=&quot;margin-toggle&quot;&gt;&amp;#8853;&lt;&#x2F;label&gt;
&lt;input type=&quot;checkbox&quot; id=&quot;mn-margin1&quot; class=&quot;margin-toggle&quot;&#x2F;&gt;
&lt;span class=&quot;marginnote&quot;&gt;This is a margin note.&lt;&#x2F;span&gt;
&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&lt;&#x2F;p&gt;
&lt;p&gt;Here is a code block
&lt;label for=&quot;sn-side3&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;&#x2F;label&gt;
&lt;input type=&quot;checkbox&quot; id=&quot;sn-side3&quot; class=&quot;margin-toggle&quot;&#x2F;&gt;
&lt;span class=&quot;sidenote&quot;&gt;Syntax highlighting uses the `base16-ocean-light` theme configured in `config.toml`.&lt;&#x2F;span&gt;
:&lt;&#x2F;p&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #24292E; background-color: #FFFFFF;&quot;&gt;&lt;code data-lang=&quot;python&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; sys&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; inspect&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; pydantic&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;import&lt;&#x2F;span&gt;&lt;span&gt; yaml&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;class&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6F42C1;&quot;&gt; BaseModel&lt;&#x2F;span&gt;&lt;span&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6F42C1;&quot;&gt;pydantic&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6F42C1;&quot;&gt;BaseModel&lt;&#x2F;span&gt;&lt;span&gt;):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #032F62;&quot;&gt;    &amp;quot;&amp;quot;&amp;quot;Extension of pydantic.BaseModel to support YAML parsing&amp;quot;&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #6F42C1;&quot;&gt;    @&lt;&#x2F;span&gt;&lt;span style=&quot;color: #005CC5;&quot;&gt;classmethod&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;    def&lt;&#x2F;span&gt;&lt;span style=&quot;color: #6F42C1;&quot;&gt; parse_yaml&lt;&#x2F;span&gt;&lt;span&gt;(cls, filepath):&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #032F62;&quot;&gt;        &amp;quot;&amp;quot;&amp;quot;Parse YAML file into pydantic model&amp;quot;&amp;quot;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;        with&lt;&#x2F;span&gt;&lt;span style=&quot;color: #005CC5;&quot;&gt; open&lt;&#x2F;span&gt;&lt;span&gt;(filepath,&lt;&#x2F;span&gt;&lt;span style=&quot;color: #032F62;&quot;&gt; &amp;quot;r&amp;quot;&lt;&#x2F;span&gt;&lt;span&gt;)&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt; as&lt;&#x2F;span&gt;&lt;span&gt; f:&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;            config&lt;&#x2F;span&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt; =&lt;&#x2F;span&gt;&lt;span&gt; yaml.safe_load(f)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span style=&quot;color: #D73A49;&quot;&gt;        return&lt;&#x2F;span&gt;&lt;span style=&quot;color: #005CC5;&quot;&gt; cls&lt;&#x2F;span&gt;&lt;span&gt;.parse_obj(config)&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;</content>
        
    </entry>
</feed>
