feat: Initial commit

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

View File

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

View File

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

View File

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

View File

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

View File

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