This repository has been archived on 2025-02-21. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
swift-mhoush.com/deploy/articles/feed.xml

1655 lines
117 KiB
XML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<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-20T17:12:57Z</updated>
<entry>
<id>http://localhost:3000/articles/2025/vapor-htmx-todo-app/</id>
<title>Vapor + HTMX</title>
<updated>2025-02-20T14:15:37Z</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
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
by a grocery store named, “Ralphs Pretty Goody Grocery” featured in radio hosts Garrison Keillors
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
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
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
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
(uses a session key and a private key). Asymmetrical encryption is more secure but is more resource
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
the key par is meant to be shared with others freely, while the private portion needs to be secured
/ not shared with anyone &lt;strong&gt;EVER&lt;/strong&gt;. It is best practice to generate your keys on a computer that is
“air gapped”, meaning it is not connected to any network / internet, and does not save a history of
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
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
also have multiple “subkeys”, meaning that if you have more than one public email, alias, etc. it
can be tied to your same private key. This is useful for example for work vs. activism vs. software
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
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
encrypted by a trusted source. There are different levels of trust depending on where a key is
retrieved from. For example, if somebody gave you their public key in person and you were able to
inspect that the identity matches their government id, then you can give it a higher trust level
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
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
cases of PGP encryption.&lt;/p&gt;
&lt;p&gt;PGP encryption is used by some email clients / applications, such as
&lt;a href="https://canarymail.io/"&gt;Canary&lt;/a&gt;,
&lt;a href="https://www.thunderbird.net/en-US/thunderbird/115.0/holidayeoy/"&gt;Thunderbird&lt;/a&gt;, or
&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;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
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
that I store in a “cloud” provider. Know that when someone says the “cloud”, it is really just a
computer (in reality a gang of computers in a data center). You are solely reliant that these cloud
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
of effort on your part you can at least make it very hard for anyone to know what is inside your
documents. You can be in control of the way your items are encrypted and have confidence that nobody
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
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
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
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 purposes beyond its original intent. Its also
possible that this setup will break when / if updating the UNVR software. With that said, lets jump
in.&lt;/p&gt;
&lt;p&gt;This post follows along with
&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;,
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
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
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
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
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
on the samba server, we need to change the option under the &lt;code&gt;[homes]&lt;/code&gt; share definition to be
&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
suit your use case, there are decent examples of this in the original reddit post, linked in the
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
work you need the credentials to be stored in your keychain (ticking the box in the step above when
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
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
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
job, overshadowing the intricate skill set and technical expertise required in this field. Labor
jobs are also very important positions needed to keep society running. HVAC, like other skilled
trades, demands a high level of knowledge, precision, and adaptability. This article aims to shed
light on the misconception surrounding HVAC, emphasizing its status as a skilled trade that plays a
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
proficiency required. HVAC professionals must have a deep understanding of thermodynamics, fluid
mechanics, electrical circuits, Psychrometrics and air properties. This knowledge is essential for
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,
ventilation, and air conditioning systems. This task requires not only a thorough understanding of
the physical principles governing HVAC but also the ability to tailor solutions to meet the unique
needs of each space. Proper system design and installation are crucial for achieving optimal energy
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
problem-solving skills. Skilled HVAC technicians possess the ability to identify and rectify
problems efficiently, ensuring minimal downtime and disruption to the comfort of occupants. This
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
continuously being introduced. Skilled HVAC professionals are adaptable and stay abreast of these
advancements. From smart thermostats to energy-efficient systems, they integrate cutting-edge
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
protect both themselves and the occupants of the spaces they work in. Additionally, compliance with
industry regulations and codes is a testament to the skilled nature of the trade, ensuring that HVAC
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
trends and technological advancements. Many pursue certifications and attend training programs to
enhance their skills and expand their knowledge base. This commitment to ongoing education is a
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
perception of a labor job. Labor jobs are also very important to the function of society and I have
proudly done these jobs myself. The technical proficiency, problem-solving abilities, adaptability,
and commitment to safety make HVAC professionals essential contributors to the creation of
comfortable and efficient indoor environments. It is crucial to recognize and appreciate the skill
set inherent in the HVAC trade, as it plays a vital role in shaping the quality of life for
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,
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.
Im not gonna lie and say this is always easy, or even always possible, but if you strive to use
this mindset then you will gain lifelong customers and satisfaction of not having loose ends hanging
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
all their options, maybe they just dont have the mental capacity anymore to continue with a problem
job, or need a break to come back another day with a fresh set of eyes, etc… This is also an
important thing for a technician to realize, and hopefully those type of instances are much more few
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.
Empower your technicians and dispatchers to understand when things need to be shuffled around in
order to accommodate taking care of the customer at hand. It costs a lot of money to get a
technician to job, so minimizing truck rolls to the same job is important from a business
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
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
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 do not come across, so its hard to tell when
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
speak at the HVAC School symposium because of it. They are holding a curse word against me that I
said two years ago, in the moment A) it was fitting and B) it was one of those times that my mouth
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
perfect (well, actually I have but its always a joke). Im not at all condoning what Ive said in
the past, nor will I repeat it out of context now, but I communicate with people like adults and I
look at people as piers. We do not always have to agree with one another, conflict helps us learn
where to grow, but we also can not expect people to change to fit our wants / needs, thats just not
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
in private or out in the open. You can find all my contact / social information in the sidebar of
this website and Ive offered up my cell phone number in private groups that we are all probably a
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
love women, I have no problem with women in the trades, I encourage women who are in the trades. I
try to help every person that I can, if I can. I have failed more times than you can imagine! I am
self taught in about everything I do, so I give of it freely. I have all kinds of work to do to grow
into the man that I should be, but at the same time, I am not afraid to be the man that I am today.
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
someone judging me and having opinions about me, I mean that is our right. I will not say that
person is wrong, because in their mind theyre right. What I will not do is stop being myself. I
know for a fact that Ive helped more people than this person has gotten “cancelled”. I will
continue to help people in the trades, homeowners, or people in need. I also will not remain quiet!
I will give my opinion like it or not. There are people in my corner that really know me and my
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
at how many still do not follow proper practices, etc. even with the capabilities and resources
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
and other inappropriate comments. Thick skin is valuable in the trades, but at the same time dont
be afraid to speak up if something offends you. Remember we are adults, we can handle disagreements
like adults (well, some of us can). Adults can learn from those of any age, they can reflect on
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
foundational beliefs. I hope that we can stop with this “cancel culture” of today, stop hiding
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
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;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
article Id like to take a minute to layout some of the things that give me hope, things that I
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
human. Its just as important to have hope. For some it is a harder thing to focus on, it may be
easy for us to try and dwell in negative feelings, to some that may feel more comfortable. When
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
not the only one who feels the way that I do. This was evident by the feedback on my previous
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.
The times that I feel connected are without a doubt the times that I let go of my ego and focus on
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
back on price, no one telling me how I should run my business, no “the part only costs $x on
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
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
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
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
sense. When a complex topic is understood at a fundamental level. The breakthrough of a problem
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,
there surely will be. This does not mean that you are wrong for having negative feelings, for
feeling depressed or anxious. There are many around you that likely feel similar (they may just not
be able to express it in the same way). You never truly know what the person next to you is dealing
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
thankful for. Maybe my non-exhaustive list above will give you some ideas. Write those items down
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.
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
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
Im doing it now. I did discuss this on
&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
common in most areas. The designs tend to be elegant and the flexibility is unparalleled by most
equipment choices currently available in the U.S. Im going to try to not get too far into the weeds
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
heat-pump or reverse cycle chiller that can only operate in one mode at a time. This system would
have a second refrigerant to water heat exchanger and utilize the air-source when we dont need to
bank / store heat, or are running in heat only mode. There are several benefits to this style
system, the main being that while operating simultaneous heating / cooling mode the COP of the
system doubles. For example, the &lt;a href="https://multiaqua.com/mhrc2/"&gt;Multi-Aqua MHRC2&lt;/a&gt; shows a COP of
about 8, which is approximately equivalent to 30 EER or 34 SEER. This gives us geothermal level
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.
The buffer tanks give us several benefits, including longer run times for the chiller, load
matching, and the ability to size for larger load (heating or cooling) without some of the problems
that occur when over-sizing a traditional system. The buffer tanks also allow sizing more
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
circulate water through the chiller, while the vertical pumps are what distribute the water to the
load / emitters. This configuration allows for water to be used for the loads first and extra
capacity to go into the buffer tanks. The buffer tanks also offer hydraulic separation for the pumps
(meaning that they wont interfere with each other if / when there are different flow rates).
Another advantage of the buffer tanks is that you can connect multiple heating or cooling sources in
parallel to the system. This is shown by the extra tees in the hot buffer tank where we could
connect something such as solar water collectors, pellet or wood boiler, or a conventional boiler.
Youll also notice on the right side of the hot buffer tank, that I am showing a brazed plate heat
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,
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
one package. With a hydronic system, it would be very easy to load match by controlling the fan
speed and utilizing a Delta-T pump or outdoor reset controls. These air handlers are available from
several manufacturers and come in different styles from traditional (as shown), small duct high
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
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
main points is to think of the system in 3 distinct components, the source(s), thermal storage, and
distribution. As mentioned, this only one concept, but in reality, there are many ways to accomplish
this, which is one of its advantages. For example, perhaps in certain scenarios it makes sense to
dump excess heat into a pool, create ice storage during off peak hours, cascade into another water
-&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
converted to other formats, such as &lt;strong&gt;html, pdf, docx&lt;/strong&gt;, and many more. All the articles written on
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
content with simple concepts for formatting. Markdown is used heavily in documenting software
projects, which is how I got introduced to it, however it can scale all the way up to writing
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,
web / software documentation, and so on. It allows me to get content out quickly without having to
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
the reports and things I generate for my &lt;strong&gt;Home Performance Assessments&lt;/strong&gt; are written using
&lt;strong&gt;Pages&lt;/strong&gt; (for now at least) because I have templates that make the documents look more
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
(which is one of my least favorite tools, BTW). It makes it simple to create tables, lists, and many
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;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 /
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
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
/ 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
in Florida during my life / memory, but has always come to visit. She is my moms oldest sister (9
years apart), so she helped raise my mother growing up. Theyve always had a close relationship and
are like two peas in a pod. They would always visit us, especially while my grand-parents were still
alive. She is currently not really awake or expected to make it. She does not eat / drink and
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,
but he had surgery to fuse some discs back together and should eventually be ok, however it will be
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 /
asking about the fireplaces, which caused lord knows how much damage from the soot that was spread
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
spent many years masking things through alcohol abuse and many other idiotic tendencies. I still
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
let down. I guess I struggle sometimes with the reality of online relationships. I think that people
are genuine, because Im that way (how I act online is the same as I act in person for the most
part). I will happily show / share the good and the bad, in hopes that someone may learn. This is
not at all something to be ashamed of, or anything that Id like to change, however it does on
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
to. I can sometimes put things out of my mind, but when Im spinning, they will resurface. I want to
forgive people, but it is just not the way it works for me often times. It takes a lot to get me
beyond my breaking point, but once someone has gotten me there, there is likely no turning back for
that person. Luckily, I can count on one hand the number of folks that Ive had to cut out of my
life for these reasons. Id love to say that Im a bigger / better person, that I forgive them, but
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
of regret around these things, because I generally mean what I say, and also feel we are entitled to
opinions as well as entitled to change those opinions as often as we see fit. Although I dont
regret them per-se, it does make me wonder what type of impression it leaves (something for future
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
people think about me. This often leads to fear and anxiety, especially in social settings. Im not
the greatest at conversation, Im better at writing or some interaction that gives me a bit of time
to think before responding. Therefore, Im quick to make a joke or something rather than having
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
distant nowadays, even though we have more opportunity than ever. We call ourselves part of
communities, especially online, but Im not convinced that it is really community (or at least not
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
and feel they would do anything for me, just like my real life friends who have stuck with me for
many years. These are people that challenge me and how I think on a regular basis. They do their
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
relationships we do have are not genuine, but thats awfully cynical. I prefer to give people the
benefit / trust they deserve until, at least until they dont then see my part about holding grudges
;)&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
trying to share a little bit of what I feel community should be. Although, Ive never met HVAChicks
Jennifer in real life, I read today about her mom and decided to take an hour or so to put together
a website for the &lt;a href="https://hvachicks.com"&gt;HVAChicks Community&lt;/a&gt;, hoping it would bring a moment of
happiness to her day. While Ive deployed several websites in the past, this one for some reason was
a total PITA, but I got through it. I could feel how grateful she was when I shared it with her (and
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
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
commitment to the HVAC industry is something that I hope he himself is proud of. Without Bryan,
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
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
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,
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
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
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
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
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,
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
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
and tomorrow!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/free-quotes-are-bad-for-the-industry/</id>
<title>Free quotes != good</title>
<updated>2025-02-20T15:56:18Z</updated>
<content type="html">&lt;p&gt;I found myself re-reading the
&lt;a href="https://www.acca.org/communities/community-home/librarydocuments/viewdocument?DocumentKey=b1d2a39d-fda8-4af9-b8de-0ae579bfe24a"&gt;ACCA Quality Installation Standard&lt;/a&gt;
recently and it got me thinking about the industries tendency of offering free quotes. In this article, Id like to just focus in on the
items that are required as what Im calling “prior to installation” items.&lt;/p&gt;
&lt;h2&gt;Prior to installation&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Ensure ventilation calculations are performed.&lt;/li&gt;
&lt;li&gt;Building heat gain / loss calculation (Manual-J / Manual-N)
&lt;ol&gt;
&lt;li&gt;Room x room for new construction or duct modifications.&lt;/li&gt;
&lt;li&gt;Block load for existing (can use original if available).&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Proper equipment capacity selection (Manual-S / Manual-CS)&lt;/li&gt;
&lt;li&gt;Properly matched systems (AHRI or CEE-AHRI)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lets break the above items down to a rough estimated time to complete each of the items.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Time (minutes)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ventilation calculations&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual-J (data gathering)&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual-J (data entry / calculation)&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual-S&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AHRI&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;105&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The above items are obviously just estimations and the persons experience in the different areas / tools they use. Some of the items are
probably on the low side while others are probably on the high side.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is 1.75 hours just to do the calculations required to meet the QI Standard. This does not include any of the time spent with the
customer building value in you or your product recommendations.&lt;/p&gt;
&lt;p&gt;When you want to not guess at some of the calculations then a blower door test is generally required in order to understand the leakage of
the home, which adds even more time to the estimation process. Depending on the understanding you are looking for, the blower door test can
add 30-180 minutes. This takes the total time to 2.25-4.75 hours.&lt;/p&gt;
&lt;h2&gt;Pushing boxes&lt;/h2&gt;
&lt;p&gt;The majority of residential HVAC companies make the bulk of their income off of equipment sales, so they have to “feed the beast” by
skipping steps in both the installation of equipment and the sales process in order to close jobs and keep the ship afloat.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-10-04-sinking-boat.png" alt="sinking-boat" /&gt;&lt;/p&gt;
&lt;p&gt;This has helped contribute to these industry statistics:&lt;a href="DOE" title="2018"&gt;^1&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Incorrect refrigerant charge in greater than 50-80% of systems.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Improper airflow:&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;70% above the rated 0.5” w.c.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;47% above 0.7” w.c.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;85% undersized / inappropriate filter.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;70-80% of systems have at least one fault.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;90-100% if duct leakage is considered.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Consumer responsibility&lt;/h2&gt;
&lt;p&gt;Let me be clear, I dont think that all the blame is on the industry here. The culture today is that everyone wants things for free and
fast. They have been conditioned by online services and box stores. Should we not cater to those that arent willing to do their leg work?
Is it really our fault, if they dont care?&lt;/p&gt;
&lt;h2&gt;Liability&lt;/h2&gt;
&lt;p&gt;While its generally easy to shrug our shoulders and think that its ok to just continue on because all the competitors are doing the same
thing. There is at least the possibility that skipping steps can come back to bite you. If things ever went to litigation and the steps
outlined in the QI Standard are ignored, then there is high odds you would loose.&lt;/p&gt;
&lt;p&gt;No matter what you do to try and protect yourself (having customers sign-off, etc) does not adequately protect your company from litigation.
There are stories out there where contractors were still held liable for not performing load calculations even though the consumer signed
off on it, because it is not inline with “industry best practices.”&lt;/p&gt;
&lt;h1&gt;Summary&lt;/h1&gt;
&lt;p&gt;This has led me to the conclusion that free quotes are just bad for the industry in general. The path forward is a challenge (changing
perception is hard). I dont know that I have answers on what the best path forward is, to be frank, but I do know that our current &lt;em&gt;status
quo&lt;/em&gt; is subpar to say the least.&lt;/p&gt;
&lt;p&gt;Unfortunately, I dont think the change is going to come from the industry, but that its going to require the consumer base to be more
educated and demand more from the industry. There have been many organizations that have dedicated years to changing the skill levels of
technicians in the industry, they are very well needed / dont mistake my words here, however unless a company has faced litigation or
facing requests on a regular basis that demand better results, then why would a company change!?!&lt;/p&gt;
&lt;p&gt;Ive been trying (unsuccessfully) to get rid of free quotes for 5+ years in my company. We try to educate customers during maintenance
visits and when scheduling equipment estimates, however only about 10-20% choose to go down our paid Home Performance Assessment path. Our
installation process does follow the QI Standard for the items that pertain to the setup / commissioning of the installed equipment, however
there is just no sustainable way for us to completely follow the items outlined in this article without charging for our time, because at
the end of the day we still have to be competitive in our market.&lt;/p&gt;
&lt;p&gt;There are days that I can justify our actions to myself and also days that I just want to throw in the towel / not sacrifice our integrity.
Integrity is something that I take very seriously, after all our companies tag line is &lt;em&gt;“Since 1954, Integrity is in the Housh!”&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;As mentioned, Im not sure what the best path forward is! I hate to not have answers, but some problems are just complex and somewhat beyond
our control.&lt;/p&gt;
&lt;p&gt;Let me know what you think some good solutions are.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Does your company follow the QI Standard?&lt;/li&gt;
&lt;li&gt;What are resources that youve found helpful in educating your customers?&lt;/li&gt;
&lt;/ul&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/introduction-to-programming-for-hvac-4/</id>
<title>Introduction to Programming for HVAC Part-4</title>
<updated>2025-02-20T16:31:35Z</updated>
<content type="html">&lt;p&gt;This article builds upon our &lt;a href="https://mhoush.com/posts/introduction-to-programming-for-hvac-3/"&gt;last&lt;/a&gt; article, so make sure to catch up
before continuing with this article.&lt;/p&gt;
&lt;h2&gt;Arguments&lt;/h2&gt;
&lt;p&gt;Before we start creating our program that will remove the background from images lets go over arguments in shell scripts. Arguments are
supplied to shell scripts are separated by a space &lt;code&gt;&amp;quot; &amp;quot;&lt;/code&gt;, as opposed to options which start with a &lt;code&gt;-&amp;lt;character&amp;gt;&lt;/code&gt; or &lt;code&gt;--&amp;lt;word&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;To illustrate this, lets change our &lt;code&gt;hello-world&lt;/code&gt; script we wrote in the last article.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Move into our scripts directory:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd ~/.local/bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Make a copy of the hello-world script:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cp hello-world greet
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Above we make a copy of the hello-world file and name the copy &lt;code&gt;greet&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open the greet file:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;open -a TextEdit greet
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Because the greet file is an executable, in order to open it in the &lt;code&gt;TextEdit&lt;/code&gt; application we must supply the &lt;code&gt;-a&lt;/code&gt; option.
Otherwise it will just run our &lt;code&gt;greet&lt;/code&gt; program in another terminal. Use &lt;code&gt;man open&lt;/code&gt; to read more about the open command.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Edit the greet file:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;#!/bin/sh
echo &amp;quot;Hello, ${1}!&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Make sure to save &lt;code&gt;⌘s&lt;/code&gt; the file.&lt;/p&gt;
&lt;p&gt;Take note that the quotes need to be changed to &lt;code&gt;&amp;quot;&lt;/code&gt; (double quotes) from our original &lt;code&gt;hello-world&lt;/code&gt; program.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;${1}&lt;/code&gt; is indicating that we will insert / interpret the first argument passed to our program and insert it at that location. Arguments
are interpreted in order they are passed in with &lt;code&gt;${0}&lt;/code&gt; always representing the filename of the program that is called (generally not needed
/ used in your scripts).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Test it out:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./greet Michael
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-26-greet-output.png" alt="greet-output" /&gt;&lt;/p&gt;
&lt;p&gt;If youd like to supply multiple words (or arguments that contain spaces) as a single argument then you can wrap them in quotes.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./greet &amp;quot;Michael Housh&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Wrapping in quotes is especially useful for commands that take file paths, if any of the folders or file names contain spaces.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;More Useful Program&lt;/h2&gt;
&lt;p&gt;At this point, its time to build a more useful program that we can use. First, we must download some dependencies for our program.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Install imagemagick:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew install imagemagick
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If youd like to check out the documentation / website for imagemagick you can run &lt;code&gt;brew home imagemagick&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This will take a bit for brew to install imagemagick and its dependencies. When its completed, we can check to make sure that imagemagick
is installed by running the following command.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;magick --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It should output something along the lines of this below.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;Version: ImageMagick 7.1.1-17 Q16-HDRI aarch64 21569 https://imagemagick.org
Copyright: (C) 1999 ImageMagick Studio LLC
License: https://imagemagick.org/script/license.php
Features: Cipher DPC HDRI Modules OpenMP(5.0)
Delegates (built-in): bzlib fontconfig freetype gslib heic jng jp2 jpeg jxl lcms lqr ltdl lzma openexr png ps raw tiff webp xml zlib
Compiler: gcc (4.2)
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Dont forget, you can use the &lt;code&gt;clear&lt;/code&gt; command to clear the terminal.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Create our script:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;touch mktrans
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We are going to name our script &lt;code&gt;mktrans&lt;/code&gt; as a short for make transparent.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open the file:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;open mktrans
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;The program:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;#!/bin/bash
# The input file path, passed in as the first argument.
inputfile=&amp;quot;${1}&amp;quot;
# The color to make transparent, optionally passed in as the second argument.
# by default we handle / make white backgrounds transparent.
color=&amp;quot;${2:-white}&amp;quot;
# Use the built-in basename command to normalize the input file name
# this will convert a file path, such as ~/Pictures/my-image.png to my-image.png.
fullfilename=$(basename -- &amp;quot;$inputfile&amp;quot;)
# Use the text of the `fullfilename` up to the first '.' as the file name.
filename=&amp;quot;${fullfilename%%.*}&amp;quot;
# Use the text after the last '.' as the file extension.
extension=&amp;quot;${fullfilename##*.}&amp;quot;
# Create the output file name to use.
#
# For an input file of `input.png`, our output name would be
# `input-transparent.png`.
#
# This will output the file in the directory that we are
# in when we use our script (which may different than where
# the image is located)
outputfile=&amp;quot;${filename}-transparent.${extension}&amp;quot;
# Make the magick happen :)
convert &amp;quot;${inputfile}&amp;quot; -fuzz 10% -transparent &amp;quot;${color}&amp;quot; &amp;quot;${outputfile}&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ive included comments in the program above, which is good practice, as there is high odds that you will forget what is going on when / if
you open the file up in the future to look at it. We are using a lot of what is called parameter expansion magic in this file. You can read
up more on what we are doing in the &lt;a href="https://www.gnu.org/software/bash/manual/html_node/Shell-Parameter-Expansion.html"&gt;bash documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This script is far from perfect, there are a lot of things to be improved upon. For example, if you download / save the banner image of this
post and run this script, it will also remove some color in the wizards beard, eyes, and eye brows. However, it does work very well for my
general use case, which is to remove the background from screenshots of pdf documents. It should be noted that it will not work on all types
of images, some image types do not allow transparency, so it is safest to call this with input image being a &lt;code&gt;.png&lt;/code&gt; image type, however you
can use the &lt;code&gt;imagemagick&lt;/code&gt; program that we downloaded to convert other image types to &lt;code&gt;.png&lt;/code&gt;, but that will be left up to you to figure out.&lt;/p&gt;
&lt;h2&gt;Using Our Program&lt;/h2&gt;
&lt;p&gt;This is going to assume that you have download the banner image at the top of this article. You can do this by right-clicking and choosing
&lt;code&gt;Save As&lt;/code&gt;. This should save the image in your downloads folder, and you can keep the name of &lt;code&gt;part4-banner.png&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Make the program executable:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;chmod u+x mktrans
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Make the image background transparent:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./mktrans ~/Downloads/part4-banner.png
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Open the image:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;open part4-banner-transparent.png
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It should look like below.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-26-part4-banner-transparent.png" alt="banner-transparent" /&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you are viewing this site in &lt;em&gt;light&lt;/em&gt; mode, the image does not look that bad. Hit the moon button in the top above my profile
image to see some of the flaws of our program.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Remove the image from the &lt;code&gt;~/.local/bin&lt;/code&gt; by using &lt;code&gt;rm part4-banner-transparent.png&lt;/code&gt;. Be aware that the &lt;code&gt;rm&lt;/code&gt; command can not be
undone, so use with caution / knowledge. It is safer, until you are more comfortable to use the &lt;code&gt;Finder&lt;/code&gt; application and move the file to
the trash. In &lt;code&gt;Finder&lt;/code&gt;, you can show hidden directories by typing &lt;code&gt;⌘.&lt;/code&gt; or go directly to the folder by typing &lt;code&gt;⇧⌘G&lt;/code&gt; (shift + command + G)
and in the pop-up typing &lt;code&gt;~/.local/bin&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr /&gt;
&lt;p&gt;That is it for this article. In the upcoming articles we will setup our &lt;code&gt;shell&lt;/code&gt; environment so that we can use the commands weve built
without having to navigate to the &lt;code&gt;~/.local/bin&lt;/code&gt; directory. Thank you for reading to the end, I hope youre finding this series helpful.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/introduction-to-programming-for-hvac-3/</id>
<title>Introduction to Programming for HVAC Part-3</title>
<updated>2025-02-20T16:20:56Z</updated>
<content type="html">&lt;p&gt;In this article we will put together some of the pieces from the last 2 articles, and build our first program. If you have missed the first
articles, then you can catch up &lt;a href="https://mhoush.com/series/programming-for-hvac/"&gt;here&lt;/a&gt; before continuing with this article.&lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;We are going to make our first script / program. This first program is really just setting up some building blocks for our next program we
will write, that will remove the background from an image.&lt;/p&gt;
&lt;h3&gt;Creating a scripts directory&lt;/h3&gt;
&lt;p&gt;We learned in the &lt;a href="https://mhoush.com/posts/introduction-to-programming-for-hvac-1/"&gt;first article&lt;/a&gt; how to use our terminal. Today we are
going to use some of the commands we learned to create a directory where we can store our script and future scripts that we write.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Create a directory&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;mkdir -p ~/.local/bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above command will create a “hidden” directory in your home folder. We can go ahead and move into the directory we just created.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The &lt;code&gt;-p&lt;/code&gt; option allows us to create nested directories if the parent directory doesnt exist.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd ~/.local/bin
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Hello World&lt;/h3&gt;
&lt;p&gt;It is common in programming to start out with a “Hello World” program when learning a new scripting paradigm. So lets jump in and get
started.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creating our script file:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;touch hello-world.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Now open the file:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;open hello-world.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above command should open the file in the &lt;code&gt;TextEdit&lt;/code&gt; application. In order to make the text edit application to not auto-capitalize
words and play more nicely, we need to adjust some settings. Open the settings by pressing &lt;code&gt;⌘,&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the &lt;strong&gt;Format&lt;/strong&gt; section, select &lt;em&gt;Plain text&lt;/em&gt; and in the &lt;strong&gt;Options&lt;/strong&gt; section de-select &lt;em&gt;Check spelling as you type&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-24-text-settings.png" alt="text-settings" /&gt;&lt;/p&gt;
&lt;p&gt;At this point for changes to take place, you will need to close the file and re-open.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; In your terminal you can run the last command in your history by using the &lt;code&gt;&lt;/code&gt; (Up) arrow key.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now that the file is open again, we will write our hello-world program. The contents of your file should look like the following:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;#!/bin/sh
echo 'Hello World!'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The first line is referred to as the &lt;code&gt;shebang&lt;/code&gt;, this tells your computer which shell interperter to run your file. I have not explained the
shell yet, but it currently would just muddy the waters a bit, but there are several shell interperters on your computer with the &lt;code&gt;sh&lt;/code&gt; posix
shell being one of the most universal / lowest level ones, which is why Im choosing this one (in other words this script would work on just
about any machine you were on).&lt;/p&gt;
&lt;p&gt;The second line we are using the built-in &lt;code&gt;echo&lt;/code&gt; command and passing it the Hello World! argument.&lt;/p&gt;
&lt;p&gt;Now save and close the file &lt;code&gt;⌘s&lt;/code&gt; (to save) &lt;code&gt;⌘q&lt;/code&gt; (to quit the text edit application).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Run the program from your terminal:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;/bin/sh hello-world.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see that &lt;code&gt;Hello World!&lt;/code&gt; was printed to your console.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-24-hello-output.png" alt="hello-output" /&gt;&lt;/p&gt;
&lt;h3&gt;Make Executable&lt;/h3&gt;
&lt;p&gt;Now that we have our basic script working, lets make it an executable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In your terminal, type the following:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;chmod u+x hello-world.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will change the mode of the file type to be an executable.&lt;/p&gt;
&lt;p&gt;Now move / rename the file so we dont have to call it using &lt;code&gt;.sh&lt;/code&gt; extension:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;mv hello-world.sh hello-world
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that the file is executable, we can execute it by just calling the name of the file.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;./hello-world
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; We have to prefix the file name with &lt;code&gt;./&lt;/code&gt; in the above command so that it knows where to find our file. The &lt;code&gt;./&lt;/code&gt; is saying run
this file in our current directory. In the future we will setup our shell so that it knows to look in our &lt;code&gt;~/.local/bin&lt;/code&gt; directory for
scripts, so that we can call them without this prefix.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Congratulations, in this article we wrote our first program. We learned how to edit the file, set its permissions, and execute the program
from our terminal. I should mention that the &lt;code&gt;TextEdit&lt;/code&gt; application is generally not how you would program, people typically use what is
known as an &lt;code&gt;IDE (integrated development environment)&lt;/code&gt;, however I chose to use the &lt;code&gt;TextEdit&lt;/code&gt; application because it is built-in to &lt;code&gt;macOS&lt;/code&gt;
and allowed us to accomplish our goal without downloading other software.&lt;/p&gt;
&lt;p&gt;In our upcoming articles, we will write a program that I hope is useful to you / something that you can build upon and use for a long time.
Thank you for reading to this point.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/introduction-to-programming-for-hvac-2/</id>
<title>Introduction to Programming for HVAC Part-2</title>
<updated>2025-02-20T16:16:09Z</updated>
<content type="html">&lt;p&gt;In this article, learn about installing a package manager. If you missed it, check out the
&lt;a href="https://mhoush.com/posts/introduction-to-programming-for-hvac-1/"&gt;first&lt;/a&gt; article in the series where we learned about using your terminal.
This article builds upon that foundation.&lt;/p&gt;
&lt;h2&gt;What is a Package Manager&lt;/h2&gt;
&lt;p&gt;A package manager is a piece of software that helps to install software and manage updates for your system. For me, the first thing that I
do with a new machine is install &lt;code&gt;Homebrew&lt;/code&gt;. &lt;a href="https://brew.sh"&gt;Homebrew&lt;/a&gt; is my preferred package manager for &lt;code&gt;macOS&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Why&lt;/h2&gt;
&lt;p&gt;A package manager is nice because often software relies / requires other dependencies in order to work properly. By using a package manager
it will make sure that the correct dependencies are installed for the software that you need to run. It allows you to be able to update and
manage software through a centralized interface.&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;Installation is simple. Open up your terminal and enter the following command (easiest to just copy / paste from the homepage linked above).&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;/bin/bash -c &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will prompt you for your password in order to create some directories and install the required software for &lt;code&gt;brew&lt;/code&gt; to work. The
installation may take some time, while it downloads the command line tools for &lt;code&gt;Xcode&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;When completed, follow the &lt;code&gt;Next Steps&lt;/code&gt; and copy / paste the command listed, that should look like below.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;(echo; echo 'eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;') &amp;gt;&amp;gt; /Users/&amp;lt;you&amp;gt;/.zprofile
eval &amp;quot;$(/opt/homebrew/bin/brew shellenv)&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-22-brew-output.png" alt="brew-output" /&gt;&lt;/p&gt;
&lt;p&gt;The first line of this command sets up some things in your shell profile (which we have not discussed yet) that will make &lt;code&gt;Homebrew&lt;/code&gt;
available to you anytime you start a new session in your terminal. The second line of the command makes it available in your current
terminal session.&lt;/p&gt;
&lt;p&gt;Next run the following command and make sure that everything is setup correctly.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew doctor
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Which should output the following:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Your system is ready to brew.
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Terminology&lt;/h3&gt;
&lt;p&gt;Homebrew calls command line applications &lt;code&gt;formula&lt;/code&gt; and normal graphical applications &lt;code&gt;casks&lt;/code&gt;. It has the ability to install both styles of
applications.&lt;/p&gt;
&lt;h2&gt;Search Command&lt;/h2&gt;
&lt;p&gt;The following command is used to search for software packages:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew search chrome
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Open a Homepage&lt;/h2&gt;
&lt;p&gt;The following command can be used to view the homepage of a formula or cask in your browser:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew home google-chrome
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Update Homebrew&lt;/h2&gt;
&lt;p&gt;The following command is used to update homebrew:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew update
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Update packages installed on your system&lt;/h2&gt;
&lt;p&gt;The following command is used to update software that is installed / managed by homebrew.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can combine the update and upgrade commands, which will update homebrew and upgrade all the software it manages on you machine with the
following command.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew update &amp;amp;&amp;amp; brew upgrade
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;That is it for this article. I will say that for me, when I find a piece of software that I want to use, I generally try to search for it in
&lt;code&gt;brew&lt;/code&gt; first, before installing it via other means.&lt;/p&gt;
&lt;p&gt;I hope youve found this article helpful. In the next article we will start to use the skills that weve learned in these first two articles
and write our first program / script.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/introduction-to-programming-for-hvac-1/</id>
<title>Introduction to Programming for HVAC Part-1</title>
<updated>2025-02-20T16:12:06Z</updated>
<content type="html">&lt;p&gt;This is part one of a series of articles to help HVAC technicians (or others) get started in developing their skills to program. This can
help to automate everyday tasks or just familiarize themselves with some of the tools used by programmers.&lt;/p&gt;
&lt;h2&gt;Why&lt;/h2&gt;
&lt;p&gt;I think if nothing else, this series can help gain knowledge, tips, and tricks to make you more comfortable with your computer. I hope that
you will at least learn how to use your &lt;code&gt;terminal&lt;/code&gt; application and more specifically &lt;code&gt;vim&lt;/code&gt; motions and keybindings (more on that in another
article).&lt;/p&gt;
&lt;p&gt;The goal of this article is to just get a machine setup with tools and to start exploring. I am a shill for &lt;code&gt;macOS&lt;/code&gt;, so all of these will be
specifically geared towards that and my workflows, most everything that is showcased should also work on &lt;code&gt;linux&lt;/code&gt; machines (not sure about
&lt;code&gt;windows&lt;/code&gt;), although you may have to search for specific instructions on installing software for other platforms.&lt;/p&gt;
&lt;p&gt;What I have learned on my journey in programming is that the more you can lean on small software packages that focus on a single task, but
do them well, the better. The less you use your mouse, the more productive you can be. The more you can work with &lt;code&gt;text&lt;/code&gt; files and formats
the more portable and transformable your workflows can be.&lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;The first thing that we will focus on is becoming familiar with the terminal application. On macOS the terminal application is located at
&lt;code&gt;/Applications/Utilities/Terminal.app&lt;/code&gt;. However, rather than click around to find it, you can use the &lt;code&gt;&amp;lt;space&amp;gt;&lt;/code&gt; to pull up your spotlight
search, then type &lt;code&gt;Terminal&lt;/code&gt; to select the terminal application.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-21-spotlight.png" alt="spotlight" /&gt;&lt;/p&gt;
&lt;h3&gt;Terminal Overview&lt;/h3&gt;
&lt;p&gt;Your terminal is a program that allows you to run programs by typing commands into its window. There are a lot of built-in commands and a
bunch that you can install. The terminal is very customizable (and once familiar, you will constantly be tweaking / adjusting to suit your
needs). Right now customization is not what we will focus on, however in future articles I will provide tips and tricks on customizing it.
Right now, we only need to know how to open it up and type in commands.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-21-terminal.png" alt="terminal" /&gt;&lt;/p&gt;
&lt;p&gt;Below is an image / explanation of what the default status line includes.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-21-terminal-line.png" alt="terminal-line" /&gt;&lt;/p&gt;
&lt;h3&gt;Learn Basic Commands (Built-in)&lt;/h3&gt;
&lt;p&gt;Here are a few basic commands that you should familiarize yourself with, as you will use them often when working inside of a terminal.&lt;/p&gt;
&lt;h3&gt;Change Directory&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;cd&lt;/code&gt; (change directory) is the command that allows you to move around your file system when inside the terminal.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;~&lt;/code&gt; is a representation of your &lt;code&gt;Home&lt;/code&gt; directory.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd ~/Documents
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above command will move you into your Documents directory.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If there are spaces in the name of the directory you try to move to then the easiest way is to wrap the name in quotes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd &amp;quot;~/Documents/Product Concepts&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Some other things to understand when moving around / supplying arguments to the &lt;code&gt;cd&lt;/code&gt; command.&lt;/p&gt;
&lt;p&gt;You can use &lt;code&gt;..&lt;/code&gt; to go backwards / move up to the parent directory. For example, say we are in the &lt;code&gt;~/Documents&lt;/code&gt; directory, to go back up to
the home directory we could use the following:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd ..
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These can be chained together as well. For example say we are located in the &lt;code&gt;~/Documents/Product Concepts&lt;/code&gt; directory, we could use the
following to go up two directory levels back to the home directory.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd ../..
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Pro-Tip:&lt;/strong&gt; You can use the &lt;code&gt;&amp;lt;tab&amp;gt;&lt;/code&gt; key when navigating to auto-complete, generally typing a few characters followed with the &lt;code&gt;&amp;lt;tab&amp;gt;&lt;/code&gt; key
will auto-complete for you.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;List files&lt;/h3&gt;
&lt;p&gt;Use &lt;code&gt;ls&lt;/code&gt; to output a list of files and directories where you are located.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;Example Output when in my ~/Documents directory&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;Estimates.app
InkscapeDrawings
KwikModel
MyAparment
NCISummit
Personal
Product Concepts
Receipts.receipts
RingCentral
SketchUP
Tech-Tips
desktop.ini
espanso-migrate-backup
espanso-migrate-backup-2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Using options with &lt;code&gt;ls&lt;/code&gt; to show more statistics and hidden files. There are often hidden files on your computer that are used for
application support or other purposes, these files are not shown using the default command. Hidden files start with a &lt;code&gt;.&lt;/code&gt;, below is an
example of showing hidden files in your home directory.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;ls -la ~/
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Above I added the &lt;code&gt;~/&lt;/code&gt; which will allow you to list the files in your home directory even if you currently are not there in your
terminal, if you were already there (for example by using &lt;code&gt;cd ~/&lt;/code&gt; then you would not need to use that at the end of the command.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Example Output&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;total 168
drwxr-xr-x+ 46 michael staff 1472 Sep 22 10:45 .
drwxr-xr-x 6 root admin 192 Sep 22 09:08 ..
-r-------- 1 michael staff 7 Apr 8 2021 .CFUserTextEncoding
-rw-r--r--@ 1 michael staff 14340 Sep 18 10:15 .DS_Store
drwx------+ 5 michael staff 160 Sep 20 17:03 .Trash
-rw-r--r-- 1 michael staff 186 Sep 12 15:20 .actrc
drwxr-xr-x 4 michael staff 128 Dec 13 2021 .bin
drwxr-xr-x 3 michael staff 96 Mar 6 2023 .bundle
drwxr-xr-x 7 michael staff 224 Sep 12 11:40 .cabal
drwxr-xr-x 7 michael staff 224 Sep 12 15:20 .cache
drwxr-xr-x 13 michael staff 416 Aug 10 08:47 .config
drwx------ 3 michael staff 96 Jun 21 2021 .cups
drwxr-xr-x 12 michael staff 384 Sep 15 15:22 .docker
drwxr-xr-x 20 michael staff 640 Sep 19 08:11 .dotfiles
drwxr-xr-x 4 michael staff 128 Jul 26 2021 .gem
drwxr-xr-x 3 michael staff 96 Oct 11 2021 .jssc
-rw------- 1 michael staff 20 Sep 22 10:45 .lesshst
drwxr-x--- 3 michael staff 96 Mar 29 08:47 .lldb
drwxr-xr-x 8 michael staff 256 Mar 1 2023 .local
drwxr-xr-x 4 root staff 128 Apr 12 2021 .newtek
drwxr-xr-x 5 michael staff 160 Dec 13 2021 .npm
-rw------- 1 michael staff 27436 Apr 10 10:21 .psql_history
drwxr-xr-x 7 michael staff 224 Apr 18 2022 .ssh
drwxr-xr-x 6 michael staff 192 Sep 21 09:06 .swiftpm
lrwxr-xr-x 1 michael staff 25 Dec 27 2021 .tmux.conf -&amp;gt; .dotfiles/tmux/.tmux.conf
drwxr-xr-x 8 michael staff 256 Mar 27 16:14 .twilio-cli
drwxr-xr-x 6 michael staff 192 Sep 18 11:08 .vim
-rw------- 1 michael staff 23086 Sep 21 09:45 .viminfo
-rw-r--r-- 1 michael staff 254 Sep 21 09:32 .wget-hsts
lrwxr-xr-x 1 michael staff 43 Jan 3 2022 .zshenv -&amp;gt; /Users/michael/.dotfiles/zsh/config/.zshenv
drwxr-xr-x 8 michael staff 256 Dec 14 2021 AmazonWorkDocsCompanion
drwx------@ 4 michael staff 128 Dec 13 2021 Applications
lrwxr-xr-x 1 michael staff 40 Jun 6 12:00 Applications (Parallels) -&amp;gt; /Volumes/Bucket/Applications (Parallels)
drwx------@ 30 michael staff 960 Sep 21 08:54 Desktop
drwx------@ 19 michael staff 608 Sep 14 10:15 Documents
drwx------@ 21 michael staff 672 Sep 21 09:43 Downloads
drwx------+ 115 michael staff 3680 Sep 14 10:04 Library
drwxr-xr-x 3 michael staff 96 Sep 8 13:06 LocalProjects
lrwxr-xr-x 1 michael staff 29 Dec 30 2021 Movies -&amp;gt; /Volumes/Bucket/Videos/Movies
lrwxr-xr-x 1 michael staff 21 Dec 30 2021 Music -&amp;gt; /Volumes/Bucket/Music
drwx------@ 2 michael staff 64 Mar 6 2023 Parallels
drwx------@ 7 michael staff 224 Sep 14 09:52 Pictures
drwxr-x---+ 4 michael staff 128 Apr 8 2021 Public
drwxr-xr-x+ 3 michael staff 96 Sep 14 09:52 Sites
drwxr-xr-x 3 michael staff 96 Jun 7 2021 WorkDocs Drive
drwxr-xr-x 3 michael staff 96 Sep 18 11:36 go
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, I have a lot of hidden files and folders, your output will probably look much different than mine.&lt;/p&gt;
&lt;h3&gt;Clearing the Terminal&lt;/h3&gt;
&lt;p&gt;Often times you may want to clear the terminal screen. You can use the &lt;code&gt;clear&lt;/code&gt; command to clear the screen of the terminal.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;clear
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or use a keyboard shortcut &lt;code&gt;⌃l&lt;/code&gt; (&lt;code&gt;&amp;lt;control&amp;gt;l&lt;/code&gt;)&lt;/p&gt;
&lt;h3&gt;Creating Directories&lt;/h3&gt;
&lt;p&gt;Use &lt;code&gt;mkdir&lt;/code&gt; (make directory) to create a directory.&lt;/p&gt;
&lt;p&gt;First, lets move into the &lt;code&gt;tmp&lt;/code&gt; directory, the &lt;code&gt;tmp&lt;/code&gt; directory is a directory on your file system that is typically used for applications
to write temporary logs / files to, it gets erased everytime your computer is restarted. We can use the &lt;code&gt;cd&lt;/code&gt; command that we learned
earlier.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd /tmp
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, lets create a new directory called “MyDirectory”.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;mkdir MyDirectory
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Gotchas with mkdir&lt;/h4&gt;
&lt;p&gt;By default you cant create directories that are multiple levels deep, unless the directories already existed or we provide the &lt;code&gt;-p&lt;/code&gt; option.
For example, if we want to create a directory at &lt;code&gt;/tmp/MyOtherDirectory/Nested/Deeply&lt;/code&gt; then we could use the following command when inside
the &lt;code&gt;tmp&lt;/code&gt; directory.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;mkdir -p MyOtherDirectory/Nested/Deeply
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now, try out using the &lt;code&gt;&amp;lt;tab&amp;gt;&lt;/code&gt; key with the &lt;code&gt;cd&lt;/code&gt; command to navigate to the &lt;code&gt;Deeply&lt;/code&gt; folder.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;cd MyOther &amp;lt;tab&amp;gt; &amp;lt;tab&amp;gt; &amp;lt;tab&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Open Command&lt;/h3&gt;
&lt;p&gt;You can use the open command to open files or folders in the default application for the file type.&lt;/p&gt;
&lt;p&gt;For example, if we want to open a &lt;code&gt;Finder&lt;/code&gt; window while in the &lt;code&gt;/tmp&lt;/code&gt; directory, we can use the following command:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;open .
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Manual Pages&lt;/h3&gt;
&lt;p&gt;Lastly, to learn more about commands you can use the &lt;code&gt;man &amp;lt;command&amp;gt;&lt;/code&gt;. To bring up the manual pages for the command in the terminal. You can
use the arrow keys to navigate around the manual pages and type the letter &lt;code&gt;q&lt;/code&gt; to quit / close the manual pages.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;man ls
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That is it for the first installment in this series. I hope you learned something and have better understanding of using your terminal.&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
on age.&lt;/p&gt;
&lt;p&gt;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 all
applications, but is used as an estimation based on research done by the &lt;code&gt;DOE&lt;/code&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
coil / air handler.&lt;/p&gt;
&lt;p&gt;$$ SEER_d = SEER_n \times (1 - M)^{age} $$&lt;/p&gt;
&lt;p&gt;| Where | |
| | —————————————— | — |
| $SEER_d$ | Degradated SEER rating |
| $SEER_n$ | Nominal SEER rating when equipment was new |  |
| M | Maintenance factor, 0.01-0.03 |
| 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
for unmaintained. The maintenance factor in essence is based on 1%-3%
degradation per year, however there are some
&lt;a href="https://publications.energyresearch.ucf.edu/wp-content/uploads/2018/09/FSEC-PF-474-18.pdf"&gt;studies&lt;/a&gt;
that show that this can actually be as high as 5% or above depending on climate.
We could use up to 0.05 as the maintenance factor, just to see what the “range”
of degradation would be.&lt;/p&gt;
&lt;p&gt;Interestingly, the study linked also shows that the degradation is higher the
higher the tonnage of the equipment. It also shows that the degradation is lower
per year the higher the nominal SEER rating of the system (which is corelated to
using TXVs and lower airflow rates because of the equipment having multiple
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
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
vs. a poorly maintained / dirty system that also suffers from refrigerant charge
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>
<entry>
<id>http://localhost:3000/articles/2023/introducing-psychrometrics-cli/</id>
<title>Introducing Psychrometrics CLI</title>
<updated>2025-02-20T16:03:19Z</updated>
<content type="html">&lt;p&gt;Today, Im releasing a command line application that is built on top of my
&lt;a href="https://github.com/swift-psychrometrics/swift-psychrometrics"&gt;swift-psychrometrics&lt;/a&gt; package, that I open sourced over 2 years ago.&lt;/p&gt;
&lt;p&gt;The application consists of many calculations / conversions for psychrometric properties of an air stream. The tool works for both imperial
and metric units. The application will work natively on macOS, but can also be ran through a &lt;code&gt;docker&lt;/code&gt; container on other platforms.&lt;/p&gt;
&lt;h2&gt;Why&lt;/h2&gt;
&lt;p&gt;I spend a lot of time in my terminal, because I can work so much more efficiently. I discovered many years ago that the more I can do using
simple applications and keyboard over a mouse and a web browser or native application the more I can accomplish. I understand this is
intimidating for many who think they are &lt;em&gt;“not good with computers”.&lt;/em&gt; I can assure that was me several years ago, I would only encourage you
to not be afraid and give it a shot. We are at a time in society where it is easier than ever to get informed and learned new skills.&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;For complete installation instructions, you can view the &lt;a href="https://github.com/swift-psychrometrics/psychrometrics-cli"&gt;github&lt;/a&gt; repository.&lt;/p&gt;
&lt;p&gt;The following instructions are based on using macOS.&lt;/p&gt;
&lt;h3&gt;Open your terminal application.&lt;/h3&gt;
&lt;p&gt;Personally, I use &lt;a href="https://iterm2.com/"&gt;iTerm2&lt;/a&gt;, however you can use the default &lt;code&gt;Terminal&lt;/code&gt; app. Found at
&lt;code&gt;/Applications/Utilities/Terminal.app&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;Install Homebrew&lt;/h2&gt;
&lt;p&gt;We use &lt;a href="https://brew.sh"&gt;Homebrew&lt;/a&gt; for package distribution of the pre-built application binaries. You can follow their instructions to
install.&lt;/p&gt;
&lt;h3&gt;Tap our custom formula tap.&lt;/h3&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew tap swift-psychrometrics/formula
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Install the psychrometrics application&lt;/h3&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;brew install psychrometrics
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thats it!&lt;/p&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;p&gt;I will run through a couple of the commands that are supplied with the application and show what you can expect the outputs to be.&lt;/p&gt;
&lt;h3&gt;Properties&lt;/h3&gt;
&lt;p&gt;The following command will output a bunch of the psychrometric properties of an air stream. There are several ways to call it, but generally
you will supply the dry bulb temperature and the relative humidity.&lt;/p&gt;
&lt;p&gt;Below, we calculate the psychrometric properties based on 75°F and 50% humidity.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;psychrometrics --dry-bulb 75 --relative-humidity 50
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-18-properties.png" alt="properties-output" /&gt;&lt;/p&gt;
&lt;h3&gt;Dehumidifier Sizing&lt;/h3&gt;
&lt;p&gt;If youve read some of my recent articles on calculating the
&lt;a href="https://mhoush.com/posts/sizing-dehumidifier-by-latent-load/"&gt;dehumidifier size required based on the latent load&lt;/a&gt;, the application also
ships with a calculation that will do this for you and has the ability to calculate it at different &lt;code&gt;coverages&lt;/code&gt; that you can supply.&lt;/p&gt;
&lt;p&gt;For example if weve done a load calculation and determined that we have a latent load of &lt;code&gt;4,334 BTU/h&lt;/code&gt; then we could run the following
command to see what size dehumidifier is needed for &lt;code&gt;100%, 85%, and 70%&lt;/code&gt; of the latent load.&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;psychrometrics dh size --coverage 100 85 70 --verbose 4334
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-18-dh-size.png" alt="dh-size" /&gt;&lt;/p&gt;
&lt;h3&gt;Pounds of Water Removed&lt;/h3&gt;
&lt;p&gt;I also recently wrote an article about &lt;a href="https://mhoush.com/posts/pounds-of-water-removed/"&gt;calculating the pounds of water removed&lt;/a&gt; from an
air stream given the grains of moisture removed.&lt;/p&gt;
&lt;p&gt;Below is an example of calculating the pounds of water removed per hour based on the example in the article (14 delta-grains)&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-bash"&gt;psychrometrics dh pounds-removed --delta 14 --cfm 797 --verbose
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-18-pounds-removed.png" alt="pounds-removed" /&gt;&lt;/p&gt;
&lt;h3&gt;Help&lt;/h3&gt;
&lt;p&gt;You can use &lt;code&gt;--help&lt;/code&gt; option to show help and the list of commands provided.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-18-help.png" alt="help" /&gt;&lt;/p&gt;
&lt;p&gt;If you have any questions then feel free to email or message me. I hope some of you may find this application useful.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/sizing-dehumidifier-by-latent-load/</id>
<title>Dehumidifier Sizing by Latent Load</title>
<updated>2025-02-20T17:04:37Z</updated>
<content type="html">&lt;p&gt;This is a quick article to show how to calculate the size of dehumidifier needed based on the latent load of a building. This is useful if
youve done a load calculation and know the latent load of the structure.&lt;/p&gt;
&lt;h2&gt;Formulas&lt;/h2&gt;
&lt;p&gt;The formula above is used to solve for the pints per hour required to size a dehumidifier.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ql&lt;/td&gt;
&lt;td&gt;Latent load&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ph&lt;/td&gt;
&lt;td&gt;Pints / hour&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;We can then convert to pints per day by multiplying the answer by 24 hours, below is the combined formula.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-15-pints-per-day.png" alt="pints-per-day-formula" /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Where&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ql&lt;/td&gt;
&lt;td&gt;Latent load&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pd&lt;/td&gt;
&lt;td&gt;Pints / day&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;In some cases you may want to size the dehumidifier for less than the full latent load, assuming that the air-conditioner (when sized
properly) is going to cover the full latent load when at peak design temperatures and that the peak latent period for your area is during
peak cooling demand.&lt;/p&gt;
&lt;h2&gt;Example&lt;/h2&gt;
&lt;p&gt;Lets imagine we have done a load calculation and have a latent load of 4,334 BTU/h. So, plugging that into our above formula.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-15-pints-per-day-example.png" alt="pints-per-day-formula-example" /&gt;&lt;/p&gt;
&lt;p&gt;Or if we just want to cover the latent capacity at 85% of the full latent load.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-15-pints-per-day-example2.png" alt="pints-per-day-formula-example" /&gt;&lt;/p&gt;
&lt;p&gt;This gives us some guidance that we would need to select a dehumidifier that is rated for 84-99 pints per day, depending on which condition
we wanted to use.&lt;/p&gt;
&lt;p&gt;I dont feel oversizing a dehumidifier, within reason, is that problematic (or at least it does not come with the same problems as an
oversized air conditioner), so I would personally go for a 100-120 pint per day model dehumidifier in this application.&lt;/p&gt;
&lt;p&gt;Thanks for reading!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/why-mini-splits-stink/</id>
<title>Why Mini Splits Stink</title>
<updated>2025-02-20T17:06:24Z</updated>
<content type="html">&lt;p&gt;In this general article, I explain why I dont generally like to use mini-splits.&lt;/p&gt;
&lt;h2&gt;The Positive Sides&lt;/h2&gt;
&lt;p&gt;When people say mini-splits, in general we mean “ductless” style units. These can either be high wall, floor mounted, or ceiling mounted
consoles. These units do offer really high efficiency and becuase theyre “ductless” you dont have duct gains/losses.&lt;/p&gt;
&lt;p&gt;These units are common in many other countries and have been around for a long time. They do are generally quick and fairly easy to install,
but are mostly a pain in the tail to work on.&lt;/p&gt;
&lt;p&gt;So, the plus side to these units are that they are really efficient, they generally have models that have a high-heat output for colder
climates, although this option is becoming more prevelant in traditional unitary style heat pumps as well. You do not have heat gains or
losses due to ductwork being in unconditioned spaces.&lt;/p&gt;
&lt;h2&gt;The Down Sides&lt;/h2&gt;
&lt;p&gt;Most mini-split systems do not do the greatest at humidity removal. This is partially because they use proprietary algorithms to control the
blower and compressor. They do achieve long run-times, which is often good for comfort stand points, however there is generally not a good
way to control / hack them to work towards achieving good IAQ.&lt;/p&gt;
&lt;p&gt;These units offer next to no filtration, so in order to have filtration you need to utilize a stand-alone / portable filtration means. Which
a lot of the portable filtration systems have problems of their own (come bundled with UV / PCO technology or other “space” technology that
can lead to their own IAQ problems). It also introduces another fan, which may / may not be that efficient. In other words, when considering
other items to make them more comparable to what a traditional system offers, are they really that much more efficient?&lt;/p&gt;
&lt;p&gt;These systems also do not have a good method of offering basic fresh air control / management, so other systems, such as an ERV need to be
installed to handle the fresh air requirements of the building.&lt;/p&gt;
&lt;p&gt;The controls for these systems are often hard to understand / use. They do allow you to change fan speeds, but they control the compressor.
The fans often run all the time, which is not necessarily a bad thing, but they dont really offer many ramping profiles or adjustments to
change the blower speed when the compressor is off vs. on.&lt;/p&gt;
&lt;p&gt;These systems get dirty quickly, are generally a pain to clean properly, and are not easily repairable. Manufacturer support is often poor,
the documents arent always translated very well, and most technicians hate to work on them.&lt;/p&gt;
&lt;h1&gt;What about ducted models?&lt;/h1&gt;
&lt;p&gt;But what about the ducted models? Well, the ducted models are a step in the right direction. You can use filters on them, although some of
the manufacturers do not recommend installing better / improved filter cabinets (like a 4-5” media filter), however we have done that
successfully many times and always include media filters as an option on our installations, but you do need to make sure that they have a
very low pressure drop, as they a lot are not designed for very much static pressure.&lt;/p&gt;
&lt;p&gt;The ducted models still generally have the same control problems, previously mentioned. If you read my introduction to the
&lt;a href="https://mhoush.com/posts/coil-bypass-overview/"&gt;coil-bypass-system&lt;/a&gt;, you have a basic understanding that even most traditional systems /
designers do not focus on the proper air-changes in a structure to maintain proper IAQ levels.&lt;/p&gt;
&lt;p&gt;You cant easily pair mini-splits with larger fan-coils because they are “communicating” style systems.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Dont get me wrong, there are applications that are well suited for mini-splits. These are often applications like sun-rooms, garages, small
server-rooms / network storage rooms, and many others. But in my opinion these are not at all my favorite and are generally really far down
my list of options that I want to recommend to my clients.&lt;/p&gt;
&lt;p&gt;As an industry, I feel we need to step back and refocus on the pillars of IAQ. Filtration, fresh-air, and humidity control. The
manufacturers / government should put less emphasis on chasing efficiency just to shoot ourselves in the foot and loose the qualities that
make traditional / unitary style systems cover more if not all of the 3 pillars of proper IAQ.&lt;/p&gt;
&lt;p&gt;Theres plenty that I did not cover and Im sure I missed some things, but just needed to rant for a few minutes… Thank you for making it
to the end!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/pounds-of-water-removed/</id>
<title>Pounds of Water Removed</title>
<updated>2025-02-20T16:43:21Z</updated>
<content type="html">&lt;p&gt;This is an article that shows how to calculate the pounds of water removed from an air stream, given the entering conditions (return air
stream) and the outlet conditions (supply air stream).&lt;/p&gt;
&lt;p&gt;This is useful in the field when you want to calculate the amount of moisture removed from an air-conditioner or a dehumidifier. This
article assumes that you have knowledge of a psychrometric chart. If you do not have basic knowledge of the psychrometric chart, then here
are a couple articles to familiarize yourself.&lt;/p&gt;
&lt;h2&gt;Articles&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hvacrschool.com/understand-dew-point-absolute-moisture-right-side-psych-chart/"&gt;Understand Dew-Point&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hvacrschool.com/the-impact-of-adding-or-removing-water-from-air/"&gt;Impact of Adding or Removing Water from Air&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Scenario&lt;/h2&gt;
&lt;p&gt;Lets imagine that we have an air-conditioner that has the following measurements taken:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Return Air: 75° / 50% RH&lt;/li&gt;
&lt;li&gt;Supply Air: 55° / 81% RH&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We plot the two values on the psychrometric chart (black line represents the return air conditions and blue line represents the supply air
conditions).&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-08-pounds-of-water-removed.png" alt="chart" /&gt;&lt;/p&gt;
&lt;p&gt;We start by finding the corresponding dry-bulb temperature at the bottom of the chart and draw a straight line up to where it intersects the
relative humidity curve. After that we draw a straight line to the right side of the psychrometric chart to find the grains of moisture per
pound of air.&lt;/p&gt;
&lt;p&gt;This gives us the following values:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Return Air: 66 gr/lb&lt;/li&gt;
&lt;li&gt;Supply Air: 52 gr/lb&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We can then use the following formula to calculate the pounds of water removed.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-08-formula.png" alt="formula" /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Where&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;W&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Weight of water in pounds per hour&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;4.5&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Constant based on density / specific heat of moist air&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;CFM&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Airflow in cubic feet per minute&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;∆G&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Difference in grains of moisture&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;7000&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;Constant based on grains of moisture in saturated air&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;Solution&lt;/h2&gt;
&lt;p&gt;First, we solve for the difference in grains between the two air streams.&lt;/p&gt;
&lt;p&gt;∆G = 66 - 52 = 14&lt;/p&gt;
&lt;p&gt;Next, weve measured our airflow and have determined to have &lt;strong&gt;797 CFM&lt;/strong&gt; of airflow across the evaporator coil, so we can substitute our
values into the formula.&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-09-08-solution.png" alt="solution" /&gt;&lt;/p&gt;
&lt;p&gt;So, we are removing about 7 pounds of water per hour at these conditions.&lt;/p&gt;
&lt;p&gt;Another thing to note is that 1 pound of water is approximately 1 pint of water, which can be useful when working with dehumidifiers that
can often be rated in pints per day.&lt;/p&gt;
&lt;p&gt;I hope youve found this article helpful, thanks for reading!&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/rss-feed/</id>
<title>Rss Feed</title>
<updated>2025-02-20T16:50:11Z</updated>
<content type="html">&lt;p&gt;In this article I will show how to add this sites rss feed. In particular, we will be using &lt;a href="https://netnewswire.com"&gt;NetNewsWire&lt;/a&gt; as the
rss reader.&lt;/p&gt;
&lt;h2&gt;What is an RSS Feed&lt;/h2&gt;
&lt;p&gt;An RSS feed will show you new posts, generally from a blog, without having to remember to check the website at regular intervals or signup
for an email list for notifications.&lt;/p&gt;
&lt;p&gt;NetNewsWire puts an RSS feed as:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Its like podcasts&lt;/strong&gt; - but for &lt;em&gt;reading.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You consume an RSS feed, using an RSS reader application or extension in your browser.&lt;/p&gt;
&lt;h2&gt;Step One&lt;/h2&gt;
&lt;p&gt;First find and download an RSS reader, you can download &lt;a href="https://netnewswire.com"&gt;NetNewsWire&lt;/a&gt; for macOS from the link, or for iOS from the
&lt;a href="https://apps.apple.com/us/app/netnewswire-rss-reader/id1480640210"&gt;AppStore&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Step Two&lt;/h2&gt;
&lt;p&gt;Add the rss feed to stay up to date when I publish new articles.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click the plus in the right side of the sidebar and select &lt;code&gt;New Feed...&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;In the URL field add: &lt;code&gt;https://mhoush.com/articles/feed.xml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Optionally give it a name&lt;/li&gt;
&lt;li&gt;Click the &lt;code&gt;Add&lt;/code&gt; button.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-08-10-rss-feed.gif" alt="rss gif" /&gt;&lt;/p&gt;
&lt;p&gt;Thats it.&lt;/p&gt;</content>
</entry>
<entry>
<id>http://localhost:3000/articles/2023/coil-bypass-overview/</id>
<title>Coil Bypass Overview</title>
<updated>2025-02-20T15:14:48Z</updated>
<content type="html">&lt;p&gt;This is the first article in a series that explores the idea of a coil bypass strategy in an HVAC system. This article introduces you to a
coil bypass strategy at a high level, future posts will dive deeper into the features, benefits, as well as the challenges of this style of
system.&lt;/p&gt;
&lt;h2&gt;What is a Coil Bypass&lt;/h2&gt;
&lt;p&gt;A coil bypass is not to be mistaken for a zoning system bypass, where airflow is “relieved” from the supply side of the system back into the
return. Instead, a coil bypass diverts a portion of the airflow around the coil using a bypass damper(s). The bypass can serve several
functions depending on the application, but in general it allows for a constant volume of air to be delivered to the space while the output
of the coil can be shifted towards more or less dehumidification. In other words, it decouples the total system airflow from the coil
airflow.&lt;/p&gt;
&lt;p&gt;The bypassed air mixes with the supply air stream to act as a reheat source, however unlike a typical reheat source it does not add more
sensible load to the structure, instead it just brings the supply air temperature closer to the existing homes temperature while still
covering the latent and sensible loads of the home. A warmer duct system reduces the losses of the duct to unconditioned spaces as well as
reduces the risk for duct condensation.&lt;/p&gt;
&lt;p&gt;The coil bypass strategy, as far as I know, was pioneered by &lt;a href="https://www.linkedin.com/in/harry-boody-9b8a4366/"&gt;Harry Boody&lt;/a&gt; of Energy
Innovations and Scientific Environmental Design, Inc. However their websites are no longer active, so Im not sure if they are still active
in the HVAC design space or not.&lt;/p&gt;
&lt;h2&gt;The Problem&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Question&lt;/td&gt;
&lt;td&gt;Why would we want to utilize a strategy such as the coil bypass?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Answer&lt;/td&gt;
&lt;td&gt;Improved indoor air quality (IAQ)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ASHRAEs recommandation for the amount of air changes per hour (ACH) in a residential structure to be in the range of 3-5 ACH, and in
general the higher the better, along with a MERV 13+ filter. In some / most cases the system airflow does not meet that criteria, especially
low load homes or high volume homes.&lt;/p&gt;
&lt;p&gt;For example, lets imagine a single story ranch home that is 2,500 square feet with 9 foot ceilings. This home is relatively tight
construction and after doing the heating and cooling loads weve selected a 2.5 Ton system for this home. It is located in a green grass
climate that needs some priority on dehumidification and requires an airflow of 350 CFM/Ton (875 CFM).&lt;/p&gt;
&lt;p&gt;We determine the volume of the conditioned space.&lt;/p&gt;
&lt;p&gt;2,500 x 9 = 22,500 ft^3&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-08-10-volume-equation.png" alt="volume-equation" /&gt;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Where:&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;V&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;is the volume of the home&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ACH&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;is the desired air changes per hour&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;60&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;em&gt;conversion from hours to minutes&lt;/em&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Below is a table of the required CFM to meet the different air changes per hour.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th align="center"&gt;CFM&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;(22,500 x 3)/60&lt;/td&gt;
&lt;td align="center"&gt;&lt;strong&gt;&lt;em&gt;1,125 @ 3 ACH&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(22,500 x 4)/60&lt;/td&gt;
&lt;td align="center"&gt;&lt;strong&gt;&lt;em&gt;1,500 @ 4 ACH&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(22,500 x 5)/60&lt;/td&gt;
&lt;td align="center"&gt;&lt;strong&gt;&lt;em&gt;1,875 @ 5 ACH&lt;/em&gt;&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;As you can see we have a discrepency of meeting even the low end of 3 ACH. The high end of 5 ACH is over 2x the airflow for our 2.5 Ton
system. The coil bypass strategy is one viable way, by decoupling the total system airflow from the coil airflow without, which eliminates
the need of an auxilary fan / system that circulates air through some sort of filtration system.&lt;/p&gt;
&lt;h3&gt;Multi-Stage Systems&lt;/h3&gt;
&lt;p&gt;A challenge with multi-stage systems, even when sized properly, is that we often run at part-load conditions, and spend the majority of the
time in lower stages. The lower stages often do worse at dehumidification than when running at full load.&lt;/p&gt;
&lt;p&gt;When the equipment runs in lower stages on a traditional system the total system airflow is reduced even further from the recommended air
changes per hour. This reduced airflow also causes the throw of the air from the registers to be reduced which can lead to increased odds of
stratification, poor air mixing, and increased potential for poor mean radiant temperatures (MRT) of the surfaces. The decreased airflow in
low stages, lowers the velocity in the duct system, while low velocity is not a concern, it does increase the duct gains and increase the
possibility of condensation on the ducts when theyre located outside of the thermal envelope of the building.&lt;/p&gt;
&lt;p&gt;Lets imagine we have a duct system that has high wall registers located in a soffit at the interior wall that moves 100 CFM and we are
trying to throw the air to the exterior wall which includes a window. The wall is @ 12 feet from the register. Weve selected a register
that meets the criteria, at high stage airflow it has a throw of 11.5 feet (shown as the green rectangle). When the system runs in low
stage, the airflow is reduced to 70% of high stage (70 CFM), which would give us a throw from the register of @ 7 feet (shown as the red
rectangle).&lt;/p&gt;
&lt;p&gt;&lt;img src="/articles/images/2023-08-10-register-throw.png" alt="register-throw" /&gt;&lt;/p&gt;
&lt;p&gt;The reduced flow through the register causes the air to only make it about 60% across the room before reaching its terminal velocity, which
can cause the room to feel uncomfortable since the air never reaches the exterior wall and window.&lt;/p&gt;
&lt;p&gt;By decoupling the fan from the coil airflow it is possible to run in low stages, still have adequate dehumidification performance out of the
system, and achieve the proper throw from the registers.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;In this article weve begun to scratch the surface of what a coil bypass strategy is in an HVAC system, as well as some of the challenges
that it can help solve. Weve learned about why we may desire to decouple the total system airflow from the coil airflow.&lt;/p&gt;
&lt;p&gt;In future articles we will continue to explore some of the features, benefits, and challenges presented by such a strategy.&lt;/p&gt;
&lt;h2&gt;Related Resources&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://hvacrschool.com/bypass-dehumidification-airflow-hvac-design/"&gt;HVAC School - Bypass Dehumidification / Airflow HVAC Design&lt;/a&gt;&lt;/p&gt;</content>
</entry>
</feed>