diff options
author | Adam T. Carpenter <atc@53hor.net> | 2020-11-29 08:53:22 -0500 |
---|---|---|
committer | Adam T. Carpenter <atc@53hor.net> | 2020-11-29 08:53:22 -0500 |
commit | aa6ade8c1bc51bc8f379442bb00710438d1385fd (patch) | |
tree | d0a99de1f2ceec24c6fe15d61661f96a33a05d3b /posts | |
parent | daa21252743400c83f9d46c7fdefc00058553d7f (diff) | |
download | 53hor-aa6ade8c1bc51bc8f379442bb00710438d1385fd.tar.xz 53hor-aa6ade8c1bc51bc8f379442bb00710438d1385fd.zip |
organized posts, added profile, started makefile
Diffstat (limited to 'posts')
15 files changed, 2206 insertions, 0 deletions
diff --git a/posts/computing/2019-04-06-why-have-a-website-in-2019.html b/posts/computing/2019-04-06-why-have-a-website-in-2019.html new file mode 100644 index 0000000..f8520d4 --- /dev/null +++ b/posts/computing/2019-04-06-why-have-a-website-in-2019.html @@ -0,0 +1,176 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="Why Have a Web Site in 2019?" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Why Have a Web Site in 2019?</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Why Have a Web Site in 2019?</h1> + <blockquote> + Adam, why on earth do you have a website? Wait... Is this a + <em>blog</em>? It's 2019, why don't you just use Facebook?! + </blockquote> + + <p> + I've wanted to have my own website for a long time mostly because I like + playing with technology. I think it's cool that I can make a few files + on a computer in my closet available for the entire world to see. The + web has become a near-necessity in our daily lives and it's only been + around for a couple of decades. That has always fascinated me enough to + drive me to see if I can do it on my own. I started self-hosting my own + web server about a year ago now and it's been an awesome study in the + way all of the tech we use on the web works. + </p> + + <p> + A written website is also a good way to keep up on my writing skills. + I've graduated college and won't be writing essays for the foreseeable + eternity. Which is fine except that I have no reason to write creatively + or formally anymore. Having this site encourages me to continue turning + thoughts into words, even though it's more casual than a term paper. + </p> + + <p> + This extends into the professionalism of a personal website. Normally + you can't point your employer towards your Twitter profile as the + distillation of your online footprint. Having a website, especially one + that separates professional and personal interests, is ten times better + than a resume, especially in the world of technology. It lets you tell + people exactly who you are and what you do, without forcing them to + navigate through an auth wall or a bunch of puppy photos. Your + professional and personal lives don't bleed together quite as much and + it makes for a kick-ass business card. + </p> + + <p> + Most importantly however, I enjoy the level of control that I gain with + creating and operating my own website, something I have also sought for + a long time. In high school I set up an old Dell from my school's + recycling center with Windows XP and Microsoft Internet Information + Services. It didn't have SSL or even a domain name but it was reachable + over the WAN. I set up an upload system so that my friends and I could + 'post' memes and funny messages for each other on raw html pages written + with Microsoft Word. That was the extent of its functionality. It was + slow, insecure, and went offline every time the router got a new IP + assigned to it. But I didn't care. It was a site the school couldn't + block. It had no name and no rules and nobody could tell us what to do + with it because it was ours. And we called it the + <em>Troll Nexus Center</em> because that's what you do when you're 15 + </p> + + <p> + My reasons then for building the Troll Nexus Center still stand now. + <em + >Having your own website is having your own piece of internet + property.</em + > + I first heard this wording from + <a href="https://www.youtube.com/watch?v=azkWYxyqh3Y" + >Luke Smith over on his YouTube channel</a + > + and it's one-hundred percent true. Tumblogs, Google Sites, Facebook + profiles, and GitHub Pages are all like renting an apartment. Sure, + there are some really nice apartments out there but it's not the same as + owning your own home. You have to pay rent obviously, and rent is + subject to change once your lease is up. If anything breaks you text + your landlord and wait to have it fixed. You aren't allowed to fix it + yourself and sometimes it doesn't get fixed at all. And of course you're + limited by how much you can customize things to your own liking. Whether + it's painting walls or knocking them down. + </p> + + <p> + These limitations may or may not apply to you. Whether you're paying for + storage, server space, metrics, or watching an ad every five seconds, + these services aren't free either. And you certainly can't fix + everything that goes wrong with them. I started on Google Sites. It's a + truly fantastic system. Building a site is like putting a PowerPoint + slide together. I just plain outgrew it. There were too many things I + wanted to do that I simply couldn't. I was also at the mercy of Google's + constant change. After I finished constructing my first site, Google + <a + href="https://gsuiteupdates.googleblog.com/2016/11/a-totally-rebuilt-google-sitesnow.html" + >announced they would be shutting down the old Google Sites in favor + of an entirely new platform under the same name</a + >. Weeks of work got thrown out the window. You might also not care + about ads or customization. You may be intimidated by doing things + yourself and prefer that the landlord take care of everything. + Personally, I like the challenge and the craftsmanship that comes with + doing something myself. And I like being in total control of my server, + site, and content. Not from a tinfoil hat perspective but from a "gosh I + really wish I could just share more than 15 gigabytes of family video + with my relatives in New York and Ohio" perspective. + </p> + + <p> + So that's why I created my own website. If you want to know + <em>how</em> I host my own website, look for another post about my + server setup where I'll explain everything I'm hosting and how I got it + all hooked up. And that's a wrap. Now you know why I'm here instead of + somewhere else online. Sure, I do have Facebook and YouTube accounts but + I don't frequently update anything on either of them. This site is my + home online. It's where I keep all of my interests, hobbies, and + memories for sharing with others. + </p> + + <p> + Now you know where to find me. If you want to keep up with me, be + old-fashioned and subscribe to my RSS feed. + </p> + </article> + </body> +</html> diff --git a/posts/life/2019-07-21-dancing-the-shag-and-the-new-lion-king.html b/posts/life/2019-07-21-dancing-the-shag-and-the-new-lion-king.html new file mode 100644 index 0000000..692a132 --- /dev/null +++ b/posts/life/2019-07-21-dancing-the-shag-and-the-new-lion-king.html @@ -0,0 +1,91 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="Dancing the Shag & Two Left Feet" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Dancing the Shag & Two Left Feet</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Dancing the Shag & Two Left Feet</h1> + <p> + Not all of my posts are huge, and they probably shouldn't be. Amy and I + had a really great time yesterday at Two Left Feet Dance Studio, + learning more about how to dance the Carolina Shag in preparation for + our wedding (which is in less than 20 days)! An enormous swing band is + going to play all of our favorites from the brass band/swing era, and + one of the easiest dances to do to that music is the Shag. I wrote a + paper on the Shag a few years ago for school but never actually learned + how to do it. The steps are simple for us to remember and it's easy + enough to add flair or mix it up so we look like we know what we're + doing during our first dance. + </p> + + <p> + We also got out to see the new Lion King remake and I can honestly say + it was worth it. If anyone's a Lion King purist, it's Amy. It's easily + been her favorite movie since she was a toddler, and to see it + tastefully redone almost 25 years after it was first released was + thoroughly enjoyable. There were minor alterations to literal sentences + in the script that all added some context to things that were always + kind of assumed in the original (clarification on Scar's backstory, + etc.). I did however feel like they were trying to throw Beyonce lines + the way a middle-schooler tries to turn a 500-word paper into a 700-word + paper. Regardless, it's definitely re-living the classic, not re-hashing + it. + </p> + </article> + </body> +</html> diff --git a/posts/life/2019-07-28-i-finally-found-a-drink-i-like.html b/posts/life/2019-07-28-i-finally-found-a-drink-i-like.html new file mode 100644 index 0000000..447c454 --- /dev/null +++ b/posts/life/2019-07-28-i-finally-found-a-drink-i-like.html @@ -0,0 +1,92 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="Finally Found a Drink I Like" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Finally Found a Drink I Like</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Finally Found a Drink I Like</h1> + <p> + Anyone who knows me even slightly well probably knows that I don't + drink. And it's not out of moral obligation or anything like that. I + just plain can't stand the taste of alcohol. So it's no surprise that my + entire family has been trying to throw different alcoholic beverages in + my direction to see what sticks. + </p> + + <p> + But it finally happened! I finally found a drink with alcohol in it. And + not only did I not gag, but I genuinely enjoy it, think it tastes great, + and mix it myself. + </p> + + <p> + It's called <em>Blackberry Cream Soda</em>. It's just blackberries, + ginger ale, and spiced rum. It's darn good. And it's going to be the + signature drink at our wedding, whatever that means. All I know is I can + finally order something at a bar and that's cool by me. + </p> + + <p> + <img + src="https://nextcloud.53hor.net/s/Jdpp8QYwo6nY9Fx/preview" + alt="Behold, Blackberry Cream Soda" + /> + </p> + </article> + </body> +</html> diff --git a/posts/life/2019-08-11-marrying-my-best-friend.html b/posts/life/2019-08-11-marrying-my-best-friend.html new file mode 100644 index 0000000..ab348e7 --- /dev/null +++ b/posts/life/2019-08-11-marrying-my-best-friend.html @@ -0,0 +1,74 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="I Married My Best Friend!" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ I Married My Best Friend!</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>I Married My Best Friend!</h1> + <p> + It was an inexplicable mixture of joy and butterflies getting to marry + my best friend. It was truly like a dream come true, so much so that it + drove me to tears multiple times. Now that we're on our honeymoon, it + feels simultaneously like everything and nothing has changed but I think + that's a good thing. + </p> + + <p>More to come!</p> + </article> + </body> +</html> diff --git a/posts/life/2020-04-10-the-obligatory-covid-19-post.html b/posts/life/2020-04-10-the-obligatory-covid-19-post.html new file mode 100644 index 0000000..aa948f6 --- /dev/null +++ b/posts/life/2020-04-10-the-obligatory-covid-19-post.html @@ -0,0 +1,109 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="Obligatory COVID-19 Post" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Obligatory COVID-19 Post</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Obligatory COVID-19 Post</h1> + <p> + We're alive! All three of us: Amy, Clementine, and myself. We're doing + what we do best and that is being hermits with zero social contact. + That's pretty okay by us though because it lets us slow down from all + the fast-paced life changes we've made in the past few months. + </p> + + <p> + In January Amy and I bought a house! We couldn't have done it without + the wonderful help of everyone who gave us wedding gifts. We got a nice + little standalone place in Suffolk, much closer to where I work and + centrally located for Amy's tutoring business. We spent all of January + painting and prepping for the big move. Late January and early February + were all moving and unpacking and trying to get back in the groove. + Since the outbreak, we've been using the extra time at home to finish up + all the move-in projects we wanted to: finishing painting, putting up + shelves, hanging pictures, and rewiring electrical outlets. + </p> + + <p> + Amy also finally got the chance to pursue her dream job: she started up + her own private tutoring business. She's been working hard with clients + all over Hampton Roads, from college students all the way to + first-graders. Business was booming before schools closed but I know + she'll bring it back once things have returned to normal again. No + worries though, she's spending this time helping William and Mary handle + remote operations and students in need. She's also [supposed to be] + writing her master's thesis so she can graduate in May but you know how + it is. + </p> + + <p> + We're also working through a family illness, which adds difficulty . We + expect a speedy recovery though and we're really excited for that. + All-in-all, we're really enjoying our lives as a happily married couple. + It's been about eight months now and I've enjoyed every minute of it: + the glad, the slightly stressed, and the overarching worry as the world + took a strange turn. But we're looking forward to a good Summer now. The + weather has turned nice -- really nice -- and Clementine is forcing us + to get outside. She's in love with her nice, big fenced-in yard and + refuses to come in after catching hoops most of the time. + </p> + + <p>Stay safe, smart, and sane!</p> + </article> + </body> +</html> diff --git a/posts/life/2020-04-10-wedding-photos-are-here.html b/posts/life/2020-04-10-wedding-photos-are-here.html new file mode 100644 index 0000000..01fc955 --- /dev/null +++ b/posts/life/2020-04-10-wedding-photos-are-here.html @@ -0,0 +1,102 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="Wedding Photo Debacle" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Wedding Photo Debacle</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Wedding Photo Debacle</h1> + + <p> + At long last we have all of our wedding photos together! Unfortunately a + large portion of the professional ones were lost during editing but + we're extremely fortunate to everyone who took pictures throughout the + festivities so we have more to share! We hope you enjoy flipping through + them as much as we did! There is also a collection of the photos we took + while we were on our honeymoon on Mackinac Island, MI. It was an + absolutely magical place and truly the experience of a lifetime for us + to run away there. We're in contact with our videographer, who's working + on the final cut now. + </p> + + <p> + Everything is available at the links down below. You can scroll through + the photos, view them in fullscreen, and even download them or share + them elsewhere. We hope you have as much fun flipping through them as we + did! + </p> + + <ul> + <li> + <a href="https://nextcloud.53hor.net/s/eYLqeMGnSPGRNFE" + >Bachelor & Bachelorette Parties</a + > + </li> + + <li> + <a href="https://nextcloud.53hor.net/s/FxekyGQFTFKG5ot" + >Wedding Day</a + > + </li> + + <li> + <a href="https://nextcloud.53hor.net/s/mgZ6M4ayqX73DqL">Honeymoon</a> + </li> + </ul> + </article> + </body> +</html> diff --git a/posts/programming/2020-07-11-why-computer-science-at-w-m.html b/posts/programming/2020-07-11-why-computer-science-at-w-m.html new file mode 100644 index 0000000..9d98c9c --- /dev/null +++ b/posts/programming/2020-07-11-why-computer-science-at-w-m.html @@ -0,0 +1,255 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta + property="og:title" + content="Why Computer Science at William and Mary" + /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Why Computer Science at William and Mary</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Why Computer Science at William and Mary</h1> + + <p class="description"> + Recently a rising high-school senior asked for input on what going to + the College of William and Mary was like for a Computer Science degree. + They were asking about the program itself as well as what it's like on + and off campus. Here's what I sent to them. + </p> + + <h2>Quick Intro</h2> + + <p> + I graduated with a Bachelor's in Computer Science from W&M in 2018. + I'm a couple years in the workforce now but can still remember my + experiences well enough to hopefully add my honest opinion on my time + there as well as how it prepared me for my career. I will also add a + little bit about my time on campus in a dorm and off-campus in Colonial + Williamsburg. + </p> + + <h2>Courses and Curriculum</h2> + + <p> + I felt very positively about the array of courses that were offered + while I was a student. I took a variety of core prerequisites, just like + everyone else, and a good mix of electives. The courses I took include + Data Structures and Algorithms, Software Development/Engineering, + Computer Organization/Architecture, UNIX Systems Programming, Computer + Graphics/Animation, and Computer and Network Security. This list is not + exhaustive and I'm sure they aren't all offered anymore. I was also + required to take a few math classes (Calc I, II, Discrete Math, Linear + Algebra, and Finite Automata). + </p> + + <p> + It is true that the courses listed at <code>cs.wm.edu</code> aren't all + offered at the same time. And it is also true that the higher-level + electives pretty much all required my core prerequisites to be + completed. The result is that the electives all came in my final two + years. My understanding is the curriculum is designed to give someone + the best possible background in computing as a whole. A lot of the + topics may seem like they would never be useful in the "real world" but + I have found the opposite is true. I am an application developer at a + three-letter company. My day-to-day work is building and debugging web + apps, but there's been a lot more to it than that. My first assignment + on the job was scraping bytes off a remote shell and writing a parser to + sift through them. The level of understanding I gathered from my core + classes helped more than I expected they would. I think as a whole they + give me an edge at work and help me teach my colleagues about + algorithms, performance, and systems administration. + </p> + + <p> + That being said, course registration was always nightmarish. It was very + difficult to get into the limited seats in the classes I was most + interested in. Eventually the heads of the department had to pass around + a sign up sheet and organize every student into courses, classrooms, and + professors so that seniors would graduate on time and we could all get + <em>something</em> on our schedules. I hope the shortage of teachers has + caught up since I graduated. I learned from a long-time faculty member + that this is largely a result of the exponential growth of incoming CS + degree-seekers. The program has grown very popular in the last ten years + and I like to think grads are catching on to that. + </p> + + <h2>Teaching</h2> + + <p> + CS@W&M had neutral to good instructors for me. Some were far worse + than others, as with all subjects. When I was there, lots of the older + faculty were retiring and quickly being replaced with younger, newer + instructors, which added to the growing pains of the program. The most + important thing again was making sure there were enough teachers to + teach all of the students. + </p> + + <p> + I know a few of my peers were very upset about what they described as a + lack of communication or availability from their professors. Some have + also mentioned they didn't like having to learn material on their own + and wanted more to come from instruction. I don't deny that the material + itself was difficult and there was a lot of hard work I had to do on my + own to understand very involved concepts in intense, fast-paced courses. + I think that hard work has paid off. I don't think there's realistically + anywhere someone can learn about computing where they won't do any + learning on their own. I am also a very visual, and hands-on learner so + I suppose your mileage may vary. + </p> + + <p> + The most important takeaway from this for me was the ability to pick up + new concepts and technologies quickly and apply them productively. The + majority of professors had project-driven courses. Lots of due dates + meant learning how to transform what I read or learned in class into + practical applications in short amounts of time. This has become, + according to those I work with, one of my greater assets. I am + constantly learning new things in my career and I don't have a lecturer + to explain things to me. It's very powerful to have that and I am + thankful for it. It also helps me teach that knowledge to my colleagues + so we can move faster as a team. + </p> + + <h2>Campus</h2> + + <p> + I agree with my peers about the conditions of classrooms and buildings + on campus. Some are old. I guess that comes with an old university but + there are a choice few that haven't been kept up as best they could. + Since CS is growing so fast it's also long outgrown its own offices. + Classrooms are scattered throughout every academic building on campus + and I probably had a CS course in at least 80% of them. That meant + jumping from one side of campus to another and back again in between + periods. + </p> + + <p> + The College itself isn't too sprawling. I am long-legged and I found I + could get from one end of campus to another in fifteen minutes on foot. + I rode bike a lot to get to classes where I only had ten minutes to do + it. It's also pretty marshy and woodsy in a lot of areas, so during the + rainy season some walking paths got muddy or flooded. Good boots + required. I have never been in as good shape as when I had to do all + that walking but I definitely got soaked and winded making those + transitions. + </p> + + <p> + I appreciate history and architecture and was drawn in by the look and + feel of William and Mary as a result. Without getting too romantic, it's + definitely a beautiful place to attend classes. The ancient Wren + building still holds classes and it's a monument to the College's + tradition. However, I really appreciated the modern academic buildings + on the other side of campus where all of the new construction was taking + place. Modern lab equipment and the library lived there. + </p> + + <p> + The dorms were nothing to write home about. Lots of them were nested in + the woods and built ages ago so they were a little tired and even dingy. + Others are brand new and well maintained; ask around and get opinions on + which ones to go for first chance you get. I made do with what I got for + the first couple of years by keeping it clean and decorated. My last two + years I lived in a couple of off-campus apartments. It was well worth + the switch. Depending on where you are on campus you may need at least a + bike to access local restaurants, shops, and the grocery store. A bike + is a good idea anyway but it's not necessary for every dorm. + </p> + + <h2>Colonial Williamsburg</h2> + + <p> + Lots of my peers didn't appreciate CW as a "college town" but I enjoyed + my time there. I can't speak about parties or clubbing, I was boring and + didn't do any of that. I made a great group of friends and we would walk + into town to get ice cream, see historical attractions (most of which + are free as a student, IIRC), and see movies or plays when we weren't + studying or playing video games in the dorm. There are some good, + sort-of-affordable restaurants but they're kind of driving distance. + </p> + + <p> + The best part about living there was meeting my wife. We would go on + long walks to get away from studying and wound up seeing + horse-and-carriages and the Governor's Palace and things like that. We + would also escape with her car to go to some of the surrounding towns to + get away to nice grocery stores and fun places to eat and explore on the + weekends. I also have family in the area so it was easy for me to stop + by home and say hi, although I know lots of students wanted to get as + far away from home as possible. + </p> + + <h2>Parting Words</h2> + + <p> + I don't consider myself a gung ho alumnus. There are lots of things I + think could be improved, both in CS and at W&M as a whole but I do + not regret my going there. There is no such thing as "everything is + great" or "everything is terrible". It's not so definitive. I had my + fair share of gripes and at times it strained me. There were pros and + cons but I think I have a lot to be thankful for (I landed my job + through W&M recruiting and the career center as well, which are + fantastic resources). I cannot say "do this instead of that." I haven't + gone to any other colleges and don't know enough about them to recommend + them as better or worse. What I can recommend is the same path I took + for folks who want to pursue a degree in Computer Science. I think + you'll come away from it all the more knowledgable, resourceful, and + dedicated. + </p> + </article> + </body> +</html> diff --git a/posts/programming/2020-11-24-i-like-hyper-more-than-actix.html b/posts/programming/2020-11-24-i-like-hyper-more-than-actix.html new file mode 100644 index 0000000..33c5d9e --- /dev/null +++ b/posts/programming/2020-11-24-i-like-hyper-more-than-actix.html @@ -0,0 +1,23 @@ +<h1> + I Like <a href="https://hyper.rs">hyper</a> more than + <a href="https://actix.rs">Actix Web</a> +</h1> + +<article> + <p> + I've been using Actix Web as the HTTP service layer for some web + applications for a while now. I've written several APIs for work and + personal projects on top of Actix and always thought it was pretty spiffy + for what it does: listen for HTTP requests and respond to them with code + I've written. I was always a little bummed about how large the dependency + tree was with the project though, and how long it took to compile. + </p> + + <p> + Recently I've been trying to write or depend on as little code as is + possible to get the job done, so I've been trying to take a look at whether + or not I + <em>need</em> what I've written or imported or even though of implementing + before I've written anything. + </p> +</article> diff --git a/posts/unix/2019-07-04-the-best-way-to-transfer-gopro-files-with-linux.html b/posts/unix/2019-07-04-the-best-way-to-transfer-gopro-files-with-linux.html new file mode 100644 index 0000000..15c776f --- /dev/null +++ b/posts/unix/2019-07-04-the-best-way-to-transfer-gopro-files-with-linux.html @@ -0,0 +1,133 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta + property="og:title" + content="Offloading GoPro Footage the Easy Way!" + /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Offloading GoPro Footage the Easy Way!</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Offloading GoPro Footage the Easy Way!</h1> + + <p> + Transferring files off of most cameras to a Linux computer isn't all + that difficult. The exception is my GoPro Hero 4 Black. For 4th of July + week I took a bunch of video with the GoPro, approximately 20 MP4 files, + about 3GB each. The annoying thing about the GoPro's USB interface is + you need additional software to download everything through the cable. + The camera doesn't just show up as a USB filesystem that you can mount. + The GoPro does have a micro-SD card but I was away from home and didn't + have any dongles or adapters. Both of these solutions also mean taking + the camera out of its waterproof case and off of its mount. So here's + what I did. + </p> + + <p> + GoPro cameras, after the Hero 3, can open up an ad-hoc wireless network + that lets you browse the GoPro's onboard files through an HTTP server. + This means you can open your browser and scroll through the files on the + camera at an intranet address, <code>10.5.5.9</code>, and download them + one by one by clicking every link on every page. If you have a lot of + footage on there it kinda sucks. So, I opened up the manual for + <code>wget</code>. I'm sure you could get really fancy with some of the + options but the only thing I cared about was downloading every single + MP4 video off of the camera, automatically. I did not want to download + any of the small video formats or actual HTML files. Here's what I used: + </p> + + <pre> + <code> +sh wget --recursive --accept "*.MP4" http://10.5.5.9:8080/ + </code> + </pre> + + <p> + This tells <code>wget</code> to download all of the files at the GoPro's + address recursively and skips any that don't have the MP4 extension. Now + I've got a directory tree with all of my videos in it. And the best part + is I didn't have to install the dinky GoPro app on my laptop. Hopefully + this helps if you're looking for an easy way to migrate lots of footage + without manually clicking through the web interface or installing + additional software. The only downside is if you're moving a whole lot + of footage, it's not nearly as quick as just moving files off the SD + card. So I'd shoot for using the adapter to read off the card first and + only use this if that's not an option, such as when the camera is + mounted and you don't want to move it. + </p> + + <p>Some things I would like to change/add:</p> + + <ul> + <li> + Download all image files as well; should be easy, just another + <code>--accept</code> + </li> + <li>Initiate parallel downloads</li> + <li> + Clean up the directory afterwards so I just have one level of depth + </li> + </ul> + + <p> + I could probably write a quick and dirty shell script to do all of this + for me but I use the camera so infrequently that it's probably not even + worth it. + </p> + </article> + </body> +</html> diff --git a/posts/unix/2019-09-28-my-preferred-method-for-data-recovery.html b/posts/unix/2019-09-28-my-preferred-method-for-data-recovery.html new file mode 100644 index 0000000..b63ba5a --- /dev/null +++ b/posts/unix/2019-09-28-my-preferred-method-for-data-recovery.html @@ -0,0 +1,282 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="How I Do Data Recovery" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ How I Do Data Recovery</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>How I Do Data Recovery</h1> + + <p> + This week Amy plugged in her flash drive to discover that there were no + files on it. Weeks before there had been dozens of large cuts of footage + that she needed to edit down for work. Hours of recordings were + seemingly gone. And the most annoying part was the drive had worked + perfectly on several other occasions. Just not now that the footage was + actually needed of course. Initially it looked like everything had been + wiped clean, however both Amy's Mac and her PC thought the drive was + half full. It's overall capacity was 64GB but it showed only about 36GB + free. So there still had to be data on there if we could find the right + tool to salvage it. + </p> + + <p> + Luckily this wasn't the first time I had to recover accidentally (or + magically) deleted files. I had previously done so with some success at + my tech support job, for some college friends, and for my in-laws' + retired laptops. So I had a pretty clear idea of what to expect. The + only trick was finding a tool that knew what files it was looking for. + The camera that took the video clips was a Sony and apparently they + record into <code>m2ts</code> files, which are kind of a unique format + in that they only show up on Blu-Ray discs and Sony camcorders. Enter my + favorite two tools for dealing with potentially-destroyed data: + <code>ddrescue</code> and <code>photorec</code>. + </p> + + <h2>DDRescue</h2> + + <p> + <code>ddrescue</code> is a godsend of a tool. If you've ever used + <code>dd</code> before, forget about it. Use <code>ddrescue</code>. You + might as well <code>alias dd=ddrescue</code> because it's that great. By + default it has a plethora of additional options, displays the progress + as it works, recovers and retries in the event of I/O errors, and does + everything that good old <code>dd</code> can do. It's particularly good + at protecting partitions or disks that have been corrupted or damaged by + rescuing undamaged portions first. Oh, and have you ever had to cancel a + <code>dd</code> operation? Did I mention that <code>ddrescue</code> can + pause and resume operations? It's that good. + </p> + + <h2>PhotoRec</h2> + + <p> + <code>photorec</code> is probably the best missing file recovery tool + I've ever used in my entire life. And I've used quite a few. I've never + had as good results as I've had with <code>photorec</code> with other + tools like Recuva et. al. And <code>photorec</code> isn't just for + photos, it can recover documents (a la Office suite), music, images, + config files, and videos (including the very odd + <code>m2ts</code> format!). The other nice thing is + <code>photorec</code> will work on just about any source. It's also free + software which makes me wonder why there are like $50 recovery tools for + Windows that look super sketchy. + </p> + + <h2>In Practice</h2> + + <p> + So here's what I did to get Amy's files back. Luckily she didn't write + anything out to the drive afterward so the chances (I thought) were + pretty good that I would get <em>something</em> back. The first thing I + always do is make a full image of whatever media I'm trying to recover + from. I do this for a couple of reasons. First of all it's a backup. If + something goes wrong during recovery I don't have to worry about the + original, fragile media being damaged or wiped. Furthermore, I can work + with multiple copies at a time. If it's a large image that means + multiple tools or even multiple PCs can work on it at once. It's also + just plain faster working off a disk image than a measly flash drive. So + I used <code>ddrescue</code> to make an image of Amy's drive. + </p> + + <pre><code> +$ sudo ddrescue /dev/sdb1 amy-lexar.dd +GNU ddrescue 1.24 +Press Ctrl-C to interrupt + ipos: 54198 kB, non-trimmed: 0 B, current rate: 7864 kB/s + opos: 54198 kB, non-scraped: 0 B, average rate: 18066 kB/s +non-tried: 63967 MB, bad-sector: 0 B, error rate: 0 B/s + rescued: 54198 kB, bad areas: 0, run time: 2s +pct rescued: 0.08%, read errors: 0, remaining time: 59m + time since last successful read: n/a +Copying non-tried blocks... Pass 1 (forwards) + </code></pre> + + <p> + The result was a very large partition image that I could fearlessly play + around with. + </p> + + <pre> + <code> +$ ll amy-lexar.dd +-rw-r--r-- 1 root root 60G Sep 24 02:45 amy-lexar.dd + </code> + </pre> + + <p> + Then I could run <code>photorec</code> on the image. This brings up a + TUI with all of the listed media that I can try and recover from. + </p> + + <pre><code> +$ sudo photorec amy-lexar.dd + +PhotoRec 7.0, Data Recovery Utility, April 2015 +http://www.cgsecurity.org + + PhotoRec is free software, and +comes with ABSOLUTELY NO WARRANTY. + +Select a media (use Arrow keys, then press Enter): +>Disk amy-lexar.dd - 64 GB / 59 GiB (RO) + +>[Proceed ] [ Quit ] + +Note: +Disk capacity must be correctly detected for a successful recovery. +If a disk listed above has incorrect size, check HD jumper settings, BIOS +detection, and install the latest OS patches and disk drivers. + </code></pre> + + <p> + After hitting proceed <code>photorec</code> asks if you want to scan + just a particular partition or the whole disk (if you made a whole disk + image). I can usually get away with just selecting the partition I know + the files are on and starting a search. + </p> + + <pre><code> +PhotoRec 7.0, Data Recovery Utility, April 2015 +http://www.cgsecurity.org + +Disk amy-lexar.dd - 64 GB / 59 GiB (RO) + + Partition Start End Size in sectors + Unknown 0 0 1 7783 139 4 125042656 [Whole disk] +> P FAT32 0 0 1 7783 139 4 125042656 [NO NAME] + +>[ Search ] [Options ] [File Opt] [ Quit ] + Start file recovery + </code></pre> + + <p> + Then <code>photorec</code> asks a couple of questions about the + formatting of the media. It can usually figure them out all by itself so + I just use the default options unless it's way out in left field. + </p> + + <pre><code> +PhotoRec 7.0, Data Recovery Utility, April 2015 +http://www.cgsecurity.org + + P FAT32 0 0 1 7783 139 4 125042656 [NO NAME] + +To recover lost files, PhotoRec need to know the filesystem type where the +file were stored: + [ ext2/ext3 ] ext2/ext3/ext4 filesystem +>[ Other ] FAT/NTFS/HFS+/ReiserFS/... + </code></pre> + + <p> + Now this menu is where I don't just go with the default path. + <code>photorec</code> will offer to search just unallocated space or the + entire partition. I always go for the whole partition here; sometimes + I'll get back files that I didn't really care about but more often than + not I end up rescuing more data this way. In this scenario searching + just unallocated space found no files at all. So I told + <code>photorec</code> to search everything. + </p> + + <pre><code> +PhotoRec 7.0, Data Recovery Utility, April 2015 +http://www.cgsecurity.org + + P FAT32 0 0 1 7783 139 4 125042656 [NO NAME] + + +Please choose if all space need to be analysed: + [ Free ] Scan for file from FAT32 unallocated space only +>[ Whole ] Extract files from whole partition + </code></pre> + + <p> + Now it'll ask where you want to save any files it finds. I threw them + all into a directory under home that I could zip up and send to Amy's + Mac later. + </p> + + <pre><code> +PhotoRec 7.0, Data Recovery Utility, April 2015 + +Please select a destination to save the recovered files. +Do not choose to write the files to the same partition they were stored on. +Keys: Arrow keys to select another directory + C when the destination is correct + Q to quit +Directory /home/adam + drwx------ 1000 1000 4096 28-Sep-2019 12:10 . + drwxr-xr-x 0 0 4096 26-Jan-2019 15:32 .. +>drwxr-xr-x 1000 1000 4096 28-Sep-2019 12:10 amy-lexar-recovery + </code></pre> + + <p> + And then just press <code>C</code>. <code>photrec</code> will start + copying all of the files it finds into that directory. It reports what + kinds of files it found and how many it was able to locate. I was able + to recover all of Amy's lost footage this way, past, along with some + straggler files that had been on the drive at one point. This has worked + for me many times in the past, both on newer devices like flash drives + and on super old, sketchy IDE hard drives. I probably won't ever pay for + data recovery unless a drive has been physically damaged in some way. In + other words, this software works great for me and I don't foresee the + need for anything else out there. It's simple to use and is typically + pretty reliable. + </p> + </article> + </body> +</html> diff --git a/posts/unix/2020-07-26-now-this-is-a-minimal-install.html b/posts/unix/2020-07-26-now-this-is-a-minimal-install.html new file mode 100644 index 0000000..07a398a --- /dev/null +++ b/posts/unix/2020-07-26-now-this-is-a-minimal-install.html @@ -0,0 +1,107 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="Now This is a Minimal Install!" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Now This is a Minimal Install!</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Now This is a Minimal Install!</h1> + + <p> + I just got done configuring Poudriere on Freebsd 12.1-RELEASE. The + awesome thing about it is it allows you to configure and maintain your + own package repository. All of the ports and their dependencies are + built from source with personalized options. That means that I can + maintain my own repo of just the packages I need with just the + compile-time options I need. For example, for the Nvidia driver set I + disabled all Wayland related flags. I use Xorg so there was no need to + have that functionality built in. + </p> + + <p> + Compile times are pretty long but I hope to change that by upgrading my + home server to FreeBSD as well (from Ubuntu Server). Then I can + configure poudriere to serve up a ports tree and my own pkg repo from + there. The server is a lot faster than my laptop and will build packages + way faster, and I'll be able to use those packages on both the server + and my laptop and any jails I have running. Jails (and ZFS) also make + poudriere really cool to use as all of the building is done inside a + jail. When the time comes I can just remove the jail and poudriere ports + tree from my laptop and update pkg to point to my web server. + </p> + + <p> + This is, as I understand it, the sane way to do package management in + FreeBSD. The binary package repo is basically the ports tree + pre-assembled with default options. Sometimes those packages are + compiled without functionality that most users don't need. In those + situations, you're forced to use ports. The trouble is you're not really + supposed to mix ports and binary packages. The reason, again as I + understand it, is because ports are updated more frequently. So binary + packages and ports can have different dependency versions, which can + sometimes break compatibility on an upgrade. Most FreeBSD users + recommend installing everything with ports (which is just a make install + inside the local tree) but then you lose the package management features + that come with pkg. Poudriere lets you kind of do both by creating your + "own personal binary repo" out of a list of preconfigured, pre-built + ports. + </p> + + <p>FreeBSD rocks.</p> + </article> + </body> +</html> diff --git a/posts/unix/dear-god-why-are-pdf-editors-such-an-ordeal.html b/posts/unix/dear-god-why-are-pdf-editors-such-an-ordeal.html new file mode 100644 index 0000000..9adc833 --- /dev/null +++ b/posts/unix/dear-god-why-are-pdf-editors-such-an-ordeal.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="All PDF Readers/Editors Suck" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ All PDF Readers/Editors Suck</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>All PDF Readers/Editors Suck</h1> + + <p>All PDF editors/mergers/tools either:</p> + + <ol> + <li>Cost hundreds of dollars</li> + <li>Require uploading private documents to a server for processing</li> + <li>Leave watermarks or charge you for "pro" features</li> + <li>Are blatant malware</li> + </ol> + + <p> + Except mupdf and mutool, which are absolutely amazing and I can't live + without them. + </p> + </article> + </body> +</html> diff --git a/posts/wheels/2019-06-07-how-to-start-and-drive-a-hudson-hornet.html b/posts/wheels/2019-06-07-how-to-start-and-drive-a-hudson-hornet.html new file mode 100644 index 0000000..e60e5f4 --- /dev/null +++ b/posts/wheels/2019-06-07-how-to-start-and-drive-a-hudson-hornet.html @@ -0,0 +1,328 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta + property="og:title" + content="How to Start and Drive a Hudson Hornet" + /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ How to Start and Drive a Hudson Hornet</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>How to Start and Drive a Hudson Hornet</h1> + + <p class="description"> + My understanding is there are a lot of people out there for whom driving + a car from the mid-20th century is an oddity, a curiosity, or a life + experience they can't relate to. This is for the non-experts, and + non-Hudsonites to get an idea of what it's like. + </p> + + <p> + There are some significant differences between driving the Hornet and + most other cars you come across today. Some of them are just because + there are sixty-six years between the Hudson and the 2019 model year. + Others are Hudson-specific. Many people who I've talked to have said + that they would feel intimidated driving my car (whether that's because + of its perceived complexity or obvious value to me). So, for those who + just want to know how it's done: here is how you start and drive a + Hudson Hornet. + </p> + + <h2>The Gauge Cluster, Switches, and Controls</h2> + + <p> + Open the door, slide onto the bench seat, and sit behind the [massive] + steering wheel. For those who haven't experienced it before, it feels + like you have a whole lot of room at your disposal, almost like there + <em>should</em> be more matter occupying the space around you. In front + of you is probably the shiniest dashboard you've ever seen. It's simple, + and probably slightly familiar. + </p> + <p>From left to right above the steering wheel you have:</p> + <ul> + <li> + A speedometer that tops out at 120 mph (with 99K odometer inside) + </li> + <li> + Fuel and coolant temperature gauges (and two dummy lights; more on + those later) + </li> + <li>A clock</li> + <li>An AM radio</li> + <li>A glove compartment</li> + </ul> + + <p>From left to right under the steering wheel you have:</p> + <ul> + <li>A 2-speed wiper control knob</li> + <li>A weather control (heater) temperature slider</li> + <li>A 2-speed weather control fan knob</li> + <li>The ignition barrel</li> + <li>A headlight switch</li> + <li> + A cigarette-lighter (the owner's manual calls it a cigar lighter!) + </li> + </ul> + + <p> + Also, underneath the dashboard on the left there is a parking brake + handle and hood latch release and on the right there is an arm which + raises and lowers the fresh air cowl vent. Think of it as "recirculate" + in more modern vehicles. If you're looking for the turn signal lever + it's the tiny stick to the left of the steering wheel. The indicator is + the little yellow light on the far left of the dash. There's only one so + it flashes when you're signalling left or right. We also added our own + air conditioning system, something Hudsons never came with from the + factory. + </p> + + <h2>Dual-Range Hydramatic</h2> + + <p> + The first thing that might confuse some folks when they first see the + car running is the shift lever. Many Hornets came with three-speed + manual transmissions that were shifted from the column (overdrive was an + option). However, lots of owners paid extra for the optional "Dual-range + Hydramatic", a fully automatic transmission from General Motors. Truly, + this car has a 4-speed automatic that requires no manual shifting during + normal use, making it that much easier to take a boatload of people to + get milkshakes. + </p> + + <p> + Behind the steering wheel is a shift indicator that deviates from the + "PRNDL" pattern most folks are familiar with. From left to right (shift + arm fully at the top to arm fully towards the bottom), the 'gears' are: + </p> + <ul> + <li>N (Neutral)</li> + <li>4-Dr (Drive, all four speeds)</li> + <li>3-Dr (Drive, three speeds only)</li> + <li>Lo (Low gear)</li> + <li>R (Reverse)</li> + </ul> + + <p> + Neutral isn't just a mid-way point between reverse and drive in this + car. It's a necessity. With automatic Hornets (and Hydramatics in + general), neutral is used to start the car. There is an electric lockout + preventing the car from being started in any gear but neutral, so you do + have to put the car in neutral before you turn the key (if you're on a + hill put your foot on the brake or engage the parking brake). + </p> + + <p> + Drive is split into 4-Dr and 3-Dr, which basically decides whether the + transmission utilizes high gear. In the owner's manual, Hudson + recommends using 3-Dr for driving around town (as the low RPMs delivered + by high gear means unnecessary shifting in and out of 4th gear) and 4-Dr + for highway driving. It really depends on what speed you're going to be + driving at but there isn't anything wrong with driving around in 4 all + the time. I typically leave it in 4th at sustained speeds above 45MPH. + You can switch between these gears any time while moving. + </p> + + <p> + Low gear basically locks the transmission in 2nd gear so you don't spin + the wheels. The owner's manual says this is for pulling out of sand or + dirt if you get stuck. + </p> + + <p> + Reverse works just about how you might expect but with an added catch: + if the engine is off it acts as park. That's right. When you turn the + car off you can put it in reverse and the transmission will engage a + lock pin to prevent the car from rolling. You can't start the car in + this gear because of the lockout however so you have to shift into + neutral to start the car. So for starting, put it in neutral, for + stopping, put it in reverse. + </p> + + <h2>Choke and Gas</h2> + + <p> + For cold starts, our Hornet (and I believe this was common for other + Hudsons of the time) is equipped with an automatic 2-stage choke. Push + the pedal all the way to the floor once to set the choke. After the car + has started and has warmed up, kick the gas quickly to the floor and + release to cancel the choke. + </p> + + <p> + For warm starts the engine doesn't need the choke but likes to be given + just a little bit of gas while cranking. + </p> + + <h2>The Keys, Ignition, and Warning Lights</h2> + + <p> + Hudsons like mine come with two keys. The octagonal one is for starting + the car, it's used in the ignition. The round one is used for the door + and trunk locks (and I believe in my case the glove box). My + understanding is this is actually reversed from the majority of Hudsons + and is due to a locksmith error at one point or another. + </p> + + <p> + The ignition switch sits so that the teeth of the key enter vertically. + Turning the key left powers accessories like the radio. Turning the key + right once switches the car to "ON" which will allow the engine to be + started and remain running. + </p> + + <p> + Here's where some things may vary depending on the year of the car. For + '51 Hornets, there's a separate starter button located all the way on + the left control pod. For these cars, you put the key in and turn it to + "ON", and then press and hold the button until the car has started up. + For '52 Hornets onwards, the ignition switch also activates the starter + if you turn the key past "ON" (like in most modern vehicles). + </p> + + <p> + If you turn the key to "ON" you'll see two red warning lights appear on + the dash next to the indicators marked "AMP" and "OIL". These are + [alternator] charging status and oil pressure status lights. Our car is + equipped with a 12-V alternator system so the AMP light really comes on + if there is low voltage while the oil pressure light comes on when + there's low oil pressure. These lights will only appear with engine off, + key "ON" or if something has gone very wrong. + </p> + + <h2>Starting and Driving</h2> + + <p> + So now that I've gone over the basics of all the components, here is the + normal starting procedure. It actually varies depending on whether the + engine has been warmed up. That's life with carburetors. + </p> + + <h3>From cold:</h3> + + <ul> + <li> + Put your foot on the brake, and shift the lever into neutral. Just + push it vertically, pulling towards you slightly if you need to. + </li> + <li> + Push the gas pedal all the way to the floor once and let your foot + back up again to set the choke. + </li> + <li> + Put the key in the ignition and start the car (the "AMP" and "OIL" + lights should switch off. + </li> + <li> + Wait for the engine to smooth out so you know that it's warm enough to + cancel the choke, and kick the gas pedal once to cancel it. (If the + RPMs are still higher than idle then it's not quite at operating + temperature yet) + </li> + <li> + Pull the shifter down into 4-Dr or 3-Dr (or R), and release the + parking brake by twisting the handle towards the steering wheel + </li> + <li>Let off the brake and you're off!</li> + </ul> + + <h3>From warm:</h3> + + <ul> + <li>Put your foot on the brake and shift into neutral.</li> + <li> + While giving just a little bit of gas, start the car. Both warning + lights should disappear. When the engine fires up you can let off the + gas and let it idle. + </li> + <li> + Pull the shifter into 4-Dr or 3-Dr (or R), and release the parking + brake by twisting the handle towards the steering wheel. + </li> + <li>Done.</li> + </ul> + + <h2>Stopping and Parking</h2> + + <ul> + <li> + Hold your foot on the brake and twist the parking brake handle towards + the door of the car, and pull it towards you + </li> + <li> + When you're ready to shut off the engine, you can shift it into either + neutral or reverse and turn the key off. Shift it into reverse if you + haven't already to lock the transmission. + </li> + </ul> + + <p> + Note: I usually engage the parking brake AND put the car in reverse, + just to be safe. If you had to pick one however I would use the + transmission in case you're on a steep hill and your brakes fail for + whatever reason. + </p> + + <p> + And there you have it! Not much is different from most cars around today + but there are one or two quirks (more about old cars than about Hudsons + in particular). The only major thing to keep track of while driving is + that you have no power steering, so get ready to anticipate turns sooner + and use more of the wheel with every turn. + </p> + </article> + </body> +</html> diff --git a/posts/wheels/2019-07-04-yabs-yet-another-bad-shop.html b/posts/wheels/2019-07-04-yabs-yet-another-bad-shop.html new file mode 100644 index 0000000..e1dcaa2 --- /dev/null +++ b/posts/wheels/2019-07-04-yabs-yet-another-bad-shop.html @@ -0,0 +1,241 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta property="og:title" content="YABS: Yet Another Bad Shop" /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ YABS: Yet Another Bad Shop</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>YABS: Yet Another Bad Shop</h1> + <p> + Today I received a text message from a local mechanic/auto shop asking + me to leave them a Google review. It was an automated message from a + shop that I know well and have used many times in the past. + Unfortunately, I have had several poor experiences (at the time they + seemed horrific) with them in the past year and I can honestly say + they'll never receive my business again. Now I could have used this as + an opportunity to leave them an anonymous nasty-gram but instead I'm + going to do the opposite. I'm going to write about everything I don't + like about them without telling you who they are or hiding who I am. Why + would I do that? Well for one, they were an excellent shop for many + years. I believe a recent change in management is to blame and I'm not + going to ruin their chances of making a comeback (because frankly I + would like for them to rebound). And secondly, I don't believe in + hiding. This page and its author are public knowledge. Now, in no + particular order: a sample of awful work from yet another bad shop. + </p> + + <h2>Mom's Truck -- Balls Out</h2> + + <p> + Mom's truck is a 2007 Chrysler Aspen that she loves very much. Dad does + a whole lot of work on it himself (the both of us do pretty much + everything we can in-house so long as we have the right equipment). + We've been taking her truck into this shop for years because we've found + them to be reliable, efficient, and economical. As I said before, at + some point in their recent history they changed hands -- either + ownership or management, I can't remember which. It was around this time + that Dad decided to overhaul Mom's front suspension. He replaced the + ball joints, tie rod ends, and a few other worn out parts. He then did + his own best-guess front-end alignment, but left everything loose so + that YABS could finish up the alignment and tighten everything. Now read + that again because it's important. Dad did his own alignment in our + driveway (as a cost-saving measure), got it decently close, but then + instructed this shop to finish the job and tighten everything up. + </p> + + <p> + Now here's where things fall apart. This shop full of professional + mechanics took one look at the alignment Dad did and decided it was good + enough. Hooray for Dad and supernatural mechanical skills, but the shop + didn't even touch the car. They called Dad back to come pick up the car, + telling him it was already good to go. They never tightened a thing, + even after Dad explicitly told them everything was loose and needed to + be tightened but they didn't to touch a thing. So what happened? Dad + picked up the car assuming everything was A-OK and Mom drove the car for + about a week before the two front tires wore down so badly they had to + be replaced immediately. Everything fell out of alignment as things + loosened further and further and the tires wore unevenly until they + ripped themselves to shreds. The worst part? These weren't tires with 6+ + years on them. These were brand new tires. So YABS got to install two + more front tires and then tighten everything. They did not cover the + costs, presumably because it was Dad who had done the alignment. Strike + one. + </p> + + <h2>Friend's Minivan -- Crude Necessities</h2> + + <p> + A good friend of ours drives a 2005-2006 Chrysler Town and Country. It + was actually Mom's car before upgrading to the Aspen (the minivan was + perfect in every way but it couldn't tow). Our friend has been using + YABS for just a long as we have. Once again, things started getting + kinda strange after several years of good service. She started getting + charged extra for simple repairs she had them doing very consistently. + They also started tacking on extra items for routine jobs. She would go + in for an inspection and they would claim she needed a new Part X. Now + this in and of itself isn't an uncommon or even strange request to make. + As cars age they need things and sometimes you don't know what they need + until you visit a professional mechanic. They remember the things you + forget about. + </p> + + <p> + One day they did all the forgetting, and they forgot a pretty important, + nay, crucial engine component: motor oil. Our friend took her minivan + into YABS for a routine oil change. Good diligence on her part. And + she's not the type to do that change on her own. She's too old to get + under a car anyway (no offense!). So she took the van to YABS and they + did a job they've done thousands of times: drain oil, replaced the + filter, and gave her back the car. Easy peasy right? Now I know I'm not + a professional but I'm thinking someone might have wanted to + double-check that several quarts of synthetic had left the shop shelf + and gone into the car they just backed out of the bay door. Now this + part of the story I'm a little fuzzy on so take it with a large, heaping + grain of salt, but I can say for a fact that they failed to + <em>completely</em> refill the engine oil before returning her car. + Supposedly there was enough in there such that the minivan survived long + enough for them to realize it before she drove off. + </p> + + <h2>Monty, My 2013 Ford Focus -- Nut Allergy</h2> + + <p> + I decided to give YABS another try after a long leave of absence. I + needed new tires all around for my daily driver. I also needed an + inspection and an alignment. A simple set of tasks for any shop (you see + where this is going). I initially tried to go to another local shop but + they were all out of the tires I was looking to get so I caved and went + to YABS. About halfway through the job they gave me a call and told me + they had some bad news. They said that there were some issues getting + the lug nuts off my wheels and that they had all been stripped, warped, + or otherwise destroyed in the process. They told me the only fix was to + get new ones from a supplier in town for about $160. Keep in mind the + entire job (inspection, tires, etc.) was going to cost $650. + Furthermore, dad and I had no problem getting those lug nuts off and + back on again just a few weeks prior when we changed the transmission + fluid. + </p> + + <p> + They didn't have an explanation that I could reconcile with. Joe Schmo + over the phone told me this is typical of Fords and Chryslers these days + and that they'd like to keep my lug nuts for a class action lawsuit + they're participating in. Now why on Earth would any sane mechanic, with + full knowledge they are dealing with a defective set of lug nuts, take a + high power impact wrench to those wheels without speaking with the owner + about it first? Smelled fishy to me honestly. But what was I gonna do? + Dad went out and grabbed twenty new lug nuts for cheaper than they + wanted to sell them for. + </p> + + <p> + Oh the tires were Cooper GTs by the way and they're amazing. They're + smooth and quiet and came with a very nice warranty. They're also made + in the USA, which is very important to me. 10/10 would recommend. + </p> + + <h2>Ol' Blue -- Tunnel Vision</h2> + + <p> + This was the real kicker. And this one doesn't really have any trailing + narrative. I got four new tires on Ol' Blue, my 1953 Hudson Hornet. They + were delivered to our house: four brand new Diamond Back wide white wall + radials. Super nice tires, with a super nice road hazard warranty (as a + side note I totally recommend you + <a href="https://dbtires.com/">check out Diamond Back's website</a> if + you're looking for white wall radials). So we brought the car to YABS + with the new tires and asked them to mount them on the car. + </p> + + <p> + When we went to pick up the car everything looked great and I drove off. + I made it all the way to the Monitor Merrimack Memorial Bridge Tunnel + before I heard a loud rattling and a bang. I looked in the rear-view + mirror and swore I could see my precious hubcap rolling off to eternity. + When they replaced the hubcaps they didn't fully press one of them on. + And it's not that difficult. These hub caps are very secure when pressed + on the rim, we've never had problems with them. Oh and we're talking + about Hudson hubcaps that came with the car, and aren't super easy to + find. And I couldn't stop to get out and grab it because I was right at + the mouth of the tunnel. We went back later to try and see it but we + couldn't. And it was probably destroyed getting thrown from the car + anyways. + </p> + + <p> + The worst part is, the hubcap took a chunk out of my white wall on its + way out from under the wheel skirt. So the day I got the tires I had to + take a picture and redeem my road hazard warranty. Luckily, Diamond Back + were true to their word and sent me a new one no questions asked. The + beat up tire is now my spare. + </p> + + <h2>Not All Bad</h2> + + <p> + Like I said before, YABS used to be a very nice shop with friendly + people that did good work. And they didn't charge exorbitant prices for + their work. Times have changed, and I believe management has as well. + I've stopped visiting their shop completely. I found a new one that I + trust and will be taking all of my cars to. They've already done a + safety inspection on Ol' Blue and didn't put up a fuss. They're clean + and friendly and don't seem to be out to screw me. But as with + everything else, your mileage may vary. + </p> + </article> + </body> +</html> diff --git a/posts/wheels/2019-08-30-keep-right-except-to-pass.html b/posts/wheels/2019-08-30-keep-right-except-to-pass.html new file mode 100644 index 0000000..61f329f --- /dev/null +++ b/posts/wheels/2019-08-30-keep-right-except-to-pass.html @@ -0,0 +1,114 @@ +<!DOCTYPE html> +<html> + <head> + <link rel="stylesheet" href="/includes/stylesheet.css" /> + <meta charset="utf-8" /> + <meta name="viewport" content="width=device-width, initial-scale=1" /> + <meta + property="og:description" + content="The World Wide Web pages of Adam Carpenter" + /> + <meta property="og:image" content="/includes/images/logo_diag.png" /> + <meta property="og:site_name" content="53hor.net" /> + <meta + property="og:title" + content="Left Lane is for Passing, Not Cruising" + /> + <meta property="og:type" content="website" /> + <meta property="og:url" content="https://www.53hor.net" /> + <title>53hornet ➙ Left Lane is for Passing, Not Cruising</title> + </head> + + <body> + <nav> + <ul> + <li> + <a href="/"> + <img src="/includes/icons/home-roof.svg" /> + Home + </a> + </li> + <li> + <a href="/about.html"> + <img src="/includes/icons/information-variant.svg" /> + About + </a> + </li> + <li> + <a href="/software.html"> + <img src="/includes/icons/git.svg" /> + Software + </a> + </li> + <li> + <a href="/hosted.html"> + <img src="/includes/icons/desktop-tower.svg" /> + Hosted + </a> + </li> + <li> + <a type="application/rss+xml" href="/rss.xml"> + <img src="/includes/icons/rss.svg" /> + RSS + </a> + </li> + <li> + <a href="/contact.html"> + <img src="/includes/icons/at.svg" /> + Contact + </a> + </li> + </ul> + </nav> + + <article> + <h1>Left Lane is for Passing, Not Cruising</h1> + + <p> + Greetings fellow drivers of Hampton Roads. You may have noticed a new + sign on I264 today that befuddled or confused you. It went something + along the lines of + </p> + + <blockquote>LEFT LANE IS FOR PASSING NOT CRUISING</blockquote> + + <p> + Believe it or not this has been the law throughout Virginia for years + (<a + href="https://law.lis.virginia.gov/vacode/title46.2/chapter8/section46.2-804/" + >read about it here</a + > + and + <a + href="https://law.lis.virginia.gov/vacode/title46.2/chapter8/section46.2-842.1/" + >here</a + >). The law states you keep right except while passing. In most other + states things work this way but in Virginia, especially around here, the + left lane is treated as a moving, cruising lane. If you're in the left + lane and you've completed a pass please be mindful of the cars behind + you and move back over into the right-hand lane(s) so that other drivers + can do the same. + </p> + + <p> + It's really nice when this is practiced (like I said, I've experienced + it in other states) because you can easily move over when there are slow + vehicles ahead and then continue on your merry way. It reduces + congestion and prevents people from having to pass in the right lane, + which is both annoying and dangerous. Especially since this is typically + the lane cars from entrance and exit ramps are merging with. + </p> + + <p> + Don't forget too that it isn't rude or road-rage-y for someone behind + you to honk their horn or flash their lights if you're moving too slowly + in the passing lane. This is a perfectly polite request to pass you. You + don't set or enforce the speed limit. The correct (and legal) thing to + do, believe it or not, is to move over and slow down to let them pass + you. It's all about safe and sane driving etiquette. If you aren't + actively passing other cars, move on over to the right. It goes a long + way. + </p> + </article> + </body> +</html> |