feat: Initial commit

This commit is contained in:
2025-02-19 17:01:08 -05:00
commit e0fb6129ad
2362 changed files with 325107 additions and 0 deletions

88
deploy/about/index.html Normal file
View File

@@ -0,0 +1,88 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: About - Michael Housh
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir about">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class href="/articles/">Articles</a>
</li>
<li>
<a class="active" href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article>
<div class="prose">
<p>Michael is a third generation HVAC technician / owner located in Monroe, Ohio. He is the president<br />
of <a href="https://www.houshhomeenergy.com">Housh - The Home Energy Experts</a>, where they focus on high<br />
performance HVAC systems, indoor air quality, and home performance upgrades.</p>
<p>Michael is passionate about helping the HVAC trade grow in skill and integrity. He is also<br />
passionate about programming solutions (primarily in Swift) for the HVAC industry to automate his<br />
business and help others automate theirs.</p>
<p>Michael likes to think deeply about where the industry has been and where it is going. Coming up<br />
with innovative solutions to common problems that are faced, with a primary focus on residential<br />
HVAC and Home Performance.</p>
<p><strong>Michaels Favorite Quote:</strong></p>
<pre><code>Integrity is doing the right thing, even when no one is watching!
~ C.S. Lewis
</code></pre>
<p>Michael is a proud contributor to many online groups / podcasts:</p>
<pre><code>HVAC School
The HVAC Grapevine
HVAC Overtime
</code></pre>
<p>Michaels PGP Fingerprint</p>
<p>B86F487BF0A715D016DB140A37F1B52C60D8C24B</p>
</div>
</article>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,193 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Calculate SEER Degradation by Age
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This is a quick tech-tip to learn how to calculate the degradation of SEER based
on age.
The degradation of SEER is due to fouling of the evaporator coil with dirt and
refrigerant charge losses. It should be noted that this is not true for..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2023-09-19-calculate-seer-degradation-by-age.png" name="twitter:image"/>
<meta content="Calculate SEER Degradation by Age" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2023/calculate-seer-degradation-by-age/" name="og:url"/>
<meta content="Calculate SEER Degradation by Age" name="og:title"/>
<meta content="This is a quick tech-tip to learn how to calculate the degradation of SEER based
on age.
The degradation of SEER is due to fouling of the evaporator coil with dirt and
refrigerant charge losses. It should be noted that this is not true for..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2023-09-19-calculate-seer-degradation-by-age.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Calculate SEER Degradation by Age
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">September 19, 2023</span>395 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/formulas/">formulas</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-09-19-calculate-seer-degradation-by-age.png"/>
<p>This is a quick tech-tip to learn how to calculate the degradation of SEER based<br />
on age.</p>
<p>The degradation of SEER is due to fouling of the evaporator coil with dirt and<br />
refrigerant charge losses. It should be noted that this is not true for all<br />
applications, but is used as an estimation based on research done by the <code>DOE</code><br />
of the average degradation based on systems tested.</p>
<h2>Formula</h2>
<p>This is the formula used to calculate the SEER based on age of the evaporator<br />
coil / air handler.</p>
<p>$$ SEER_d = SEER_n \times (1 - M)^{age} $$</p>
<p>| Where | |<br />
| | —————————————— | — |<br />
| $SEER_d$ | Degradated SEER rating |<br />
| $SEER_n$ | Nominal SEER rating when equipment was new |  |<br />
| M | Maintenance factor, 0.01-0.03 |<br />
| age | The age of the equipment, in years |</p>
<p>The maintenance factor of 0.01 is for expertly maintained equipment and 0.03 is<br />
for unmaintained. The maintenance factor in essence is based on 1%-3%<br />
degradation per year, however there are some<br />
<a href="https://publications.energyresearch.ucf.edu/wp-content/uploads/2018/09/FSEC-PF-474-18.pdf">studies</a><br />
that show that this can actually be as high as 5% or above depending on climate.<br />
We could use up to 0.05 as the maintenance factor, just to see what the “range”<br />
of degradation would be.</p>
<p>Interestingly, the study linked also shows that the degradation is higher the<br />
higher the tonnage of the equipment. It also shows that the degradation is lower<br />
per year the higher the nominal SEER rating of the system (which is corelated to<br />
using TXVs and lower airflow rates because of the equipment having multiple<br />
stages).</p>
<h2>Example</h2>
<p>Lets consider that we have a 13 SEER piece of equipment that was matched when<br />
installed and the system is 15 years old.</p>
<p>Plugging those numbers into our formula.</p>
<hr />
<h4>Lowest Range (1% degradation / year)</h4>
<p>$$ SEER_d = 13 \times (1 - 0.01)^{15} = 11.2 $$</p>
<hr />
<h4>Highest Rage (5% degradation / year)</h4>
<p>$$ SEER_d = 13 \times (1 - 0.05)^{15} = 6 $$</p>
<hr />
<p>An expertly maintained system may not have degraded that much, with an 11.2 SEER<br />
vs. a poorly maintained / dirty system that also suffers from refrigerant charge<br />
losses can be as low as 6 SEER.</p>
<p>Thanks for learning how to estimate SEER degradation based on equipment age!</p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,195 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Cancel This
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This post is going to be hard to put into words, its going to seem egotistical at points, but know
that my actions / feelings online are the same as they are if you met me in person. The problem with
online interactions is tone and other subtleties..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2023-12-12-cancel-this.gif" name="twitter:image"/>
<meta content="Cancel This" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2023/cancel-this/" name="og:url"/>
<meta content="Cancel This" name="og:title"/>
<meta content="This post is going to be hard to put into words, its going to seem egotistical at points, but know
that my actions / feelings online are the same as they are if you met me in person. The problem with
online interactions is tone and other subtleties..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2023-12-12-cancel-this.gif" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Cancel This
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">December 12, 2023</span>758 words, posted in <a href="/articles/tag/hvac/">HVAC</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-12-12-cancel-this.gif"/>
<p>This post is going to be hard to put into words, its going to seem egotistical at points, but know<br />
that my actions / feelings online are the same as they are if you met me in person. The problem with<br />
online interactions is tone and other subtleties do not come across, so its hard to tell when<br />
someone is joking or being serious.</p>
<h2>The Meat</h2>
<p>It has been brought to my attention that someone out there thinks that Im sexist and should not<br />
speak at the HVAC School symposium because of it. They are holding a curse word against me that I<br />
said two years ago, in the moment A) it was fitting and B) it was one of those times that my mouth<br />
was working faster than my brain (raise your hand if thats ever happened to you).</p>
<p>I am an open book, I am not afraid of showing failures and strengths. Ive never claimed to be<br />
perfect (well, actually I have but its always a joke). Im not at all condoning what Ive said in<br />
the past, nor will I repeat it out of context now, but I communicate with people like adults and I<br />
look at people as piers. We do not always have to agree with one another, conflict helps us learn<br />
where to grow, but we also can not expect people to change to fit our wants / needs, thats just not<br />
how it works.</p>
<p>I do not at all agree with the tactics used by whomever is behind this. I would happily discuss this<br />
in private or out in the open. You can find all my contact / social information in the sidebar of<br />
this website and Ive offered up my cell phone number in private groups that we are all probably a<br />
part of.</p>
<h2>The Potatoes</h2>
<p>I am a father of 3 girls, I have a sister, talk crap about my mom and youll find out who I am! I<br />
love women, I have no problem with women in the trades, I encourage women who are in the trades. I<br />
try to help every person that I can, if I can. I have failed more times than you can imagine! I am<br />
self taught in about everything I do, so I give of it freely. I have all kinds of work to do to grow<br />
into the man that I should be, but at the same time, I am not afraid to be the man that I am today.<br />
I will greet you by whatever pronoun you want to be referred as.</p>
<p>I would love to say that I dont judge people, but I do, just as Im being judged! I am fine with<br />
someone judging me and having opinions about me, I mean that is our right. I will not say that<br />
person is wrong, because in their mind theyre right. What I will not do is stop being myself. I<br />
know for a fact that Ive helped more people than this person has gotten “cancelled”. I will<br />
continue to help people in the trades, homeowners, or people in need. I also will not remain quiet!<br />
I will give my opinion like it or not. There are people in my corner that really know me and my<br />
intentions.</p>
<h2>Final Words</h2>
<p>The trades are rough around the edges, just as am I. The trades are a slow turning ship (just look<br />
at how many still do not follow proper practices, etc. even with the capabilities and resources<br />
available today).</p>
<p>If you are new / coming into the trades then I hope you are not overly sensitive to foul language<br />
and other inappropriate comments. Thick skin is valuable in the trades, but at the same time dont<br />
be afraid to speak up if something offends you. Remember we are adults, we can handle disagreements<br />
like adults (well, some of us can). Adults can learn from those of any age, they can reflect on<br />
their own behavior and make their own decisions.</p>
<p>I personally think that being offended is not a bad thing, it causes us to reflect / repair our<br />
foundational beliefs. I hope that we can stop with this “cancel culture” of today, stop hiding<br />
behind a keyboard, and be a diverse community.</p>
<p>To wrap things up, I just want to reiterate that I am not at all mad at whomever is behind this. To<br />
everyone out there who has shown me love and support, I greatly appreciate it.</p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,223 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Heat Recovery Chiller
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so
Im doing it now. I did discuss this on
this episode of the HVAC School Podcast.
Heat Recovery Chillers
I have always had a love and passion for..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2023-10-27-heat-recovery-chiller.png" name="twitter:image"/>
<meta content="Heat Recovery Chiller" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2023/heat-recovery-chiller/" name="og:url"/>
<meta content="Heat Recovery Chiller" name="og:title"/>
<meta content="This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so
Im doing it now. I did discuss this on
this episode of the HVAC School Podcast.
Heat Recovery Chillers
I have always had a love and passion for..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2023-10-27-heat-recovery-chiller.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Heat Recovery Chiller
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 27, 2023</span>811 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/chiller/">chiller</a> and <a href="/articles/tag/hydronics/">hydronics</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-27-heat-recovery-chiller.png"/>
<p>This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so<br />
Im doing it now. I did discuss this on<br />
<a href="https://hvacrschool.com/podcasts/is-the-future-of-air-conditioning-self-contained-propane-chillers/">this episode of the HVAC School Podcast.</a></p>
<h2>Heat Recovery Chillers</h2>
<p>I have always had a love and passion for hydronic systems, perhaps its because they are not that<br />
common in most areas. The designs tend to be elegant and the flexibility is unparalleled by most<br />
equipment choices currently available in the U.S. Im going to try to not get too far into the weeds<br />
in this article, but offer an overview of what I feel would be my dream system.</p>
<h2>The Source</h2>
<p>A heat recovery chiller will do simultaneous heating and cooling, as opposed to a traditional<br />
heat-pump or reverse cycle chiller that can only operate in one mode at a time. This system would<br />
have a second refrigerant to water heat exchanger and utilize the air-source when we dont need to<br />
bank / store heat, or are running in heat only mode. There are several benefits to this style<br />
system, the main being that while operating simultaneous heating / cooling mode the COP of the<br />
system doubles. For example, the <a href="https://multiaqua.com/mhrc2/">Multi-Aqua MHRC2</a> shows a COP of<br />
about 8, which is approximately equivalent to 30 EER or 34 SEER. This gives us geothermal level<br />
performance without the need of a field.</p>
<h2>Indoor Portion</h2>
<p>The indoor portion of the system, we would utilize buffer tanks as thermal storage for the chiller.<br />
The buffer tanks give us several benefits, including longer run times for the chiller, load<br />
matching, and the ability to size for larger load (heating or cooling) without some of the problems<br />
that occur when over-sizing a traditional system. The buffer tanks also allow sizing more<br />
aggressively by having storage during peak load conditions.</p>
<p><img src="/articles/images/2023-10-27-buffers2.png" alt="buffer" /></p>
<p>This shows a cooling buffer tank as well as a heating buffer tank. The horizontal pumps are what<br />
circulate water through the chiller, while the vertical pumps are what distribute the water to the<br />
load / emitters. This configuration allows for water to be used for the loads first and extra<br />
capacity to go into the buffer tanks. The buffer tanks also offer hydraulic separation for the pumps<br />
(meaning that they wont interfere with each other if / when there are different flow rates).<br />
Another advantage of the buffer tanks is that you can connect multiple heating or cooling sources in<br />
parallel to the system. This is shown by the extra tees in the hot buffer tank where we could<br />
connect something such as solar water collectors, pellet or wood boiler, or a conventional boiler.<br />
Youll also notice on the right side of the hot buffer tank, that I am showing a brazed plate heat<br />
exchanger that would be used to supply domestic hot water.</p>
<h2>Distribution System</h2>
<p>This could be a number of things, from radiant panels, in-floor, high-output baseboard radiators,<br />
however Im going to model it as a 4-pipe hydronic air handler.</p>
<p><img src="/articles/images/2023-10-27-ah.png" alt="ah" /></p>
<p>The hydronic air handler is able to provide cooling, heating, and re-heat dehumidification, all in<br />
one package. With a hydronic system, it would be very easy to load match by controlling the fan<br />
speed and utilizing a Delta-T pump or outdoor reset controls. These air handlers are available from<br />
several manufacturers and come in different styles from traditional (as shown), small duct high<br />
velocity systems, and even ductless styles.</p>
<h2>Disadvantages</h2>
<ol>
<li>Not highly available in the U.S.</li>
<li>When the chiller is down nothing works (not much different than traditional)</li>
<li>Lack of understanding / technicians afraid to work on this style system.</li>
<li>Potentially higher upfront costs.</li>
<li>Lack of design or planning could cause unhappy clients (same with traditional)</li>
<li>Distribution systems need to be designed around low water temperatures (not a drop in replacement<br />
for traditional boiler systems)</li>
</ol>
<h2>Advantages</h2>
<ol>
<li>Central plant for heating, cooling, and DHW (also a disadvantage)</li>
<li>Flexible distribution options / methods.</li>
<li>Self contained refrigerant circuit</li>
<li>Ability to produce / store thermal energy during off peak electrical hours</li>
<li>Ability to move BTUs more efficiently through water than air</li>
<li>Long life for distribution system (50-100+ years)</li>
<li>Easier transition to natural / flammable refrigerants</li>
</ol>
<h2>Conclusion</h2>
<p>In conclusion, there are many advantages to this style system, as well as disadvantages. One of the<br />
main points is to think of the system in 3 distinct components, the source(s), thermal storage, and<br />
distribution. As mentioned, this only one concept, but in reality, there are many ways to accomplish<br />
this, which is one of its advantages. For example, perhaps in certain scenarios it makes sense to<br />
dump excess heat into a pool, create ice storage during off peak hours, cascade into another water<br />
-&gt; water heat pump for higher temperature distribution, incorporate solar collectors, and so on.</p>
<p>Thank you for reading all the way to the end!</p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,195 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Hope
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This is a piggy-back article off of
The Struggle article that I had recently.
I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this
article Id like to take a minute to layout some of the things that give..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2023-10-30-hope.png" name="twitter:image"/>
<meta content="Hope" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2023/hope/" name="og:url"/>
<meta content="Hope" name="og:title"/>
<meta content="This is a piggy-back article off of
The Struggle article that I had recently.
I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this
article Id like to take a minute to layout some of the things that give..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2023-10-30-hope.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Hope
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 30, 2023</span>633 words, posted in <a href="/articles/tag/general/">general</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-30-hope.png"/>
<p>This is a piggy-back article off of<br />
<a href="https://mhoush.com/posts/20231018224631-the-struggle/">The Struggle</a> article that I had recently.</p>
<p>I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this<br />
article Id like to take a minute to layout some of the things that give me hope, things that I<br />
focus on to try and kick myself out of the rut I can get into sometimes.</p>
<p>I believe its important to have <strong>hope</strong>, to realize that feeling down is normal / part of being<br />
human. Its just as important to have hope. For some it is a harder thing to focus on, it may be<br />
easy for us to try and dwell in negative feelings, to some that may feel more comfortable. When<br />
were feeling cynical, its easy to feed the negativity, although its rarely helpful.</p>
<h2>Hope</h2>
<p>One of the things that I try to focus on is that Im human, it brings me hope to realize that Im<br />
not the only one who feels the way that I do. This was evident by the feedback on my previous<br />
article.</p>
<blockquote>
<p>My problems are very much “first world problems”.</p>
</blockquote>
<p>Make no mistake, Im selfish, but its the selfishness that makes me feel distant or disconnected.<br />
The times that I feel connected are without a doubt the times that I let go of my ego and focus on<br />
things outside of myself.</p>
<p>Its the feeling I get from going to customers home and feeling truly appreciated. Theres no push<br />
back on price, no one telling me how I should run my business, no “the part only costs $x on<br />
amazon”, etc.</p>
<p>The feeling of seeing your child smile. The safety you feel when getting a hug from your mother or<br />
father. When youre looking up at the stars and realize how small you actually are.</p>
<p>When youre out with friends and trick the DJ into playing a Mr. Bungle song and no one else<br />
appreciates it, but you. The times when your guard is completely down and you laugh with abandon.</p>
<p>The smell of your lovers hair when youre holding them close. The joy you receive from sitting with<br />
your pets. The songs of nature, insects, birds, etc. The sounds of waves / water in the distance.</p>
<p>The feeling when youve helped someone learn a new skill, when something finally clicks and makes<br />
sense. When a complex topic is understood at a fundamental level. The breakthrough of a problem<br />
youve pondered for days / months / years.</p>
<h2>Conclusion</h2>
<p>There are so many things to be grateful for. This does not mean that there will not be hard times,<br />
there surely will be. This does not mean that you are wrong for having negative feelings, for<br />
feeling depressed or anxious. There are many around you that likely feel similar (they may just not<br />
be able to express it in the same way). You never truly know what the person next to you is dealing<br />
with. Be compassionate (including showing yourself compassion).</p>
<p>When you are feeling down, try to do something for someone else. Make your own list of things to be<br />
thankful for. Maybe my non-exhaustive list above will give you some ideas. Write those items down<br />
regularly so that you can look back on them when you feel out of balance.</p>
<p>There is plenty of negative energy in this world, be true and genuine and you will receive rewards.<br />
When you focus on blessings then the negativity will fade.</p>
<p>What impact are you going to leave with what little time we have?</p>
<p>I hope that you enjoyed this short article. Know that you are <em>NOT</em> alone, you are important, and<br />
that I appreciate <em>you!</em></p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,163 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in 2023
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/most-important-job/">Most Important Job</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">December 14, 2023</span>294 words, posted in <a href="/articles/tag/hvac/">HVAC</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p class="mt-4">
<a href="/articles/2023/most-important-job/">This short tech tip is about something one of my good friends in the trade told me a long time ago,
that has stuck with me through the years. It is a simple phrase / mindset.
“The current job youre on, is the most important job of your day”.
This...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/cancel-this/">Cancel This</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">December 12, 2023</span>758 words, posted in <a href="/articles/tag/hvac/">HVAC</a>
</div>
<p class="mt-4">
<a href="/articles/2023/cancel-this/">This post is going to be hard to put into words, its going to seem egotistical at points, but know
that my actions / feelings online are the same as they are if you met me in person. The problem with
online interactions is tone and other subtleties...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/hope/">Hope</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 30, 2023</span>633 words, posted in <a href="/articles/tag/general/">general</a>
</div>
<p class="mt-4">
<a href="/articles/2023/hope/">This is a piggy-back article off of
The Struggle article that I had recently.
I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this
article Id like to take a minute to layout some of the things that give...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/heat-recovery-chiller/">Heat Recovery Chiller</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 27, 2023</span>811 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/chiller/">chiller</a> and <a href="/articles/tag/hydronics/">hydronics</a>
</div>
<p class="mt-4">
<a href="/articles/2023/heat-recovery-chiller/">This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so
Im doing it now. I did discuss this on
this episode of the HVAC School Podcast.
Heat Recovery Chillers
I have always had a love and passion for...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/you-should-learn-markdown/">You Should Learn Markdown</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 21, 2023</span>364 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/general/">general</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2023/you-should-learn-markdown/">This is a quick article about why you should learn markdown.
What is markdown
Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily
converted to other formats, such as html, pdf, docx, and many more. All...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/the-struggle/">The Struggle</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 18, 2023</span>1520 words, posted in <a href="/articles/tag/article/">article</a> and <a href="/articles/tag/general/">general</a>
</div>
<p class="mt-4">
<a href="/articles/2023/the-struggle/">This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If
that is not your cup of tea then feel free to skip this article.
The struggle
It has been one of those “when it rains, it pours” type of weeks. As...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/calculate-seer-degradation-by-age/">Calculate SEER Degradation by Age</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">September 19, 2023</span>395 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/formulas/">formulas</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p class="mt-4">
<a href="/articles/2023/calculate-seer-degradation-by-age/">This is a quick tech-tip to learn how to calculate the degradation of SEER based
on age.
The degradation of SEER is due to fouling of the evaporator coil with dirt and
refrigerant charge losses. It should be noted that this is not true for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,175 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Most Important Job
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This short tech tip is about something one of my good friends in the trade told me a long time ago,
that has stuck with me through the years. It is a simple phrase / mindset.
“The current job youre on, is the most important job of your day”.
This..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2023-12-14-most-important-job.gif" name="twitter:image"/>
<meta content="Most Important Job" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2023/most-important-job/" name="og:url"/>
<meta content="Most Important Job" name="og:title"/>
<meta content="This short tech tip is about something one of my good friends in the trade told me a long time ago,
that has stuck with me through the years. It is a simple phrase / mindset.
“The current job youre on, is the most important job of your day”.
This..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2023-12-14-most-important-job.gif" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Most Important Job
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">December 14, 2023</span>294 words, posted in <a href="/articles/tag/hvac/">HVAC</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-12-14-most-important-job.gif"/>
<p>This short tech tip is about something one of my good friends in the trade told me a long time ago,<br />
that has stuck with me through the years. It is a simple phrase / mindset.</p>
<blockquote>
<p>“The current job youre on, is the most important job of your day”.</p>
</blockquote>
<p>This mindset should be carried from the dispatcher, manager, and technician to make this successful.<br />
Im not gonna lie and say this is always easy, or even always possible, but if you strive to use<br />
this mindset then you will gain lifelong customers and satisfaction of not having loose ends hanging<br />
out there.</p>
<p>I do think its also important to acknowledge that there are times that a technician has exhausted<br />
all their options, maybe they just dont have the mental capacity anymore to continue with a problem<br />
job, or need a break to come back another day with a fresh set of eyes, etc… This is also an<br />
important thing for a technician to realize, and hopefully those type of instances are much more few<br />
and far between, but I do want to acknowledge that scenario does also exist.</p>
<p>If you are a business owner, then this is something to consider instilling in your operations.<br />
Empower your technicians and dispatchers to understand when things need to be shuffled around in<br />
order to accommodate taking care of the customer at hand. It costs a lot of money to get a<br />
technician to job, so minimizing truck rolls to the same job is important from a business<br />
standpoint.</p>
<p>This was just a quick tech tip of something that has been rolling around in my mind lately. I hope<br />
you find it helpful and it sticks with you through your career as it has mine.</p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,292 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: The Struggle
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If
that is not your cup of tea then feel free to skip this article.
The struggle
It has been one of those “when it rains, it pours” type of weeks. As..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2023-10-18-the-struggle.png" name="twitter:image"/>
<meta content="The Struggle" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2023/the-struggle/" name="og:url"/>
<meta content="The Struggle" name="og:title"/>
<meta content="This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If
that is not your cup of tea then feel free to skip this article.
The struggle
It has been one of those “when it rains, it pours” type of weeks. As..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2023-10-18-the-struggle.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
The Struggle
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 18, 2023</span>1520 words, posted in <a href="/articles/tag/article/">article</a> and <a href="/articles/tag/general/">general</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-18-the-struggle.png"/>
<p>This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If<br />
that is not your cup of tea then feel free to skip this article.</p>
<h2>The struggle</h2>
<p>It has been one of those “when it rains, it pours” type of weeks. As write this, I feel like a baby<br />
/ complainer, which is not my intention, but here it goes.</p>
<p>My aunt had a stroke and is likely not going to make it through the week. My aunt has always lived<br />
in Florida during my life / memory, but has always come to visit. She is my moms oldest sister (9<br />
years apart), so she helped raise my mother growing up. Theyve always had a close relationship and<br />
are like two peas in a pod. They would always visit us, especially while my grand-parents were still<br />
alive. She is currently not really awake or expected to make it. She does not eat / drink and<br />
theyve basically just been making her comfortable.</p>
<p>One of my employees broke his neck over the weekend. I dont have a ton of details on this subject,<br />
but he had surgery to fuse some discs back together and should eventually be ok, however it will be<br />
a long recovery time.</p>
<p>A few weeks ago, I commited one of the deadly sins of running a blower door test without checking /<br />
asking about the fireplaces, which caused lord knows how much damage from the soot that was spread<br />
throughout the living room(s).</p>
<p>An online friend lost her mother.</p>
<p>All of these things have just got me emotional.</p>
<h2>My secrets</h2>
<p>I am an emotional person, sometimes to my detriment. Im prone to fits of anger and depression. I<br />
spent many years masking things through alcohol abuse and many other idiotic tendencies. I still<br />
drink on occasion, but not as I once did.</p>
<p>I often put my faith in folks, even if I havent met them in person, this can often lead to being<br />
let down. I guess I struggle sometimes with the reality of online relationships. I think that people<br />
are genuine, because Im that way (how I act online is the same as I act in person for the most<br />
part). I will happily show / share the good and the bad, in hopes that someone may learn. This is<br />
not at all something to be ashamed of, or anything that Id like to change, however it does on<br />
occasion lead me into turmoil when I find out some true identity / personality of someone.</p>
<p>I hold grudges, like forever grudges. It is very hard for me to get over somethings, even if I want<br />
to. I can sometimes put things out of my mind, but when Im spinning, they will resurface. I want to<br />
forgive people, but it is just not the way it works for me often times. It takes a lot to get me<br />
beyond my breaking point, but once someone has gotten me there, there is likely no turning back for<br />
that person. Luckily, I can count on one hand the number of folks that Ive had to cut out of my<br />
life for these reasons. Id love to say that Im a bigger / better person, that I forgive them, but<br />
truthfully I do not.</p>
<p>My emotions sometimes make me say things publicly that I should keep to myself. I dont have a lot<br />
of regret around these things, because I generally mean what I say, and also feel we are entitled to<br />
opinions as well as entitled to change those opinions as often as we see fit. Although I dont<br />
regret them per-se, it does make me wonder what type of impression it leaves (something for future<br />
pondering, perhaps).</p>
<p>Im one of those that says “I dont care what they think about me”, when I really do care what<br />
people think about me. This often leads to fear and anxiety, especially in social settings. Im not<br />
the greatest at conversation, Im better at writing or some interaction that gives me a bit of time<br />
to think before responding. Therefore, Im quick to make a joke or something rather than having<br />
thoughtful / genuine responses.</p>
<h2>Community</h2>
<p>All of these things have just got me thinking about community. Community is an aspect that seems<br />
distant nowadays, even though we have more opportunity than ever. We call ourselves part of<br />
communities, especially online, but Im not convinced that it is really community (or at least not<br />
most of the time, not saying it cant be / in absolute terms).</p>
<p>I have met a lot of folks online that I consider true friends. Friends that I would do anything for<br />
and feel they would do anything for me, just like my real life friends who have stuck with me for<br />
many years. These are people that challenge me and how I think on a regular basis. They do their<br />
best to lift me up when Im down.</p>
<p>Its easy to hide when so much of our interactions are not really in person, to feel like the<br />
relationships we do have are not genuine, but thats awfully cynical. I prefer to give people the<br />
benefit / trust they deserve until, at least until they dont then see my part about holding grudges<br />
;)</p>
<p>Do you ever feel the same? Instead of being cynical and down, today, Im trying to be positive. Im<br />
trying to share a little bit of what I feel community should be. Although, Ive never met HVAChicks<br />
Jennifer in real life, I read today about her mom and decided to take an hour or so to put together<br />
a website for the <a href="https://hvachicks.com">HVAChicks Community</a>, hoping it would bring a moment of<br />
happiness to her day. While Ive deployed several websites in the past, this one for some reason was<br />
a total PITA, but I got through it. I could feel how grateful she was when I shared it with her (and<br />
its basic AF), but that truly made me feel useful / great after being down in the dumps for a bit.</p>
<h2>Conclusion</h2>
<p>Ive probably rambled enough and am losing direction here, so I will end with a few things.</p>
<ol>
<li>Build the community around you that you want / deserve.</li>
<li>Dont be so quick to pass judgment.</li>
<li>Spend time with your loved ones, while you can.</li>
<li>Tell someone you love them.</li>
</ol>
<p>Finally, Id like to shout out some people that Im grateful for. This is non-exhaustive list, if I<br />
left you off, Im sorry and please do not take it personally.</p>
<ol>
<li>Bryan Orr
<ul>
<li>Bryan has cultivated an awesome group / community that Im proud to be a part of. His time and<br />
commitment to the HVAC industry is something that I hope he himself is proud of. Without Bryan,<br />
mostly all the following names would not even be in my vocabulary.</li>
</ul>
</li>
<li>Ty Branaman (forget exactly how to spell his last name).
<ul>
<li>Ty has such a great personality during his videos / training and Im sure its a struggle to be<br />
positive all the time, however it brings me hope and joy everytime!</li>
</ul>
</li>
<li>Dustin (mother fn) Cole
<ul>
<li>Dustin is like a brother that I never had, hes a true master of his craft and I know that I<br />
can rely on him anytime I need it!</li>
</ul>
</li>
<li>Genry Garcia
<ul>
<li>The cuban crusader who has taught me so much about home performance, and especially ZPD (baby,<br />
baby)!</li>
</ul>
</li>
<li>Chris Hughes
<ul>
<li>Its hard to put into words here, but I know that Chris is there to talk when I need it and<br />
hes a great motivator because of his action items :)</li>
</ul>
</li>
<li>Eric Kaiser
<ul>
<li>I think genuine when I think of Eric, I hear his voice in my head when I write reports because<br />
of guidance he has given in the past. He truly wants to help teach people.</li>
</ul>
</li>
<li>Michael Cianfracco (??)
<ul>
<li>Man does he make me laugh and we share a passion for the 4-Roses.</li>
</ul>
</li>
<li>HVAChicks Jennifer (Ill butcher her last name from memory)
<ul>
<li>Jennifer is inspiring with her goals and everything she does to help anyone in the industry. I<br />
cant wait to meet her in person one day soon!</li>
</ul>
</li>
<li>HVAC Overtime Crew
<ul>
<li>Im lumping these guys together because I truly enjoy when Im able to make their live stream<br />
on Fridays. And I interact with A-Team a lot and really appreciate him / them!</li>
</ul>
</li>
<li>Alicia Hollon
<ul>
<li>Alicia is so awesome to me, I mean she just made my favorite pancakes and sausage for dinner,<br />
love you babe!</li>
</ul>
</li>
</ol>
<p>Lastly, I have to shout out to my mom. I know shes going through a rough time with my aunt<br />
currently. My mother is the kindest gentlest soul that Ive ever met. I look up to all 5 of her!</p>
<p>At any rate, thanks for sticking it out to the end through my ramblings. Be kind to someone today<br />
and tomorrow!</p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,205 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: You Should Learn Markdown
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This is a quick article about why you should learn markdown.
What is markdown
Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily
converted to other formats, such as html, pdf, docx, and many more. All..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2023-10-21-you-should-learn-markdown.png" name="twitter:image"/>
<meta content="You Should Learn Markdown" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2023/you-should-learn-markdown/" name="og:url"/>
<meta content="You Should Learn Markdown" name="og:title"/>
<meta content="This is a quick article about why you should learn markdown.
What is markdown
Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily
converted to other formats, such as html, pdf, docx, and many more. All..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2023-10-21-you-should-learn-markdown.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
You Should Learn Markdown
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 21, 2023</span>364 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/general/">general</a> and <a href="/articles/tag/programming/">programming</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-21-you-should-learn-markdown.png"/>
<p>This is a quick article about why you should learn markdown.</p>
<h2>What is markdown</h2>
<p>Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily<br />
converted to other formats, such as <strong>html, pdf, docx</strong>, and many more. All the articles written on<br />
this website are written in markdown, heres an image of this article written in markdown.</p>
<p><img src="/articles/images/2023-10-21-markdown.png" alt="markdown" /></p>
<p>The reason you should learn markdown is that it allows you to focus on the content / text of your<br />
content with simple concepts for formatting. Markdown is used heavily in documenting software<br />
projects, which is how I got introduced to it, however it can scale all the way up to writing<br />
research papers or even books.</p>
<p>I use markdown for probably 80% of all the text documents I need to write, from company documents,<br />
web / software documentation, and so on. It allows me to get content out quickly without having to<br />
click around with formatting options in a program like <strong>Word</strong> or <strong>Pages</strong>. To be clear, a lot of<br />
the reports and things I generate for my <strong>Home Performance Assessments</strong> are written using<br />
<strong>Pages</strong> (for now at least) because I have templates that make the documents look more<br />
professional, however I am working on solutions to migrate those to be markdown based.</p>
<p>Markdown is supported in mostly all the <strong>Google</strong> tools, as well as the <strong>Outlook</strong> email client<br />
(which is one of my least favorite tools, BTW). It makes it simple to create tables, lists, and many<br />
common document related tasks.</p>
<h2>Resources</h2>
<p>You can learn more about the syntax used for markdown at<br />
<a href="https://www.markdownguide.org/basic-syntax/">markdownguide.org</a>.</p>
<h3>A non-exhaustive list of where you can use Markdown and editors.</h3>
<table>
<thead>
<tr>
<th>Platform</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Google</td>
<td>Most goggle tools support markdown, docs, sheets, etc.</td>
</tr>
<tr>
<td>Outlook</td>
<td>Although I hate outlook email client, it does support markdown.</td>
</tr>
<tr>
<td>Dillinger.io</td>
<td>An online tool for writing / previewing markdown</td>
</tr>
<tr>
<td>MarkText</td>
<td>A multi-platform editor for writing markdown</td>
</tr>
</tbody>
</table>
<p>You can use tools such as <a href="https://pandoc.org/#">pandoc</a> to convert Markdown files to other formats.</p>
<p><img src="/articles/images/2023-10-21-pandoc.gif" alt="pandoc" /></p>
<h2>Conclusion</h2>
<p>I hope that you take the time to research and see if Markdown is good fit for your document /<br />
content creation.</p>
<p>Thanks for reading until the end!</p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,200 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Elevating HVAC: A Skilled Trade Beyond Labor
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="This is a guest post from my good friend, Ty Branaman.
Introduction:
Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor
job, overshadowing the intricate skill set and technical expertise required in..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2024-02-27-elevating-hvac.png" name="twitter:image"/>
<meta content="Elevating HVAC: A Skilled Trade Beyond Labor" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2024/elevating-hvac/" name="og:url"/>
<meta content="Elevating HVAC: A Skilled Trade Beyond Labor" name="og:title"/>
<meta content="This is a guest post from my good friend, Ty Branaman.
Introduction:
Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor
job, overshadowing the intricate skill set and technical expertise required in..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2024-02-27-elevating-hvac.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Elevating HVAC: A Skilled Trade Beyond Labor
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">February 27, 2024</span>535 words, posted in <a href="/articles/tag/hvac/">HVAC</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-02-27-elevating-hvac.png"/>
<p>This is a guest post from my good friend, <strong>Ty Branaman</strong>.</p>
<h2>Introduction:</h2>
<p>Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor<br />
job, overshadowing the intricate skill set and technical expertise required in this field. Labor<br />
jobs are also very important positions needed to keep society running. HVAC, like other skilled<br />
trades, demands a high level of knowledge, precision, and adaptability. This article aims to shed<br />
light on the misconception surrounding HVAC, emphasizing its status as a skilled trade that plays a<br />
pivotal role in creating comfortable and efficient living and working environments.</p>
<h2>Technical Proficiency:</h2>
<p>One of the defining features that distinguish HVAC as a skilled trade is the level of technical<br />
proficiency required. HVAC professionals must have a deep understanding of thermodynamics, fluid<br />
mechanics, electrical circuits, Psychrometrics and air properties. This knowledge is essential for<br />
designing, installing, and maintaining HVAC systems that operate seamlessly and efficiently.</p>
<h2>System Design and Installation:</h2>
<p>HVAC professionals are involved in the intricate process of designing and installing heating,<br />
ventilation, and air conditioning systems. This task requires not only a thorough understanding of<br />
the physical principles governing HVAC but also the ability to tailor solutions to meet the unique<br />
needs of each space. Proper system design and installation are crucial for achieving optimal energy<br />
efficiency and performance.</p>
<h2>Diagnostic Skills:</h2>
<p>Troubleshooting and diagnosing issues in HVAC systems require a keen analytical mind and<br />
problem-solving skills. Skilled HVAC technicians possess the ability to identify and rectify<br />
problems efficiently, ensuring minimal downtime and disruption to the comfort of occupants. This<br />
diagnostic acumen is a hallmark of a trade that goes beyond routine labor.</p>
<h2>Adaptability to Advanced Technologies:</h2>
<p>The HVAC industry is in a constant state of evolution, with new technologies and innovations<br />
continuously being introduced. Skilled HVAC professionals are adaptable and stay abreast of these<br />
advancements. From smart thermostats to energy-efficient systems, they integrate cutting-edge<br />
technologies to provide state-of-the-art solutions for their clients.</p>
<h2>Safety and Compliance:</h2>
<p>Safety is paramount in the HVAC trade. Professionals must adhere to strict safety protocols to<br />
protect both themselves and the occupants of the spaces they work in. Additionally, compliance with<br />
industry regulations and codes is a testament to the skilled nature of the trade, ensuring that HVAC<br />
systems meet the highest standards of safety and efficiency.</p>
<h2>Continual Learning and Certification:</h2>
<p>Unlike a labor job, HVAC professionals engage in continual learning to stay current with industry<br />
trends and technological advancements. Many pursue certifications and attend training programs to<br />
enhance their skills and expand their knowledge base. This commitment to ongoing education is a<br />
hallmark of skilled trades.</p>
<h2>Conclusion:</h2>
<p>Heating, Ventilation, and Air Conditioning is undeniably a skilled trade that goes beyond the<br />
perception of a labor job. Labor jobs are also very important to the function of society and I have<br />
proudly done these jobs myself. The technical proficiency, problem-solving abilities, adaptability,<br />
and commitment to safety make HVAC professionals essential contributors to the creation of<br />
comfortable and efficient indoor environments. It is crucial to recognize and appreciate the skill<br />
set inherent in the HVAC trade, as it plays a vital role in shaping the quality of life for<br />
individuals and the functionality of diverse spaces.</p>
<ul>
<li>Ty Branaman</li>
</ul>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,227 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Free As In Freedom
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="Salute to open-source software engineers" name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png" name="twitter:image"/>
<meta content="Free As In Freedom" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2024/free-as-in-freedom/" name="og:url"/>
<meta content="Free As In Freedom" name="og:title"/>
<meta content="Salute to open-source software engineers" name="og:description"/>
<meta content="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Free As In Freedom
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span>1007 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
<p>This is a hot take kind of article, but here it goes the rant.</p>
<h2>This applies to me and you.</h2>
<p>Im writing this to remind myself somethings that I too often take for granted. I am going to<br />
preface this whole article by saying that everything Im going to lay out / mention is something<br />
that I am personally guilty of. This is an open reminder and call out of things that I feel should<br />
change.</p>
<h1>Our perspective is flawed</h1>
<p>Nobody can dispute that the advances in technology have greatly improved our lives. Like anything,<br />
though, there is a trade off.</p>
<h2>What is FOSS</h2>
<p>FOSS is an acronym for “Free and Open Source Software”. It is generally about how software is<br />
licensed, meaning that the source code is available in the public for review, allowing a broader<br />
spectrum of people than the originators of the code to have input, look for bugs, redistribute the<br />
software, contribute, etc. It does not however mean that the software should be no cost to the end<br />
user.</p>
<p>This is where the word “freedom” comes into it. Overtime, as a society, we generally now think of<br />
FOSS as “free” software. This takes what was originally a noble / courageous idea and devalues it to<br />
the point that we now expect things to be free. It encourages corporate greed to take advantage of<br />
people who created something to solve a particular need, or as a hobby, expecting the creator to<br />
handle the burden of maintaining / patching bugs while they profit from it. Dont get me wrong,<br />
these corporations will also contribute back, sometimes even donate money to the creators. I am not<br />
at all opposed to capitalism, nor saying that these corporations are in the wrong. At the end of the<br />
day, <strong><em>we</em></strong> created this problem.</p>
<h2>Current state and how we got here</h2>
<p>Software services / giants create applications that we come to rely on. They tempt / bait us with<br />
them being “free” or cheap, but that is because <strong><em>we</em></strong> are their target. They bloat the software<br />
with tracking and telemetry to capture data about us and sell us more products and services. Once<br />
again, if youre pro-capitalism, its somewhat hard to blame them for this. Were the gullible sheep<br />
who will blindly eat out their grain bins.</p>
<p>I can remember back in the day when there were music pirating services on the internet (napster is<br />
the one that comes to mind). As a giant music buff, I quickly jumped on board with services like<br />
these. Back in those days, I was young, didnt make very much money, so it was hard to afford the<br />
latest and greatest tunes. I also remember back in this time frame a lawsuit from the metal giants<br />
Metallica (others words not mine ;)). At the time I remember thinking, like many others, that<br />
Metallica didnt need the money, but then a comment from Lars Ulrich the bands drummer struck a<br />
cord with me (pun intended). Ill will paraphrase here, but it was something along the lines of<br />
“Were not pursuing this for us, but for all of those (musicians) that come after us”. After this<br />
and reflection, I decided that I would not pirate music anymore.</p>
<p>Fast forward, now the majority do not purchases music / albums, we typically utilize streaming<br />
services (myself included), sure it may be more fair to the artists than pirating was, it can be<br />
argued that its easier today for independent artists to become known / discovered, Im also in no<br />
way saying the old school music industry wasnt a giant pile of dog poo, but I am saying that who is<br />
really winning(?), its the Spotifys and Apple Musics of the world, thats who.</p>
<p>Im also reminded of the great “MeasureQuick is now charging for services” that happened in the HVAC<br />
industry. I have personally never complained and have always supported this decision, because it is<br />
not sustainable to run a software company and not charge for services, generally. Sure, you may not<br />
like their pricing model, etc. Where I think they went wrong was not charging from the beginning, as<br />
it sets the wrong expectation that is presumably hard to recover from. There are those who took some<br />
of Jims words / opinions in a way different from how I do / did, which is fine, were all entitled<br />
to our opinions. What is often forgotten is that were all also entitled to change those opinions.<br />
Heck, I will probably be shouting a different story tomorrow, so be it!</p>
<h2>Conclusion</h2>
<p>What I would like to encourage people to do is to support software development. If an application is<br />
free, but has a donate button consider giving a donation. If an application is free and they dont<br />
want to charge thats fine too, however I would say to be suspicous, meaning is it free because<br />
<strong><em>you</em></strong> are the product?!?</p>
<p>I would also encourage you to be active in communities and organizations that foster community (HVAC<br />
School is a great example). Show appreciation and encouragement, but at the same time dont be<br />
afraid to be critical or speak up.</p>
<p>At the end of the day, I hope to lift up my brothers and sisters, help to fight against the<br />
corporations who abuse the little guys and hopefully feel good about my decisions.</p>
<p>Over the last few weeks, I have been going through my software and services and looking for those<br />
donation buttons and giving back a little bit for the software that makes my life better. Help<br />
change the narrative and remember that its about <strong><em>Freedom not Free</em></strong>.</p>
<h3>Links</h3>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Open-source_software">Open-source Software</a></li>
<li><a href="https://en.wikipedia.org/wiki/Free_Software_Foundation">Free Software Fondation</a></li>
<li><a href="https://www.eff.org/">Electronic Frontier Foundation</a></li>
</ul>
<h3>Software used in this blog.</h3>
<ul>
<li><a href="https://neovim.io/">Neovim</a></li>
<li><a href="https://gohugo.io/">Hugo</a></li>
<li><a href="https://themes.gohugo.io/themes/poison/">Hugo Theme</a></li>
</ul>
<blockquote>
<p><strong>Note:</strong> I do not use any trackers or analytics on this site to respect your privacy. So feel<br />
free to contact me directly to share feedback or let me know how Im doing.</p>
</blockquote>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span><a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p>
<a href="/articles/2024/pgp-encryption-introduction/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-04-pgp-encryption-introduction.gif"/>
In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,115 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in 2024
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span>1007 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2024/free-as-in-freedom/">Salute to open-source software engineers</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span>840 words, posted in <a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p class="mt-4">
<a href="/articles/2024/pgp-encryption-introduction/">In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/unvr-as-nas/">UNVR as NAS</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">March 15, 2024</span>634 words, posted in <a href="/articles/tag/how-to/">how-to</a>, <a href="/articles/tag/nas/">nas</a>, <a href="/articles/tag/networking/">networking</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2024/unvr-as-nas/">In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/elevating-hvac/">Elevating HVAC: A Skilled Trade Beyond Labor</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">February 27, 2024</span>535 words, posted in <a href="/articles/tag/hvac/">HVAC</a>
</div>
<p class="mt-4">
<a href="/articles/2024/elevating-hvac/">This is a guest post from my good friend, Ty Branaman.
Introduction:
Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor
job, overshadowing the intricate skill set and technical expertise required in...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,221 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: PGP Encryption Introduction
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2024-04-04-pgp-encryption-introduction.gif" name="twitter:image"/>
<meta content="PGP Encryption Introduction" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2024/pgp-encryption-introduction/" name="og:url"/>
<meta content="PGP Encryption Introduction" name="og:title"/>
<meta content="In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2024-04-04-pgp-encryption-introduction.gif" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
PGP Encryption Introduction
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span>840 words, posted in <a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-04-pgp-encryption-introduction.gif"/>
<p>In this article I introduce PGP and show a use case for me, which perhaps you can use as well.</p>
<h2>What is PGP</h2>
<p>PGP stands for <strong>Pretty Good Privacy</strong>, it was first developed in 1991 by Phil Zimmermann. PGP uses<br />
cryptographic privacy and authentication and is generally used in data communication.</p>
<p>According to <a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy">Wikipedia</a> its name was inspired<br />
by a grocery store named, “Ralphs Pretty Goody Grocery” featured in radio hosts Garrison Keillors<br />
fictional town of Lake Wobegon.</p>
<p>PGP is commonly used in software development to “sign” software commits or files to help ensure both<br />
who the commits were from as well as make sure they were not modified from the original versions.</p>
<p>It should also be noted that when people say PGP they are often referring to OpenPGP or GnuPGP which<br />
are implementations of the PGP standard protocol.</p>
<h2>What it does</h2>
<blockquote>
<p>Note: I am in no way a cyber-security expert, I am a layman and only describing things in terms<br />
that I understand / make sense to me. Do what I do at your own risk!</p>
</blockquote>
<p>PGP offers both symmetrical encryption (uses a session key and password) or asymmetrical encryption<br />
(uses a session key and a private key). Asymmetrical encryption is more secure but is more resource<br />
intensive (which is generally not a problem with computers of today).</p>
<p>Generally speaking PGP uses what are known as public and private key pairs. The public portion of<br />
the key par is meant to be shared with others freely, while the private portion needs to be secured<br />
/ not shared with anyone <strong>EVER</strong>. It is best practice to generate your keys on a computer that is<br />
“air gapped”, meaning it is not connected to any network / internet, and does not save a history of<br />
commands performed on it.</p>
<p>PGP encrypts data (files, messages, etc.) for one or more recipients, using the recipients public<br />
key. The recipients private key is required to decrypt the data once its been encrypted.</p>
<p>Your key pair is tied to your identity / person, generally by your name and email(s). The key can<br />
also have multiple “subkeys”, meaning that if you have more than one public email, alias, etc. it<br />
can be tied to your same private key. This is useful for example for work vs. activism vs. software<br />
development.</p>
<p>Once your key is generated and your private key secured, you can share your public portion of the<br />
key to a “keyserver” where other people can download it and verify messages were sent by you.</p>
<h2>Web of Trust</h2>
<p>PGP also uses what is called the <strong>“Web of Trust”</strong>, which is used to validate that messages are<br />
encrypted by a trusted source. There are different levels of trust depending on where a key is<br />
retrieved from. For example, if somebody gave you their public key in person and you were able to<br />
inspect that the identity matches their government id, then you can give it a higher trust level<br />
than one that is sent / retrieved from a keyserver.</p>
<p>My understanding of this portion is that over time your key is signed by others with their level of<br />
certainty about you / your key, which over time increases the overall trust in your key.</p>
<h2>Out of the weeds</h2>
<p>Now that weve got an understanding of some of the technical aspects, lets talk about some real use<br />
cases of PGP encryption.</p>
<p>PGP encryption is used by some email clients / applications, such as<br />
<a href="https://canarymail.io/">Canary</a>,<br />
<a href="https://www.thunderbird.net/en-US/thunderbird/115.0/holidayeoy/">Thunderbird</a>, or<br />
<a href="https://gpgtools.tenderapp.com/">GPGSuite</a>.</p>
<p>In my understanding, it is also what is used in devices such as a<br />
<a href="https://www.yubico.com/">YubiKey</a>.</p>
<p>Many of the mentioned applications allow for an easier interface / adoption, as one of the reasons<br />
it is not very popular is that it can be hard to use PGP for the average person.</p>
<p>Aside from using my PGP key for signing software commits, my major use case is for encrypting files<br />
that I store in a “cloud” provider. Know that when someone says the “cloud”, it is really just a<br />
computer (in reality a gang of computers in a data center). You are solely reliant that these cloud<br />
providers are not snooping on, inspecting, or even selling your data.</p>
<p>Of course, some data may not be that sensitive, so maybe you dont care. However with a little bit<br />
of effort on your part you can at least make it very hard for anyone to know what is inside your<br />
documents. You can be in control of the way your items are encrypted and have confidence that nobody<br />
but you can access what is inside your documents.</p>
<p>Heck, I even encrypt documents that are stored on my own network / computer so that if something<br />
gets stolen or someone breachs my network they will not be able to easily get to sensitive data.</p>
<h2>Conclusion</h2>
<p>This article is just meant as an overview of PGP encryption. In future articles I will show you how<br />
to use it to encrypt your data and be in control of your privacy.</p>
<h3>Resources</h3>
<ul>
<li><a href="https://gnupg.org/">GnuPG</a></li>
<li><a href="https://www.openpgp.org/">OpenPGP</a></li>
<li><a href="https://gpg.wtf/">gpg.wtf</a></li>
<li><a href="https://www.ietf.org/rfc/rfc4880.html">RFC4880</a></li>
</ul>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,223 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: UNVR as NAS
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for..." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2024-03-15-unvr-as-nas.png" name="twitter:image"/>
<meta content="UNVR as NAS" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2024/unvr-as-nas/" name="og:url"/>
<meta content="UNVR as NAS" name="og:title"/>
<meta content="In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for..." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2024-03-15-unvr-as-nas.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
UNVR as NAS
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">March 15, 2024</span>634 words, posted in <a href="/articles/tag/how-to/">how-to</a>, <a href="/articles/tag/nas/">nas</a>, <a href="/articles/tag/networking/">networking</a> and <a href="/articles/tag/programming/">programming</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-03-15-unvr-as-nas.png"/>
<p>In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be<br />
used as NAS (network attached storage). Be aware that this should be done with caution and may void<br />
any warranty on your UNVR as we are using it for purposes beyond its original intent. Its also<br />
possible that this setup will break when / if updating the UNVR software. With that said, lets jump<br />
in.</p>
<p>This post follows along with<br />
<a href="https://www.reddit.com/r/Ubiquiti/comments/11o7v8l/how_to_use_the_unvr_as_a_nas_instructions/">this reddit post</a>,<br />
with some adaptations to get it to work on the latest Unifi-OS release of <code>3.2.12</code>.</p>
<h2>Step One - Setup SSH &amp; Login</h2>
<p>In your unifi network console you need to enable the <code>SSH</code> login option and set a secure password<br />
for the root user to login to the UNVR.</p>
<p><img src="/articles/images/2024-03-15-ssh.png" alt="ssh.png" /></p>
<p>Once that is complete you can login to your UNVR using your terminal and the IP address of your UNVR<br />
on your network.</p>
<p><code>ssh root@192.168.1.10</code></p>
<h2>Step Two - Install Samba</h2>
<p>First, well update the package registry information.</p>
<p><code>apt-get update</code></p>
<p>Next, install samba.</p>
<p><code>apt-get install samba</code></p>
<h2>Step Three - Setup Samba</h2>
<p>In order to edit the configuration we are going to need to install your terminal based text editor<br />
of choice (generally nano or vim), for me I will install vim.</p>
<p><code>apt-get install vim</code></p>
<p>Create a backup of the default configuration.</p>
<p><code>cp /etc/samba/smb.conf /etc/samba/smb.conf.bak</code></p>
<p>Open the configuration file to be edited.</p>
<p><code>vim /etc/samba/smb.conf</code></p>
<p>Just above the <code>Share Definitions</code> section of the configuration, I added some global settings to<br />
make the samba server act better for time machine backups.</p>
<pre><code>#======================= MacOS Client Optimizations =======================
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:nfs_aces = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
</code></pre>
<p>Also because we want users we create to be able to read and write to their home directories created<br />
on the samba server, we need to change the option under the <code>[homes]</code> share definition to be<br />
<code>read only = no</code>.</p>
<p>That is our primary configuration. You can add more share definitions at the bottom of the file to<br />
suit your use case, there are decent examples of this in the original reddit post, linked in the<br />
beginning.</p>
<p>Save and exit the file.</p>
<p><code>:wq</code></p>
<h2>Step Four - Start Samba</h2>
<p>Use the following command to start the samba server.</p>
<p><code>sudo service smbd start</code></p>
<p>You can check the status, by running the following command.</p>
<p><code>systemctl status smbd</code></p>
<p><img src="/articles/images/2024-03-15-status.png" alt="status" /></p>
<p>Enable the samba server to start on boot.</p>
<p><code>systemctl enable smbd.service</code></p>
<h2>Step Five - Create Users</h2>
<p>Create a user with a home directory that they can use.</p>
<p><code>useradd --create-home michael</code></p>
<p>Give the user a password to login to the samba server.</p>
<p><code>smbpasswd michael</code></p>
<h2>Step Six - Login to Samba Server from Client</h2>
<p>In the <code>Finder</code> app on macOS you can type <code>⌘k</code> to connect to a server.</p>
<p>In the text field enter <code>smb://&lt;USER&gt;@&lt;UNVR_IP&gt;</code> to connect to the samba server.</p>
<p><img src="/articles/images/2024-03-15-connect.png" alt="connect" /></p>
<p>You can also automatically connect to the server when you login to your client device, for this to<br />
work you need the credentials to be stored in your keychain (ticking the box in the step above when<br />
you first connect to the server).</p>
<p>This is found in <code>System Settings -&gt; General -&gt; Login Items -&gt; Open at Login</code>. Click the plus button<br />
and select the volume you would like to mount at login.</p>
<p><img src="/articles/images/2024-03-15-login.png" alt="login" /></p>
<p>Once you have it setup so that the server is connected on login, you can also set it up as location<br />
for Time Machine Backups. <code>System Settings -&gt; General -&gt; Time Machine</code></p>
<p><img src="/articles/images/2024-03-15-time-machine.png" alt="time-machine" /></p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in 2025
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span>2155 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2025/vapor-htmx-todo-app/">Build an example application using Vapor and HTMX.</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,560 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Vapor + HTMX
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/static/prism.css" rel="stylesheet"/>
<meta content="Build an example application using Vapor and HTMX." name="description"/>
<meta content="summary_large_image" name="twitter:card"/>
<meta content="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png" name="twitter:image"/>
<meta content="Vapor + HTMX" name="twitter:image:alt"/>
<meta content="http://localhost:3000/articles/images//articles/2025/vapor-htmx-todo-app/" name="og:url"/>
<meta content="Vapor + HTMX" name="og:title"/>
<meta content="Build an example application using Vapor and HTMX." name="og:description"/>
<meta content="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png" name="og:image"/>
<meta content="1014" name="og:image:width"/>
<meta content="530" name="og:image:height"/>
<script crossorigin="anonymous" src="https://kit.fontawesome.com/f209982030.js">
</script>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<article class="prose">
<h1>
Vapor + HTMX
</h1>
<div class="-mt-6">
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span>2155 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
</div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
<h2>Introduction</h2>
<p>This post is a quick example of creating a very basic todo web application using <code>Vapor</code> a swift web<br />
framework and <code>Htmx</code>, with no custom javascript required.</p>
<p><a href="https://docs.vapor.codes">Vapor</a></p>
<p><a href="https://htmx.org">Htmx</a></p>
<h2>Getting Started</h2>
<p>To get started you must install the vapor command-line tool that will generate our project.</p>
<pre><code class="language-bash">brew install vapor
</code></pre>
<p>Next, generate the project using the vapor command-line tool.</p>
<p><img src="/articles/images/2025-01-05-vapor.gif" alt="" /></p>
<pre><code class="language-bash">vapor new todo-htmx --fluent.db sqlite --leaf
</code></pre>
<p>The above command will generate a new project that uses an <code>SQLite</code> database along with vapors<br />
<code>Leaf</code> templating engine. You can move into the project directory and browse around the files that<br />
are generated.</p>
<pre><code class="language-bash">cd todo-htmx
</code></pre>
<h2>Update the Controller</h2>
<p>Open the <code>Sources/App/Controllers/TodoController.swift</code> file. This file handles the api routes for<br />
our <code>Todo</code> database model. Personally I like to prefix these routes with <code>api</code>.</p>
<p>Update the first line in the <code>boot(routes: RoutesBuilder)</code> function to look like this.</p>
<pre><code class="language-swift">let todos = routes.grouped(&quot;api&quot;, &quot;todos&quot;)
</code></pre>
<p>Everything else can stay the same. This changes these routes to be exposed at<br />
<code>http://localhost:8080/api/todos</code>, which will allow our routes that return html views to be able to<br />
be exposed at <code>http://localhost:8080/todos</code>.</p>
<h2>Update the Todo Model</h2>
<p>A todo is not very valuable without a way to tell if it needs to be completed or not. So, lets add<br />
a field to our database model (<code>Sources/App/Models/Todo.swift</code>).</p>
<p>Update the file to include the following:</p>
<pre><code class="language-swift">import Fluent
import struct Foundation.UUID
/// Property wrappers interact poorly with `Sendable` checking, causing a warning for the `@ID` property
/// It is recommended you write your model with sendability checking on and then suppress the warning
/// afterwards with `@unchecked Sendable`.
final class Todo: Model, @unchecked Sendable {
static let schema = &quot;todos&quot;
@ID(key: .id)
var id: UUID?
@Field(key: &quot;title&quot;)
var title: String
@Field(key: &quot;complete&quot;)
var complete: Bool
init() {}
init(id: UUID? = nil, title: String, complete: Bool) {
self.id = id
self.title = title
self.complete = complete
}
func toDTO() -&gt; TodoDTO {
.init(
id: id,
title: $title.value,
complete: $complete.value
)
}
}
</code></pre>
<p>Since we added a field to our database model, we also need to update the migration file<br />
(<code>Sources/App/Migrations/CreateTodo.swift</code>).</p>
<pre><code class="language-swift">import Fluent
struct CreateTodo: AsyncMigration {
func prepare(on database: Database) async throws {
try await database.schema(&quot;todos&quot;)
.id()
.field(&quot;title&quot;, .string, .required)
.field(&quot;complete&quot;, .bool, .required)
.create()
}
func revert(on database: Database) async throws {
try await database.schema(&quot;todos&quot;).delete()
}
}
</code></pre>
<p>This just adds our new field to the database schema when we run the migrations, which we will do<br />
later on in the tutorial.</p>
<h3>Update the Data Transfer Object</h3>
<p>We also need to add the <code>complete</code> field to our data transfer object (<code>DTO</code>). This model is used as<br />
an intermediate between our database and the user.</p>
<pre><code class="language-swift">import Fluent
import Vapor
struct TodoDTO: Content {
var id: UUID?
var title: String?
var complete: Bool?
func toModel() -&gt; Todo {
let model = Todo()
model.id = id
model.complete = complete ?? false
if let title = title {
model.title = title
}
return model
}
}
</code></pre>
<h2>Generate the View Templates</h2>
<p>Our index template was already generated at <code>Resources/Views/index.leaf</code>, open the file and edit the<br />
contents to match the following.</p>
<blockquote>
<p>Note: You can learn more about the<br />
<a href="https://docs.vapor.codes/leaf/getting-started/">leaf templating engine here.</a></p>
</blockquote>
<pre><code class="language-html">&lt;!doctype html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;utf-8&quot; /&gt;
&lt;title&gt;#(title)&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;css/main.css&quot; /&gt;
&lt;script src=&quot;https://unpkg.com/htmx.org@2.0.4&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;h1&gt;#(title)&lt;/h1&gt;
&lt;div class=&quot;container&quot;&gt;
&lt;form hx-post=&quot;/todos&quot; hx-target=&quot;#todos&quot;&gt;
&lt;label for=&quot;title&quot;&gt;Todo&lt;/label&gt;
&lt;input type=&quot;text&quot; name=&quot;title&quot; placeholder=&quot;Title&quot; /&gt;
&lt;button type=&quot;submit&quot;&gt;Submit&lt;/button&gt;
&lt;/form&gt;
&lt;!-- Todos List --&gt;
&lt;table id=&quot;todos&quot; class=&quot;todos&quot; hx-get=&quot;/todos&quot; hx-trigger=&quot;load&quot;&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>The important parts here are the <code>&lt;script&gt;</code> tag in the head element which will include <code>Htmx</code> in our<br />
project.</p>
<p>The head element also contains a link to a custom <code>css</code> stylesheet that we will create shortly.</p>
<p>We add a <code>form</code> element that will be used to generate a new todo item in the database. This is a<br />
basic / standard html form, but we are using <code>Htmx</code> to post the form contents to the route<br />
<code>POST http://localhost:8080/todos</code>, which we will create shortly.</p>
<p>Then theres the <code>table</code> element that will contain the contents of our todos. When the page is<br />
loaded it will use <code>Htmx</code> to fetch the todos from <code>GET http://localhost:8080/todos</code> route, which we<br />
will create shortly.</p>
<h3>Todos Table Template</h3>
<p>Create a new view template that will return our populated table of todos.</p>
<pre><code class="language-bash">touch Resources/Views/todos.leaf
</code></pre>
<p>The contents of this file should be the following:</p>
<pre><code class="language-html">&lt;!-- Template for a list of todo's --&gt;
&lt;table id=&quot;todos&quot;
class=&quot;todos&quot;&gt;
&lt;!-- The table header --&gt;
&lt;tr&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Completed&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
#for(todo in todos):
&lt;tr&gt;
&lt;!-- Make the title column take up 90% of the width --&gt;
&lt;td style=&quot;width: 90%;&quot;&gt;#(todo.title)&lt;/td&gt;
&lt;td&gt;
&lt;input type=&quot;checkbox&quot;
id=&quot;todo_#(todo.id)&quot;
hx-put=&quot;/todos/#(todo.id)&quot;
hx-trigger=&quot;click&quot;
hx-target=&quot;#todos&quot;
#if(todo.complete): checked #endif&gt;
&lt;/input&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;button hx-delete=&quot;/todos/#(todo.id)&quot;
hx-trigger=&quot;click&quot;
hx-target=&quot;#todos&quot;
class=&quot;btn-delete-todo&quot;&gt;
X
&lt;/button&gt;
&lt;/td&gt;
&lt;/tr&gt;
#endfor
&lt;/table&gt;
</code></pre>
<p>Here, we just create a table that is 3 columns wide from a list of todos that we will pass in to the<br />
template. We use <code>Htmx</code> to handle updating a todo if a user clicks a checkbox to mark the todo as<br />
<code>complete</code>, we also add a button in the last column of the table that we use <code>Htmx</code> to handle<br />
deleting a todo from the database.</p>
<h2>Controllers</h2>
<p>The controllers handle the routes that our website exposes. The project template creates a<br />
controller for us that handles <code>JSON</code> / <code>API</code> requests, but we do need to make a couple of changes<br />
to the file (<code>Sources/App/Controllers/TodoController.swift</code>).</p>
<pre><code class="language-swift">import Fluent
import Vapor
struct TodoController: RouteCollection {
func boot(routes: RoutesBuilder) throws {
let todos = routes.grouped(&quot;api&quot;, &quot;todos&quot;)
todos.get(use: index)
todos.post(use: create)
todos.group(&quot;:todoID&quot;) { todo in
todo.delete(use: self.delete)
todo.put(use: self.update)
}
}
@Sendable
func index(req: Request) async throws -&gt; [TodoDTO] {
try await Todo.query(on: req.db).all().map { $0.toDTO() }
}
@Sendable
func create(req: Request) async throws -&gt; TodoDTO {
let todo = try req.content.decode(TodoDTO.self).toModel()
try await todo.save(on: req.db)
return todo.toDTO()
}
@Sendable
func delete(req: Request) async throws -&gt; HTTPStatus {
guard let todo = try await Todo.find(req.parameters.get(&quot;todoID&quot;), on: req.db) else {
throw Abort(.notFound)
}
try await todo.delete(on: req.db)
return .noContent
}
@Sendable
func update(req: Request) async throws -&gt; TodoDTO {
// let todo = try req.content.decode(TodoDTO.self).toModel()
guard let todo = try await Todo.find(req.parameters.get(&quot;todoID&quot;), on: req.db) else {
throw Abort(.notFound)
}
todo.complete.toggle()
try await todo.save(on: req.db)
return todo.toDTO()
}
}
</code></pre>
<p>The primary changes here are to add the <code>update(req: Request)</code> function at the bottom, which handles<br />
updating a todo that has already been created. This will be used when a user clicks on the checkbox<br />
to mark a todo as complete or incomplete.</p>
<p>We also change the route in the <code>boot(routes: RoutesBuilder)</code> method to make all these routes<br />
accessible at <code>/api/todos</code> instead of the original <code>/todos</code> as we will use the <code>/todos</code> routes for<br />
returning our views from our view controller.</p>
<h3>Todo View Controller</h3>
<p>Next we need to create our view controller, it is what will be used to handle routes that should<br />
return <code>html</code> content for our website. This controller will actually use the api controller to do<br />
the majority of its work.</p>
<p>The easiest thing is to make a copy of the current api controller:</p>
<pre><code class="language-bash">cp Sources/App/Controllers/TodoController.swift Sources/App/Controllers/TodoViewController.swift
</code></pre>
<p>Then update the file to the following:</p>
<pre><code class="language-swift">import Fluent
import Vapor
struct TodoViewController: RouteCollection {
private let api = TodoController()
func boot(routes: RoutesBuilder) throws {
let todos = routes.grouped(&quot;todos&quot;)
todos.get(use: index)
todos.post(use: create)
todos.group(&quot;:todoID&quot;) { todo in
todo.delete(use: self.delete)
todo.put(use: self.update)
}
}
@Sendable
func index(req: Request) async throws -&gt; View {
let todos = try await api.index(req: req)
return try await req.view.render(&quot;todos&quot;, [&quot;todos&quot;: todos])
}
@Sendable
func create(req: Request) async throws -&gt; View {
_ = try await api.create(req: req)
return try await index(req: req)
}
@Sendable
func delete(req: Request) async throws -&gt; View {
_ = try await api.delete(req: req)
return try await index(req: req)
}
@Sendable
func update(req: Request) async throws -&gt; View {
_ = try await api.update(req: req)
return try await index(req: req)
}
}
</code></pre>
<p>Here we use the api controller to do the heavy lifting of communicating with the database, then we<br />
just always return / render the <code>todos.leaf</code> template that we created earlier, which will update our<br />
web page with the list of todos retreived from the database.</p>
<blockquote>
<p>Note: There are better ways to handle this, however this is just a simple example.</p>
</blockquote>
<h3>Update our routes</h3>
<p>Next, we need to tell vapor to use our new view controller (<code>Sources/App/routes.swift</code>)</p>
<pre><code class="language-swift">import Fluent
import Vapor
func routes(_ app: Application) throws {
app.get { req async throws in
try await req.view.render(&quot;index&quot;, [&quot;title&quot;: &quot;Todos&quot;])
}
app.get(&quot;hello&quot;) { _ async -&gt; String in
&quot;Hello, world!&quot;
}
try app.register(collection: TodoController())
try app.register(collection: TodoViewController())
}
</code></pre>
<p>Here, we just add the <code>TodoViewController</code> at the bottom so vapor will be able to handle those<br />
routes and also update the title to be <code>Todos</code> (in the first <code>app.get</code> near the top).</p>
<h2>Build and Run</h2>
<p>At this point we should be able to build and run the application.</p>
<p>First, lets make sure the project builds.</p>
<pre><code class="language-bash">swift build
</code></pre>
<p>This may take a minute if its the first time building the project as it has to fetch the<br />
dependencies. If you experience problems here then make sure you dont have typos in your files.</p>
<p>Next, we need to run the database migrations.</p>
<pre><code class="language-bash">swift run App migrate
</code></pre>
<p>Finally, we can run the application.</p>
<pre><code class="language-bash">swift run App
</code></pre>
<p>You should be able to open your browser and type in the url: <code>http://localhost:8080</code> to view the<br />
application. You can experiment with adding a new todo using the form.</p>
<blockquote>
<p>Note: To stop the application use <code>Ctrl-c</code></p>
</blockquote>
<h2>Bonus Styles</h2>
<p>Hopefully you werent blinded the first time you opened the application. You can add custom styles<br />
by creating a <code>css</code> file (<code>Public/css/main.css</code>).</p>
<pre><code class="language-bash">mkdir Public/css
touch Public/css/main.css
</code></pre>
<p>Update the file to the following:</p>
<pre><code class="language-css">body {
background-color: #1e1e2e;
color: #ff66ff;
}
table {
width: 100%;
}
th,
td {
border-bottom: 1px solid grey;
border-collapse: collapse;
}
td {
color: white;
}
.todos {
transition: all ease-in 1s;
}
.btn-delete-todo {
color: red;
margin-left: 20px;
}
</code></pre>
<p>Currently vapor does not know to serve files from the <code>Public</code> directory, so we need to update the<br />
<code>Sources/App/configure.swift</code> file, by uncommenting the line near the top.</p>
<pre><code class="language-swift">import Fluent
import FluentSQLiteDriver
import Leaf
import NIOSSL
import Vapor
// configures your application
public func configure(_ app: Application) async throws {
// uncomment to serve files from /Public folder
app.middleware.use(FileMiddleware(publicDirectory: app.directory.publicDirectory))
app.databases.use(DatabaseConfigurationFactory.sqlite(.file(&quot;db.sqlite&quot;)), as: .sqlite)
app.migrations.add(CreateTodo())
app.views.use(.leaf)
// register routes
try routes(app)
}
</code></pre>
<p>Now you can stop and restart to see the styled website.</p>
<pre><code class="language-bash">swift run App
</code></pre>
<h2>Conclusion</h2>
<p>I hope you enjoyed this quick example of using <code>Htmx</code> with <code>Vapor</code>. You can view the source files at<br />
<a href="https://github.com/m-housh/todo-htmx">here</a>.</p>
</article>
<div class="border-t border-light mt-8 pt-8">
<h2 class="text-4xl font-extrabold mb-8">
Written by
</h2>
<div class="flex flex-col lg:flex-row gap-8">
<div class="flex-[0_0_120px]">
<img class="w-[120px] h-[120px] rounded-full" src="/static/images/avatar.png"/>
</div>
<div class="prose">
<h3 class="!m-0">
Michael Housh
</h3>
<p class="text-gray">
HVAC business owner with over 27 years of experience. Writes articles about HVAC,
Programming, Home-Performance, and Building Science
</p>
</div>
</div>
</div>
<div class="mt-16">
<h2 class="text-4xl font-extrabold mb-8">
More articles
</h2>
<div class="grid lg:grid-cols-2 gap-10">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span><a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p>
<a href="/articles/2024/pgp-encryption-introduction/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-04-pgp-encryption-introduction.gif"/>
In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...
</div></a>
</p>
</section>
</div>
<p class="prose mt-8">
<a href="/articles/"> See all articles</a>
</p>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

694
deploy/articles/feed.xml Normal file
View File

@@ -0,0 +1,694 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2025/vapor-htmx-todo-app/</id>
<title>Vapor + HTMX</title>
<updated>2025-02-19T21:47:31Z</updated>
<summary>Build an example application using Vapor and HTMX.</summary>
<link rel="alternate" href="http://localhost:3000/articles/2025/vapor-htmx-todo-app/"></link>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/free-as-in-freedom/</id>
<title>Free As In Freedom</title>
<updated>2025-02-19T21:39:28Z</updated>
<summary>Salute to open-source software engineers</summary>
<link rel="alternate" href="http://localhost:3000/articles/2024/free-as-in-freedom/"></link>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/pgp-encryption-introduction/</id>
<title>PGP Encryption Introduction</title>
<updated>2025-02-19T21:36:11Z</updated>
<content type="html">&lt;p&gt;In this article I introduce PGP and show a use case for me, which perhaps you can use as well.&lt;/p&gt;
&lt;h2&gt;What is PGP&lt;/h2&gt;
&lt;p&gt;PGP stands for &lt;strong&gt;Pretty Good Privacy&lt;/strong&gt;, it was first developed in 1991 by Phil Zimmermann. PGP uses&lt;br /&gt;
cryptographic privacy and authentication and is generally used in data communication.&lt;/p&gt;
&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy"&gt;Wikipedia&lt;/a&gt; its name was inspired&lt;br /&gt;
by a grocery store named, “Ralphs Pretty Goody Grocery” featured in radio hosts Garrison Keillors&lt;br /&gt;
fictional town of Lake Wobegon.&lt;/p&gt;
&lt;p&gt;PGP is commonly used in software development to “sign” software commits or files to help ensure both&lt;br /&gt;
who the commits were from as well as make sure they were not modified from the original versions.&lt;/p&gt;
&lt;p&gt;It should also be noted that when people say PGP they are often referring to OpenPGP or GnuPGP which&lt;br /&gt;
are implementations of the PGP standard protocol.&lt;/p&gt;
&lt;h2&gt;What it does&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: I am in no way a cyber-security expert, I am a layman and only describing things in terms&lt;br /&gt;
that I understand / make sense to me. Do what I do at your own risk!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PGP offers both symmetrical encryption (uses a session key and password) or asymmetrical encryption&lt;br /&gt;
(uses a session key and a private key). Asymmetrical encryption is more secure but is more resource&lt;br /&gt;
intensive (which is generally not a problem with computers of today).&lt;/p&gt;
&lt;p&gt;Generally speaking PGP uses what are known as public and private key pairs. The public portion of&lt;br /&gt;
the key par is meant to be shared with others freely, while the private portion needs to be secured&lt;br /&gt;
/ not shared with anyone &lt;strong&gt;EVER&lt;/strong&gt;. It is best practice to generate your keys on a computer that is&lt;br /&gt;
“air gapped”, meaning it is not connected to any network / internet, and does not save a history of&lt;br /&gt;
commands performed on it.&lt;/p&gt;
&lt;p&gt;PGP encrypts data (files, messages, etc.) for one or more recipients, using the recipients public&lt;br /&gt;
key. The recipients private key is required to decrypt the data once its been encrypted.&lt;/p&gt;
&lt;p&gt;Your key pair is tied to your identity / person, generally by your name and email(s). The key can&lt;br /&gt;
also have multiple “subkeys”, meaning that if you have more than one public email, alias, etc. it&lt;br /&gt;
can be tied to your same private key. This is useful for example for work vs. activism vs. software&lt;br /&gt;
development.&lt;/p&gt;
&lt;p&gt;Once your key is generated and your private key secured, you can share your public portion of the&lt;br /&gt;
key to a “keyserver” where other people can download it and verify messages were sent by you.&lt;/p&gt;
&lt;h2&gt;Web of Trust&lt;/h2&gt;
&lt;p&gt;PGP also uses what is called the &lt;strong&gt;“Web of Trust”&lt;/strong&gt;, which is used to validate that messages are&lt;br /&gt;
encrypted by a trusted source. There are different levels of trust depending on where a key is&lt;br /&gt;
retrieved from. For example, if somebody gave you their public key in person and you were able to&lt;br /&gt;
inspect that the identity matches their government id, then you can give it a higher trust level&lt;br /&gt;
than one that is sent / retrieved from a keyserver.&lt;/p&gt;
&lt;p&gt;My understanding of this portion is that over time your key is signed by others with their level of&lt;br /&gt;
certainty about you / your key, which over time increases the overall trust in your key.&lt;/p&gt;
&lt;h2&gt;Out of the weeds&lt;/h2&gt;
&lt;p&gt;Now that weve got an understanding of some of the technical aspects, lets talk about some real use&lt;br /&gt;
cases of PGP encryption.&lt;/p&gt;
&lt;p&gt;PGP encryption is used by some email clients / applications, such as&lt;br /&gt;
&lt;a href="https://canarymail.io/"&gt;Canary&lt;/a&gt;,&lt;br /&gt;
&lt;a href="https://www.thunderbird.net/en-US/thunderbird/115.0/holidayeoy/"&gt;Thunderbird&lt;/a&gt;, or&lt;br /&gt;
&lt;a href="https://gpgtools.tenderapp.com/"&gt;GPGSuite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In my understanding, it is also what is used in devices such as a&lt;br /&gt;
&lt;a href="https://www.yubico.com/"&gt;YubiKey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Many of the mentioned applications allow for an easier interface / adoption, as one of the reasons&lt;br /&gt;
it is not very popular is that it can be hard to use PGP for the average person.&lt;/p&gt;
&lt;p&gt;Aside from using my PGP key for signing software commits, my major use case is for encrypting files&lt;br /&gt;
that I store in a “cloud” provider. Know that when someone says the “cloud”, it is really just a&lt;br /&gt;
computer (in reality a gang of computers in a data center). You are solely reliant that these cloud&lt;br /&gt;
providers are not snooping on, inspecting, or even selling your data.&lt;/p&gt;
&lt;p&gt;Of course, some data may not be that sensitive, so maybe you dont care. However with a little bit&lt;br /&gt;
of effort on your part you can at least make it very hard for anyone to know what is inside your&lt;br /&gt;
documents. You can be in control of the way your items are encrypted and have confidence that nobody&lt;br /&gt;
but you can access what is inside your documents.&lt;/p&gt;
&lt;p&gt;Heck, I even encrypt documents that are stored on my own network / computer so that if something&lt;br /&gt;
gets stolen or someone breachs my network they will not be able to easily get to sensitive data.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This article is just meant as an overview of PGP encryption. In future articles I will show you how&lt;br /&gt;
to use it to encrypt your data and be in control of your privacy.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gnupg.org/"&gt;GnuPG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.openpgp.org/"&gt;OpenPGP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gpg.wtf/"&gt;gpg.wtf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ietf.org/rfc/rfc4880.html"&gt;RFC4880&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/unvr-as-nas/</id>
<title>UNVR as NAS</title>
<updated>2025-02-19T21:32:01Z</updated>
<content type="html">&lt;p&gt;In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be&lt;br /&gt;
used as NAS (network attached storage). Be aware that this should be done with caution and may void&lt;br /&gt;
any warranty on your UNVR as we are using it for purposes beyond its original intent. Its also&lt;br /&gt;
possible that this setup will break when / if updating the UNVR software. With that said, lets jump&lt;br /&gt;
in.&lt;/p&gt;
&lt;p&gt;This post follows along with&lt;br /&gt;
&lt;a href="https://www.reddit.com/r/Ubiquiti/comments/11o7v8l/how_to_use_the_unvr_as_a_nas_instructions/"&gt;this reddit post&lt;/a&gt;,&lt;br /&gt;
with some adaptations to get it to work on the latest Unifi-OS release of &lt;code&gt;3.2.12&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Step One - Setup SSH &amp;amp; Login&lt;/h2&gt;
&lt;p&gt;In your unifi network console you need to enable the &lt;code&gt;SSH&lt;/code&gt; login option and set a secure password&lt;br /&gt;
for the root user to login to the UNVR.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-ssh.png" alt="ssh.png" /&gt;&lt;/p&gt;
&lt;p&gt;Once that is complete you can login to your UNVR using your terminal and the IP address of your UNVR&lt;br /&gt;
on your network.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh root@192.168.1.10&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Two - Install Samba&lt;/h2&gt;
&lt;p&gt;First, well update the package registry information.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, install samba.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install samba&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Three - Setup Samba&lt;/h2&gt;
&lt;p&gt;In order to edit the configuration we are going to need to install your terminal based text editor&lt;br /&gt;
of choice (generally nano or vim), for me I will install vim.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install vim&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create a backup of the default configuration.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cp /etc/samba/smb.conf /etc/samba/smb.conf.bak&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Open the configuration file to be edited.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim /etc/samba/smb.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Just above the &lt;code&gt;Share Definitions&lt;/code&gt; section of the configuration, I added some global settings to&lt;br /&gt;
make the samba server act better for time machine backups.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#======================= MacOS Client Optimizations =======================
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:nfs_aces = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also because we want users we create to be able to read and write to their home directories created&lt;br /&gt;
on the samba server, we need to change the option under the &lt;code&gt;[homes]&lt;/code&gt; share definition to be&lt;br /&gt;
&lt;code&gt;read only = no&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is our primary configuration. You can add more share definitions at the bottom of the file to&lt;br /&gt;
suit your use case, there are decent examples of this in the original reddit post, linked in the&lt;br /&gt;
beginning.&lt;/p&gt;
&lt;p&gt;Save and exit the file.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Four - Start Samba&lt;/h2&gt;
&lt;p&gt;Use the following command to start the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo service smbd start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can check the status, by running the following command.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl status smbd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-status.png" alt="status" /&gt;&lt;/p&gt;
&lt;p&gt;Enable the samba server to start on boot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl enable smbd.service&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Five - Create Users&lt;/h2&gt;
&lt;p&gt;Create a user with a home directory that they can use.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;useradd --create-home michael&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Give the user a password to login to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;smbpasswd michael&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Six - Login to Samba Server from Client&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Finder&lt;/code&gt; app on macOS you can type &lt;code&gt;⌘k&lt;/code&gt; to connect to a server.&lt;/p&gt;
&lt;p&gt;In the text field enter &lt;code&gt;smb://&amp;lt;USER&amp;gt;@&amp;lt;UNVR_IP&amp;gt;&lt;/code&gt; to connect to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-connect.png" alt="connect" /&gt;&lt;/p&gt;
&lt;p&gt;You can also automatically connect to the server when you login to your client device, for this to&lt;br /&gt;
work you need the credentials to be stored in your keychain (ticking the box in the step above when&lt;br /&gt;
you first connect to the server).&lt;/p&gt;
&lt;p&gt;This is found in &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Login Items -&amp;gt; Open at Login&lt;/code&gt;. Click the plus button&lt;br /&gt;
and select the volume you would like to mount at login.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-login.png" alt="login" /&gt;&lt;/p&gt;
&lt;p&gt;Once you have it setup so that the server is connected on login, you can also set it up as location&lt;br /&gt;
for Time Machine Backups. &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Time Machine&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-time-machine.png" alt="time-machine" /&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/elevating-hvac/</id>
<title>Elevating HVAC: A Skilled Trade Beyond Labor</title>
<updated>2025-02-19T21:25:29Z</updated>
<content type="html">&lt;p&gt;This is a guest post from my good friend, &lt;strong&gt;Ty Branaman&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Introduction:&lt;/h2&gt;
&lt;p&gt;Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor&lt;br /&gt;
job, overshadowing the intricate skill set and technical expertise required in this field. Labor&lt;br /&gt;
jobs are also very important positions needed to keep society running. HVAC, like other skilled&lt;br /&gt;
trades, demands a high level of knowledge, precision, and adaptability. This article aims to shed&lt;br /&gt;
light on the misconception surrounding HVAC, emphasizing its status as a skilled trade that plays a&lt;br /&gt;
pivotal role in creating comfortable and efficient living and working environments.&lt;/p&gt;
&lt;h2&gt;Technical Proficiency:&lt;/h2&gt;
&lt;p&gt;One of the defining features that distinguish HVAC as a skilled trade is the level of technical&lt;br /&gt;
proficiency required. HVAC professionals must have a deep understanding of thermodynamics, fluid&lt;br /&gt;
mechanics, electrical circuits, Psychrometrics and air properties. This knowledge is essential for&lt;br /&gt;
designing, installing, and maintaining HVAC systems that operate seamlessly and efficiently.&lt;/p&gt;
&lt;h2&gt;System Design and Installation:&lt;/h2&gt;
&lt;p&gt;HVAC professionals are involved in the intricate process of designing and installing heating,&lt;br /&gt;
ventilation, and air conditioning systems. This task requires not only a thorough understanding of&lt;br /&gt;
the physical principles governing HVAC but also the ability to tailor solutions to meet the unique&lt;br /&gt;
needs of each space. Proper system design and installation are crucial for achieving optimal energy&lt;br /&gt;
efficiency and performance.&lt;/p&gt;
&lt;h2&gt;Diagnostic Skills:&lt;/h2&gt;
&lt;p&gt;Troubleshooting and diagnosing issues in HVAC systems require a keen analytical mind and&lt;br /&gt;
problem-solving skills. Skilled HVAC technicians possess the ability to identify and rectify&lt;br /&gt;
problems efficiently, ensuring minimal downtime and disruption to the comfort of occupants. This&lt;br /&gt;
diagnostic acumen is a hallmark of a trade that goes beyond routine labor.&lt;/p&gt;
&lt;h2&gt;Adaptability to Advanced Technologies:&lt;/h2&gt;
&lt;p&gt;The HVAC industry is in a constant state of evolution, with new technologies and innovations&lt;br /&gt;
continuously being introduced. Skilled HVAC professionals are adaptable and stay abreast of these&lt;br /&gt;
advancements. From smart thermostats to energy-efficient systems, they integrate cutting-edge&lt;br /&gt;
technologies to provide state-of-the-art solutions for their clients.&lt;/p&gt;
&lt;h2&gt;Safety and Compliance:&lt;/h2&gt;
&lt;p&gt;Safety is paramount in the HVAC trade. Professionals must adhere to strict safety protocols to&lt;br /&gt;
protect both themselves and the occupants of the spaces they work in. Additionally, compliance with&lt;br /&gt;
industry regulations and codes is a testament to the skilled nature of the trade, ensuring that HVAC&lt;br /&gt;
systems meet the highest standards of safety and efficiency.&lt;/p&gt;
&lt;h2&gt;Continual Learning and Certification:&lt;/h2&gt;
&lt;p&gt;Unlike a labor job, HVAC professionals engage in continual learning to stay current with industry&lt;br /&gt;
trends and technological advancements. Many pursue certifications and attend training programs to&lt;br /&gt;
enhance their skills and expand their knowledge base. This commitment to ongoing education is a&lt;br /&gt;
hallmark of skilled trades.&lt;/p&gt;
&lt;h2&gt;Conclusion:&lt;/h2&gt;
&lt;p&gt;Heating, Ventilation, and Air Conditioning is undeniably a skilled trade that goes beyond the&lt;br /&gt;
perception of a labor job. Labor jobs are also very important to the function of society and I have&lt;br /&gt;
proudly done these jobs myself. The technical proficiency, problem-solving abilities, adaptability,&lt;br /&gt;
and commitment to safety make HVAC professionals essential contributors to the creation of&lt;br /&gt;
comfortable and efficient indoor environments. It is crucial to recognize and appreciate the skill&lt;br /&gt;
set inherent in the HVAC trade, as it plays a vital role in shaping the quality of life for&lt;br /&gt;
individuals and the functionality of diverse spaces.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ty Branaman&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/most-important-job/</id>
<title>Most Important Job</title>
<updated>2025-02-19T21:21:54Z</updated>
<content type="html">&lt;p&gt;This short tech tip is about something one of my good friends in the trade told me a long time ago,&lt;br /&gt;
that has stuck with me through the years. It is a simple phrase / mindset.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The current job youre on, is the most important job of your day”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This mindset should be carried from the dispatcher, manager, and technician to make this successful.&lt;br /&gt;
Im not gonna lie and say this is always easy, or even always possible, but if you strive to use&lt;br /&gt;
this mindset then you will gain lifelong customers and satisfaction of not having loose ends hanging&lt;br /&gt;
out there.&lt;/p&gt;
&lt;p&gt;I do think its also important to acknowledge that there are times that a technician has exhausted&lt;br /&gt;
all their options, maybe they just dont have the mental capacity anymore to continue with a problem&lt;br /&gt;
job, or need a break to come back another day with a fresh set of eyes, etc… This is also an&lt;br /&gt;
important thing for a technician to realize, and hopefully those type of instances are much more few&lt;br /&gt;
and far between, but I do want to acknowledge that scenario does also exist.&lt;/p&gt;
&lt;p&gt;If you are a business owner, then this is something to consider instilling in your operations.&lt;br /&gt;
Empower your technicians and dispatchers to understand when things need to be shuffled around in&lt;br /&gt;
order to accommodate taking care of the customer at hand. It costs a lot of money to get a&lt;br /&gt;
technician to job, so minimizing truck rolls to the same job is important from a business&lt;br /&gt;
standpoint.&lt;/p&gt;
&lt;p&gt;This was just a quick tech tip of something that has been rolling around in my mind lately. I hope&lt;br /&gt;
you find it helpful and it sticks with you through your career as it has mine.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/cancel-this/</id>
<title>Cancel This</title>
<updated>2025-02-19T21:17:16Z</updated>
<content type="html">&lt;p&gt;This post is going to be hard to put into words, its going to seem egotistical at points, but know&lt;br /&gt;
that my actions / feelings online are the same as they are if you met me in person. The problem with&lt;br /&gt;
online interactions is tone and other subtleties do not come across, so its hard to tell when&lt;br /&gt;
someone is joking or being serious.&lt;/p&gt;
&lt;h2&gt;The Meat&lt;/h2&gt;
&lt;p&gt;It has been brought to my attention that someone out there thinks that Im sexist and should not&lt;br /&gt;
speak at the HVAC School symposium because of it. They are holding a curse word against me that I&lt;br /&gt;
said two years ago, in the moment A) it was fitting and B) it was one of those times that my mouth&lt;br /&gt;
was working faster than my brain (raise your hand if thats ever happened to you).&lt;/p&gt;
&lt;p&gt;I am an open book, I am not afraid of showing failures and strengths. Ive never claimed to be&lt;br /&gt;
perfect (well, actually I have but its always a joke). Im not at all condoning what Ive said in&lt;br /&gt;
the past, nor will I repeat it out of context now, but I communicate with people like adults and I&lt;br /&gt;
look at people as piers. We do not always have to agree with one another, conflict helps us learn&lt;br /&gt;
where to grow, but we also can not expect people to change to fit our wants / needs, thats just not&lt;br /&gt;
how it works.&lt;/p&gt;
&lt;p&gt;I do not at all agree with the tactics used by whomever is behind this. I would happily discuss this&lt;br /&gt;
in private or out in the open. You can find all my contact / social information in the sidebar of&lt;br /&gt;
this website and Ive offered up my cell phone number in private groups that we are all probably a&lt;br /&gt;
part of.&lt;/p&gt;
&lt;h2&gt;The Potatoes&lt;/h2&gt;
&lt;p&gt;I am a father of 3 girls, I have a sister, talk crap about my mom and youll find out who I am! I&lt;br /&gt;
love women, I have no problem with women in the trades, I encourage women who are in the trades. I&lt;br /&gt;
try to help every person that I can, if I can. I have failed more times than you can imagine! I am&lt;br /&gt;
self taught in about everything I do, so I give of it freely. I have all kinds of work to do to grow&lt;br /&gt;
into the man that I should be, but at the same time, I am not afraid to be the man that I am today.&lt;br /&gt;
I will greet you by whatever pronoun you want to be referred as.&lt;/p&gt;
&lt;p&gt;I would love to say that I dont judge people, but I do, just as Im being judged! I am fine with&lt;br /&gt;
someone judging me and having opinions about me, I mean that is our right. I will not say that&lt;br /&gt;
person is wrong, because in their mind theyre right. What I will not do is stop being myself. I&lt;br /&gt;
know for a fact that Ive helped more people than this person has gotten “cancelled”. I will&lt;br /&gt;
continue to help people in the trades, homeowners, or people in need. I also will not remain quiet!&lt;br /&gt;
I will give my opinion like it or not. There are people in my corner that really know me and my&lt;br /&gt;
intentions.&lt;/p&gt;
&lt;h2&gt;Final Words&lt;/h2&gt;
&lt;p&gt;The trades are rough around the edges, just as am I. The trades are a slow turning ship (just look&lt;br /&gt;
at how many still do not follow proper practices, etc. even with the capabilities and resources&lt;br /&gt;
available today).&lt;/p&gt;
&lt;p&gt;If you are new / coming into the trades then I hope you are not overly sensitive to foul language&lt;br /&gt;
and other inappropriate comments. Thick skin is valuable in the trades, but at the same time dont&lt;br /&gt;
be afraid to speak up if something offends you. Remember we are adults, we can handle disagreements&lt;br /&gt;
like adults (well, some of us can). Adults can learn from those of any age, they can reflect on&lt;br /&gt;
their own behavior and make their own decisions.&lt;/p&gt;
&lt;p&gt;I personally think that being offended is not a bad thing, it causes us to reflect / repair our&lt;br /&gt;
foundational beliefs. I hope that we can stop with this “cancel culture” of today, stop hiding&lt;br /&gt;
behind a keyboard, and be a diverse community.&lt;/p&gt;
&lt;p&gt;To wrap things up, I just want to reiterate that I am not at all mad at whomever is behind this. To&lt;br /&gt;
everyone out there who has shown me love and support, I greatly appreciate it.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/hope/</id>
<title>Hope</title>
<updated>2025-02-19T21:13:20Z</updated>
<content type="html">&lt;p&gt;This is a piggy-back article off of&lt;br /&gt;
&lt;a href="https://mhoush.com/posts/20231018224631-the-struggle/"&gt;The Struggle&lt;/a&gt; article that I had recently.&lt;/p&gt;
&lt;p&gt;I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this&lt;br /&gt;
article Id like to take a minute to layout some of the things that give me hope, things that I&lt;br /&gt;
focus on to try and kick myself out of the rut I can get into sometimes.&lt;/p&gt;
&lt;p&gt;I believe its important to have &lt;strong&gt;hope&lt;/strong&gt;, to realize that feeling down is normal / part of being&lt;br /&gt;
human. Its just as important to have hope. For some it is a harder thing to focus on, it may be&lt;br /&gt;
easy for us to try and dwell in negative feelings, to some that may feel more comfortable. When&lt;br /&gt;
were feeling cynical, its easy to feed the negativity, although its rarely helpful.&lt;/p&gt;
&lt;h2&gt;Hope&lt;/h2&gt;
&lt;p&gt;One of the things that I try to focus on is that Im human, it brings me hope to realize that Im&lt;br /&gt;
not the only one who feels the way that I do. This was evident by the feedback on my previous&lt;br /&gt;
article.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My problems are very much “first world problems”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Make no mistake, Im selfish, but its the selfishness that makes me feel distant or disconnected.&lt;br /&gt;
The times that I feel connected are without a doubt the times that I let go of my ego and focus on&lt;br /&gt;
things outside of myself.&lt;/p&gt;
&lt;p&gt;Its the feeling I get from going to customers home and feeling truly appreciated. Theres no push&lt;br /&gt;
back on price, no one telling me how I should run my business, no “the part only costs $x on&lt;br /&gt;
amazon”, etc.&lt;/p&gt;
&lt;p&gt;The feeling of seeing your child smile. The safety you feel when getting a hug from your mother or&lt;br /&gt;
father. When youre looking up at the stars and realize how small you actually are.&lt;/p&gt;
&lt;p&gt;When youre out with friends and trick the DJ into playing a Mr. Bungle song and no one else&lt;br /&gt;
appreciates it, but you. The times when your guard is completely down and you laugh with abandon.&lt;/p&gt;
&lt;p&gt;The smell of your lovers hair when youre holding them close. The joy you receive from sitting with&lt;br /&gt;
your pets. The songs of nature, insects, birds, etc. The sounds of waves / water in the distance.&lt;/p&gt;
&lt;p&gt;The feeling when youve helped someone learn a new skill, when something finally clicks and makes&lt;br /&gt;
sense. When a complex topic is understood at a fundamental level. The breakthrough of a problem&lt;br /&gt;
youve pondered for days / months / years.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There are so many things to be grateful for. This does not mean that there will not be hard times,&lt;br /&gt;
there surely will be. This does not mean that you are wrong for having negative feelings, for&lt;br /&gt;
feeling depressed or anxious. There are many around you that likely feel similar (they may just not&lt;br /&gt;
be able to express it in the same way). You never truly know what the person next to you is dealing&lt;br /&gt;
with. Be compassionate (including showing yourself compassion).&lt;/p&gt;
&lt;p&gt;When you are feeling down, try to do something for someone else. Make your own list of things to be&lt;br /&gt;
thankful for. Maybe my non-exhaustive list above will give you some ideas. Write those items down&lt;br /&gt;
regularly so that you can look back on them when you feel out of balance.&lt;/p&gt;
&lt;p&gt;There is plenty of negative energy in this world, be true and genuine and you will receive rewards.&lt;br /&gt;
When you focus on blessings then the negativity will fade.&lt;/p&gt;
&lt;p&gt;What impact are you going to leave with what little time we have?&lt;/p&gt;
&lt;p&gt;I hope that you enjoyed this short article. Know that you are &lt;em&gt;NOT&lt;/em&gt; alone, you are important, and&lt;br /&gt;
that I appreciate &lt;em&gt;you!&lt;/em&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/heat-recovery-chiller/</id>
<title>Heat Recovery Chiller</title>
<updated>2025-02-19T21:08:37Z</updated>
<content type="html">&lt;p&gt;This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so&lt;br /&gt;
Im doing it now. I did discuss this on&lt;br /&gt;
&lt;a href="https://hvacrschool.com/podcasts/is-the-future-of-air-conditioning-self-contained-propane-chillers/"&gt;this episode of the HVAC School Podcast.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Heat Recovery Chillers&lt;/h2&gt;
&lt;p&gt;I have always had a love and passion for hydronic systems, perhaps its because they are not that&lt;br /&gt;
common in most areas. The designs tend to be elegant and the flexibility is unparalleled by most&lt;br /&gt;
equipment choices currently available in the U.S. Im going to try to not get too far into the weeds&lt;br /&gt;
in this article, but offer an overview of what I feel would be my dream system.&lt;/p&gt;
&lt;h2&gt;The Source&lt;/h2&gt;
&lt;p&gt;A heat recovery chiller will do simultaneous heating and cooling, as opposed to a traditional&lt;br /&gt;
heat-pump or reverse cycle chiller that can only operate in one mode at a time. This system would&lt;br /&gt;
have a second refrigerant to water heat exchanger and utilize the air-source when we dont need to&lt;br /&gt;
bank / store heat, or are running in heat only mode. There are several benefits to this style&lt;br /&gt;
system, the main being that while operating simultaneous heating / cooling mode the COP of the&lt;br /&gt;
system doubles. For example, the &lt;a href="https://multiaqua.com/mhrc2/"&gt;Multi-Aqua MHRC2&lt;/a&gt; shows a COP of&lt;br /&gt;
about 8, which is approximately equivalent to 30 EER or 34 SEER. This gives us geothermal level&lt;br /&gt;
performance without the need of a field.&lt;/p&gt;
&lt;h2&gt;Indoor Portion&lt;/h2&gt;
&lt;p&gt;The indoor portion of the system, we would utilize buffer tanks as thermal storage for the chiller.&lt;br /&gt;
The buffer tanks give us several benefits, including longer run times for the chiller, load&lt;br /&gt;
matching, and the ability to size for larger load (heating or cooling) without some of the problems&lt;br /&gt;
that occur when over-sizing a traditional system. The buffer tanks also allow sizing more&lt;br /&gt;
aggressively by having storage during peak load conditions.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-buffers2.png" alt="buffer" /&gt;&lt;/p&gt;
&lt;p&gt;This shows a cooling buffer tank as well as a heating buffer tank. The horizontal pumps are what&lt;br /&gt;
circulate water through the chiller, while the vertical pumps are what distribute the water to the&lt;br /&gt;
load / emitters. This configuration allows for water to be used for the loads first and extra&lt;br /&gt;
capacity to go into the buffer tanks. The buffer tanks also offer hydraulic separation for the pumps&lt;br /&gt;
(meaning that they wont interfere with each other if / when there are different flow rates).&lt;br /&gt;
Another advantage of the buffer tanks is that you can connect multiple heating or cooling sources in&lt;br /&gt;
parallel to the system. This is shown by the extra tees in the hot buffer tank where we could&lt;br /&gt;
connect something such as solar water collectors, pellet or wood boiler, or a conventional boiler.&lt;br /&gt;
Youll also notice on the right side of the hot buffer tank, that I am showing a brazed plate heat&lt;br /&gt;
exchanger that would be used to supply domestic hot water.&lt;/p&gt;
&lt;h2&gt;Distribution System&lt;/h2&gt;
&lt;p&gt;This could be a number of things, from radiant panels, in-floor, high-output baseboard radiators,&lt;br /&gt;
however Im going to model it as a 4-pipe hydronic air handler.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-ah.png" alt="ah" /&gt;&lt;/p&gt;
&lt;p&gt;The hydronic air handler is able to provide cooling, heating, and re-heat dehumidification, all in&lt;br /&gt;
one package. With a hydronic system, it would be very easy to load match by controlling the fan&lt;br /&gt;
speed and utilizing a Delta-T pump or outdoor reset controls. These air handlers are available from&lt;br /&gt;
several manufacturers and come in different styles from traditional (as shown), small duct high&lt;br /&gt;
velocity systems, and even ductless styles.&lt;/p&gt;
&lt;h2&gt;Disadvantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Not highly available in the U.S.&lt;/li&gt;
&lt;li&gt;When the chiller is down nothing works (not much different than traditional)&lt;/li&gt;
&lt;li&gt;Lack of understanding / technicians afraid to work on this style system.&lt;/li&gt;
&lt;li&gt;Potentially higher upfront costs.&lt;/li&gt;
&lt;li&gt;Lack of design or planning could cause unhappy clients (same with traditional)&lt;/li&gt;
&lt;li&gt;Distribution systems need to be designed around low water temperatures (not a drop in replacement&lt;br /&gt;
for traditional boiler systems)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Advantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Central plant for heating, cooling, and DHW (also a disadvantage)&lt;/li&gt;
&lt;li&gt;Flexible distribution options / methods.&lt;/li&gt;
&lt;li&gt;Self contained refrigerant circuit&lt;/li&gt;
&lt;li&gt;Ability to produce / store thermal energy during off peak electrical hours&lt;/li&gt;
&lt;li&gt;Ability to move BTUs more efficiently through water than air&lt;/li&gt;
&lt;li&gt;Long life for distribution system (50-100+ years)&lt;/li&gt;
&lt;li&gt;Easier transition to natural / flammable refrigerants&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In conclusion, there are many advantages to this style system, as well as disadvantages. One of the&lt;br /&gt;
main points is to think of the system in 3 distinct components, the source(s), thermal storage, and&lt;br /&gt;
distribution. As mentioned, this only one concept, but in reality, there are many ways to accomplish&lt;br /&gt;
this, which is one of its advantages. For example, perhaps in certain scenarios it makes sense to&lt;br /&gt;
dump excess heat into a pool, create ice storage during off peak hours, cascade into another water&lt;br /&gt;
-&amp;gt; water heat pump for higher temperature distribution, incorporate solar collectors, and so on.&lt;/p&gt;
&lt;p&gt;Thank you for reading all the way to the end!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/you-should-learn-markdown/</id>
<title>You Should Learn Markdown</title>
<updated>2025-02-19T20:51:49Z</updated>
<content type="html">&lt;p&gt;This is a quick article about why you should learn markdown.&lt;/p&gt;
&lt;h2&gt;What is markdown&lt;/h2&gt;
&lt;p&gt;Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily&lt;br /&gt;
converted to other formats, such as &lt;strong&gt;html, pdf, docx&lt;/strong&gt;, and many more. All the articles written on&lt;br /&gt;
this website are written in markdown, heres an image of this article written in markdown.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-markdown.png" alt="markdown" /&gt;&lt;/p&gt;
&lt;p&gt;The reason you should learn markdown is that it allows you to focus on the content / text of your&lt;br /&gt;
content with simple concepts for formatting. Markdown is used heavily in documenting software&lt;br /&gt;
projects, which is how I got introduced to it, however it can scale all the way up to writing&lt;br /&gt;
research papers or even books.&lt;/p&gt;
&lt;p&gt;I use markdown for probably 80% of all the text documents I need to write, from company documents,&lt;br /&gt;
web / software documentation, and so on. It allows me to get content out quickly without having to&lt;br /&gt;
click around with formatting options in a program like &lt;strong&gt;Word&lt;/strong&gt; or &lt;strong&gt;Pages&lt;/strong&gt;. To be clear, a lot of&lt;br /&gt;
the reports and things I generate for my &lt;strong&gt;Home Performance Assessments&lt;/strong&gt; are written using&lt;br /&gt;
&lt;strong&gt;Pages&lt;/strong&gt; (for now at least) because I have templates that make the documents look more&lt;br /&gt;
professional, however I am working on solutions to migrate those to be markdown based.&lt;/p&gt;
&lt;p&gt;Markdown is supported in mostly all the &lt;strong&gt;Google&lt;/strong&gt; tools, as well as the &lt;strong&gt;Outlook&lt;/strong&gt; email client&lt;br /&gt;
(which is one of my least favorite tools, BTW). It makes it simple to create tables, lists, and many&lt;br /&gt;
common document related tasks.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;You can learn more about the syntax used for markdown at&lt;br /&gt;
&lt;a href="https://www.markdownguide.org/basic-syntax/"&gt;markdownguide.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;A non-exhaustive list of where you can use Markdown and editors.&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Most goggle tools support markdown, docs, sheets, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outlook&lt;/td&gt;
&lt;td&gt;Although I hate outlook email client, it does support markdown.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dillinger.io&lt;/td&gt;
&lt;td&gt;An online tool for writing / previewing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MarkText&lt;/td&gt;
&lt;td&gt;A multi-platform editor for writing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;You can use tools such as &lt;a href="https://pandoc.org/#"&gt;pandoc&lt;/a&gt; to convert Markdown files to other formats.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-pandoc.gif" alt="pandoc" /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope that you take the time to research and see if Markdown is good fit for your document /&lt;br /&gt;
content creation.&lt;/p&gt;
&lt;p&gt;Thanks for reading until the end!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/the-struggle/</id>
<title>The Struggle</title>
<updated>2025-02-19T20:53:34Z</updated>
<content type="html">&lt;p&gt;This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If&lt;br /&gt;
that is not your cup of tea then feel free to skip this article.&lt;/p&gt;
&lt;h2&gt;The struggle&lt;/h2&gt;
&lt;p&gt;It has been one of those “when it rains, it pours” type of weeks. As write this, I feel like a baby&lt;br /&gt;
/ complainer, which is not my intention, but here it goes.&lt;/p&gt;
&lt;p&gt;My aunt had a stroke and is likely not going to make it through the week. My aunt has always lived&lt;br /&gt;
in Florida during my life / memory, but has always come to visit. She is my moms oldest sister (9&lt;br /&gt;
years apart), so she helped raise my mother growing up. Theyve always had a close relationship and&lt;br /&gt;
are like two peas in a pod. They would always visit us, especially while my grand-parents were still&lt;br /&gt;
alive. She is currently not really awake or expected to make it. She does not eat / drink and&lt;br /&gt;
theyve basically just been making her comfortable.&lt;/p&gt;
&lt;p&gt;One of my employees broke his neck over the weekend. I dont have a ton of details on this subject,&lt;br /&gt;
but he had surgery to fuse some discs back together and should eventually be ok, however it will be&lt;br /&gt;
a long recovery time.&lt;/p&gt;
&lt;p&gt;A few weeks ago, I commited one of the deadly sins of running a blower door test without checking /&lt;br /&gt;
asking about the fireplaces, which caused lord knows how much damage from the soot that was spread&lt;br /&gt;
throughout the living room(s).&lt;/p&gt;
&lt;p&gt;An online friend lost her mother.&lt;/p&gt;
&lt;p&gt;All of these things have just got me emotional.&lt;/p&gt;
&lt;h2&gt;My secrets&lt;/h2&gt;
&lt;p&gt;I am an emotional person, sometimes to my detriment. Im prone to fits of anger and depression. I&lt;br /&gt;
spent many years masking things through alcohol abuse and many other idiotic tendencies. I still&lt;br /&gt;
drink on occasion, but not as I once did.&lt;/p&gt;
&lt;p&gt;I often put my faith in folks, even if I havent met them in person, this can often lead to being&lt;br /&gt;
let down. I guess I struggle sometimes with the reality of online relationships. I think that people&lt;br /&gt;
are genuine, because Im that way (how I act online is the same as I act in person for the most&lt;br /&gt;
part). I will happily show / share the good and the bad, in hopes that someone may learn. This is&lt;br /&gt;
not at all something to be ashamed of, or anything that Id like to change, however it does on&lt;br /&gt;
occasion lead me into turmoil when I find out some true identity / personality of someone.&lt;/p&gt;
&lt;p&gt;I hold grudges, like forever grudges. It is very hard for me to get over somethings, even if I want&lt;br /&gt;
to. I can sometimes put things out of my mind, but when Im spinning, they will resurface. I want to&lt;br /&gt;
forgive people, but it is just not the way it works for me often times. It takes a lot to get me&lt;br /&gt;
beyond my breaking point, but once someone has gotten me there, there is likely no turning back for&lt;br /&gt;
that person. Luckily, I can count on one hand the number of folks that Ive had to cut out of my&lt;br /&gt;
life for these reasons. Id love to say that Im a bigger / better person, that I forgive them, but&lt;br /&gt;
truthfully I do not.&lt;/p&gt;
&lt;p&gt;My emotions sometimes make me say things publicly that I should keep to myself. I dont have a lot&lt;br /&gt;
of regret around these things, because I generally mean what I say, and also feel we are entitled to&lt;br /&gt;
opinions as well as entitled to change those opinions as often as we see fit. Although I dont&lt;br /&gt;
regret them per-se, it does make me wonder what type of impression it leaves (something for future&lt;br /&gt;
pondering, perhaps).&lt;/p&gt;
&lt;p&gt;Im one of those that says “I dont care what they think about me”, when I really do care what&lt;br /&gt;
people think about me. This often leads to fear and anxiety, especially in social settings. Im not&lt;br /&gt;
the greatest at conversation, Im better at writing or some interaction that gives me a bit of time&lt;br /&gt;
to think before responding. Therefore, Im quick to make a joke or something rather than having&lt;br /&gt;
thoughtful / genuine responses.&lt;/p&gt;
&lt;h2&gt;Community&lt;/h2&gt;
&lt;p&gt;All of these things have just got me thinking about community. Community is an aspect that seems&lt;br /&gt;
distant nowadays, even though we have more opportunity than ever. We call ourselves part of&lt;br /&gt;
communities, especially online, but Im not convinced that it is really community (or at least not&lt;br /&gt;
most of the time, not saying it cant be / in absolute terms).&lt;/p&gt;
&lt;p&gt;I have met a lot of folks online that I consider true friends. Friends that I would do anything for&lt;br /&gt;
and feel they would do anything for me, just like my real life friends who have stuck with me for&lt;br /&gt;
many years. These are people that challenge me and how I think on a regular basis. They do their&lt;br /&gt;
best to lift me up when Im down.&lt;/p&gt;
&lt;p&gt;Its easy to hide when so much of our interactions are not really in person, to feel like the&lt;br /&gt;
relationships we do have are not genuine, but thats awfully cynical. I prefer to give people the&lt;br /&gt;
benefit / trust they deserve until, at least until they dont then see my part about holding grudges&lt;br /&gt;
;)&lt;/p&gt;
&lt;p&gt;Do you ever feel the same? Instead of being cynical and down, today, Im trying to be positive. Im&lt;br /&gt;
trying to share a little bit of what I feel community should be. Although, Ive never met HVAChicks&lt;br /&gt;
Jennifer in real life, I read today about her mom and decided to take an hour or so to put together&lt;br /&gt;
a website for the &lt;a href="https://hvachicks.com"&gt;HVAChicks Community&lt;/a&gt;, hoping it would bring a moment of&lt;br /&gt;
happiness to her day. While Ive deployed several websites in the past, this one for some reason was&lt;br /&gt;
a total PITA, but I got through it. I could feel how grateful she was when I shared it with her (and&lt;br /&gt;
its basic AF), but that truly made me feel useful / great after being down in the dumps for a bit.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Ive probably rambled enough and am losing direction here, so I will end with a few things.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build the community around you that you want / deserve.&lt;/li&gt;
&lt;li&gt;Dont be so quick to pass judgment.&lt;/li&gt;
&lt;li&gt;Spend time with your loved ones, while you can.&lt;/li&gt;
&lt;li&gt;Tell someone you love them.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Finally, Id like to shout out some people that Im grateful for. This is non-exhaustive list, if I&lt;br /&gt;
left you off, Im sorry and please do not take it personally.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bryan Orr
&lt;ul&gt;
&lt;li&gt;Bryan has cultivated an awesome group / community that Im proud to be a part of. His time and&lt;br /&gt;
commitment to the HVAC industry is something that I hope he himself is proud of. Without Bryan,&lt;br /&gt;
mostly all the following names would not even be in my vocabulary.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ty Branaman (forget exactly how to spell his last name).
&lt;ul&gt;
&lt;li&gt;Ty has such a great personality during his videos / training and Im sure its a struggle to be&lt;br /&gt;
positive all the time, however it brings me hope and joy everytime!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dustin (mother fn) Cole
&lt;ul&gt;
&lt;li&gt;Dustin is like a brother that I never had, hes a true master of his craft and I know that I&lt;br /&gt;
can rely on him anytime I need it!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Genry Garcia
&lt;ul&gt;
&lt;li&gt;The cuban crusader who has taught me so much about home performance, and especially ZPD (baby,&lt;br /&gt;
baby)!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chris Hughes
&lt;ul&gt;
&lt;li&gt;Its hard to put into words here, but I know that Chris is there to talk when I need it and&lt;br /&gt;
hes a great motivator because of his action items :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Eric Kaiser
&lt;ul&gt;
&lt;li&gt;I think genuine when I think of Eric, I hear his voice in my head when I write reports because&lt;br /&gt;
of guidance he has given in the past. He truly wants to help teach people.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Michael Cianfracco (??)
&lt;ul&gt;
&lt;li&gt;Man does he make me laugh and we share a passion for the 4-Roses.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HVAChicks Jennifer (Ill butcher her last name from memory)
&lt;ul&gt;
&lt;li&gt;Jennifer is inspiring with her goals and everything she does to help anyone in the industry. I&lt;br /&gt;
cant wait to meet her in person one day soon!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HVAC Overtime Crew
&lt;ul&gt;
&lt;li&gt;Im lumping these guys together because I truly enjoy when Im able to make their live stream&lt;br /&gt;
on Fridays. And I interact with A-Team a lot and really appreciate him / them!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Alicia Hollon
&lt;ul&gt;
&lt;li&gt;Alicia is so awesome to me, I mean she just made my favorite pancakes and sausage for dinner,&lt;br /&gt;
love you babe!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lastly, I have to shout out to my mom. I know shes going through a rough time with my aunt&lt;br /&gt;
currently. My mother is the kindest gentlest soul that Ive ever met. I look up to all 5 of her!&lt;/p&gt;
&lt;p&gt;At any rate, thanks for sticking it out to the end through my ramblings. Be kind to someone today&lt;br /&gt;
and tomorrow!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/calculate-seer-degradation-by-age/</id>
<title>Calculate SEER Degradation by Age</title>
<updated>2025-02-19T21:55:30Z</updated>
<content type="html">&lt;p&gt;This is a quick tech-tip to learn how to calculate the degradation of SEER based&lt;br /&gt;
on age.&lt;/p&gt;
&lt;p&gt;The degradation of SEER is due to fouling of the evaporator coil with dirt and&lt;br /&gt;
refrigerant charge losses. It should be noted that this is not true for all&lt;br /&gt;
applications, but is used as an estimation based on research done by the &lt;code&gt;DOE&lt;/code&gt;&lt;br /&gt;
of the average degradation based on systems tested.&lt;/p&gt;
&lt;h2&gt;Formula&lt;/h2&gt;
&lt;p&gt;This is the formula used to calculate the SEER based on age of the evaporator&lt;br /&gt;
coil / air handler.&lt;/p&gt;
&lt;p&gt;$$ SEER_d = SEER_n \times (1 - M)^{age} $$&lt;/p&gt;
&lt;p&gt;| Where | |&lt;br /&gt;
| | —————————————— | — |&lt;br /&gt;
| $SEER_d$ | Degradated SEER rating |&lt;br /&gt;
| $SEER_n$ | Nominal SEER rating when equipment was new |  |&lt;br /&gt;
| M | Maintenance factor, 0.01-0.03 |&lt;br /&gt;
| age | The age of the equipment, in years |&lt;/p&gt;
&lt;p&gt;The maintenance factor of 0.01 is for expertly maintained equipment and 0.03 is&lt;br /&gt;
for unmaintained. The maintenance factor in essence is based on 1%-3%&lt;br /&gt;
degradation per year, however there are some&lt;br /&gt;
&lt;a href="https://publications.energyresearch.ucf.edu/wp-content/uploads/2018/09/FSEC-PF-474-18.pdf"&gt;studies&lt;/a&gt;&lt;br /&gt;
that show that this can actually be as high as 5% or above depending on climate.&lt;br /&gt;
We could use up to 0.05 as the maintenance factor, just to see what the “range”&lt;br /&gt;
of degradation would be.&lt;/p&gt;
&lt;p&gt;Interestingly, the study linked also shows that the degradation is higher the&lt;br /&gt;
higher the tonnage of the equipment. It also shows that the degradation is lower&lt;br /&gt;
per year the higher the nominal SEER rating of the system (which is corelated to&lt;br /&gt;
using TXVs and lower airflow rates because of the equipment having multiple&lt;br /&gt;
stages).&lt;/p&gt;
&lt;h2&gt;Example&lt;/h2&gt;
&lt;p&gt;Lets consider that we have a 13 SEER piece of equipment that was matched when&lt;br /&gt;
installed and the system is 15 years old.&lt;/p&gt;
&lt;p&gt;Plugging those numbers into our formula.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Lowest Range (1% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.01)^{15} = 11.2 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Highest Rage (5% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.05)^{15} = 6 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;An expertly maintained system may not have degraded that much, with an 11.2 SEER&lt;br /&gt;
vs. a poorly maintained / dirty system that also suffers from refrigerant charge&lt;br /&gt;
losses can be as low as 6 SEER.&lt;/p&gt;
&lt;p&gt;Thanks for learning how to estimate SEER degradation based on equipment age!&lt;/p&gt;</content>
</entry>
</feed>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

284
deploy/articles/index.html Normal file
View File

@@ -0,0 +1,284 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<div>
<h1 class="text-4xl font-extrabold mb-12">
2025
</h1>
<div class="grid gap-10 mb-16">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2025/vapor-htmx-todo-app/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2025-01-05-vapor-htmx-todo-app.png"/>
Build an example application using Vapor and HTMX.
</div></a>
</p>
</section>
</div>
</div>
<div>
<h1 class="text-4xl font-extrabold mb-12">
2024
</h1>
<div class="grid gap-10 mb-16">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span><a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p>
<a href="/articles/2024/free-as-in-freedom/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-09-free-as-in-freedom.png"/>
Salute to open-source software engineers
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span><a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p>
<a href="/articles/2024/pgp-encryption-introduction/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-04-04-pgp-encryption-introduction.gif"/>
In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/unvr-as-nas/">UNVR as NAS</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">March 15, 2024</span><a href="/articles/tag/how-to/">how-to</a>, <a href="/articles/tag/nas/">nas</a>, <a href="/articles/tag/networking/">networking</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p>
<a href="/articles/2024/unvr-as-nas/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-03-15-unvr-as-nas.png"/>
In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/elevating-hvac/">Elevating HVAC: A Skilled Trade Beyond Labor</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">February 27, 2024</span><a href="/articles/tag/hvac/">HVAC</a>
</div>
<p>
<a href="/articles/2024/elevating-hvac/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2024-02-27-elevating-hvac.png"/>
This is a guest post from my good friend, Ty Branaman.
Introduction:
Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor
job, overshadowing the intricate skill set and technical expertise required in...
</div></a>
</p>
</section>
</div>
</div>
<div>
<h1 class="text-4xl font-extrabold mb-12">
2023
</h1>
<div class="grid gap-10 mb-16">
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/most-important-job/">Most Important Job</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">December 14, 2023</span><a href="/articles/tag/hvac/">HVAC</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p>
<a href="/articles/2023/most-important-job/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-12-14-most-important-job.gif"/>
This short tech tip is about something one of my good friends in the trade told me a long time ago,
that has stuck with me through the years. It is a simple phrase / mindset.
“The current job youre on, is the most important job of your day”.
This...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/cancel-this/">Cancel This</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">December 12, 2023</span><a href="/articles/tag/hvac/">HVAC</a>
</div>
<p>
<a href="/articles/2023/cancel-this/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-12-12-cancel-this.gif"/>
This post is going to be hard to put into words, its going to seem egotistical at points, but know
that my actions / feelings online are the same as they are if you met me in person. The problem with
online interactions is tone and other subtleties...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/hope/">Hope</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">October 30, 2023</span><a href="/articles/tag/general/">general</a>
</div>
<p>
<a href="/articles/2023/hope/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-30-hope.png"/>
This is a piggy-back article off of
The Struggle article that I had recently.
I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this
article Id like to take a minute to layout some of the things that give...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/heat-recovery-chiller/">Heat Recovery Chiller</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">October 27, 2023</span><a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/chiller/">chiller</a> and <a href="/articles/tag/hydronics/">hydronics</a>
</div>
<p>
<a href="/articles/2023/heat-recovery-chiller/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-27-heat-recovery-chiller.png"/>
This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so
Im doing it now. I did discuss this on
this episode of the HVAC School Podcast.
Heat Recovery Chillers
I have always had a love and passion for...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/you-should-learn-markdown/">You Should Learn Markdown</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">October 21, 2023</span><a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/general/">general</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p>
<a href="/articles/2023/you-should-learn-markdown/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-21-you-should-learn-markdown.png"/>
This is a quick article about why you should learn markdown.
What is markdown
Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily
converted to other formats, such as html, pdf, docx, and many more. All...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/the-struggle/">The Struggle</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">October 18, 2023</span><a href="/articles/tag/article/">article</a> and <a href="/articles/tag/general/">general</a>
</div>
<p>
<a href="/articles/2023/the-struggle/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-10-18-the-struggle.png"/>
This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If
that is not your cup of tea then feel free to skip this article.
The struggle
It has been one of those “when it rains, it pours” type of weeks. As...
</div></a>
</p>
</section>
<section>
<h2 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/calculate-seer-degradation-by-age/">Calculate SEER Degradation by Age</a>
</h2>
<div class="text-gray gray-links text-sm mb-4">
<span class="border-r border-gray pr-2 mr-2">September 19, 2023</span><a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/formulas/">formulas</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p>
<a href="/articles/2023/calculate-seer-degradation-by-age/"><div>
<img alt="banner" src="http://localhost:3000/articles/images/2023-09-19-calculate-seer-degradation-by-age.png"/>
This is a quick tech-tip to learn how to calculate the degradation of SEER based
on age.
The degradation of SEER is due to fouling of the evaporator coil with dirt and
refrigerant charge losses. It should be noted that this is not true for...
</div></a>
</p>
</section>
</div>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,157 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/article/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2023/the-struggle/</id>
<title>The Struggle</title>
<updated>2025-02-19T20:53:34Z</updated>
<content type="html">&lt;p&gt;This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If&lt;br /&gt;
that is not your cup of tea then feel free to skip this article.&lt;/p&gt;
&lt;h2&gt;The struggle&lt;/h2&gt;
&lt;p&gt;It has been one of those “when it rains, it pours” type of weeks. As write this, I feel like a baby&lt;br /&gt;
/ complainer, which is not my intention, but here it goes.&lt;/p&gt;
&lt;p&gt;My aunt had a stroke and is likely not going to make it through the week. My aunt has always lived&lt;br /&gt;
in Florida during my life / memory, but has always come to visit. She is my moms oldest sister (9&lt;br /&gt;
years apart), so she helped raise my mother growing up. Theyve always had a close relationship and&lt;br /&gt;
are like two peas in a pod. They would always visit us, especially while my grand-parents were still&lt;br /&gt;
alive. She is currently not really awake or expected to make it. She does not eat / drink and&lt;br /&gt;
theyve basically just been making her comfortable.&lt;/p&gt;
&lt;p&gt;One of my employees broke his neck over the weekend. I dont have a ton of details on this subject,&lt;br /&gt;
but he had surgery to fuse some discs back together and should eventually be ok, however it will be&lt;br /&gt;
a long recovery time.&lt;/p&gt;
&lt;p&gt;A few weeks ago, I commited one of the deadly sins of running a blower door test without checking /&lt;br /&gt;
asking about the fireplaces, which caused lord knows how much damage from the soot that was spread&lt;br /&gt;
throughout the living room(s).&lt;/p&gt;
&lt;p&gt;An online friend lost her mother.&lt;/p&gt;
&lt;p&gt;All of these things have just got me emotional.&lt;/p&gt;
&lt;h2&gt;My secrets&lt;/h2&gt;
&lt;p&gt;I am an emotional person, sometimes to my detriment. Im prone to fits of anger and depression. I&lt;br /&gt;
spent many years masking things through alcohol abuse and many other idiotic tendencies. I still&lt;br /&gt;
drink on occasion, but not as I once did.&lt;/p&gt;
&lt;p&gt;I often put my faith in folks, even if I havent met them in person, this can often lead to being&lt;br /&gt;
let down. I guess I struggle sometimes with the reality of online relationships. I think that people&lt;br /&gt;
are genuine, because Im that way (how I act online is the same as I act in person for the most&lt;br /&gt;
part). I will happily show / share the good and the bad, in hopes that someone may learn. This is&lt;br /&gt;
not at all something to be ashamed of, or anything that Id like to change, however it does on&lt;br /&gt;
occasion lead me into turmoil when I find out some true identity / personality of someone.&lt;/p&gt;
&lt;p&gt;I hold grudges, like forever grudges. It is very hard for me to get over somethings, even if I want&lt;br /&gt;
to. I can sometimes put things out of my mind, but when Im spinning, they will resurface. I want to&lt;br /&gt;
forgive people, but it is just not the way it works for me often times. It takes a lot to get me&lt;br /&gt;
beyond my breaking point, but once someone has gotten me there, there is likely no turning back for&lt;br /&gt;
that person. Luckily, I can count on one hand the number of folks that Ive had to cut out of my&lt;br /&gt;
life for these reasons. Id love to say that Im a bigger / better person, that I forgive them, but&lt;br /&gt;
truthfully I do not.&lt;/p&gt;
&lt;p&gt;My emotions sometimes make me say things publicly that I should keep to myself. I dont have a lot&lt;br /&gt;
of regret around these things, because I generally mean what I say, and also feel we are entitled to&lt;br /&gt;
opinions as well as entitled to change those opinions as often as we see fit. Although I dont&lt;br /&gt;
regret them per-se, it does make me wonder what type of impression it leaves (something for future&lt;br /&gt;
pondering, perhaps).&lt;/p&gt;
&lt;p&gt;Im one of those that says “I dont care what they think about me”, when I really do care what&lt;br /&gt;
people think about me. This often leads to fear and anxiety, especially in social settings. Im not&lt;br /&gt;
the greatest at conversation, Im better at writing or some interaction that gives me a bit of time&lt;br /&gt;
to think before responding. Therefore, Im quick to make a joke or something rather than having&lt;br /&gt;
thoughtful / genuine responses.&lt;/p&gt;
&lt;h2&gt;Community&lt;/h2&gt;
&lt;p&gt;All of these things have just got me thinking about community. Community is an aspect that seems&lt;br /&gt;
distant nowadays, even though we have more opportunity than ever. We call ourselves part of&lt;br /&gt;
communities, especially online, but Im not convinced that it is really community (or at least not&lt;br /&gt;
most of the time, not saying it cant be / in absolute terms).&lt;/p&gt;
&lt;p&gt;I have met a lot of folks online that I consider true friends. Friends that I would do anything for&lt;br /&gt;
and feel they would do anything for me, just like my real life friends who have stuck with me for&lt;br /&gt;
many years. These are people that challenge me and how I think on a regular basis. They do their&lt;br /&gt;
best to lift me up when Im down.&lt;/p&gt;
&lt;p&gt;Its easy to hide when so much of our interactions are not really in person, to feel like the&lt;br /&gt;
relationships we do have are not genuine, but thats awfully cynical. I prefer to give people the&lt;br /&gt;
benefit / trust they deserve until, at least until they dont then see my part about holding grudges&lt;br /&gt;
;)&lt;/p&gt;
&lt;p&gt;Do you ever feel the same? Instead of being cynical and down, today, Im trying to be positive. Im&lt;br /&gt;
trying to share a little bit of what I feel community should be. Although, Ive never met HVAChicks&lt;br /&gt;
Jennifer in real life, I read today about her mom and decided to take an hour or so to put together&lt;br /&gt;
a website for the &lt;a href="https://hvachicks.com"&gt;HVAChicks Community&lt;/a&gt;, hoping it would bring a moment of&lt;br /&gt;
happiness to her day. While Ive deployed several websites in the past, this one for some reason was&lt;br /&gt;
a total PITA, but I got through it. I could feel how grateful she was when I shared it with her (and&lt;br /&gt;
its basic AF), but that truly made me feel useful / great after being down in the dumps for a bit.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Ive probably rambled enough and am losing direction here, so I will end with a few things.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build the community around you that you want / deserve.&lt;/li&gt;
&lt;li&gt;Dont be so quick to pass judgment.&lt;/li&gt;
&lt;li&gt;Spend time with your loved ones, while you can.&lt;/li&gt;
&lt;li&gt;Tell someone you love them.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Finally, Id like to shout out some people that Im grateful for. This is non-exhaustive list, if I&lt;br /&gt;
left you off, Im sorry and please do not take it personally.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bryan Orr
&lt;ul&gt;
&lt;li&gt;Bryan has cultivated an awesome group / community that Im proud to be a part of. His time and&lt;br /&gt;
commitment to the HVAC industry is something that I hope he himself is proud of. Without Bryan,&lt;br /&gt;
mostly all the following names would not even be in my vocabulary.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ty Branaman (forget exactly how to spell his last name).
&lt;ul&gt;
&lt;li&gt;Ty has such a great personality during his videos / training and Im sure its a struggle to be&lt;br /&gt;
positive all the time, however it brings me hope and joy everytime!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dustin (mother fn) Cole
&lt;ul&gt;
&lt;li&gt;Dustin is like a brother that I never had, hes a true master of his craft and I know that I&lt;br /&gt;
can rely on him anytime I need it!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Genry Garcia
&lt;ul&gt;
&lt;li&gt;The cuban crusader who has taught me so much about home performance, and especially ZPD (baby,&lt;br /&gt;
baby)!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chris Hughes
&lt;ul&gt;
&lt;li&gt;Its hard to put into words here, but I know that Chris is there to talk when I need it and&lt;br /&gt;
hes a great motivator because of his action items :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Eric Kaiser
&lt;ul&gt;
&lt;li&gt;I think genuine when I think of Eric, I hear his voice in my head when I write reports because&lt;br /&gt;
of guidance he has given in the past. He truly wants to help teach people.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Michael Cianfracco (??)
&lt;ul&gt;
&lt;li&gt;Man does he make me laugh and we share a passion for the 4-Roses.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HVAChicks Jennifer (Ill butcher her last name from memory)
&lt;ul&gt;
&lt;li&gt;Jennifer is inspiring with her goals and everything she does to help anyone in the industry. I&lt;br /&gt;
cant wait to meet her in person one day soon!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HVAC Overtime Crew
&lt;ul&gt;
&lt;li&gt;Im lumping these guys together because I truly enjoy when Im able to make their live stream&lt;br /&gt;
on Fridays. And I interact with A-Team a lot and really appreciate him / them!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Alicia Hollon
&lt;ul&gt;
&lt;li&gt;Alicia is so awesome to me, I mean she just made my favorite pancakes and sausage for dinner,&lt;br /&gt;
love you babe!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lastly, I have to shout out to my mom. I know shes going through a rough time with my aunt&lt;br /&gt;
currently. My mother is the kindest gentlest soul that Ive ever met. I look up to all 5 of her!&lt;/p&gt;
&lt;p&gt;At any rate, thanks for sticking it out to the end through my ramblings. Be kind to someone today&lt;br /&gt;
and tomorrow!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in article
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/article/feed.xml" rel="alternate" title="mhoush: articles with tag article" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/the-struggle/">The Struggle</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 18, 2023</span>1520 words, posted in <a href="/articles/tag/article/">article</a> and <a href="/articles/tag/general/">general</a>
</div>
<p class="mt-4">
<a href="/articles/2023/the-struggle/">This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If
that is not your cup of tea then feel free to skip this article.
The struggle
It has been one of those “when it rains, it pours” type of weeks. As...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/article/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/chiller/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2023/heat-recovery-chiller/</id>
<title>Heat Recovery Chiller</title>
<updated>2025-02-19T21:08:37Z</updated>
<content type="html">&lt;p&gt;This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so&lt;br /&gt;
Im doing it now. I did discuss this on&lt;br /&gt;
&lt;a href="https://hvacrschool.com/podcasts/is-the-future-of-air-conditioning-self-contained-propane-chillers/"&gt;this episode of the HVAC School Podcast.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Heat Recovery Chillers&lt;/h2&gt;
&lt;p&gt;I have always had a love and passion for hydronic systems, perhaps its because they are not that&lt;br /&gt;
common in most areas. The designs tend to be elegant and the flexibility is unparalleled by most&lt;br /&gt;
equipment choices currently available in the U.S. Im going to try to not get too far into the weeds&lt;br /&gt;
in this article, but offer an overview of what I feel would be my dream system.&lt;/p&gt;
&lt;h2&gt;The Source&lt;/h2&gt;
&lt;p&gt;A heat recovery chiller will do simultaneous heating and cooling, as opposed to a traditional&lt;br /&gt;
heat-pump or reverse cycle chiller that can only operate in one mode at a time. This system would&lt;br /&gt;
have a second refrigerant to water heat exchanger and utilize the air-source when we dont need to&lt;br /&gt;
bank / store heat, or are running in heat only mode. There are several benefits to this style&lt;br /&gt;
system, the main being that while operating simultaneous heating / cooling mode the COP of the&lt;br /&gt;
system doubles. For example, the &lt;a href="https://multiaqua.com/mhrc2/"&gt;Multi-Aqua MHRC2&lt;/a&gt; shows a COP of&lt;br /&gt;
about 8, which is approximately equivalent to 30 EER or 34 SEER. This gives us geothermal level&lt;br /&gt;
performance without the need of a field.&lt;/p&gt;
&lt;h2&gt;Indoor Portion&lt;/h2&gt;
&lt;p&gt;The indoor portion of the system, we would utilize buffer tanks as thermal storage for the chiller.&lt;br /&gt;
The buffer tanks give us several benefits, including longer run times for the chiller, load&lt;br /&gt;
matching, and the ability to size for larger load (heating or cooling) without some of the problems&lt;br /&gt;
that occur when over-sizing a traditional system. The buffer tanks also allow sizing more&lt;br /&gt;
aggressively by having storage during peak load conditions.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-buffers2.png" alt="buffer" /&gt;&lt;/p&gt;
&lt;p&gt;This shows a cooling buffer tank as well as a heating buffer tank. The horizontal pumps are what&lt;br /&gt;
circulate water through the chiller, while the vertical pumps are what distribute the water to the&lt;br /&gt;
load / emitters. This configuration allows for water to be used for the loads first and extra&lt;br /&gt;
capacity to go into the buffer tanks. The buffer tanks also offer hydraulic separation for the pumps&lt;br /&gt;
(meaning that they wont interfere with each other if / when there are different flow rates).&lt;br /&gt;
Another advantage of the buffer tanks is that you can connect multiple heating or cooling sources in&lt;br /&gt;
parallel to the system. This is shown by the extra tees in the hot buffer tank where we could&lt;br /&gt;
connect something such as solar water collectors, pellet or wood boiler, or a conventional boiler.&lt;br /&gt;
Youll also notice on the right side of the hot buffer tank, that I am showing a brazed plate heat&lt;br /&gt;
exchanger that would be used to supply domestic hot water.&lt;/p&gt;
&lt;h2&gt;Distribution System&lt;/h2&gt;
&lt;p&gt;This could be a number of things, from radiant panels, in-floor, high-output baseboard radiators,&lt;br /&gt;
however Im going to model it as a 4-pipe hydronic air handler.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-ah.png" alt="ah" /&gt;&lt;/p&gt;
&lt;p&gt;The hydronic air handler is able to provide cooling, heating, and re-heat dehumidification, all in&lt;br /&gt;
one package. With a hydronic system, it would be very easy to load match by controlling the fan&lt;br /&gt;
speed and utilizing a Delta-T pump or outdoor reset controls. These air handlers are available from&lt;br /&gt;
several manufacturers and come in different styles from traditional (as shown), small duct high&lt;br /&gt;
velocity systems, and even ductless styles.&lt;/p&gt;
&lt;h2&gt;Disadvantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Not highly available in the U.S.&lt;/li&gt;
&lt;li&gt;When the chiller is down nothing works (not much different than traditional)&lt;/li&gt;
&lt;li&gt;Lack of understanding / technicians afraid to work on this style system.&lt;/li&gt;
&lt;li&gt;Potentially higher upfront costs.&lt;/li&gt;
&lt;li&gt;Lack of design or planning could cause unhappy clients (same with traditional)&lt;/li&gt;
&lt;li&gt;Distribution systems need to be designed around low water temperatures (not a drop in replacement&lt;br /&gt;
for traditional boiler systems)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Advantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Central plant for heating, cooling, and DHW (also a disadvantage)&lt;/li&gt;
&lt;li&gt;Flexible distribution options / methods.&lt;/li&gt;
&lt;li&gt;Self contained refrigerant circuit&lt;/li&gt;
&lt;li&gt;Ability to produce / store thermal energy during off peak electrical hours&lt;/li&gt;
&lt;li&gt;Ability to move BTUs more efficiently through water than air&lt;/li&gt;
&lt;li&gt;Long life for distribution system (50-100+ years)&lt;/li&gt;
&lt;li&gt;Easier transition to natural / flammable refrigerants&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In conclusion, there are many advantages to this style system, as well as disadvantages. One of the&lt;br /&gt;
main points is to think of the system in 3 distinct components, the source(s), thermal storage, and&lt;br /&gt;
distribution. As mentioned, this only one concept, but in reality, there are many ways to accomplish&lt;br /&gt;
this, which is one of its advantages. For example, perhaps in certain scenarios it makes sense to&lt;br /&gt;
dump excess heat into a pool, create ice storage during off peak hours, cascade into another water&lt;br /&gt;
-&amp;gt; water heat pump for higher temperature distribution, incorporate solar collectors, and so on.&lt;/p&gt;
&lt;p&gt;Thank you for reading all the way to the end!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in chiller
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/chiller/feed.xml" rel="alternate" title="mhoush: articles with tag chiller" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/heat-recovery-chiller/">Heat Recovery Chiller</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 27, 2023</span>811 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/chiller/">chiller</a> and <a href="/articles/tag/hydronics/">hydronics</a>
</div>
<p class="mt-4">
<a href="/articles/2023/heat-recovery-chiller/">This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so
Im doing it now. I did discuss this on
this episode of the HVAC School Podcast.
Heat Recovery Chillers
I have always had a love and passion for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/chiller/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,58 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/formulas/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2023/calculate-seer-degradation-by-age/</id>
<title>Calculate SEER Degradation by Age</title>
<updated>2025-02-19T21:55:30Z</updated>
<content type="html">&lt;p&gt;This is a quick tech-tip to learn how to calculate the degradation of SEER based&lt;br /&gt;
on age.&lt;/p&gt;
&lt;p&gt;The degradation of SEER is due to fouling of the evaporator coil with dirt and&lt;br /&gt;
refrigerant charge losses. It should be noted that this is not true for all&lt;br /&gt;
applications, but is used as an estimation based on research done by the &lt;code&gt;DOE&lt;/code&gt;&lt;br /&gt;
of the average degradation based on systems tested.&lt;/p&gt;
&lt;h2&gt;Formula&lt;/h2&gt;
&lt;p&gt;This is the formula used to calculate the SEER based on age of the evaporator&lt;br /&gt;
coil / air handler.&lt;/p&gt;
&lt;p&gt;$$ SEER_d = SEER_n \times (1 - M)^{age} $$&lt;/p&gt;
&lt;p&gt;| Where | |&lt;br /&gt;
| | —————————————— | — |&lt;br /&gt;
| $SEER_d$ | Degradated SEER rating |&lt;br /&gt;
| $SEER_n$ | Nominal SEER rating when equipment was new |  |&lt;br /&gt;
| M | Maintenance factor, 0.01-0.03 |&lt;br /&gt;
| age | The age of the equipment, in years |&lt;/p&gt;
&lt;p&gt;The maintenance factor of 0.01 is for expertly maintained equipment and 0.03 is&lt;br /&gt;
for unmaintained. The maintenance factor in essence is based on 1%-3%&lt;br /&gt;
degradation per year, however there are some&lt;br /&gt;
&lt;a href="https://publications.energyresearch.ucf.edu/wp-content/uploads/2018/09/FSEC-PF-474-18.pdf"&gt;studies&lt;/a&gt;&lt;br /&gt;
that show that this can actually be as high as 5% or above depending on climate.&lt;br /&gt;
We could use up to 0.05 as the maintenance factor, just to see what the “range”&lt;br /&gt;
of degradation would be.&lt;/p&gt;
&lt;p&gt;Interestingly, the study linked also shows that the degradation is higher the&lt;br /&gt;
higher the tonnage of the equipment. It also shows that the degradation is lower&lt;br /&gt;
per year the higher the nominal SEER rating of the system (which is corelated to&lt;br /&gt;
using TXVs and lower airflow rates because of the equipment having multiple&lt;br /&gt;
stages).&lt;/p&gt;
&lt;h2&gt;Example&lt;/h2&gt;
&lt;p&gt;Lets consider that we have a 13 SEER piece of equipment that was matched when&lt;br /&gt;
installed and the system is 15 years old.&lt;/p&gt;
&lt;p&gt;Plugging those numbers into our formula.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Lowest Range (1% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.01)^{15} = 11.2 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Highest Rage (5% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.05)^{15} = 6 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;An expertly maintained system may not have degraded that much, with an 11.2 SEER&lt;br /&gt;
vs. a poorly maintained / dirty system that also suffers from refrigerant charge&lt;br /&gt;
losses can be as low as 6 SEER.&lt;/p&gt;
&lt;p&gt;Thanks for learning how to estimate SEER degradation based on equipment age!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in formulas
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/formulas/feed.xml" rel="alternate" title="mhoush: articles with tag formulas" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/calculate-seer-degradation-by-age/">Calculate SEER Degradation by Age</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">September 19, 2023</span>395 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/formulas/">formulas</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p class="mt-4">
<a href="/articles/2023/calculate-seer-degradation-by-age/">This is a quick tech-tip to learn how to calculate the degradation of SEER based
on age.
The degradation of SEER is due to fouling of the evaporator coil with dirt and
refrigerant charge losses. It should be noted that this is not true for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/formulas/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,281 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/general/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2025/vapor-htmx-todo-app/</id>
<title>Vapor + HTMX</title>
<updated>2025-02-19T21:47:31Z</updated>
<summary>Build an example application using Vapor and HTMX.</summary>
<link rel="alternate" href="http://localhost:3000/articles/2025/vapor-htmx-todo-app/"></link>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/free-as-in-freedom/</id>
<title>Free As In Freedom</title>
<updated>2025-02-19T21:39:28Z</updated>
<summary>Salute to open-source software engineers</summary>
<link rel="alternate" href="http://localhost:3000/articles/2024/free-as-in-freedom/"></link>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/hope/</id>
<title>Hope</title>
<updated>2025-02-19T21:13:20Z</updated>
<content type="html">&lt;p&gt;This is a piggy-back article off of&lt;br /&gt;
&lt;a href="https://mhoush.com/posts/20231018224631-the-struggle/"&gt;The Struggle&lt;/a&gt; article that I had recently.&lt;/p&gt;
&lt;p&gt;I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this&lt;br /&gt;
article Id like to take a minute to layout some of the things that give me hope, things that I&lt;br /&gt;
focus on to try and kick myself out of the rut I can get into sometimes.&lt;/p&gt;
&lt;p&gt;I believe its important to have &lt;strong&gt;hope&lt;/strong&gt;, to realize that feeling down is normal / part of being&lt;br /&gt;
human. Its just as important to have hope. For some it is a harder thing to focus on, it may be&lt;br /&gt;
easy for us to try and dwell in negative feelings, to some that may feel more comfortable. When&lt;br /&gt;
were feeling cynical, its easy to feed the negativity, although its rarely helpful.&lt;/p&gt;
&lt;h2&gt;Hope&lt;/h2&gt;
&lt;p&gt;One of the things that I try to focus on is that Im human, it brings me hope to realize that Im&lt;br /&gt;
not the only one who feels the way that I do. This was evident by the feedback on my previous&lt;br /&gt;
article.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;My problems are very much “first world problems”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Make no mistake, Im selfish, but its the selfishness that makes me feel distant or disconnected.&lt;br /&gt;
The times that I feel connected are without a doubt the times that I let go of my ego and focus on&lt;br /&gt;
things outside of myself.&lt;/p&gt;
&lt;p&gt;Its the feeling I get from going to customers home and feeling truly appreciated. Theres no push&lt;br /&gt;
back on price, no one telling me how I should run my business, no “the part only costs $x on&lt;br /&gt;
amazon”, etc.&lt;/p&gt;
&lt;p&gt;The feeling of seeing your child smile. The safety you feel when getting a hug from your mother or&lt;br /&gt;
father. When youre looking up at the stars and realize how small you actually are.&lt;/p&gt;
&lt;p&gt;When youre out with friends and trick the DJ into playing a Mr. Bungle song and no one else&lt;br /&gt;
appreciates it, but you. The times when your guard is completely down and you laugh with abandon.&lt;/p&gt;
&lt;p&gt;The smell of your lovers hair when youre holding them close. The joy you receive from sitting with&lt;br /&gt;
your pets. The songs of nature, insects, birds, etc. The sounds of waves / water in the distance.&lt;/p&gt;
&lt;p&gt;The feeling when youve helped someone learn a new skill, when something finally clicks and makes&lt;br /&gt;
sense. When a complex topic is understood at a fundamental level. The breakthrough of a problem&lt;br /&gt;
youve pondered for days / months / years.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;There are so many things to be grateful for. This does not mean that there will not be hard times,&lt;br /&gt;
there surely will be. This does not mean that you are wrong for having negative feelings, for&lt;br /&gt;
feeling depressed or anxious. There are many around you that likely feel similar (they may just not&lt;br /&gt;
be able to express it in the same way). You never truly know what the person next to you is dealing&lt;br /&gt;
with. Be compassionate (including showing yourself compassion).&lt;/p&gt;
&lt;p&gt;When you are feeling down, try to do something for someone else. Make your own list of things to be&lt;br /&gt;
thankful for. Maybe my non-exhaustive list above will give you some ideas. Write those items down&lt;br /&gt;
regularly so that you can look back on them when you feel out of balance.&lt;/p&gt;
&lt;p&gt;There is plenty of negative energy in this world, be true and genuine and you will receive rewards.&lt;br /&gt;
When you focus on blessings then the negativity will fade.&lt;/p&gt;
&lt;p&gt;What impact are you going to leave with what little time we have?&lt;/p&gt;
&lt;p&gt;I hope that you enjoyed this short article. Know that you are &lt;em&gt;NOT&lt;/em&gt; alone, you are important, and&lt;br /&gt;
that I appreciate &lt;em&gt;you!&lt;/em&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/you-should-learn-markdown/</id>
<title>You Should Learn Markdown</title>
<updated>2025-02-19T20:51:49Z</updated>
<content type="html">&lt;p&gt;This is a quick article about why you should learn markdown.&lt;/p&gt;
&lt;h2&gt;What is markdown&lt;/h2&gt;
&lt;p&gt;Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily&lt;br /&gt;
converted to other formats, such as &lt;strong&gt;html, pdf, docx&lt;/strong&gt;, and many more. All the articles written on&lt;br /&gt;
this website are written in markdown, heres an image of this article written in markdown.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-markdown.png" alt="markdown" /&gt;&lt;/p&gt;
&lt;p&gt;The reason you should learn markdown is that it allows you to focus on the content / text of your&lt;br /&gt;
content with simple concepts for formatting. Markdown is used heavily in documenting software&lt;br /&gt;
projects, which is how I got introduced to it, however it can scale all the way up to writing&lt;br /&gt;
research papers or even books.&lt;/p&gt;
&lt;p&gt;I use markdown for probably 80% of all the text documents I need to write, from company documents,&lt;br /&gt;
web / software documentation, and so on. It allows me to get content out quickly without having to&lt;br /&gt;
click around with formatting options in a program like &lt;strong&gt;Word&lt;/strong&gt; or &lt;strong&gt;Pages&lt;/strong&gt;. To be clear, a lot of&lt;br /&gt;
the reports and things I generate for my &lt;strong&gt;Home Performance Assessments&lt;/strong&gt; are written using&lt;br /&gt;
&lt;strong&gt;Pages&lt;/strong&gt; (for now at least) because I have templates that make the documents look more&lt;br /&gt;
professional, however I am working on solutions to migrate those to be markdown based.&lt;/p&gt;
&lt;p&gt;Markdown is supported in mostly all the &lt;strong&gt;Google&lt;/strong&gt; tools, as well as the &lt;strong&gt;Outlook&lt;/strong&gt; email client&lt;br /&gt;
(which is one of my least favorite tools, BTW). It makes it simple to create tables, lists, and many&lt;br /&gt;
common document related tasks.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;You can learn more about the syntax used for markdown at&lt;br /&gt;
&lt;a href="https://www.markdownguide.org/basic-syntax/"&gt;markdownguide.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;A non-exhaustive list of where you can use Markdown and editors.&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Most goggle tools support markdown, docs, sheets, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outlook&lt;/td&gt;
&lt;td&gt;Although I hate outlook email client, it does support markdown.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dillinger.io&lt;/td&gt;
&lt;td&gt;An online tool for writing / previewing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MarkText&lt;/td&gt;
&lt;td&gt;A multi-platform editor for writing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;You can use tools such as &lt;a href="https://pandoc.org/#"&gt;pandoc&lt;/a&gt; to convert Markdown files to other formats.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-pandoc.gif" alt="pandoc" /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope that you take the time to research and see if Markdown is good fit for your document /&lt;br /&gt;
content creation.&lt;/p&gt;
&lt;p&gt;Thanks for reading until the end!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/the-struggle/</id>
<title>The Struggle</title>
<updated>2025-02-19T20:53:34Z</updated>
<content type="html">&lt;p&gt;This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If&lt;br /&gt;
that is not your cup of tea then feel free to skip this article.&lt;/p&gt;
&lt;h2&gt;The struggle&lt;/h2&gt;
&lt;p&gt;It has been one of those “when it rains, it pours” type of weeks. As write this, I feel like a baby&lt;br /&gt;
/ complainer, which is not my intention, but here it goes.&lt;/p&gt;
&lt;p&gt;My aunt had a stroke and is likely not going to make it through the week. My aunt has always lived&lt;br /&gt;
in Florida during my life / memory, but has always come to visit. She is my moms oldest sister (9&lt;br /&gt;
years apart), so she helped raise my mother growing up. Theyve always had a close relationship and&lt;br /&gt;
are like two peas in a pod. They would always visit us, especially while my grand-parents were still&lt;br /&gt;
alive. She is currently not really awake or expected to make it. She does not eat / drink and&lt;br /&gt;
theyve basically just been making her comfortable.&lt;/p&gt;
&lt;p&gt;One of my employees broke his neck over the weekend. I dont have a ton of details on this subject,&lt;br /&gt;
but he had surgery to fuse some discs back together and should eventually be ok, however it will be&lt;br /&gt;
a long recovery time.&lt;/p&gt;
&lt;p&gt;A few weeks ago, I commited one of the deadly sins of running a blower door test without checking /&lt;br /&gt;
asking about the fireplaces, which caused lord knows how much damage from the soot that was spread&lt;br /&gt;
throughout the living room(s).&lt;/p&gt;
&lt;p&gt;An online friend lost her mother.&lt;/p&gt;
&lt;p&gt;All of these things have just got me emotional.&lt;/p&gt;
&lt;h2&gt;My secrets&lt;/h2&gt;
&lt;p&gt;I am an emotional person, sometimes to my detriment. Im prone to fits of anger and depression. I&lt;br /&gt;
spent many years masking things through alcohol abuse and many other idiotic tendencies. I still&lt;br /&gt;
drink on occasion, but not as I once did.&lt;/p&gt;
&lt;p&gt;I often put my faith in folks, even if I havent met them in person, this can often lead to being&lt;br /&gt;
let down. I guess I struggle sometimes with the reality of online relationships. I think that people&lt;br /&gt;
are genuine, because Im that way (how I act online is the same as I act in person for the most&lt;br /&gt;
part). I will happily show / share the good and the bad, in hopes that someone may learn. This is&lt;br /&gt;
not at all something to be ashamed of, or anything that Id like to change, however it does on&lt;br /&gt;
occasion lead me into turmoil when I find out some true identity / personality of someone.&lt;/p&gt;
&lt;p&gt;I hold grudges, like forever grudges. It is very hard for me to get over somethings, even if I want&lt;br /&gt;
to. I can sometimes put things out of my mind, but when Im spinning, they will resurface. I want to&lt;br /&gt;
forgive people, but it is just not the way it works for me often times. It takes a lot to get me&lt;br /&gt;
beyond my breaking point, but once someone has gotten me there, there is likely no turning back for&lt;br /&gt;
that person. Luckily, I can count on one hand the number of folks that Ive had to cut out of my&lt;br /&gt;
life for these reasons. Id love to say that Im a bigger / better person, that I forgive them, but&lt;br /&gt;
truthfully I do not.&lt;/p&gt;
&lt;p&gt;My emotions sometimes make me say things publicly that I should keep to myself. I dont have a lot&lt;br /&gt;
of regret around these things, because I generally mean what I say, and also feel we are entitled to&lt;br /&gt;
opinions as well as entitled to change those opinions as often as we see fit. Although I dont&lt;br /&gt;
regret them per-se, it does make me wonder what type of impression it leaves (something for future&lt;br /&gt;
pondering, perhaps).&lt;/p&gt;
&lt;p&gt;Im one of those that says “I dont care what they think about me”, when I really do care what&lt;br /&gt;
people think about me. This often leads to fear and anxiety, especially in social settings. Im not&lt;br /&gt;
the greatest at conversation, Im better at writing or some interaction that gives me a bit of time&lt;br /&gt;
to think before responding. Therefore, Im quick to make a joke or something rather than having&lt;br /&gt;
thoughtful / genuine responses.&lt;/p&gt;
&lt;h2&gt;Community&lt;/h2&gt;
&lt;p&gt;All of these things have just got me thinking about community. Community is an aspect that seems&lt;br /&gt;
distant nowadays, even though we have more opportunity than ever. We call ourselves part of&lt;br /&gt;
communities, especially online, but Im not convinced that it is really community (or at least not&lt;br /&gt;
most of the time, not saying it cant be / in absolute terms).&lt;/p&gt;
&lt;p&gt;I have met a lot of folks online that I consider true friends. Friends that I would do anything for&lt;br /&gt;
and feel they would do anything for me, just like my real life friends who have stuck with me for&lt;br /&gt;
many years. These are people that challenge me and how I think on a regular basis. They do their&lt;br /&gt;
best to lift me up when Im down.&lt;/p&gt;
&lt;p&gt;Its easy to hide when so much of our interactions are not really in person, to feel like the&lt;br /&gt;
relationships we do have are not genuine, but thats awfully cynical. I prefer to give people the&lt;br /&gt;
benefit / trust they deserve until, at least until they dont then see my part about holding grudges&lt;br /&gt;
;)&lt;/p&gt;
&lt;p&gt;Do you ever feel the same? Instead of being cynical and down, today, Im trying to be positive. Im&lt;br /&gt;
trying to share a little bit of what I feel community should be. Although, Ive never met HVAChicks&lt;br /&gt;
Jennifer in real life, I read today about her mom and decided to take an hour or so to put together&lt;br /&gt;
a website for the &lt;a href="https://hvachicks.com"&gt;HVAChicks Community&lt;/a&gt;, hoping it would bring a moment of&lt;br /&gt;
happiness to her day. While Ive deployed several websites in the past, this one for some reason was&lt;br /&gt;
a total PITA, but I got through it. I could feel how grateful she was when I shared it with her (and&lt;br /&gt;
its basic AF), but that truly made me feel useful / great after being down in the dumps for a bit.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Ive probably rambled enough and am losing direction here, so I will end with a few things.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build the community around you that you want / deserve.&lt;/li&gt;
&lt;li&gt;Dont be so quick to pass judgment.&lt;/li&gt;
&lt;li&gt;Spend time with your loved ones, while you can.&lt;/li&gt;
&lt;li&gt;Tell someone you love them.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Finally, Id like to shout out some people that Im grateful for. This is non-exhaustive list, if I&lt;br /&gt;
left you off, Im sorry and please do not take it personally.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Bryan Orr
&lt;ul&gt;
&lt;li&gt;Bryan has cultivated an awesome group / community that Im proud to be a part of. His time and&lt;br /&gt;
commitment to the HVAC industry is something that I hope he himself is proud of. Without Bryan,&lt;br /&gt;
mostly all the following names would not even be in my vocabulary.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ty Branaman (forget exactly how to spell his last name).
&lt;ul&gt;
&lt;li&gt;Ty has such a great personality during his videos / training and Im sure its a struggle to be&lt;br /&gt;
positive all the time, however it brings me hope and joy everytime!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Dustin (mother fn) Cole
&lt;ul&gt;
&lt;li&gt;Dustin is like a brother that I never had, hes a true master of his craft and I know that I&lt;br /&gt;
can rely on him anytime I need it!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Genry Garcia
&lt;ul&gt;
&lt;li&gt;The cuban crusader who has taught me so much about home performance, and especially ZPD (baby,&lt;br /&gt;
baby)!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Chris Hughes
&lt;ul&gt;
&lt;li&gt;Its hard to put into words here, but I know that Chris is there to talk when I need it and&lt;br /&gt;
hes a great motivator because of his action items :)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Eric Kaiser
&lt;ul&gt;
&lt;li&gt;I think genuine when I think of Eric, I hear his voice in my head when I write reports because&lt;br /&gt;
of guidance he has given in the past. He truly wants to help teach people.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Michael Cianfracco (??)
&lt;ul&gt;
&lt;li&gt;Man does he make me laugh and we share a passion for the 4-Roses.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HVAChicks Jennifer (Ill butcher her last name from memory)
&lt;ul&gt;
&lt;li&gt;Jennifer is inspiring with her goals and everything she does to help anyone in the industry. I&lt;br /&gt;
cant wait to meet her in person one day soon!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;HVAC Overtime Crew
&lt;ul&gt;
&lt;li&gt;Im lumping these guys together because I truly enjoy when Im able to make their live stream&lt;br /&gt;
on Fridays. And I interact with A-Team a lot and really appreciate him / them!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Alicia Hollon
&lt;ul&gt;
&lt;li&gt;Alicia is so awesome to me, I mean she just made my favorite pancakes and sausage for dinner,&lt;br /&gt;
love you babe!&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lastly, I have to shout out to my mom. I know shes going through a rough time with my aunt&lt;br /&gt;
currently. My mother is the kindest gentlest soul that Ive ever met. I look up to all 5 of her!&lt;/p&gt;
&lt;p&gt;At any rate, thanks for sticking it out to the end through my ramblings. Be kind to someone today&lt;br /&gt;
and tomorrow!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,128 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in general
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/general/feed.xml" rel="alternate" title="mhoush: articles with tag general" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span>2155 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2025/vapor-htmx-todo-app/">Build an example application using Vapor and HTMX.</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span>1007 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2024/free-as-in-freedom/">Salute to open-source software engineers</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/hope/">Hope</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 30, 2023</span>633 words, posted in <a href="/articles/tag/general/">general</a>
</div>
<p class="mt-4">
<a href="/articles/2023/hope/">This is a piggy-back article off of
The Struggle article that I had recently.
I was a bit of a “Debbie Downer” in that article, which is okay, I get that way sometimes. In this
article Id like to take a minute to layout some of the things that give...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/you-should-learn-markdown/">You Should Learn Markdown</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 21, 2023</span>364 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/general/">general</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2023/you-should-learn-markdown/">This is a quick article about why you should learn markdown.
What is markdown
Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily
converted to other formats, such as html, pdf, docx, and many more. All...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/the-struggle/">The Struggle</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 18, 2023</span>1520 words, posted in <a href="/articles/tag/article/">article</a> and <a href="/articles/tag/general/">general</a>
</div>
<p class="mt-4">
<a href="/articles/2023/the-struggle/">This is a get stuff of my chest article. Probably going to be a mixture of ranting and whining. If
that is not your cup of tea then feel free to skip this article.
The struggle
It has been one of those “when it rains, it pours” type of weeks. As...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/general/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/gnupgp/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/pgp-encryption-introduction/</id>
<title>PGP Encryption Introduction</title>
<updated>2025-02-19T21:36:11Z</updated>
<content type="html">&lt;p&gt;In this article I introduce PGP and show a use case for me, which perhaps you can use as well.&lt;/p&gt;
&lt;h2&gt;What is PGP&lt;/h2&gt;
&lt;p&gt;PGP stands for &lt;strong&gt;Pretty Good Privacy&lt;/strong&gt;, it was first developed in 1991 by Phil Zimmermann. PGP uses&lt;br /&gt;
cryptographic privacy and authentication and is generally used in data communication.&lt;/p&gt;
&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy"&gt;Wikipedia&lt;/a&gt; its name was inspired&lt;br /&gt;
by a grocery store named, “Ralphs Pretty Goody Grocery” featured in radio hosts Garrison Keillors&lt;br /&gt;
fictional town of Lake Wobegon.&lt;/p&gt;
&lt;p&gt;PGP is commonly used in software development to “sign” software commits or files to help ensure both&lt;br /&gt;
who the commits were from as well as make sure they were not modified from the original versions.&lt;/p&gt;
&lt;p&gt;It should also be noted that when people say PGP they are often referring to OpenPGP or GnuPGP which&lt;br /&gt;
are implementations of the PGP standard protocol.&lt;/p&gt;
&lt;h2&gt;What it does&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: I am in no way a cyber-security expert, I am a layman and only describing things in terms&lt;br /&gt;
that I understand / make sense to me. Do what I do at your own risk!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PGP offers both symmetrical encryption (uses a session key and password) or asymmetrical encryption&lt;br /&gt;
(uses a session key and a private key). Asymmetrical encryption is more secure but is more resource&lt;br /&gt;
intensive (which is generally not a problem with computers of today).&lt;/p&gt;
&lt;p&gt;Generally speaking PGP uses what are known as public and private key pairs. The public portion of&lt;br /&gt;
the key par is meant to be shared with others freely, while the private portion needs to be secured&lt;br /&gt;
/ not shared with anyone &lt;strong&gt;EVER&lt;/strong&gt;. It is best practice to generate your keys on a computer that is&lt;br /&gt;
“air gapped”, meaning it is not connected to any network / internet, and does not save a history of&lt;br /&gt;
commands performed on it.&lt;/p&gt;
&lt;p&gt;PGP encrypts data (files, messages, etc.) for one or more recipients, using the recipients public&lt;br /&gt;
key. The recipients private key is required to decrypt the data once its been encrypted.&lt;/p&gt;
&lt;p&gt;Your key pair is tied to your identity / person, generally by your name and email(s). The key can&lt;br /&gt;
also have multiple “subkeys”, meaning that if you have more than one public email, alias, etc. it&lt;br /&gt;
can be tied to your same private key. This is useful for example for work vs. activism vs. software&lt;br /&gt;
development.&lt;/p&gt;
&lt;p&gt;Once your key is generated and your private key secured, you can share your public portion of the&lt;br /&gt;
key to a “keyserver” where other people can download it and verify messages were sent by you.&lt;/p&gt;
&lt;h2&gt;Web of Trust&lt;/h2&gt;
&lt;p&gt;PGP also uses what is called the &lt;strong&gt;“Web of Trust”&lt;/strong&gt;, which is used to validate that messages are&lt;br /&gt;
encrypted by a trusted source. There are different levels of trust depending on where a key is&lt;br /&gt;
retrieved from. For example, if somebody gave you their public key in person and you were able to&lt;br /&gt;
inspect that the identity matches their government id, then you can give it a higher trust level&lt;br /&gt;
than one that is sent / retrieved from a keyserver.&lt;/p&gt;
&lt;p&gt;My understanding of this portion is that over time your key is signed by others with their level of&lt;br /&gt;
certainty about you / your key, which over time increases the overall trust in your key.&lt;/p&gt;
&lt;h2&gt;Out of the weeds&lt;/h2&gt;
&lt;p&gt;Now that weve got an understanding of some of the technical aspects, lets talk about some real use&lt;br /&gt;
cases of PGP encryption.&lt;/p&gt;
&lt;p&gt;PGP encryption is used by some email clients / applications, such as&lt;br /&gt;
&lt;a href="https://canarymail.io/"&gt;Canary&lt;/a&gt;,&lt;br /&gt;
&lt;a href="https://www.thunderbird.net/en-US/thunderbird/115.0/holidayeoy/"&gt;Thunderbird&lt;/a&gt;, or&lt;br /&gt;
&lt;a href="https://gpgtools.tenderapp.com/"&gt;GPGSuite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In my understanding, it is also what is used in devices such as a&lt;br /&gt;
&lt;a href="https://www.yubico.com/"&gt;YubiKey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Many of the mentioned applications allow for an easier interface / adoption, as one of the reasons&lt;br /&gt;
it is not very popular is that it can be hard to use PGP for the average person.&lt;/p&gt;
&lt;p&gt;Aside from using my PGP key for signing software commits, my major use case is for encrypting files&lt;br /&gt;
that I store in a “cloud” provider. Know that when someone says the “cloud”, it is really just a&lt;br /&gt;
computer (in reality a gang of computers in a data center). You are solely reliant that these cloud&lt;br /&gt;
providers are not snooping on, inspecting, or even selling your data.&lt;/p&gt;
&lt;p&gt;Of course, some data may not be that sensitive, so maybe you dont care. However with a little bit&lt;br /&gt;
of effort on your part you can at least make it very hard for anyone to know what is inside your&lt;br /&gt;
documents. You can be in control of the way your items are encrypted and have confidence that nobody&lt;br /&gt;
but you can access what is inside your documents.&lt;/p&gt;
&lt;p&gt;Heck, I even encrypt documents that are stored on my own network / computer so that if something&lt;br /&gt;
gets stolen or someone breachs my network they will not be able to easily get to sensitive data.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This article is just meant as an overview of PGP encryption. In future articles I will show you how&lt;br /&gt;
to use it to encrypt your data and be in control of your privacy.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gnupg.org/"&gt;GnuPG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.openpgp.org/"&gt;OpenPGP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gpg.wtf/"&gt;gpg.wtf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ietf.org/rfc/rfc4880.html"&gt;RFC4880&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in GnuPGP
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/gnupgp/feed.xml" rel="alternate" title="mhoush: articles with tag GnuPGP" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span>840 words, posted in <a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p class="mt-4">
<a href="/articles/2024/pgp-encryption-introduction/">In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/gnupgp/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,90 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/how-to/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/unvr-as-nas/</id>
<title>UNVR as NAS</title>
<updated>2025-02-19T21:32:01Z</updated>
<content type="html">&lt;p&gt;In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be&lt;br /&gt;
used as NAS (network attached storage). Be aware that this should be done with caution and may void&lt;br /&gt;
any warranty on your UNVR as we are using it for purposes beyond its original intent. Its also&lt;br /&gt;
possible that this setup will break when / if updating the UNVR software. With that said, lets jump&lt;br /&gt;
in.&lt;/p&gt;
&lt;p&gt;This post follows along with&lt;br /&gt;
&lt;a href="https://www.reddit.com/r/Ubiquiti/comments/11o7v8l/how_to_use_the_unvr_as_a_nas_instructions/"&gt;this reddit post&lt;/a&gt;,&lt;br /&gt;
with some adaptations to get it to work on the latest Unifi-OS release of &lt;code&gt;3.2.12&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Step One - Setup SSH &amp;amp; Login&lt;/h2&gt;
&lt;p&gt;In your unifi network console you need to enable the &lt;code&gt;SSH&lt;/code&gt; login option and set a secure password&lt;br /&gt;
for the root user to login to the UNVR.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-ssh.png" alt="ssh.png" /&gt;&lt;/p&gt;
&lt;p&gt;Once that is complete you can login to your UNVR using your terminal and the IP address of your UNVR&lt;br /&gt;
on your network.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh root@192.168.1.10&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Two - Install Samba&lt;/h2&gt;
&lt;p&gt;First, well update the package registry information.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, install samba.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install samba&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Three - Setup Samba&lt;/h2&gt;
&lt;p&gt;In order to edit the configuration we are going to need to install your terminal based text editor&lt;br /&gt;
of choice (generally nano or vim), for me I will install vim.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install vim&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create a backup of the default configuration.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cp /etc/samba/smb.conf /etc/samba/smb.conf.bak&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Open the configuration file to be edited.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim /etc/samba/smb.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Just above the &lt;code&gt;Share Definitions&lt;/code&gt; section of the configuration, I added some global settings to&lt;br /&gt;
make the samba server act better for time machine backups.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#======================= MacOS Client Optimizations =======================
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:nfs_aces = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also because we want users we create to be able to read and write to their home directories created&lt;br /&gt;
on the samba server, we need to change the option under the &lt;code&gt;[homes]&lt;/code&gt; share definition to be&lt;br /&gt;
&lt;code&gt;read only = no&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is our primary configuration. You can add more share definitions at the bottom of the file to&lt;br /&gt;
suit your use case, there are decent examples of this in the original reddit post, linked in the&lt;br /&gt;
beginning.&lt;/p&gt;
&lt;p&gt;Save and exit the file.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Four - Start Samba&lt;/h2&gt;
&lt;p&gt;Use the following command to start the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo service smbd start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can check the status, by running the following command.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl status smbd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-status.png" alt="status" /&gt;&lt;/p&gt;
&lt;p&gt;Enable the samba server to start on boot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl enable smbd.service&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Five - Create Users&lt;/h2&gt;
&lt;p&gt;Create a user with a home directory that they can use.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;useradd --create-home michael&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Give the user a password to login to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;smbpasswd michael&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Six - Login to Samba Server from Client&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Finder&lt;/code&gt; app on macOS you can type &lt;code&gt;⌘k&lt;/code&gt; to connect to a server.&lt;/p&gt;
&lt;p&gt;In the text field enter &lt;code&gt;smb://&amp;lt;USER&amp;gt;@&amp;lt;UNVR_IP&amp;gt;&lt;/code&gt; to connect to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-connect.png" alt="connect" /&gt;&lt;/p&gt;
&lt;p&gt;You can also automatically connect to the server when you login to your client device, for this to&lt;br /&gt;
work you need the credentials to be stored in your keychain (ticking the box in the step above when&lt;br /&gt;
you first connect to the server).&lt;/p&gt;
&lt;p&gt;This is found in &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Login Items -&amp;gt; Open at Login&lt;/code&gt;. Click the plus button&lt;br /&gt;
and select the volume you would like to mount at login.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-login.png" alt="login" /&gt;&lt;/p&gt;
&lt;p&gt;Once you have it setup so that the server is connected on login, you can also set it up as location&lt;br /&gt;
for Time Machine Backups. &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Time Machine&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-time-machine.png" alt="time-machine" /&gt;&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in how-to
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/how-to/feed.xml" rel="alternate" title="mhoush: articles with tag how-to" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/unvr-as-nas/">UNVR as NAS</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">March 15, 2024</span>634 words, posted in <a href="/articles/tag/how-to/">how-to</a>, <a href="/articles/tag/nas/">nas</a>, <a href="/articles/tag/networking/">networking</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2024/unvr-as-nas/">In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/how-to/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,327 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/hvac/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/elevating-hvac/</id>
<title>Elevating HVAC: A Skilled Trade Beyond Labor</title>
<updated>2025-02-19T21:25:29Z</updated>
<content type="html">&lt;p&gt;This is a guest post from my good friend, &lt;strong&gt;Ty Branaman&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Introduction:&lt;/h2&gt;
&lt;p&gt;Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor&lt;br /&gt;
job, overshadowing the intricate skill set and technical expertise required in this field. Labor&lt;br /&gt;
jobs are also very important positions needed to keep society running. HVAC, like other skilled&lt;br /&gt;
trades, demands a high level of knowledge, precision, and adaptability. This article aims to shed&lt;br /&gt;
light on the misconception surrounding HVAC, emphasizing its status as a skilled trade that plays a&lt;br /&gt;
pivotal role in creating comfortable and efficient living and working environments.&lt;/p&gt;
&lt;h2&gt;Technical Proficiency:&lt;/h2&gt;
&lt;p&gt;One of the defining features that distinguish HVAC as a skilled trade is the level of technical&lt;br /&gt;
proficiency required. HVAC professionals must have a deep understanding of thermodynamics, fluid&lt;br /&gt;
mechanics, electrical circuits, Psychrometrics and air properties. This knowledge is essential for&lt;br /&gt;
designing, installing, and maintaining HVAC systems that operate seamlessly and efficiently.&lt;/p&gt;
&lt;h2&gt;System Design and Installation:&lt;/h2&gt;
&lt;p&gt;HVAC professionals are involved in the intricate process of designing and installing heating,&lt;br /&gt;
ventilation, and air conditioning systems. This task requires not only a thorough understanding of&lt;br /&gt;
the physical principles governing HVAC but also the ability to tailor solutions to meet the unique&lt;br /&gt;
needs of each space. Proper system design and installation are crucial for achieving optimal energy&lt;br /&gt;
efficiency and performance.&lt;/p&gt;
&lt;h2&gt;Diagnostic Skills:&lt;/h2&gt;
&lt;p&gt;Troubleshooting and diagnosing issues in HVAC systems require a keen analytical mind and&lt;br /&gt;
problem-solving skills. Skilled HVAC technicians possess the ability to identify and rectify&lt;br /&gt;
problems efficiently, ensuring minimal downtime and disruption to the comfort of occupants. This&lt;br /&gt;
diagnostic acumen is a hallmark of a trade that goes beyond routine labor.&lt;/p&gt;
&lt;h2&gt;Adaptability to Advanced Technologies:&lt;/h2&gt;
&lt;p&gt;The HVAC industry is in a constant state of evolution, with new technologies and innovations&lt;br /&gt;
continuously being introduced. Skilled HVAC professionals are adaptable and stay abreast of these&lt;br /&gt;
advancements. From smart thermostats to energy-efficient systems, they integrate cutting-edge&lt;br /&gt;
technologies to provide state-of-the-art solutions for their clients.&lt;/p&gt;
&lt;h2&gt;Safety and Compliance:&lt;/h2&gt;
&lt;p&gt;Safety is paramount in the HVAC trade. Professionals must adhere to strict safety protocols to&lt;br /&gt;
protect both themselves and the occupants of the spaces they work in. Additionally, compliance with&lt;br /&gt;
industry regulations and codes is a testament to the skilled nature of the trade, ensuring that HVAC&lt;br /&gt;
systems meet the highest standards of safety and efficiency.&lt;/p&gt;
&lt;h2&gt;Continual Learning and Certification:&lt;/h2&gt;
&lt;p&gt;Unlike a labor job, HVAC professionals engage in continual learning to stay current with industry&lt;br /&gt;
trends and technological advancements. Many pursue certifications and attend training programs to&lt;br /&gt;
enhance their skills and expand their knowledge base. This commitment to ongoing education is a&lt;br /&gt;
hallmark of skilled trades.&lt;/p&gt;
&lt;h2&gt;Conclusion:&lt;/h2&gt;
&lt;p&gt;Heating, Ventilation, and Air Conditioning is undeniably a skilled trade that goes beyond the&lt;br /&gt;
perception of a labor job. Labor jobs are also very important to the function of society and I have&lt;br /&gt;
proudly done these jobs myself. The technical proficiency, problem-solving abilities, adaptability,&lt;br /&gt;
and commitment to safety make HVAC professionals essential contributors to the creation of&lt;br /&gt;
comfortable and efficient indoor environments. It is crucial to recognize and appreciate the skill&lt;br /&gt;
set inherent in the HVAC trade, as it plays a vital role in shaping the quality of life for&lt;br /&gt;
individuals and the functionality of diverse spaces.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ty Branaman&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/most-important-job/</id>
<title>Most Important Job</title>
<updated>2025-02-19T21:21:54Z</updated>
<content type="html">&lt;p&gt;This short tech tip is about something one of my good friends in the trade told me a long time ago,&lt;br /&gt;
that has stuck with me through the years. It is a simple phrase / mindset.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The current job youre on, is the most important job of your day”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This mindset should be carried from the dispatcher, manager, and technician to make this successful.&lt;br /&gt;
Im not gonna lie and say this is always easy, or even always possible, but if you strive to use&lt;br /&gt;
this mindset then you will gain lifelong customers and satisfaction of not having loose ends hanging&lt;br /&gt;
out there.&lt;/p&gt;
&lt;p&gt;I do think its also important to acknowledge that there are times that a technician has exhausted&lt;br /&gt;
all their options, maybe they just dont have the mental capacity anymore to continue with a problem&lt;br /&gt;
job, or need a break to come back another day with a fresh set of eyes, etc… This is also an&lt;br /&gt;
important thing for a technician to realize, and hopefully those type of instances are much more few&lt;br /&gt;
and far between, but I do want to acknowledge that scenario does also exist.&lt;/p&gt;
&lt;p&gt;If you are a business owner, then this is something to consider instilling in your operations.&lt;br /&gt;
Empower your technicians and dispatchers to understand when things need to be shuffled around in&lt;br /&gt;
order to accommodate taking care of the customer at hand. It costs a lot of money to get a&lt;br /&gt;
technician to job, so minimizing truck rolls to the same job is important from a business&lt;br /&gt;
standpoint.&lt;/p&gt;
&lt;p&gt;This was just a quick tech tip of something that has been rolling around in my mind lately. I hope&lt;br /&gt;
you find it helpful and it sticks with you through your career as it has mine.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/cancel-this/</id>
<title>Cancel This</title>
<updated>2025-02-19T21:17:16Z</updated>
<content type="html">&lt;p&gt;This post is going to be hard to put into words, its going to seem egotistical at points, but know&lt;br /&gt;
that my actions / feelings online are the same as they are if you met me in person. The problem with&lt;br /&gt;
online interactions is tone and other subtleties do not come across, so its hard to tell when&lt;br /&gt;
someone is joking or being serious.&lt;/p&gt;
&lt;h2&gt;The Meat&lt;/h2&gt;
&lt;p&gt;It has been brought to my attention that someone out there thinks that Im sexist and should not&lt;br /&gt;
speak at the HVAC School symposium because of it. They are holding a curse word against me that I&lt;br /&gt;
said two years ago, in the moment A) it was fitting and B) it was one of those times that my mouth&lt;br /&gt;
was working faster than my brain (raise your hand if thats ever happened to you).&lt;/p&gt;
&lt;p&gt;I am an open book, I am not afraid of showing failures and strengths. Ive never claimed to be&lt;br /&gt;
perfect (well, actually I have but its always a joke). Im not at all condoning what Ive said in&lt;br /&gt;
the past, nor will I repeat it out of context now, but I communicate with people like adults and I&lt;br /&gt;
look at people as piers. We do not always have to agree with one another, conflict helps us learn&lt;br /&gt;
where to grow, but we also can not expect people to change to fit our wants / needs, thats just not&lt;br /&gt;
how it works.&lt;/p&gt;
&lt;p&gt;I do not at all agree with the tactics used by whomever is behind this. I would happily discuss this&lt;br /&gt;
in private or out in the open. You can find all my contact / social information in the sidebar of&lt;br /&gt;
this website and Ive offered up my cell phone number in private groups that we are all probably a&lt;br /&gt;
part of.&lt;/p&gt;
&lt;h2&gt;The Potatoes&lt;/h2&gt;
&lt;p&gt;I am a father of 3 girls, I have a sister, talk crap about my mom and youll find out who I am! I&lt;br /&gt;
love women, I have no problem with women in the trades, I encourage women who are in the trades. I&lt;br /&gt;
try to help every person that I can, if I can. I have failed more times than you can imagine! I am&lt;br /&gt;
self taught in about everything I do, so I give of it freely. I have all kinds of work to do to grow&lt;br /&gt;
into the man that I should be, but at the same time, I am not afraid to be the man that I am today.&lt;br /&gt;
I will greet you by whatever pronoun you want to be referred as.&lt;/p&gt;
&lt;p&gt;I would love to say that I dont judge people, but I do, just as Im being judged! I am fine with&lt;br /&gt;
someone judging me and having opinions about me, I mean that is our right. I will not say that&lt;br /&gt;
person is wrong, because in their mind theyre right. What I will not do is stop being myself. I&lt;br /&gt;
know for a fact that Ive helped more people than this person has gotten “cancelled”. I will&lt;br /&gt;
continue to help people in the trades, homeowners, or people in need. I also will not remain quiet!&lt;br /&gt;
I will give my opinion like it or not. There are people in my corner that really know me and my&lt;br /&gt;
intentions.&lt;/p&gt;
&lt;h2&gt;Final Words&lt;/h2&gt;
&lt;p&gt;The trades are rough around the edges, just as am I. The trades are a slow turning ship (just look&lt;br /&gt;
at how many still do not follow proper practices, etc. even with the capabilities and resources&lt;br /&gt;
available today).&lt;/p&gt;
&lt;p&gt;If you are new / coming into the trades then I hope you are not overly sensitive to foul language&lt;br /&gt;
and other inappropriate comments. Thick skin is valuable in the trades, but at the same time dont&lt;br /&gt;
be afraid to speak up if something offends you. Remember we are adults, we can handle disagreements&lt;br /&gt;
like adults (well, some of us can). Adults can learn from those of any age, they can reflect on&lt;br /&gt;
their own behavior and make their own decisions.&lt;/p&gt;
&lt;p&gt;I personally think that being offended is not a bad thing, it causes us to reflect / repair our&lt;br /&gt;
foundational beliefs. I hope that we can stop with this “cancel culture” of today, stop hiding&lt;br /&gt;
behind a keyboard, and be a diverse community.&lt;/p&gt;
&lt;p&gt;To wrap things up, I just want to reiterate that I am not at all mad at whomever is behind this. To&lt;br /&gt;
everyone out there who has shown me love and support, I greatly appreciate it.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/heat-recovery-chiller/</id>
<title>Heat Recovery Chiller</title>
<updated>2025-02-19T21:08:37Z</updated>
<content type="html">&lt;p&gt;This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so&lt;br /&gt;
Im doing it now. I did discuss this on&lt;br /&gt;
&lt;a href="https://hvacrschool.com/podcasts/is-the-future-of-air-conditioning-self-contained-propane-chillers/"&gt;this episode of the HVAC School Podcast.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Heat Recovery Chillers&lt;/h2&gt;
&lt;p&gt;I have always had a love and passion for hydronic systems, perhaps its because they are not that&lt;br /&gt;
common in most areas. The designs tend to be elegant and the flexibility is unparalleled by most&lt;br /&gt;
equipment choices currently available in the U.S. Im going to try to not get too far into the weeds&lt;br /&gt;
in this article, but offer an overview of what I feel would be my dream system.&lt;/p&gt;
&lt;h2&gt;The Source&lt;/h2&gt;
&lt;p&gt;A heat recovery chiller will do simultaneous heating and cooling, as opposed to a traditional&lt;br /&gt;
heat-pump or reverse cycle chiller that can only operate in one mode at a time. This system would&lt;br /&gt;
have a second refrigerant to water heat exchanger and utilize the air-source when we dont need to&lt;br /&gt;
bank / store heat, or are running in heat only mode. There are several benefits to this style&lt;br /&gt;
system, the main being that while operating simultaneous heating / cooling mode the COP of the&lt;br /&gt;
system doubles. For example, the &lt;a href="https://multiaqua.com/mhrc2/"&gt;Multi-Aqua MHRC2&lt;/a&gt; shows a COP of&lt;br /&gt;
about 8, which is approximately equivalent to 30 EER or 34 SEER. This gives us geothermal level&lt;br /&gt;
performance without the need of a field.&lt;/p&gt;
&lt;h2&gt;Indoor Portion&lt;/h2&gt;
&lt;p&gt;The indoor portion of the system, we would utilize buffer tanks as thermal storage for the chiller.&lt;br /&gt;
The buffer tanks give us several benefits, including longer run times for the chiller, load&lt;br /&gt;
matching, and the ability to size for larger load (heating or cooling) without some of the problems&lt;br /&gt;
that occur when over-sizing a traditional system. The buffer tanks also allow sizing more&lt;br /&gt;
aggressively by having storage during peak load conditions.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-buffers2.png" alt="buffer" /&gt;&lt;/p&gt;
&lt;p&gt;This shows a cooling buffer tank as well as a heating buffer tank. The horizontal pumps are what&lt;br /&gt;
circulate water through the chiller, while the vertical pumps are what distribute the water to the&lt;br /&gt;
load / emitters. This configuration allows for water to be used for the loads first and extra&lt;br /&gt;
capacity to go into the buffer tanks. The buffer tanks also offer hydraulic separation for the pumps&lt;br /&gt;
(meaning that they wont interfere with each other if / when there are different flow rates).&lt;br /&gt;
Another advantage of the buffer tanks is that you can connect multiple heating or cooling sources in&lt;br /&gt;
parallel to the system. This is shown by the extra tees in the hot buffer tank where we could&lt;br /&gt;
connect something such as solar water collectors, pellet or wood boiler, or a conventional boiler.&lt;br /&gt;
Youll also notice on the right side of the hot buffer tank, that I am showing a brazed plate heat&lt;br /&gt;
exchanger that would be used to supply domestic hot water.&lt;/p&gt;
&lt;h2&gt;Distribution System&lt;/h2&gt;
&lt;p&gt;This could be a number of things, from radiant panels, in-floor, high-output baseboard radiators,&lt;br /&gt;
however Im going to model it as a 4-pipe hydronic air handler.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-ah.png" alt="ah" /&gt;&lt;/p&gt;
&lt;p&gt;The hydronic air handler is able to provide cooling, heating, and re-heat dehumidification, all in&lt;br /&gt;
one package. With a hydronic system, it would be very easy to load match by controlling the fan&lt;br /&gt;
speed and utilizing a Delta-T pump or outdoor reset controls. These air handlers are available from&lt;br /&gt;
several manufacturers and come in different styles from traditional (as shown), small duct high&lt;br /&gt;
velocity systems, and even ductless styles.&lt;/p&gt;
&lt;h2&gt;Disadvantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Not highly available in the U.S.&lt;/li&gt;
&lt;li&gt;When the chiller is down nothing works (not much different than traditional)&lt;/li&gt;
&lt;li&gt;Lack of understanding / technicians afraid to work on this style system.&lt;/li&gt;
&lt;li&gt;Potentially higher upfront costs.&lt;/li&gt;
&lt;li&gt;Lack of design or planning could cause unhappy clients (same with traditional)&lt;/li&gt;
&lt;li&gt;Distribution systems need to be designed around low water temperatures (not a drop in replacement&lt;br /&gt;
for traditional boiler systems)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Advantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Central plant for heating, cooling, and DHW (also a disadvantage)&lt;/li&gt;
&lt;li&gt;Flexible distribution options / methods.&lt;/li&gt;
&lt;li&gt;Self contained refrigerant circuit&lt;/li&gt;
&lt;li&gt;Ability to produce / store thermal energy during off peak electrical hours&lt;/li&gt;
&lt;li&gt;Ability to move BTUs more efficiently through water than air&lt;/li&gt;
&lt;li&gt;Long life for distribution system (50-100+ years)&lt;/li&gt;
&lt;li&gt;Easier transition to natural / flammable refrigerants&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In conclusion, there are many advantages to this style system, as well as disadvantages. One of the&lt;br /&gt;
main points is to think of the system in 3 distinct components, the source(s), thermal storage, and&lt;br /&gt;
distribution. As mentioned, this only one concept, but in reality, there are many ways to accomplish&lt;br /&gt;
this, which is one of its advantages. For example, perhaps in certain scenarios it makes sense to&lt;br /&gt;
dump excess heat into a pool, create ice storage during off peak hours, cascade into another water&lt;br /&gt;
-&amp;gt; water heat pump for higher temperature distribution, incorporate solar collectors, and so on.&lt;/p&gt;
&lt;p&gt;Thank you for reading all the way to the end!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/you-should-learn-markdown/</id>
<title>You Should Learn Markdown</title>
<updated>2025-02-19T20:51:49Z</updated>
<content type="html">&lt;p&gt;This is a quick article about why you should learn markdown.&lt;/p&gt;
&lt;h2&gt;What is markdown&lt;/h2&gt;
&lt;p&gt;Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily&lt;br /&gt;
converted to other formats, such as &lt;strong&gt;html, pdf, docx&lt;/strong&gt;, and many more. All the articles written on&lt;br /&gt;
this website are written in markdown, heres an image of this article written in markdown.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-markdown.png" alt="markdown" /&gt;&lt;/p&gt;
&lt;p&gt;The reason you should learn markdown is that it allows you to focus on the content / text of your&lt;br /&gt;
content with simple concepts for formatting. Markdown is used heavily in documenting software&lt;br /&gt;
projects, which is how I got introduced to it, however it can scale all the way up to writing&lt;br /&gt;
research papers or even books.&lt;/p&gt;
&lt;p&gt;I use markdown for probably 80% of all the text documents I need to write, from company documents,&lt;br /&gt;
web / software documentation, and so on. It allows me to get content out quickly without having to&lt;br /&gt;
click around with formatting options in a program like &lt;strong&gt;Word&lt;/strong&gt; or &lt;strong&gt;Pages&lt;/strong&gt;. To be clear, a lot of&lt;br /&gt;
the reports and things I generate for my &lt;strong&gt;Home Performance Assessments&lt;/strong&gt; are written using&lt;br /&gt;
&lt;strong&gt;Pages&lt;/strong&gt; (for now at least) because I have templates that make the documents look more&lt;br /&gt;
professional, however I am working on solutions to migrate those to be markdown based.&lt;/p&gt;
&lt;p&gt;Markdown is supported in mostly all the &lt;strong&gt;Google&lt;/strong&gt; tools, as well as the &lt;strong&gt;Outlook&lt;/strong&gt; email client&lt;br /&gt;
(which is one of my least favorite tools, BTW). It makes it simple to create tables, lists, and many&lt;br /&gt;
common document related tasks.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;You can learn more about the syntax used for markdown at&lt;br /&gt;
&lt;a href="https://www.markdownguide.org/basic-syntax/"&gt;markdownguide.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;A non-exhaustive list of where you can use Markdown and editors.&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Most goggle tools support markdown, docs, sheets, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outlook&lt;/td&gt;
&lt;td&gt;Although I hate outlook email client, it does support markdown.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dillinger.io&lt;/td&gt;
&lt;td&gt;An online tool for writing / previewing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MarkText&lt;/td&gt;
&lt;td&gt;A multi-platform editor for writing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;You can use tools such as &lt;a href="https://pandoc.org/#"&gt;pandoc&lt;/a&gt; to convert Markdown files to other formats.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-pandoc.gif" alt="pandoc" /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope that you take the time to research and see if Markdown is good fit for your document /&lt;br /&gt;
content creation.&lt;/p&gt;
&lt;p&gt;Thanks for reading until the end!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/calculate-seer-degradation-by-age/</id>
<title>Calculate SEER Degradation by Age</title>
<updated>2025-02-19T21:55:30Z</updated>
<content type="html">&lt;p&gt;This is a quick tech-tip to learn how to calculate the degradation of SEER based&lt;br /&gt;
on age.&lt;/p&gt;
&lt;p&gt;The degradation of SEER is due to fouling of the evaporator coil with dirt and&lt;br /&gt;
refrigerant charge losses. It should be noted that this is not true for all&lt;br /&gt;
applications, but is used as an estimation based on research done by the &lt;code&gt;DOE&lt;/code&gt;&lt;br /&gt;
of the average degradation based on systems tested.&lt;/p&gt;
&lt;h2&gt;Formula&lt;/h2&gt;
&lt;p&gt;This is the formula used to calculate the SEER based on age of the evaporator&lt;br /&gt;
coil / air handler.&lt;/p&gt;
&lt;p&gt;$$ SEER_d = SEER_n \times (1 - M)^{age} $$&lt;/p&gt;
&lt;p&gt;| Where | |&lt;br /&gt;
| | —————————————— | — |&lt;br /&gt;
| $SEER_d$ | Degradated SEER rating |&lt;br /&gt;
| $SEER_n$ | Nominal SEER rating when equipment was new |  |&lt;br /&gt;
| M | Maintenance factor, 0.01-0.03 |&lt;br /&gt;
| age | The age of the equipment, in years |&lt;/p&gt;
&lt;p&gt;The maintenance factor of 0.01 is for expertly maintained equipment and 0.03 is&lt;br /&gt;
for unmaintained. The maintenance factor in essence is based on 1%-3%&lt;br /&gt;
degradation per year, however there are some&lt;br /&gt;
&lt;a href="https://publications.energyresearch.ucf.edu/wp-content/uploads/2018/09/FSEC-PF-474-18.pdf"&gt;studies&lt;/a&gt;&lt;br /&gt;
that show that this can actually be as high as 5% or above depending on climate.&lt;br /&gt;
We could use up to 0.05 as the maintenance factor, just to see what the “range”&lt;br /&gt;
of degradation would be.&lt;/p&gt;
&lt;p&gt;Interestingly, the study linked also shows that the degradation is higher the&lt;br /&gt;
higher the tonnage of the equipment. It also shows that the degradation is lower&lt;br /&gt;
per year the higher the nominal SEER rating of the system (which is corelated to&lt;br /&gt;
using TXVs and lower airflow rates because of the equipment having multiple&lt;br /&gt;
stages).&lt;/p&gt;
&lt;h2&gt;Example&lt;/h2&gt;
&lt;p&gt;Lets consider that we have a 13 SEER piece of equipment that was matched when&lt;br /&gt;
installed and the system is 15 years old.&lt;/p&gt;
&lt;p&gt;Plugging those numbers into our formula.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Lowest Range (1% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.01)^{15} = 11.2 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Highest Rage (5% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.05)^{15} = 6 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;An expertly maintained system may not have degraded that much, with an 11.2 SEER&lt;br /&gt;
vs. a poorly maintained / dirty system that also suffers from refrigerant charge&lt;br /&gt;
losses can be as low as 6 SEER.&lt;/p&gt;
&lt;p&gt;Thanks for learning how to estimate SEER degradation based on equipment age!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,150 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in HVAC
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/hvac/feed.xml" rel="alternate" title="mhoush: articles with tag HVAC" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/elevating-hvac/">Elevating HVAC: A Skilled Trade Beyond Labor</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">February 27, 2024</span>535 words, posted in <a href="/articles/tag/hvac/">HVAC</a>
</div>
<p class="mt-4">
<a href="/articles/2024/elevating-hvac/">This is a guest post from my good friend, Ty Branaman.
Introduction:
Heating, Ventilation, and Air Conditioning (HVAC) is often mistakenly categorized as a simple labor
job, overshadowing the intricate skill set and technical expertise required in...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/most-important-job/">Most Important Job</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">December 14, 2023</span>294 words, posted in <a href="/articles/tag/hvac/">HVAC</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p class="mt-4">
<a href="/articles/2023/most-important-job/">This short tech tip is about something one of my good friends in the trade told me a long time ago,
that has stuck with me through the years. It is a simple phrase / mindset.
“The current job youre on, is the most important job of your day”.
This...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/cancel-this/">Cancel This</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">December 12, 2023</span>758 words, posted in <a href="/articles/tag/hvac/">HVAC</a>
</div>
<p class="mt-4">
<a href="/articles/2023/cancel-this/">This post is going to be hard to put into words, its going to seem egotistical at points, but know
that my actions / feelings online are the same as they are if you met me in person. The problem with
online interactions is tone and other subtleties...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/heat-recovery-chiller/">Heat Recovery Chiller</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 27, 2023</span>811 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/chiller/">chiller</a> and <a href="/articles/tag/hydronics/">hydronics</a>
</div>
<p class="mt-4">
<a href="/articles/2023/heat-recovery-chiller/">This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so
Im doing it now. I did discuss this on
this episode of the HVAC School Podcast.
Heat Recovery Chillers
I have always had a love and passion for...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/you-should-learn-markdown/">You Should Learn Markdown</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 21, 2023</span>364 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/general/">general</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2023/you-should-learn-markdown/">This is a quick article about why you should learn markdown.
What is markdown
Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily
converted to other formats, such as html, pdf, docx, and many more. All...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/calculate-seer-degradation-by-age/">Calculate SEER Degradation by Age</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">September 19, 2023</span>395 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/formulas/">formulas</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p class="mt-4">
<a href="/articles/2023/calculate-seer-degradation-by-age/">This is a quick tech-tip to learn how to calculate the degradation of SEER based
on age.
The degradation of SEER is due to fouling of the evaporator coil with dirt and
refrigerant charge losses. It should be noted that this is not true for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/hvac/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/hydronics/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2023/heat-recovery-chiller/</id>
<title>Heat Recovery Chiller</title>
<updated>2025-02-19T21:08:37Z</updated>
<content type="html">&lt;p&gt;This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so&lt;br /&gt;
Im doing it now. I did discuss this on&lt;br /&gt;
&lt;a href="https://hvacrschool.com/podcasts/is-the-future-of-air-conditioning-self-contained-propane-chillers/"&gt;this episode of the HVAC School Podcast.&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Heat Recovery Chillers&lt;/h2&gt;
&lt;p&gt;I have always had a love and passion for hydronic systems, perhaps its because they are not that&lt;br /&gt;
common in most areas. The designs tend to be elegant and the flexibility is unparalleled by most&lt;br /&gt;
equipment choices currently available in the U.S. Im going to try to not get too far into the weeds&lt;br /&gt;
in this article, but offer an overview of what I feel would be my dream system.&lt;/p&gt;
&lt;h2&gt;The Source&lt;/h2&gt;
&lt;p&gt;A heat recovery chiller will do simultaneous heating and cooling, as opposed to a traditional&lt;br /&gt;
heat-pump or reverse cycle chiller that can only operate in one mode at a time. This system would&lt;br /&gt;
have a second refrigerant to water heat exchanger and utilize the air-source when we dont need to&lt;br /&gt;
bank / store heat, or are running in heat only mode. There are several benefits to this style&lt;br /&gt;
system, the main being that while operating simultaneous heating / cooling mode the COP of the&lt;br /&gt;
system doubles. For example, the &lt;a href="https://multiaqua.com/mhrc2/"&gt;Multi-Aqua MHRC2&lt;/a&gt; shows a COP of&lt;br /&gt;
about 8, which is approximately equivalent to 30 EER or 34 SEER. This gives us geothermal level&lt;br /&gt;
performance without the need of a field.&lt;/p&gt;
&lt;h2&gt;Indoor Portion&lt;/h2&gt;
&lt;p&gt;The indoor portion of the system, we would utilize buffer tanks as thermal storage for the chiller.&lt;br /&gt;
The buffer tanks give us several benefits, including longer run times for the chiller, load&lt;br /&gt;
matching, and the ability to size for larger load (heating or cooling) without some of the problems&lt;br /&gt;
that occur when over-sizing a traditional system. The buffer tanks also allow sizing more&lt;br /&gt;
aggressively by having storage during peak load conditions.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-buffers2.png" alt="buffer" /&gt;&lt;/p&gt;
&lt;p&gt;This shows a cooling buffer tank as well as a heating buffer tank. The horizontal pumps are what&lt;br /&gt;
circulate water through the chiller, while the vertical pumps are what distribute the water to the&lt;br /&gt;
load / emitters. This configuration allows for water to be used for the loads first and extra&lt;br /&gt;
capacity to go into the buffer tanks. The buffer tanks also offer hydraulic separation for the pumps&lt;br /&gt;
(meaning that they wont interfere with each other if / when there are different flow rates).&lt;br /&gt;
Another advantage of the buffer tanks is that you can connect multiple heating or cooling sources in&lt;br /&gt;
parallel to the system. This is shown by the extra tees in the hot buffer tank where we could&lt;br /&gt;
connect something such as solar water collectors, pellet or wood boiler, or a conventional boiler.&lt;br /&gt;
Youll also notice on the right side of the hot buffer tank, that I am showing a brazed plate heat&lt;br /&gt;
exchanger that would be used to supply domestic hot water.&lt;/p&gt;
&lt;h2&gt;Distribution System&lt;/h2&gt;
&lt;p&gt;This could be a number of things, from radiant panels, in-floor, high-output baseboard radiators,&lt;br /&gt;
however Im going to model it as a 4-pipe hydronic air handler.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-27-ah.png" alt="ah" /&gt;&lt;/p&gt;
&lt;p&gt;The hydronic air handler is able to provide cooling, heating, and re-heat dehumidification, all in&lt;br /&gt;
one package. With a hydronic system, it would be very easy to load match by controlling the fan&lt;br /&gt;
speed and utilizing a Delta-T pump or outdoor reset controls. These air handlers are available from&lt;br /&gt;
several manufacturers and come in different styles from traditional (as shown), small duct high&lt;br /&gt;
velocity systems, and even ductless styles.&lt;/p&gt;
&lt;h2&gt;Disadvantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Not highly available in the U.S.&lt;/li&gt;
&lt;li&gt;When the chiller is down nothing works (not much different than traditional)&lt;/li&gt;
&lt;li&gt;Lack of understanding / technicians afraid to work on this style system.&lt;/li&gt;
&lt;li&gt;Potentially higher upfront costs.&lt;/li&gt;
&lt;li&gt;Lack of design or planning could cause unhappy clients (same with traditional)&lt;/li&gt;
&lt;li&gt;Distribution systems need to be designed around low water temperatures (not a drop in replacement&lt;br /&gt;
for traditional boiler systems)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Advantages&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Central plant for heating, cooling, and DHW (also a disadvantage)&lt;/li&gt;
&lt;li&gt;Flexible distribution options / methods.&lt;/li&gt;
&lt;li&gt;Self contained refrigerant circuit&lt;/li&gt;
&lt;li&gt;Ability to produce / store thermal energy during off peak electrical hours&lt;/li&gt;
&lt;li&gt;Ability to move BTUs more efficiently through water than air&lt;/li&gt;
&lt;li&gt;Long life for distribution system (50-100+ years)&lt;/li&gt;
&lt;li&gt;Easier transition to natural / flammable refrigerants&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In conclusion, there are many advantages to this style system, as well as disadvantages. One of the&lt;br /&gt;
main points is to think of the system in 3 distinct components, the source(s), thermal storage, and&lt;br /&gt;
distribution. As mentioned, this only one concept, but in reality, there are many ways to accomplish&lt;br /&gt;
this, which is one of its advantages. For example, perhaps in certain scenarios it makes sense to&lt;br /&gt;
dump excess heat into a pool, create ice storage during off peak hours, cascade into another water&lt;br /&gt;
-&amp;gt; water heat pump for higher temperature distribution, incorporate solar collectors, and so on.&lt;/p&gt;
&lt;p&gt;Thank you for reading all the way to the end!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,79 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in hydronics
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/hydronics/feed.xml" rel="alternate" title="mhoush: articles with tag hydronics" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/heat-recovery-chiller/">Heat Recovery Chiller</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 27, 2023</span>811 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/chiller/">chiller</a> and <a href="/articles/tag/hydronics/">hydronics</a>
</div>
<p class="mt-4">
<a href="/articles/2023/heat-recovery-chiller/">This is an article that I wrote back in 2020, but I dont believe that I published it anywhere, so
Im doing it now. I did discuss this on
this episode of the HVAC School Podcast.
Heat Recovery Chillers
I have always had a love and passion for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/hydronics/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,90 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/nas/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/unvr-as-nas/</id>
<title>UNVR as NAS</title>
<updated>2025-02-19T21:32:01Z</updated>
<content type="html">&lt;p&gt;In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be&lt;br /&gt;
used as NAS (network attached storage). Be aware that this should be done with caution and may void&lt;br /&gt;
any warranty on your UNVR as we are using it for purposes beyond its original intent. Its also&lt;br /&gt;
possible that this setup will break when / if updating the UNVR software. With that said, lets jump&lt;br /&gt;
in.&lt;/p&gt;
&lt;p&gt;This post follows along with&lt;br /&gt;
&lt;a href="https://www.reddit.com/r/Ubiquiti/comments/11o7v8l/how_to_use_the_unvr_as_a_nas_instructions/"&gt;this reddit post&lt;/a&gt;,&lt;br /&gt;
with some adaptations to get it to work on the latest Unifi-OS release of &lt;code&gt;3.2.12&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Step One - Setup SSH &amp;amp; Login&lt;/h2&gt;
&lt;p&gt;In your unifi network console you need to enable the &lt;code&gt;SSH&lt;/code&gt; login option and set a secure password&lt;br /&gt;
for the root user to login to the UNVR.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-ssh.png" alt="ssh.png" /&gt;&lt;/p&gt;
&lt;p&gt;Once that is complete you can login to your UNVR using your terminal and the IP address of your UNVR&lt;br /&gt;
on your network.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh root@192.168.1.10&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Two - Install Samba&lt;/h2&gt;
&lt;p&gt;First, well update the package registry information.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, install samba.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install samba&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Three - Setup Samba&lt;/h2&gt;
&lt;p&gt;In order to edit the configuration we are going to need to install your terminal based text editor&lt;br /&gt;
of choice (generally nano or vim), for me I will install vim.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install vim&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create a backup of the default configuration.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cp /etc/samba/smb.conf /etc/samba/smb.conf.bak&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Open the configuration file to be edited.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim /etc/samba/smb.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Just above the &lt;code&gt;Share Definitions&lt;/code&gt; section of the configuration, I added some global settings to&lt;br /&gt;
make the samba server act better for time machine backups.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#======================= MacOS Client Optimizations =======================
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:nfs_aces = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also because we want users we create to be able to read and write to their home directories created&lt;br /&gt;
on the samba server, we need to change the option under the &lt;code&gt;[homes]&lt;/code&gt; share definition to be&lt;br /&gt;
&lt;code&gt;read only = no&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is our primary configuration. You can add more share definitions at the bottom of the file to&lt;br /&gt;
suit your use case, there are decent examples of this in the original reddit post, linked in the&lt;br /&gt;
beginning.&lt;/p&gt;
&lt;p&gt;Save and exit the file.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Four - Start Samba&lt;/h2&gt;
&lt;p&gt;Use the following command to start the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo service smbd start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can check the status, by running the following command.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl status smbd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-status.png" alt="status" /&gt;&lt;/p&gt;
&lt;p&gt;Enable the samba server to start on boot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl enable smbd.service&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Five - Create Users&lt;/h2&gt;
&lt;p&gt;Create a user with a home directory that they can use.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;useradd --create-home michael&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Give the user a password to login to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;smbpasswd michael&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Six - Login to Samba Server from Client&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Finder&lt;/code&gt; app on macOS you can type &lt;code&gt;⌘k&lt;/code&gt; to connect to a server.&lt;/p&gt;
&lt;p&gt;In the text field enter &lt;code&gt;smb://&amp;lt;USER&amp;gt;@&amp;lt;UNVR_IP&amp;gt;&lt;/code&gt; to connect to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-connect.png" alt="connect" /&gt;&lt;/p&gt;
&lt;p&gt;You can also automatically connect to the server when you login to your client device, for this to&lt;br /&gt;
work you need the credentials to be stored in your keychain (ticking the box in the step above when&lt;br /&gt;
you first connect to the server).&lt;/p&gt;
&lt;p&gt;This is found in &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Login Items -&amp;gt; Open at Login&lt;/code&gt;. Click the plus button&lt;br /&gt;
and select the volume you would like to mount at login.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-login.png" alt="login" /&gt;&lt;/p&gt;
&lt;p&gt;Once you have it setup so that the server is connected on login, you can also set it up as location&lt;br /&gt;
for Time Machine Backups. &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Time Machine&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-time-machine.png" alt="time-machine" /&gt;&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in nas
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/nas/feed.xml" rel="alternate" title="mhoush: articles with tag nas" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/unvr-as-nas/">UNVR as NAS</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">March 15, 2024</span>634 words, posted in <a href="/articles/tag/how-to/">how-to</a>, <a href="/articles/tag/nas/">nas</a>, <a href="/articles/tag/networking/">networking</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2024/unvr-as-nas/">In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/nas/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,90 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/networking/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/unvr-as-nas/</id>
<title>UNVR as NAS</title>
<updated>2025-02-19T21:32:01Z</updated>
<content type="html">&lt;p&gt;In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be&lt;br /&gt;
used as NAS (network attached storage). Be aware that this should be done with caution and may void&lt;br /&gt;
any warranty on your UNVR as we are using it for purposes beyond its original intent. Its also&lt;br /&gt;
possible that this setup will break when / if updating the UNVR software. With that said, lets jump&lt;br /&gt;
in.&lt;/p&gt;
&lt;p&gt;This post follows along with&lt;br /&gt;
&lt;a href="https://www.reddit.com/r/Ubiquiti/comments/11o7v8l/how_to_use_the_unvr_as_a_nas_instructions/"&gt;this reddit post&lt;/a&gt;,&lt;br /&gt;
with some adaptations to get it to work on the latest Unifi-OS release of &lt;code&gt;3.2.12&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Step One - Setup SSH &amp;amp; Login&lt;/h2&gt;
&lt;p&gt;In your unifi network console you need to enable the &lt;code&gt;SSH&lt;/code&gt; login option and set a secure password&lt;br /&gt;
for the root user to login to the UNVR.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-ssh.png" alt="ssh.png" /&gt;&lt;/p&gt;
&lt;p&gt;Once that is complete you can login to your UNVR using your terminal and the IP address of your UNVR&lt;br /&gt;
on your network.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh root@192.168.1.10&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Two - Install Samba&lt;/h2&gt;
&lt;p&gt;First, well update the package registry information.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, install samba.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install samba&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Three - Setup Samba&lt;/h2&gt;
&lt;p&gt;In order to edit the configuration we are going to need to install your terminal based text editor&lt;br /&gt;
of choice (generally nano or vim), for me I will install vim.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install vim&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create a backup of the default configuration.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cp /etc/samba/smb.conf /etc/samba/smb.conf.bak&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Open the configuration file to be edited.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim /etc/samba/smb.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Just above the &lt;code&gt;Share Definitions&lt;/code&gt; section of the configuration, I added some global settings to&lt;br /&gt;
make the samba server act better for time machine backups.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#======================= MacOS Client Optimizations =======================
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:nfs_aces = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also because we want users we create to be able to read and write to their home directories created&lt;br /&gt;
on the samba server, we need to change the option under the &lt;code&gt;[homes]&lt;/code&gt; share definition to be&lt;br /&gt;
&lt;code&gt;read only = no&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is our primary configuration. You can add more share definitions at the bottom of the file to&lt;br /&gt;
suit your use case, there are decent examples of this in the original reddit post, linked in the&lt;br /&gt;
beginning.&lt;/p&gt;
&lt;p&gt;Save and exit the file.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Four - Start Samba&lt;/h2&gt;
&lt;p&gt;Use the following command to start the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo service smbd start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can check the status, by running the following command.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl status smbd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-status.png" alt="status" /&gt;&lt;/p&gt;
&lt;p&gt;Enable the samba server to start on boot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl enable smbd.service&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Five - Create Users&lt;/h2&gt;
&lt;p&gt;Create a user with a home directory that they can use.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;useradd --create-home michael&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Give the user a password to login to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;smbpasswd michael&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Six - Login to Samba Server from Client&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Finder&lt;/code&gt; app on macOS you can type &lt;code&gt;⌘k&lt;/code&gt; to connect to a server.&lt;/p&gt;
&lt;p&gt;In the text field enter &lt;code&gt;smb://&amp;lt;USER&amp;gt;@&amp;lt;UNVR_IP&amp;gt;&lt;/code&gt; to connect to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-connect.png" alt="connect" /&gt;&lt;/p&gt;
&lt;p&gt;You can also automatically connect to the server when you login to your client device, for this to&lt;br /&gt;
work you need the credentials to be stored in your keychain (ticking the box in the step above when&lt;br /&gt;
you first connect to the server).&lt;/p&gt;
&lt;p&gt;This is found in &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Login Items -&amp;gt; Open at Login&lt;/code&gt;. Click the plus button&lt;br /&gt;
and select the volume you would like to mount at login.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-login.png" alt="login" /&gt;&lt;/p&gt;
&lt;p&gt;Once you have it setup so that the server is connected on login, you can also set it up as location&lt;br /&gt;
for Time Machine Backups. &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Time Machine&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-time-machine.png" alt="time-machine" /&gt;&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in networking
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/networking/feed.xml" rel="alternate" title="mhoush: articles with tag networking" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/unvr-as-nas/">UNVR as NAS</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">March 15, 2024</span>634 words, posted in <a href="/articles/tag/how-to/">how-to</a>, <a href="/articles/tag/nas/">nas</a>, <a href="/articles/tag/networking/">networking</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2024/unvr-as-nas/">In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/networking/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,17 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/open-source/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/free-as-in-freedom/</id>
<title>Free As In Freedom</title>
<updated>2025-02-19T21:39:28Z</updated>
<summary>Salute to open-source software engineers</summary>
<link rel="alternate" href="http://localhost:3000/articles/2024/free-as-in-freedom/"></link>
</entry>
</feed>

View File

@@ -0,0 +1,75 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in open-source
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/open-source/feed.xml" rel="alternate" title="mhoush: articles with tag open-source" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span>1007 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2024/free-as-in-freedom/">Salute to open-source software engineers</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/open-source/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/pgp/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/pgp-encryption-introduction/</id>
<title>PGP Encryption Introduction</title>
<updated>2025-02-19T21:36:11Z</updated>
<content type="html">&lt;p&gt;In this article I introduce PGP and show a use case for me, which perhaps you can use as well.&lt;/p&gt;
&lt;h2&gt;What is PGP&lt;/h2&gt;
&lt;p&gt;PGP stands for &lt;strong&gt;Pretty Good Privacy&lt;/strong&gt;, it was first developed in 1991 by Phil Zimmermann. PGP uses&lt;br /&gt;
cryptographic privacy and authentication and is generally used in data communication.&lt;/p&gt;
&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy"&gt;Wikipedia&lt;/a&gt; its name was inspired&lt;br /&gt;
by a grocery store named, “Ralphs Pretty Goody Grocery” featured in radio hosts Garrison Keillors&lt;br /&gt;
fictional town of Lake Wobegon.&lt;/p&gt;
&lt;p&gt;PGP is commonly used in software development to “sign” software commits or files to help ensure both&lt;br /&gt;
who the commits were from as well as make sure they were not modified from the original versions.&lt;/p&gt;
&lt;p&gt;It should also be noted that when people say PGP they are often referring to OpenPGP or GnuPGP which&lt;br /&gt;
are implementations of the PGP standard protocol.&lt;/p&gt;
&lt;h2&gt;What it does&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: I am in no way a cyber-security expert, I am a layman and only describing things in terms&lt;br /&gt;
that I understand / make sense to me. Do what I do at your own risk!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PGP offers both symmetrical encryption (uses a session key and password) or asymmetrical encryption&lt;br /&gt;
(uses a session key and a private key). Asymmetrical encryption is more secure but is more resource&lt;br /&gt;
intensive (which is generally not a problem with computers of today).&lt;/p&gt;
&lt;p&gt;Generally speaking PGP uses what are known as public and private key pairs. The public portion of&lt;br /&gt;
the key par is meant to be shared with others freely, while the private portion needs to be secured&lt;br /&gt;
/ not shared with anyone &lt;strong&gt;EVER&lt;/strong&gt;. It is best practice to generate your keys on a computer that is&lt;br /&gt;
“air gapped”, meaning it is not connected to any network / internet, and does not save a history of&lt;br /&gt;
commands performed on it.&lt;/p&gt;
&lt;p&gt;PGP encrypts data (files, messages, etc.) for one or more recipients, using the recipients public&lt;br /&gt;
key. The recipients private key is required to decrypt the data once its been encrypted.&lt;/p&gt;
&lt;p&gt;Your key pair is tied to your identity / person, generally by your name and email(s). The key can&lt;br /&gt;
also have multiple “subkeys”, meaning that if you have more than one public email, alias, etc. it&lt;br /&gt;
can be tied to your same private key. This is useful for example for work vs. activism vs. software&lt;br /&gt;
development.&lt;/p&gt;
&lt;p&gt;Once your key is generated and your private key secured, you can share your public portion of the&lt;br /&gt;
key to a “keyserver” where other people can download it and verify messages were sent by you.&lt;/p&gt;
&lt;h2&gt;Web of Trust&lt;/h2&gt;
&lt;p&gt;PGP also uses what is called the &lt;strong&gt;“Web of Trust”&lt;/strong&gt;, which is used to validate that messages are&lt;br /&gt;
encrypted by a trusted source. There are different levels of trust depending on where a key is&lt;br /&gt;
retrieved from. For example, if somebody gave you their public key in person and you were able to&lt;br /&gt;
inspect that the identity matches their government id, then you can give it a higher trust level&lt;br /&gt;
than one that is sent / retrieved from a keyserver.&lt;/p&gt;
&lt;p&gt;My understanding of this portion is that over time your key is signed by others with their level of&lt;br /&gt;
certainty about you / your key, which over time increases the overall trust in your key.&lt;/p&gt;
&lt;h2&gt;Out of the weeds&lt;/h2&gt;
&lt;p&gt;Now that weve got an understanding of some of the technical aspects, lets talk about some real use&lt;br /&gt;
cases of PGP encryption.&lt;/p&gt;
&lt;p&gt;PGP encryption is used by some email clients / applications, such as&lt;br /&gt;
&lt;a href="https://canarymail.io/"&gt;Canary&lt;/a&gt;,&lt;br /&gt;
&lt;a href="https://www.thunderbird.net/en-US/thunderbird/115.0/holidayeoy/"&gt;Thunderbird&lt;/a&gt;, or&lt;br /&gt;
&lt;a href="https://gpgtools.tenderapp.com/"&gt;GPGSuite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In my understanding, it is also what is used in devices such as a&lt;br /&gt;
&lt;a href="https://www.yubico.com/"&gt;YubiKey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Many of the mentioned applications allow for an easier interface / adoption, as one of the reasons&lt;br /&gt;
it is not very popular is that it can be hard to use PGP for the average person.&lt;/p&gt;
&lt;p&gt;Aside from using my PGP key for signing software commits, my major use case is for encrypting files&lt;br /&gt;
that I store in a “cloud” provider. Know that when someone says the “cloud”, it is really just a&lt;br /&gt;
computer (in reality a gang of computers in a data center). You are solely reliant that these cloud&lt;br /&gt;
providers are not snooping on, inspecting, or even selling your data.&lt;/p&gt;
&lt;p&gt;Of course, some data may not be that sensitive, so maybe you dont care. However with a little bit&lt;br /&gt;
of effort on your part you can at least make it very hard for anyone to know what is inside your&lt;br /&gt;
documents. You can be in control of the way your items are encrypted and have confidence that nobody&lt;br /&gt;
but you can access what is inside your documents.&lt;/p&gt;
&lt;p&gt;Heck, I even encrypt documents that are stored on my own network / computer so that if something&lt;br /&gt;
gets stolen or someone breachs my network they will not be able to easily get to sensitive data.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This article is just meant as an overview of PGP encryption. In future articles I will show you how&lt;br /&gt;
to use it to encrypt your data and be in control of your privacy.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gnupg.org/"&gt;GnuPG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.openpgp.org/"&gt;OpenPGP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gpg.wtf/"&gt;gpg.wtf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ietf.org/rfc/rfc4880.html"&gt;RFC4880&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in PGP
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/pgp/feed.xml" rel="alternate" title="mhoush: articles with tag PGP" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span>840 words, posted in <a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p class="mt-4">
<a href="/articles/2024/pgp-encryption-introduction/">In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/pgp/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,233 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/programming/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link href="http://localhost:3000" rel="self"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2025/vapor-htmx-todo-app/</id>
<title>Vapor + HTMX</title>
<updated>2025-02-19T21:47:31Z</updated>
<summary>Build an example application using Vapor and HTMX.</summary>
<link href="http://localhost:3000/articles/2025/vapor-htmx-todo-app/" rel="alternate"></link>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/pgp-encryption-introduction/</id>
<title>PGP Encryption Introduction</title>
<updated>2025-02-19T21:36:11Z</updated>
<content type="html">&lt;p&gt;In this article I introduce PGP and show a use case for me, which perhaps you can use as well.&lt;/p&gt;
&lt;h2&gt;What is PGP&lt;/h2&gt;
&lt;p&gt;PGP stands for &lt;strong&gt;Pretty Good Privacy&lt;/strong&gt;, it was first developed in 1991 by Phil Zimmermann. PGP uses&lt;br /&gt;
cryptographic privacy and authentication and is generally used in data communication.&lt;/p&gt;
&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy"&gt;Wikipedia&lt;/a&gt; its name was inspired&lt;br /&gt;
by a grocery store named, “Ralphs Pretty Goody Grocery” featured in radio hosts Garrison Keillors&lt;br /&gt;
fictional town of Lake Wobegon.&lt;/p&gt;
&lt;p&gt;PGP is commonly used in software development to “sign” software commits or files to help ensure both&lt;br /&gt;
who the commits were from as well as make sure they were not modified from the original versions.&lt;/p&gt;
&lt;p&gt;It should also be noted that when people say PGP they are often referring to OpenPGP or GnuPGP which&lt;br /&gt;
are implementations of the PGP standard protocol.&lt;/p&gt;
&lt;h2&gt;What it does&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: I am in no way a cyber-security expert, I am a layman and only describing things in terms&lt;br /&gt;
that I understand / make sense to me. Do what I do at your own risk!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PGP offers both symmetrical encryption (uses a session key and password) or asymmetrical encryption&lt;br /&gt;
(uses a session key and a private key). Asymmetrical encryption is more secure but is more resource&lt;br /&gt;
intensive (which is generally not a problem with computers of today).&lt;/p&gt;
&lt;p&gt;Generally speaking PGP uses what are known as public and private key pairs. The public portion of&lt;br /&gt;
the key par is meant to be shared with others freely, while the private portion needs to be secured&lt;br /&gt;
/ not shared with anyone &lt;strong&gt;EVER&lt;/strong&gt;. It is best practice to generate your keys on a computer that is&lt;br /&gt;
“air gapped”, meaning it is not connected to any network / internet, and does not save a history of&lt;br /&gt;
commands performed on it.&lt;/p&gt;
&lt;p&gt;PGP encrypts data (files, messages, etc.) for one or more recipients, using the recipients public&lt;br /&gt;
key. The recipients private key is required to decrypt the data once its been encrypted.&lt;/p&gt;
&lt;p&gt;Your key pair is tied to your identity / person, generally by your name and email(s). The key can&lt;br /&gt;
also have multiple “subkeys”, meaning that if you have more than one public email, alias, etc. it&lt;br /&gt;
can be tied to your same private key. This is useful for example for work vs. activism vs. software&lt;br /&gt;
development.&lt;/p&gt;
&lt;p&gt;Once your key is generated and your private key secured, you can share your public portion of the&lt;br /&gt;
key to a “keyserver” where other people can download it and verify messages were sent by you.&lt;/p&gt;
&lt;h2&gt;Web of Trust&lt;/h2&gt;
&lt;p&gt;PGP also uses what is called the &lt;strong&gt;“Web of Trust”&lt;/strong&gt;, which is used to validate that messages are&lt;br /&gt;
encrypted by a trusted source. There are different levels of trust depending on where a key is&lt;br /&gt;
retrieved from. For example, if somebody gave you their public key in person and you were able to&lt;br /&gt;
inspect that the identity matches their government id, then you can give it a higher trust level&lt;br /&gt;
than one that is sent / retrieved from a keyserver.&lt;/p&gt;
&lt;p&gt;My understanding of this portion is that over time your key is signed by others with their level of&lt;br /&gt;
certainty about you / your key, which over time increases the overall trust in your key.&lt;/p&gt;
&lt;h2&gt;Out of the weeds&lt;/h2&gt;
&lt;p&gt;Now that weve got an understanding of some of the technical aspects, lets talk about some real use&lt;br /&gt;
cases of PGP encryption.&lt;/p&gt;
&lt;p&gt;PGP encryption is used by some email clients / applications, such as&lt;br /&gt;
&lt;a href="https://canarymail.io/"&gt;Canary&lt;/a&gt;,&lt;br /&gt;
&lt;a href="https://www.thunderbird.net/en-US/thunderbird/115.0/holidayeoy/"&gt;Thunderbird&lt;/a&gt;, or&lt;br /&gt;
&lt;a href="https://gpgtools.tenderapp.com/"&gt;GPGSuite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In my understanding, it is also what is used in devices such as a&lt;br /&gt;
&lt;a href="https://www.yubico.com/"&gt;YubiKey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Many of the mentioned applications allow for an easier interface / adoption, as one of the reasons&lt;br /&gt;
it is not very popular is that it can be hard to use PGP for the average person.&lt;/p&gt;
&lt;p&gt;Aside from using my PGP key for signing software commits, my major use case is for encrypting files&lt;br /&gt;
that I store in a “cloud” provider. Know that when someone says the “cloud”, it is really just a&lt;br /&gt;
computer (in reality a gang of computers in a data center). You are solely reliant that these cloud&lt;br /&gt;
providers are not snooping on, inspecting, or even selling your data.&lt;/p&gt;
&lt;p&gt;Of course, some data may not be that sensitive, so maybe you dont care. However with a little bit&lt;br /&gt;
of effort on your part you can at least make it very hard for anyone to know what is inside your&lt;br /&gt;
documents. You can be in control of the way your items are encrypted and have confidence that nobody&lt;br /&gt;
but you can access what is inside your documents.&lt;/p&gt;
&lt;p&gt;Heck, I even encrypt documents that are stored on my own network / computer so that if something&lt;br /&gt;
gets stolen or someone breachs my network they will not be able to easily get to sensitive data.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This article is just meant as an overview of PGP encryption. In future articles I will show you how&lt;br /&gt;
to use it to encrypt your data and be in control of your privacy.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gnupg.org/"&gt;GnuPG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.openpgp.org/"&gt;OpenPGP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gpg.wtf/"&gt;gpg.wtf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ietf.org/rfc/rfc4880.html"&gt;RFC4880&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/unvr-as-nas/</id>
<title>UNVR as NAS</title>
<updated>2025-02-19T21:32:01Z</updated>
<content type="html">&lt;p&gt;In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be&lt;br /&gt;
used as NAS (network attached storage). Be aware that this should be done with caution and may void&lt;br /&gt;
any warranty on your UNVR as we are using it for purposes beyond its original intent. Its also&lt;br /&gt;
possible that this setup will break when / if updating the UNVR software. With that said, lets jump&lt;br /&gt;
in.&lt;/p&gt;
&lt;p&gt;This post follows along with&lt;br /&gt;
&lt;a href="https://www.reddit.com/r/Ubiquiti/comments/11o7v8l/how_to_use_the_unvr_as_a_nas_instructions/"&gt;this reddit post&lt;/a&gt;,&lt;br /&gt;
with some adaptations to get it to work on the latest Unifi-OS release of &lt;code&gt;3.2.12&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Step One - Setup SSH &amp;amp; Login&lt;/h2&gt;
&lt;p&gt;In your unifi network console you need to enable the &lt;code&gt;SSH&lt;/code&gt; login option and set a secure password&lt;br /&gt;
for the root user to login to the UNVR.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-ssh.png" alt="ssh.png" /&gt;&lt;/p&gt;
&lt;p&gt;Once that is complete you can login to your UNVR using your terminal and the IP address of your UNVR&lt;br /&gt;
on your network.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ssh root@192.168.1.10&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Two - Install Samba&lt;/h2&gt;
&lt;p&gt;First, well update the package registry information.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get update&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, install samba.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install samba&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Three - Setup Samba&lt;/h2&gt;
&lt;p&gt;In order to edit the configuration we are going to need to install your terminal based text editor&lt;br /&gt;
of choice (generally nano or vim), for me I will install vim.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;apt-get install vim&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Create a backup of the default configuration.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cp /etc/samba/smb.conf /etc/samba/smb.conf.bak&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Open the configuration file to be edited.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;vim /etc/samba/smb.conf&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Just above the &lt;code&gt;Share Definitions&lt;/code&gt; section of the configuration, I added some global settings to&lt;br /&gt;
make the samba server act better for time machine backups.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;#======================= MacOS Client Optimizations =======================
vfs objects = fruit streams_xattr
fruit:metadata = stream
fruit:model = MacSamba
fruit:posix_rename = yes
fruit:veto_appledouble = no
fruit:nfs_aces = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Also because we want users we create to be able to read and write to their home directories created&lt;br /&gt;
on the samba server, we need to change the option under the &lt;code&gt;[homes]&lt;/code&gt; share definition to be&lt;br /&gt;
&lt;code&gt;read only = no&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;That is our primary configuration. You can add more share definitions at the bottom of the file to&lt;br /&gt;
suit your use case, there are decent examples of this in the original reddit post, linked in the&lt;br /&gt;
beginning.&lt;/p&gt;
&lt;p&gt;Save and exit the file.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Four - Start Samba&lt;/h2&gt;
&lt;p&gt;Use the following command to start the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;sudo service smbd start&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;You can check the status, by running the following command.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl status smbd&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-status.png" alt="status" /&gt;&lt;/p&gt;
&lt;p&gt;Enable the samba server to start on boot.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;systemctl enable smbd.service&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Five - Create Users&lt;/h2&gt;
&lt;p&gt;Create a user with a home directory that they can use.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;useradd --create-home michael&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Give the user a password to login to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;smbpasswd michael&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Step Six - Login to Samba Server from Client&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Finder&lt;/code&gt; app on macOS you can type &lt;code&gt;⌘k&lt;/code&gt; to connect to a server.&lt;/p&gt;
&lt;p&gt;In the text field enter &lt;code&gt;smb://&amp;lt;USER&amp;gt;@&amp;lt;UNVR_IP&amp;gt;&lt;/code&gt; to connect to the samba server.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-connect.png" alt="connect" /&gt;&lt;/p&gt;
&lt;p&gt;You can also automatically connect to the server when you login to your client device, for this to&lt;br /&gt;
work you need the credentials to be stored in your keychain (ticking the box in the step above when&lt;br /&gt;
you first connect to the server).&lt;/p&gt;
&lt;p&gt;This is found in &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Login Items -&amp;gt; Open at Login&lt;/code&gt;. Click the plus button&lt;br /&gt;
and select the volume you would like to mount at login.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-login.png" alt="login" /&gt;&lt;/p&gt;
&lt;p&gt;Once you have it setup so that the server is connected on login, you can also set it up as location&lt;br /&gt;
for Time Machine Backups. &lt;code&gt;System Settings -&amp;gt; General -&amp;gt; Time Machine&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2024-03-15-time-machine.png" alt="time-machine" /&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/you-should-learn-markdown/</id>
<title>You Should Learn Markdown</title>
<updated>2025-02-19T20:51:49Z</updated>
<content type="html">&lt;p&gt;This is a quick article about why you should learn markdown.&lt;/p&gt;
&lt;h2&gt;What is markdown&lt;/h2&gt;
&lt;p&gt;Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily&lt;br /&gt;
converted to other formats, such as &lt;strong&gt;html, pdf, docx&lt;/strong&gt;, and many more. All the articles written on&lt;br /&gt;
this website are written in markdown, heres an image of this article written in markdown.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-markdown.png" alt="markdown" /&gt;&lt;/p&gt;
&lt;p&gt;The reason you should learn markdown is that it allows you to focus on the content / text of your&lt;br /&gt;
content with simple concepts for formatting. Markdown is used heavily in documenting software&lt;br /&gt;
projects, which is how I got introduced to it, however it can scale all the way up to writing&lt;br /&gt;
research papers or even books.&lt;/p&gt;
&lt;p&gt;I use markdown for probably 80% of all the text documents I need to write, from company documents,&lt;br /&gt;
web / software documentation, and so on. It allows me to get content out quickly without having to&lt;br /&gt;
click around with formatting options in a program like &lt;strong&gt;Word&lt;/strong&gt; or &lt;strong&gt;Pages&lt;/strong&gt;. To be clear, a lot of&lt;br /&gt;
the reports and things I generate for my &lt;strong&gt;Home Performance Assessments&lt;/strong&gt; are written using&lt;br /&gt;
&lt;strong&gt;Pages&lt;/strong&gt; (for now at least) because I have templates that make the documents look more&lt;br /&gt;
professional, however I am working on solutions to migrate those to be markdown based.&lt;/p&gt;
&lt;p&gt;Markdown is supported in mostly all the &lt;strong&gt;Google&lt;/strong&gt; tools, as well as the &lt;strong&gt;Outlook&lt;/strong&gt; email client&lt;br /&gt;
(which is one of my least favorite tools, BTW). It makes it simple to create tables, lists, and many&lt;br /&gt;
common document related tasks.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;p&gt;You can learn more about the syntax used for markdown at&lt;br /&gt;
&lt;a href="https://www.markdownguide.org/basic-syntax/"&gt;markdownguide.org&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;A non-exhaustive list of where you can use Markdown and editors.&lt;/h3&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Google&lt;/td&gt;
&lt;td&gt;Most goggle tools support markdown, docs, sheets, etc.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outlook&lt;/td&gt;
&lt;td&gt;Although I hate outlook email client, it does support markdown.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dillinger.io&lt;/td&gt;
&lt;td&gt;An online tool for writing / previewing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MarkText&lt;/td&gt;
&lt;td&gt;A multi-platform editor for writing markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;You can use tools such as &lt;a href="https://pandoc.org/#"&gt;pandoc&lt;/a&gt; to convert Markdown files to other formats.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-21-pandoc.gif" alt="pandoc" /&gt;&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I hope that you take the time to research and see if Markdown is good fit for your document /&lt;br /&gt;
content creation.&lt;/p&gt;
&lt;p&gt;Thanks for reading until the end!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,116 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in programming
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/programming/feed.xml" rel="alternate" title="mhoush: articles with tag programming" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span>2155 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2025/vapor-htmx-todo-app/">Build an example application using Vapor and HTMX.</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span>840 words, posted in <a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p class="mt-4">
<a href="/articles/2024/pgp-encryption-introduction/">In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/unvr-as-nas/">UNVR as NAS</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">March 15, 2024</span>634 words, posted in <a href="/articles/tag/how-to/">how-to</a>, <a href="/articles/tag/nas/">nas</a>, <a href="/articles/tag/networking/">networking</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2024/unvr-as-nas/">In this post, Im going to show how to setup a Samba server on a Ubiquity UNVR so that it can be
used as NAS (network attached storage). Be aware that this should be done with caution and may void
any warranty on your UNVR as we are using it for...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/you-should-learn-markdown/">You Should Learn Markdown</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">October 21, 2023</span>364 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/general/">general</a> and <a href="/articles/tag/programming/">programming</a>
</div>
<p class="mt-4">
<a href="/articles/2023/you-should-learn-markdown/">This is a quick article about why you should learn markdown.
What is markdown
Markdown is a “mark-up” language. It allows you to write content in plain text that can be easily
converted to other formats, such as html, pdf, docx, and many more. All...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/programming/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,86 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/security/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link href="http://localhost:3000" rel="self"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2024/pgp-encryption-introduction/</id>
<title>PGP Encryption Introduction</title>
<updated>2025-02-19T21:36:11Z</updated>
<content type="html">&lt;p&gt;In this article I introduce PGP and show a use case for me, which perhaps you can use as well.&lt;/p&gt;
&lt;h2&gt;What is PGP&lt;/h2&gt;
&lt;p&gt;PGP stands for &lt;strong&gt;Pretty Good Privacy&lt;/strong&gt;, it was first developed in 1991 by Phil Zimmermann. PGP uses&lt;br /&gt;
cryptographic privacy and authentication and is generally used in data communication.&lt;/p&gt;
&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Pretty_Good_Privacy"&gt;Wikipedia&lt;/a&gt; its name was inspired&lt;br /&gt;
by a grocery store named, “Ralphs Pretty Goody Grocery” featured in radio hosts Garrison Keillors&lt;br /&gt;
fictional town of Lake Wobegon.&lt;/p&gt;
&lt;p&gt;PGP is commonly used in software development to “sign” software commits or files to help ensure both&lt;br /&gt;
who the commits were from as well as make sure they were not modified from the original versions.&lt;/p&gt;
&lt;p&gt;It should also be noted that when people say PGP they are often referring to OpenPGP or GnuPGP which&lt;br /&gt;
are implementations of the PGP standard protocol.&lt;/p&gt;
&lt;h2&gt;What it does&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: I am in no way a cyber-security expert, I am a layman and only describing things in terms&lt;br /&gt;
that I understand / make sense to me. Do what I do at your own risk!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;PGP offers both symmetrical encryption (uses a session key and password) or asymmetrical encryption&lt;br /&gt;
(uses a session key and a private key). Asymmetrical encryption is more secure but is more resource&lt;br /&gt;
intensive (which is generally not a problem with computers of today).&lt;/p&gt;
&lt;p&gt;Generally speaking PGP uses what are known as public and private key pairs. The public portion of&lt;br /&gt;
the key par is meant to be shared with others freely, while the private portion needs to be secured&lt;br /&gt;
/ not shared with anyone &lt;strong&gt;EVER&lt;/strong&gt;. It is best practice to generate your keys on a computer that is&lt;br /&gt;
“air gapped”, meaning it is not connected to any network / internet, and does not save a history of&lt;br /&gt;
commands performed on it.&lt;/p&gt;
&lt;p&gt;PGP encrypts data (files, messages, etc.) for one or more recipients, using the recipients public&lt;br /&gt;
key. The recipients private key is required to decrypt the data once its been encrypted.&lt;/p&gt;
&lt;p&gt;Your key pair is tied to your identity / person, generally by your name and email(s). The key can&lt;br /&gt;
also have multiple “subkeys”, meaning that if you have more than one public email, alias, etc. it&lt;br /&gt;
can be tied to your same private key. This is useful for example for work vs. activism vs. software&lt;br /&gt;
development.&lt;/p&gt;
&lt;p&gt;Once your key is generated and your private key secured, you can share your public portion of the&lt;br /&gt;
key to a “keyserver” where other people can download it and verify messages were sent by you.&lt;/p&gt;
&lt;h2&gt;Web of Trust&lt;/h2&gt;
&lt;p&gt;PGP also uses what is called the &lt;strong&gt;“Web of Trust”&lt;/strong&gt;, which is used to validate that messages are&lt;br /&gt;
encrypted by a trusted source. There are different levels of trust depending on where a key is&lt;br /&gt;
retrieved from. For example, if somebody gave you their public key in person and you were able to&lt;br /&gt;
inspect that the identity matches their government id, then you can give it a higher trust level&lt;br /&gt;
than one that is sent / retrieved from a keyserver.&lt;/p&gt;
&lt;p&gt;My understanding of this portion is that over time your key is signed by others with their level of&lt;br /&gt;
certainty about you / your key, which over time increases the overall trust in your key.&lt;/p&gt;
&lt;h2&gt;Out of the weeds&lt;/h2&gt;
&lt;p&gt;Now that weve got an understanding of some of the technical aspects, lets talk about some real use&lt;br /&gt;
cases of PGP encryption.&lt;/p&gt;
&lt;p&gt;PGP encryption is used by some email clients / applications, such as&lt;br /&gt;
&lt;a href="https://canarymail.io/"&gt;Canary&lt;/a&gt;,&lt;br /&gt;
&lt;a href="https://www.thunderbird.net/en-US/thunderbird/115.0/holidayeoy/"&gt;Thunderbird&lt;/a&gt;, or&lt;br /&gt;
&lt;a href="https://gpgtools.tenderapp.com/"&gt;GPGSuite&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In my understanding, it is also what is used in devices such as a&lt;br /&gt;
&lt;a href="https://www.yubico.com/"&gt;YubiKey&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Many of the mentioned applications allow for an easier interface / adoption, as one of the reasons&lt;br /&gt;
it is not very popular is that it can be hard to use PGP for the average person.&lt;/p&gt;
&lt;p&gt;Aside from using my PGP key for signing software commits, my major use case is for encrypting files&lt;br /&gt;
that I store in a “cloud” provider. Know that when someone says the “cloud”, it is really just a&lt;br /&gt;
computer (in reality a gang of computers in a data center). You are solely reliant that these cloud&lt;br /&gt;
providers are not snooping on, inspecting, or even selling your data.&lt;/p&gt;
&lt;p&gt;Of course, some data may not be that sensitive, so maybe you dont care. However with a little bit&lt;br /&gt;
of effort on your part you can at least make it very hard for anyone to know what is inside your&lt;br /&gt;
documents. You can be in control of the way your items are encrypted and have confidence that nobody&lt;br /&gt;
but you can access what is inside your documents.&lt;/p&gt;
&lt;p&gt;Heck, I even encrypt documents that are stored on my own network / computer so that if something&lt;br /&gt;
gets stolen or someone breachs my network they will not be able to easily get to sensitive data.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This article is just meant as an overview of PGP encryption. In future articles I will show you how&lt;br /&gt;
to use it to encrypt your data and be in control of your privacy.&lt;/p&gt;
&lt;h3&gt;Resources&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gnupg.org/"&gt;GnuPG&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.openpgp.org/"&gt;OpenPGP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gpg.wtf/"&gt;gpg.wtf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.ietf.org/rfc/rfc4880.html"&gt;RFC4880&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,78 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in security
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/security/feed.xml" rel="alternate" title="mhoush: articles with tag security" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/pgp-encryption-introduction/">PGP Encryption Introduction</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 04, 2024</span>840 words, posted in <a href="/articles/tag/gnupgp/">GnuPGP</a>, <a href="/articles/tag/pgp/">PGP</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/security/">security</a>
</div>
<p class="mt-4">
<a href="/articles/2024/pgp-encryption-introduction/">In this article I introduce PGP and show a use case for me, which perhaps you can use as well.
What is PGP
PGP stands for Pretty Good Privacy, it was first developed in 1991 by Phil Zimmermann. PGP uses
cryptographic privacy and authentication and is...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/security/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,24 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/software/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link href="http://localhost:3000" rel="self"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2025/vapor-htmx-todo-app/</id>
<title>Vapor + HTMX</title>
<updated>2025-02-19T21:47:31Z</updated>
<summary>Build an example application using Vapor and HTMX.</summary>
<link href="http://localhost:3000/articles/2025/vapor-htmx-todo-app/" rel="alternate"></link>
</entry>
<entry>
<id>http://localhost:3000/articles/2024/free-as-in-freedom/</id>
<title>Free As In Freedom</title>
<updated>2025-02-19T21:39:28Z</updated>
<summary>Salute to open-source software engineers</summary>
<link href="http://localhost:3000/articles/2024/free-as-in-freedom/" rel="alternate"></link>
</entry>
</feed>

View File

@@ -0,0 +1,86 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in software
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/software/feed.xml" rel="alternate" title="mhoush: articles with tag software" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2025/vapor-htmx-todo-app/">Vapor + HTMX</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">January 05, 2025</span>2155 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/programming/">programming</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2025/vapor-htmx-todo-app/">Build an example application using Vapor and HTMX.</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2024/free-as-in-freedom/">Free As In Freedom</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">April 09, 2024</span>1007 words, posted in <a href="/articles/tag/general/">general</a>, <a href="/articles/tag/open-source/">open-source</a> and <a href="/articles/tag/software/">software</a>
</div>
<p class="mt-4">
<a href="/articles/2024/free-as-in-freedom/">Salute to open-source software engineers</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/software/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,84 @@
<feed xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:3000/articles/tag/tech-tip/feed.xml</id>
<title>mhoush</title>
<author>
<name>Michael Housh</name>
</author>
<link rel="self" href="http://localhost:3000"></link>
<updated>2025-02-19T21:55:31Z</updated>
<entry>
<id>http://localhost:3000/articles/2023/most-important-job/</id>
<title>Most Important Job</title>
<updated>2025-02-19T21:21:54Z</updated>
<content type="html">&lt;p&gt;This short tech tip is about something one of my good friends in the trade told me a long time ago,&lt;br /&gt;
that has stuck with me through the years. It is a simple phrase / mindset.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;“The current job youre on, is the most important job of your day”.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This mindset should be carried from the dispatcher, manager, and technician to make this successful.&lt;br /&gt;
Im not gonna lie and say this is always easy, or even always possible, but if you strive to use&lt;br /&gt;
this mindset then you will gain lifelong customers and satisfaction of not having loose ends hanging&lt;br /&gt;
out there.&lt;/p&gt;
&lt;p&gt;I do think its also important to acknowledge that there are times that a technician has exhausted&lt;br /&gt;
all their options, maybe they just dont have the mental capacity anymore to continue with a problem&lt;br /&gt;
job, or need a break to come back another day with a fresh set of eyes, etc… This is also an&lt;br /&gt;
important thing for a technician to realize, and hopefully those type of instances are much more few&lt;br /&gt;
and far between, but I do want to acknowledge that scenario does also exist.&lt;/p&gt;
&lt;p&gt;If you are a business owner, then this is something to consider instilling in your operations.&lt;br /&gt;
Empower your technicians and dispatchers to understand when things need to be shuffled around in&lt;br /&gt;
order to accommodate taking care of the customer at hand. It costs a lot of money to get a&lt;br /&gt;
technician to job, so minimizing truck rolls to the same job is important from a business&lt;br /&gt;
standpoint.&lt;/p&gt;
&lt;p&gt;This was just a quick tech tip of something that has been rolling around in my mind lately. I hope&lt;br /&gt;
you find it helpful and it sticks with you through your career as it has mine.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/calculate-seer-degradation-by-age/</id>
<title>Calculate SEER Degradation by Age</title>
<updated>2025-02-19T21:55:30Z</updated>
<content type="html">&lt;p&gt;This is a quick tech-tip to learn how to calculate the degradation of SEER based&lt;br /&gt;
on age.&lt;/p&gt;
&lt;p&gt;The degradation of SEER is due to fouling of the evaporator coil with dirt and&lt;br /&gt;
refrigerant charge losses. It should be noted that this is not true for all&lt;br /&gt;
applications, but is used as an estimation based on research done by the &lt;code&gt;DOE&lt;/code&gt;&lt;br /&gt;
of the average degradation based on systems tested.&lt;/p&gt;
&lt;h2&gt;Formula&lt;/h2&gt;
&lt;p&gt;This is the formula used to calculate the SEER based on age of the evaporator&lt;br /&gt;
coil / air handler.&lt;/p&gt;
&lt;p&gt;$$ SEER_d = SEER_n \times (1 - M)^{age} $$&lt;/p&gt;
&lt;p&gt;| Where | |&lt;br /&gt;
| | —————————————— | — |&lt;br /&gt;
| $SEER_d$ | Degradated SEER rating |&lt;br /&gt;
| $SEER_n$ | Nominal SEER rating when equipment was new |  |&lt;br /&gt;
| M | Maintenance factor, 0.01-0.03 |&lt;br /&gt;
| age | The age of the equipment, in years |&lt;/p&gt;
&lt;p&gt;The maintenance factor of 0.01 is for expertly maintained equipment and 0.03 is&lt;br /&gt;
for unmaintained. The maintenance factor in essence is based on 1%-3%&lt;br /&gt;
degradation per year, however there are some&lt;br /&gt;
&lt;a href="https://publications.energyresearch.ucf.edu/wp-content/uploads/2018/09/FSEC-PF-474-18.pdf"&gt;studies&lt;/a&gt;&lt;br /&gt;
that show that this can actually be as high as 5% or above depending on climate.&lt;br /&gt;
We could use up to 0.05 as the maintenance factor, just to see what the “range”&lt;br /&gt;
of degradation would be.&lt;/p&gt;
&lt;p&gt;Interestingly, the study linked also shows that the degradation is higher the&lt;br /&gt;
higher the tonnage of the equipment. It also shows that the degradation is lower&lt;br /&gt;
per year the higher the nominal SEER rating of the system (which is corelated to&lt;br /&gt;
using TXVs and lower airflow rates because of the equipment having multiple&lt;br /&gt;
stages).&lt;/p&gt;
&lt;h2&gt;Example&lt;/h2&gt;
&lt;p&gt;Lets consider that we have a 13 SEER piece of equipment that was matched when&lt;br /&gt;
installed and the system is 15 years old.&lt;/p&gt;
&lt;p&gt;Plugging those numbers into our formula.&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Lowest Range (1% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.01)^{15} = 11.2 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;h4&gt;Highest Rage (5% degradation / year)&lt;/h4&gt;
&lt;p&gt;$$ SEER_d = 13 \times (1 - 0.05)^{15} = 6 $$&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;An expertly maintained system may not have degraded that much, with an 11.2 SEER&lt;br /&gt;
vs. a poorly maintained / dirty system that also suffers from refrigerant charge&lt;br /&gt;
losses can be as low as 6 SEER.&lt;/p&gt;
&lt;p&gt;Thanks for learning how to estimate SEER degradation based on equipment age!&lt;/p&gt;</content>
</entry>
</feed>

View File

@@ -0,0 +1,94 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Articles in tech-tip
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
<link href="/articles/tag/tech-tip/feed.xml" rel="alternate" title="mhoush: articles with tag tech-tip" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir articles">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class href="/">Home</a>
</li>
<li>
<a class="active" href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/most-important-job/">Most Important Job</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">December 14, 2023</span>294 words, posted in <a href="/articles/tag/hvac/">HVAC</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p class="mt-4">
<a href="/articles/2023/most-important-job/">This short tech tip is about something one of my good friends in the trade told me a long time ago,
that has stuck with me through the years. It is a simple phrase / mindset.
“The current job youre on, is the most important job of your day”.
This...</a>
</p>
</section>
<section class="mb-10">
<h1 class="text-2xl font-bold mb-2">
<a class="[&:hover]:border-b border-orange" href="/articles/2023/calculate-seer-degradation-by-age/">Calculate SEER Degradation by Age</a>
</h1>
<div class="text-gray gray-links text-sm">
<span class="border-r border-gray pr-2 mr-2">September 19, 2023</span>395 words, posted in <a href="/articles/tag/hvac/">HVAC</a>, <a href="/articles/tag/formulas/">formulas</a> and <a href="/articles/tag/tech-tip/">tech-tip</a>
</div>
<p class="mt-4">
<a href="/articles/2023/calculate-seer-degradation-by-age/">This is a quick tech-tip to learn how to calculate the degradation of SEER based
on age.
The degradation of SEER is due to fouling of the evaporator coil with dirt and
refrigerant charge losses. It should be noted that this is not true for...</a>
</p>
</section>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/tag/tech-tip/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

74
deploy/index.html Normal file
View File

@@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="utf-8"/>
<meta content="#0e1112" media="(prefers-color-scheme: dark)" name="theme-color"/>
<meta content="#566B78" media="(prefers-color-scheme: light)" name="theme-color"/>
<meta content="Michael Housh" name="author"/>
<meta content="Mhoush" name="apple-mobile-web-app-title"/>
<meta content="initial-scale=1.0, width=device-width" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="True" name="HandheldFriendly"/>
<meta content="320" name="MobileOptimized"/>
<meta content="Mhoush" name="og:site_name"/>
<meta content="hvac, developer, swift, home-performance, design" name="keywords"/>
<title>
mhoush: Home
</title>
<link href="/static/favicon.ico" rel="shortcut icon"/>
<link href="/static/output.css" rel="stylesheet"/>
<link href="/static/style.css" rel="stylesheet"/>
<link href="/articles/feed.xml" rel="alternate" title="mhoush" type="application/rss+xml"/>
</head>
<body class="bg-page text-white pb-5 font-avenir home">
<header class="bg-nav text-gray py-4 text-base/6 lg:fixed w-full lg:h-[62px]">
<nav class="container flex gap-x-5 lg:gap-x-y items-center">
<ul class="flex flex-wrap gap-x-2 lg:gap-x-5">
<li>
<a class="active" href="/">Home</a>
</li>
<li>
<a class href="/articles/">Articles</a>
</li>
<li>
<a class href="/about/">About</a>
</li>
</ul>
</nav>
</header>
<div class="container pt-12 lg:pt-28">
<div>
<img alt="Avatar" class="my-24 w-[315px] h-200px mx-auto" src="/static/images/avatar.png"/>
<div class="my-24 uppercase font-avenir text-[40px] leading-[1.25] font-thin text-center [&>h1>strong]:font-bold">
<ul>
<li>HVAC</li>
<li>Design</li>
<li>Programming</li>
<li>Home Performance</li>
</ul>
</div>
</div>
</div>
<div class="site-footer container text-gray gray-links border-t border-light text-center pt-6 mt-8 text-sm">
<p>
Copyright © Michael Housh 2023-2025.
</p>
<p>
Built in Swift using
<a href="https://github.com/loopwerk/Saga" rel="nofollow" target="_blank">Saga</a>
(<a href="https://github.com/m-housh/mhoush.com" rel="nofollow" target="_blank">source</a>).
</p>
<p>
<a href="http://localhost:3000/articles/feed.xml" rel="nofollow" target="_blank">RSS</a>
|
<a href="https://github.com/m-housh" rel="nofollow" target="_blank">Github</a>
|
<a href="https://www.youtube.com/channel/UCb58SeURd5bObfTiL0KoliA" rel="nofollow" target="_blank">Youtube</a>
|
<a href="https://www.facebook.com/michael.housh" rel="nofollow" target="_blank">Facebook</a>
|
<a href="mailto:michael@mhoush.com" rel="nofollow">Email</a>
</p>
</div>
</body>
</html>

BIN
deploy/static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
deploy/static/images/avatar.png LFS Normal file

Binary file not shown.

130
deploy/static/input.css Normal file
View File

@@ -0,0 +1,130 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@import url('https://fonts.cdnfonts.com/css/avenir');
@font-face {
font-family: "Anonymous Pro";
src: local("Anonymous Pro Regular"), url(/static/AnonymousPro-Regular.ttf);
}
/* BODY */
body.home nav {
@apply lg:justify-center;
}
body.home header img {
@apply block lg:hidden;
}
body.home .site-footer {
@apply hidden;
}
body.home .images img {
@apply inline m-5 h-[28px];
}
/* LINKS */
nav a {
@apply block border-b-2 border-transparent;
}
nav a:hover {
@apply border-orange;
}
nav a.active {
@apply border-orange text-white;
}
.gray-links a {
@apply underline text-inherit;
}
.gray-links a:hover {
@apply text-white;
}
a.orange {
@apply text-orange;
}
a.orange:hover {
@apply underline;
}
a[href^="https://github.com"].app {
background: transparent url("images/github.svg") no-repeat;
background-size: 1em 1em;
padding-left: 20px;
}
a[href^="https://itunes.apple.com"].app, a[href^="https://apps.apple.com"].app {
background: transparent url("images/apple.svg") no-repeat;
background-size: 1em 1em;
padding-left: 20px;
}
/* PROSE */
.prose {
@apply prose-code:before:hidden prose-code:after:hidden;
}
.prose code {
@apply font-normal text-base;
}
.prose pre {
@apply shadow-lg shadow-nav;
}
.prose hr {
margin-left: 140px;
margin-right: 140px;
}
.fa-regular {
font-weight: normal;
}
/* SCREENSHOTS */
.screenshots.break_1 span {
@apply flex-1;
}
.screenshots.break_2 span {
@apply flex-[0_0_50%] lg:flex-1;
}
.screenshots.break_3 span {
@apply flex-[0_0_33%] lg:flex-1;
}
.screenshots img {
padding: 3px 3px 0 0;
border-radius: 0px;
margin: 0;
}
.screenshots.rounded img {
border-radius: 10%/4.7%;
}
@media (min-width: 860px) {
.prose pre {
margin-left: -20px;
width: 840px;
padding-left: 20px;
}
body.projects .bg-sub {
margin-left: -20px;
width: 840px;
padding-left: 20px;
}
}

1
deploy/static/output.css Normal file

File diff suppressed because one or more lines are too long

142
deploy/static/prism.css Normal file
View File

@@ -0,0 +1,142 @@
/* PrismJS 1.23.0
https://prismjs.com/download.html#themes=prism&languages=css+clike+javascript+c+objectivec+python+swift */
/**
* prism.js default theme for JavaScript, CSS and HTML
* Based on dabblet (http://dabblet.com)
* @author Lea Verou
*/
code[class*="language-"],
pre[class*="language-"] {
color: black;
background: none;
text-shadow: 0 1px white;
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
font-size: 1em;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-moz-tab-size: 4;
-o-tab-size: 4;
tab-size: 4;
-webkit-hyphens: none;
-moz-hyphens: none;
-ms-hyphens: none;
hyphens: none;
}
pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
text-shadow: none;
background: #b3d4fc;
}
pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
code[class*="language-"]::selection, code[class*="language-"] ::selection {
text-shadow: none;
background: #b3d4fc;
}
@media print {
code[class*="language-"],
pre[class*="language-"] {
text-shadow: none;
}
}
/* Code blocks */
pre[class*="language-"] {
padding: 1em;
margin: .5em 0;
overflow: auto;
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
background: #f5f2f0;
}
/* Inline code */
:not(pre) > code[class*="language-"] {
padding: .1em;
border-radius: .3em;
white-space: normal;
}
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: slategray;
}
.token.punctuation {
color: #999;
}
.token.namespace {
opacity: .7;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.constant,
.token.symbol,
.token.deleted {
color: #905;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.builtin,
.token.inserted {
color: #690;
}
.token.operator,
.token.entity,
.token.url,
.language-css .token.string,
.style .token.string {
color: #9a6e3a;
/* This background color was intended by the author of this theme. */
background: hsla(0, 0%, 100%, .5);
}
.token.atrule,
.token.attr-value,
.token.keyword {
color: #07a;
}
.token.function,
.token.class-name {
color: #DD4A68;
}
.token.regex,
.token.important,
.token.variable {
color: #e90;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}

10
deploy/static/style.css Normal file
View File

@@ -0,0 +1,10 @@
body {
font-family: Helvetica;
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
box-sizing: border-box;
}