<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog | Harmonic Northwest</title>
	<atom:link href="http://www.harmonicnw.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.harmonicnw.com/blog/</link>
	<description>Agencies love us and so will you</description>
	<lastBuildDate>Wed, 25 Mar 2026 20:54:24 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.harmonicnw.com/wp-content/uploads/2025/02/favicon2-150x150.png</url>
	<title>Blog | Harmonic Northwest</title>
	<link>https://www.harmonicnw.com/blog/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Website accessibility gets a boost with ACT 1.1</title>
		<link>https://www.harmonicnw.com/2026/03/website-accessibility-gets-a-boost-with-act-1-1/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Wed, 25 Mar 2026 20:54:24 +0000</pubDate>
				<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Accessibility]]></category>
		<guid isPermaLink="false">https://www.harmonicnw.com/?p=2780</guid>

					<description><![CDATA[<p>The W3C Accessibility Guidelines Working Group released their Accessibility Conformance Testing (ACT) Rules format 1.1 last month. This document, currently tagged as a recommendation, beefs up rules structures, categorizes rules&#8230; <a href="https://www.harmonicnw.com/2026/03/website-accessibility-gets-a-boost-with-act-1-1/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2026/03/website-accessibility-gets-a-boost-with-act-1-1/">Website accessibility gets a boost with ACT 1.1</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The <a href="https://www.w3.org/WAI/GL/">W3C Accessibility Guidelines Working Group</a> released their Accessibility Conformance Testing (ACT) Rules format 1.1 last month. This document, currently tagged as a recommendation, beefs up rules structures, categorizes rules as Conformance or Secondary, and mandates plain language among other changes.</p>
<h2>What are the Accessibility Conformance Testing rules?</h2>
<p>The easiest way to understand what the ACT rules are is to take a look for yourself. Check those out at the link below:</p>
<p><a href="https://www.w3.org/WAI/standards-guidelines/act/rules/">https://www.w3.org/WAI/standards-guidelines/act/rules/</a></p>
<p>There you&#8217;ll see the familiar WCAG guidelines organized into a list filterable by WCAG specification (level A, AA, etc.), status (approved vs. proposed), and implementation type (manual vs. automated). Within each of the rules are multiple methods for testing the rule. Each method has a dedicated page with detailed instructions on what to look for and how to test.</p>
<h2>Why are the ACT rules important?</h2>
<p>In the early days of compliance testing, different software packages aimed at addressing website accessibility would have slightly different takes on how to interpret WCAG rules resulting in inconsistent results between platforms.</p>
<p>While much of that difference has diminished over time, the ACT rules further crystallize exactly how the W3C expects guidelines to be tested and interpreted. This will increase auditing accuracy for all accessibility testing platforms.</p>
<h2>What the ACT rules don&#8217;t do</h2>
<p>The ACT Rules are great for clarifying how to test the WCAG guidelines, but they do not comprehensively determine if a website at large is compliant. The rules only look for specific kinds of failures (albeit common ones) that would disqualify a related bit of code/UI from being compliant. Passing all of those tests for a guideline doesn&#8217;t necessarily mean it has been satisfied—there are other ways to fail outside of what these rules test for.</p>
<p>The WCAG guidelines still remain the source of truth on pass/fail scenarios and the ACT rules are just supporting resources for understanding and using the guidelines.</p>
<h2>How this impacts our audits</h2>
<p>Harmonic Northwest offers <a href="https://www.harmonicnw.com/website-accessibility-audit/">website accessibility auditing and remediation</a> as a service. Our focus is more on the manual testing side of things—in other words, the parts of accessibility testing that are currently out of reach of automated testing. As such, we&#8217;ll be keeping a close eye on updates to the <em>manual</em> and <em>semi-manual</em> categories of the ACT rules and ensuring that our testing processes follow the best practices listed there. We&#8217;ll also keep tabs on the suite of tools we use for automated tests to make sure they are keeping up with these rules.</p>
<h2>References</h2>
<p>You can follow the links below to learn more about the W3C&#8217;s Accessibility Conformance Testing (ACT) Rules:</p>
<p><a href="https://www.w3.org/WAI/standards-guidelines/act/rules/">https://www.w3.org/WAI/standards-guidelines/act/rules/</a> (ACT rules)<br />
<a href="https://www.w3.org/WAI/standards-guidelines/evaluation/">https://www.w3.org/WAI/standards-guidelines/evaluation/</a> (ACT overview)<br />
<a href="https://www.w3.org/WAI/standards-guidelines/act/rules/about/">https://www.w3.org/WAI/standards-guidelines/act/rules/about/</a> (ACT rules overview)<br />
<a href="https://www.w3.org/WAI/standards-guidelines/act/implementations/">https://www.w3.org/WAI/standards-guidelines/act/implementations/</a> (software using ACT)<br />
<a href="https://www.w3.org/TR/act-rules-format/">https://www.w3.org/TR/act-rules-format/</a> (ACT rules)</p>
<p>The post <a href="https://www.harmonicnw.com/2026/03/website-accessibility-gets-a-boost-with-act-1-1/">Website accessibility gets a boost with ACT 1.1</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>How We&#8217;re Using AI to Save Time and Write Better Code</title>
		<link>https://www.harmonicnw.com/2026/03/how-were-using-ai-to-save-time-and-write-better-code/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Fri, 06 Mar 2026 19:06:28 +0000</pubDate>
				<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[AI]]></category>
		<guid isPermaLink="false">https://www.harmonicnw.com/?p=2750</guid>

					<description><![CDATA[<p>The AI revolution is producing a ton of great tools to assist developers and I wanted to write a post about how we&#8217;re currently using those tools here at Harmonic&#8230; <a href="https://www.harmonicnw.com/2026/03/how-were-using-ai-to-save-time-and-write-better-code/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2026/03/how-were-using-ai-to-save-time-and-write-better-code/">How We&#8217;re Using AI to Save Time and Write Better Code</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The AI revolution is producing a ton of great tools to assist developers and I wanted to write a post about how we&#8217;re currently using those tools here at Harmonic Northwest. I think it&#8217;s probably easiest to explain through some real-world examples which I&#8217;ll go into below.</p>
<h2>AI-Assisted Development Example #1: <strong style="color:#e18e3c">Scaffolding</strong></h2>
<p>A client needed a complex branching form setup where the question fields that would show depended on answers to previous questions. Additionally, they wanted the data for the form to be in an easily editable data file.</p>
<p>Normally I might do something like this using WordPress&#8217; Gravity Forms plugin via the plugin&#8217;s conditional fields in the admin area, but in this case that wasn&#8217;t going to work because we needed a single data object that would power the logic.</p>
<p>So instead I fired up Claude Code and started writing a requirements document. I gave Claude a paragraph or so describing what I wanted (JSON object for data, conditionally show/hide questions, store answers in hidden fields, validation, etc.) and had it write a formal requirements doc. I looked this over, gave feedback, and we iterated on the doc for a while.</p>
<p>Once that looked good, I asked Claude to review how the current codebase for the project worked so that it understood the current state of affairs. Then I let Claude loose on the code. It produced some new JavaScript, CSS/SCSS and PHP code with all the structure needed to power the functionality. I updated the data file with real data (this part took some human parsing to get right) and the functionality mostly worked great. We did some more iterations after testing with real data, but it wasn&#8217;t long before the project was ready to ship.</p>
<p>Scaffolding complex projects by hand can be super time-consuming, but for the AI it was much more efficient. Claude ended up producing several hundred lines of code, which, if I had done completely by hand, probably would have taken the better part of a week. Instead we had a first draft up with a completely working form and real data in under a day.</p>
<h2>AI-Assisted Development Example #2: <strong style="color:#e18e3c">Working with Complex Data Structures</strong></h2>
<p>The JSON data object mentioned in Example #1 ended up being somewhat complex. We ended up with a couple dozen questions and a lot of metadata around the conditions under which those questions would show. There were also a bunch of display options for each question such as label, help text, and field format (simple text input, large text input, checkboxes, etc.). This large amount of data made the data file a little tricky to edit if you wanted to, say, add a new branch to the logic that showed a series of new questions.</p>
<p>But navigating these kinds of updates with the help of an LLM was very simple.</p>
<p>Instead of manually editing lines of code in the JSON file, I could ask Claude to do what I wanted, and for Claude this was a very simple task. For example, I could say something like, “Can you remove the third answer for the question titled [title] and replace it with this question [question] and have it be a multiple-choice question with responses [A], [B], and [C]?” Claude could handle this request in seconds without breaking a sweat.</p>
<p>This dataset wasn&#8217;t all that big—just a couple dozen question entries. But the same principle applies to larger datasets, like a spreadsheet file in CSV format with several thousand entries.</p>
<p>Another example along these lines that I did recently: I exported a bunch of WordPress data in standard XML format and then had Claude parse through that data to produce a spreadsheet-compatible CSV file with just the SEO data. This would have taken a while to do by hand, but with Claude&#8217;s help it only took a couple minutes.</p>
<h2>AI-Assisted Development Example #3: <strong style="color:#e18e3c">Debugging</strong></h2>
<p>My AI assistants have become essential for debugging code. I generally use them for debugging in two ways:<br />
analyzing the codebase and<br />
producing useful log messages.</p>
<p>I was recently having a problem with the shipping calculation portion of a checkout process for a custom Shopify theme. I didn&#8217;t have a lot of useful information coming back in the browser or server logs, so initially I just told Claude what was happening, pointed out a couple files I thought were likely involved, and asked it to assess the code to see what might be happening.</p>
<p>Sometimes in this scenario Claude will propose a solution right away and the problem is solved immediately. In this case, we needed more data. I asked Claude to write some debug logs that outlined several data points that were potentially contributing to the issue. After doing more testing with the new logging enabled, I was able to identify the root cause of the issue. I pointed this out to Claude and suggested a fix and Claude implemented the fix magnificently.</p>
<h2>AI-Assisted Development Example #4: <strong style="color:#e18e3c">Understanding Documentation</strong></h2>
<p>I recently was working with an API I&#8217;m not terribly familiar with and needed to know how to pass an extra data type that I hadn&#8217;t worked with before. I asked Claude to look at the documentation to see if it could figure out how to do it. Claude scoured several sources of information (not just the documentation page) and came up with a pretty good answer. It might have taken me an hour to sort through this; Claude gave me testable API calls in a few minutes.</p>
<h2>AI-Assisted Development Example #5: <strong style="color:#e18e3c">Generalized Knowledge</strong></h2>
<p>I&#8217;ve been using Claude and ChatGPT to fill in gaps in my knowledge around best practices for SEO, site performance and accessibility. I can oftentimes ask it a question like, &#8220;Do I need to add an ARIA label for this DOM element given that its functionality is X, Y and Z?&#8221; and it usually gives me an answer that if not 100% correct, at least gets me pointed in the right direction.</p>
<p>A lot of times these questions surface new bits of knowledge that I wasn&#8217;t aware of and lead to further conversations that further extend my knowledge.</p>
<h2>Adapting to New Standards</h2>
<p>This is the gist of how the Harmonic Northwest team is using AI tools today, but of course the tools are changing and improving and new ones are popping up all the time. The way we interact with LLMs and other AI tools is going to change.</p>
<p>We don&#8217;t know what the future holds, but we&#8217;ll continue to learn and adapt so we can do our work efficiently, integrate the industry&#8217;s best practices and produce more robust and plentiful code.</p>
<p>The post <a href="https://www.harmonicnw.com/2026/03/how-were-using-ai-to-save-time-and-write-better-code/">How We&#8217;re Using AI to Save Time and Write Better Code</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>NDA projects</title>
		<link>https://www.harmonicnw.com/2026/02/nda-projects/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 22:51:54 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://www.harmonicnw.com/?p=2679</guid>

					<description><![CDATA[<p>Harmonic Northwest does a fair amount of work under non-disclosure agreements. That means there are a bunch of projects we&#8217;re involved in that we can&#8217;t take any credit for and&#8230; <a href="https://www.harmonicnw.com/2026/02/nda-projects/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2026/02/nda-projects/">NDA projects</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Harmonic Northwest does a fair amount of work under non-disclosure agreements. That means there are a bunch of projects we&#8217;re involved in that we can&#8217;t take any credit for and don&#8217;t get to display in our portfolio. (bummmmmer)</p>
<p>These NDA arrangements usually happen when we&#8217;re partnering with other (typically larger) agencies to work on the website portion of a marketing campaign. In these cases we essentially become a white label service and an extension of the agency, sometimes using agency email addresses to communicate with the end client.</p>
<p>While I can&#8217;t go into great detail about individual projects, I can give you a sense of the kind of projects we do under NDA. Below is a sampling of work we&#8217;ve been involved in that you won&#8217;t see in our portfolio:</p>
<ul>
<li>Several WordPress sites for a prominent US-based semiconductor manufacturer</li>
<li>A headless next.js/CMS site for a sports equipment company</li>
<li>A Shopify site for a well-known international retailer</li>
<li>A Shopify site for a niche bicycle manufacturer</li>
<li>A Shopify/WordPress combo ecommerce site for a CBD tincture manufacturer</li>
<li>A WordPress site for an award-winning west coast marketing agency</li>
<li>A WordPress site for an award-winning west coast construction company</li>
<li>Two WordPress sites for a pharmaceutical company</li>
<li>A Drupal site for a large insurance company</li>
<li>A custom site for a popular online payment processor</li>
<li>Several microsites for a branded merchandise company</li>
<li>A custom microsite for a US-based Fortune 500 IT company</li>
</ul>
<p>We love helping our agency partners and seamlessly integrating with their teams to do great work together. They benefit from the deep technical expertise of Harmonic Northwest, and we get to work on some pretty neat projects with some pretty fantastic people. Teamwork makes the dream work, right?</p>
<p>The post <a href="https://www.harmonicnw.com/2026/02/nda-projects/">NDA projects</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>City of Port Townsend Artist Directory</title>
		<link>https://www.harmonicnw.com/2026/02/city-of-port-townsend-artist-directory/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Fri, 13 Feb 2026 16:48:36 +0000</pubDate>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://www.harmonicnw.com/?p=2684</guid>

					<description><![CDATA[<p>In 2020 the City of Port Townsend, Washington (my hometown) applied for and was granted a state-sanctioned creative district within its boundaries. This designation opens up opportunities for the city&#8230; <a href="https://www.harmonicnw.com/2026/02/city-of-port-townsend-artist-directory/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2026/02/city-of-port-townsend-artist-directory/">City of Port Townsend Artist Directory</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In 2020 the City of Port Townsend, Washington (my hometown) applied for and was granted a state-sanctioned <a href="https://www.arts.wa.gov/creative-districts/">creative district</a> within its boundaries. This designation opens up opportunities for the city to gain recognition for its artists and to apply for grants to help support the creative community.</p>
<p>One of the ways the City wanted to help artists was to create an artist directory that could bring attention to working artists within the district. This would help artists get more visibility within and outside of the community, and to connect with patrons and each other to create new opportunities.</p>
<p>Harmonic Northwest was selected to make it happen, having helped out with the website before and leading multiple years of marketing efforts for the <a href="https://www.harmonicnw.com/2023/08/another-successful-soundcheck/">Soundcheck Arts Festival</a>. You can check out the results here:</p>
<p><a href="https://ptcreativedistrict.org/artists/">https://ptcreativedistrict.org/artists/</a></p>
<p>Harmonic Northwest designed the experience using Figma. We built upon the existing WordPress site, adding templates, styles and scripts, and installing and configuring some key third-party plugins. We ensured that the updates were compatible with their existing Elementor setup and other plugins. We created documentation for users and provided training to allow office staff to manage everything.</p>
<p>People browsing the site can view a listing of artists arranged in a grid with a photo of their work as the primary image and a small profile image overlaying that. Users can filter by artistic discipline, use a search box or sort the listings (by date joined or alphabetical).</p>
<p>The directory allows artists to self-register and then create and manage their own profiles. Artists can add a bio, links to social media and portfolio sites, and add images and video. They can also do basic account management such as changing their password.</p>
<p>Administrators can edit artist profile content and also are responsible for approving artist registrations.</p>
<p>The site currently features over 100 artists—not too shabby for a town of only about 10,000 people. The artists get some exposure, the city gets to show off its remarkable lineup of creative talent, and everybody wins.</p>
<p>Shoutout to the extraordinarily resourceful <a href="https://ryancodes.com">Ryan Niswonger</a> for leading the development effort on this one.</p>
<p>The post <a href="https://www.harmonicnw.com/2026/02/city-of-port-townsend-artist-directory/">City of Port Townsend Artist Directory</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Cobbler has Shoes! (the story of the Harmonic Northwest rebrand)</title>
		<link>https://www.harmonicnw.com/2026/01/the-cobbler-has-shoes-the-story-of-the-harmonic-northwest-rebrand/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Tue, 20 Jan 2026 21:16:51 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Brand identity]]></category>
		<category><![CDATA[Parallax]]></category>
		<guid isPermaLink="false">https://www.harmonicnw.com/?p=2637</guid>

					<description><![CDATA[<p>Have you heard the proverb about the cobbler whose children had no shoes? Here at Harmonic Northwest, we felt a bit like that cobbler. We make amazing websites for our&#8230; <a href="https://www.harmonicnw.com/2026/01/the-cobbler-has-shoes-the-story-of-the-harmonic-northwest-rebrand/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2026/01/the-cobbler-has-shoes-the-story-of-the-harmonic-northwest-rebrand/">The Cobbler has Shoes! (the story of the Harmonic Northwest rebrand)</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Have you heard the proverb about the cobbler whose children had no shoes?</p>
<p>Here at Harmonic Northwest, we felt a bit like that cobbler. We make amazing websites for our company clients and agency partners, but all the while our own website was rather lacking.</p>
<p>Well we finally decided to treat ourselves, and now this cobbler has some <em>smokin&#8217;</em> kicks!</p>
<p>The new look leans much more heavily into the &#8220;Northwest&#8221; part of our name. Jameson Spence of Blocktype created the brand visuals that included the new logo and website. Local artist Ruby Gale contributed the delightful hand-drawn artwork of northwest critters and nature. Code for the site was started by David Siemers, picked up by Kelsey Kopecky, and taken down the home stretch by me (Gage).</p>
<p>If you&#8217;re interested in learning about why we rebranded and some of the thought process behind it, just keep on a-scrollin&#8217;&#8230;</p>
<h2>The beforetimes</h2>
<p>Before I go on about how the new branding came to be, I think it&#8217;s worth talking about the origins of the old look.</p>
<p>When I bought the domain name for harmonicnw.com back in 2004, I wasn&#8217;t really sure what the site would be. I was an indie rocker, designer, animator, videographer and web developer (roughly in that order) and I wanted a name that could serve as a homebase for any and all of those things.</p>
<p>I put together a first website outlining the offerings of my &#8220;company&#8221; which included recording jingles and producing audio. The website was built using HTML tables and Dreamweaver (as one did in that era) and featured a simple design with a bright blue and vivid orange color scheme.</p>
<p>Later I enlisted a colleague from <a href="https://cmdagency.com/">CMD Agency</a> to do some proper branding for a v2 of the site. I suggested that he lean into my musical background and go for a somewhat flashy tech vibe. And with that, the long-running version of <a href="https://iheart.harmonicnw.com/harmonicnw-v2/">the orange Harmonic Northwest website</a> and the hexagon and squiggle logo were born.</p>
<h2>The rebrand</h2>
<p>So why did we decide to do a rebrand?</p>
<p>While it&#8217;s true that the old site wasn&#8217;t too bad and was still relatively serviceable, it just felt like it didn&#8217;t quite match the level of work we&#8217;ve been doing for our clients lately. Harmonic Northwest has built some amazing sites for big name companies, but you probably wouldn&#8217;t guess that from a quick tour of our old site.</p>
<p>Also, it just didn&#8217;t quite feel like us. The color scheme was as bit too in-your-face and artificial. The squiggly line for the logo was in step with some of the brand messaging that visualized a chaotic waveform becoming streamlined, but otherwise it didn&#8217;t make a lot of sense without that context. You might guess we were a medical device company or maybe something to do with analytics based on the logo.</p>
<h2>A brand that embraces the northwest vibe</h2>
<p>The new brand exudes northwest. We use photography featuring foggy mountainsides with soaring doug firs, majestic deer and bellowing elk. Hand-drawn images of moose, bears, skunks, foxes, moles, mountains, lakes and trees contribute even more northwest-ness. The color scheme features a deep green with a bit of calming blue and an earthy brown/orange that evoke colors from nature.</p>
<p>The logo mark itself features a single buck deer, which is an animal commonly found in (though not limited to) the northwest. Deer are sort of the spirit animal of the town I live in, Port Townsend, Washington, and bucks like the one in the logo regularly tramp through my backyard. Symbolically, buck deer often represent strength, protection, abundance and vivaciousness. The deer is depicted with rain falling in the background, which is important for keeping our forests mossy and green, and is also a symbol for growth and abundance. All in all it seemed like an appropriate emblem for us.</p>
<h2>Smart and approachable</h2>
<p>I wanted to integrate the whimsical hand-drawn art as that makes the site feel more approachable and gives some opportunities for small moments of delight. It was important to me that it feels like you&#8217;re viewing a website that represents a group of people who are kind, communicative and down-to-earth. I thought this warmth might be a distinguishing factor in an industry where people spend a lot of time pushing pixels and flipping 1s and 0s.</p>
<p>And in an age where all things creative are being disrupted and replaced by AI, there&#8217;s something to be said for having a website that has some very human-crafted looking elements.</p>
<p>We also wanted a site that felt open and airy and not boxed in and heavy, and I think we accomplished that. That weightless elegance contributes to the readability, usability and ultimately, loveability of the site.</p>
<p>By keeping the tone of the content casual and relatively succinct while showing off a bunch of great projects and outlining problems we have solved, I think the content strikes a good balance of showing off our smarts without seeming too full of ourselves and avoiding talking over our audience.</p>
<p>Visit the archive</p>
<p>The old site is archived at <a href="https://iheart.harmonicnw.com/harmonicnw-v2/">iheart.harmonicnw.com/harmonicnw-v2/</a> if you want to see the difference this rebrand made. Mad props to the enormously talented <a href="https://www.linkedin.com/in/michaelfofrich/">Michael Fofrich</a> for putting together the previous design that stayed modern-looking for an eternity in web years.</p>
<p>The post <a href="https://www.harmonicnw.com/2026/01/the-cobbler-has-shoes-the-story-of-the-harmonic-northwest-rebrand/">The Cobbler has Shoes! (the story of the Harmonic Northwest rebrand)</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Making Puget Sound Watersheds Healthier</title>
		<link>https://www.harmonicnw.com/2025/09/making-puget-sound-watersheds-healthier/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Sun, 07 Sep 2025 23:27:52 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://harmonicnw.madebyhnw.dev/?p=2435</guid>

					<description><![CDATA[<p>Harmonic Northwest recently helped out with a website redesign for Stewardship Partners, a 501(c)(3) nonprofit whose mission is &#8220;to create people-based solutions that engage Puget Sound communities as caretakers of&#8230; <a href="https://www.harmonicnw.com/2025/09/making-puget-sound-watersheds-healthier/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2025/09/making-puget-sound-watersheds-healthier/">Making Puget Sound Watersheds Healthier</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Harmonic Northwest recently helped out with a website redesign for Stewardship Partners, a 501(c)(3) nonprofit whose mission is &#8220;to create people-based solutions that engage Puget Sound communities as caretakers of the land and water that sustain us&#8221;. We are very much on board with helping improve the health of watersheds in the Puget Sound and were happy to revamp their website to help them meet some strategic goals.</p>
<p>The site uses the <a href="https://wordpress.org/themes/twentyseventeen/">Twenty Seventeen theme</a> and is hosted on <a href="https://wordpress.com">wordpress.com</a>.</p>
<p>Updates included:</p>
<ul>
<li>Adjusted layout to improve UX and overall look-and-feel</li>
<li>Adjusted navigation</li>
<li>Added new content and pages</li>
<li>Added carousel of ongoing projects</li>
<li>Added search bar</li>
<li>Improved RainChangers banner</li>
<li>Made responsive updates for mobile</li>
<li>Reworked company logos on Corporate Opportunities page</li>
<li>Performed general back end updates (WordPress core, plugins)</li>
</ul>
<p>You can check out the website at:</p>
<p><a href="https://www.stewardshippartners.org/">https://www.stewardshippartners.org</a></p>
<p>The post <a href="https://www.harmonicnw.com/2025/09/making-puget-sound-watersheds-healthier/">Making Puget Sound Watersheds Healthier</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Lighthouse Scores That Shine Mighty Bright</title>
		<link>https://www.harmonicnw.com/2025/08/lighthouse-scores-that-shine-mighty-bright/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Thu, 21 Aug 2025 21:37:01 +0000</pubDate>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[SEO]]></category>
		<guid isPermaLink="false">https://harmonicnw.madebyhnw.dev/?p=1992</guid>

					<description><![CDATA[<p>100, 100, 97, 100&#8230; these are the kind of Google Lighthouse numbers we like to see! When we built the first version of the Northern Pacific Power website, the Google&#8230; <a href="https://www.harmonicnw.com/2025/08/lighthouse-scores-that-shine-mighty-bright/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2025/08/lighthouse-scores-that-shine-mighty-bright/">Lighthouse Scores That Shine Mighty Bright</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p class="h4"><strong><em>100, 100, 97, 100</em>&#8230; these are the kind of Google Lighthouse numbers we like to see!</strong></p>
<p>When we built the first version of the <a href="https://www.northernpacificpower.com/">Northern Pacific Power website</a>, the Google Lighthouse scores were pretty good, largely in the 75-95 range. But we really wanted to make an effort to help the site reach its full SEO potential, so we took a little extra time to see how far we could push the boundaries.</p>
<p>The results of the efforts were quite good. After doing some auditing and making updates, test results were hitting 100 or very near to it for all categories on most pages.</p>
<p>Getting there required applying a variety of updates including alternate image delivery, improving semantic markdown, auditing accessibility tagging, optimizing load times for mobile and adding server-level cacheing rules.</p>
<p>This is on a WordPress site, btw. So don&#8217;t let anybody tell you WordPress sites can&#8217;t be blazing fast!</p>
<p>The post <a href="https://www.harmonicnw.com/2025/08/lighthouse-scores-that-shine-mighty-bright/">Lighthouse Scores That Shine Mighty Bright</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Harmonic Northwest Website Accessibility Audit</title>
		<link>https://www.harmonicnw.com/2025/01/the-harmonic-northwest-website-accessibility-audit/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Thu, 02 Jan 2025 00:20:21 +0000</pubDate>
				<category><![CDATA[Company]]></category>
		<category><![CDATA[Accessibility]]></category>
		<guid isPermaLink="false">https://harmonicnw.madebyhnw.dev/?p=1507</guid>

					<description><![CDATA[<p>Today in company news: Harmonic Northwest is now offering website accessibility audits as a service. The audit entails running some automated tests on your website and more importantly, non-automated tests&#8230; <a href="https://www.harmonicnw.com/2025/01/the-harmonic-northwest-website-accessibility-audit/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2025/01/the-harmonic-northwest-website-accessibility-audit/">The Harmonic Northwest Website Accessibility Audit</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Today in company news: <em>Harmonic Northwest is now offering website accessibility audits as a service</em>.</p>
<p>The audit entails running some automated tests on your website and more importantly, non-automated tests done by a real human, to produce a report containing a detailed checklist of items you&#8217;ll need to fix to bring your site into <a href="https://www.w3.org/WAI/standards-guidelines/wcag/">WCAG 2.2 AA compliance</a>. We aim to provide this service at an affordable price to companies large and small.</p>
<h2>But Why?</h2>
<p>Why is accessibility important, you may ask? Well, firstly, because <em>access to information is a human right</em>. Measures to make websites accessible are important for the same reasons that installing wheelchair ramps in front of building entrances and adding audio to crosswalk signals are important—they help ensure everybody has access to the benefits provided by our society.</p>
<p>Beyond that, it turns out that making websites accessible to folks who have sensory disabilities usually makes them easier for everybody else to access, as well. Those captions that are put on videos for folks who can&#8217;t hear? Turns out those come in handy for the rest of us when we&#8217;re trying to watch a video in a bustling cafe or at a noisy job site. The large text used for folks who don&#8217;t see well? That actually works great for when you browse a website on a tiny device or try to pick out text through sunlight glaring off a screen.</p>
<p>Google and other search engines have given us an additional reason to make our websites accessible: to improve search engine result placement. Google has taken the step of penalizing sites that are found to not be accessible. This incentivisation has actually gone a long way toward making the web more accessible.</p>
<p>If none of the above are enough to motivate you to make your site accessible, then perhaps the threat of a lawsuit may. <a href="https://info.usablenet.com/ada-website-compliance-lawsuit-tracker">Companies big and small have been successfully sued in many states for failing to make their sites accessible</a>. The <a href="https://blog.equally.ai/web-accessibility/ada-lawsuit-settlement-amounts/">payouts in these lawsuits</a> can be significant, even when settling for reduced amounts to avoid court proceedings.</p>
<h2>How The Audit Works</h2>
<p>Let&#8217;s say you manage a company website and are interested in getting a Harmonic Northwest Website Accessibilty Audit.</p>
<p>The process starts on our <a href="https://www.harmonicnw.com/website-accessibility-audit/">audit request page</a>, where you give us some information about your company and website, choose some options and submit a payment. During this process, you&#8217;ll call out a few of the more important pages on the site, which we can prioritize in our audit.</p>
<p>When we run the audit, we&#8217;re not evaluating every single page of the site, but rather looking at a cross section of three to six representative pages. This is enough to allow us to see problematic patterns that likely appear on other pages of your site beyond the handful that we check. Three pages is our &#8220;standard&#8221; starting point, but choosing more pages allows us to get a fuller picture of potential problems on your website.</p>
<p>We begin our audits by running industry-standard automated tests that quickly identify technical issues on your site. This automated testing covers about 30% of the range of accessibility issues you might find on a site. Then we run through a checklist of manual tests to identify the other 70% of issues that automated tests don&#8217;t check for. The human part of the process is the most important part, catching structural and context-specific issues that robots currently aren&#8217;t so good at identifying.</p>
<p>Within 2-3 weeks, we&#8217;ll send you a report on our findings. Those findings will include an easy-to-digest list of issues that will need to be addressed to be fully compliant with the WCAG 2.2 AA standard. Each issue we call out will contain information on where the issue is present, how severe it is, how difficult it might be to fix and a star-based &#8220;fix value&#8221; that can help you prioritize remediation work (i.e. where is the low-hanging fruit?)</p>
<p>The audit is primarily geared toward informational and ecommerce websites built on common platforms such as WordPress, Shopify, Squarespace, Wix and the like. We are able to audit most sites, even ones that aren&#8217;t on a popular site-building platform. The audit is not particularly well-suited to sites with a high degree of custom-built interactive components that function more like web applications—to audit that kind of site you would need a custom quote.</p>
<h2>Interested in Learning More?</h2>
<p>You can learn more and book your audit here:</p>
<p><a href="https://www.harmonicnw.com/website-accessibility-audit/">https://www.harmonicnw.com/website-accessibility-audit/</a></p>
<p>The post <a href="https://www.harmonicnw.com/2025/01/the-harmonic-northwest-website-accessibility-audit/">The Harmonic Northwest Website Accessibility Audit</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ruby on Rails, Elavon Converge and the Modernization of a Legacy Codebase</title>
		<link>https://www.harmonicnw.com/2024/10/ruby-on-rails-elavon-converge-and-the-modernization-of-a-legacy-codebase/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Thu, 24 Oct 2024 04:50:11 +0000</pubDate>
				<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Web applications]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Elastic beanstalk]]></category>
		<category><![CDATA[Elavon]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[UI design]]></category>
		<guid isPermaLink="false">https://harmonicnw.com/?p=1471</guid>

					<description><![CDATA[<p>Remember when Ruby on Rails was all the rage? The year was 2007. Steve Jobs and Apple release the first iPhone. Barry Bonds passes Hank Aaron for most career home&#8230; <a href="https://www.harmonicnw.com/2024/10/ruby-on-rails-elavon-converge-and-the-modernization-of-a-legacy-codebase/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2024/10/ruby-on-rails-elavon-converge-and-the-modernization-of-a-legacy-codebase/">Ruby on Rails, Elavon Converge and the Modernization of a Legacy Codebase</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Remember when Ruby on Rails was all the rage?</p>
<p>The year was 2007. Steve Jobs and Apple release the first iPhone. Barry Bonds passes Hank Aaron for most career home runs. Mortgages in the U.S. subprime market are defaulting at an alarming rate and a global financial crisis is brewing. The sound of <a href="https://youtu.be/2EwViQxSJJQ?feature=shared">Beyoncé&#8217;s <em>Irreplaceable</em></a> fills the air.</p>
<p>In that same year Ruby 2.0 drops, much to the delight of the web development world. This new version of Ruby is considerably more mature than its 1.x predecessor and provides a solid foundation for Ruby on Rails to really take off amongst developers looking for an alternative to Java, .NET and PHP.</p>
<p>It is around this time period that Pinemeadow Golf embarks on rebuilding their online store. The previous version of the store had been built several years earlier on another hot new framework of its time, PERL, but the front end needs some major updates and PERL is quickly falling out of fashion. The team decides to take a chance on a new framework and the journey of building a store with Ruby on Rails begins.</p>
<p>Fast forward to 15 years later. The site is still chugging along using a combination of Ruby on Rails code along with some legacy PERL components. The site needs some new features and maintenance but the company&#8217;s lone code maintainer has moved on to greener fairways. The company&#8217;s CEO finds Harmonic Northwest and a new partnership begins.</p>
<p><img loading="lazy" decoding="async" class="alignnone size-large wp-image-1478" src="https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-home.jpg" alt="screenshot of the pinemeadowgolf.com home page" width="1024" height="541" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-home.jpg 1920w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-home-900x475.jpg 900w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-home-1200x634.jpg 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-home-768x406.jpg 768w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-home-1536x811.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h2>Renovate or Rebuild?</h2>
<p>It quickly became clear that major changes would be needed to get the site into shape (more on that below) and that presented a choice that would define the rest of the development process: do we make updates to the existing codebase or scrap it all and start over with a newer framework?</p>
<p>We knew that frameworks like Shopify and Magento could handle the store&#8217;s functionality and it was certainly tempting to switch to a more modern platform&#8230; but was that the best choice for the client?</p>
<p>We elected to keep the store on the same platform, that is to say on Ruby on Rails powered by AWS Elastic Beanstalk. There were enough complicated pieces on the site that were currently working well that we felt trying to translate all of those to a new platform might not be the best way forward. And so the Harmonic Northwest team dove into understanding and transforming this legacy codebase.</p>
<h2>Environment Upgrades</h2>
<p>The website had not seen any updates to its various environments and dependencies for a long while. Much needed updating when Harmonic Northwest arrived on the scene including Ruby, Ruby on Rails, Puma, various gem packages and the Elastic Beanstalk platform. The Elastic Beanstalk platform was sufficiently outdated that it was no longer supported by AWS which was going to be a problem for deployments and maintaining website stability.</p>
<p>Ultimately we were able to bump versions on all of these (1 major version for Ruby and RoR, more for many gems) and migrate the application to a supported Elastic Beanstalk platform.</p>
<h2>Elavon Converge Credit Card Processing</h2>
<p><img loading="lazy" decoding="async" class="alignright size-medium wp-image-1477" src="https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-converge-lightbox-300x208.jpg" alt="Elavon Converge lightbox payment form" width="300" height="208" />The primary ask for this work wasn&#8217;t actually modernizing systems—that was just a prerequisite to being able to do anything else on the site. The main task at hand was actually swapping out their custom built credit card processing system with a new one.</p>
<p>We had a business requirement to implement <a href="https://www.elavon.com/solutions/payment-gateways/converge.html">Elavon&#8217;s Converge payment processor</a>, a hosted payment gateway similar to something like Stripe or PayPal. Their system offers tooling that integrates tightly to application code to handle credit card authorizations and payments. Converge has a few ways to do this, but we opted to use their standalone lightbox solution. This method opens a modal window containing a short form for entering credit card information. All of the data is stored on Converge&#8217;s side and our application would receive a token to capture payment.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1479" style="max-width: min(100%, 700px);" src="https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-charged.jpg" alt="screenshot of pinemeadowgolf.com orders admin" width="1024" height="621" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-charged.jpg 1280w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-charged-900x546.jpg 900w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-charged-1200x728.jpg 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-charged-768x466.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h2>New Admin Orders UI</h2>
<p>Adding the new credit card functionality also entailed setting up a new admin area where administrators can log in to charge, update and cancel payments. Harmonic Northwest designed a UI using Figma and the interface was built onto an existing Active Admin instance used for managing other parts of the site.</p>
<h2>Other Updates</h2>
<p>After modernizing their systems and swapping out the credit card processor, we performed several other improvements. Some of the tasks involved improving data tagging for Google Merchant and Facebook. Other tasks were geared toward improving SEO and analytics. We also did some work to reconnect the site to their affiliate sales provider <a href="https://www.cj.com">Commission Junction</a>.</p>
<p style="text-align: center;"><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1480" style="max-width: min(100%, 700px);" src="https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-login.jpg" alt="screenshot of pinemeadowgolf.com admin login" width="1024" height="621" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-login.jpg 1280w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-login-900x546.jpg 900w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-login-1200x728.jpg 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/10/pinemeadow-golf-orders-admin-login-768x466.jpg 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h2>Tee Off with Pinemeadow Golf!</h2>
<p>You can check out the site and discover your next set of golf clubs at <a href="https://pinemeadowgolf.com">https://pinemeadowgolf.com</a>.</p>
<p>The post <a href="https://www.harmonicnw.com/2024/10/ruby-on-rails-elavon-converge-and-the-modernization-of-a-legacy-codebase/">Ruby on Rails, Elavon Converge and the Modernization of a Legacy Codebase</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Lick, Stick, Shop</title>
		<link>https://www.harmonicnw.com/2024/10/lick-stick-shop/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Wed, 09 Oct 2024 21:48:42 +0000</pubDate>
				<category><![CDATA[Ecommerce]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[Gravity forms]]></category>
		<category><![CDATA[Stripe]]></category>
		<category><![CDATA[WooCommerce]]></category>
		<guid isPermaLink="false">https://harmonicnw.com/?p=1427</guid>

					<description><![CDATA[<p>When it comes to building ecommerce sites, Harmonic Northwest has amassed quite a nice selection of platform options to choose from that we have built sites on in the past&#8230; <a href="https://www.harmonicnw.com/2024/10/lick-stick-shop/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2024/10/lick-stick-shop/">Lick, Stick, Shop</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>When it comes to building ecommerce sites, Harmonic Northwest has amassed quite a nice selection of platform options to choose from that we have built sites on in the past including Shopify, Magento, WooCommerce, Square and more. This breadth of hands-on experience is helpful for making sure we pick the best-fit ecommerce platform for the project and avoid wasting time, energy and money auditioning services that ultimately aren&#8217;t a good match. This experience was a big help in figuring out an ecommerce solution for a unique project that was brought to us by accomplished ideasmith and <a href="https://plazm.com">Plazm</a> creative director Josh Berger.</p>
<p>Josh and his business partner Nico Courtelis are co-founders of <a href="https://theportlandstampcompany.com/">The Portland Stamp Company</a> and are in the business of reviving the somewhat forgotten art of poster stamps. They specialize in producing sheets of custom stamps to be used for celebrating special occasions (think weddings or births), promoting events or just good ol&#8217; embellishment. You can have them help you design special stamps, upload your own artwork for them to print or purchase some blank sheets in bulk to print or draw your own art on them.</p>
<p>The two were interested in putting together an ecommerce site for the business that would be tightly integrated into a WordPress site. Having a long history of working with Josh on a number of other great projects (see: <a href="https://www.harmonicnw.com/2017/04/new-fort-george-brewery-site/">Fort George Brewery</a>, <a href="https://dmsarchitects.com/">DMS Architects</a>, <a href="https://www.harmonicnw.com/2012/06/learning-from/">studioriley</a>), we quickly agreed to help out. Josh provided some designs and then we dove right into the build.</p>
<h2>WordPress Integration</h2>
<p>The website needed to have a trove of information about poster stamps, an easily updatable gallery and a section showcasing the talented featured artists they work with. The site would also need to have a number of content modules that could be used flexibly across the site.</p>
<p>On the ecommerce side, they needed to offer a guided experience to their customers that would allow them to go through a sequence of steps to input all of the information and assets needed to produce a customized sheet of stamps.</p>
<p>These requirements pointed to WordPress being a good solution. WordPress&#8217; flexible and easy-to-use CMS system could handle the informational content and some specialized plugins would allow us to put the pieces in place to do the ecommerce part and customize the shopping experience.</p>
<h2>Configurable Products with File Upload</h2>
<p>The focal point of the ecommerce experience was giving the customers the ability to order custom stamps using their own artwork. There were a few challenges that stood out here, namely:</p>
<ul>
<li>Creating a multi-step checkout process to allow a customer to upload information and assets</li>
<li>Handling individual pricing on the 90 or so product configurations stemming from four different selectable options</li>
<li>Allowing users to attach artwork to an order</li>
</ul>
<p>In the end we used a combination of plugins and custom code to create the experience Josh and co. were looking for, and it all came together very nicely.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1434" src="https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-vizualizer.jpg" alt="The Portland Stamp Company stamp sheet visualizer tool" width="1024" height="622" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-vizualizer.jpg 1920w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-vizualizer-900x547.jpg 900w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-vizualizer-1200x729.jpg 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-vizualizer-768x467.jpg 768w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-vizualizer-1536x934.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h2>Dynamic Visualizations</h2>
<p>Another feature that really makes this site special is the stamp visualizer. A user can upload their artwork to the site through their web browser and instantly see what that artwork will look like placed onto a sheet of perforated stamps. The tool allows the user to choose which stamp sheet to use, select page orientation and to choose a custom background color, and then it updates the product preview in real time. It&#8217;s fun to use and seeing the finished product has surely inspired some to become self-styled stamp makers.</p>
<h2>Other features</h2>
<p>There were a number of other useful and notable features we added to the site including an integration to Shipstation, Stripe payment processing, category-based filtering for purchasable pre-printed stamps, cross linking to <a href="https://buyolympia.com">buyolympia</a>, optimizing email deliverability for the order notifications and adding tagging for SEO.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1432" src="https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-collage.jpg" alt="A collage of stamps containing colorful artwork" width="1024" height="552" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-collage.jpg 1920w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-collage-900x485.jpg 900w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-collage-1200x647.jpg 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-collage-768x414.jpg 768w, https://www.harmonicnw.com/wp-content/uploads/2024/10/portland-stamp-company-collage-1536x828.jpg 1536w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></p>
<h2>Go Get Your Stamps!</h2>
<p>You can check out the site and create your very own customized poster stamps at:</p>
<p><a href="https://theportlandstampcompany.com">https://theportlandstampcompany.com</a></p>
<p>The post <a href="https://www.harmonicnw.com/2024/10/lick-stick-shop/">Lick, Stick, Shop</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Unpacking the AWS Toolbox</title>
		<link>https://www.harmonicnw.com/2024/06/unpacking-the-aws-toolbox/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Fri, 14 Jun 2024 20:48:37 +0000</pubDate>
				<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Web applications]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[Elastic beanstalk]]></category>
		<guid isPermaLink="false">https://harmonicnw.com/?p=1398</guid>

					<description><![CDATA[<p>Amazon Web Services (AWS) can seem like a confusing mess the first time you are tasked with using it. The UI isn&#8217;t great, the categorization of concerns isn&#8217;t particularly intuitive&#8230; <a href="https://www.harmonicnw.com/2024/06/unpacking-the-aws-toolbox/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2024/06/unpacking-the-aws-toolbox/">Unpacking the AWS Toolbox</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Amazon Web Services (AWS) can seem like a confusing mess the first time you are tasked with using it. The UI isn&#8217;t great, the categorization of concerns isn&#8217;t particularly intuitive and the rabbit hole of settings for every little thing goes deep.</p>
<p>But there are some good reasons for its popularity. AWS has a broad range of useful and powerful features and its scalable nature makes it a practical choice for projects big and small.</p>
<p>Harmonic Northwest has been working on a couple of web application projects lately that are built on AWS and we have had a chance to get a bit more familiar with the platform. I thought I&#8217;d share some info that might be useful to others who are new to it.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1400" src="https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-home-900x442.png" alt="" width="900" height="442" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-home-900x442.png 900w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-home-1200x589.png 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-home-768x377.png 768w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-home-1536x754.png 1536w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-home-2048x1005.png 2048w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p>
<h2>Where is my site?</h2>
<p>AWS doesn&#8217;t organize things by website or particular project, but rather they steer you to their various service offerings individually. So if you have a website that uses AWS for the DNS records, hosting and database, you&#8217;re going to have to look in three different places to find and manage those individual parts of your site.</p>
<h2>Where is my service?</h2>
<p>The <strong>Recently visited</strong> list shows you services you have used lately, but it&#8217;s not a comprehensive list of services that might be used by your project. To find a service not on this list, your best bet is using the Search tool up top. And if you don&#8217;t know the name of the service you&#8217;re after, you can wade through their rather long list of All services.</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1399" src="https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-all-services-900x610.png" alt="" width="900" height="610" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-all-services-900x610.png 900w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-all-services-1200x813.png 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-all-services-768x520.png 768w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-all-services-1536x1040.png 1536w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-all-services-2048x1387.png 2048w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p>
<h2>What services does my application use?</h2>
<p>There are a whole lot of AWS services, but most projects probably only use a handful. Here are some popular ones that were relevant to projects we&#8217;ve been working on:</p>
<ul>
<li><strong>IAM</strong> — Stands for &#8220;Identity and Access Management&#8221;. This is where you manage users of your AWS account. You can assign user-level permissions to various servies, reset passwords and add or remove users here.</li>
<li><strong>Route 53</strong> — This handles DNS and is comparable to the feature set of a standard registrar like NameCheap or GoDaddy.</li>
<li><strong>EC2</strong> — These are the individual cloud servers you&#8217;ll likely be hosting your application on. You can connect to these servers via an online console in the AWS admin area.</li>
<li><strong>RDS</strong> — Stands for &#8220;Relational Database Service&#8221;. These are virtual servers that host database installations like MySQL or PostgreSQL. The data for your application is probably here.</li>
<li><strong>S3</strong> — This is used for media storage. Images and videos from your website can live here.</li>
<li><strong>Elastic Beanstalk</strong> — This service manages clusters of servers for load balancing, scalability and multi-server applications.</li>
<li><strong>CodeCommit</strong> — This service acts as your Git repository for a project. You can use your commits to deploy your application. And you can employ adjacent services like CodeBuild and CodeDeploy to manage your build/deploy pipeline.</li>
</ul>
<h2>Security Groups</h2>
<p>You&#8217;ll need to add entries to the security groups for your EC2 and RDS instances to allow developers to directly connect to those servers. Specifically, you&#8217;ll need to pick what kind of connection is needed (SSH, MySQL, etc.) and the IP the developer is working from. That IP will then be added to a whitelist.</p>
<p>The format required by AWS for these entries isn&#8217;t the most obvious. You&#8217;ll need to list the IP followed by &#8220;/32&#8221; to tell it to pay attention to all four parts. Use &#8220;/16&#8221; if you want it to allow for variation in the last two parts (i.e. 123.456.*.*).</p>
<p><img loading="lazy" decoding="async" class="aligncenter size-large wp-image-1401" src="https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-security-group-900x246.png" alt="" width="900" height="246" srcset="https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-security-group-900x246.png 900w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-security-group-1200x328.png 1200w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-security-group-768x210.png 768w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-security-group-1536x420.png 1536w, https://www.harmonicnw.com/wp-content/uploads/2024/06/aws-security-group-2048x560.png 2048w" sizes="auto, (max-width: 900px) 100vw, 900px" /></p>
<p>Also note that you can use the same security groups for multiple servers, which can save you the hassle of applying the same rules to multiple servers.</p>
<p>The post <a href="https://www.harmonicnw.com/2024/06/unpacking-the-aws-toolbox/">Unpacking the AWS Toolbox</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Making Sure Your Emails Get Delivered, Rain or Shine</title>
		<link>https://www.harmonicnw.com/2024/04/making-sure-your-emails-get-delivered-rain-or-shine/</link>
		
		<dc:creator><![CDATA[gage]]></dc:creator>
		<pubDate>Thu, 25 Apr 2024 16:06:57 +0000</pubDate>
				<category><![CDATA[Knowledge]]></category>
		<category><![CDATA[Web applications]]></category>
		<category><![CDATA[Email campaigns]]></category>
		<guid isPermaLink="false">https://harmonicnw.com/?p=1376</guid>

					<description><![CDATA[<p>As email providers have been increasing scrutiny of email traffic to cut down on spam, Harmonic Northwest has been seeing more requests to help configure email systems to ensure that&#8230; <a href="https://www.harmonicnw.com/2024/04/making-sure-your-emails-get-delivered-rain-or-shine/">continue reading</a></p>
<p>The post <a href="https://www.harmonicnw.com/2024/04/making-sure-your-emails-get-delivered-rain-or-shine/">Making Sure Your Emails Get Delivered, Rain or Shine</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>As email providers have been increasing scrutiny of email traffic to cut down on spam, Harmonic Northwest has been seeing more requests to help configure email systems to ensure that company emails are getting through to customers. A lot of times these requests come as a result of companies seeing their marketing emails going straight to recipients&#8217; spam folders or notifications from a website vanishing into thin air.</p>
<p>The specific solution to these problems depends on the situation, but I&#8217;ll go over a few common threads we&#8217;ve been seeing and scenarios that Harmonic Northwest has addressed.</p>
<h2>The Holy Trifecta of Email Deliverability: DKIM, SPF and DMARC</h2>
<p>Most of the email deliverability issues we&#8217;ve been seeing stem from missing or incorrectly configured DKIM, SPF and DMARC records. Email providers have <a href="https://sendgrid.com/en-us/blog/gmail-yahoo-sender-requirements">explicitly called out strict requirements</a> to have these three types of records set up properly in order for an email message and the email sender to be consider legitimate. I&#8217;ll go over what these are and summarize some typical fixes below.</p>
<p>SPF refers to a <a href="https://www.cloudflare.com/learning/dns/dns-records/dns-txt-record/">DNS TXT record</a> that lists out servers that are allowed to send emails from your domain.</p>
<p>For example, if you use Outlook for your company email, MailChimp for marketing emails and have a WordPress site that sends contact form notifications, your SPF record will contain references to those three sources. If a malicious actor attempts to spoof your email and send out messages from a server not on that list, email services will see that and mark those emails as potentially fraudulent.</p>
<p>DKIM is a little more complicated—it refers to a secure key pair that validates an email message as being authentic where part of the key is contained in a DNS TXT record for your domain (the public part) and the other part of the key is on the server sending the email (the secret part). If you have multiple services sending emails out using your domain, then you&#8217;ll likely have multiple DKIM records.</p>
<p>For example, let&#8217;s say your WordPress site sends out notifications to a company email address when someone fills out a contact form. To ensure that message reaches the inbox of your office staff, you&#8217;ll need to make sure that 1) your server is configured to serve up DKIM keys, 2) that there is a properly configured DKIM key on the server that gets used for those outgoing notification emails and 3) that there is a corresponding DKIM entry in your DNS TXT records.</p>
<p>DMARC is the simplest of the three: it is a relatively straightforward DNS TXT record that tells email services what to do when emails are judged to be invalid. With the help of a DMARC record, you can get notifications about emails that are getting denied with useful information for debugging.</p>
<h2>Troubleshooting Website Notifications</h2>
<p>When working through email issues related to messages coming from a website or web application, typically we are looking into the hosting situation to make sure a good DKIM record is set up and then editing DNS entries to make sure we have a matching DKIM record and properly configured SPF and DMARC records. Most popular hosts already have the baseline DKIM technology in place and you just need to know where to look to find the DKIM key that you need on the DNS side. This is case for hosts like Dreamhost, Bluehost and SiteGround. With more customized server setups for a host like DigitalOcean, there might be extra work to do to ensure the server has the correct suite of packages and the proper setup in configuration files to link the DKIM key to the outgoing emails.</p>
<h2>Email Deliverability for Marketing Campaigns</h2>
<p>In the case of email marketing systems like MailChimp, there are configuration steps that need to happen within the administration panel of the account as well as the addition of DNS records (provided by the email service) at your domain registrar. Often times these involve using CNAME records instead of TXT records. These configuration steps are generally well-described by the service and usually easy to implement.</p>
<h2>Third Party Email Services</h2>
<p>While we generally prefer to set up DNS records and tweak server settings to allow emails to be sent directly from a website or application server, sometimes we choose to send email via a third-party service like <a href="https://sendgrid.com/en-us">SendGrid</a>, <a href="https://www.mailgun.com">MailGun</a> or <a href="https://postmarkapp.com">Postmark</a>. In this case, we will typically install plugins or packages that link a site or application&#8217;s email functionality to this third party sender and update some DNS records as directed by the service. Once connected, the service handles the more technical parts of your email setup to ensure you are in compliance with deliverability standards.</p>
<p>Using a third-party service can be advantageous in several circumstances:</p>
<ul>
<li>The sending server has been blacklisted due to previous email history</li>
<li>The sending server does not support DKIM authentication or is otherwise unsuitable for sending emails</li>
<li>The client would like better visibility into statistics around email deliverability</li>
<li>The client doesn&#8217;t want to deal with &#8220;server stuff&#8221;</li>
</ul>
<h2>Send via External SMTP</h2>
<p>Sometimes we set up a connection to send emails from an email account within a company&#8217;s existing email system. This can simplify the setup process as you don&#8217;t need to sign up for a third party email service or update any DNS records or server settings.</p>
<p>For example, maybe you&#8217;re using Outlook for your company email. You can create a user called &#8220;notifications@mydomain.com&#8221; that is a dedicated address for sending out notifications from your website. In this case we can connect to your Outlook SMTP server, log in as that particular user and send out emails as though they were being sent by that user.</p>
<p>There are downsides to doing it this way. If the password for this email account is ever updated by a staff member or if the account is ever deleted, that would cause the email sendouts from the website to fail. The connection may introduce speed and reliability issues and depending on the quantity of emails being sent, costs for the email service could increase. Also, by using an email address on your primary domain (i.e. not a subdomain), there are risks for damaging the reputation of your primary domain&#8230; more on that below.</p>
<h2>Protecting Your Domain Reputation by using a Subdomain</h2>
<p>Let&#8217;s pretend for a moment that a website you manage is behaving badly, perhaps due to a bug or malicious activity, and sending out a large quantity of emails that are being classified as junk. This can have implications for your entire email domain. If notifications@mydomain.com is deemed an untrustworthy sender, other addresses on the domain (like janedoe@mydomain.com) might also end up getting lumped into this category.</p>
<p>To avoid this risk and protect your primary domain, you can set up your website or email list to send from a dedicated subdomain. You might choose a subdomain like &#8220;email.mydomain.com&#8221; to use with your email campaigns. Then if messages sent from notifications@email.mydomain.com get deemed spammy, the reputation of the subdomain will take a hit but the primary domain will remain unscathed.</p>
<h2>In Conclusion…</h2>
<p>Many factors can affect email deliverability and the reputation of your domain. I&#8217;ve touched on some of the more technical ones here, but there are more: the content of your messages, the validity of recipient email addresses, recipients marking your messages as spam, etc.</p>
<p>If you are having problems with email deliverability, <a href="mailto:contact@harmonicnw.com">get in touch</a> and we can help get you pointed in the right direction.</p>
<p>The post <a href="https://www.harmonicnw.com/2024/04/making-sure-your-emails-get-delivered-rain-or-shine/">Making Sure Your Emails Get Delivered, Rain or Shine</a> appeared first on <a href="https://www.harmonicnw.com">Harmonic Northwest</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
