<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="rss.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Jason Morris</title>
  <subtitle></subtitle>
  <link href="https://jasonmorris.com/atom.xml" type="application/atom+xml" rel="self"/>
  <link href="https://jasonmorris.com" rel="alternate" type="text/html"/>
  <updated>2026-04-16T19:45:10Z</updated>
  <id>https://jasonmorris.com/</id>
  <author>
    <name>Jason Morris</name>
  </author>
  
  <entry>
    <title>PDFcheck</title>
    <link href="https://jasonmorris.com/code/pdfcheck/"/>
    <published>2023-03-01T12:00:00Z</published>
    <updated>2023-03-01T12:00:00Z</updated>
    <id>https://jasonmorris.com/code/pdfcheck/</id>
    <content type="html" xml:base="https://jasonmorris.com/code/pdfcheck/">&lt;p&gt;&lt;a href=&quot;https://code.jasonmorris.com/pdfcheck/&quot;&gt;PDFcheck&lt;/a&gt; is a single-purpose online tool I built to instantly check a bunch of PDF files for signs of inaccessibility.&lt;/p&gt;
&lt;p&gt;Over the years, I’ve inherited maintenance responsibilities for a website. Often the website has a bunch of PDF files. Determining if any PDFs are tagged for accessibility typically involves opening each file in Adobe Acrobat Pro and inspecting the tags panel. This is tedious.&lt;/p&gt;
&lt;p&gt;Sitting in my IDE one day, I inspected a PDF file and noticed some text-based metadata in the largely binary file. Items like PDF version, language, number of tags, and a PDF/UA identifier were consistently added to compliant PDFs.&lt;/p&gt;
&lt;p&gt;Several hours later, I had a bunch of regex statements looking through a PDF to find as much metadata as possible from a given file.&lt;/p&gt;
&lt;p&gt;With some more polishing, a localized (no upload) file &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; takes one or more files, runs through the metadata scans, and reports the PDF’s settings.&lt;/p&gt;
&lt;div class=&quot;facade&quot;&gt;
          &lt;a class=&quot;facade__link&quot; href=&quot;https://www.youtube.com/watch?v=mz3E1LwCVVY&quot;&gt;
            &lt;span class=&quot;visually-hidden&quot;&gt;Play: PDFcheck demonstration (embedded video)&lt;/span&gt;
            &lt;div class=&quot;facade__overlay&quot;&gt;&lt;/div&gt;
            &lt;picture&gt;
              &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-320.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-1280.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-320.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-1280.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-320.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/pdfcheck-1280.jpg&quot; /&gt;
              &lt;img src=&quot;https://jasonmorris.com/img/pdfcheck-320.jpg&quot; alt=&quot;PDFcheck demonstration&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;456&quot; /&gt;
            &lt;/picture&gt;
          &lt;/a&gt;
          &lt;div class=&quot;facade__video&quot; data-type=&quot;youtube&quot; data-id=&quot;mz3E1LwCVVY&quot; data-width=&quot;800&quot; data-height=&quot;456&quot; data-title=&quot;PDFcheck demonstration&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
&lt;p&gt;The end result is a tool that can accept drag and drop of any file, isolate PDF files, and display if any accessibility features exist in the file. While PDFcheck can’t verify PDF accessibility, it can quickly find PDF inaccessibility.&lt;/p&gt;
&lt;p&gt;Besides scanning many files at once, PDFcheck also makes a basic inspection of PDF accessibility more approachable and avoids the need for an active Adobe Acrobat Pro subscription.&lt;/p&gt;
&lt;p&gt;Take a look at the &lt;a href=&quot;https://github.com/jsnmrs/pdfcheck&quot;&gt;PDFcheck code over on GitHub&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Shortcut: IDE Switching</title>
    <link href="https://jasonmorris.com/code/ide-switching/"/>
    <published>2022-02-06T14:00:00Z</published>
    <updated>2022-02-06T14:00:00Z</updated>
    <id>https://jasonmorris.com/code/ide-switching/</id>
    <content type="html" xml:base="https://jasonmorris.com/code/ide-switching/">&lt;p&gt;Avoiding decision fatigue is an aspiration of mine. If my lizard brain is at the wheel, some guardrails can be helpful.&lt;/p&gt;
&lt;p&gt;I have used a shell alias to launch my Integrated Development Environment (IDE) of choice from whatever directory I’m now in for years. If I enter &lt;code&gt;s&lt;/code&gt;, the current path is opened in &lt;a href=&quot;https://www.sublimetext.com/&quot;&gt;Sublime Text&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Over time, I’ve drifted between Sublime Text, Atom (RIP), &lt;a href=&quot;https://nova.app/&quot;&gt;Nova&lt;/a&gt;, and &lt;a href=&quot;https://code.visualstudio.com/&quot;&gt;Visual Studio Code&lt;/a&gt;. As I’m trying a new (to me) IDE, I create a similar alias for the new IDE. Typing &lt;code&gt;a&lt;/code&gt; opens Atom, typing &lt;code&gt;c&lt;/code&gt; opens Visual Studio Code, etc.&lt;/p&gt;
&lt;p&gt;My &lt;code&gt;.zshrc&lt;/code&gt; or &lt;code&gt;.bash_profile&lt;/code&gt;, this looks like this:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;a&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;atom .&quot;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;c&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;code .&quot;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;nova .&quot;&lt;/span&gt;
&lt;span class=&quot;token builtin class-name&quot;&gt;alias&lt;/span&gt; &lt;span class=&quot;token assign-left variable&quot;&gt;s&lt;/span&gt;&lt;span class=&quot;token operator&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;token string&quot;&gt;&quot;subl .&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When I want to give a new IDE a real-world trial, I change the command from the IDE in muscle memory to the new one. This eliminates any hesitation or decision about which IDE to open.&lt;/p&gt;
&lt;p&gt;If I’m trying out Visual Studio Code, typing &lt;code&gt;s&lt;/code&gt; will open Visual Studio Code instead of Sublime Text. I notice and appreciate how the switch has become frictionless the first few times. After a few days, I no longer see the change.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Wordup</title>
    <link href="https://jasonmorris.com/code/wordup/"/>
    <published>2018-11-05T12:00:00Z</published>
    <updated>2018-11-05T12:00:00Z</updated>
    <id>https://jasonmorris.com/code/wordup/</id>
    <content type="html" xml:base="https://jasonmorris.com/code/wordup/">&lt;p&gt;&lt;a href=&quot;https://code.jasonmorris.com/wordup/&quot;&gt;Wordup&lt;/a&gt; is a single-purpose online tool I built to convert content from Word documents into HTML or Markdown.&lt;/p&gt;
&lt;p&gt;First, it uses the built-in paste tools of &lt;a href=&quot;https://ckeditor.com/ckeditor-4/&quot;&gt;CKEditor 4&lt;/a&gt;. Second, it passes through vanilla JS to clean up spacing and replaces some strings. Finally, it spits out clean HTML. Check a box and &lt;a href=&quot;https://github.com/mixmark-io/turndown&quot;&gt;Turndown.js&lt;/a&gt; converts to Markdown.&lt;/p&gt;
&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/wordup-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/wordup-240.png&quot; alt=&quot;Wordup screenshot.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;141&quot; /&gt;
    &lt;/picture&gt;
&lt;p&gt;But converting Word documents to HTML is a solved problem, right?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Search for “Word to HTML conversion”&lt;/li&gt;
&lt;li&gt;Search for “Word to &lt;em&gt;clean&lt;/em&gt; HTML conversion”&lt;/li&gt;
&lt;li&gt;Consider pasting Word document contents into mystery text boxes on several online conversion tools&lt;/li&gt;
&lt;li&gt;Wonder how these tools actually work&lt;/li&gt;
&lt;li&gt;Wonder about the privacy policies of these tools&lt;/li&gt;
&lt;li&gt;Close browser, open Word document&lt;/li&gt;
&lt;li&gt;Copy content, paste into text editor&lt;/li&gt;
&lt;li&gt;Begin wrapping text in HTML tags&lt;/li&gt;
&lt;li&gt;Give up&lt;/li&gt;
&lt;li&gt;Open Word document, save as HTML&lt;/li&gt;
&lt;li&gt;Open HTML in text editor&lt;/li&gt;
&lt;li&gt;Cry a little&lt;/li&gt;
&lt;li&gt;Start using find and replace to remove extra markup&lt;/li&gt;
&lt;li&gt;Graduate to regex searches&lt;/li&gt;
&lt;li&gt;Eventually arrive at relatively clean HTML&lt;/li&gt;
&lt;li&gt;Realize that someone sent an updated version of the Word document while working through steps 1-15&lt;/li&gt;
&lt;li&gt;Cry a little&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;WYSIWYG editors in most CMS platforms deal with pasting Word documents, right?&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Search for JavaScript-based WYSIWYG editors&lt;/li&gt;
&lt;li&gt;Pick one&lt;/li&gt;
&lt;li&gt;Create an HTML page with two &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt; fields&lt;/li&gt;
&lt;li&gt;Hook WYSIWYG editor into first &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Read documentation&lt;/li&gt;
&lt;li&gt;Figure out how to get converted text out of WYSIWYG &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt; and into second &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt; as HTML&lt;/li&gt;
&lt;li&gt;Notice &lt;em&gt;converted&lt;/em&gt; HTML still needs some love&lt;/li&gt;
&lt;li&gt;Write extra white space and string replacement rules to send converted text through&lt;/li&gt;
&lt;li&gt;End up with really clean HTML in the second &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cry a little&lt;/li&gt;
&lt;li&gt;Wonder what else you can do&lt;/li&gt;
&lt;li&gt;Add markdown conversion and link helpers&lt;/li&gt;
&lt;li&gt;Tell people about it&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Take a look at the &lt;a href=&quot;https://github.com/jsnmrs/wordup&quot;&gt;Wordup code over on GitHub&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Rotating SSH Keys</title>
    <link href="https://jasonmorris.com/code/rotating-ssh-keys/"/>
    <published>2016-02-15T12:00:00Z</published>
    <updated>2022-01-08T09:28:00Z</updated>
    <id>https://jasonmorris.com/code/rotating-ssh-keys/</id>
    <content type="html" xml:base="https://jasonmorris.com/code/rotating-ssh-keys/">&lt;p&gt;Rotating your SSH keys every once in a while is good digital hygiene.&lt;/p&gt;
&lt;p&gt;Today, I rotated my SSH keys and configured GitHub to use these new keys. There were a few hangups along the way, but it was worth the trouble. Here’s the process:&lt;/p&gt;
&lt;h2&gt;Make a backup&lt;/h2&gt;
&lt;p&gt;Copy your existing SSH folder to temporary folder for safekeeping.&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cp&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-a&lt;/span&gt; ~/.ssh ~/ssh-backup&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Create a strong passphrase&lt;/h2&gt;
&lt;p&gt;Generate a strong passphrase for your new SSH key. I use &lt;a href=&quot;https://1password.com/&quot;&gt;1Password&lt;/a&gt; to generate and store a nice, long passphrase. The &lt;a href=&quot;https://1password.com/password-generator&quot;&gt;1Password online password generator&lt;/a&gt; is handy for this, too.&lt;/p&gt;
&lt;h2&gt;Create a new key pair&lt;/h2&gt;
&lt;p&gt;Create your new SSH key pair. If you already have a key named &lt;code&gt;id_rsa&lt;/code&gt;, this will overwrite it. When prompted, enter the passphrase you generated earlier.&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;ssh-keygen &lt;span class=&quot;token parameter variable&quot;&gt;-t&lt;/span&gt; rsa &lt;span class=&quot;token parameter variable&quot;&gt;-b&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;4096&lt;/span&gt; ~/.ssh/id_rsa &lt;span class=&quot;token parameter variable&quot;&gt;-C&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;comment&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Change permissions&lt;/h2&gt;
&lt;p&gt;By default, my machine gives this new key permissions of 644 (user read+write, group read, world read). I want to change that to 600 (user read+write only) to avoid issues down the road. SSH connections may fail if the key files have permissions that are too loose. To change the private and public key files to 600:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;chmod&lt;/span&gt; &lt;span class=&quot;token number&quot;&gt;600&lt;/span&gt; ~/.ssh/id_rsa*&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Add new key to SSH agent and macOS Keychain&lt;/h2&gt;
&lt;p&gt;To make sure the SSH agent is running, first run:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token builtin class-name&quot;&gt;eval&lt;/span&gt; &lt;span class=&quot;token string&quot;&gt;&quot;&lt;span class=&quot;token variable&quot;&gt;&lt;span class=&quot;token variable&quot;&gt;$(&lt;/span&gt;ssh-agent &lt;span class=&quot;token parameter variable&quot;&gt;-s&lt;/span&gt;&lt;span class=&quot;token variable&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To add the new SSH key pair to the SSH agent and to the macOS &lt;a href=&quot;https://en.wikipedia.org/wiki/Keychain_(software)&quot;&gt;Keychain&lt;/a&gt;, run:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;ssh-add --apple-use-keychain ~/.ssh/id_rsa&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Add new key to GitHub&lt;/h2&gt;
&lt;p&gt;Add the public key to your GitHub account by following &lt;a href=&quot;https://docs.github.com/articles/adding-a-new-ssh-key-to-your-github-account&quot;&gt;these instructions from GitHub&lt;/a&gt;. You’ll copy your key to your clipboard using:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;pbcopy &lt;span class=&quot;token operator&quot;&gt;&amp;lt;&lt;/span&gt; ~/.ssh/id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In the event that &lt;code&gt;pbcopy&lt;/code&gt; isn’t available, print the public key to the console for copy/pasting with:&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;cat&lt;/span&gt; ~/.ssh/id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you’ll be able to paste the key into your &lt;a href=&quot;https://github.com/settings/keys&quot;&gt;GitHub SSH Key page&lt;/a&gt; to enable your new key.&lt;/p&gt;
&lt;p&gt;While you’re there, it’s a good opportunity to review any other SSH keys you have in GitHub. Rotate or remove as needed.&lt;/p&gt;
&lt;h2&gt;Test new key’s access to GitHub&lt;/h2&gt;
&lt;p&gt;Verify you can login to GitHub with the new SSH key.&lt;/p&gt;
&lt;pre class=&quot;language-sh&quot;&gt;&lt;code class=&quot;language-sh&quot;&gt;&lt;span class=&quot;token function&quot;&gt;ssh&lt;/span&gt; &lt;span class=&quot;token parameter variable&quot;&gt;-T&lt;/span&gt; git@github.com &lt;span class=&quot;token parameter variable&quot;&gt;-i&lt;/span&gt; ~/.ssh/id_rsa&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the key works, you’ll see a message confirming authentication (and that GitHub doesn’t allow shell access).&lt;/p&gt;
&lt;h2&gt;Backup folder&lt;/h2&gt;
&lt;p&gt;The backup folder you created at the start of this process holds your old SSH keys. Hang onto the backup until you confirm that the services you connect to over SSH are working with your new key.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Fork Seal Clip for a 1982 Suzuki GS850L</title>
    <link href="https://jasonmorris.com/diy/fork-seal-clip-for-a-1982-suzuki-gs850l/"/>
    <published>2014-09-24T12:00:00Z</published>
    <updated>2014-09-24T12:00:00Z</updated>
    <id>https://jasonmorris.com/diy/fork-seal-clip-for-a-1982-suzuki-gs850l/</id>
    <content type="html" xml:base="https://jasonmorris.com/diy/fork-seal-clip-for-a-1982-suzuki-gs850l/">&lt;p&gt;Instructions for replacing fork seal clips on a 1982 Suzuki GS850L motorcycle:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Stare at recently removed, broken, and rusted fork clips.&lt;/li&gt;
&lt;li&gt;Find that rebuilding your forks cannot continue until new clips are procured.&lt;/li&gt;
&lt;li&gt;Google “&lt;a href=&quot;https://www.google.com/search?q=1982+Suzuki+GS850L+fork+seal+clips&quot;&gt;1982 Suzuki GS850L fork seal clips&lt;/a&gt;”.&lt;/li&gt;
&lt;li&gt;Decide that ordering the part online will not yield same day delivery.&lt;/li&gt;
&lt;li&gt;Think.&lt;/li&gt;
&lt;li&gt;Travel to local bicycle shop and ask for two 15 gauge spokes.&lt;/li&gt;
&lt;li&gt;Endure guarded response to request, followed by questions about application.&lt;/li&gt;
&lt;li&gt;Convince bicycle shop employee that you are indeed worthy of paying for two spokes.&lt;/li&gt;
&lt;li&gt;Return to the garage with two spokes, six dollars poorer.&lt;/li&gt;
&lt;li&gt;Trace existing fork clip onto a piece of paper, improvising the sections that have dissolved over the course of 30 years.&lt;/li&gt;
&lt;li&gt;Take two sets of needle nose pliers and begin bending bicycle spokes into the octagonal shape of the factory part.&lt;/li&gt;
&lt;li&gt;As shaping progresses, refer to paper tracing to make sure proper dimensions are matched.&lt;/li&gt;
&lt;li&gt;Cut excess spoke end and spoke head using a pair of &lt;a href=&quot;https://www.parktool.com/en-us/product/professional-cable-and-housing-cutter-cn-10&quot;&gt;Park Tools CN-10 cable cutters&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Again, confirm correct shape.&lt;/li&gt;
&lt;li&gt;Remark to self that the stainless steel spoke will not rust in the same fashion as the factory part and grin sheepishly.&lt;/li&gt;
&lt;li&gt;Insert newly minted fork clip into fork leg using a small screwdriver.&lt;/li&gt;
&lt;li&gt;Hear the satisfying click of the clip seating itself into the fork leg’s clip groove.&lt;/li&gt;
&lt;li&gt;Excitedly repeat the fabrication process for the clip for the other fork leg.&lt;/li&gt;
&lt;li&gt;Click.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Job well done.&lt;/p&gt;
&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/spoke-clip-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/spoke-clip-240.jpg&quot; alt=&quot;Fork clip mod.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;193&quot; /&gt;
    &lt;/picture&gt;
</content>
  </entry>
  
  <entry>
    <title>Vertical</title>
    <link href="https://jasonmorris.com/photo/vertical/"/>
    <published>2012-02-04T12:00:00Z</published>
    <updated>2012-02-04T12:00:00Z</updated>
    <id>https://jasonmorris.com/photo/vertical/</id>
    <content type="html" xml:base="https://jasonmorris.com/photo/vertical/">&lt;p&gt;I’ve stitched together a bunch of panoramic photos over the years. They were all horizontal, never vertical. Rather than brave the cold of February, I decided to play around with a vertical pano indoors.&lt;/p&gt;
&lt;p&gt;Devon Swahlan threw a proper tabletop out of this quarterpipe while I experimented. The end result is a blend from 12 exposures.&lt;/p&gt;
&lt;p&gt;A fun experiment that makes for tired scroll fingers.&lt;/p&gt;
&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/vertical-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/vertical-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/vertical-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/vertical-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/vertical-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/vertical-800.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/vertical-240.jpg&quot; alt=&quot;Vertical panorama&quot; loading=&quot;lazy&quot; width=&quot;344&quot; height=&quot;2048&quot; /&gt;
    &lt;/picture&gt;
</content>
  </entry>
  
  <entry>
    <title>Lords of Fun</title>
    <link href="https://jasonmorris.com/bikes/lords-of-fun/"/>
    <published>2011-10-01T12:00:00Z</published>
    <updated>2011-10-01T12:00:00Z</updated>
    <id>https://jasonmorris.com/bikes/lords-of-fun/</id>
    <content type="html" xml:base="https://jasonmorris.com/bikes/lords-of-fun/">&lt;p&gt;I was fortunate enough to have a few photos published in issue 2 of Albion Magazine a little while back. I went on a road trip from Richmond, Virginia to the Outer Banks of North Carolina. The caravan included a green limousine and about a dozen motorcycles. &lt;a href=&quot;https://www.youtube.com/watch?v=BSkOfBU5ju0&quot;&gt;Propsbmx.tv&lt;/a&gt; filmed the entire trip and we posted a bunch of &lt;a href=&quot;https://leastmost.com/features/lords-of-fun-2-photos/&quot;&gt;photos over on Least Most&lt;/a&gt;, too.&lt;/p&gt;
&lt;p&gt;One of the photos that ended up in the magazine was this snap of my buddy Steve cruising down the highway in NC.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/crandall-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/crandall-240.jpg&quot; alt=&quot;Steve Crandall.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;159&quot; /&gt;
    &lt;/picture&gt;&lt;figcaption&gt;Crandall on the way to OBX&lt;/figcaption&gt;&lt;/figure&gt;
</content>
  </entry>
  
  <entry>
    <title>Where Do You See Yourself in 20 Years?</title>
    <link href="https://jasonmorris.com/bikes/where-do-you-see-yourself-in-20-years/"/>
    <published>2011-09-23T12:00:00Z</published>
    <updated>2011-09-23T12:00:00Z</updated>
    <id>https://jasonmorris.com/bikes/where-do-you-see-yourself-in-20-years/</id>
    <content type="html" xml:base="https://jasonmorris.com/bikes/where-do-you-see-yourself-in-20-years/">&lt;p&gt;&lt;em&gt;Originally posted on the &lt;a href=&quot;https://leastmost.com/features/where-do-you-see-yourself-in-twenty-years/&quot;&gt;Least Most&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;“How long have you been riding?” I often say, “Too long.” That avoids the date math and serves to temper expectations a bit. Thinking back, I do remember the first time I pedaled towards a jump and my wheels left the ground.&lt;/p&gt;
&lt;p&gt;As a little kid, I’d go for weekend rides along the bike path that follows the Hudson River with my grandparents. Me on my department store 20″ bike and my grandparents on their tandem bike. When my grandmother stayed home, my grandfather rode the tandem bike solo. No worries.&lt;/p&gt;
&lt;p&gt;Along the path there was a two foot tall concrete wedge, dropped in the center of a field. A sculpture of some kind? On one of the first rides along the bike path, I noticed this concrete object and my mind began to race. Could I ride my bike up and off of it? I’d never done anything like that before, but I was curious.&lt;/p&gt;
&lt;p&gt;Armed with some encouragement from my grandfather, I pedaled down the path and into the grass. I took aim at this ramp that was half as tall as I was. Later I’d learn that checking the run up would have been wise. As I hit the rough edge at the bottom and my feet bobbled. I launched off the end of the concrete, my feet no longer on the pedals. Given my age, landing crotch-first on my top tube wasn’t as bad as it would prove to be as I grew older. I looped back around and gave it another go. This time my feet stayed on the pedals. Every trip after that, I couldn’t wait until we got to the jump so I could give it a couple good runs.&lt;/p&gt;
&lt;p&gt;I couldn’t tell you how old I was at the time, no idea of the year, but I remember how amazing it felt to hit a jump on my bike. Thinking back, I always wished that I had a photo of me hitting that jump on my little 20″ bike.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;A few weeks ago, Hurricane Irene barreled up the East Coast and flooded many areas in its path. My parents’ house was too close to a swelling creek that had no regards for its long-standing banks. Water consumed the basement and took out everything that wasn’t within a few feet of the ceiling. Spending the day afterwards in waist deep water, we saved what we could. It was only stuff, after all. Everyone was safe. I pulled several boxes of photographs out of the water and handed them up to my Mom. They were a lost cause, I thought.&lt;/p&gt;
&lt;p&gt;After a few water-logged hours, I came upstairs to take a break. My Mom handed me a photo she’d pulled out of one of the soaked boxes. It was a photo of me jumping off that concrete wedge on one of our first bike trips.&lt;/p&gt;
&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/twenty-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/twenty-240.jpg&quot; alt=&quot;The jump.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;159&quot; /&gt;
    &lt;/picture&gt;
&lt;p&gt;I flipped the photo over, written in ballpoint pen was “Albany bike path, September 1991”.&lt;/p&gt;
&lt;p&gt;Twenty years ago this month I hit my first jump on a bicycle. If you asked me then what I’d be doing in 20 years, I’d tell you, “I’ll be jumping my bike off of stuff.” Yeah right, kid.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Saturday Morning in the Berkshires</title>
    <link href="https://jasonmorris.com/photo/saturday-morning-in-the-berkshires/"/>
    <published>2011-07-27T12:00:00Z</published>
    <updated>2011-07-27T12:00:00Z</updated>
    <id>https://jasonmorris.com/photo/saturday-morning-in-the-berkshires/</id>
    <content type="html" xml:base="https://jasonmorris.com/photo/saturday-morning-in-the-berkshires/">&lt;p&gt;I spent the morning on a quick hike with my good friend Eric in western Massachusetts. &lt;a href=&quot;http://berkshirehiking.com/hikes/the_cascades.html&quot;&gt;Cascade Falls&lt;/a&gt; to be exact. Still unchecked on my photographic learning list was the infamous, dragged-shutter rushing-water photo. I had a lot of fun figuring these out.&lt;/p&gt;
&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-1-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/cascade-1-240.jpg&quot; alt=&quot;Slow shutter shot.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;159&quot; /&gt;
    &lt;/picture&gt;
&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/cascade-2-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/cascade-2-240.jpg&quot; alt=&quot;Cascade Falls.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;159&quot; /&gt;
    &lt;/picture&gt;
</content>
  </entry>
  
  <entry>
    <title>Weekend Fun in Ithaca</title>
    <link href="https://jasonmorris.com/bikes/weekend-fun-in-ithaca/"/>
    <published>2011-07-21T12:00:00Z</published>
    <updated>2011-07-21T12:00:00Z</updated>
    <id>https://jasonmorris.com/bikes/weekend-fun-in-ithaca/</id>
    <content type="html" xml:base="https://jasonmorris.com/bikes/weekend-fun-in-ithaca/">&lt;p&gt;This weekend I attended a fundraising event to help a bmx legend, Mike Tag, in his battle against cancer. I ended up shooting a &lt;a href=&quot;https://leastmost.com/features/ithacas-mike-tag-benefit/&quot;&gt;gallery of riding photos and portraits&lt;/a&gt; that we posted up over on the &lt;a href=&quot;https://leastmost.com/&quot;&gt;Least Most&lt;/a&gt;. The process of getting up and down from the roof was terrifying. Word to the wise, never take advice from an inebriated Kelly Baker.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-1-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/ithaca-1-240.jpg&quot; alt=&quot;Parking lot gang.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;159&quot; /&gt;
    &lt;/picture&gt;&lt;figcaption&gt;Richmonders and a New Englander&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-1600.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-1600.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-1024.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 1025px)&quot; srcset=&quot;https://jasonmorris.com/img/ithaca-2-1600.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/ithaca-2-240.jpg&quot; alt=&quot;From the roof.&quot; loading=&quot;lazy&quot; width=&quot;240&quot; height=&quot;159&quot; /&gt;
    &lt;/picture&gt;&lt;figcaption&gt;I risked life and limb for this one&lt;/figcaption&gt;&lt;/figure&gt;
</content>
  </entry>
  
  <entry>
    <title>Deck Dancing via Tripod</title>
    <link href="https://jasonmorris.com/bikes/deck-dancing-via-tripod/"/>
    <published>2011-06-09T12:00:00Z</published>
    <updated>2011-06-09T12:00:00Z</updated>
    <id>https://jasonmorris.com/bikes/deck-dancing-via-tripod/</id>
    <content type="html" xml:base="https://jasonmorris.com/bikes/deck-dancing-via-tripod/">&lt;p&gt;I’m usually content shooting photos and video of other people. Sometimes I want to capture my own riding. Often that requires setting up the camera on a tripod and pressing record.&lt;/p&gt;
&lt;p&gt;I gathered up some of those tripod clips and put together a short video. My &lt;a href=&quot;https://leastmost.com/&quot;&gt;Least Most&lt;/a&gt; cohort Crandall persuaded me to post online. Not the most groundbreaking maneuvers, but fun to look back on.&lt;/p&gt;
&lt;p&gt;Besides the riding and filming, I also built every single ramp you see in this video. That includes both indoor skateparks and the backyard ramps.&lt;/p&gt;
&lt;div class=&quot;facade&quot;&gt;
          &lt;a class=&quot;facade__link&quot; href=&quot;https://www.youtube.com/watch?v=HzNKYFt2rqg&quot;&gt;
            &lt;span class=&quot;visually-hidden&quot;&gt;Play: Deck dancing. (embedded video)&lt;/span&gt;
            &lt;div class=&quot;facade__overlay&quot;&gt;&lt;/div&gt;
            &lt;picture&gt;
              &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-320.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-1280.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-320.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-1280.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-320.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/video-deck-dancing-1280.jpg&quot; /&gt;
              &lt;img src=&quot;https://jasonmorris.com/img/video-deck-dancing-320.jpg&quot; alt=&quot;Deck dancing.&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;450&quot; /&gt;
            &lt;/picture&gt;
          &lt;/a&gt;
          &lt;div class=&quot;facade__video&quot; data-type=&quot;youtube&quot; data-id=&quot;HzNKYFt2rqg&quot; data-width=&quot;800&quot; data-height=&quot;450&quot; data-title=&quot;Deck dancing.&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
</content>
  </entry>
  
  <entry>
    <title>Bikes and Barns</title>
    <link href="https://jasonmorris.com/bikes/bikes-and-barns/"/>
    <published>2011-06-02T12:00:00Z</published>
    <updated>2011-06-02T12:00:00Z</updated>
    <id>https://jasonmorris.com/bikes/bikes-and-barns/</id>
    <content type="html" xml:base="https://jasonmorris.com/bikes/bikes-and-barns/">&lt;p&gt;For several years, Niles Harris had a mini ramp in his parents’ barn, in upstate New York. One afternoon we decided to film a short video of Niles riding the ramp. After a few hours and little planning, I had a handful of clips to edit with.&lt;/p&gt;
&lt;p&gt;At one point, I thought that an overhead shot would look great. I walked out on an exposed beam situated over one side of the ramp. Part way across I looked down to the barn floor, thirteen feet below and froze. Usually, heights don’t bother me. The combination of balance needed for the narrow beam while holding my camera spooked me. I continued out to grab onto an upright beam for support and filmed a few shots before scurrying back to safety. Lesson learned.&lt;/p&gt;
&lt;figure&gt;&lt;picture&gt;
      &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-240.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-1024.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-240.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-1024.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-240.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/barn-1024.jpg&quot; /&gt;
      &lt;img src=&quot;https://jasonmorris.com/img/barn-240.jpg&quot; alt=&quot;Standing on barn rafters, looking down.&quot; loading=&quot;lazy&quot; width=&quot;159&quot; height=&quot;240&quot; /&gt;
    &lt;/picture&gt;&lt;figcaption&gt;From the rafters&lt;/figcaption&gt;&lt;/figure&gt;
&lt;p&gt;Here’s the result of a few hours at Niles’ barn. Shot on my Canon T2i with the ISO completely cranked.&lt;/p&gt;
&lt;div class=&quot;facade&quot;&gt;
          &lt;a class=&quot;facade__link&quot; href=&quot;https://www.youtube.com/watch?v=NzbvAjooVJI&quot;&gt;
            &lt;span class=&quot;visually-hidden&quot;&gt;Play: Niles Harris - Barn Session. (embedded video)&lt;/span&gt;
            &lt;div class=&quot;facade__overlay&quot;&gt;&lt;/div&gt;
            &lt;picture&gt;
              &lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-320.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-800.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-1280.avif&quot; type=&quot;image/avif&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-320.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-800.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-1280.webp&quot; type=&quot;image/webp&quot; /&gt;
&lt;source media=&quot;(max-width: 320px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-320.jpg&quot; /&gt;
&lt;source media=&quot;(max-width: 800px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-800.jpg&quot; /&gt;
&lt;source media=&quot;(min-width: 801px)&quot; srcset=&quot;https://jasonmorris.com/img/video-barn-1280.jpg&quot; /&gt;
              &lt;img src=&quot;https://jasonmorris.com/img/video-barn-320.jpg&quot; alt=&quot;Niles Harris - Barn Session.&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;450&quot; /&gt;
            &lt;/picture&gt;
          &lt;/a&gt;
          &lt;div class=&quot;facade__video&quot; data-type=&quot;youtube&quot; data-id=&quot;NzbvAjooVJI&quot; data-width=&quot;800&quot; data-height=&quot;450&quot; data-title=&quot;Niles Harris - Barn Session.&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
</content>
  </entry>
</feed>
