<?xml version="1.0" encoding="utf-8"?>
  <rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:georss="http://www.georss.org/georss"
    xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
  >
    <channel>
      <title>Piccalilli - Course Brand Development open working project post archive</title>
      <link>https://piccalil.li/</link>
      <atom:link href="https://piccalil.li/projects/course-brand-development.xml" rel="self" type="application/rss+xml" />
      <description>We’re implementing full brands for both upcoming and existing premium courses, using our extensive, flexible theming system to give you a taste of what’s to come with open working projects.</description>
      <language>en-GB</language>
      <copyright>Piccalilli - Course Brand Development open working project post archive 2026</copyright>
      <docs>https://www.rssboard.org/rss-specification</docs>
      <pubDate>Tue, 07 Apr 2026 01:02:20 GMT</pubDate>
      <lastBuildDate>Tue, 07 Apr 2026 01:02:20 GMT</lastBuildDate>

      
      <item>
        <title>Resolving found issues with design assets</title>
        <link>https://piccalil.li/projects/course-brand-development/11/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Jason Bradberry]]></dc:creator>
        <pubDate>Thu, 03 Jul 2025 10:55:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/11/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>This post is about <a href="https://www.youtube.com/watch?v=5u8vd_YNbTw">the greater good</a>. Designing a website is an odd thing. Whether you're a solo freelancer or part of a larger team — and however collaborative your process, at some point you'll sit down at your design tool of choice, and create something by yourself. No amount of wireframing or user research can get around the fact that design tools are designed to be operated solo.</p>
<p>I mean, Figma has it's "multiplayer" thing, but I don't know anyone who actually uses it to co-create a design in tandem — that would be <em>chaos</em>. A single designer responsible for the execution of a website design is curious when you think about the sheer number and diversity of people from all walks of life who will use a design in the real world, once it's built. The design decisions that we as individual designers make will affect people with ways of seeing and thinking that are <em>vastly</em> different to our own. Even within our team the diversity of thinking is pretty broad. Which is why getting a design review has <em>huge</em> value.</p>
<p>In <a href="https://piccalil.li/projects/course-brand-development/10/">Andy's last post</a>, he used the word <em>interrogated</em> to describe our <a href="https://piccalil.li/projects/course-brand-development/10/#catching-up-as-a-unit">internal design review</a>. We go in pretty hard in these reviews, and that's ok. In fact, it's good, because it's all for <em>the greater good</em>, meaning that inviting a broader perspective helps us <a href="https://set.studio/">make resilient websites that work <em>for everyone</em></a>.</p>
<p>We’d identified a few areas as tricky or problematic in the design. Here's how we tackled them.</p>
<h2>The easy stuff</h2>
<p>Some of this stuff was easily handled. Folded corner graphics could be dropped, and offset outline in buttons whilst a lovely design detail could be removed to reduce the impact of theme styles on the wider design system. A little compromise, but no big thing.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/highlighted-corner-fold.jpg" alt="The mindful design header featuring a logo and a call to action button. On the top right, there's a little corner fold" /></p>
<p><img src="https://piccalil.b-cdn.net/images/projects/highlighted-button.jpg" alt="A button on the JavaScript for Everyone landing page featuring a thin dashed offset outline in red" /></p>
<h2>The not so easy stuff, such as switching the display font for JavaScript for Everyone</h2>
<p>We made the call — the readability of the display font for JavaScript for Everyone was too far off the mark to be viable.</p>
<p>Ouch, <em>now</em> we're into painful territory. Yes, my heart sank. Repressed memories of clients dropping bombs like this at the eleventh hour came flooding back.</p>
<p></p>
<p>But this time it wasn't a client whim, but my own design decision that had come back to bite me.</p>
<p>These situations can seem <em>huge</em> at the time. I mean I wrote <a href="https://piccalil.li/projects/course-brand-development/9/">a whole post</a> about how the typeface selection was <em>the cornerstone</em> of the whole design! Yes, I was nervous that the whole thing would topple over. Not to mention the fact we're working in the open here. But that's the point of this whole thing — to share the <em>whole</em> process, even the messy "in-between" moments that nobody ever talks about.</p>
<p>But when the dust settles, there's always a way forward. Here's how I approached this one…</p>
<h3>Retrofitting a retro-futuristic font</h3>
<p>Our foundation — the messaging that's built around the idea of <em>taking your skillset way beyond</em> remains untouched. We want to stay in the visual territory we're in, inspired by sci-fi film and retro futuristic computer game design cues, but we want to dial up the readability on the display font, whilst retaining the integrity of the design.</p>
<p>When I say <em>integrity of the design</em> here, I don't refer to visual standards or some kind of aesthetic ideal. I'm referring to retaining <em>the integrity of what we're trying to communicate</em> through each element of the design. Careful consideration is also needed to ensure the new font either works out of the box with the other design elements or that the other elements can be tweaked to work with the new font. Importantly, it needs to do this whilst still communicating the same messaging effectively.</p>
<p>As I explained in <a href="https://piccalil.li/projects/course-brand-development/9/">my last post</a>, each design decision builds off the last, so let's just say I was a little nervous that the design would lose some of its impact. It would be much easier if we were swapping out a generic sans-serif here, that's for sure.</p>
<p>Here's a reminder of the font we dropped. <em>Oof! I'll miss this one.</em></p>
<p><img src="https://piccalil.b-cdn.net/images/projects/js4e-top-part.jpg" alt="The top part of the JavaScript for Everyone landing page. Featuring site header with a logo and a call to action button. Below that, a hero section with the eyebrow label “A Piccalilli Course” and the heading “Take your skillset way beyond syntax expertise”. The heading is set in the display font Orientation Bold." /></p>
<p>Cue more digging for fonts. Deep cutouts or heavily unusual letter shapes were off the table, so I put my focus on looking for typefaces with bold angular shapes, and future retro aesthetics. Here's the shortlist I made.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/font-option-artboards.jpg" alt="Ten different frames side by side in Figma, each with a different display font." /></p>
<p><a href="https://fonts.adobe.com/fonts/eurostile-extended">Eurostile</a> was an option that would give us an easy route into sci-fi territory and the angles in those X and Y characters work great with our iconography. It's pretty much <a href="https://typesetinthefuture.com/2014/11/29/fontspots-eurostile/"><em>the</em> definitive font</a> if you want to give an instant impression of <em>"this is in the future"</em>. It's also from the 60s so it's got retro covered too.</p>
<p>Going all the way back to our brief, Mat wanted us to avoid playing the techy/futuristic look straight off the bat, so this one remained on the cutting room floor.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/eurostile-option.jpg" alt="The top part of the JavaScript for Everyone landing page. Featuring site header with a logo and a call to action button. Below that, a hero section with the eyebrow label “A Piccalilli Course” and the heading “Take your skillset way beyond syntax expertise”. The heading is set in the display font Eurostile Extended." /></p>
<p><a href="https://www.superiortype.com/fonts/raptor-v2">Raptor V2</a> had the angled shapes I was looking for and some much more subtle cutouts which would tie nicely into the iconography and graphics. I was leaning towards this one, but was it retro enough?</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/raptor-font-option.jpg" alt="The top part of the JavaScript for Everyone landing page. Featuring site header with a logo and a call to action button. Below that, a hero section with the eyebrow label “A Piccalilli Course” and the heading “Take your skillset way beyond syntax expertise”. The heading is set in the display font Raptor V2." /></p>
<p><a href="https://pangrampangram.com/products/right-grotesk">Right Grotesk</a> had a nice monospaced influence and shared the sharply angled corners with our lede font <a href="https://fonts.google.com/specimen/Azeret+Mono">Azeret Mono</a>, making it an easy on to make work with the rest of the typography but personality wise, it was a bit on the quirky side. At this point I was feeling a bit like Goldilocks after the first two bowls of porridge.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/right-grotesk-option.jpg" alt="The top part of the JavaScript for Everyone landing page. Featuring site header with a logo and a call to action button. Below that, a hero section with the eyebrow label “A Piccalilli Course” and the heading “Take your skillset way beyond syntax expertise”. The heading is set in the display font Right Grotesk." /></p>
<p>Then along came <a href="https://simplebits.shop/products/cartridge">Cartridge</a>, a font quite literally designed to give that feel of an 80s Atari game cartridge or a VHS box. Instant retro vibes.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/cartridge-font-option.jpg" alt="The top part of the JavaScript for Everyone landing page. Featuring site header with a logo and a call to action button. Below that, a hero section with the eyebrow label “A Piccalilli Course” and the heading “Take your skillset way beyond syntax expertise”. The heading is set in the display font Cartridge Bold." /></p>
<p>I was feeling it. In terms of tone it was a different direction, but one that I thought we could make work with a few tweaks. Firstly, shape wise, this threw a few spanners in the works. What we were gaining in vibe, we were losing in connection between the shapes in the font and the shapes in the graphics. I'd need to find another way to tie the graphics into the design assets.</p>
<p>The other spanner was that this font had very different letter shapes to our lede font, which lessened the harmony in our type combinations. Here's a reminder of those shared curved corners I talked about in <a href="https://piccalil.li/projects/course-brand-development/9/">my last post</a>.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/highlighted-letter-curves.png" alt="The letters C, g, and a are set in Orientation Bold, above the letters J, t and F set in Azeret Mono. The rounded corners of the letterforms within both fonts are highlighted in magenta circles." /></p>
<p>Here's was where serendipity came to the rescue (as it so often does if you're paying attention). Our lede font Azeret Mono has a huge set of alternate characters — and would you know it, I was able to swap out most of Azeret’s letters with curved corners for alternates that echo the tapered notches between the <a href="https://alltimedesign.com/anatomy-of-typography-a-complete-guide-for-beginners-in-2025/#9_Stem">stem</a> and <a href="https://alltimedesign.com/anatomy-of-typography-a-complete-guide-for-beginners-in-2025/#8_Bowl">bowl</a> in Cartridge. Much better!</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/labelled-character-sets.jpg" alt="Lowercase letters a, b d, g, m, p, q, r, and u are set in three rows — Cartride in the center, and Azeret Mono above and below. The top row shows the original rounded letters we were using in Azeret, the bottom row shows the new alternates we are using." /></p>
<p><img src="https://piccalil.b-cdn.net/images/projects/character-sets.jpg" alt="Capital and lowercase pairs for each letter of the alphabet are set in the Cartridge font at the top, and in Azeret Mono below. The image shows the similarities in letter shapes now we’re using the alternate characters." /></p>
<p>Now the headings and ledes were working <em>really nicely</em> together. The tone of the typography was different, but spot on to the brief which left one final thing I wanted to address: the logo.</p>
<p>I'd already been playing with setting the logo in a block capital style and had settled on a font that had the feel I was looking for — the kind of thing you could imagine written on the side of a ship belonging to some kind of distant future corporate space entity. Like Eurostile but with more interesting letter shapes. It also it <em>had</em> to have a good J. <a href="https://pangrampangram.com/products/neue-machina-plain">Neue Machina</a> fitted the bill nicely.</p>
<p>The aim I had was to use the logo to bring some of what was working so well about Orientation back into the design — the way the shapes reflected the angles and cutout elements within the graphics and iconography but it needed to be more subtle, so as to retain readability. I set to it in Illustrator and began chopping away at the type. Here's the un-chopped and chopped logos for comparison. It definitely felt a lot more sci-fi now.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/js4e-logo-breakdown.jpg" alt="Two versions of the new JavaScript for Everyone logo sit one above the other. The bottom logo has customised letterforms, with small notches cut out." /></p>
<p>I’m delighted, and I'll be honest a little relieved with the end result. It's not easy retrofitting a display font into a “finished” design concept, but I think we got there.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/j4se-new-logo-in-context.jpg" alt="The top part of the updated design with new typography and logo for JavaScript for the Everyone landing page. Featuring site header with a logo and a call to action button. Below that, a hero section with the eyebrow label “A Piccalilli Course” and the heading “Take your skillset way beyond syntax expertise”." /></p>
<h2>The imperfection of humans designing for other humans</h2>
<p>We learnt a big lesson on this project — don't skimp on design reviews and get them done early in the process. We do exactly that with our clients. We like to call that process, “getting a temperature check”.</p>
<p>We’re normally better at doing this internally too., but for whatever reason on this project, I felt a false sense of security designing for a system that we all knew well, and I took the design too far before inviting feedback. It happens. I was in a real flow with this one, and driven by a genuine excitement about where the design was heading, so I kept my head down working on it. I won't be doing that again!</p>
<p>Even after nearly 20 years in the industry, I'm not immune to getting caught out, nor would I ever want to give that impression here. We're humans at the end of the day, designing stuff for other humans (<a href="https://piccalil.li/mindful-design">here, here</a>, I can hear <a href="https://bsky.app/profile/scott.is">Scott</a> cheering!).</p>
<p>So yes, I'll be getting a team design review earlier next time — it's for the greater good.</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>Identifying issues with design assets</title>
        <link>https://piccalil.li/projects/course-brand-development/10/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Andy Bell]]></dc:creator>
        <pubDate>Tue, 01 Jul 2025 11:55:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/10/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>We've just arrived the <em>prototypes and technical planning</em> sprint and up until this point the focus has been heavily swayed towards "let the creativity flow and don't be bedevilled by what the browser can/can't do". Now it's all about working out what <em>can</em> be done, what needs walking back and what needs fixing.</p>
<p>There's two phases to this process. The first phase is where we sketch-up the creative as it sits — a concept I <a href="https://piccalil.li/complete-css/">teach in Complete CSS</a> — and then a round of low-fidelity, <em>rough</em> prototypes. Again, I teach how to use prototypes to better communicate with designers in <a href="https://piccalil.li/complete-css/">Complete CSS</a>.</p>
<h2>Sketching up</h2>
<p>I’ve been writing CSS for nearly 20 years and still personally rely heavily on visually planning before I build anything. You might be thinking “of course you have to plan”, but that isn’t building a backlog in Trello, Jira or Notion. It’s about grabbing a flat version of a design — in our case by exporting Figma frames — and drawing all over them.</p>
<p>Historically, I used to print designs and take to them with markers, mount board and scalpels, but these days, I use FigJam.</p>
<p><img src="https://piccalil.b-cdn.net/images/course/complete-css/1732192080938-913.jpg" alt="A wide shot of a FigJam document showing coloured post-it notes, a colour key and  the full export of the design with coloured lines drawn all over it. There are also sections of components that have been sliced out with lots of different coloured post it notes dotted around." /></p>
<p>The aim of the game is to work fast and give your brain space to think about the build at an abstract level. We’re not specifically thinking about technology choices here either. Sure, you’re going to think about CSS techniques and semantic markup, naturally, but we’re not in the business of weighing up frameworks against each other.</p>
<p>It’s hard to grasp what we’re doing in writing, so allow me to show you with a quick video.</p>
<p></p><p>Watch the <a href="https://iframe.mediadelivery.net/embed/461980/bc789352-ba75-4ad2-96b9-985dbdde92c8?autoplay=false&amp;loop=false&amp;muted=false&amp;preload=true&amp;responsive=true">video</a>.</p><p></p>
<p>With that context, hopefully you get the idea of a sketch-up plan, so let's take a look at ours for this project.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/brands-sketchup-wide.jpg" alt="3 artboards, one for each course. Each element of the page has been outlined in red. There's lots of red boxes with annotations for each." /></p>
<p>This sketch-up is different to the example above because this is a completely different context:</p>
<ol>
<li>We're in a very established project and design system</li>
<li>Visually these themes are very different but our job is to make sure they are the same under the hood</li>
<li>We have to consider both "how do we get this done" and "how do we prevent damage/debt in the codebase"</li>
</ol>
<p><img src="https://piccalil.b-cdn.net/images/projects/brands-sketchup-closer.jpg" alt="A closer view of the JavaScript for Everyone sketh-up where the attention is on a user form. In the annotation, a clip of storybook is shown, along with the live pattern" /></p>
<p>The main focus of this sketch-up is sectioning out the creative, determining if it already fits or <em>can</em> fit and finally, <strong>finding problems</strong>.</p>
<p>I can't stress enough how important it is to <strong>find problems in planning and not in production</strong>. Sure, we're not in a utopia, so <em>something</em> will always pop up in production, but avoiding breaking your flow state with blockers is really important.</p>
<p>I'm very much of the opinion that production coding should be pretty chilled because you've front-loaded your planning and have already worked out <em>how</em> you're going to build the thing. The focus should be more "how can this break and how do I mitigate that?"</p>
<p>That's exactly what we're trying to do with this process. We're giving the creative work not just fresh eyes, but completely different eyes that see things another person might not see.</p>
<p>Jason did all the creative for this project and Leanne did the whole sketch-up plan. Jason is really creative but doesn't think as much in systems whereas Leanne is <em>extremely</em> systems-oriented. It's all about blending those unique skillsets at this point.</p>
<p>The point I'm making is Leanne will see things Jason won't (and visa-versa), so her job in this sketch-up process is to clearly identify those problems.</p>
<h2>Catching up as a unit</h2>
<p>Once Leanne had done her first pass as a sketch-up, we got together as a team and interrogated that work and the creative it referenced.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/team-catchup-course-brand.jpg" alt="Leanne and Andy watch Jason present in a Google Meet call" /></p>
<p>This part is really important because just like with a sketch-up, it's useful to work <em>fast</em>. We could do the part where we all come together asynchronously — it's how we work the vast majority of the time — but this approach allows for quick decision making and quieter notifications in Notion 😅</p>
<p>It gives each person an opportunity to argue their case on the details too. For example I will drive everything to be as simple as possible as a policy, but while I hack away, doing this on a team call gives Jason the opportunity to say "wait up" and add more context as to why a visual treatment is important.</p>
<p>By the end of the call, we're in a position where we can break off to producing low fidelity prototypes to test potential problems areas while we tackle the immediate issues with the creative.</p>
<h2>Some problems we found</h2>
<p>Let's take a look at three problems we found during the sketch-up and the team call.</p>
<h2>The display font for JavaScript for Everyone</h2>
<p><img src="https://piccalil.b-cdn.net/images/projects/js4e-old-typeface.jpg" alt="The old typeface featuring lots of cut-outs, making it hard to read" /></p>
<p>This font is great but there's a real readability problem with it. It tends to be better when it's rendering a short phrase with clear intonation, but the font is used <em>everywhere</em>, including buttons.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/js4e-new-typeface.jpg" alt="The new typeface which is much simpler to read and also still looks retro-futuristic" /></p>
<p>The font was — as Jason saw it — critical to conveying the brand, which I agree with to a point, but we zoomed out and remembered what is important: readability over everything. With that reminded, Jason went back to the drawing board and worked a few alternative options. We settled on Catridge as the new display font.</p>
<h2>Offset outline in buttons presented a wider design system risk</h2>
<p>The Piccalilli design system isn't the most heavily guarded system in the world, but we do really look after it. We're mostly a bunch of design system nerds after all.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/offset-border-button.jpg" alt="A button with a surrounding call to action context. The button has a dashed pink border with an offset of about 5 pixels" /></p>
<p>Now you might be wondering why this is a problem. It's not a <em>huge</em> problem, but consider the CSS for buttons as it currently is:</p>
<pre><code>.button {
  display: var(--button-display, inline-flex);
  align-items: var(--button-align-items, center);
  justify-content: var(--button-justify-content, center);
  gap: var(--button-gap, var(--space-2xs));
  padding: var(--button-padding, var(--space-xs, 0.8em) var(--space-m, 2em));
  background: var(--button-bg);
  color: var(--button-text);
  line-height: var(--button-line-height, var(--leading-slim));
  border-color: var(--button-border-color);
  border-width: var(--button-border-width, var(--stroke-weight-light));
  border-style: var(--button-border-style, solid);
  border-radius: var(--button-radius, none);
  box-shadow: var(--button-box-shadow, none);
  text-decoration: none;
  text-transform: var(--button-text-transform, uppercase);
  font-weight: var(--button-font-weight, var(--font-bold));
  font-size: var(--button-font-size, var(--size-step--3));
  font-family: var(--button-font-family, var(--font-display));
  letter-spacing: var(--button-kerning, var(--kerning));
  cursor: pointer;
}
</code></pre>
<p>This is just the main <code>.button</code> class, but it also inherits this base focus style:</p>
<pre><code>:focus-visible {
	outline-color: var(--focus-ring-color);
	outline-style: var(--focus-ring-style);
	outline-offset: var(--focus-ring-offset);
	outline-width: var(--focus-ring-width);
}
</code></pre>
<p>The second part rules out using <code>outline</code> which would give us that offset. Modern browsers support border radius with outline too. It's just a bit <em>hacky</em> to do that and we want to maintain the global focus treatment across the site without overriding, the <em>overriding again</em>.</p>
<p>We <em>could</em> achieve this treatment by adding a child element to the button but that sort of treatment in an existing design system is a <em>big decision to make</em> with potentially wide-reaching consequences, so we have to ask ourselves, "is this treatment worth all of that work?". Of course not, so an alternative is needed to <em>simplify</em>.</p>
<h2>Visual treatment also presented a wider design system risk</h2>
<p>One nice detail introduced in the creative exploration was a little folded corner in the header for Mindful Design. It was a wink and a nod to how Scott runs his design workshops: <em>lots</em> of post-it notes.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/corner-fold.jpg" alt="The mindful design header featuring a logo and a call to action button. On the top right, there's a little corner fold" /></p>
<p>Similarly to the button, we have to ask ourselves if we want to add additional CSS and markup <em>everywhere</em> to accommodate this one bit of treatment.</p>
<p>As we saw it during this process, it's very subtle but potentially problematic on small viewports because there's a risk of the smaller gutter not giving enough space for the corner to <em>visually</em> collide. We're also using that treatment further down the page too, so again, a re-think is needed.</p>
<p>Now it's over to Jason to talk about how he resolved these problems prior to prototypes being produced.</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>Tackling design decisions</title>
        <link>https://piccalil.li/projects/course-brand-development/9/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Jason Bradberry]]></dc:creator>
        <pubDate>Thu, 26 Jun 2025 10:55:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/9/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>Anyone can be a great designer. My take is that we're all born innately creative, but we unlearn so much of that childlike creativity through education, work and the culture we live in, and so we look at "creative" people and see them as "other", or somehow gifted in a way that we could never be. I mean, I'm a professional designer and <em>I do that!</em></p>
<p>So much of being a great designer is feeling confident in having something to say, or finding something within the messaging of a piece of work that you can confidently stand behind. Yes there's technical skill needed, but the job is fundamentally about getting people to pay attention, and so you'll get a lot further if you're saying something interesting.</p>
<p>Every time you add something to a design, you're making a decision and those decisions add up. Think of the messaging as the foundation. If every design decision is made in support of communicating that same foundational idea, then not only will our design hold together well, but each element of the design will subtly help communicate what it is we're trying to say.</p>
<p>For <em>JavaScript for Everyone</em>, the messaging we'd chosen to build the design around was communicating taking your skillset <em>way beyond</em> where you're at, with a UI inspired by sci-fi films and retro futuristic computer games. With this settled, each design decision for the <em>JavaScript for Everyone</em> course brand and landing page was much easier.</p>
<h2>Starting with typography</h2>
<p>Nine times out of ten I'll begin a design by trying out typefaces. Not just because it's a good excuse to spend an afternoon digging for fonts, but because each design decision shapes the next. Building on the metaphor of the messaging acting like a foundation, the display and body font for me act like the cornerstone in a design. They're usually my first design decision and all the other decisions I make tend to build off that first decision.</p>
<p>For the heading typeface, I quickly fell in love with <a href="https://commercialtype.com/catalog/orientation">Orientation Bold</a>. It's easy to imagine it adorning a racer in the <a href="https://vol.co/products/wipeout-futurism">WipEout universe</a> (thanks for the tip off on <a href="https://vol.co/products/wipeout-futurism">that book</a> Mat!). The shapes within the letterforms looked like they were pulled straight from sci-fi iconography.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-1.jpg" alt="A small title reads “Orientation Bold” above some text set in the Orientation Bold font showing uppercase and lowercase character pairs A–Z." /></p>
<p>With Orientation Bold taking the lead, I chose <a href="https://fonts.google.com/specimen/Azeret+Mono">Azeret Mono</a> as a supporting accent font for use in ledes, buttons and other incidental typography. Monospace fonts have a very retro sci-fi feel by their nature which is perfect for our needs. Why did I choose <em>this</em> mono font though?</p>
<p>A quick tip when choosing typefaces — I like to read the background info on the font and get a sense of the design inspiration and details. There's often some information hidden in there which can help inspire aspects of a design or clues as to whether it's going to fit your brief. In this example, I discovered Azeret Mono is based on optical character recognition (OCR) fonts, which were designed in the late 60s to be read by machines.</p>
<p>The design aesthetic is also deliberately styled to look like a futuristic operating system font — <em>perfect!</em>  I also know we're in good territory with anything from <a href="https://displaay.net/">Displaay Type Foundry</a>. On that note I've got a list of go-to type foundries and font designers I swear by. A good workman is only as good as his tools after all! This "building a house" analogy is holding up well — I do love to string an analogy out <em>as far as I possibly can!</em></p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-2.jpg" alt="Screenshot of the Google Fonts page for Azeret Mono with part of the the About text highlighted. The highlighted text reads “driven by an exploration of OCR fonts, past and futuristic operating systems, various interfaces and the nineties”." /></p>
<p>Another thing I look for when I'm pairing fonts are shared traits within different characters. It's the little details like this that can make a font pairing work, even with pairings that might on the surface seem unusual. If you'd like a great primer on pairing typefaces based on their characteristics, check out Bethany Heck's  <a href="https://medium.com/s/about-face/the-value-of-multi-typeface-design-ccd67227b0ee">The Value of Multi-Typeface Design</a>.</p>
<p>Both fonts share similarly <em>tightly rounded corners</em>. This shared characteristic really helps give the pairing an intentional feeling, like they're two different parts of a considered <em>system</em>.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-3.jpg" alt="The letters C, g, and a are set in Orientation Bold, above the letters J, t and F set in Azeret Mono. The rounded corners of the letterforms within both fonts are highlighted in magenta circles." /></p>
<p>The alternate characters in the font (a, b, c, d, g, h, m, n, p, q, r, s, u, y) take this cohesion a step further. We can <a href="https://css-tricks.com/almanac/properties/f/font-variant-alternates/">use CSS to get those enabled too</a>.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-4.jpg" alt="Text set in the Orientation Bold font shows uppercase and lowercase character pairs A–Z. Below this, the same characters are repeated in the Azaret Mono font." /></p>
<p>For the body font, Georgia offers a nice stylistic contrast but the main reason I chose Georgia here is because it's such a clear throwback to the early days of the web.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-5.jpg" alt="Text set in the Orientation Bold font shows uppercase and lowercase character pairs A–Z. Below this, the same characters are repeated in the Azaret Mono font. Below this the same characters are repeated in the Georgia font." /></p>
<p>It gave the retro feeling I was trying to create a kind of authenticity that I liked. I imagine everyone expects a sans serif font in this kind of design, so I wanted something to break away from the stereotypes I was playing on so heavily elsewhere.</p>
<h2>Iconography</h2>
<p>In this kind of retro futuristic design, iconography often plays a huge role in building out the design language, as you can see going back to some our references…</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-6.jpg" alt="A cross-section of the mood board for the project shows several reference images with graphical iconography, using strong geometric shapes, and iconography interspersed with typographic elements. Many of the icons use bold, angled shapes." /></p>
<p>I wanted to bring some of the angular shapes from Orientation into the rest of the design. So I chopped up some of the more interesting characters to see what might be useful for iconography.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-7.jpg" alt="A heading set in Orientation Bold reads “Take your skillset way beyond syntax expertise” above the characters y, n, T, k, o, e and x. For each of these characters, parts of the letterforms have been pulled out and refined into graphic shapes." /></p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-8.jpg" alt="A heading reads “Learn to write JavaScript deeply” above some running copy. Above the heading are several of the graphic shapes from the previous image grouped together as icons." /></p>
<p>This evolved into the "<a href="https://www.starwars.com/databank/darth-vader-s-tie-fighter">TIE fighter</a>" inspired icon below. The “wings” were based on an evolution of the angular shapes used in the exploration above.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-9.jpg" alt="A heading reads “Learn to write JavaScript deeply” above some running copy. Above the heading is an icon with a visual similarity to a simplified “tie fighter”. The “wings” of the tie fighter use graphic shapes taken from the design exploration in the previous two images." /></p>
<h2>Building cohesion into your designs</h2>
<p>Those angled shapes also fed into other aspects of the design like image masks and the runway horizon background in the hero design. There are plenty more aspects of the design I could reference here that all build off this aesthetic, like the CRT screen inspired background texture, or the image dither effects, but I think this is enough detail for this post!</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-10.jpg" alt="A section of a landing page design shows a red photo of course author Mat Marquis beneath the heading “About Your Instructor”. The image has dither effects and is masked by angled shapes." /></p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tackling-design-decisions-11.jpg" alt="The top of a landing page shows a hero section design with the headline “Take your skillset way beyond syntax expertise” above a runway graphic that appears to fade away into the horizon." /></p>
<p>This process of adding layers to the design, with each decision building off the last is central to my own process. Over the course of a design I build a clearer and clearer picture of what it is I'm making. This is how you build cohesion into your designs.</p>
<p>Because we set our visual foundation on the messaging we want the design to communicate, everything is subtly communicating the same central idea, which is going to help our messaging to hit home, which is the most important outcome.</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>Going all-in on a design idea</title>
        <link>https://piccalil.li/projects/course-brand-development/8/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Jason Bradberry]]></dc:creator>
        <pubDate>Tue, 24 Jun 2025 10:55:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/8/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>One of the things we've been looking forward to about this process of working in the open is opening up the behind the scenes aspects of what we do. Typically when you see work from an agency, you see the starting point, and where they landed, but not much in between. Essentially for most projects all that's available is the sanitised, prospect-friendly case study version. There's nothing wrong with that, but it's nice to be able to openly and honestly share some of what goes on in between.</p>
<p>You'll have to bear with me a bit in these posts. Writing is fairly new to me (I put <a href="https://piccalil.li/blog/why-im-excited-about-text-box-trim-as-a-designer/">my first post</a> out in December), and I'm already feeling like my default tendency is to stick to the safe ground of "this is what we did", and "here's how you do that".</p>
<p>I have a feeling this process will be much more interesting if it's also about sharing the messy in-between bits of our projects. It definitely feels more me to be in <em>sharing</em> mode than <em>teaching</em> mode.</p>
<p>Over the next few posts I share here, I'm going to pick out a few aspects of the thinking and decision making behind the design work that took me from the brief to the final concept, and talk about how I navigated those. I'm also  going to share some of the "in-between" moments that worked on the project, and some that didn't.</p>
<p>First up, one of the biggest joys of this <a href="https://piccalil.li/projects/course-brand-development/">course brand development project</a> was the way Mat and Scott embraced what we're doing and <a href="https://piccalil.li/projects/course-brand-development/7/">gave such lovely feedback</a>. It's not just about the nice words, but about the way they both gave so much space for us to design with freedom, without any sense of trying to steer the process too much. I think that's one of the reasons I'm so pleased with how these designs are coming together.</p>
<h2>The importance of going all-in</h2>
<p>I was recently feeling in a creative rut with a particular project. I was sat with a mentor of mine who reminded me that all that I was making a classic mistake. <strong>I was trying to fit too many ideas into the concept</strong>.</p>
<p>I've always tried to find a central idea that can thread throughout a design, and honing in on that thread is central to my process. But I was too close to the project to see that I'd allowed <em>several good ideas</em> to creep into the design, at the expense of <em>one great idea</em>. Essentially, I was reminded of the importance of going "all in" with a design concept.</p>
<p>I like <a href="https://www.smashingmagazine.com/2021/02/saul-bass-teach-web-design/">Saul Bass's take on this idea</a>: <em>"Design is thinking made visual"</em>. It's why I love working with writers and brand strategists. Great strategy and messaging makes finding a design concept a lot easier and by proxy a lot more fun.</p>
<p>All of this was fresh in my mind at the beginning of this project. For me, there are three key tactics I tend to lean on when coming up with a design concept:</p>
<ol>
<li>Speak to the client</li>
<li>Read the thing</li>
<li>Go find some inspiration and reference material</li>
</ol>
<h2>The best ideas are hidden in between the words</h2>
<p>I've already spoken about <a href="https://piccalil.li/projects/course-brand-development/5/#how-we-approached-the-javascript-for-everyone-course-brand">getting a gut feel for a project's visual direction by speaking to the client</a> and gathering reference material, but I'd say above and beyond any other aspect of the work — reading the thing you're designing — is probably <em>the</em> most important thing I would advise anyone getting started in design to do before opening up any kind of design tool or browsing Pinterest.</p>
<p>It sounds obvious, but given the extent to which so much of the internet looks the same, perhaps it's worth stating the obvious. For me, the best work I've done has always come from reading and reflecting, <em>then</em> going out in search of inspiration. The best ideas are always hidden in between the words, in my experience.</p>
<p>Take Mat's course, for example. Originally we had "Learn to write JavaScript <em>deeply</em>" as our hero headline. I liked this, and it got me thinking about a few visual metaphors we could use to support the statement. But after reading the page a few times, one of our secondary headlines really stood out.</p>
<blockquote>
<p>Senior level JavaScript developers have a skillset that goes well beyond syntax expertise. I'm here to help you get there.</p>
</blockquote>
<p>This felt like it captured the essence of why Mat's course was different — so many courses focus on syntax and learning various methods and properties, whereas Mat's focus is to go <em>beyond that</em>, and develop an understanding of how JavaScript <em>thinks</em>.</p>
<p>With that in mind, I played with moving the copy around a bit and re-worded that statement to "Take your skillset way beyond syntax expertise" and gave it a try as the hero headline, with "Learn to write JavaScript <em>deeply</em>" as a supporting heading below the hero.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/going-all-in-1.jpg" alt="A black and off-white design in Figma shows a web page with a hero section featuring the title “Take your skillset way beyond syntax expertise”, with “way beyond” in italics for emphasis. Beneath is the headline “Learn to write JavaScript deeply” followed by some running copy." /></p>
<p>This new headline opened up some much more interesting creative avenues. The idea of taking your skillset <em>way beyond</em> was much more in alignment with the ideas we had to explore retro futuristic aesthetic, and gave me a focus for reference imagery to hunt for, like graphics relating to motion, sci-fi user interfaces, and futuristic horizons. It gave me an idea that I could go <em>all-in</em> with, and the end result was so much better for it.</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>Dealing with feedback on the creative exploration</title>
        <link>https://piccalil.li/projects/course-brand-development/7/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Jason Bradberry]]></dc:creator>
        <pubDate>Fri, 20 Jun 2025 08:55:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/7/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>I want to pick out a few key areas of our approach to dealing with client feedback. These are broad principles and can be applied in pretty much any project where you're dealing with external partners.</p>
<h3>The question of what to show, and when?</h3>
<p>If you've read <a href="https://piccalil.li/projects/course-brand-development/5/">my last open working post</a>, you may have noticed that I made the judgement call to get input from Scott and Mat at very different stages of the design process. Here's a reminder of what was presented to each of them:</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/feedback-1.png" alt="The first pass of the full course landing page design for Scott’s Mindful Design course, showing each section of the design, including hero section with the title “Learn to design for real humans”, and overview, course contents, FAQs, instructor, take the course, and call to action sections." /></p>
<p><img src="https://piccalil.b-cdn.net/images/projects/feedback-2.png" alt="Poster inspired designs for Mat’s JavaScript for Everyone course, with a retro futuristic “runway” graphic fading into the distance, beneath the title JavaScript for Everyone" /></p>
<p>My approach to getting that first feedback on a creative direction is to bring a client or external partner in at the point when <strong>you're confident enough in what you're presenting to know you're onto something, but early enough to allow time to change course if needed</strong>.</p>
<p>How early that feedback point tends to be in the process for me is usually fairly tied to the scale of change in the design. If it's an existing project or brand (as with Scott's <a href="https://piccalil.li/mindful-design">Mindful Design</a> course), there's a much smaller risk to the project to take the design further before seeking feedback. But for <em>from the ground up</em> design — especially anything where you're establishing a brand look and feel — getting input on the creative direction early could save a lot of time.</p>
<p>The framing around this first point of feedback is so important, too. We want to remain firmly in control of the project during feedback windows, and that's a bit of an art. One I haven’t always got right, I must add! We’re all learning from experience.</p>
<p>A big principle we hold on to at <a href="https://set.studio/">Set Studio</a> is to <strong>only show what we need to show to get the feedback we need</strong>. We also <strong>don’t ask for permission</strong> by asking for sign-off. Instead we’ll say something along the lines of “we’re planning to move forward in this direction unless there’s something specific that doesn’t feel right to you”.</p>
<p>We’ll also highlight specific areas we need their input on, keeping the focus on the decisions we're asking a client to make. This ensures we <strong>stay in control</strong> because if we don’t do that, we end up turning into human paintbrushes, even for the most reasonable clients. We want to foster a spirit of collaboration, without compromising our role as the design partners in the relationship.</p>
<p>Presenting work via video also helps avoid putting the client on the spot on a call, which can often result in shallow or reactionary "feedback under pressure". We’re trying to avoid creating a situation where the client feels they have to respond right there and then.</p>
<p>Here's a typical idea of how we might present a piece of work to a client…</p>
<div><h2>FYI</h2>
<p>All chats in this post have been edited slightly here, as in reality, Slack chats aren't as neat and tidy as this and can tend to jump off into threads and tangents and in-jokes and I don't want to bore you with those!
</p>
<p></p>
<p>We made some subtle tweaks to Scott's course brand — mainly introducing a new body typeface, to dial up the personality a notch. It's a very subtle change, but one that I felt helped bring the typographic tone much more into line with the friendliness that comes across through the messaging and illustrations. We’ve been specific with what we’re asking for input on, whilst not inviting open feedback.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/feedback-3.png" alt="Side by side comparison of Manrope vs Satoshi in the designs, with two identical Figma frames, with the only difference being the body font. A small label sits at the top of each frame stating “Mindful Design, a new course from Piccalilli”. A large bold headline states “Learn to design for real humans” above a lede paragraph about the principles of designing with empathy, curiosity and accountability that underpin the course. Below that sit five circular illustrations each showing a different human character." /></p>
<h3>Avoiding open-ended feedback</h3>
<p>We frame our request for feedback as a response to a clearly defined aspect of the design direction, rather than asking for open-ended feedback. Like I mentioned earlier, we're saying that <em>this is the direction we’re planning to go</em>, but we’re giving the opportunity for the client to let us know if we're barking up the wrong tree.</p>
<p>This approach to feedback requests helps prevent open-ended or unfocused feedback, which can easily veer a project off-course. It also establishes a sense of confidence in our design decisions, which can help a client to feel at ease. Of course, having confidence in your design decisions doesn't mean your perspective is always "right", which is why checking in is so important. Essentially we're getting a temperature check before going any further.</p>
<p>We got a big thumbs up from Scott on both counts here, so that's a win!</p>
<h3>Dealing with feedback</h3>
<p>The feedback we received from Mat was also really positive. I'll skip a step here and jump to the feedback on the full landing page design, as the general gist of the first round of feedback was <em>"Oh hell yes—proceed!"</em>, which made me very happy!</p>
<p></p>
<p>Navigating feedback like this — where very specific ideas are being suggested — is something that is best handled with a quick acknowledgement and some time and space. It'd be easy to dive into responding directly in the chat. But by letting the client sit with it, it helps give time for us both to give the feedback some proper reflection.</p>
<p>This approach helps keep the relationship on the footing of a collaborative partnership between designer and client, not a pixel pushing exercise. Quick tweaks are often requested and made with good intentions on both sides, but can very quickly end up derailing a design or taking a project out of scope. Mat was clearly not looking to tell us what to do here <em>in the slightest</em>, but even so, it would be tempting to open up Figma right away and start tweaking the design.</p>
<p>Here's the design iteration I followed up with, after chatting with Mat some more and giving myself some time to sit with the feedback. My focus at this point was in addressing the <em>areas of improvement</em> Mat had raised, rather than the solutions that were proposed. I was keen to see if we could improve those areas with the fonts we were already using.</p>
<p></p><p>Watch the <a href="https://iframe.mediadelivery.net/embed/432390/efd03e90-7305-4800-ab4f-60737974f759?autoplay=false&amp;loop=false&amp;muted=false&amp;preload=true&amp;responsive=true">video</a>.</p><p></p>
<p>And here's the full landing page design:</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/feedback-4.png" alt="The first pass of the full course landing page design for Mat’s JavaScript for Everyone course, showing each section of the design, including hero section with the title “Take your skillset way beyond syntax expertise”, and overview, course contents, FAQs, instructor, take the course, and call to action sections." /></p>
<p></p>
<p>Lovely feedback! Although I do feel like with Scott and Mat as our “clients” here I'm kind of cheating when it comes to talking about how to deal with feedback — because they're so kind, and because they both work in our industry so they get how to give feedback in a way that helps move us toward something better. Honestly it's a lot of fun designing for both of them.</p></div>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>Let’s talk about conversion optimisation and how we’re approaching it</title>
        <link>https://piccalil.li/projects/course-brand-development/6/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Andy Bell]]></dc:creator>
        <pubDate>Wed, 18 Jun 2025 09:00:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/6/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>Conversion optimisation is exactly what it says on the tin. It's a methodology to try and smooth the path as much as possible for a marketing/landing page with a single goal: get a conversion, be it a sale, a signup or anything that achieves a key performance indicator (KPI). Often <a href="https://en.wikipedia.org/wiki/Conversion_rate_optimization">conversion rate optimisation (CRO)</a> leverages deceptive patterns to get the job done though.</p>
<p>A deceptive pattern is probably best thought of as a tactic to manipulate an individual — psychologically —  to con them to do what <em>you</em> want them to do on your page, rather than what they likely initially set out to do.</p>
<p>Deceptive patterns <em>work</em>, which is why they're everywhere, but there's an ethical cost to implementing them. An ethical cost we're <strong>never interested in paying</strong> here because ultimately, we respect our user base.</p>
<p>Let's have a look at some popular methods of CRO and which ones we've opted for on the course marketing pages.</p>
<h2>Social proof</h2>
<p>This is a <a href="https://en.wikipedia.org/wiki/Social_proof">psychological phenomenon</a> which essentially boils down to humans correcting their behaviour based on their peer's behaviour and yes, marketers love to exploit this.</p>
<p>Probably the most common way that social proof is utilised is with testimonial-like content. This might be quotes or Trustpilot reviews. What you're aiming for — when utilising social proof — is the feeling of "my peers like this, so I will probably like this too."</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/complete-css-customer-testimonials.png" alt="Testimonial section of the marketing page titled ‘What others say’ with a bold headline and subheading that states over 1000 people have taken the Complete CSS course. The section displays six user reviews praising the course’s effectiveness, depth, and impact on their CSS skills, with names like Rick, Alec, Casey, Asia, Brian, and John shown below their respective quotes. A yellow banner at the top invites visitors to join others in improving their CSS skills." /></p>
<p>We lean into this methodology on the course marketing page for Complete CSS because — in our opinion — if you apply social proof tastefully and with consideration, it can be really useful.</p>
<p>For example, these are people that have purchased and enjoyed Complete CSS. As we see it, it's a good idea to display these quotes because someone might have doubts, even if the marketing page has done its job of outlining the benefits of taking the course. It’s rather important to determine if a course is <em>actually going to be good</em> before you purchase because the tech industry is — well — a bit of a snake oil pit 😬. We’re trying to reassure with this pattern, rather than manipulate.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/complete-css-industry-quotes.jpg" alt="Testimonial section with three quotes talking about my writing. At the top is a highlighted quote from Chris Coyier, founder of CodePen. Below are two additional quotes: one from Henry Desroches, UX Developer at YouTube and another from David Darnes, Senior Engineer at Shopify" /></p>
<p>Another way we use social proof is selected quotes from well known names in the industry. The reason we use these is because if a user comes in cold — as in they've never heard of Complete CSS or the author (me) — they might recognise Chris Coyier for example. Knowing that Chris says nice things about the author's writing might be just the nudge a user needs to at least explore the marketing page some more.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/complete-css-stripe-cta.jpg" alt="A checkout section of the marketing page with a bold, bright yellow background. At the top, a large black headline reads: “Join over 1000 others who are taking their CSS skills to the next level for just £249.” The heading emphasizes the social proof of 1000+ people already enrolled" /></p>
<p>Lastly, we leverage how many people have purchased a course as a social proof signal too. Nothing encourages trust quite like seeing lots of people have already purchased a course.</p>
<h2>Above the fold</h2>
<p>Let's start with the definition first. “Above the fold” is the area immediately visible to the user on page load before they scroll. It’s something that found its way to the web from print media as “above the fold” is a reference to broadsheet newspapers.</p>
<p>A very aggressive marketer will try to stuff as much information as possible "above the fold" because data — such as reported in <a href="https://www.nngroup.com/articles/scrolling-and-attention/#:~:text=In%20our%20most%20recent%20study%2C%20users%20spent%20about%2057%25%20of%20their%20page%2Dviewing%20time%20above%20the%20fold.%2074%25%20of%20the%20viewing%20time%20was%20spent%20in%20the%20first%20two%20screenfuls%2C%20up%20to%202160px">this Nielsen Norman Group study</a> — will tell them that the majority of users will spend the most time viewing content above the fold.</p>
<p>A shallow translation of that would be "if people spend most of their time above the fold, we need to put as much information and actions in there as possible". That fails to consider the following though:</p>
<ol>
<li>Optimising for the fold is near-impossible when we have no idea <a href="https://viewports.fyi/">how big a user's viewport is</a></li>
<li>Users may indeed spend a lot of time "above the fold", but do they bounce after that? If so, that points to the "above the fold" content not engaging the user so be mindful implementing a hard-sell right from the start</li>
</ol>
<p><img src="https://piccalil.b-cdn.net/images/projects/complete-css-hero.jpg" alt="A bold, visually striking hero section promoting the “Complete CSS” course. The headline reads “Take your CSS skills beyond the next level” in large black text, with “beyond” underlined in yellow for emphasis. Above this, a yellow banner at the very top of the screen states, “Join over 1000 others who are taking their CSS skills to the next level,” using social proof to reinforce the message. Below the heading, a stylised black line graphic reinforces progression. Supporting text highlights the value of the course, explaining that senior CSS developers need much more than syntax knowledge." /></p>
<p>We opt for a different approach: good messaging. Typically, when a user lands on Complete CSS they see the above. There's a bold headline — "Take your CSS skills beyond the next level" — that is supported by a summary:</p>
<blockquote>
<p>Get to a level in development that you never thought would be possible with this expansive course from Andy Bell.</p>
</blockquote>
<p>This is immediately followed by prose content, headed with another eye-catching headline: "Senior level CSS developers are so much more than syntax experts". Instead of trying to catch a quick sale, we're instead, gently nudging the user to what's important: what is this course <strong>actually going to do for you</strong>?</p>
<h2>Interstitial popups</h2>
<p>Quite possibly one of the worst patterns on the web: an annoying popup that steals your focus. You know the type, an immediate “sign up to our newsletter to receive a 10% discount” pop up arrives as soon as you and on a page.</p>
<p><a href="https://bsky.app/profile/kateviolette.com/post/3lru4a4onn22c">Kate sums it up well</a>.</p>
<blockquote>
<p>If you pop up a dialog box in my face the very second I visit your site, I'm not sticking around and bushwhacking through your digital weeds to get to what I was trying to do in the first place. I'm out.</p>
<p>That's on you for having a mess of a site and frankly being a little rude.</p>
</blockquote>
<p>The theory for marketers is that if you "grab attention" (literally), you'll increase the odds of getting a conversion. We respect our users though, rather than hedging bets on a cheap conversion opportunity.</p>
<p>The <a href="https://www.nngroup.com/articles/modal-nonmodal-dialog/">Nielsen Norman Group did a good study back in 2017</a> where they outline how disruptive modals/dialogs/popups can be when utilised for the wrong reasons, such as interrupting the user's workflow, causing a user to forget what they were doing and worst of all, <strong>they block the content behind which presents an accessibility risk</strong>.</p>
<p>As that study goes on to address, there <em>are</em> good uses for popups. For example, if a user is about to perform a dangerous action — such as deleting an account — a popup is a good way to deliberately interrupt the flow to be <strong>absolutely sure</strong> that deleting the account is what a user wants to do. That's nice, defensive user experience (UX) design.</p>
<p>A user isn't doing a potentially dangerous action on our course marketing pages though, so an interstitial popup — or even a triggered popup — is not a good pattern to deploy, so of course, it didn't even get considered by us. Not to mention, it goes completely against our principles of <strong>reader experience first, always</strong>.</p>
<h2>Fear of missing out (FOMO)</h2>
<p>The last method I want to touch on is FOMO. Marketers will exploit the feeling of missing out to push a user over the edge. The edge being the checkout process in our context.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/fomo-landing-page.jpg" alt="The homepage of Fomo, a social proof tool, with a bold heading in large purple text reading: “increase sales, trust and credibility.” Above the heading is a stylised illustration of two people whispering, one saying “This must be good…”, as they look toward a queue of people waiting outside a velvet rope, next to a “20 MIN” wait sign—visually reinforcing social proof. A popup at the top announces Fomo now supports push notifications. Below the heading, smaller text describes Fomo as “a simple, automated social proof solution for businesses like yours,” followed by a prominent orange “Start 14-day trial” button." title="A double whammy here. We both get a slide-in from the bottom left corner and also a prompt to push notifications to users as a sales tactic, which is again, a deceptive pattern. Ironic that they claim to increase credibility too…" /></p>
<p>The problem with this method, aside from it being exploitative of human emotions, is that by aggressively selling a product — especially a high ticket product — is you're opening yourself up to the risk of dissatisfied customers.</p>
<p>Dissatisfied customers will almost always (rightly) want a refund — which is expensive as you don't get back the payment provider fees and currency conversion fees in our case because we charge in GBP.</p>
<p>What's more expensive though is <strong>reputational damage</strong>. The last thing you want is people broadcasting their dissatisfaction with a course you've published, especially when that the person feels like they've been misled.</p>
<p>We see this FOMO pattern more often on lower ticket purchases on extremely optimised e-commerce platforms.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/argos-clip.jpg" alt="A product page on the Argos website for a “Bush White Tower Fan” priced at £24.00, showing a 28-inch white oscillating fan with a circular base. A blue overlay box on the product image reads “Popular! 100+ others are looking at this right now,” leveraging real-time social proof to suggest high demand. The fan is listed as a special offer, with 20% off the original price of £30.00. The product has 9 reviews and a 4.5-star rating. Purchase options, stock checker, and bundle promotions are visible alongside the “Add to trolley” button." title="This sort of affordance creates a sense of urgency. It’s designed to make the user think “I’d better order this before they run out”. It’s even more effective when a particular item is perceived as popular from the outset too. For example, this clip was taken in a UK heatwave, where fans often sell out quite fast." /></p>
<p>It's important though to <strong>be aware of your offering</strong> which in our case is a higher ticket course sale. That process should be slower and more considered so <strong>the people who actually want to buy it, buy it, happily</strong>.</p>
<p>I'll take a happy user base over a user base that feels like they were misled into a purchase. Sure it might hit the sales targets, but that's fine as far as we're concerned. The risk of reputational damage is far more important to avoid in our case.</p>
<h2>The marketing page's job is to close, not to sell</h2>
<p>In sales, closing a sale is the tough part. It's the point where you convince a customer to give you their money. It's the primary reason why our marketing pages — in fact, most stuff we design for ourselves and client — is section-based.</p>
<p>The job of each section is to <em>reassure</em> because we're optimising for warm-to-hot leads rather than cold leads as a priority. Let me break down what I mean by that.</p>
<p>The funnel for Complete CSS is complicated because there's many entry points. For example a user could land on Complete CSS from:</p>
<ol>
<li>A social media post by Piccalilli or myself</li>
<li>The end of a blog post, written by me</li>
<li>A social media post/blog post by someone recommending the course</li>
<li>A YouTube video</li>
<li>An LLM, such as ChatGPT (yuck)</li>
</ol>
<p>Each of these entry points are <em>warm</em> because the user likely has some context already about the course, or at least <em>my reputation</em>. We lean into that with the structure of the marketing pages. They're designed to <em>inform</em>, rather than sell <em>hard</em>.</p>
<p>It's partially why advertising the course in newsletters etc. has been rather unsuccessful because all of that context is missing, which suddenly makes that user a <em>cold lead</em>. What we need for those situations is a very specific, harder-selling marketing page, often called a <em>CRO page</em>.</p>
<p>This need for context might pose as a potential problem that we have to solve in the future, depending on work that course authors do before <em>and</em> after their courses go live. What we've done to maintain our methodology of <em>closing</em> and keeping their visitor-base informed with context already is set out a "battle plan"guide that we hand them as soon as the contract is signed.</p>
<p>In essence, we're advising authors to do a lot of authentic off-site work to "warm up the leads". This off-site work includes:</p>
<ol>
<li>Appearing on podcasts</li>
<li>Writing articles and publishing on other publishers — not just Piccalilli</li>
<li>Investing time into publishing on their own blogs</li>
<li>A constructive presence on social media (with the odd shitpost, naturally)</li>
<li>Building trust overall that they are <em>the</em> person to learn from</li>
</ol>
<p>This is fundamentally what it's all about when selling courses: <em>trust</em>. People need to trust in your ability to teach <em>them</em> well. The perfect way to demonstrate that is to <strong>give away way more than you take</strong>. It's something I've done for years and will continue to do so.</p>
<h2>Wrapping up</h2>
<p>The key takeaway for people working with conversion-based design is that you can read <em>thousands</em> of articles that'll instruct you to use Tracker Tool X or Tracker Tool Y, but it's actually all about context and <strong>understanding your market</strong>. A surveillance tool ain't gonna do that for you.</p>
<p>In <strong>our context</strong> that's an unacceptable way of working and will scream desperation too. That's not a good way to build trust is it?</p>
<p>Instead of collecting heaps and heaps of tracking data on your landing pages, you need to do the research up front to understand <strong>who you are selling too, what resonates with them and what turns them off</strong>. There's always room for experimentation to optimise — just like we have — but try to be pragmatic with your experimentation.</p>
<p>By being pragmatic and trustworthy, you'll sell to people that <em>really</em> want your course/product/service. That sets you in a much stronger position to maintain a relationship with the customer in the much longer term and maintain a good reputation, which is always a good thing.</p>
<p>It's all about prioritisation at the end of the day. Do you want to squeeze every last penny out of users, no matter what? Leverage deceptive patterns. But know that when you do, you <strong>will do serious reputational damage</strong>. It's not even worth considering in our opinion.</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>Initial creative exploration</title>
        <link>https://piccalil.li/projects/course-brand-development/5/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Jason Bradberry]]></dc:creator>
        <pubDate>Thu, 05 Jun 2025 13:55:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/5/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>We had two different course brands to create, from two very different starting points. As we established in the <a href="https://piccalil.li/projects/course-brand-development/3/">last design post</a>, we were iterating on an existing identity for Scott's course, and for Mat's we had a blank canvas. Each brand required a very different approach — I'm a big advocate for moulding the design process to the context at hand. In this post I'll outline the different approaches we took, and the thinking behind each.</p>
<h2>Where we started</h2>
<p>This is our starting point for Scott's course brand.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/scott-vs-piccalilli.png" alt="A mockup of Scott’s own Mindful Design website that Scott provided to us, alongside a screenshot of the current Piccalilli themed landing page" /></p>
<p>Scott handed us a <em>fantastic</em>, ready to go visual identity for his <a href="https://mindfuldesign.xyz/">Mindful Design</a> brand. We love it, and it's a big step away from our Piccalilli look and feel, which is exactly what we wanted from our first custom theme project — a good "stress test" for our theming system!</p>
<p>We were in a good position with our landing page, which has been <a href="https://piccalil.li/mindful-design">live on Piccalilli</a> for a while. Because of the <a href="https://piccalil.li/projects/course-brand-development/2/">refinements Andy's been working on</a>, we were happy with the content structure and UX for this phase of work, so we could focus fully on updating the template design to make theming as effective as we can.</p>
<p>For Mat's course, the landing page followed the same structure, so we planned to get cracking on Scott's first, and then use Scott's landing page as a base for the work on Mat's.</p>
<h2>How we approached the Mindful Design course brand</h2>
<p>Each project has different needs, so adapting the process to the project is something I've always tried to do. Beyond that, something I've learned to do over the last few years is to <strong>play to my strengths</strong> and to <strong>design the process</strong> to avoid the things that typically trip me up.</p>
<p>For me, I know that decision overwhelm can be a big roadblock to creative work. It's why I do a lot of discovery. It's not just about following best practice, it's also about getting answers to as many decisions as I can before I get into the design to avoid that overwhelm.</p>
<p>(As a side note, I've found the Myers Briggs personality test (I'm [ENFP]) to be a valuable reflective tool to help me work to my strengths.)</p>
<p>For me, I always want to get away from the blank white page as soon as possible in the design process. So while starting with a wireframe for a landing page that already exists might seem counterintuitive, that's where I began. This gave me a few useful outcomes:</p>
<ol>
<li>First and most importantly, I built myself some momentum</li>
<li>It was a quick way to get all the elements into Figma</li>
<li>Because our look and feel was broadly there, I could apply some very quick global type styles as a base</li>
<li>It allowed me to strip out most of the layout decisions that had been made on the landing page and start with something much cleaner</li>
</ol>
<p>You'll see that I paid very little attention to neatness or consistency here. Plenty of time for that later.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/mindful-design-wireframe.png" alt="Our wireframe design for Mindful Design, showing its predominently centred layout with very few visual details in place" /></p>
<p>From here, I could start working iteratively to tackle a single aspect of the design at a time, which kept that momentum going and gave the process focus. For each small iteration, I created a new  artboard.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/scott-three-concept-evolutions.png" alt="Three Figma frames, labelled “existing brand, centred layout”, “soft pink”, and “new body font”" /></p>
<p>First up, applying the existing brand assets and styles to the landing page gave me a sense of how it was working in our context. I only mocked up the first three sections of the page at this point, as I'd explored enough to feel confident that this centred layout idea we'd been discussing was going to work well.</p>
<p>Each iteration was pretty small here — introducing a subtle pink that Scott had been playing with, and switching out the body font to give the typography just a little more personality. I've also labelled the frames here as I've gone, so it's easy to look back through and trace the decisions and make playing spot the difference easier if I come back to these designs at a later date.</p>
<p>After a few more iterations I landed on a design direction I felt happy with, and had the first pass of the whole page designed.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/scotts-first-cut-page-concept.png" alt="The first pass of the full course landing page design for Mindful Design featuring various elements like a hero unit, prose, testimonials, FAQ, sign up form and offset cards displaying features" /></p>
<p>There was still more I'd like to do. We had a curriculum overview section we were talking about dropping in, and so far the illustrations were lifted wholesale from Scott's main site design and I'd like to update those. But it was ready for some feedback from Scott.</p>
<h2>How we approached the JavaScript for Everyone course brand</h2>
<p>The open ended nature of Scott's brief needed a very different approach. We had a loose idea of a few potential jumping off points for the visual inspiration, but for any project where look and feel needs to be established, I always start by gathering some references.</p>
<p>For me a lot of this work is intuitive. Going back to <strong>working to your strength</strong>s, my personality type is down the intuitive, sensing and feeling end of things, so I'm looking more for a feeling to follow here than anything at this stage. That feeling or sense of where I'd like to go with a design is something that builds for me even from initial project discussions.</p>
<p>When I'm chatting to a client, I'm digging for a sense of the kinds of things they might respond well to, and looking for nuggets of info that can give me clues that might lead down interesting creative avenues. I'll ask them to send me references too. Looking at the references we'd pulled together below, there were a few themes beginning to emerge at this stage.</p>
<ol>
<li>We're channeling some retro vibes here</li>
<li>Mat’s mentioned a few gaming references that all share a common theme of <em>techy,</em> but without falling into sterile tech stereotypes</li>
<li>I was leaning towards the idea of some kind of abstract graphic device to support the brand</li>
</ol>
<p><img src="https://piccalil.b-cdn.net/images/projects/mats-reference-board.png" alt="A mood board in Figma showing various retro and futuristic reference materials, grouped in a reasonably chaotic manner. " /></p>
<p>I've already admitted to suffering from a severe case of Fear Of The Blank Page™, but to get over that initial inertia here, I took a totally different approach to Scott's design and kicked off by asking myself "what if we were advertising the course with a poster?".</p>
<p>Cue an afternoon spent in my happy place — digging for fonts!</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/mats-font-options.png" alt="The text “JavaScript for Everyone” set in a selection of different typefaces, all of which are retro/futuristic" /></p>
<p>At this stage, I was playing with the concept of a graphic metaphor for <em>depth</em> to support the headline "Learn to write JavaScript deeply", and playing with some found imagery to keep the process quick and keep up momentum. It's <em>so easy</em> to get sidetracked creating graphics at this early stage, which I find can really slow things down.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/mats-poster-concepts.png" alt="A reference image showing a graphic “wave” made out of warped lines, shown next to two poster designs that use the reference image to try out a quick initial poster concept. The headline on the poster reads “JavaScript for Everyone”." /></p>
<p>Using found imagery makes it really quick to try out different ideas and quickly change the feel, and sometimes stumble on a direction you'd never have come up with otherwise. The idea is to find sparks of inspiration here, <em>not</em> to take these graphics for our own use!</p>
<p>There was something in the last frame below that really struck a chord with me, and the idea of a runway was something I wanted to explore more. Graphically it could be a good metaphor to support the idea in the hero <a href="https://library.fiveable.me/key-terms/hs-journalism/lede">lede</a> text…</p>
<blockquote>
<p><em>Senior level JavaScript developers have a skillset that goes well beyond syntax expertise. I'm here to help you get there.</em></p>
</blockquote>
<p>…and it got me thinking down a kind of retro futuristic avenue, which Mat had alluded to being <em>very</em> ok with.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/mats-poster-concepts-2.png" alt="Three poster designs in Figma, each using a different graphic beneath the headline JavaScript for Everyone. The look and feel is more muted and grainy this time around" /></p>
<p>Off the back of this I started exploring graphics of my own, leaning heavily into retro futurism. At this point I felt like this was starting to go somewhere, so it was time to run these past Mat and get a temperature check.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/mats-final-posters.png" alt="The poster designs we landed on, with a retro futuristic “runway” graphic fading into the distance, beneath the title JavaScript for Everyone" /></p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>A look at the codebase and what needs refactoring</title>
        <link>https://piccalil.li/projects/course-brand-development/4/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Andy Bell]]></dc:creator>
        <pubDate>Tue, 03 Jun 2025 09:56:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/4/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>If you haven't watched the video yet, I would recommend doing so. I run through the parts of the codebase we're focusing our attention on, in this article.</p>
<p>That's the key when working on an existing project — not a greenfield project. You need to define a focus and <em>stick</em> to it like glue. Otherwise, you'll find features drag, pull requests (PRs) get huge and timelines aren't met.</p>
<p>Sure, Piccalilli is in itself more of a product type of project, rather than a typical agency type of project, but the risk of escalation is arguably higher because it's an <em>internal</em> project. The risk comes from the fact we <em>care deeply</em> about the health of the Piccalilli codebase, making ourselves vulnerable to <a href="https://xkcd.com/356/">nerd sniping</a>.</p>
<h2>It's not about skipping the problems, it's about being organised</h2>
<p>Instead of dealing with everything as you see it, it's a good idea to keep a refactoring backlog, or in our case, a refactor type for items in the backlog, which are surfaced in Notion database views.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/notion-refactor-backlog.jpg" alt="A Notion board titled 'Backlog' under the 'Refactor' tab shows a list of tasks with columns for assignment, due date, and type. Tasks include items like removing inline padding for small viewports, merging variables, and updating excluded categories. All tasks are tagged as 'Refactor'." /></p>
<p>In that clip, there are various types of elements that we want to improve on Piccalilli. The rule is if you see it, you log it. Then, whenever we start a new run of work on Piccalilli, we <em>start</em> with a refactor.</p>
<div><h2>FYI</h2>
<p>It's even how we started the integration of the open working projects. <a href="https://bell.bz/enabling-open-working-on-piccalilli-part-one-content-collections/">I wrote about starting with a refactor of the content collections configuration</a> on my blog.</p>
</div>
<p>By starting with refactor work, we can do that while discovery and creative sprints are running.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/course-branding-timeline.svg" alt="5 blocks made from a red striped pattern. They're laid out like a Gantt chart which visualises each block following the other. They are labeled &quot;Planning &amp; creative exploration&quot;, &quot;Creative production&quot;, &quot;Prototypes &amp; technical planning&quot;, &quot;Technical production&quot; and &quot;Quality assurance &amp; final details&quot;" /></p>
<p>As you can see, there's a few weeks from the start to when production development work happens, so there's plenty of time to clear the decks. By starting with refactoring, you're tackling the tricky stuff early when you're at the peak of your energy levels for a project too.</p>
<p>It also helps us qualify design decisions early because the source code is fresh in our minds.</p>
<h2>What's going to need to be refactored for this project?</h2>
<p>I've spent some time calculating what isn't working well — mainly because I'm the creator of those things 😅 — and I've settled on the following items.</p>
<h3>We need to tidy course marketing page variables and experiments</h3>
<p>This is what months of experimentation looks like:</p>
<pre><code>const pppEnabled = true;
let pppDiscount = pppEnabled ? pppDiscounts.items.find((x) =&gt; x.countryCode === countryCode) : null;

/*
  EXPERIMENT
  I want to see if applying a discount from author promos boosts sales a touch.
  If it does, we can refactor this into something a bit more well thought out.
*/
if (!pppDiscount) {
  /* @ts-expect-error */
  pppDiscount = currentPromotions.find((x) =&gt; x.utmMedium === utmMedium);
}

const courseBasePrice = 249;

const enrollAnchor = '#enroll';
const coursePrice = `£${courseBasePrice}`;
const flowCTALabel = `Take the course for just ${coursePrice}`;
const generalCTALabel = 'Let’s get you to a level in development that you never thought would be possible.';
const encouragingStatement = `Join over ${usersCount} others who are taking their CSS skills to the next level`;
const dockedCTALabel = encouragingStatement;
const pppBanner = pppDiscount
  ? `Howdy, you get a ${pppDiscount.discount} discount because you’re coming in from ${pppDiscount.descriptor}. Use code ${pppDiscount.couponCode} at checkout.`
  : null;
const pppSummary = pppDiscount
  ? `You get a ${pppDiscount.discount} discount which saves you £${(courseBasePrice * pppDiscount.multiplier).toFixed(2)} because you’re coming in from ${pppDiscount.descriptor}. Use code ${pppDiscount.couponCode} at checkout to get Complete CSS for only £${(courseBasePrice - courseBasePrice * pppDiscount.multiplier).toFixed(2)}.`
  : null;
const flowCTASummary = generalCTALabel;
const flowCTALink = enrollAnchor;
const banner = {
  icon: 'heart',
  children: generalCTALabel,
  variant: 'primary',
};
</code></pre>
<p>At the very least, we need some <strong>in-file documentation</strong> that explains what these variables do and how they are used on the marketing pages.</p>
<p>We also need to make sure variables are correctly grouped together. For example <code>flowCTA</code>-based variables are correct in terms of they power the <code>&lt;FlowCTA&gt;</code> component we use, but they are split apart and <em>messy</em>. These need to be grouped and you guessed it, <strong>documented</strong>.</p>
<h3>Clean up lazy use of <code>@ts-ignore</code></h3>
<p>Again, this is me… I am not a strong TypeScript developer and I also don't have much time to do development work. Quite the horror combination, I know.</p>
<pre><code>{
  content.previewFrame &amp;&amp; (
    &lt;div class="flow"&gt;
      {content.previewFrame.headline &amp;&amp; &lt;Headline {...content.previewFrame.headline} /&gt;}
      {content.previewFrame.lede &amp;&amp; &lt;Prose content={content.previewFrame.lede} /&gt;}
      &lt;div class="wrapper"&gt;
        {/* @ts-ignore */}
        &lt;PreviewFrame client:visible url={content.previewFrame.url} /&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  )
}
</code></pre>
<p>The problem with a <code>//@ts-ignore</code> is it’s a bit like a <code>//TODO</code> comment. We write them with the mindset of "I'll catch that later" and it is never in fact, caught later. At the very least we should be using <code>@ts-expect-error</code> because if that particular error stops occurring, <a href="https://www.stefanjudis.com/today-i-learned/the-difference-ts-ignore-and-ts-expect-error/">TypeScript will throw an error that it's not needed anymore</a>.</p>
<p>A great time to clean <code>@ts-ignore</code>, <code>@ts-expect-error</code> and <code>//TODO</code> comments up though is <strong>at the start of a project</strong> — especially if they're present in files <strong>you know</strong> are going to be affected.</p>
<h3>The page specific CSS is a mess</h3>
<p>One of the reasons we chose Astro as our framework was being able to import CSS <em>only</em> when you needed it. For example, every component and region pulls in its own CSS file. If the component was <code>&lt;Button&gt;</code>, it would start like this.</p>
<pre><code>import '@repo/css/blocks/button';
</code></pre>
<p>That is an alias path to our CSS (in the monorepo). It means <code>button.css</code> only loads <em>if</em> there are <code>&lt;Button&gt;</code> components on the page.</p>
<p>We do the same thing for specific page CSS too. Most pages on Piccalilli don't need this capability, but where there's quite a lot of deviation from the standard user interface (UI) set, adjustments need to be made.</p>
<pre><code>.course-lander {
  /* Magic number, yes, but getting the sidebar and grid aligned is hard work */
  --consistent-sidebar-and-grid-size: var(--course-lander-consistent-sidebar-and-grid-size, clamp(16rem, 33%, 410px));
  --signup-summary-max-width: var(--course-lander-signup-summary-max-width, 60ch);
  padding-block: var(--course-lander-block-padding, var(--space-xl));
}

.course-lander:has(.docked-cta) {
  padding-block-start: var(--course-lander-has-docked-cta-padding-reset, 0);
}

.course-lander .prose {
  font-size: var(--course-lander-prose-font-size, var(--size-step-1));
}

.course-lander .prose p,
.course-lander .prose ol,
.course-lander .prose ul {
  max-width: var(--course-lander-prose-max-width, 75ch);
}

.course-lander .prose {
  --flow-space: var(--course-lander-prose-flow-space, var(--space-l-xl));
}

.course-lander .grid[data-layout='thirds'] {
  --grid-placement: auto-fill;
  --grid-min-item-size: var(--consistent-sidebar-and-grid-size);
}

.course-lander .sidebar:not([data-direction]) {
  --sidebar-target-width: var(--consistent-sidebar-and-grid-size);
  --gutter: var(--course-lander-sidebar-gutter, var(--space-l) var(--space-4xl));
}

.course-lander__intro .sidebar .wrapper {
  padding: var(--course-lander-intro-sidebar-wrapper-padding, 0);
}

.course-lander__intro h3 {
  font-size: var(--course-lander-intro-h3-size, var(--size-step-5));
}

.course-lander__intro .flow-cta {
  --flow-space: var(--course-lander-flow-cta-flow-space, var(--space-2xl));
}

.course-lander__intro .banner,
.course-lander__user-form,
.course-lander .product-details {
  --flow-space: var(--course-lander-multi-flow-space-reset, 0);
}

.course-lander__faq {
  --flow-space: var(--course-lander-faq-flow-space, var(--space-l-xl));
}

.course-lander__closing-cta {
  --flow-space: var(--course-lander-closing-cta-flow-space, var(--space-4xl));
}

.course-lander__intro-action {
  margin-block-start: var(--course-lander-intro-action-top-margin, var(--space-m));
}

.course-lander__intro-action + .banner {
  padding-inline: 0;
}

.course-lander .wrapper:has(.praise:not([data-praise-variant])) {
  margin-block-start: var(--course-lander-default-praise-top-margin, var(--space-4xl));
}

.course-lander:has([id='enroll']:target) .docked-cta {
  display: none;
}

</code></pre>
<p>Could you tell me what's going on here? I can't and and <strong>I wrote it</strong>. The file started as <code>complete-css.css</code> and when we launched the initial marketing pages for <a href="https://piccalil.li/mindful-design">Mindful Design</a> and J<a href="https://piccalil.li/javascript-for-everyone">avaScript for Everyone</a>, we normalised everything to be <code>course-lander.css</code> instead.</p>
<p>What we <em>didn't</em> do though is audit the CSS and qualify what everything does. The argument for not doing that was all three course marketing pages were going to be identical in terms of UI. We were <strong>focusing on the project at hand</strong>.</p>
<p>That's very much not going to be the case on this project though — all three will be completely unique — so the time has come to go through this CSS, determine what each block is <em>doing</em> and then you guessed it: comment it within an inch of its life.</p>
<p>I can hear one or two of you thinking "why do that if you know it's going to be changed?". It's a valid question! What we need to achieve here is <strong>confidence when code will be deleted</strong>. It's all about smoothing the path as much as possible, so production-level CSS authoring is fully focused on making stuff look good and maintaining the already high levels of flexibility. By documenting first, we’ll by proxy, enable that smooth working.</p>
<p>I'd say our CSS is in <em>really</em> good shape overall (you'd hope so wouldn't you?) but even then, deleting CSS can be quite scary if you don't smooth the path first. By qualifying everything in <code>course-lander.css</code> either <a href="https://piccalil.li/author/leanne-renard/">Leanne</a> or I can confidently delete stuff at will, if we need to.</p>
<h2>Organise, qualify, regroup and get on with the work</h2>
<p>The next part to do is go through the existing refactor backlog items and determine what could be done in this project. All of this work should be in a separate, smaller PR to the main production work.</p>
<p>The reason for that is we want <strong>focused PRs</strong> rather than <strong>huge PRs</strong>. It makes the reviewer's life a lot easier and <strong>more likely they'll actually analyse the code</strong>. If that's not happening, you're doing PRs for PR-sake, rather than what they <em>should</em> be for: working together to make sure code is in the best possible shape before it's merged into the <code>main</code> branch.</p>
<p>It's my job as the project lead to do a rough time estimate too to make sure <strong>this work doesn't get in the way of the project</strong>. With that in mind and the fact that this project is quite a short timeline, we'll likely pick up one or two items out of our refactoring backlog to compliment the items I outlined above.</p>
<h2>Wrapping up</h2>
<p>Sorry, that ended up being quite long along with a 5 minute video. If you've read down this far, you've done well.</p>
<p>Let's move back into the design world on the next post where <a href="https://piccalil.li/author/jason-bradberry/">Jason</a> will explain his initial creative exploration work. It's much more fun that refactoring!</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>Getting started on design discovery</title>
        <link>https://piccalil.li/projects/course-brand-development/3/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Jason Bradberry]]></dc:creator>
        <pubDate>Thu, 29 May 2025 09:56:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/3/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>Design discovery for this project was deliberately fairly light. We want to move fast, and iteratively. Traditional waterfall design approaches <em>require</em> extensive upfront discovery work because you only get one shot at getting it right. Whereas working iteratively allows you to keep discovery lightweight, based on what you know right now, and course correct with each iteration. The key is making sure the iterations are small enough to not veer too far off course, and to be <em>continually</em> in a process of discovery.</p>
<p>A good example of that is <a href="https://piccalil.li/projects/course-brand-development/2/">in the last post</a>, <a href="https://piccalil.li/author/andy-bell">Andy</a> mentioned that there's some qualitative research to do, but instead of halting the project, we're going to use that to qualify design ideation concepts.</p>
<p>The most important question in discovery is <em>“what are we trying to achieve?”</em> We use a process we call <em>framing</em> in discovery to help with this, which is based on two questions:</p>
<ol>
<li><strong>What is the problem we're trying to solve?</strong></li>
<li><strong>What solution are we proposing to achieve this?</strong></li>
</ol>
<p>For this project, the problem we're solving is that we're working on following up our first course, <a href="https://piccalil.li/complete-css/">Complete CSS</a> with two new courses by guest authors later in the year, and to put it frankly, it'd be pretty boring if they all looked the same.</p>
<p>Our whole ethos at Piccalilli is to create a platform for authors and educators, and to give space for <em>them</em> to do <em>their</em> thing. We love our visual identity and it serves the editorial content well, but we want each of our courses to live in their own little universe — one that our course authors can feel is <em>theirs</em>. Some of our course authors will have their own brands too. In short, we want <em>our</em> brand identity to get out of the way.</p>
<p>Often, arriving at an answer to the second question in the framing takes a good amount of digging, but as our course platform is a project we’ve iterating on for a while, we’ve already got a proposed solution that we’ve been working on in preparation for implementing branded courses.</p>
<p>When we <a href="https://piccalil.li/blog/redesigning-piccalilli-the-first-part-of-the-design-process/">redesigned Piccalilli</a> we built a whole theming system in from day one, which was sitting there ready to power this. We already had the first iteration of a landing page set up for each of our two new courses — <a href="https://piccalil.li/mindful-design">Mindful Design</a> and <a href="https://piccalil.li/javascript-for-everyone">JavaScript for Everyone</a>, and <a href="https://piccalil.li/author/andy-bell">Andy</a> had been busy <a href="https://piccalil.li/projects/course-brand-development/2/">iterating the Complete CSS landing page over the last few months</a>, so we had a good idea of what's working. This sprint was all about working out the best way to update our course landing page template to support multiple brands, each with their own theme.</p>
<p>At the start of this sprint, our three landing pages looked like this:</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/three-landing-pages.jpg" alt="Three course marketing pages, Complete CSS, Mindful Design and JavaScript for Everyone. They all look near-enough the same, visually, as each other." /></p>
<h2>Finding out what matters</h2>
<p>The first order of operations was to chat to <a href="https://www.scott.is/">Scott</a> and  <a href="https://wil.to/">Mat</a>. I wanted to find out what was important to them, and the context for where these courses sit alongside their other work.</p>
<p>These calls were really informal. I think that's so important when you're doing design discovery because building good relationships with the people you work with is foundational. Work is a whole lot better when you're making friends along the way, but building relationships is a foundation for the <em>trust</em> you'll need to ask from them when you present work later in the project.</p>
<p>Authenticity creates a shared sense of safety, which sets us up for a successful collaboration.</p>
<h3>Scott's context</h3>
<p>Scott has his own <a href="https://mindfuldesign.xyz/">Mindful Design brand</a>, which you can see on his website.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/scotts-current-site.png" alt="A screenshot of Scott’s Mindful Design website, showing the fantastic brand identity he’s already designed with monochrome and illustrated people" /></p>
<p>His course will be part of a wider collection of products, including a toolkit, book and newsletter. The course will be linked to from the <a href="https://mindfuldesign.xyz/">Mindful Design website</a>, and Scott's keen to keep it all feeling cohesive.</p>
<p>He's also open for us to subtly evolve the design language. In essence our brief here was to take the <em>fantastic</em> work that Scott has already done, make it work in our context, and look for opportunities to flesh it out and refine the execution.</p>
<h3>Mat's context</h3>
<p>The brief for Mat's course was a bit more open. Mat's <a href="https://piccalil.li/javascript-for-everyone#:~:text=I%E2%80%99m%20the%20author%20of%20JavaScript%20for%20Web%20Designers%20and%20Image%20Performance%20from%20A%20Book%20Apart.%20I%20also%20wrote%20the%20Learn%20JavaScript%20and%20Learn%20Images%20courses%20for%20Google%E2%80%99s%20web.dev.">written books and courses before</a>, but they all exist as standalone products that don't need to be visually related to his upcoming course. We could essentially be quite free with the aesthetic choices for his brand.</p>
<p>Together we established a few key criteria for the visual direction — primarily to avoid the increasingly generic <em>blue/purple-on-black</em> tech site look, or in Mat's words "signal <em>technical</em> without it looking like someone turned off all the lights at an Apple store". And we wanted to have fun with the design.</p>
<p>There was some talk of perhaps taking influence from tech of the past, and that the design should have a warmth and approachability to help emphasise the <em>for everyone</em> aspect of the course.</p>
<h2>A note on theming flexibility</h2>
<p>This sprint was as much about making sure our theming system works, as it was about creating visual brand identities for each of these courses. We have one course that's got an established identity, and another that is more of an open brief, which is serendipitous. Our system should be able to handle both, but the thinking around how the structure needs to support this is important. Upfront, we decided that we needed to do two things to ensure the flexibility of the system:</p>
<ol>
<li>We needed to push the landing page designs further than we had for our first course, adding more visual flair and details to the layouts to find the areas that needed theme-ability baked in</li>
<li>We also needed to find smart ways to make the layouts resilient enough to handle theming without breaking</li>
</ol>
<h2>Wireframes</h2>
<p>Working on Scott’s project first made sense, as their solid existing identity gave us such a leg up. Off the back of the discovery call, we opted to get straight into wireframing. We're usually a big fan of <a href="https://alistapart.com/article/priority-guides-a-content-first-alternative-to-wireframes/">priority guides</a> instead of wireframes as they take layout decisions out of the equation at this early stage, but in this context, layout decisions were precisely what we needed.</p>
<p>We'd already defined content and our current landing pages acted as our guide to content priority, so our task here was to improve layout resilience. First up, we dropped a screenshot of the current landing page into FigJam and carved it up into regions.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/landing-page-region-boundaries.png" alt="A screenshot of the Mindful Design landing page in Figma, marked up with annotations that show the boundaries of each region" /></p>
<p>The first port of call was to look for opportunities to simplify the region layouts to better handle theming. Having built a few projects with theme-able front-ends recently, one thing has become very clear — the more complexity in the structural aspect of the design, the more chance of it breaking when a new theme is applied. As <a href="https://piccalil.li/projects/course-brand-development/1/">Andy has mentioned</a>, our theming system is powered by CSS custom properties. We use them on almost <em>everything</em>, including our fluid type and spacing scales.</p>
<pre><code>:root {
  /* An excerpt from our fluid type scale */
  --size-step-2: clamp(1.3125rem, 1.1951rem + 0.5872vi, 1.75rem);
  --size-step-1: clamp(1.1875rem, 1.1036rem + 0.4195vi, 1.5rem);
  --size-step-0: clamp(1.0625rem, 0.9954rem + 0.3356vi, 1.3125rem);
}
</code></pre>
<p>This level of flexibility means each theme can have its own type and spacing scales — which is powerful — but it also opens up scope for upsetting the balance of elements within a layout on a page with a custom theme. Building with <a href="https://every-layout.dev/">flexible layouts</a> helps us out a <em>lot</em> here, as we're likely to avoid elements wholesale crashing into each other, but the more <em>width of the road</em> we can build in to the layouts, the more likely our layouts will <em>look great</em> no matter the theme.</p>
<p>This section below is a great example.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/what-you-get-default.png" alt="A screenshot of the “What you get section” of the landing page, showing the three column layout, with the heading sitting in the first column and reading well" /></p>
<p>It looks great in our default theme. But with a more dramatic type scale, that heading suffers from a distinct lack of space. It's not broken, but we can do much better.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/what-you-get-large-heading.png" alt="A screenshot of the “What you get” section, with the font size of the heading bumped up much larger, showing that with such a large font size and narrow column width, each word in the heading is stacked vertically" /></p>
<p>Thankfully, this isn't the first theme-able project we've built. We worked with <a href="https://thelostestate.com/">The Lost Estate</a> last year to build a platform that allows them to create landing pages for multiple live entertainment experiences, all using the same underlying theme-able system, but each with their own look and feel.</p>
<p>Their visual aesthetic is on the maximalist end of the spectrum because they like to throw a <em>lot</em> into their designs, to build a sense of the immersive worlds they create for their shows.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/tle.png" alt="A composition of selected elements from “The Lost Estate” website, featuring bold typography, vintage-inspired illustrations, event details, customer reviews, and booking buttons. The design uses a dark theme with red and gold accents." title="Some of the design work we produced for The Lost Estate's '58th Street' jazz club landing page" /></p>
<p>One of the big things that we found during design exploration for <em>The Lost Estate</em> was that keeping layouts centre aligned and stacked helped <em>hugely</em> with layout resilience. It makes a lot of sense. Strip a website of its CSS clothing and it's responsive by default, with block elements like headings taking up the full width of the viewport, and everything nicely stacked. If you're not averse to a swear or two, <a href="https://motherfuckingwebsite.com/">here's a great example of that!</a> (<strong>content warning</strong>: contains explicit language).</p>
<p>You can throw anything at a layout like this and it will handle it. Want to use a super wide font like <a href="https://ohnotype.co/fonts/obviously">Obviously Extended</a>? Go for it.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/obviously-extended.png" alt="Screenshot of the Obviously Extended font on the OH no type company website, showing its very wide characters" title="Obviously Extended font is wiiiiiide! But our stacked layout will handle it" /></p>
<p>The other benefit of this approach of centring content, is that it makes responsive design simple, by introducing minimal layout changes across viewports.</p>
<p>With all of that in mind, this is where we landed with our wireframes. We're taking full advantage of stacked layouts here, barring a few spots where we selectively introduced multi-column layouts to break the composition up.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/mindful-design-wireframe.png" alt="Our wireframe design for Mindful Design, showing its predominently centred layout with very few visual details in place" /></p>
<p>We've introduced the brand typefaces here, but you'll notice that we're not aiming for any level of neatness or consistency. This is our <em>messy first draft</em>. It's a concept I picked up from Anne Lamott's <a href="https://www.goodreads.com/book/show/12543.Bird_by_Bird">Bird by Bird</a>, and it's helped me hugely in this early stage of the creative process to get that initial momentum.</p>
<p>I'm a long-suffering perfectionist. And I've learnt the hard way how much perfectionism shackles creative freedom if you don't keep it in check.</p>
<p>At this point, I feel happy with where we’re at, and ready to dive in and get into some design work. Andy will pick up next with a look at the existing technology of our systems.</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>How we got here and what project success looks like</title>
        <link>https://piccalil.li/projects/course-brand-development/2/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Andy Bell]]></dc:creator>
        <pubDate>Wed, 28 May 2025 12:56:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/2/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>On September 10 2024, we announced <a href="https://piccalil.li/complete-css/">Complete CSS</a> and offered people the opportunity to get a heavy discount for pre-ordering the course. It was a monumental moment for us at Piccalilli because we knew that this truly was the start of something exciting.</p>
<p>It was just the pre-order of my course to most people, but for us, <a href="https://bell.bz/i-wrote-a-course-but-its-so-much-more-than-that/">it was the first dip of our toes into something much more than that</a>. This was the start of the process of publishing many courses over years.</p>
<p>To enable this goal and set our principles of producing a marketing page that worked, but didn’t annoy people, we based the whole process of this iteration on the basis that marketing pages should:</p>
<ol>
<li>Be really easy to scan and digest</li>
<li>Calmly signpost people towards the main call to action (CTA) with subtle repetition and reassurance</li>
<li>Informed users of how the course will bring them tangible benefits</li>
</ol>
<p>That was the first iteration of the course marketing page system and it looked like this.</p>
<p></p><p>To see this demo, head over to the <a href="https://open-working-clips.netlify.app/original-complete-css-lander">web version</a>.</p><p></p>
<p>We shift on to November 26 2024 — the full launch of <a href="https://piccalil.li/complete-css/">Complete CSS</a>. That truly was a monumental moment because it was the ultimate test of whether this premium course arm of the publication is going to work or not. It did better than expected, which is great and why we’re able to publish this <a href="https://piccalil.li/blog/we-need-your-support-to-do-free-projects-for-good-causes-and-publish-free-high-quality-education/">open working content</a> in the first place.</p>
<p>We made a <em>lot</em> of mess getting there though. It’s natural in these situations — a period of extremely high pressure — to Get It Done™ and that’s exactly what we did, but we knew there was a lot of work to make sure the marketing page for this course sustained the success we <em>needed,</em> long after the initial momentum of launch and Black Friday died down.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/complete-css-launch-day.jpg" alt="Screenshot of a web page for the ‘Complete CSS’ course. A yellow banner at the top advertises a Black Friday discount. The header features bold black text and graphic bars. Below, a large heading reads ‘Take your CSS skills beyond the next level’ with supporting text about the course’s depth for senior-level developers." title="This is how the marketing page looked on launch day. We can’t show you the actual page here though because we don’t want to create a confusing experience if people click the buy button 😅" /></p>
<p>We’re obsessed with iteration here and as we saw it, even on launch day, we were still right at the start because this was just the first course of many more to come. We also wanted to solely lean into what works in terms of conversion optimisation from our work, delivering commercial design work <a href="https://set.studio/">in the agency</a>.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/course-branding-iteration.svg" alt="An abstract visual timeline of progress represented by a swirling dotted path transitioning from magenta to yellow while getting neater over 4 iterations. A label reading 'we are here' is placed near the beginning of the magenta section, indicating an early or chaotic stage in a process." /></p>
<p>We’re still — even today — in the messy first iteration. The job of this course brand theme development project is to get us into that second, slightly neater state.</p>
<h2>What got done before this brand development project?</h2>
<p>After the launch of the course last year, we spent the first quarter of this year experimenting with the marketing page, while introducing new features. The key areas of focus and questions to answer were:</p>
<ul>
<li>How do we make sure there are as few barriers as possible to converting?</li>
<li>What promotion channels are working for us and which ones are not?</li>
<li>Is Purchasing Power Parity (PPP) as frictionless as possible?</li>
</ul>
<h3>How do we make sure there are as few barriers as possible to converting?</h3>
<p>What we <em>could</em> have done — and what commercial clients often fall in to the trap of — is deploy heavy tracking tools like heat mapping and even creepier surveillance technology like the <a href="https://developers.facebook.com/docs/meta-pixel/implementation/conversion-tracking/">Meta Pixel</a>. Technologies like this seem like a good idea but utilising this early on in a product’s marketing effort will almost certainly send you down rabbit holes based on reactivity to incomplete data.</p>
<p>The <em>Meta Pixel</em> and associated technology around it is a great example of an easy to fall into trap, because the whole system will make feel like you have to <em>invest more and more</em> into advertising your product. They do this by leveraging the emotional response to the numbers no going up as much as you like — we’re only human after all and that type of user manipulation <em>works</em>.</p>
<p>If your principles are “make money no matter what”, then sure, these technologies will turn the number dial up for you. We’re not like that here though — <strong>we respect our users above everything</strong> — so we opt for demonstrating the <strong>value</strong> much more prominently instead and focusing on how to optimise natural, pre-engaged traffic to the marketing page.</p>
<p>Technology like the Meta Pixel is again, incredibly creepy, but it’s also invasive and resource intensive. It’s why <a href="https://piccalil.li/blog/we-gave-the-index-a-much-needed-design-refresh-and-introduced-advertising/">advertising is completely JavaScript and cookie free on the piccalilli website and newsletter</a>. We opt for a simple, server-side, click tracker to report back to advertisers because they need to see a return on investment (ROI). The priority is <strong>always the reading experience</strong> though so we deliver that advertising as non-invasively as we can, using standard HTML and CSS.</p>
<p>With all of this in mind, I spent some time working on patterns that <strong>disrupted, but didn’t distract</strong>. A disruption can be achieved with a block of colour or texture and it <em>should</em> be aimed at gently pulling a user’s focus to where you <em>think</em> it should be. Mostly this is to optimise the experience for people that prefer to quickly scan content.</p>
<p>For example, I added an experiment where I gave the closing call to action (CTA) more contrast by making it <a href="https://piccalil.li/blog/creating-a-full-bleed-css-utility/">full bleed</a> and bright yellow.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/original-closing-cta.jpg" alt="A portion of the course marketing page lists benefits like lifetime access, community support, certificate of completion, and training value. A yellow banner prompts users to take the course, followed by an email input and 'Buy Now' button to purchase via Stripe." /></p>
<p>The original CTA had very little contrast and didn’t even mention the price <strong>right at the most important point</strong> which is yeh, a mistake, but <strong>that point in the processes was the time to make mistakes</strong> because we were so early in our overall, iterative process.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/new-closing-cta.png" alt="The same section of the webpage, but now with a full bleed, yellow block that features a massive heading 'Take the course for only £249'" /></p>
<p>The new CTA is a massive difference, visually, right? This change definitely increased sales too as the <a href="https://en.wikipedia.org/wiki/Conversion_marketing#Conversion_rate">conversion rate</a> increased on the landing page by a handful of percent, which is also a success!</p>
<p>Another experiment had us looking at a docked CTA, like this:</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/course-lander-docked-cta.jpg" alt="Screenshot of a promotional header for the Complete CSS course. Large bold text reads 'Take your CSS skills beyond the next level' with a yellow underline. A banner above states 'Join over 950 others who are taking their CSS skills to the next level' in black text on a yellow background." /></p>
<p>The aim here was twofold:</p>
<ol>
<li>For visitors that were pre-engaged — for example, someone who had read a recommendation for the course — they had a quick route to purchasing the course</li>
<li>For visitors that were browsing, it is a persistent quick route to purchasing the course</li>
</ol>
<p>We experimented with various messaging strategies and eventually settled on “Join over X others that are taking their CSS skills to the next level”. The message “take your CSS skills to the next level” is one of the brand promises of Complete CSS, just like “You won’t be the same developer after completing this course” is.</p>
<p>By prefixing that message with a number of other people that are experiencing that brand promise is a form of <em>social proof</em> — which is an essential part of optimising for conversion as social proof encourages and reassures people. Although £249 is cheaper than a lot of other courses in our industry, it’s still a <strong>lot of money</strong>, so reassuring people that they’re going to get value for that is really important.</p>
<p>This more empathetic, human-orientated method of making a marketing page work is incredibly important to us.</p>
<h3>What promotion channels are working for us and which ones are not?</h3>
<p>Since the launch of <a href="https://piccalil.li/complete-css/">Complete CSS</a>, we also experimented with advertising externally, along with introducing promotional elements to articles on our website.</p>
<p>There were mixed results with external advertising. For newsletter advertising, we experimented with a few different publications, after analysing their metrics, either from their website or talking to their advertising reps.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/notion-newsletter-tracker.jpg" alt="Screenshot of a Notion database titled ‘Tech/design newsletters’ showing a table with newsletter names, URLs, subscriber counts, open and click rates, and advert prices. Examples include Web designer news, Unicorn Club, CSS Weekly, and Dense Discovery." /></p>
<p>For each newsletter ad we took out, we tracked traffic using UTM parameters for our <a href="https://usefathom.com/">Fathom</a> and <a href="https://developers.cloudflare.com/analytics/account-and-zone-analytics/zone-analytics/">Cloudflare analytics</a>. We tracked conversions using specific coupon codes for each advert. There was a mixed level of success with this approach. Some newsletter spots did <em>really</em> well and others did <em>nothing at all</em>.</p>
<p>It’s understandable in those moments to think “this doesn’t work”, but you’re consistently broadcasting your brand by doing advertising like this, so it’s always worth doing. What you have to calculate — rather than blindly chasing KPIs — is “how much am I willing to spend to broadcast our brand”, which in our case, was quite a lot.</p>
<p>Another example experimented with was podcast advertising on the <a href="https://shoptalkshow.com/">Shop Talk Show</a>. This was a rather expensive experiment which — in terms of sales — wasn’t overly successful, but the value of having <a href="https://shoptalkshow.com/650/#t=29:57">Chris talk about the course for a couple of minutes</a> on our behalf, to a highly engaged audience, was worth every penny.</p>
<p>The most successful method of promotion though — without a doubt — is article based calls to action like this one.</p>
<p><a href="https://piccalil.li/complete-css/?utm_source=piccalilli-link&amp;utm_medium=author-promo"><img src="https://piccalil.b-cdn.net/images/projects/article-course-promo.jpg" alt="Promotional box with a bright yellow background and bold black text reading ‘Did you know, Andy has a course?’ followed by a description of the Complete CSS course. A black button below says ‘Find out more’ with an arrow icon." /></a></p>
<p>When we monitor spikes in sales, we can almost always track that back to an article I wrote generating a lot of traffic. In fact, so far, it’s been the most consistent and successful way of promotion <a href="https://piccalil.li/complete-css/">Complete CSS</a>. But that isn’t a surprise to me because the most successful underpinning of my career has <em>always</em> been writing.</p>
<h3>Is Purchasing Power Parity (PPP) as frictionless as possible?</h3>
<p>When we launched the course, PPP was done in a manual way. People would land on a specific PPP page that automatically opened a <a href="https://crisp.chat/">Crisp Chat</a> window. We would then provide coupon codes to users who reached out. The main reason for this is we wanted time to come up with an automated solution that <strong>benefitted everyone.</strong> Delivering that functionality <em>and</em> the course in the best possible shape at launch was too much of a stretch for us.</p>
<p>The main problem with this manual approach though is it was very limiting and exclusionary. It was limiting in terms of our time, but also, it was an unnecessary barrier to entry for people that rightly, should get PPP discounts — the exclusionary part.</p>
<p><a href="https://bsky.app/profile/vickymorris.bsky.social">Vicky</a> — our producer — spent <em>hours</em> analysing PPP and used her analytical and data processing skills to come up with a solid, fair dataset. We then implemented a system that detects a visitor’s country — server side — and if their country is supported, it delivers a coupon code in two places. First, in the docked CTA:</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/ppp-docked-cta.jpg" alt="Screenshot of the Complete CSS marketing page. A yellow banner at the top offers a 30% discount for visitors from Portugal with a checkout code that is obfuscated." /></p>
<p>And then, in the main CTA:</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/ppp-main-cta.jpg" alt="The main CTA has a black banner on a yellow background and offers a 30% discount for visitors from Portugal with a promo code that is obfuscated, along with a price saving broken down in a human readable form." /></p>
<p>The increase of PPP sales was <em>significant.</em> Sure, we lost out early here — as did people that qualified for PPP discounts, unfortunately — but we <em>had</em> to get an automated system <em>right</em>. Well, right in terms of helping people. In terms of code, it’s a bit of a mess, which we’ll tackle in a later post.</p>
<h2>The experimentation continues</h2>
<p>You never know all of the answers, so it’s really important to continuing experimenting. This is especially important for us because we’re going to be launching <a href="https://piccalil.li/javascript-for-everyone">JavaScript for Everyone</a> and <a href="https://piccalil.li/mindful-design">Mindful Design</a> this year. It’s better to get as much experimentation done as possible <em>now</em>, so <a href="https://wil.to/">Mat</a> and <a href="https://www.scott.is/">Scott</a> get the best possible support from us.</p>
<p>For example, the CTA at the end of articles works really well, so we’re currently experimenting (at the time of writing) with detecting visitors from there and offering a nice discount to them. It’s only a short experiment, but its to test ways of getting through traditionally quiet periods in selling education material like the spring and summer are.</p>
<p>This is the key you see, it’s all about <em>consistency</em>. You get peaks and troughs, sure, but maintaining a healthy level of revenue, using a healthy amount of energy and cost — both monetary and time — is the ideal situation you want to find yourselves in.</p>
<p>This is especially important to me to make sure we deliver for our course authors too, who are almost always independent/freelance. Nothing beats consistent revenue when you’re working for yourself, <em>trust me</em>.</p>
<h2>What we wished we got right from the start</h2>
<p>Although the <a href="https://piccalil.li/projects/course-brand-development/1/#the-timeline-and-where-we-are-today">timeline for this project is sprint-based</a>, there’s still time and space to do more discovery work as we go. For example, I think we’ve fallen short in the following areas:</p>
<ul>
<li>We’ve never logged where someone came from at the point of purchase</li>
<li>We’ve never asked people who bought the course what the reason was for them buying it</li>
</ul>
<p>The first point is a possible red-herring in itself. For a reasonably high ticket sale, you wouldn’t expect people to make the decision immediately. This means it’s <strong>highly likely</strong> that when they come to make the purchase, they arrive <strong>without</strong> UTM strings. We should still implement this idea, but we should treat the data as trend data, rather than absolute data.</p>
<p>The second point we should have absolutely done. There’s not many things as valuable as high quality, qualitative data. While other planning and creative exploration work happens, Vicky and I will start to work on this. If anything, the data can be useful in this project to determine if the stuff that <em>works</em> is still well represented in the new design concepts for course marketing pages that we come up with at the point when they need feedback.</p>
<h2>Where do we go from here?</h2>
<p><a href="https://piccalil.li/author/jason-bradberry/">Jason</a> is going to spend the next post talking about getting started on design discovery, so I’ll not write any spoilers here now, but something that’s really important to do at this point of a project is determine <strong>what does success look like?</strong></p>
<p>It’s one of the first questions we ask a new client in a kick-off meeting because the answer to that question becomes a key pillar in the process. The answer can of course be “more money” (it so often is), but I’m more pragmatic than that and by proxy of being the founder of Piccalilli, I am the main stakeholder of this project. With that in mind, success looks like this for me:</p>
<blockquote>
<p>If at the end of this project, our upcoming courses have a high quality and unique brand, along with a course marketing page that is clear, light and easy to understand, I’ll be happy.</p>
<p>If the course marketing page for our existing live course brings in more consistent revenue, it’ll enable all sorts of positive outcomes, not just for us, nor even our authors, but also for the community as it enables more open working and investment in guest author content.</p>
</blockquote>
<p>I’m very confident we achieve this, without harassing and tracking visitors to the nth degree.</p>
<p>We’ve got all the Boring Project Management™ stuff to do now, such as setting up a backlog, timeline and plan in Notion. With all of that in place though, we’re in a good position to get into design discovery, which is next up.</p>
        
        ]]></description>
        
      </item>
    
      <item>
        <title>The start</title>
        <link>https://piccalil.li/projects/course-brand-development/1/?ref=course-brand-development-rss-feed</link>
        <dc:creator><![CDATA[Andy Bell]]></dc:creator>
        <pubDate>Tue, 27 May 2025 10:55:00 GMT</pubDate>
        <guid isPermaLink="true">https://piccalil.li/projects/course-brand-development/1/?ref=course-brand-development-rss-feed</guid>
        <description><![CDATA[<p>Welcome to the first open working project! We're starting up with something <em>simple</em>.</p>
<p>Well, I say simple, but as with any working on an <em>existing</em> project context, it <em>feels</em> simple until you start doing it.</p>
<p>I'm willing to bet one English pound that the <em>vast</em> majority of you are working on <em>existing</em> projects, day-to-day, so as we see it, starting this open working content <em>with</em> an existing project makes a lot of sense.</p>
<p>We’re hoping that seeing how we operate on this project and <a href="https://piccalil.li/projects/">future projects</a> will be helpful to you and your day job. That’s a big part of what we’re trying to do. Let’s get on with it.</p>
<h2>Some background of the problem we’re trying to solve</h2>
<p>We <a href="https://piccalil.li/courses/">publish premium courses on Piccalilli</a>. Right now, one is available — <a href="https://piccalil.li/complete-css/">Complete CSS</a> — and two others are launching this year: <a href="https://piccalil.li/javascript-for-everyone">JavaScript for Everyone</a> and <a href="https://piccalil.li/mindful-design">Mindful Design</a>.</p>
<p>Now, if you take a moment to check out those landing pages — it's ok, I'll wait — you'll probably notice they all look very similar to each other.</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/three-landing-pages.jpg" alt="Three course marketing pages, Complete CSS, Mindful Design and JavaScript for Everyone. They all look near-enough the same, visually, as each other." /></p>
<p>We actually have a full theming capability on this site that <a href="https://piccalil.li/blog/redesigning-piccalilli-the-first-part-of-the-design-process/">we wrote about in our redesign article series</a>. Almost every global style, component and region is hooked up like this:</p>
<pre><code>.my-element {
  background: var(--my-element-bg, black);
  color: var(--my-element-color, white);
}
</code></pre>
<p>Because CSS custom properties are affected by the cascade, this system allows us to determine a specific <em>theme</em>, anywhere we choose to do so.</p>
<pre><code>:root {
  --my-element-bg: red;
  --my-element-color: yellow;
}
</code></pre>
<p>What you're seeing right now is the <em>default theme</em>. If you toggle dark mode, you're seeing the <em>default dark theme</em>.</p>
<p>If no theme is defined, those fallback values — for example <code>black</code> for <code>--my-element-bg</code> — are honoured. As soon as <code>--my-element-bg</code> is defined by a theme though, that value is honoured instead. This gives us the ability to completely change the look and feel of any element of the website whenever we want. Handy!</p>
<h2>How we’re aiming to solve the problem with this theming system</h2>
<p>For a client project, we'll send a Statement of Work (SOW) that breaks down high level deliverables. For this first project, the deliverables are as follows:</p>
<ol>
<li>Refactor the default theme for course marketing pages into a simpler, more themeable structure. This will be applied to <a href="https://piccalil.li/complete-css/">Complete CSS</a></li>
<li>Further refactor the sectional structure of the course marketing pages in general</li>
<li>Develop two distinct brands for <a href="https://piccalil.li/javascript-for-everyone">JavaScript for Everyone</a> and <a href="https://piccalil.li/mindful-design">Mindful Design</a></li>
<li>Implement those distinct brands — using the theme system — on each course marketing page</li>
</ol>
<p>This means we're going to cover the following in this open working project content:</p>
<ol>
<li>How to calculate a strategy for new features on an existing project</li>
<li>How to find edge cases and dive deeper than “it should be ok”</li>
<li>How to fight the urge to implement deceptive patterns and interrupting elements</li>
<li>Advice and strategies for working with external partners in terms of discovery, creative ideation and giving and receiving feedback</li>
<li>A look at our methods of planning the implementation work, iterating design concepts in the browser and calculating deliverables based on that</li>
<li>How we work out the iterations to land on those immediate deliverables and future deliverables with ice boxing</li>
<li>Delivering the tangible assets — AKA the website work</li>
<li>Testing and quality assurance</li>
</ol>
<p>You might be thinking “how does all of this other stuff relate to a theming system?”</p>
<p>We’re extremely into core skills — often called “soft skills” — in <a href="https://set.studio/">the studio</a>. Sure, the technical implementation of the project will be heavily weighted in applying a theme, but it’s really important to front-load as much thinking, testing and strategy into the early parts of a project as possible.</p>
<p>What feels like slow, laborious work will save time when it really matters: applying code to the project to make thing thing you’re trying to do, <em>actually happen</em>. By front-loading the project with strategy, we have focused time to calculate what <em>will</em> go wrong, what <em>will</em> be affected and how we’re going to navigate those eventualities. If we try to do that <em>while</em> we’re doing production work, we’ll end up with shortcuts, hacks and <code>// TODO</code> comments littered in our code.</p>
<p><a href="https://youtu.be/tHtFiciT2tQ?si=3hzcfCRNi5laQpgh&amp;t=1570">By moving slow, we will go fast</a>.</p>
<h2>The timeline and where we are today</h2>
<p>We start at <strong>Sprint 1 - Planning &amp; creative exploration</strong>. Let’s look at where that is in the whole project timeline:</p>
<p><img src="https://piccalil.b-cdn.net/images/projects/course-branding-timeline.svg" alt="5 blocks made from a red striped pattern. They're laid out like a Gantt chart which visualises each block following the other. They are labeled &quot;Planning &amp; creative exploration&quot;, &quot;Creative production&quot;, &quot;Prototypes &amp; technical planning&quot;, &quot;Technical production&quot; and &quot;Quality assurance &amp; final details&quot;" /></p>
<p>Both upcoming courses are in different phases of the authoring and production work. Both are also in different phases in terms of branding too. <a href="https://scott.is/">Scott</a> — the author of <a href="https://piccalil.li/mindful-design">Mindful Design</a> — has already done some fantastic work, creating a strong basis of a brand with their <a href="https://mindfuldesign.xyz/">Mindful Design website</a>. <a href="https://wil.to/">Mat</a> has got a completely blank slate for us, so we're starting in two completely different places here.</p>
<p>The first step of this project is to do some discovery work to work out an answer to "how do we get these courses on the same level as each other in terms of branding?". That’s where <a href="https://piccalil.li/author/jason-bradberry/">Jason</a> kicks off his writing in the third post of this project.</p>
<p>That's it for this post though. Next up, we look at what the project landscape looks like right now so we have a good understanding of our starting point.</p>
        
        ]]></description>
        
      </item>
    
    </channel>
  </rss>
