<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://grantirwin00.github.io/design-to-code-log/feed.xml" rel="self" type="application/atom+xml" /><link href="https://grantirwin00.github.io/design-to-code-log/" rel="alternate" type="text/html" /><updated>2026-05-11T20:53:19+00:00</updated><id>https://grantirwin00.github.io/design-to-code-log/feed.xml</id><title type="html">Logging Learning</title><subtitle>A running record of design decisions, iterations, and lessons learned.</subtitle><author><name>Grant Irwin</name></author><entry><title type="html">Day 3: Shipping Craft</title><link href="https://grantirwin00.github.io/design-to-code-log/2026/05/10/Day-3.html" rel="alternate" type="text/html" title="Day 3: Shipping Craft" /><published>2026-05-10T00:00:00+00:00</published><updated>2026-05-10T00:00:00+00:00</updated><id>https://grantirwin00.github.io/design-to-code-log/2026/05/10/Day-3</id><content type="html" xml:base="https://grantirwin00.github.io/design-to-code-log/2026/05/10/Day-3.html"><![CDATA[<p><a href="/design-to-code-log/" style="display: inline-block; transition: all 0.2s ease;" onmouseover="this.style.opacity='0.7'; this.style.transform='scale(1.05)';" onmouseout="this.style.opacity='1'; this.style.transform='scale(1)';">
  ← Back to Home
</a></p>

<h1 id="day-3-shipping-craft">Day 3: Shipping Craft</h1>

<p>Craft is live. What started as a prompt about non-billable time and designer growth ended up as a fully functional, deployed web app – built in a single HTML file with no framework, no dependencies, and no backend.</p>

<hr />

<h2 id="what-was-built">What Was Built</h2>

<p>Craft is a single-file HTML/CSS/JS application. Everything – structure, styles, and behavior – lives in one file. There’s no login required for end users browsing the learning buckets, but a password-protected admin panel is accessible via the <code class="language-plaintext highlighter-rouge">?admin</code> route for anyone managing content. It’s the kind of architecture that’s easy to dismiss until you ship something with it, and then it makes a lot of sense.</p>

<p>The CMS is backed by <code class="language-plaintext highlighter-rouge">localStorage</code> – full CRUD on buckets and resources, plus JSON export and import for portability. If the browser goes away, the data can travel. The deploy pipeline runs through GitHub and Vercel: push to main, live in 20 seconds.</p>

<hr />

<h2 id="key-decisions">Key Decisions</h2>

<p><strong>Visual language first.</strong> The app was styled to match Midwestern’s internal brand from the start – light mode, DM Sans, lime accent color, hairline grid dividers. It doesn’t feel like a side project. It feels like it belongs.</p>

<p><strong>No dependencies.</strong> Vanilla JS, no build step, no package manager. The constraint forced clarity. Every interaction had to be written deliberately rather than abstracted away by a library.</p>

<p><strong>Admin without a backend.</strong> The <code class="language-plaintext highlighter-rouge">?admin</code> route pattern is a clean solution for low-stakes content management. It keeps the file portable while still giving a non-technical user a surface to work with.</p>

<hr />

<h2 id="iterations">Iterations</h2>

<p>The shipped version went through several meaningful passes before it felt right:</p>

<ul>
  <li><strong>Typography and spacing</strong> – swapped to DM Sans, ran a border radius audit, and opened up spacing throughout for more breathing room</li>
  <li><strong>Light mode restyle</strong> – full visual overhaul from the initial dark treatment to a light mode that matches midwestern.com, including the lavender-gray background, white card surfaces, and lime highlight treatment</li>
  <li><strong>Responsive stat row</strong> – used <code class="language-plaintext highlighter-rouge">clamp()</code> to prevent overflow at narrow viewports without breaking the layout at wider sizes</li>
  <li><strong>Modal bug fix</strong> – the save callback was wired to the wrong slot, causing the modal to close without persisting changes; caught and fixed</li>
  <li><strong>Ghost card</strong> – the placeholder for future team-defined buckets is preserved in the code but commented out and hidden from the UI, ready to surface when needed</li>
  <li><strong>Logo integration</strong> – walked through the full GitHub → Vercel pipeline for swapping in a custom logo asset</li>
  <li><strong>Nav layout</strong> – corrected to true <code class="language-plaintext highlighter-rouge">space-between</code> with the logo as a direct flex child, fixing an alignment issue at certain breakpoints</li>
</ul>

<hr />

<h2 id="stack">Stack</h2>

<p>HTML · CSS · Vanilla JS · localStorage · GitHub · Vercel</p>

<hr />

<h2 id="what-i-learned">What I Learned</h2>

<p>Constraints are a feature. Deciding early that this would be a single file with no dependencies removed entire categories of decisions – no framework debates, no build configuration, no dependency management. The work stayed focused on the product. There’s a version of design tooling that lives entirely in that space, and it’s more capable than it looks.</p>]]></content><author><name>Grant Irwin</name></author><summary type="html"><![CDATA[← Back to Home]]></summary></entry><entry><title type="html">Day 2: Building Craft &amp;amp; Defining Growth</title><link href="https://grantirwin00.github.io/design-to-code-log/2026/05/05/Day-2.html" rel="alternate" type="text/html" title="Day 2: Building Craft &amp;amp; Defining Growth" /><published>2026-05-05T00:00:00+00:00</published><updated>2026-05-05T00:00:00+00:00</updated><id>https://grantirwin00.github.io/design-to-code-log/2026/05/05/Day-2</id><content type="html" xml:base="https://grantirwin00.github.io/design-to-code-log/2026/05/05/Day-2.html"><![CDATA[<p><a href="/design-to-code-log/" style="display: inline-block; transition: all 0.2s ease;" onmouseover="this.style.opacity='0.7'; this.style.transform='scale(1.05)';" onmouseout="this.style.opacity='1'; this.style.transform='scale(1)';">
  ← Back to Home
</a></p>

<h1 id="day-2-building-craft--defining-growth">Day 2: Building Craft &amp; Defining Growth</h1>

<p>Two separate threads today – one about building a tool, one about building a career.</p>

<hr />

<h2 id="craft-an-internal-design-growth-program">Craft: An Internal Design Growth Program</h2>

<p>Started with a context dump on Midwestern’s internal design process: the 5-phase design thinking framework, AI-augmented tooling across Zoom, Claude, Figma, Notion, Cursor, and GitHub. The problem to solve: build an internal alternative to PIPs and growth plans – something positive, self-directed, and useful during non-billable time.</p>

<p>The output is <strong>Craft</strong> – a single HTML file. No login, no tracking, no dependencies. Seven pre-populated learning buckets:</p>

<ol>
  <li>Research &amp; Discovery</li>
  <li>UX &amp; Systems Thinking</li>
  <li>Visual Craft</li>
  <li>Prototyping &amp; Motion</li>
  <li>AI &amp; Tooling</li>
  <li>Communication &amp; Storytelling</li>
  <li>Front-End Literacy</li>
</ol>

<p>Each bucket contains curated resources, time estimates, and editorial notes on why the material matters. A ghost card holds space for team-defined buckets down the road.</p>

<h3 id="visual-refinement">Visual Refinement</h3>

<p>Went through two rounds of iteration after the initial build:</p>

<p><strong>Round 1</strong> – standardized typography to DM Sans, tightened border radii, opened up spacing.</p>

<p><strong>Round 2</strong> – full light-mode restyle to match midwestern.com. Cool lavender-gray background, white card surfaces, lime highlight treatment, hairline grid dividers, and a dark “Why it matters” panel pulled from their site’s callout section pattern.</p>

<hr />

<h2 id="leapsome-goal-development">Leapsome Goal Development</h2>

<p>In a separate conversation, built out a full FY 26-27 professional development plan: phased quarterly timeline, SMART goals, free learning resources, and a weekly time budget. After seeing the first draft, pulled it back intentionally – less ambition on the code side, more tinkering than building.</p>

<p>From there, expanded into two additional Leapsome goal tracks:</p>

<ul>
  <li><strong>Department goal</strong> – largely already defined, just needed clean framing</li>
  <li><strong>Personal goal</strong> – presented as a menu of options, two were chosen</li>
</ul>

<p>The final pass tightened everything into Leapsome-ready language: summary statements, key results, and a reusable context block for future AI chats.</p>

<h3 id="what-i-learned">What I Learned</h3>

<p>Writing goals for a platform like Leapsome forces a useful constraint – vague intentions don’t survive the format. The elicitation round before writing made a significant difference in output quality. Getting the right inputs before generating anything is a pattern worth repeating.</p>]]></content><author><name>Grant Irwin</name></author><summary type="html"><![CDATA[← Back to Home]]></summary></entry><entry><title type="html">Welcome to My Design Log</title><link href="https://grantirwin00.github.io/design-to-code-log/2026/05/04/Day-1.html" rel="alternate" type="text/html" title="Welcome to My Design Log" /><published>2026-05-04T00:00:00+00:00</published><updated>2026-05-04T00:00:00+00:00</updated><id>https://grantirwin00.github.io/design-to-code-log/2026/05/04/Day-1</id><content type="html" xml:base="https://grantirwin00.github.io/design-to-code-log/2026/05/04/Day-1.html"><![CDATA[<p><a href="/design-to-code-log/" style="display: inline-block; transition: all 0.2s ease;" onmouseover="this.style.opacity='0.7'; this.style.transform='scale(1.05)';" onmouseout="this.style.opacity='1'; this.style.transform='scale(1)';">
  ← Back to Home
</a></p>

<h1 id="day-1-learning--using-github-building-my-design-log">Day 1: Learning &amp; Using GitHub, Building my Design Log</h1>

<p>Good design is rarely a straight line. It’s a series of small bets, course corrections, and occasional breakthroughs. This log is an attempt to document that process honestly – not just the wins, but the reasoning behind every turn.</p>

<h2 id="what-i-did">What I Did</h2>

<p>Completed the GitHub Pages course on <a href="https://skills.github.com">skills.github.com</a> and used it as the
foundation for a personal design log. The goal is to document design decisions, iterations, and lessons
learned across projects.</p>

<h2 id="what-i-built">What I Built</h2>

<ol>
  <li>A home page (<code class="language-plaintext highlighter-rouge">index.md</code>) with:
    <ul>
      <li>A short statement of intent for the log</li>
      <li>A table-based entry index (date, project, topic)</li>
      <li>Topic navigation links</li>
      <li>An about section with profile photo and links</li>
    </ul>
  </li>
</ol>

<h2 id="what-i-learned">What I Learned</h2>

<ol>
  <li>Pure markdown can’t handle inline/float layouts – you need inline HTML for anything involving image positioning</li>
  <li>GitHub Pages renders inline HTML in <code class="language-plaintext highlighter-rouge">.md</code> files without issue</li>
  <li><code class="language-plaintext highlighter-rouge">object-fit: cover</code> is the right tool for forcing an image into a fixed box without distortion</li>
  <li><code class="language-plaintext highlighter-rouge">alt</code> text on a profile photo should describe the person, not just say “profile photo”</li>
</ol>

<h2 id="setting-up-the-blog">Setting Up the Blog</h2>

<h3 id="configuration">Configuration</h3>

<p>Set up <code class="language-plaintext highlighter-rouge">_config.yml</code> with title, author, description, and theme. Iterated through Hacker and Midnight themes
before settling on a fully custom CSS override for precise control over the palette and typography.</p>

<h3 id="theme-and-styling">Theme and Styling</h3>

<p>Chose DM Sans from Google Fonts as a clean, warm alternative to Proxima Nova. Built a custom stylesheet
at <code class="language-plaintext highlighter-rouge">assets/css/style.scss</code> using a warm dark palette:</p>

<ul>
  <li>Background: <code class="language-plaintext highlighter-rouge">rgb(26, 26, 26)</code></li>
  <li>Text: <code class="language-plaintext highlighter-rouge">rgb(255, 236, 222)</code></li>
  <li>Links: <code class="language-plaintext highlighter-rouge">rgb(255, 184, 133)</code></li>
</ul>

<h3 id="posts-and-routing">Posts and Routing</h3>

<p>Jekyll compiles <code class="language-plaintext highlighter-rouge">_posts/YYYY-MM-DD-title.md</code> into <code class="language-plaintext highlighter-rouge">/YYYY/MM/DD/title.html</code>, preserving filename casing.
The GitHub Pages build action hardcodes <code class="language-plaintext highlighter-rouge">future: false</code> regardless of <code class="language-plaintext highlighter-rouge">_config.yml</code>, so posts must use
a current or past date to build.</p>

<p>Links in <code class="language-plaintext highlighter-rouge">index.md</code> must use relative paths without a leading slash to resolve correctly against the
repo base path rather than the domain root.</p>

<h2 id="files">Files</h2>

<ul>
  <li><code class="language-plaintext highlighter-rouge">index.md</code> – home page and entry index</li>
  <li><code class="language-plaintext highlighter-rouge">_posts/2024-01-01-Welcome.md</code> – this post</li>
  <li><code class="language-plaintext highlighter-rouge">_config.yml</code> – Jekyll configuration</li>
  <li><code class="language-plaintext highlighter-rouge">assets/css/style.scss</code> – custom stylesheet</li>
</ul>]]></content><author><name>Grant Irwin</name></author><summary type="html"><![CDATA[← Back to Home]]></summary></entry></feed>