<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<title type="text">Jesse Heady</title>
<generator uri="https://github.com/mojombo/jekyll">Jekyll</generator>
<link rel="self" type="application/atom+xml" href="https://jesseheady.com/feed.xml" />
<link rel="alternate" type="text/html" href="https://jesseheady.com" />
<updated>2026-04-07T09:14:08-04:00</updated>
<id>https://jesseheady.com/</id>
<author>
  <name>Jesse Heady</name>
  <uri>https://jesseheady.com/</uri>
  <email></email>
</author>


<entry>
  <title type="html"><![CDATA[How I managed to score 100 in Lighthouse]]></title>
  <link>https://jesseheady.com/2024/05/how-i-scored-100-lighthouse.html</link>
  <id>https://jesseheady.com/2024/05/how-i-scored-100-lighthouse</id>
  <updated>2025-08-18T00:00:00-00:00</updated>
  <published>2024-05-20T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;I’ve been building this site using npm and Jekyll, while deploying on CloudFront, for many years. It’s been &lt;em&gt;just&lt;/em&gt; fast enough for me, but I’m always looking for ways to make things better. I’ve been skirting the line with a ‘perfect’ performance score for a long time. Lighthouse wasn’t giving me 100 across the board and that was bothering me. So, I decided to treat the site like I would any product: run a proper performance and quality audit, fix the issues, and iterate until Performance, Accessibility, SEO, and Best Practices all hit 100. Simple, right? Here’s how everything went.&lt;/p&gt;

&lt;h2 id=&quot;where-things-started&quot;&gt;Where things started&lt;/h2&gt;

&lt;p&gt;The stack was already in pretty good shape. As noted, I build static HTML and hashed CSS and JS for long-term caching, employ a service worker, and serve everything via a CDN (CloudFront). So the low-hanging fruit was already done. What was left were the kinds of issues that audits love to flag: render-blocking resources, images without dimensions or loading hints, contrast and link styling for accessibility, and a few SEO and security details. I didn’t record exact before scores but I have made other attempts at these sorts of improvements in the past, and can confidently say scores have hovered around 80-90 for a long time. If you’re in the same boat, run Lighthouse and use that as your baseline. My goal was to fix every failing or warning audit until all four categories showed 100.&lt;/p&gt;

&lt;h2 id=&quot;performance-critical-path-and-core-web-vitals&quot;&gt;Performance: critical path and Core Web Vitals&lt;/h2&gt;

&lt;p&gt;I started with performance because it touches so much of the site experience. Performance is also my passion. I love the other areas we’ll cover as well (accessibility and SEO) but I’ve spent a lot of time focused on web performance over the years, so this is one particular area I felt I needed to get right.&lt;/p&gt;

&lt;h3 id=&quot;css-critical-path-and-third-party-scripts&quot;&gt;CSS, critical path, and third-party scripts&lt;/h3&gt;

&lt;p&gt;The single biggest fix across the site was the main stylesheet. I had a malformed link tag in my site &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; that tried to be both a preload and a stylesheet. I assume this was an attempt at an old performance tactic or a misunderstood application. I split the style reference into a proper &lt;code&gt;&amp;lt;link rel=&quot;preload&quot; as=&quot;style&quot;&amp;gt;&lt;/code&gt; followed by &lt;code&gt;&amp;lt;link rel=&quot;stylesheet&quot;&amp;gt;&lt;/code&gt;, which lets the browser prioritize CSS correctly. This directly improved First Contentful Paint (FCP) and Largest Contentful Paint (LCP) considerably.&lt;/p&gt;

&lt;p&gt;Furthermore, I still leveraged Google Analytics which was declared in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; and blocked parsing while it was loading. This is a serious single point of failure (SPOF) anti-pattern. Even Google is fallable, after all! I moved this external script reference to the footer and kept it async so it no longer affected Time to Interactive (TTI) or Total Blocking Time (TBT). I also added &lt;code&gt;dns-prefetch&lt;/code&gt; and &lt;code&gt;preconnect&lt;/code&gt; for the the Google Analytics origin so that when those requests run, they start faster.&lt;/p&gt;

&lt;h3 id=&quot;images-and-fonts&quot;&gt;Images and fonts&lt;/h3&gt;

&lt;p&gt;Feature images and post cards were missing consistent &lt;code&gt;width&lt;/code&gt;, &lt;code&gt;height&lt;/code&gt;, &lt;code&gt;loading&lt;/code&gt;, and &lt;code&gt;fetchpriority&lt;/code&gt;. I added dimensions everywhere to avoid Cumulative Layout Shift (CLS), &lt;code&gt;loading=&quot;lazy&quot;&lt;/code&gt; for below-the-fold images, and &lt;code&gt;fetchpriority=&quot;high&quot;&lt;/code&gt; only for the main LCP candidate. I also added image &lt;code&gt;sizes&lt;/code&gt; so that when I add a responsive image pipeline later, the groundwork is already there.&lt;/p&gt;

&lt;p&gt;I was also preloading several font variants from Google Fonts, again as a third-party resource. I decided to host the fonts first-party and also migrated to more accessible font faces (more on that later). I kept &lt;code&gt;preload&lt;/code&gt; only for the two fonts used above the fold (Lexend and Atkinson Hyperlegible Regular) and switched non-critical variants (for example, italics) to &lt;code&gt;font-display: optional&lt;/code&gt; to reduce layout shift and avoid unnecessary network cost.&lt;/p&gt;

&lt;h3 id=&quot;service-worker-load-and-caching&quot;&gt;Service worker load and caching&lt;/h3&gt;

&lt;p&gt;The service worker was registering on &lt;code&gt;window.load&lt;/code&gt;, which fires late. This is not great when we want to leverage the benefits the service worker is providing on subsequent loads. I moved registration into the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; with a small inline script so the SW activates sooner and can serve cached assets on repeat visits.&lt;/p&gt;

&lt;p&gt;I also tuned the Workbox config for SW caching so the worker precaches only critical assets (CSS, JS, fonts) and uses runtime caching for HTML and images with sensible TTLs. I’d previously been caching &lt;em&gt;everything&lt;/em&gt; including all blog entry and header images. That was too aggressive and caused our SW cache to be too large, and while offline viewing of this site is neat, it’s not worth the trade-off in performance to treat like a full PWA in real-world use.&lt;/p&gt;

&lt;p&gt;After these changes, LCP, FCP, CLS, and TBT all landed in the “good” range and the Performance score in Lighthouse reached 100. This felt like a major milestone to me and it definitely feels good to see that green Performance score. Off to a great start!&lt;/p&gt;

&lt;h2 id=&quot;accessibility-contrast-links-and-structure&quot;&gt;Accessibility: contrast, links, and structure&lt;/h2&gt;

&lt;h3 id=&quot;improving-readability&quot;&gt;Improving readability&lt;/h3&gt;

&lt;p&gt;I next ran the Lighthouse accessibility audit and fixed every failure and warning. The main problematic areas were color contrast, link affordance, and heading order. I followed some best practice recommendations like those from &lt;a href=&quot;https://www.a11y-collective.com/blog/color-blind-accessibility-guidelines/&quot;&gt;a11ty Collective&lt;/a&gt;. As noted earlier, I also adopted fonts designed for improved readability: &lt;a href=&quot;https://fonts.google.com/specimen/Lexend&quot;&gt;Lexend&lt;/a&gt; by Google for body text and &lt;a href=&quot;https://www.brailleinstitute.org/freefont/&quot;&gt;Atkinson Hyperlegible&lt;/a&gt; by The Braille Institute for headers. My base text and link colors compared with their background didn’t meet WCAG AA. I lightened body text and links (&lt;code&gt;lighten(@text-color, 10–15)&lt;/code&gt; and &lt;code&gt;lighten(@link-color, 15)&lt;/code&gt;) so they meet the 4.5:1 requirement. Buttons that had dark text on the accent color were switched to white (&lt;code&gt;#ffffff&lt;/code&gt;) so they pass as well.&lt;/p&gt;

&lt;h3 id=&quot;proper-links-and-headers&quot;&gt;Proper links and headers&lt;/h3&gt;

&lt;p&gt;Links also had to be more distinguishable beyond their color. I ensured links were underlined using &lt;code&gt;text-underline-offset&lt;/code&gt;, and a visible focus outline so keyboard users and anyone who doesn’t rely on color alone can see them clearly. Every interactive element received a visible focus style (&lt;code&gt;outline: 2px solid ...&lt;/code&gt; with an offset) so keyboard navigation is obvious. The homepage headers also jumped from &lt;code&gt;h1&lt;/code&gt; to &lt;code&gt;h3&lt;/code&gt;, which is a bad practice for screen readers and SEO alike. I fixed the hierarchy so it goes &lt;code&gt;h1&lt;/code&gt; (site name) to &lt;code&gt;h2&lt;/code&gt; (tagline) to &lt;code&gt;h3&lt;/code&gt; (post titles), with no skipped levels. The same idea was applied on other templates across the site where section structure was off.&lt;/p&gt;

&lt;p&gt;After these passes, the Accessibility score hit 100. Onward!&lt;/p&gt;

&lt;h2 id=&quot;seo-and-best-practices&quot;&gt;SEO and best practices&lt;/h2&gt;

&lt;p&gt;At this stage, SEO and Best Practices were mostly cleanup of past mistakes or simple oversights. The items that were flagged in Lighthouse for SEO were generally pretty straight forward to address. They are also designed to follow security and privacy best practices.&lt;/p&gt;

&lt;h3 id=&quot;security-and-privacy&quot;&gt;Security and privacy&lt;/h3&gt;

&lt;p&gt;For external links from blog posts or across various templates, I ensured proper use of &lt;code&gt;rel=&quot;noopener noreferrer&quot;&lt;/code&gt; and fixed any protocol-relative URLs to &lt;code&gt;https://&lt;/code&gt;. &lt;code&gt;noreferrer&lt;/code&gt; and &lt;code&gt;noopener&lt;/code&gt; are used on &lt;code&gt;target=&quot;_blank&quot;&lt;/code&gt; links so the newly opened page can’t access your page via &lt;code&gt;window.opener&lt;/code&gt; for security purposes, and the referrer isn’t sent for privacy.&lt;/p&gt;

&lt;h3 id=&quot;alt-text-and-images&quot;&gt;Alt text and images&lt;/h3&gt;

&lt;p&gt;Next, I replaced generic link text (for example, “Read more”) with descriptive text or &lt;code&gt;aria-label&lt;/code&gt; where needed. Then I ensured that images had descriptive &lt;code&gt;alt&lt;/code&gt; text &lt;em&gt;everywhere&lt;/em&gt;, and for any image that had been hosted externally and was flaky, I moved it first-party under &lt;code&gt;assets/images/&lt;/code&gt; and pointed the markup at the local file.&lt;/p&gt;

&lt;h3 id=&quot;meta-data-optimization&quot;&gt;Meta data optimization&lt;/h3&gt;

&lt;p&gt;I’d already established standard meta descriptions, canonical URLs, and Open Graph tags. I confirmed every page had a proper description and that schema (BlogPosting, WebPage) is correct. The same layouts also use microformats 2 (mf2) class names so social parsers can interpret posts and pages. Posts and cards use &lt;code&gt;h-entry&lt;/code&gt; with &lt;code&gt;p-name&lt;/code&gt;, &lt;code&gt;u-url&lt;/code&gt;, &lt;code&gt;e-content&lt;/code&gt;, &lt;code&gt;dt-published&lt;/code&gt;, &lt;code&gt;p-author h-card&lt;/code&gt;, and &lt;code&gt;p-category&lt;/code&gt; on tags; older schema and mf2 live on the same elements without duplicate markup.&lt;/p&gt;

&lt;p&gt;With all those improvements in place, SEO and Best Practices both reached 100. Very marketable!&lt;/p&gt;

&lt;h2 id=&quot;how-i-measure-iterate-and-maintain&quot;&gt;How I measure, iterate, and maintain&lt;/h2&gt;

&lt;p&gt;I used Lighthouse in Chrome DevTools–and sometimes SiteSpeed.io loaded via docker–on the live site and on local builds. I ran Lighthouse in incognito with extensions disabled to avoid noise. For each category I fixed the listed issues, rebuilt, redeployed or refreshed, and re-ran the audit until there were no more failures or warnings. I didn’t chase a specific number so much as “zero failing audits” or digging into specific warnings, and the 100-passing scores followed.&lt;/p&gt;

&lt;p&gt;I kept Core Web Vitals targets in mind to achieve a “good” score: LCP under 2.5s, CLS under 0.1, INP under 200 ms. I tried to follow current standards as of this writing, where the primary metrics of CWV: LCP, FID, and CLS, were originally announced in May 2020, and INP replaced FID in March 2024. I also documented the patterns in performance, accessibility, and SEO for myself to refer to so future changes (hopefully) stay compliant.&lt;/p&gt;

&lt;h3 id=&quot;quality-gates-and-performance-budgets&quot;&gt;Quality gates and performance budgets&lt;/h3&gt;

&lt;p&gt;As a small bonus: I also added a small script that runs after build (&lt;code&gt;npm run build:size&lt;/code&gt;) to report CSS and JS size and to fail the build if limits (100 KB CSS, 50 KB JS) are exceeded. These budgets ensure I stick to “Best Practices” and try to avoid regressions as I add more content or make additional changes. This sort of check can be added as a quality gate in build pipelines so that when a &lt;code&gt;build:size&lt;/code&gt; fails, the build fails and alerts on the condition; this is nice because it forces the standards for lower package weight to be followed, maintaining performance in the long run. Similarly, one could add steps that run Lighthouse/SiteSpeed.io checks and fail on any resulting CWV that isn’t passing.&lt;/p&gt;

&lt;figure class=&quot;img-embed&quot;&gt;
&lt;img src=&quot;https://jesseheady.com/images/lighthouse-100-badges.png&quot; alt=&quot;Lighthouse audit scores: 100 Performance, 100 Accessibility, 100 Best Practices, 100 SEO&quot; width=&quot;406&quot; height=&quot;124&quot; loading=&quot;lazy&quot; /&gt;
&lt;/figure&gt;

&lt;h2 id=&quot;whats-next&quot;&gt;What’s next&lt;/h2&gt;

&lt;p&gt;The site is in a good place: all four Lighthouse categories at 100, Core Web Vitals in the green, and documented patterns for performance, accessibility, and SEO. Optional next steps I’ve left for later include an image pipeline (responsive &lt;code&gt;srcset&lt;/code&gt;, WebP/AVIF), critical CSS extraction, font subsetting, and configuring CloudFront to send &lt;code&gt;immutable&lt;/code&gt; for hashed assets. For a small static site, the current setup is enough to keep scores at 100 as long as new content and features follow the same rules.&lt;/p&gt;

&lt;p&gt;If you’re working on a personal or small project site, the same approach works: run Lighthouse, fix the audits it reports, then encode those fixes in your templates and styles so every new page stays fast, accessible, and SEO-friendly by default.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2024/05/how-i-scored-100-lighthouse.html&quot;&gt;How I managed to score 100 in Lighthouse&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on May 20, 2024.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[Web performance: UX and revenue]]></title>
  <link>https://jesseheady.com/2022/08/from-user-experience-to-revenue-the-critical-role-of-web-performance.html</link>
  <id>https://jesseheady.com/2022/08/from-user-experience-to-revenue-the-critical-role-of-web-performance</id>
  <updated>2022-12-28T00:00:00-00:00</updated>
  <published>2022-08-26T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;I’ve previously &lt;a href=&quot;/2016/06/the-state-of-web-performance-and-internet-advertising.html&quot;&gt;written&lt;/a&gt; on the importance of web performance and that businesses should focus and prioritize performance over quick wins to boost sales or revenue. Often those can negatively impact the performance and user experience of a web application. Viewed more holistically, and accounting for the evolution of performance as a core indexing metric by Google, I thought it was important to revisit the topic of how integral web performance is to user experience, and the impacts businesses can make by focusing on performance.&lt;/p&gt;

&lt;p&gt;Now that we’ve settled in for well over a decade of web performance metrics being included as a &lt;a href=&quot;https://developers.google.com/search/blog/2010/04/using-site-speed-in-web-search-ranking&quot;&gt;critical component to search indexing&lt;/a&gt;, let’s dive into what makes the most impact, why web performance is integral to creating pleasing user experiences, and how measuring our efforts pays off. User experience (UX) has become the cornerstone of any successful online presence. As we continue to push the boundaries of technology, users’ expectations have evolved. They demand speed, interactivity, and a seamless experience. Web performance is no longer just a behind-the-scenes metric, it’s a fundamental aspect of creating a website that users love.&lt;/p&gt;

&lt;h3 id=&quot;core-web-vitals&quot;&gt;Core Web Vitals&lt;/h3&gt;

&lt;p&gt;First introduced in May 2020, Google’s &lt;a href=&quot;https://web.dev/explore/learn-core-web-vitals&quot;&gt;Core Web Vitals (CWV)&lt;/a&gt; are designed to measure performance metrics, with a goal to improve user experience. CWV are becoming a defecto standard measurement for performance, aggregating many existing performance API metrics within the browser. These metrics – Largest Contentful Paint (LCP), First Input Delay (FID), and Cumulative Layout Shift (CLS) – focus on the core elements that influence how users perceive and interact with a website.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;LCP and Perceived Performance: LCP measures how quickly the main content of a page loads, which directly impacts a user’s first impression. If users can see and interact with your content quickly, they’re more likely to stay engaged. Improvements in LCP can drastically reduce perceived wait times, leading to a faster and more satisfying experience.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;FID and Interactivity: FID measures the time it takes for a page to become interactive. Users expect instantaneous feedback from their actions, whether that’s clicking a button or filling out a form. Reducing FID ensures that users can engage with your content without frustrating delays through a more responsive and enjoyable experience.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;CLS and Visual Stability: CLS measures the stability of your page as it loads, ensuring that elements don’t unexpectedly move around. A stable page layout contributes to a trustworthy and reliable experience, reducing user frustration and enhancing overall satisfaction.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a number of tools available for measuring CWV and performance metrics manually or as part of continuous integration (CI) pipelines. Some of the most well known today include &lt;a href=&quot;https://www.webpagetest.org/&quot;&gt;Web Page Test&lt;/a&gt;, Google’s &lt;a href=&quot;https://developer.chrome.com/docs/lighthouse/overview&quot;&gt;Lighthouse&lt;/a&gt;, &lt;a href=&quot;https://www.sitespeed.io&quot;&gt;Sitespeed.io&lt;/a&gt;, and the recently updated Google &lt;a href=&quot;https://developer.chrome.com/docs/crux&quot;&gt;CrUX report&lt;/a&gt; which collects real user metrics through Chrome browser. Configuring an application build pipeline to run performance tests against budgets is more viable now than ever before. If there’s one key take away: always make measurements before, during, and after planned changes—yes, even small ones!&lt;/p&gt;

&lt;h3 id=&quot;impact-of-load-time-on-ux&quot;&gt;Impact of load time on UX&lt;/h3&gt;

&lt;p&gt;Users appreciate speedy load times and first impressions are critical. Load time is often the first indicator of how your website is perceived and a site that loads quickly is seen as more reliable and professional, creating an immediate sense of trust. Even a small reduction in load time can improve how users perceive your site. This isn’t just about speed; it’s about making users feel valued by respecting their time.&lt;/p&gt;

&lt;p&gt;When users encounter a site that loads swiftly and allows them to interact immediately, they’re more likely to stay longer and explore more. This increased engagement is a direct result of a performance-driven approach to UX. By focusing on load time, you’re not just improving metrics—you’re creating a more enjoyable and fulfilling experience for your users.&lt;/p&gt;

&lt;h3 id=&quot;reducing-user-bounce-rates&quot;&gt;Reducing user bounce rates&lt;/h3&gt;

&lt;p&gt;Bounce rates often reflect a user’s frustration with poor performance. Sites that meet Core Web Vitals thresholds see significant reductions in bounce rates and this is because users are more likely to continue exploring a site that feels stable and responsive. If users can find what they need more rapidly and reliably they are more likely to stick around and engage further. By prioritizing performance we keep users engaged longer but also encourage them to dive deeper into our content.&lt;/p&gt;

&lt;h3 id=&quot;mobile-speed-is-critical&quot;&gt;Mobile speed is critical&lt;/h3&gt;

&lt;p&gt;Mobile performance has become a critical aspect of user experience, as more users access the web through mobile devices than on any other device. Mobile users are often on the go and their expectations for speed and responsiveness are even higher. Slow-loading web applications can quickly lead to frustration and abandonment. Improving LCP, FID, and CLS can significantly enhance the mobile user experience and focusing on performance on mobile can make your site more accessible and user-friendly across all devices.&lt;/p&gt;

&lt;p&gt;Mobile users are particularly sensitive to load times, with even a 100ms delay leading to noticeable drops in engagement. Amazon has a &lt;a href=&quot;https://www.digitalrealty.com/resources/articles/the-cost-of-latency&quot;&gt;famous study&lt;/a&gt; illustrating this point in user engagement in sales. Overall, fewer HTTP requests, smaller and optimized assets, and non-render blocking code are all the key here; furthermore employing CDN functionality and creating graceful degradation of apps for offline capability helps tremendously to provide a pleasing user experience. By optimizing your site for mobile performance, you not only improve the experience for a large segment of your audience but also increase the likelihood of retaining those users.&lt;/p&gt;

&lt;h3 id=&quot;performance-is-a-user-centric-discipline&quot;&gt;Performance is a user-centric discipline&lt;/h3&gt;

&lt;p&gt;The importance of web performance in enhancing UX cannot be overstated. The goal is not just to meet technical standards but to create experiences that users find intuitive, enjoyable, and memorable. By focusing on performance, we ensure that interactions a user has are reliable, which can lead to greater satisfaction and long-term engagement.&lt;/p&gt;

&lt;h2 id=&quot;whats-the-business-impact-of-bad-performance&quot;&gt;What’s the business impact of bad performance?&lt;/h2&gt;
&lt;p&gt;OK, so we should prioritize our users’ experience through web performance first. What about business impacts? While user experience is a crucial element of web performance, the business implications can be quite significant. The ability to convert visitors into customers relies upon how well your site performs. That reliablility translates into a good experience for your users and they trust the application and engage further.&lt;/p&gt;

&lt;h3 id=&quot;lcp-and-conversion-rates&quot;&gt;LCP and conversion rates&lt;/h3&gt;

&lt;p&gt;LCP doesn’t just influence user satisfaction, it has a direct impact on your bottom line. &lt;a href=&quot;https://web.dev/case-studies/renault&quot;&gt;Studies show&lt;/a&gt; that improving LCP by just one second can increase conversion rates by up to 13%. This is because faster load times reduce friction in the user journey, making it easier for visitors to complete desired actions, whether that’s making a purchase, signing up for a newsletter, or contacting your sales team.&lt;/p&gt;

&lt;p&gt;When users encounter slow load times, they’re more likely to abandon their journey before completing a conversion. By focusing on LCP, you’re not just optimizing for speed; you’re creating a smoother path to conversion, ultimately driving more business results.&lt;/p&gt;

&lt;h3 id=&quot;small-improvements-can-have-a-big-impact-on-load-time&quot;&gt;Small improvements can have a big impact on load time&lt;/h3&gt;

&lt;p&gt;Load time is a critical factor in the user’s decision-making process. Even a minor improvement in load time, such as 100ms, can lead to a 1-2% increase in conversion rates (ref: &lt;a href=&quot;https://www.digitalrealty.com/blog/the-cost-of-latency&quot;&gt;Amazon&lt;/a&gt;, &lt;a href=&quot;https://www.slideshare.net/devonauerswald/walmart-pagespeedslide&quot;&gt;Walmart&lt;/a&gt;, &lt;a href=&quot;https://resources.mobify.com/2016-Q2-mobile-insights-benchmark-report.html&quot;&gt;Mobify&lt;/a&gt;). This demonstrates the power of incremental improvements as each millisecond you shave off your load time contributes to a more efficient and effective conversion process.&lt;/p&gt;

&lt;p&gt;Businesses that invest in reducing load times are essentially investing in their conversion rates. The faster your site, the more likely users are to complete the actions you want them to take. This is particularly important in e-commerce, where even slight delays can lead to significant revenue loss. There are points of diminishing returns on this effort however, so it’s important to understand what to prioritize.&lt;/p&gt;

&lt;p&gt;The inverse is also true, and as I’ve &lt;a href=&quot;/2016/06/the-state-of-web-performance-and-internet-advertising.html&quot;&gt;noted previously&lt;/a&gt;, taking shortcuts to insert JS tags, content, or ads can dramatically and negatively impact site performance.&lt;/p&gt;

&lt;h3 id=&quot;mobile-performance-and-conversion-rates&quot;&gt;Mobile performance and conversion rates&lt;/h3&gt;

&lt;p&gt;With the majority of web traffic now coming from mobile devices, ensuring a fast and responsive mobile experience is essential. If it wasn’t already obvious, web performance on mobile plays a crucial role in conversion rates. Users on mobile devices are often less patient, and a slow mobile site can quickly lead to abandoned sessions. Optimizing mobile performance, including LCP, FID, and CLS, can result in higher conversion rates and reduced bounce rates on mobile, directly impacting overall business performance.&lt;/p&gt;

&lt;h3 id=&quot;performance-optimization-reduces-bounce-rates&quot;&gt;Performance optimization reduces bounce rates&lt;/h3&gt;

&lt;p&gt;Bounce rates don’t just reflect user engagement, they’re also closely tied to business revenue metrics. High bounce rates often indicate that users are not finding what they’re looking for, leading to missed opportunities for conversions. &lt;a href=&quot;https://web.dev/case-studies/ndtv&quot;&gt;Compelling case study data&lt;/a&gt; supports that by improving performance, we can reduce bounce rates and increase conversion rates.&lt;/p&gt;

&lt;p&gt;When users stay on your site longer, they’re more likely to explore additional products or services, increasing the chances of upselling or cross-selling. In this way, reducing bounce rates through better performance has a direct impact on your revenue streams.&lt;/p&gt;

&lt;h3 id=&quot;performance-equals-profit&quot;&gt;Performance equals profit&lt;/h3&gt;

&lt;p&gt;Ultimately, web performance isn’t just about meeting technical standards or improving user experience, it’s also very much about driving tangible business results.  By prioritizing performance, businesses can improve their conversion rates, reduce bounce rates, and ultimately drive more revenue. As we continue to push the boundaries of web performance, the connection between speed, user experience, and business outcomes will only grow stronger. For businesses looking to stay competitive, prioritizing performance is no longer optional.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2022/08/from-user-experience-to-revenue-the-critical-role-of-web-performance.html&quot;&gt;Web performance: UX and revenue&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on August 26, 2022.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[How I work: managing chaos]]></title>
  <link>https://jesseheady.com/2018/03/how-i-work-or-how-to-manage-chaos.html</link>
  <id>https://jesseheady.com/2018/03/how-i-work-or-how-to-manage-chaos</id>
  <updated>2018-10-11T00:00:00-00:00</updated>
  <published>2018-03-26T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;I’ve learned a lot of different techniques, tools, and processes over the years all designed for productivity or efficiency. Many of these I have picked up by working with specific teams, projects, or individuals or by trial and error. Not all of these may be useful or even beneficial to everyone, because everyone’s individual way of working is unique. However, hopefully these tips are also useful to others. Here we go!&lt;/p&gt;

&lt;h3 id=&quot;disclaimer&quot;&gt;Disclaimer&lt;/h3&gt;

&lt;p&gt;Your mileage may vary with the techniques outlined in this article. I make some assumptions about prerequisite knowledge and will do my best to explain and provide links for further reading. I mention a few apps by name where they’re relevant to the process; I generally use a Mac, but the ideas work with any board, capture tool, or timer that fits your environment.&lt;/p&gt;

&lt;h2 id=&quot;productivity-techniques--process&quot;&gt;Productivity Techniques &amp;amp; Process&lt;/h2&gt;

&lt;p&gt;Over the years, there have been many productivity techniques that I’ve been exposed to and attempted to integrate into my workflow. Many techniques exist out there and some are even supported with data supporting their viability. Since this is a fairly subjective and opinionated article, I’m not going to dive deep into the data points, for my own use or across industries. Plenty of resources are available online with some quick searches.&lt;/p&gt;

&lt;h3 id=&quot;kanban&quot;&gt;Kanban&lt;/h3&gt;

&lt;p&gt;One of the most effective and reliable methods I use to manage projects and tasks is &lt;a href=&quot;https://en.wikipedia.org/wiki/Kanban_(development)&quot;&gt;Kanban&lt;/a&gt;, an agile system that originated in lean manufacturing at Toyota in the 1940s. Today, it’s widely used across various fields, including software development and personal productivity, to help streamline processes and keep work organized. The term “Kanban” translates from Japanese as “visual signal” or “signboard,” reflecting its purpose in visualizing workflow to improve efficiency and reduce waste. Managing Kanban can be done using physical cards or sticky notes, or a digital board such as &lt;a href=&quot;https://trello.com/&quot;&gt;Trello&lt;/a&gt;, &lt;a href=&quot;https://www.redmine.org/&quot;&gt;Redmine&lt;/a&gt;, or &lt;a href=&quot;https://wekan.github.io/&quot;&gt;Wekan&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What makes Kanban so powerful is its adaptability. For simple tasks, I keep boards straightforward, by organizing tasks into columns like “To Do,” “In Progress,” and “Done,” allowing for a clear, at-a-glance overview of work. But for more complex projects, I might add extra stages like “Discovery”, “Testing” or “Review.” This allows me to track progress accurately and quickly spot any bottlenecks that could slow down work. This process provides a clear, visual overview of all work in a project. Another great tool in Kanban is adding work-in-progress (WIP) limits to any particular column. By limiting the number of tasks in the “In Progress” column, for example, I can stay focused and avoid spreading myself too thin. It’s a dynamic, flexible system that evolves with the project, helping me maintain momentum and ensure that nothing falls through the cracks.&lt;/p&gt;

&lt;p&gt;I’ve found Kanban to be most useful when pairing together with another engineer or designer, working with teams on larger projects, or generally when working effectively in groups matters. Cycle time and throughput are used to measure how long tasks take to complete and inform how long they should take in a given step. In addition to managing WIP limits and dependencies, tagging people, adding keywords, or color-coding cards can help keep a project organized and scope remains realistic and deliverable. Enabling individuals and teams to pull work, rather than push work from a queue, is also quite powerful in empowering teams to dictate their true bandwidth. This is further informed not just based on WIP limits, but on historical throughput for similarly sized units of work. Over time, the size and shape of work becomes clearer and enables leaders and the team to make adjustments to the scope of work or size of tasks.&lt;/p&gt;

&lt;h3 id=&quot;gtd&quot;&gt;GTD&lt;/h3&gt;

&lt;p&gt;Another process for managing project work is &lt;a href=&quot;https://gettingthingsdone.com/what-is-gtd/&quot;&gt;Getting Things Done®&lt;/a&gt;, but for the parts I use it’s really about helping organize thoughts or ideas into actionable work. If I have one common thread in my work or home projects it’s using GTD with todo lists to capture whatever is in my head for later prioritization. This simply helps me to remove distractions or tangental thoughts or ideas and focus on the task, collection of work, project, or whatever. I typically use the &lt;a href=&quot;https://culturedcode.com/things/&quot;&gt;Things&lt;/a&gt; app to capture high- or low-level thoughts, ideas, or actionable tasks into pre-defined areas or ad hoc buckets. Really, any todo list app or even just a pencil and paper works fine. If I’ve jotted something down on a notepad or sticky note, I’ll transfer those over to my todo app at some point later. The ultimate goal here is to capture the information to process later.&lt;/p&gt;

&lt;p&gt;After the capture step, I move into clarification and organizing. These are fairly self-explanatory, but the gist is to revisit your captured items and refine where required or necessary. The goal is to move any items into idea buckets, projects, or creative areas. Grouping the captured items into logical areas may seem obvious but the process of pooling notes together can help inspire additional thoughts to capture. Once clarified, there is natural progression to organizing items and iterating upon them in their respective areas. Once organized, I tend to reflect and iterate upon each item within its respective group. Sometimes I’ll do this as I am going along creating tasks, otherwise I’ll just do a quick reflection before getting started.&lt;/p&gt;

&lt;p&gt;Which brings about the real benefit to taking the approach of a todo list to help get shit done: jumping in and getting started. Honestly, sometimes this is the part that I have trouble with if I don’t have a whole picture of the end goal or just vague idea of an outcome. This is why looping through the earlier steps can be helpful. It’s normal for me to run through the whole process a few times before really digging into deep work related to a project. The trap that is easy to fall into is spending too much time on the earlier steps before getting started. So, there’s a bit of nuance, but making a call to just jump in and get started sometimes helps feed into earlier steps. Rinse and repeat. Typically, the outcome is good enough. As we know, perfection is the enemy of good enough, and these steps tend to help at least keep things somewhat organized.&lt;/p&gt;

&lt;h3 id=&quot;pomodoro&quot;&gt;Pomodoro&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://www.pomodorotechnique.com/&quot;&gt;The Pomodoro® Technique&lt;/a&gt; is a time management practice that can be applied to daily work, projects, or even personal or home projects. The basic principles are that you have some sort of timer, in fact the concept started with a real physical kitchen timer, and you set increments of time to focus and work, then rest, and repeat. The general timeframe is usually around 25 minutes of work, followed by a short rest, with a longer break between sessions. Honestly, the focus time can be greater or smaller than 25 minutes. I don’t always use this technique, but I’ve found that when I do, I’ll adjust the time up or down depending on my mood or the work I’m doing. The general idea of Pomodoro is to help get into a flow state and encourage incremental breaks with periods of deep focused work.&lt;/p&gt;

&lt;p&gt;If I hadn’t had a lot rest the night before, I might not be able to focus for longer periods. Sometimes I find myself in a flow state while I’m working and will disable the timer completely so I can remain focused. This has a downside, however, and as is outlined in the process, taking intermediate breaks helps us reset and create a sort of rhythm to whatever work we have in front of us. In general, having a set block of time helps to set some parameters and focus our attention to the tasks at hand. As for what timer to use, sometimes I’ll just set a timer on my phone by I also use &lt;em&gt;Pomodoro Timer&lt;/em&gt; on my Mac. There are great other apps like &lt;em&gt;Hey Focus&lt;/em&gt;, and many others that are web- or app-based.&lt;/p&gt;

&lt;p&gt;Pomodoro is a great technique if you are receptive to working in bursts or need some sort of limiting factor such as a timebox for your efforts to help keep focus. The downside can be feeling overwhelmed or artificially pressured if you’re not producing in the time you’ve allotted. These are natural responses, I think, to setting some of these limits and this is why I don’t treat this process as a magic bullet for productivity and adjust the time or drop it entirely if it’s not working and move on to something else. In those times that I have an open-ended project and am not so worried about how long or how many Pomodoro I am working through to get to the end goal, then this can work great for me.&lt;/p&gt;

&lt;h2 id=&quot;tools-in-context&quot;&gt;Tools in context&lt;/h2&gt;

&lt;p&gt;The specific apps I use for Kanban, capture, and timers change over time. What stays constant is the role they play: something to visualize work (a board), something to capture ideas and tasks (a list or notebook), and something to timebox focus when I need it (a timer). I’ve name-checked a few options in the sections above; if you’re looking for alternatives, &lt;a href=&quot;https://alternativeto.net/&quot;&gt;AlternativeTo&lt;/a&gt; and your team’s existing stack are good places to start. The goal isn’t to adopt my stack. It’s to pick one or two things that support your process and stick with them long enough to see if they help.&lt;/p&gt;

&lt;h3 id=&quot;everyday-tools&quot;&gt;Everyday tools&lt;/h3&gt;

&lt;p&gt;My everyday stack maps straight onto the three process roles. For capture I use &lt;a href=&quot;https://culturedcode.com/things/&quot;&gt;Things&lt;/a&gt;, it’s where the GTD flow lives. For visualization I use a board, usually &lt;a href=&quot;https://trello.com/&quot;&gt;Trello&lt;/a&gt; or &lt;a href=&quot;https://wekan.github.io/&quot;&gt;Wekan&lt;/a&gt; depending on whether I’m solo or with a team. For timeboxing I use a Pomodoro-style timer (phone or a Mac app like &lt;em&gt;Pomodoro Timer&lt;/em&gt; or &lt;em&gt;Hey Focus&lt;/em&gt;) when I need to lock in. I also lean on &lt;a href=&quot;https://www.alfredapp.com/&quot;&gt;Alfred&lt;/a&gt; to add tasks or open the board without leaving what I’m doing, so context-switching does not eat into focus time. The point isn’t this exact list. It’s having one place to capture, one place to see work, and one way to timebox when it helps, and keeping that set consistent so you’re not constantly re-deciding.&lt;/p&gt;

&lt;h3 id=&quot;situational-tools&quot;&gt;Situational tools&lt;/h3&gt;

&lt;p&gt;I add or swap tools when the context changes. When the work is code and the team lives in &lt;a href=&quot;https://github.com/&quot;&gt;GitHub&lt;/a&gt;, GitHub Projects or Issues can be the Kanban board so work stays in one place. When coordination matters more, &lt;a href=&quot;https://slack.com/&quot;&gt;Slack&lt;/a&gt; (or whatever the team uses) is where requests and updates live; I might add a “Waiting on” or “Blocked” column on the board to reflect that. For my calendar, I lean on &lt;a href=&quot;https://flexibits.com/fantastical&quot;&gt;Fantastical&lt;/a&gt; to see when I have focus blocks and when I don’t. Sometimes the right move to remain agile is an extra column in my Kanban tool such as “Review” or “Discovery”, rather than a new app. The idea is to adapt the system to the situation without turning it into a tool collection.&lt;/p&gt;

&lt;h2 id=&quot;taking-breaks-and-mental-agility&quot;&gt;Taking breaks and mental agility&lt;/h2&gt;

&lt;p&gt;Process and tools only get you so far if you’re burned out or can’t switch context. Rest isn’t a reward for working hard, it’s what makes work sustainable. I’m not talking about a five-minute pause between tasks or meetings. I mean real breaks: a walk or bike ride outside, doing yoga or practicing mindfulness, time with family or friends, playing a video game or reading a book, or making art or building something with your hands. Or, here’s a wild thought: actually taking your PTO. Even a day or two away helps. Your brain needs time to process offline, and the best ideas often show up when you’re not staring at the task list.&lt;/p&gt;

&lt;p&gt;All of these processes and tools are great, but what good are we unless we regularly take breaks and recharge. Even if you don’t want to take a big trip, just spending some time away from your work or tasks can have a tremendous benefit to your physical and mental well being.&lt;/p&gt;

&lt;p&gt;A better board or a timer can fix some things. Expectations, boundaries, saying no, or stepping away fix others. Often it’s both. So, use a process that fits you, keep your everyday tools simple and consistent, add situationally when it helps, and protect the rest and reflection that make it all possible.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2018/03/how-i-work-or-how-to-manage-chaos.html&quot;&gt;How I work: managing chaos&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on March 26, 2018.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[The state of web performance and Internet advertising]]></title>
  <link>https://jesseheady.com/2016/06/the-state-of-web-performance-and-internet-advertising.html</link>
  <id>https://jesseheady.com/2016/06/the-state-of-web-performance-and-internet-advertising</id>
  <updated>2016-06-22T00:00:00-00:00</updated>
  <published>2016-06-08T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;To say the state of web performance optimization is at odds with the realm of Internet advertising may be a bit of an understatement. Content on the web in 2016 consists of a complex ecosystem of content monetization, marketing, user experience, data analytics, and programmatic advertising, among many other valuable but competing elements of business on the web. I’d like to share my perspective on the topic as a performance engineer.&lt;/p&gt;

&lt;p&gt;The unfortunate reality that must be addressed is that all of these various pieces of the money-making pie can, in the long-run, harm the business more than help. Without some very careful consideration to the end user experience in terms of speedy delivery of the product, service, or website they are consuming, businesses can drive customers away and lose valuable returns to their product. The business can also spend lots of money cleaning up poorly performing integrations. Performance engineering &amp;amp; development best practices too often perform a strange dance with these other parts of the business, but most often align with the best interests of the end user, and the very &lt;a href=&quot;https://en.wikipedia.org/wiki/Web_performance&quot;&gt;definition of web performance optimization&lt;/a&gt; dictates that faster speeds on the web can and do increase visitor loyalty and satisfaction.&lt;/p&gt;

&lt;p&gt;Although it may be difficult to quantify “feels like awesome” in terms of revenues, there’s a clear correlation between a user’s satisfaction with their experience and the ability of the business to monetize that experience. Also, it’s not impossible to achieve hard data on that “feels like” metric and correlate to &lt;em&gt;potential&lt;/em&gt; revenues. There are well established measurements of this via &lt;a href=&quot;https://en.wikipedia.org/wiki/Apdex&quot;&gt;apdex&lt;/a&gt; and &lt;a href=&quot;https://sites.google.com/a/webpagetest.org/docs/using-webpagetest/metrics/speed-index&quot;&gt;speed index&lt;/a&gt;. In fact, Google’s own search algorithm &lt;a href=&quot;https://webmasters.googleblog.com/2010/04/using-site-speed-in-web-search-ranking.html&quot;&gt;factors page speed in search rankings&lt;/a&gt;, as of 2010.&lt;/p&gt;

&lt;p&gt;Fast forward a few years, on the design side of things, thought leaders like Brad Frost have &lt;a href=&quot;http://bradfrost.com/blog/post/performance-as-design/&quot;&gt;called this out&lt;/a&gt; since at least early 2013. Tim Kadlec and Dan Mall have also written thoughtful pieces about &lt;a href=&quot;https://timkadlec.com/2013/01/setting-a-performance-budget/&quot;&gt;performance budgets&lt;/a&gt; and &lt;a href=&quot;http://danielmall.com/articles/how-to-make-a-performance-budget/&quot;&gt;how to establish them&lt;/a&gt;. Well respected publishing and conference organization O’Reilly Media has made this a major topic of many books, articles, and conferences including &lt;a href=&quot;http://radar.oreilly.com/2014/01/web-performance-is-user-experience.html&quot;&gt;this gem&lt;/a&gt; from Laura Swanson in 2014:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Users expect pages to load in two seconds, and after three seconds, &lt;a href=&quot;http://www.mcrinc.com/Documents/Newsletters/201110_why_web_performance_matters.pdf&quot;&gt;up to 40% of users will abandon your site&lt;/a&gt;. Similar results have been noted by major sites like Amazon, who found that 100 milliseconds of additional page load time &lt;a href=&quot;http://sites.google.com/site/glinden/Home/StanfordDataMining.2006-11-28.ppt?attredirects=0&quot;&gt;decreased sales by one percent&lt;/a&gt;, and Google, who &lt;a href=&quot;http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html&quot;&gt;lost 20% of revenue and traffic&lt;/a&gt; due to half a second increase in page load time. Akamai has also reported that 75% of online shoppers who experience an issue such as freezing, crashing, taking too long to load, or having a convoluted checkout process &lt;a href=&quot;http://www.akamai.com/dl/reports/Site_Abandonment_Final_Report.pdf&quot;&gt;will not buy from that site&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From the design and development side of things, I believe we’re on pretty solid ground keeping performance in the forefront of our efforts. There are very well established &lt;a href=&quot;https://developers.google.com/web/fundamentals/performance/&quot;&gt;fundamentals&lt;/a&gt; in development of performant web applications. So why is it, after 6 years (and counting), that Google’s establishment of speed as a factor in their ranking isn’t more concerning for businesses? One theory is simply a lack of education on the topic, another may be that businesses are struggling with the advertising model. This is where I want to speak directly to those on the web involved in deciding how to generate revenues and encourage them to not take the easiest path. The easy path may be simply adding a JavaScript widget to a page, integrating with some third party service that promises to drive quick revenues, or adding more advertising.&lt;/p&gt;

&lt;p&gt;Taken in moderation and in consideration of a pleasing (and speedy) user experience, these may not be so bad. However, as is too often the case, business/marketing and development/UX teams may not be perfectly in sync about their performance budget, let alone other means to ensure their efforts aren’t having a longer-term negative impact. Monitoring, measuring, and analysis only help identify the problem. Addressing the problem of performance degradation through continuous development and iteration is only one half of the solution, the other side of the coin involves making some tough ‘trimming the fat’ decisions.&lt;/p&gt;

&lt;p&gt;Here lies the doomsday segment of the article and why I want to call to attention the gap between the efforts of marketing/revenues and user experience, development, and performance engineering. In summer 2015 there were a number of articles espousing the importance of web performance optimization among various media organizations and publications: identifying the &lt;a href=&quot;http://developer.telerik.com/featured/the-webs-cruft-problem/&quot;&gt;web’s cruft problem&lt;/a&gt;, how &lt;a href=&quot;https://thegood.com/insights/how-tracking-pixels-slow-your-site/&quot;&gt;tracking pixels&lt;/a&gt; can drain revenue rather than drive it, how the Washington Post &lt;a href=&quot;http://digiday.com/publishers/washington-post-cut-page-load-time-85-percent/&quot;&gt;cut page load by 85%&lt;/a&gt;, a great analysis of how so many news sites are &lt;a href=&quot;https://mondaynote.com/news-sites-are-fatter-and-slower-than-ever-1dc7adebfc90#.xrk8j7qgh&quot;&gt;fatter and slower than ever before&lt;/a&gt;, and Wired’s take on Google’s inability to &lt;a href=&quot;http://www.wired.com/2015/07/googles-ad-system-become-big-control/&quot;&gt;control their own ad network&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In early 2016 we saw some movement in the advertising space around ads performance and more directly the behavior of users to block ads. It’s a widely held belief this is not simply because people don’t like looking at ads, but because the ads ecosystem today is riddled with bloated, latent code and creative. In some of the worst cases, malvertising is present on users’ computers, delivered via the ads networks on &lt;a href=&quot;http://www.engadget.com/2016/01/08/you-say-advertising-i-say-block-that-malware/&quot;&gt;very popular news websites&lt;/a&gt;. Yet, ad blocking from the users perspective is the only recourse to continue using the websites they love. Blocking the ads means the sites load more reliably, and they have the less crucial benefit of a less cluttered &amp;amp; noisy user experience.&lt;/p&gt;

&lt;p&gt;The user, however, is caught in the cross-fire of a full blown war between advertising delivery and (arguably) security/usability defenders, such as AdBlock. In October 2015, the Interactive Advertising Bureau (IAB) &lt;a href=&quot;https://www.vice.com/en/article/as-ad-blockers-spread-online-ad-industry-admits-it-messed-up/&quot;&gt;admitted&lt;/a&gt; they ‘messed up’ by stating that too many organizations followed their guidelines too explicitly. In January, we learned that AdBlock was &lt;a href=&quot;http://arstechnica.co.uk/business/2016/01/adblock-plus-blocked-from-attending-online-ad-industrys-big-annual-conference/&quot;&gt;“un-invited”&lt;/a&gt; from attending the yearly IAB conference that same month. The day after the IAB conference wrapped, we learned about a start-up who’s declared &lt;a href=&quot;http://www.fastcompany.com/3055827/elasticity/this-startup-wants-to-end-adblocks-raping-and-pillaging-of-online-publishers&quot;&gt;an effort to end AdBlock’s ‘raping and pillaging’ of online advertising&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It’s my belief the corners of the web that rely so heavily on online advertising are looking at this entirely the wrong way. It’s true that in 2015 &lt;a href=&quot;https://pagefair.com/blog/2015/ad-blocking-report/&quot;&gt;upward of 20% or more of page views&lt;/a&gt; in the U.S. may have been ad blocked, and in 2016 those numbers are &lt;a href=&quot;https://pagefair.com/blog/2016/mobile-adblocking-report/&quot;&gt;similar on mobile&lt;/a&gt;. However, we need to look again at &lt;em&gt;why&lt;/em&gt; users are utilizing tools to block ads, tracking, and other third party services on first-party websites. As we look ahead to 2017, it’s my sincere hope that publishers/businesses on the web will begin to come together not just with their engineers and designers, but also with their vendor partners, and hold them to account for poor performance practices and drop the bad apples.&lt;/p&gt;

&lt;p&gt;I’m optimistic on some levels but also skeptical in other ways about some of the responses in another direction to addressing the problem. Google’s &lt;a href=&quot;https://www.ampproject.org/&quot;&gt;AMP Project&lt;/a&gt; takes an aggressive approach by introducing an entire pseudo-specification atop HTML promising ‘instant’ pages, where pages which don’t validate by re-writing some commonly abused elements/attributes won’t be cached and delivered by Google AMP. Facebook provides &lt;a href=&quot;https://www.facebook.com/instantArticles/&quot;&gt;Instant Articles&lt;/a&gt; of a very similar nature, delivered exclusively through Facebook as a content platform. The up side to these is that the user experience is vastly improved and developers are encouraged (reminded) of best practices, while the downside is a fragmentation of the open web and spaghettification of new standards which are pipelines between the user and one specific provider.&lt;/p&gt;

&lt;p&gt;I’ll close by referring to one critical chapter in Lara Callender Hogan’s book &lt;em&gt;Designing for Performance&lt;/em&gt;, where she talks about the &lt;a href=&quot;http://designingforperformance.com/changing-culture/&quot;&gt;importance of changing culture&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It’s important to recognize when a problem needs technical solutions, when it needs cultural solutions, and when it needs both.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The point is that the problem of bloated websites and degraded user experiences due to poorly performing applications cannot be solved solely by one person or even a dedicated performance operations team. It takes a cultural shift and engagement by people from every team inside your organization, and also holding your partners to high standards while helping one another along the journey to performance excellence. This shift cannot and will not happen over night, and it’s bound to continue evolving and changing. As good stewards of the web and promoting excellent user experiences, we have a duty to continue taking the harder path and an opportunity to make a faster, more enjoyable web.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2016/06/the-state-of-web-performance-and-internet-advertising.html&quot;&gt;The state of web performance and Internet advertising&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on June 08, 2016.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[Take me home, country roads]]></title>
  <link>https://jesseheady.com/2015/05/country-roads-take-me-home.html</link>
  <id>https://jesseheady.com/2015/05/country-roads-take-me-home</id>
  <updated>2015-05-31T00:00:00-00:00</updated>
  <published>2015-05-31T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;After more than 10 wonderful years living in Atlanta my wife Jenny and I have decided to move home to West Virigina to be closer to our family. We both grew up in north central West Virginia — we want our kids to know the amazing environment we grew up loving. We have been talking about this move for nearly as long as we have lived in Georgia, now we’re setting our plans in motion. We should be completely relocated by early July.&lt;/p&gt;

&lt;p&gt;We’ve come to love our Atlanta home and our friends in the area. We’ve made some truly lasting friendships and memories. We’ll also be leaving behind many beloved family members in the region. Yet, we’re looking ahead to a new chapter in our life, closer to our families and our roots in West Virigina.&lt;/p&gt;

&lt;p&gt;I plan on keeping my job at &lt;a href=&quot;http://www.coxmediagroup.com/&quot;&gt;Cox Media Group&lt;/a&gt; and working remotely from West Virginia. I am fortunate enough that I work for a company willing to work with me and my family’s life goals. Occassionally I expect to travel to Atlanta for work, so there will still be opportunities to see folks. I’m really going to miss the tech community in the city — those groups and people I’ve worked with over the years will be sorely missed. I’ll make a point to visit as often as possible or return to speak or just hang out as my schedule permits. &lt;a href=&quot;http://www.meetup.com/Build-Guild-Atlanta/&quot;&gt;Build Guild Atlanta&lt;/a&gt; will continue on without me and I’m proud of what we’ve accomplished as a group in just a year and a half.&lt;/p&gt;

&lt;p&gt;We’ll also miss the awesome artist community and friends we’ve made in Atlanta over the years. I’ve seen some of the most impressive works of visual art, performance art, community driven creative projects, musicians, and many other creative outlets. If I didn’t have the opportunity to take part in so many creative events and projects, I’d certainly leave feeling much less enriched as a person. I’m also really going to miss the food. I’ve already got a list of fine restaurants and dishes I’ve grown to love. If I can’t figure out how to make these at home, I am sure we’ll be back to eat that really amazing food, too. The Atlanta community is strong, vibrant, and thriving and I’m proud to have been a part of it all.&lt;/p&gt;

&lt;p&gt;I’m excited to pay forward knowledge, skills, and experience I’ve gained in my field and also share some amazing culture we’ve come to love and appreciate in Atlanta. I’m also looking forward to being close to family again and soaking in the bounty that West Virginia has to offer equally in natural resources, culture, and people. To our Atlanta friends and family: we love you very much and will miss you deeply. Thanks for your continued friendship, love, and support! To our West Virginia friends and family: country roads will take us home soon enough.&lt;/p&gt;

&lt;p&gt;If you have any specific questions or just want to say hello, ping me on social media, or if you have my number or other contact info, please do not hesitate to reach out.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2015/05/country-roads-take-me-home.html&quot;&gt;Take me home, country roads&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on May 31, 2015.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[10,944 sunrises and sunsets]]></title>
  <link>https://jesseheady.com/2015/03/10944-sunrises-and-sunsets.html</link>
  <id>https://jesseheady.com/2015/03/10944-sunrises-and-sunsets</id>
  <updated>2015-03-27T00:00:00-00:00</updated>
  <published>2015-03-26T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;On March 27, 2015, United States astronaut &lt;a href=&quot;https://en.wikipedia.org/wiki/Scott_Kelly_(astronaut)&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Scott Kelly&lt;/a&gt; and Russian cosmonaut &lt;a href=&quot;https://en.wikipedia.org/wiki/Mikhail_Korniyenko&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Mikhail Kornienko&lt;/a&gt; are scheduled to launch into Earth orbit and &lt;a href=&quot;http://www.nasa.gov/oneyear/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;live for 1 year&lt;/a&gt; aboard the &lt;a href=&quot;http://www.nasa.gov/mission_pages/station/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;International Space Station&lt;/a&gt;.&lt;/p&gt;

&lt;figure class=&quot;img-right img-no-border&quot;&gt;
&lt;img src=&quot;/assets/images/ISS_Yearlong_mission_patch.png&quot; alt=&quot;ISS Year Long Mission patch&quot; width=&quot;200&quot; height=&quot;200&quot; loading=&quot;lazy&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;The year long mission is a milestone event for the United States space program. When completed, it will mark the longest any human being in the NASA program has spent in space. The mission has nearly 600 science experiments planned while Kelly and Kornienko remain in orbit, multiple reconfigurations of the station, and additional mission dockings and crew exchanges. Additionally, cosomonaut &lt;a href=&quot;http://en.wikipedia.org/wiki/Gennady_Padalka&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Gennady Padalka&lt;/a&gt; is commanding the Soyuz launch on March 27, and upon completion of ISS expeditions 43 and 44, he will have spent the most time in space of any human in history, so far.&lt;/p&gt;

&lt;p&gt;Most notable of the &lt;a href=&quot;https://time.com/meet-the-twins-unlocking-the-secrets-of-space/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;year in space mission experiments&lt;/a&gt; will be the physiological monitoring of the health of Scott compared with his brother Mark, also that of Scott and Mikhail. The United States and Russia have established a partnership of knowledge sharing, as the Russians have had cosmonauts in orbit even longer than one year. The data the ISS 1 Year mission will provide is invaluable to future potential long term missions to Mars and other extended missions to space beyond our Earth and Moon. NASA scientists on Earth will also monitor Scott’s twin brother, astronaut Mark Kelly, throughout the ISS 1 Year flight.&lt;/p&gt;

&lt;figure class=&quot;img-left&quot;&gt;
&lt;img src=&quot;/assets/images/iss-1-year-mission-group-photo.jpg&quot; width=&quot;640&quot; height=&quot;480&quot; alt=&quot;Photograph of Jesse Heady with ISS 1 Year Mission members&quot; loading=&quot;lazy&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;I was fortunate enought to visit Johnson Space Center in Houston on January 15, 2015 for a NASA Social event to meet with these astronauts, the science team, and supporting staff at the space center. I was honored to be selected as one of fifteen people (out of one hundred or so) to get an inside look at this upcoming mission.&lt;/p&gt;

&lt;p&gt;I’m eager to watch in awe and support of these explorers as they launch from Baikonur Cosmodrome, Kazakhstan aboard the Soyuz bound for the International Space Station at 3:42 p.m. EDT, Friday, March 27 (March 28, Kazakh time).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.nasa.gov/multimedia/nasatv/&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Watch the launch live on NASA TV&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://1.usa.gov/1ycACpF&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Additional press and social media coverage&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Godspeed, gentlemen.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2015/03/10944-sunrises-and-sunsets.html&quot;&gt;10,944 sunrises and sunsets&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on March 26, 2015.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[Usability and broken systems]]></title>
  <link>https://jesseheady.com/2015/01/usability-and-broken-systems.html</link>
  <id>https://jesseheady.com/2015/01/usability-and-broken-systems</id>
  <updated>2018-02-27T00:00:00-00:00</updated>
  <published>2015-01-06T00:00:00-05:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;Let’s talk about the usability of broken systems for a moment. Have you ever truly spent the time to observe your own habits and understand what potentially broken systems you or others are working around every day? First of all, we must recognize that humans are adept at self correcting and circumventing broken systems, often subconsciously.&lt;/p&gt;

&lt;p&gt;Usability is the discipline of methodically reviewing a design or system, observing users and reviewing real user data, and taking the sum of those internal and external efforts and constantly iterating on the user experience to make it better based on those findings. I’d challenge anyone in the web usability community to also pay close attention to accessibility and performance, if they aren’t already doing so.&lt;/p&gt;

&lt;p&gt;Broken systems are experienced constantly: the elevator doesn’t work, the car doesn’t start, the button doesn’t click, the web application crashes and loses the user input, the door sticks and you have to lift the handle to open it, the drain pipe doesn’t flow fast enough to move water, or the door has a handle instead of a push plate but pushes open.&lt;/p&gt;

&lt;figure class=&quot;img-right&quot;&gt;
&lt;a title=&quot;By Robert S. Donovan from Adams, NY, USA (push pull) [CC BY 2.0 (https://creativecommons.org/licenses/by/2.0)], via Wikimedia Commons&quot; href=&quot;https://commons.wikimedia.org/wiki/File%3ADoor_with_both_push_and_pull_signs.jpg&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;&lt;img width=&quot;256&quot; height=&quot;170&quot; alt=&quot;Door with both push and pull signs&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Door_with_both_push_and_pull_signs.jpg/256px-Door_with_both_push_and_pull_signs.jpg&quot; loading=&quot;lazy&quot; /&gt;&lt;/a&gt;
&lt;/figure&gt;

&lt;p&gt;The door with a confusing user interface is a common trope in the context of this discussion. This is an occurrence where someone will pull a handle when presented with one, when perhaps the door needs to be pushed open instead. It’s a frustrating experience and the frequent addition of signage indicating a handle should be “pushed” is a bandage on an already broken system. Interestingly, no matter how many of these door handles someone encounters, people very often instinctively pull instead of push — even with signage indicating the opposite action is necessary.&lt;/p&gt;

&lt;p&gt;Building upon the door push versus pull example, if any one of these simple or complex systems was corrected or improved, you as the user may save invaluable time if not simply be amazed by the change you experience. However, interestingly, humans excel so much at working around broken systems that they often won’t realize they are self correcting.&lt;/p&gt;

&lt;p&gt;Additionally, there is certainly a range of acceptable yet functionally broken systems. For example, a stopped clock gives the correct time twice a day but requires a higher degree of adaptability while an escalator that has stopped working is still a functional staircase. So, what does usability of software and the general subject of broken systems have to do with one another?&lt;/p&gt;

&lt;p&gt;In the ecosystem of the Internet, we encounter micro- and macrocosms of excellent usability and broken systems regularly. Not long after the Internet was invented, email, Internet Relay Chat (IRC), and web pages were created. IRC is one of those mediums that is still alive and well, however it’s quite old, and yet many people in the world have no idea that it exists. IRC is a medium that built the foundation for nearly real-time chat we take for granted today in Facebook, Google+, other instant messenger services, SMS, etc.&lt;/p&gt;

&lt;p&gt;Look at a product like Facebook; ubiquitous now with nearly 1.5 billion users. That service is an amalgamation of many of the basic features available in those early systems. It was initially new and inventive, even though it was an improvement over earlier offerings such as Friendster, MySpace, and Orkut. Over time it’s remained relevant because of iterative usability measurements, feedback, and improvements of broken systems.&lt;/p&gt;

&lt;p&gt;User behaviors are analyzed in realtime by many modern websites, and Facebook is a great example of real user monitoring of features as they are rolled out and tested in a production setting. If any of these systems are broken, either due to misconfiguration or software bugs, or just because the feature isn’t well received or is a bad user experience, the measurements tell the tale and corrective action can be taken.&lt;/p&gt;

&lt;p&gt;Etsy is another great example of a team using this approach as they are known to release 50-60 small iterations of their software to production in a day and utilize feature flags around their software to toggle the availability of that feature to the public. This approach is tremendous for collecting data assuming you’ve set up your application appropriately to do so.&lt;/p&gt;

&lt;p&gt;We follow many of these processes at Cox Media Group, but we’re always improving, too. My advice: get a handle on your front end instrumentation and testing strategy early and stick with it. Establish a performance budget with your business partners and other crucial team members, monitor and measure, and react when you start to slip. Reinforce your best practices through automation and code reviews, linters, and git hooks; reject any code that doesn’t pass the bar and help your fellow team members improve their discipline. Prototype new apps or user experiences quickly using tools such as yeoman, bower, and grunt/gulp. Sit in on user studies and really gain an appreciation for objective observation of the users of the things you build. Small development iterations provide clarity, while metrics and user feedback inform your next move.&lt;/p&gt;

&lt;p&gt;As a frequent user of various Internet services and applications, mobile devices and computers, TVs and coffee pots, doors and escalators, take the time to occasionally outwardly observe yourself or your space, your home or work habits, your commute, whatever. What do you see that might be broken? What about the products and services you use? Are you working around bothersome or cumbersome systems just to complete simple tasks?&lt;/p&gt;

&lt;p&gt;Usability is a discipline that always strives to observe and collect data and focus on improving the ease of use of something. We live in a golden age of information, automation, and smart devices. The most crucial piece of these systems is you, the user. Without the user, these systems become broken themselves. Do yourself a favor and break the systems that aren’t necessarily broken, correct your own behavior and subconscious work arounds, and focus on improving that next iteration. Be the empowered user and don’t just self correct but fix the broken parts of the system in your experience.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2015/01/usability-and-broken-systems.html&quot;&gt;Usability and broken systems&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on January 06, 2015.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[Bonnie G. Holmes]]></title>
  <link>https://jesseheady.com/2014/12/remembrances-of-bonnie-g-holmes.html</link>
  <id>https://jesseheady.com/2014/12/remembrances-of-bonnie-g-holmes</id>
  <updated>2018-02-27T00:00:00-00:00</updated>
  <published>2014-12-10T00:00:00-05:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;It is difficult to say goodbye to dearly loved ones without also honoring their memory. Great aunt Bonnie Holmes had an incredible wit and kind demeanor with an ever so subtle funny bone. I will remember her fondly for as long as I live, and I intend to share her story as frequently as possible so that others who didn’t know her might understand her undeniable impact on those around her and history itself.&lt;/p&gt;

&lt;p&gt;My great aunt Bonnie G. Holmes died on Friday, December 5 at the age of 84 after complications from a stroke. It was my honor to offer eulogy at Bonnie’s funeral along with her grandson and my mother. I’ve recently been reading over some of the many notes that she kept from her 18 year career at NASA as Dr. Wernher von Braun’s secretary, including some of her own remembrances. It’s difficult to represent a lifetime of achievement in a simple collection of words.&lt;/p&gt;

&lt;p&gt;Her involvement in shaping history is awe inspiring and I intend to share more of those remembrances, memorabilia, and history in future writings. I’d like to share below a copy of the text that I delivered at her funeral on December 8, 2014 in Eva, AL. It was an exceptionally difficult thing to do, just as saying goodbye to her has been so hard, however it’s the love that we all shared for Bonnie and memories of her that bring a smile back.&lt;/p&gt;

&lt;h3 id=&quot;remembrances-of-bonnie-g-holmes&quot;&gt;Remembrances of Bonnie G. Holmes&lt;/h3&gt;

&lt;p&gt;&lt;i&gt;Hello, my name is Jesse Heady, I’m one of Bonnie’s grand nephews. I’d like to take a few moments to honor great aunt Bonnie and represent the great- grand kids of the extended Green family.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Bonnie inspired myself and others as children to push our personal boundaries and dreams, she introduced us to astronauts and space and technology, and I will always be grateful for her tremendous legacy at NASA. Her work with Dr. von Braun and others was remarkable and priceless; she lived history and we live in awe and admiration of her contributions.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;It wasn’t until years after my experiences at Space Camp that I realized and recognized the significant role she played at Marshall, NASA, and the Rocket Center, let alone the very foundation of Space Camp itself. While many children grow up dreaming to be astronauts, so many of us here are fortunate enough to have lived it vicariously through Bonnie.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;I had a phone conversation with my brother Eli on Friday where we discussed great aunt Bonnie and our grief and joy. Eli quipped that the timing of the recent Orion launch delay on Thursday morning, and subsequent successful launch on Friday morning, was auspicious. I agree; it’s as if they were waiting for Bonnie to go along for the ride, and we know that she did. I hope that an entirely new generation carries us forward, just as pioneers like Bonnie did.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Great aunt Bonnie was known as Granny to her grand- and great-grand- children. My own daughter, Bettye Grace, is named for two of her great grandmothers, one of whom was Bettye Maddux Green Payne, my own Granny who passed away in 2007. Unfortunately, just before Thanksgiving this year, we also lost my wife Jenny’s own Granny, Shirley Heston, who everyone also called simply “Granny”.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Now we gather here to celebrate the life, and mourn the passing, of another amazing and inspirational Granny; a woman who in some ways I consider another Granny, just as the others we’ve lost. Great aunt Bonnie was one of a kind, and humble in her career and deeds with NASA, and while we’re all very proud of that especially, we knew her simply as great aunt Bonnie or Granny.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;My own name is a name-sake of my great grandfather Jesse Green. My mother’s sister and my aunt, Bonnie Sue, is the namesake of great aunt Bonnie just as my own daughter is the namesake of my Granny. That’s a lot of “name-saking” going on in our family, I know, but let me just say I am looking forward to meeting the next Bonnie.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Strong matriarchs are the foundation of our family and Bonnie embodied these principles. We knew her generous spirit, her clever wit, her beautiful smile, her cooking, and her prowess at Scrabble and Chicken Foot. She truly was a force to be reckoned with; and I know those Grannies are together and that brings me solace in this time of grief.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;I will miss her smile and jovial nature. I will miss her generosity and care at taking care of others. I will miss her very presence and being. She will be missed deeply by us all but I know her spirit lives on and I am so very grateful for the time we all had with her on this Earth.&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Bonnie Holmes was such a wonderful, caring, and inspirational woman. It’s such a difficult thing we have to do, to say goodbye to such a force, an amazing person who inspired multiple generations within our family, and beyond. We do that today, we celebrate her with all the grace and love that she taught us in life.&lt;/i&gt;&lt;/p&gt;

&lt;h3 id=&quot;media-coverage&quot;&gt;Media coverage&lt;/h3&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://obits.al.com/obituaries/huntsville/obituary.aspx?pid=173388257&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Bonnie Holmes Obituary (AL.com)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.al.com/news/index.ssf/2014/12/tennessee_valley_obituaries_fo_2.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Tennessee Valley obituaries for Dec. 6: Bonnie Holmes was &apos;the lady I work for,&apos; von Braun said (AL.com)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.al.com/news/index.ssf/2014/12/bonnie_holmes_long-time_assist.html&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Bonnie Holmes, long-time assistant to Dr. Wernher von Braun, passes away (AL.com)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.waff.com/story/27569055/colleagues-mourn-passing-of-von-braun-secretary&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Colleagues mourn passing of von Braun secretary (WAFF)&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.peckfuneralhome.com/memsol.cgi?user_id=1470706&quot; target=&quot;_blank&quot; rel=&quot;noopener noreferrer&quot;&gt;Peck Funeral Home virtual guestbook for Bonnie G. Holmes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2014/12/remembrances-of-bonnie-g-holmes.html&quot;&gt;Bonnie G. Holmes&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on December 10, 2014.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[On photography and graffiti]]></title>
  <link>https://jesseheady.com/2014/07/on-photography-and-graffiti.html</link>
  <id>https://jesseheady.com/2014/07/on-photography-and-graffiti</id>
  <updated>2013-08-02T00:00:00-00:00</updated>
  <published>2014-07-09T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;I began working on &lt;a href=&quot;http://photograff.it&quot;&gt;photograff.it&lt;/a&gt; back in June 2013 as a side project simply to find a creative outlet for two of my passion areas: photography and development. The subject of the combined media is graffiti and, in some small way, I pay homage to the real artists who make some amazing street art.&lt;/p&gt;

&lt;p&gt;There are three major components to this project: photographs of street art that I have personally taken, geo-locations of the art that’s been photographed, and a means to tie the media and the data together in a consumer friendly manner (web site). I’ll probably spend a separate post here or on &lt;a href=&quot;http://photograff.it&quot;&gt;photograff.it&lt;/a&gt; detailing my technical approach and critical thinking on the hurdles to overcome.&lt;/p&gt;

&lt;p&gt;Part of my challenge in this project has been picking the right platform to publish with the lowest barrier to entry, while still supporting enough flexibility to custom develop solutions to manage content. Additionally, I’ve had to overcome a number of technical hurdles with how to manage the geographical data for the photographs, currently without automatic geo-tagging from my DSLR.&lt;/p&gt;

&lt;p&gt;The biggest challenge of all, however, has been my own self-defeating attitude and also a lack of time to really commit to the project. Working 15-20 minutes here and there doesn’t really cut it when there are dozens to hundreds of shots to edit. The development of the website and normalization of the EXIF data to appropriate for publishing and associating in some manner to maps while simultaneously presenting the photographs in an aesthetically pleasing format also presents a formidable challenge.&lt;/p&gt;

&lt;p&gt;However, with all of that, I am still very driven to make this happen. The concept has been bouncing around my head for years, long before I actually put “pencil to paper” and just got a skeleton of a site running last summer. Since then, I’ve put in dozens of hours shooting and developing, but nothing substantial enough to feel like it’s really clicking. I still believe I’m close and not giving up on the project.&lt;/p&gt;

&lt;p&gt;Even though there are already similar projects out there, and most famously the &lt;a href=&quot;https://streetart.withgoogle.com/&quot;&gt;Google Cultural Institute street art project&lt;/a&gt;, I’m most excited to share my love of photography and development and maybe help to preserve some of the street art from paths less traveled. I may even learn some things along the way, not just about how to become a better photographer and developer, but how to continually improve prioritizing time-consuming tasks and projects under constrained conditions.&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2014/07/on-photography-and-graffiti.html&quot;&gt;On photography and graffiti&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on July 09, 2014.&lt;/p&gt;</content>
</entry>


<entry>
  <title type="html"><![CDATA[Welcome back to the intarwebs]]></title>
  <link>https://jesseheady.com/2014/06/welcome-back-to-the-intarwebs.html</link>
  <id>https://jesseheady.com/2014/06/welcome-back-to-the-intarwebs</id>
  <updated>2013-06-18T00:00:00-00:00</updated>
  <published>2014-06-18T00:00:00-04:00</published>
  
  <author>
    <name>Jesse Heady</name>
    <uri>https://jesseheady.com</uri>
    <email></email>
  </author>
  <content type="html">&lt;p&gt;I’ve spent about 20 years of my life as a user of the Internet. My first network connected computer was a Tandy (yes, Radio Shack) of some make, maybe a 286 processor, which I initially used to dial in to local BBSes in my hometown. That is, until my good friend and sysadmin started using his modem that was dedicated to his popular BBS for this thing called “The Internet”. People were pissed, myself included. “What the fuck man, I can’t play my door games,” we’d proclaim. It wasn’t until a month or two later that I realized there were infinitely more “doors” on the Internet and I was really missing out.&lt;/p&gt;

&lt;p&gt;I convinced my mother to sign us up to a local dial-up ISP. I logged obscene amounts of hours on my 28.8k, 33.6k, and later 56k, baud modems. So much so, that at one point we received a phone bill proclaiming that I’d left an open line to the ISP and was charging hundreds of dollars in “long distance”. It was bullshit, and we called them on it, because we were within the same area code. I am sure it was an attempt to eliminate the open line for whatever reason. It doesn’t matter.&lt;/p&gt;

&lt;p&gt;Anyway, I’ll fast forward a little and focus on my introduction and immediate obsession with web programming and architecture. I was fortunate enough to have some really intelligent, like-minded, and highly technically adept friends in high school. We were punks and geeks and didn’t really care about “normal” stuff. I spent a lot of time hacking on servers and websites and designs throughout high school. So much of what I know today was self taught but guided by a few friends who also qualify equally as mentors. I’m so grateful for those friendships and for the path I’ve managed to navigate over the years. The hipster cool geek culture of today was normal life for us then; I feel like the rest of the world is catching up in a lot of ways (ironically, thanks to the Internet). I’m actually very pleased about that. Nerd love.&lt;/p&gt;

&lt;p&gt;Over the years, I have maintained a few different static websites that mostly provided an outlet for whatever creative passion I held at that point in time. I also blogged rather obsessively for a while, too. One day I might re-publish that old stuff just for the sake of nostalgia and to remember where I’ve come from to keep me looking ahead. As to where I am going and what I am looking for and what I intend to write about here, mostly I am hoping to focus on the things I’ve already described: technology, development, design. My intention is to get back to writing and hopefully give some things back to the community that’s helped me learn so much.&lt;/p&gt;

&lt;p&gt;So, here I am, my grand re-entrance to blogging in cyberspace. Welcome back!&lt;/p&gt;

  &lt;p&gt;&lt;a href=&quot;https://jesseheady.com/2014/06/welcome-back-to-the-intarwebs.html&quot;&gt;Welcome back to the intarwebs&lt;/a&gt; was originally published by Jesse Heady at &lt;a href=&quot;https://jesseheady.com&quot;&gt;Jesse Heady&lt;/a&gt; on June 18, 2014.&lt;/p&gt;</content>
</entry>

</feed>
