<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mike Bifulco</title>
    <description>The latest articles on Forem by Mike Bifulco (@irreverentmike).</description>
    <link>https://forem.com/irreverentmike</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F149105%2F26b0c5bc-4fc2-4552-9438-dc7c4de50a7c.png</url>
      <title>Forem: Mike Bifulco</title>
      <link>https://forem.com/irreverentmike</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/irreverentmike"/>
    <language>en</language>
    <item>
      <title>Steal these ideas to build new products</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Wed, 12 Mar 2025 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/steal-these-ideas-to-build-new-products-2eph</link>
      <guid>https://forem.com/irreverentmike/steal-these-ideas-to-build-new-products-2eph</guid>
      <description>&lt;h2&gt;
  
  
  The Big Idea
&lt;/h2&gt;

&lt;p&gt;Ideas are easy, but focus and execution are hard. There are endless public APIs with real problems waiting for you to solve - all you need to do is find an audience and start shipping.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steal These Ideas to Build New Products
&lt;/h2&gt;

&lt;p&gt;As cofounder of &lt;a href="https://apisyouwonthate.com" rel="noopener noreferrer"&gt;APIs You Won't Hate&lt;/a&gt;, I've seen the playbook work repeatedly: Find public data. Solve a specific problem. Ship it. From &lt;a href="https://apisyouwonthate.com/podcast/building-an-api-for-global-news/" rel="noopener noreferrer"&gt;global news APIs&lt;/a&gt; to &lt;a href="https://apisyouwonthate.com/podcast/how-mercoa-built-a-platform-for-accounts-payable/" rel="noopener noreferrer"&gt;accounts payable management&lt;/a&gt;, the winners aren't inventing data—they're making it useful.&lt;/p&gt;

&lt;p&gt;Friends - these opportunities are &lt;em&gt;everywhere&lt;/em&gt;, waiting for someone to execute.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Matters: Value &amp;gt; Hype
&lt;/h3&gt;

&lt;p&gt;It's tempting to chase AI quick wins, but remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Existing data streams = sustainable business opportunities&lt;/li&gt;
&lt;li&gt;Value-add to available information = competitive edge&lt;/li&gt;
&lt;li&gt;Focused problem-solving &amp;gt; tech novelty&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Case Study: Weather Data
&lt;/h3&gt;

&lt;p&gt;Weather apps are commodity products since &lt;a href="https://www.theverge.com/2020/3/31/21201666/apple-acquires-weather-app-dark-sky-shut-down-android-wear-os-ios" rel="noopener noreferrer"&gt;Apple killed Dark Sky&lt;/a&gt; (RIP).&lt;/p&gt;

&lt;p&gt;There are plenty of untapped goldmines, like &lt;a href="https://www.weather.gov/documentation/services-web-api" rel="noopener noreferrer"&gt;NOAA&lt;/a&gt; and &lt;a href="https://openweathermap.org/api" rel="noopener noreferrer"&gt;OpenWeatherMap&lt;/a&gt; data for &lt;em&gt;specific&lt;/em&gt; use cases that people will pay for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The opportunity:&lt;/strong&gt; Niche weather apps for specific use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For pilots: Visibility conditions and wind patterns&lt;/li&gt;
&lt;li&gt;For gardeners: Frost alerts and growing condition forecasts&lt;/li&gt;
&lt;li&gt;For skiers: Snow quality predictions based on temperature patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03z7oi1v25h36zlpy52o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F03z7oi1v25h36zlpy52o.jpg" alt="openweather and noaa" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Steal These Ideas
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;1. Nutritional Intelligence with Edamam API&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://www.edamam.com/" rel="noopener noreferrer"&gt;Edamam&lt;/a&gt; provides extensive APIs for nutritional data and analytics. The generic "calorie counter" app is done to death.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The opportunity:&lt;/strong&gt; Build specialized nutrition tools for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Athletes tracking specific macros for performance&lt;/li&gt;
&lt;li&gt;People with medical conditions requiring dietary monitoring&lt;/li&gt;
&lt;li&gt;Parents checking if school lunches meet nutritional requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9duu20bqpbcq2lshhxo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9duu20bqpbcq2lshhxo.jpg" alt="edamam api" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;2. Geolocation Magic with OpenAQ&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;OpenAQ offers real-time air quality data from thousands of stations worldwide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The opportunity:&lt;/strong&gt; Create targeted apps for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Real estate buyers evaluating neighborhood health metrics&lt;/li&gt;
&lt;li&gt;Parents of children with respiratory conditions planning outdoor activities&lt;/li&gt;
&lt;li&gt;Researchers correlating air quality with public health outcomes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qdxc7ilium6poeu472k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1qdxc7ilium6poeu472k.jpg" alt="openaq api" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Secret Sauce: 3 Traits of Successful API Products
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Specific audience&lt;/strong&gt; - Target a niche who will benefit from your product&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context transformation&lt;/strong&gt; - Don't just display data; interpret it and add value&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflow integration&lt;/strong&gt; - Make your product available whenever and wherever it will be most useful&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;...and price it accordingly. If you're saving news editors thousands of dollars every week, aim higher than $3.99/mo.&lt;/p&gt;




&lt;h2&gt;
  
  
  Resources for finding new ideas
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Single APIs in your area!
&lt;/h3&gt;

&lt;p&gt;There's a great collection of APIs waiting to be used on GitHub called &lt;a href="https://github.com/public-apis/public-apis" rel="noopener noreferrer"&gt;public-apis&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Free design resources
&lt;/h3&gt;

&lt;p&gt;I came across &lt;a href="https://unblast.com/" rel="noopener noreferrer"&gt;Unblast&lt;/a&gt; recently - self-described as &lt;em&gt;A growing library of free design resources made by the world's best designers.&lt;/em&gt; Can confirm - it is an exceptional collection. Give it a look as you build your brand or collateral.&lt;/p&gt;

&lt;h3&gt;
  
  
  A chicken in every pot, and an SVG for every noun
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://thenounproject.com/" rel="noopener noreferrer"&gt;The Noun Project&lt;/a&gt; started with a simple goal: create a visual language for the world by building a repository of single color icons &lt;em&gt;for every noun.&lt;/em&gt; Hell yeah. I use it &lt;em&gt;all the time.&lt;/em&gt; You can use any icon on the site for free with attribution; licensing is either a dirt cheap per-icon fee, or a very reasonable monthly subscription.&lt;/p&gt;




&lt;p&gt;The future is in your hands. Go on and build something great.&lt;/p&gt;




&lt;h2&gt;
  
  
  Subscribe to 💌 Tiny improvements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;This is a cross-posted version of my weekly newsletter for product builders and founders, &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;💌 &lt;em&gt;Tiny Improvements&lt;/em&gt;&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm Mike Bifulco, CTO and cofounder of Craftwork (YC S23), 3x startup founder and former Google, Stripe, and Microsoft engineer.&lt;/p&gt;

&lt;p&gt;If you're interested in building a startup or the Indiehacker life, I'd love to hear from you! Drop me a comment below and tell me what you're working on.&lt;/p&gt;

&lt;p&gt;Don't miss the next dispatch: &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Get Tiny Improvements&lt;/a&gt; sent directly to your inbox each week. It's free!&lt;/p&gt;

</description>
      <category>startup</category>
      <category>api</category>
    </item>
    <item>
      <title>Your MVP is too damn big</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/your-mvp-is-too-damn-big-513b</link>
      <guid>https://forem.com/irreverentmike/your-mvp-is-too-damn-big-513b</guid>
      <description>&lt;h2&gt;
  
  
  The Big Idea
&lt;/h2&gt;

&lt;p&gt;Your first product version needs to be smaller than you think. Much smaller. Probably embarrassingly small.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strip it bare
&lt;/h2&gt;

&lt;p&gt;Earlier this week, I was invited to share my experience building companies with a class of promising entrepreneurship students, enrolled in the &lt;a href="https://hurthub.davidson.edu/event/building-a-lean-startup/" rel="noopener noreferrer"&gt;Lean Startup course at Davidson University's Hurt Hub&lt;/a&gt;, taught by &lt;a href="https://www.linkedin.com/in/rebeccaweeks" rel="noopener noreferrer"&gt;Rebecca Weeks Watson&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Many of them were working through planning out their first business, using a tool called the &lt;a href="https://leanstack.com/lean-canvas" rel="noopener noreferrer"&gt;Lean Canvas&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;They'd interviewed potential customers and were defining their MVP. Their task: strip the idea to its core to test the riskiest assumption and find what customers would actually pay for.&lt;/p&gt;

&lt;p&gt;When you have a big idea, it's tempting to spiral into features and complexity. But you don't need a fully-realized product to test if your idea has legs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we overreach
&lt;/h2&gt;

&lt;p&gt;Most founders, especially first-timers, mis-scope their MVPs. About half the time, they add &lt;em&gt;way too much&lt;/em&gt; to their MVP for it to be built quickly. This is the trap of &lt;em&gt;it's not ready yet,&lt;/em&gt; or "if we build it, they will come". I have made this mistake - and I've seen it happen to others.&lt;/p&gt;

&lt;p&gt;There's also at tendency to build an MVP that will lead to a &lt;code&gt;yes&lt;/code&gt; no matter what. This usually means an MVP that's designed to reinforce the founder's belief in their idea, rather than challenge it.  After all, founders who have made it this far into the journey of building something &lt;em&gt;are&lt;/em&gt; convinced they're onto something meaningful.&lt;/p&gt;

&lt;p&gt;Whether they admit it ot not, this sector of founders is often more focused on protecting their ego than validating their idea.&lt;/p&gt;

&lt;p&gt;Red flag. 🚩&lt;/p&gt;

&lt;h2&gt;
  
  
  So what's an MVP for?
&lt;/h2&gt;

&lt;p&gt;There are plenty of ways to look at the outcome of an MVP, but I like to think of it as 2 simple yes/no questions:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there a small, focused group of people who are feeling this pain?&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Would they pay for a product that helps them solve this problem?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don't get a confident "yes" to both of these questions, then you need to rethink your plan. You can always build more, but you can't recover wasted time building features nobody wants.&lt;/p&gt;

&lt;p&gt;This can be accomplished with less than you think. A landing page with a video demo, a sign-up form for a waitlist, or a non-functional prototype.&lt;/p&gt;

&lt;h3&gt;
  
  
  MVP for a coworking SaaS
&lt;/h3&gt;

&lt;p&gt;My last startup, smpl, was a SaaS for managing coworking spaces. Our MVP was boiled down to the basics: we took the pain of collecting monthly membership dues out of our customers' hands. Version 0 was nothing more than a few manually configured Stripe subscriptions.&lt;/p&gt;

&lt;p&gt;What did we learn? Coworking operators are great communicators, and rarely great at balancing a budget. Collecting &lt;em&gt;all&lt;/em&gt; member payments on the same day of the month made it &lt;em&gt;far&lt;/em&gt; easier for them to budget, track growth, and plan for the future. We spent the next year building a product that made it easy for them to onboard new members immediately, and to start their recurring payments on the first of the month.&lt;/p&gt;

&lt;p&gt;(Side note: this is a trivial problem in 2025, but in 2017 it was on us to figure it out. Timing &lt;em&gt;really&lt;/em&gt; helped us!)&lt;/p&gt;

&lt;h3&gt;
  
  
  MVP for a service business
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://craftwork.com" rel="noopener noreferrer"&gt;Craftwork's&lt;/a&gt; MVP boiled down to a simple question: will people hire a painting service online? We tested this with a landing page and a typeform -- and spent a month painting houses &lt;em&gt;at-cost&lt;/em&gt; for friends and family.&lt;/p&gt;

&lt;p&gt;The amount we learned from that experience was worth the cost of the paint, and helped guide the way we hire paint crews (which has since changed several times), and how we price our services (which has also changed several times).&lt;/p&gt;

&lt;p&gt;We focused exclusively on residential repaints for homeowners (not renters, not businesses, not commercial buildings). In doing so, we became very familiar with what our competition was lacking - a focus on considered homeowner experience, pricing transparency, and a commitment to quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  The value of embarrassment
&lt;/h2&gt;

&lt;p&gt;In both of these cases, we were able to steer product development based on what we learned.&lt;/p&gt;

&lt;p&gt;For smpl, an initial focus on member onboarding and billing brought much more value than building out a tiny social network for community members of a given coworking space.&lt;/p&gt;

&lt;p&gt;For Craftwork, we learned that price transparency &lt;em&gt;alone&lt;/em&gt; wasn't enough to win over skeptical homeowners -- trust is earned through thoughtful communication, and a self-serve price quote wasn't enough to get people to slap the &lt;code&gt;Buy&lt;/code&gt; button. We pivoted to a more consultative approach, and focused on building trust through a more personalized service. This also meant dropping our self-serve estimate form in favor of a literal contact form... can you imagine the time we'd have saved with a smaller MVP?&lt;/p&gt;

&lt;h2&gt;
  
  
  Your challenge
&lt;/h2&gt;

&lt;p&gt;If you're designing an MVP, take a step back.&lt;/p&gt;

&lt;p&gt;What's the absolute minimum you could build to test your idea?&lt;/p&gt;

&lt;p&gt;Is it &lt;strong&gt;actually&lt;/strong&gt; testing your idea? If there's no outcome from your MVP that will cause you to change course, you're doing it wrong.&lt;/p&gt;

&lt;p&gt;Is your MVP &lt;strong&gt;actually&lt;/strong&gt; as minimal as it can be? If you're not sure, ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is there a way to test this without spending money?&lt;/li&gt;
&lt;li&gt;Is there a way to test this while spending less time?&lt;/li&gt;
&lt;li&gt;Is there a way to test this while using fewer resources?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can't answer yes to all of these questions, you're probably over-engineering your MVP.&lt;/p&gt;

&lt;p&gt;Launch something so minimal it makes you uncomfortable. You can always build more, but you can't recover wasted time building features nobody wants.&lt;/p&gt;

&lt;p&gt;Do more with less - you'll be glad you did.&lt;/p&gt;




&lt;h2&gt;
  
  
  Some resources to help you build less
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://amzn.to/41uVYEI" rel="noopener noreferrer"&gt;The Mom Test&lt;/a&gt;&lt;/strong&gt; - From author Rob Fitzpatrick, on how to listen to potential customers without misleading yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://amzn.to/41I5PZ1" rel="noopener noreferrer"&gt;The Lean Startup&lt;/a&gt;&lt;/strong&gt; - A legendary tome from Eric Ries, on how to build more with less. It's a book so good there are literal college courses built around it.&lt;/li&gt;
&lt;li&gt;This video from &lt;a href="https://www.ycombinator.com/library/Io-how-to-build-an-mvp" rel="noopener noreferrer"&gt;Y Combinator on How to Build an MVP&lt;/a&gt; is a great primer on the topic, with some really useful examples of MVPs from cpmpanies you know.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What are you building right now that could launch with half the features? Drop a comment below and tell me what you'd cut first.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>development</category>
    </item>
    <item>
      <title>Design's Shakespearean Curse: Good UX Should Never Be Noticed</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/designs-shakespearean-curse-good-ux-should-never-be-noticed-12c3</link>
      <guid>https://forem.com/irreverentmike/designs-shakespearean-curse-good-ux-should-never-be-noticed-12c3</guid>
      <description>&lt;h2&gt;
  
  
  The Big Idea
&lt;/h2&gt;

&lt;p&gt;Look around you. Everything - your chair, doorknobs, light switches - was deliberately designed, yet you've probably never thought about most of it.&lt;/p&gt;

&lt;p&gt;Why? Because great design fades into invisibility.&lt;/p&gt;




&lt;p&gt;A well-crafted door handle never gets praised - it just works. But struggle with a door that needs instructions (why do "Push" signs exist?), and suddenly design screams for attention.&lt;/p&gt;

&lt;p&gt;What did you like about the last stairwell handrail you used? Probably... nothing, right?&lt;/p&gt;

&lt;p&gt;You've used hundreds without a second thought. But grab one that's too high or wide, and you'll notice immediately.&lt;/p&gt;

&lt;p&gt;This is the Shakespearean curse of UX: The better you do your job, the less anyone sees you did it at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where to Look for Invisible Design in Software
&lt;/h2&gt;

&lt;p&gt;This same principle defines great digital experiences. Here are three areas where invisible design matters most:&lt;/p&gt;

&lt;h3&gt;
  
  
  AI and Conversational Design
&lt;/h3&gt;

&lt;p&gt;Remember the first time you used ChatGPT? The interface was almost certainly not the thing that stood out - it was the quality of the answers you got. Nonetheless, the interface that surrounds any LLM you use has become a critical part of the experience.&lt;/p&gt;

&lt;p&gt;That's the pinnacle of conversational design: total invisibility.&lt;/p&gt;

&lt;p&gt;I spent a couple years working on Google Assistant in the pre-LLM times, when product teams would spend &lt;em&gt;countless&lt;/em&gt; hours trying to make a conversation with Assistant feel natural. It was a tall order, and it did not get there until Assistant entered a Bard-flavored chrysalis, and emerged a Gemini-powered Butterfly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traditional Interface Design
&lt;/h3&gt;

&lt;p&gt;Forms are invisible design's ultimate test. Nobody has ever hit "Submit" and felt a rush of joy -- but if you've ever been stuck on a page that &lt;em&gt;won't tell you what's wrong&lt;/em&gt;, my god will you notice.&lt;/p&gt;

&lt;p&gt;Ever gotten lost trying to find your account and routing numbers on your bank's website? There it is again - someone's design work, begging for attention.&lt;/p&gt;

&lt;h3&gt;
  
  
  Friction as a feature
&lt;/h3&gt;

&lt;p&gt;There &lt;em&gt;are&lt;/em&gt; cases where putting an obstacle or two between someone and their goal is a good thing.&lt;/p&gt;

&lt;p&gt;Your phone's alarm clock is a great example - if it's &lt;em&gt;too&lt;/em&gt; easy to dismiss a wake-up alarm, they're far less effective.&lt;/p&gt;

&lt;p&gt;Similarly - a confirmation / "are you sure?" dialog is a good thing when doing something destructive, irreversible, or executing a financial transaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Notice me, senpai
&lt;/h2&gt;

&lt;p&gt;If good design is invisible, how the heck do you get better at it?&lt;/p&gt;

&lt;p&gt;As a designer, this becomes your burden: start paying attention to what you're &lt;em&gt;not&lt;/em&gt; noticing. What apps/tools/processes have been so smooth you barely had to think?&lt;/p&gt;

&lt;p&gt;Study interfaces that fade away. Analyze forms you completed without cursing. Notice apps you use daily but couldn't describe if asked.&lt;/p&gt;

&lt;p&gt;You don't always need to make people say "wow" - and to be perfectly honest, if that's where you're &lt;em&gt;starting&lt;/em&gt; from, I'd be worried.&lt;/p&gt;

&lt;p&gt;Your best work will never get the praise it deserves because, if done right, no one will know you did anything at all.&lt;/p&gt;

&lt;p&gt;That's the beautiful curse of great design.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tiny acts of Rebellion
&lt;/h2&gt;

&lt;p&gt;Current events got you down? Me too.&lt;/p&gt;

&lt;p&gt;Here's your reminder that unseen actions leave visible scars.&lt;/p&gt;

&lt;p&gt;🎯 Target execs recently showed off their liquid spines by axing DEI programs, which resulted in a &lt;a href="https://finance.yahoo.com/news/target-put-dei-chopping-block-182500865.html" rel="noopener noreferrer"&gt;dramatic drop in store traffic&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Meanwhile, 98% of Costco shareholders confidently &lt;a href="https://www.axios.com/2025/01/23/costco-dei-shareholders-reject-anti-diversity-proposal" rel="noopener noreferrer"&gt;voted to &lt;em&gt;preserve&lt;/em&gt; their DEI initiatives&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There's no gambling required to predict which company's Q1 earnings report will tell the better story.&lt;/p&gt;

&lt;p&gt;Often the most powerful design choices are the ones nobody sees happening - until the results become impossible to ignore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fill your brain with design
&lt;/h2&gt;

&lt;p&gt;If this resonates with you, here's some resources you'll appreciate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://amzn.to/43b4R8E" rel="noopener noreferrer"&gt;The Design of Everyday Things&lt;/a&gt; by Don Norman is &lt;em&gt;the&lt;/em&gt; book on this topic. Can't recommend it enough.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I rewatch &lt;a href="https://www.youtube.com/watch?v=fWivXkQpO2Q" rel="noopener noreferrer"&gt;Do the Most Good&lt;/a&gt;, a talk from legendary designer &lt;a href="https://www.minamarkham.com/" rel="noopener noreferrer"&gt;Mina Markham&lt;/a&gt; about once a year. Mina is an icon, and her wisdom is worth learning from.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until next time - give 'em hell.&lt;br&gt;
Mike&lt;/p&gt;

</description>
      <category>ux</category>
      <category>design</category>
      <category>product</category>
    </item>
    <item>
      <title>AI is your intern (not your boss)</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 18 Feb 2025 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/ai-is-your-intern-not-your-boss-1m69</link>
      <guid>https://forem.com/irreverentmike/ai-is-your-intern-not-your-boss-1m69</guid>
      <description>&lt;h2&gt;
  
  
  The Big Idea
&lt;/h2&gt;

&lt;p&gt;LLM tools like ChatGPT, Copilot, and Cursor are great at helping you build, but they are a second brain - not a first one. Used well, they are an intern that speeds up your work. Used poorly, they are a liability. The trick? Give them context, direction, and oversight.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.paddle.com/resources/mobile-app-monetization-guide?utm_medium=website&amp;amp;utm_source=partner&amp;amp;utm_campaign=core_conversions_fy2025_web_monetization_brand_awareness&amp;amp;utm_content=tiny-improvements" rel="noopener noreferrer"&gt;&lt;br&gt;
  Brought to you by Paddle&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  AI Works Best When You Steer It
&lt;/h3&gt;

&lt;p&gt;Most AI tools (Cursor, GitHub Copilot, ChatGPT) aren't great at figuring everything out on their own. They do best when you provide them with context. Although this guide is focused on software development with Cursor, the same principles apply to other tools and domains.&lt;/p&gt;

&lt;p&gt;I have found that the best way to use LLMs is to treat them like an intern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tell them the goal. Spell out what you're building.&lt;/li&gt;
&lt;li&gt;Give them the pieces. Feed them relevant files, not just one at a time.&lt;/li&gt;
&lt;li&gt;Make a checklist. Break the work into steps you can track.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here's an example of a recent set of instructions I gave to Cursor, while working on a new feature for Craftwork:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;take a look at @timesheets_spec.rb - I need to produce an updated version of our timesheets API under the v2 namespace. It should use all of the same patterns as the other endpoints in @v2 do, and should use a new controller namespaced under api::v2 at `controllers/api/v2/timesheets_controller.rb`.

It needs a list view that can be filtered by a craftworker's id, by timesheet state (approved/inprogress/etc), and by production lead id.

The show view should return details for a single timesheet.

The update view should allow me to approve a timesheet, edit values, etc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That was enough to get me started working with Cursor, and it helped orient the LLM while building out the new feature. It had enough context for me to ask questions as I worked, and sped things up nicely.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI Will Get It Wrong (And That's Fine)
&lt;/h3&gt;

&lt;p&gt;For any instructions you give 'em, LLMs will &lt;a href="https://mikebifulco.com/posts/product-marketing-defy-expectations" rel="noopener noreferrer"&gt;confidently spit out answers&lt;/a&gt;, regardless of how correct they are.&lt;/p&gt;

&lt;p&gt;If you don't understand what they're doing, you're trusting a bad intern to run your company.&lt;/p&gt;

&lt;p&gt;That's why you need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spot bad logic. If something seems off, it probably is.&lt;/li&gt;
&lt;li&gt;Debug iteratively. AI is great for refactoring—ask it to explain itself.&lt;/li&gt;
&lt;li&gt;Know when to take over. Sometimes, the best fix is writing the code yourself.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the case of the Craftwork timesheets, I was able to spot a few issues, and after making some changes, steered the LLM to the right path (my typoes included -- LLMs actually deal with these really well!):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;great, now can you llook at the controller and add any helpful missing scopes? You may want to peek at other controllers in the @v2 folder, as well as @timesheets_controller.rb

Alsothe .d.ts type definition declarations you made arne't needed - see @tsconfig.json and @javascript - they're likely in another folder already configured with typescript paths. If the components don't exist they'll need to be created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you've ever onboarded a new teammate to a codebase, this kind of steering is not at all uncommon - you're helping them understand the codebase, and the context of the changes they're making.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tests Are More Important Than Ever
&lt;/h3&gt;

&lt;p&gt;If you're letting AI write code, you better be &lt;em&gt;damn sure&lt;/em&gt; it works as expected. That means writing great tests before shipping anything.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Test like a skeptic. Assume AI-generated code is flawed.&lt;/li&gt;
&lt;li&gt;Write failure cases. If AI wrote the function, you should write the test.&lt;/li&gt;
&lt;li&gt;Use AI to help debug. It's great at explaining why tests fail (sometimes).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Bottom Line
&lt;/h2&gt;

&lt;p&gt;AI is a force multiplier - but only if you use it right. Treat it like an intern:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give it structure.&lt;/li&gt;
&lt;li&gt;Question everything.&lt;/li&gt;
&lt;li&gt;Make sure the work holds up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most importantly, remember that your great, big, juicy brain still need to do some work. Don't blindly trust the output of your copilot-of-choice - that's a hell of a lot to ask of an intern.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tests? What tests?
&lt;/h2&gt;

&lt;p&gt;Most of us (hello, yes, me included) aren't great at writing tests -- but writing software tests is a skillset that is absolutely worth investing in. Here's some resources I've found helpful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;(React) &lt;a href="https://testing-library.com/" rel="noopener noreferrer"&gt;Testing Library&lt;/a&gt; provides documentation and set of tools for testing web applications, in a variety of frameworks. Whether you're a fan of react or svelte or vue or solidjs, this is a great resource.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One of my favorite things about building with Ruby on Rails is the framework's first-class support for great testing. There are &lt;em&gt;so&lt;/em&gt; many thoughtful features for writing great tests for rails apps. Even if you're not a rails developer, it's worth giving their docs a look: &lt;a href="https://guides.rubyonrails.org/testing.html" rel="noopener noreferrer"&gt;Rails Testing Guide&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Thinking about automation
&lt;/h2&gt;

&lt;p&gt;I've spent a bunch of time working on small scripts to automate manual tasks lately - and I'm working on a couple quick video tutorial showing how you might use tools like Puppeteer, Faker, Skyvern and your copilot-of-choice to get things done more quickly than ever before.&lt;/p&gt;

&lt;p&gt;If that sounds interesting, go chase me down on youtube at &lt;a href="https://www.youtube.com/@mikebifulco?sub_confirmation=1" rel="noopener noreferrer"&gt;@mikebifulco&lt;/a&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Subscribe to 💌 Tiny improvements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;This is a cross-posted version of my weekly newsletter for product builders and founders, &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;💌 &lt;em&gt;Tiny Improvements&lt;/em&gt;&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm Mike Bifulco, CTO and cofounder of Craftwork (YC S23), 3x startup founder and former Google, Stripe, and Microsoft engineer.&lt;/p&gt;

&lt;p&gt;If you're interested in building a startup or the Indiehacker life, I'd love to hear from you! Drop me a comment below and tell me what you're working on.&lt;/p&gt;

&lt;p&gt;Don't miss the next dispatch: &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Get Tiny Improvements&lt;/a&gt; sent directly to your inbox each week. It's free!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>devops</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I (Think I) Talk to AI</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 11 Feb 2025 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/how-i-think-i-talk-to-ai-1c74</link>
      <guid>https://forem.com/irreverentmike/how-i-think-i-talk-to-ai-1c74</guid>
      <description>&lt;h2&gt;
  
  
  The Big Idea
&lt;/h2&gt;

&lt;p&gt;Talking to AI is a lot like talking to people... except for all the ways that it isn't. It's a skill worth honing, and not a replacement for thinking.&lt;/p&gt;




&lt;p&gt;From 2020 to 2022, I worked at Google.&lt;/p&gt;

&lt;p&gt;I was on the Google Assistant team, in an era where "hey alexa" and "hey google" weren't new ideas. ChatGPT had not been released yet, and in general, the public was not aware of AI; "LLM" was far from a household term.&lt;/p&gt;

&lt;p&gt;Funny enough, the dev product that my team was promoting was called "conversational actions" -- back then, "conversations" were predetermined - whether you realized it or not, you were following a scripted series of questions, and Google Assistant was a clever way to trigger actions.&lt;/p&gt;

&lt;p&gt;In that time before LLMs took over, I noticed a funny pattern: people would talk to their assistant &lt;em&gt;like&lt;/em&gt; a robot. They'd slow down, speak in weird, clipped phrases, almost like they were trying to sound like the assistant itself. It reminded me of how people adjust their speech when talking to someone who doesn't speak their language.&lt;/p&gt;

&lt;p&gt;Fast forward to today: people are speaking to LLMs much more naturally. &lt;em&gt;Conversations&lt;/em&gt; with AI feel more convincing, but the reality is that the LLM is still just a tool. It's up to you to do the thinking.&lt;/p&gt;

&lt;p&gt;Of course, LLMs are getting better all the time, and the tools will continue to get better. There's still a real skill in knowing &lt;em&gt;how&lt;/em&gt; to talk to your LLM. Done well, it can be a powerful extension of your thinking. Done poorly, it's a waste of time.&lt;/p&gt;

&lt;p&gt;After a bit of reflection, here's the pattern I've adopted for working with AI tools:&lt;/p&gt;




&lt;h2&gt;
  
  
  Provide Context (More is Better)
&lt;/h2&gt;

&lt;p&gt;Once upon a time — like, two years ago — LLMs had tiny context windows. They were only able to process a few paragraphs of information at a time. Now there's &lt;em&gt;loads&lt;/em&gt; more headroom. Most modern models can handle essays, transcripts, full articles, and more. The more context you provide, the better the results.&lt;/p&gt;

&lt;p&gt;Here's how I set mine up for success:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tell it who you are.&lt;/strong&gt; Your background, goals, and what expertise you expect from it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Define the task.&lt;/strong&gt; Are you brainstorming? Writing? Editing? Summarizing?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Give it sources.&lt;/strong&gt; If it can read the web, provide links. Otherwise, copy/paste key quotes or references.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set guardrails.&lt;/strong&gt; Be explicit about what you &lt;em&gt;do&lt;/em&gt; and &lt;em&gt;don't&lt;/em&gt; want. Examples:

&lt;ul&gt;
&lt;li&gt;"Be concise."&lt;/li&gt;
&lt;li&gt;"Avoid jargon."&lt;/li&gt;
&lt;li&gt;"Don't mention XYZ."&lt;/li&gt;
&lt;li&gt;"Your audience is nontechnical."&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  Iterate and Customize
&lt;/h2&gt;

&lt;p&gt;You'll get better results if you tweak your prompts while working, and you should save what works, and refine it over time.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Save what works.&lt;/strong&gt; If you get a great response, refine it into a reusable prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use different prompts for different goals.&lt;/strong&gt; You wouldn't write a social post the same way as an executive summary. You may want to have separate prompts for copywriting for social media, writing execustive summaries, or brainstorming on SEO keywords, for example.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Redo / Retry / Resubmit.&lt;/strong&gt; LLMs aren't deterministic: if you submit the same set of instructions multiple times, you'll get different results. If it misses the mark, tweak the input and try again.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think it's also a good idea to regularly try different models and tools - what does Claude do better than Gemini? You'll never know if you don't experiment with the tools. Don't get lazy, and don't blind yourself to what's out there - it's all changing very quickly right now.&lt;/p&gt;




&lt;h2&gt;
  
  
  Don't Get Lazy
&lt;/h2&gt;

&lt;p&gt;An LLM is a tool — not a replacement for thinking.&lt;/p&gt;

&lt;p&gt;I'll admit, I go into a bit of an existential spiral when I think about the future of communication - do we want to winnow down our existence to LLMs talking to each other? I certainly hope not. All the same, these tools are really useful for brainstorming, editing, and revising your writing, and they're not going away.&lt;/p&gt;

&lt;p&gt;You're still the expert (ideally). It's your job to check facts, refine tone, and ensure the final product &lt;em&gt;sounds like you&lt;/em&gt;. In my opinion, a big part of that work means that you should treat your LLMs like an assistant, not a crutch.&lt;/p&gt;

&lt;p&gt;Edit the output - make it sound like you!&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;More context = better output.&lt;/li&gt;
&lt;li&gt;Experiment, tweak, and refine your prompts.&lt;/li&gt;
&lt;li&gt;Never stop thinking —  you're still the one with the expertise.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Your inbox shouldn't slow you down.
&lt;/h2&gt;

&lt;p&gt;Superhuman's AI-powered features—Instant Summarize, Smart Replies, and Ask AI—help you fly through email, reclaiming at least 4 hours every week.&lt;/p&gt;

&lt;p&gt;That's 4 extra hours to build, think, and focus on what actually matters.&lt;/p&gt;

&lt;p&gt;📩 &lt;strong&gt;Tiny Improvements readers get their &lt;a href="https://superhuman.com/ti?utm_medium=sponsor-callout&amp;amp;utm_source=mikebifulco-com" rel="noopener noreferrer"&gt;first month free&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Stick these in your brain's context
&lt;/h2&gt;

&lt;p&gt;I'm a firm believer that we should always be learning. Don't rely on AI to do all your thinking. Here's a couple things I found this week that you might enjoy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=1vJsWKg2o1w" rel="noopener noreferrer"&gt;Ranking Paradoxes&lt;/a&gt; is a YouTube video from Chalk Talk, which goes discusses the complexity and counterintuitivity of philosophical and mathematical paradoxes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I'm still very much into 3D printing nerdery - and this recent video from Make Anything on &lt;a href="https://www.youtube.com/watch?v=zmZCA9jqGiI" rel="noopener noreferrer"&gt;multi-texture prints&lt;/a&gt; shares a really cool new technique for making prints more visually interesting.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Subscribe to 💌 Tiny improvements
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;This is a cross-posted version of my weekly newsletter for product builders and founders, &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;💌 &lt;em&gt;Tiny Improvements&lt;/em&gt;&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm Mike Bifulco, CTO and cofounder of Craftwork (YC S23), 3x startup founder and former Google, Stripe, and Microsoft engineer.&lt;/p&gt;

&lt;p&gt;If you're interested in building a startup or the Indiehacker life, I'd love to hear from you! Drop me a comment below and tell me what you're working on.&lt;/p&gt;

&lt;p&gt;Don't miss the next dispatch: &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Get Tiny Improvements&lt;/a&gt; sent directly to your inbox each week. It's free!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>ai</category>
      <category>devops</category>
    </item>
    <item>
      <title>Open Sourcing my Design System</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 25 Jun 2024 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/open-sourcing-my-design-system-16nn</link>
      <guid>https://forem.com/irreverentmike/open-sourcing-my-design-system-16nn</guid>
      <description>&lt;h2&gt;
  
  
  Open Sourcing My Design System
&lt;/h2&gt;

&lt;p&gt;I'm open sourcing the Figma file I use to design and create images for my personal site.&lt;/p&gt;

&lt;p&gt;It's right here, ready for you to explore: &lt;a href="https://www.figma.com/design/On4yRGLcYLORVBIhBejboA/mikebifulco.com?node-id=0-2431&amp;amp;t=XlKb5D0viU7DPV4T-1" rel="noopener noreferrer"&gt;mikebifulco.com Design System&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This giant file contains almost all the images I've ever published on &lt;a href="https://mikebifulco.com" rel="noopener noreferrer"&gt;mikebifulco.com&lt;/a&gt;, meticulously organized and ready for you to explore.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Inside?
&lt;/h2&gt;

&lt;p&gt;First off, what's in the Figma file? Here's the rundown:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Brand Assets:&lt;/strong&gt; Logos, lockups, and even mockups for email components like ad placements and CTAs&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Full Articles:&lt;/strong&gt; Header and body images for tutorials, essays, and other long-form content&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Newsletters:&lt;/strong&gt; Every image for every one of my newsletters, including the one you're reading right now&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Videos:&lt;/strong&gt; Thumbnails for all my videos&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6170af7k1bb1o3v469ya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6170af7k1bb1o3v469ya.png" alt="The pages of the Figma file, showing brand assets, full articles, newsletters, and videos" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The images I use go a long way in helping me communicate my ideas, and in getting people to click through to my articles. I take the time to create a unique Open Graph Header image for every article I write, so that each one stands out on social media.&lt;/p&gt;

&lt;p&gt;I've spent a lot of time over the years organizing, refining, and refining this system, and I'm excited to share it with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Open Source This?
&lt;/h2&gt;

&lt;p&gt;The point of open-sourcing this Figma file is simple: there's nothing magical here. I'm not doing anything you can't do. Heck, the source code for the rest of my site is publicly viewable as well on github (&lt;a href="https://github.com/mbifulco/blog" rel="noopener noreferrer"&gt;mbifulco/blog&lt;/a&gt;), so this is a perfect pairing.&lt;/p&gt;

&lt;p&gt;Having a system like this helps every article I write stand out a bit more. And I hope it can help you too.&lt;/p&gt;

&lt;h3&gt;
  
  
  A Tool for Efficiency
&lt;/h3&gt;

&lt;p&gt;One of the biggest advantages of having everything organized in Figma is that it makes publishing easy. I've created a toolkit for myself that minimizes decision fatigue.&lt;/p&gt;

&lt;p&gt;Need a header image for a new article? There's a template for that. Newsletter? Ditto. This means I can publish content faster without getting bogged down by the details every single time.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay Organized
&lt;/h3&gt;

&lt;p&gt;This file keeps me organized. If I need to add, remove, or edit anything in the future, I can come back to this file and do it seamlessly. No more hunting around for that one logo or header image from two years ago.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opportunity for more
&lt;/h3&gt;

&lt;p&gt;My hope is that by sharing this publicly, I'll be keeping myself accountable. This figma file is the foundation of what will eventually become a full-blown design system.&lt;/p&gt;

&lt;p&gt;If you've dabbled in design systems before, you'll notice It's missing some critical pieces, like specific color selections and layout mockups, but hey, it's a work in progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Epiphany
&lt;/h2&gt;

&lt;p&gt;Last week, I hit a milestone: nearly 70 published newsletters and 60 full articles. That's when it hit me—sharing this file might inspire you to create your own system. So here it is, for you to poke around and hopefully find some inspiration.&lt;/p&gt;

&lt;p&gt;Check out the Figma file here: &lt;a href="https://www.figma.com/design/On4yRGLcYLORVBIhBejboA/mikebifulco.com?node-id=0-2431&amp;amp;t=XlKb5D0viU7DPV4T-1" rel="noopener noreferrer"&gt;mikebifulco.com Design System&lt;/a&gt;. Explore it, use it, heck, feel free to model your own after it.&lt;/p&gt;

&lt;p&gt;And as always, let me know what you think - hit reply and let me know if you have any questions or feedback.&lt;/p&gt;




&lt;h2&gt;
  
  
  Tiny Improvements
&lt;/h2&gt;

&lt;p&gt;This post comes from my weekly newsletter for startup founders, indiehackers, and product builders, called 💌 Tiny Improvements. It's one small improvement shared each week, straight from my brainmeat to your inbox. &lt;/p&gt;

&lt;p&gt;If you enjoyed this, &lt;a href="https://newsletter.mikebifulco.com" rel="noopener noreferrer"&gt;I'd love it if you considered subscribing&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>design</category>
      <category>ux</category>
      <category>frontend</category>
    </item>
    <item>
      <title>The Decoy Effect: More options for an easier choice</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 07 Nov 2023 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/the-decoy-effect-more-options-for-an-easier-choice-3m22</link>
      <guid>https://forem.com/irreverentmike/the-decoy-effect-more-options-for-an-easier-choice-3m22</guid>
      <description>&lt;p&gt;Last week, Apple had a press event where they announced updates to their Macbook Pro laptops. They're better, faster, and more power efficient than ever - no surprises there. Since apple started delivering devices that use their proprietary processors, they have been leading the pack in terms of performance and efficiency.&lt;/p&gt;

&lt;p&gt;Their computers are exceptional devices, and great for people who want to get work done. But they are also expensive. The new Macbook Pro starts at $1,599, and can go up to a &lt;em&gt;startling&lt;/em&gt; $6,899. That's a lot of money for a laptop.&lt;/p&gt;

&lt;p&gt;Generally speaking, if you're looking at a Macbook, you're not also looking at a Dell or a Lenovo. This puts apple in an interesting position: when someone is looking to buy a Macbook, they are not comparing it to other companies' products. They are comparing it to other Macbooks.&lt;/p&gt;

&lt;p&gt;So, if you've convinced yourself that it's time to buy a new Macbook Pro, you'll find yourself looking at this page:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2trddv7bdiklj79nnhw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2trddv7bdiklj79nnhw.jpg" alt="Screenshot of the Macbook Pro pricing page on apple.com" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You're given 3 options: the entry level MBP for $1599, a mid-tier build for $1799, and a high-end build for $1999.&lt;/p&gt;

&lt;p&gt;Which one would you choose?&lt;/p&gt;

&lt;h2&gt;
  
  
  Three options, but only two choices
&lt;/h2&gt;

&lt;p&gt;If you're shopping on a tight budget, the entry level model might be a no brainer. But if you've got some room to breathe, you might be tempted to go for the mid-tier configuration. It's only $200 more, and you get twice as much storage.&lt;/p&gt;

&lt;p&gt;But then... what about the high-end model? For a mere $200 more, you get a more CPU &lt;em&gt;and&lt;/em&gt; GPU cores, more than twice as much memory (8GB-&amp;gt;18GB), and faster USB ports. Storage does go back down to 512GB, buuuut you can upgrade that, too, if you really want to.&lt;/p&gt;

&lt;p&gt;It's a &lt;em&gt;slippery&lt;/em&gt; slope. I'm willing to bet Apple sells far more of the top-tier configuration than the mid-tier one.&lt;/p&gt;

&lt;h3&gt;
  
  
  This is the Decoy Effect.
&lt;/h3&gt;

&lt;p&gt;The Decoy Effect is a cognitive bias that causes people to have a strong preference between two options, when presented with a third option that is inferior to one of the original options.&lt;/p&gt;

&lt;p&gt;Wikipedia explains it like this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;The decoy effect&lt;/strong&gt; is the phenomenon whereby consumers will tend to have a specific change in preference between two options when also presented with a third option that is asymmetrically dominated. An option is asymmetrically dominated when it is inferior in all respects to one option; but, in comparison to the other option, it is inferior in some respects and superior in others.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In practice, this means that when presented with two options, buyers have a hard time choosing between them. But if presented with a carefully crafted third option, the decision becomes much easier.&lt;/p&gt;

&lt;p&gt;For real: giving your customers &lt;strong&gt;more choice&lt;/strong&gt; makes it &lt;strong&gt;easier&lt;/strong&gt; for them to make a decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Economist's pricing experiment
&lt;/h2&gt;

&lt;p&gt;Perhaps the most famous example of this is from The Economist. In 2009, they ran an experiment where they offered two subscription options:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmigyyu3jf1hymsyg930p.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmigyyu3jf1hymsyg930p.jpg" alt="Two options from the Economist" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this case:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;68% of people chose the web-only option&lt;/li&gt;
&lt;li&gt;and 32% chose the more expensive web + print option.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, they ran a second experiment, where they added a third option:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6k9s0365mp56b61j169b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6k9s0365mp56b61j169b.jpg" alt="Three options: web only for $59, print only for $125, or web + print for $125" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With a third option added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;16% of people chose the web-only option&lt;/li&gt;
&lt;li&gt;0% chose the print-only option&lt;/li&gt;
&lt;li&gt;84% chose the web + print option.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, offering a third (clearly inferior) option &lt;em&gt;increased&lt;/em&gt; sales of the top tier dramatically.&lt;/p&gt;

&lt;h3&gt;
  
  
  The lesson: product tiers are powerful
&lt;/h3&gt;

&lt;p&gt;This is why almost every SaaS company has multiple product tiers. It's not just to make more money (although that's a nice side effect). Not only do product tiers make it easier to drive more revenue, they also make it easier for your customers to make a decision.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That's &lt;em&gt;wildly&lt;/em&gt; powerful stuff.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, for all my friends out there building products to sell to other people: don't undermine yourself by offering a single product tier. Give your customers options, and make it easy for them to choose.&lt;/p&gt;




&lt;h2&gt;
  
  
  More on the Decoy Effect and Behavioral Economics
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The Decision Lab has a great article called &lt;a href="https://thedecisionlab.com/biases/decoy-effect" rel="noopener noreferrer"&gt;The Decoy Effect, explained&lt;/a&gt; which dives further into the psychology that drives consumers to make decisions this way.&lt;/li&gt;
&lt;li&gt;When you're ready to put together a pricing table to present to your customers, Stripe's &lt;a href="https://stripe.com/docs/payments/checkout/pricing-table" rel="noopener noreferrer"&gt;Pricing Tables&lt;/a&gt; feature makes it effortless to create a beautiful, effective pricing table. In fact, I used them to mock up screenshots for the economist example above!&lt;/li&gt;
&lt;li&gt;If you're looking for a primer on Behavioral Economics, you can't beat &lt;a href="https://www.amazon.com/Predictably-Irrational-audiobook/dp/B0014EAHNQ/?&amp;amp;_encoding=UTF8&amp;amp;tag=irreverentm04-20&amp;amp;linkCode=ur2&amp;amp;linkId=d8f5a50920edf15e85fc0ba646ea0642&amp;amp;camp=1789&amp;amp;creative=9325" rel="noopener noreferrer"&gt;Predictably Irrational&lt;/a&gt;, by Dan Ariely.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💌 From the Tiny Improvements Mailbag
&lt;/h2&gt;

&lt;p&gt;Last week, I asked you to send me the projects that &lt;em&gt;you're&lt;/em&gt; working on. Here are a couple of the responses I got:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aaron Dodge is working on a &lt;a href="https://www.aarondodge.com/" rel="noopener noreferrer"&gt;relaunch of his website&lt;/a&gt;. If you're looking for expertise in building a presence on social media, Aaron is your guy.&lt;/li&gt;
&lt;li&gt;My friends at Swishjam have pivoted their business to focus on building a "&lt;a href="https://swishjam.com/" rel="noopener noreferrer"&gt;better way to unify your customers' data and get meaningful insights&lt;/a&gt;". It looks promising, and is Open Source, too!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Even more of you replied to let me know that you're working on something, but you're not quite ready to share it yet. I can't say it enough: share your work &lt;a href="https://mikebifulco.com/newsletter/no-right-way-to-do-it" rel="noopener noreferrer"&gt;early&lt;/a&gt; and &lt;a href="https://mikebifulco.com/newsletter/how-to-know-when-to-publish-your-work" rel="noopener noreferrer"&gt;often&lt;/a&gt;. It's the best way to get feedback, to build and audience, and to validate what you're doing.&lt;/p&gt;

&lt;p&gt;I'd love to keep featuring your projects in this newsletter. If you're working on something, [hit reply](mailto:&lt;a href="mailto:hello@mikebifulco.com"&gt;hello@mikebifulco.com&lt;/a&gt;] and let me know about it!&lt;/p&gt;




&lt;p&gt;As for me, I just got back from an incredible 2-week vacation to Vietnam and Japan. I have &lt;em&gt;never&lt;/em&gt; taken 2 weeks off of work before, and I can't tell you how grateful I am to my team at &lt;a href="https://craftwork.com" rel="noopener noreferrer"&gt;Craftwork&lt;/a&gt; for making it possible. I am &lt;em&gt;beyond&lt;/em&gt; lucky to work with such an incredible group of people.&lt;/p&gt;

&lt;p&gt;I took a ton of pictures during my trip with my trusty Fujifilm x100v. I've been sharing some of them over on &lt;a href="https://threads.net/@irreverentmike" rel="noopener noreferrer"&gt;Threads (@irreverentmike)&lt;/a&gt;:&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
      &lt;div class="c-embed__cover"&gt;
        &lt;a href="https://www.threads.net/@irreverentmike/post/CzRzZEqvrFA" class="c-link s:max-w-50 align-middle" rel="noopener noreferrer"&gt;
          &lt;img alt="" src="https://res.cloudinary.com/practicaldev/image/fetch/s--7D8ZKOhU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://scontent.cdninstagram.com/v/t51.29350-15/397217942_1019133412499124_1759811155168854871_n.jpg%3Fstp%3Ddst-jpg_e35%26efg%3DeyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDk2MC5zZHIuZjI5MzUwIn0%26_nc_ht%3Dscontent.cdninstagram.com%26_nc_cat%3D100%26_nc_ohc%3DVC_VpIxYptgQ7kNvgHdD0Es%26edm%3DAPs17CUBAAAA%26ccb%3D7-5%26ig_cache_key%3DMzIyOTU4ODQzMTE3MjQ0ODU3Ng%253D%253D.2-ccb7-5%26oh%3D00_AYAIxS3PzCeXYemJfeGONUsTh9KLAj3B4sQUemoZ-ZWjfA%26oe%3D66949B27%26_nc_sid%3D10d13b" height="" class="m-0" width=""&gt;
        &lt;/a&gt;
      &lt;/div&gt;
    &lt;div class="c-embed__body"&gt;
      &lt;h2 class="fs-xl lh-tight"&gt;
        &lt;a href="https://www.threads.net/@irreverentmike/post/CzRzZEqvrFA" rel="noopener noreferrer" class="c-link"&gt;
          @irreverentmike • Going through some of the photos I took on my x100v - I am really, really happy with how they cam... • Threads
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;p class="truncate-at-3"&gt;
          Going through some of the photos I took on my x100v - I am really, really happy with how they came out. It definitely makes me look more talented than I am 😂
        &lt;/p&gt;
      &lt;div class="color-secondary fs-s flex items-center"&gt;
          &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://res.cloudinary.com/practicaldev/image/fetch/s--p0Mjkhmk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://static.cdninstagram.com/rsrc.php/ye/r/lEu8iVizmNW.ico" width="48" height="48"&gt;
        threads.net
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;If you're on threads, hit me up and say hi!&lt;/p&gt;

&lt;p&gt;Until next time...&lt;br&gt;
Subscribe to &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;💌 Tiny Improvements&lt;/a&gt; &lt;/p&gt;

</description>
      <category>product</category>
      <category>ux</category>
      <category>startup</category>
    </item>
    <item>
      <title>Building in public: 400 subscriber milestone report for my newsletter</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 18 Apr 2023 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/building-in-public-400-subscriber-milestone-report-for-my-newsletter-45g2</link>
      <guid>https://forem.com/irreverentmike/building-in-public-400-subscriber-milestone-report-for-my-newsletter-45g2</guid>
      <description>&lt;h2&gt;
  
  
  Growing feels great
&lt;/h2&gt;

&lt;p&gt;It feels a little wild to say this, but I'm a few days away from hitting 400 Subscribers to my weekly newsletter, &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Tiny Improvements&lt;/a&gt;. I started writing to share my expertise with the world, and to try to pay forward some of my luck and privilege to anyone who might benefit from it.&lt;/p&gt;

&lt;p&gt;I've been writing about startups, building products, design, and React for a few years now, and it feels like the newsletter has really hit its stride lately.&lt;/p&gt;

&lt;p&gt;In the past 6 months, I've grown by 350%, and landed about half a dozen sponsored newsletters. It's been really encouraging to see people enjoying what I have to say - and I have gotten some amazing feedback along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The basics: what I've learned so far
&lt;/h2&gt;

&lt;p&gt;For my friends who may be interested in doing something like this, here's my advice: write on a dependable, regular cadence, publish your newsletters for SEO-driven growth, and don't be afraid to share your work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Growth comes in phases
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzfo44ykm5r2617rwo2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwzfo44ykm5r2617rwo2q.png" alt="a chart showing the growth of Tiny Improvements since its launch in May of 2020" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This chart shows a few important milestones in the story behind Tiny Improvements:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;0-34&lt;/strong&gt; readers: May 2020, when I first announced I was writing&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;34-50&lt;/strong&gt; readers: December 2020, months later, after I sent my second dispatch&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;88-143&lt;/strong&gt; readers: July - Nov 2022, I started writing weekly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;143-215&lt;/strong&gt; readers: November 9th - Dec 1 2022, I &lt;a href="https://mikebifulco.com/newsletter/leaving-stripe-going-viral" rel="noopener noreferrer"&gt;Got laid off from my Job @ Stripe, and went viral&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;215-215&lt;/strong&gt; readers: December 2022 - Jan 2023: Flatlined! Turns out I introduced a bug to my site that prevented anyone from subscribing. lol.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;215-394&lt;/strong&gt; readers: This brings us to today! Steady growth from steady writing, half a dozen sponsorships, and some promising deals coming my way.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What's next?
&lt;/h2&gt;

&lt;p&gt;I'll be writing more about my &lt;a href="https://mikebifulco.com/newsletter/building-a-startup-in-2023-90-day-report" rel="noopener noreferrer"&gt;experience as a founder&lt;/a&gt;, and sharing the lessons and challenges I will no-doubt run into as we grow. I've also got some ideas for short multi-segment posts/tutorials that I'd like to share, like more about &lt;a href="https://mikebifulco.com/tags/design" rel="noopener noreferrer"&gt;design for developers&lt;/a&gt;, and &lt;a href="https://mikebifulco.com/newsletter/unlock-productivity-with-networked-note-taking" rel="noopener noreferrer"&gt;networked note-taking&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Finally, on the business front, I'm hoping I'll be able to start working with sponsors who I think will really connect with my readers - I'm hoping to build relationships with some of the devtools companies which I really love, to see if there are opportunities to work together. I want to really come through for the people who have supported me (if you're reading this, that's you!), and I want to make sure that I'm only working with companies that I think will really benefit my readers.&lt;/p&gt;

&lt;p&gt;By the way - if you're interested in &lt;a href="https://mikebifulco.com/sponsor" rel="noopener noreferrer"&gt;sponsoring Tiny Improvements&lt;/a&gt;, let's talk!&lt;/p&gt;

&lt;p&gt;And of course, I'm looking forward to 400, and then 500 readers, and then anything to come after that!&lt;/p&gt;

&lt;h2&gt;
  
  
  You should probably subscribe to 💌 Tiny Improvements
&lt;/h2&gt;

&lt;p&gt;If you're interested in startups, building products, design, or React, I think you might really like &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;💌 Tiny Improvements&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>career</category>
      <category>learning</category>
    </item>
    <item>
      <title>Add custom fonts to Next.js sites with Tailwind using next/font</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Mon, 17 Apr 2023 14:51:36 +0000</pubDate>
      <link>https://forem.com/irreverentmike/add-custom-fonts-to-nextjs-sites-with-tailwind-using-nextfont-fgi</link>
      <guid>https://forem.com/irreverentmike/add-custom-fonts-to-nextjs-sites-with-tailwind-using-nextfont-fgi</guid>
      <description>&lt;h2&gt;
  
  
  Adding custom fonts to your website is a typical requirement for most web projects
&lt;/h2&gt;

&lt;p&gt;By default, Next.js sites will add small set of fonts that you can use for your sites (in addition to the default fonts for a given browser). That can be useful to get started quickly, but for most custom site designs, you'll need to add custom fonts and typefaces that fit your site's brand and design guidelines.&lt;/p&gt;

&lt;p&gt;In this tutorial, you'll learn how to &lt;strong&gt;add custom fonts to your Next.js site using the &lt;code&gt;next/font&lt;/code&gt; package and Tailwind CSS&lt;/strong&gt;. There's a few configuration steps needed to load fonts from Google Fonts using &lt;code&gt;next/font&lt;/code&gt;, generate CSS variables for each font, and then use those variables to create custom font families in your Tailwind config.&lt;/p&gt;

&lt;p&gt;With this setup, you'll be able to easily use your custom fonts throughout your Next.js app using Tailwind's utility classes.&lt;/p&gt;

&lt;h3&gt;
  
  
  SEO Benefits of using custom fonts correctly on your Next.js site
&lt;/h3&gt;

&lt;p&gt;In addition to improving the user experience, implementing custom fonts on your website can also have a &lt;a href="https://web.dev/patterns/web-vitals-patterns/fonts/" rel="noopener noreferrer"&gt;positive impact on your Lighthouse scores&lt;/a&gt; and SEO. However, it's important to implement custom fonts carefully to avoid performance issues. Using too many or too large font files can slow down your site's loading time and hurt your Lighthouse performance score. Additionally, using custom fonts in a way that affects the visual stability of the page can result in lower scores for Core Web Vitals, which can impact your SEO. So, it's important to strike a balance between using custom fonts to enhance the design and ensuring that they don't negatively impact performance or user experience.&lt;/p&gt;

&lt;h3&gt;
  
  
  About next/font
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/docs/api-reference/next/font" rel="noopener noreferrer"&gt;&lt;code&gt;next/font&lt;/code&gt; is an npm package&lt;/a&gt; developed by Vercel, which provides an easy way to load fonts in your Next.js app, while maintaing performance, and minimizing &lt;a href="https://web.dev/optimize-cls/" rel="noopener noreferrer"&gt;Cumulative Layout Shift (CLS)&lt;/a&gt;. It uses the Font Loading API to asynchronously load local font files stored in your repo, or from popular font providers such as Google Fonts, Typekit, and Fonts.com. The package also generates optimized font subsets to reduce the amount of data transferred over the network, and it provides a convenient way to generate CSS variables for each font, which can be used to create custom font families in your &lt;a href="https://tailwindcss.com/docs/configuration" rel="noopener noreferrer"&gt;Tailwind config&lt;/a&gt;. This makes it easy to use custom fonts throughout your Next.js app with minimal configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to: Add multiple custom fonts to your Next.js site with Tailwind CSS
&lt;/h2&gt;

&lt;p&gt;There are several ways to load custom fonts into your next.js app. If you're using a Google Fonts as your custom font provider, you can use the &lt;code&gt;next/font/google&lt;/code&gt; package to load fonts from Google Fonts. The process is slightly different for loading font files that are stored locally in your repo, but the basic steps are the same:&lt;/p&gt;

&lt;h3&gt;
  
  
  Load custom fonts from Google Fonts
&lt;/h3&gt;

&lt;p&gt;In &lt;code&gt;_app.jsx/tsx&lt;/code&gt;, load your the fonts you need from &lt;code&gt;next/font/google&lt;/code&gt;, but use the &lt;code&gt;variable&lt;/code&gt; configuration prop, which you will use to generate a definition for a CSS &lt;code&gt;--var&lt;/code&gt; for each font:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Barlow_Condensed&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Inter&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next/font/google&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;barlowCondensed&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Barlow_Condensed&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;700&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;subsets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;latin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--font-barlow-condensed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;inter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Inter&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;subsets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;latin&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--font-inter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Load custom fonts from a local file
&lt;/h3&gt;

&lt;p&gt;This next example shows how you would load a font from a local file. It also showcases another feature of the &lt;code&gt;next/fonts&lt;/code&gt; library - you can map font weights to different files as needed. This also applies for font &lt;em&gt;styles&lt;/em&gt; (italic, bold, etc).&lt;/p&gt;

&lt;p&gt;In &lt;code&gt;_app.jsx/tsx&lt;/code&gt;, load your the fonts you need from &lt;code&gt;next/font/local&lt;/code&gt; using the syntax below. Note that in this case, font files in my repo are also being hosted in &lt;code&gt;/public/fonts&lt;/code&gt; directory. Again, make sure to use the &lt;code&gt;variable&lt;/code&gt; configuration prop, which you will use to generate a definition for a CSS &lt;code&gt;--var&lt;/code&gt; for each font:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;localFont&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;next/font/local&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;grosa&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;localFont&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;src&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../public/fonts/Grosa/Grosa-Regular.woff2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;500&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;normal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../public/fonts/Grosa/Grosa-Medium.woff2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;600&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;normal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../../public/fonts/Grosa/Grosa-Bold.woff2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;700&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;normal&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--font-grosa&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  After loading custom fonts, generate CSS variables for each font
&lt;/h3&gt;

&lt;p&gt;Then, in that same &lt;code&gt;_app.tsx&lt;/code&gt; component - pass the generated variables into the wrapper class. This will make that variable available to any child of that element in the DOM (in other words, your whole app):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;MyApp&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;pageProps&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;
      &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;inter&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;barlowCondensed&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;grosa&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;variable&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Component&lt;/span&gt; &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;pageProps&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;main&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Behind the scenes, next is generates unique css classes for each font permutation. These classes do one thing: they define a &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties" rel="noopener noreferrer"&gt;css custom property&lt;/a&gt; (sometimes called a css variable) for each font.&lt;/p&gt;

&lt;p&gt;By adding the resulting CSS classes to the root of your Next.js app, these variables are made available to any child of the &lt;code&gt;App&lt;/code&gt; component - essentially all pages and components on your site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddaz4w5s77r5cbydoddy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddaz4w5s77r5cbydoddy.png" alt="screenshot of chrome browser tools showing the resulting CSS classes" width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
This is a screenshot from Chrome Browser tools for Craftwork.com, which is built using this setup&lt;/p&gt;
&lt;h3&gt;
  
  
  Use these variables your Tailwind config to create font families
&lt;/h3&gt;

&lt;p&gt;Up to this point, we've loaded our custom fonts into our Next.js app, and we've made those fonts available to our entire app using CSS variables. Now, we need to tell Tailwind how to use these variables, by assigning them to specific font-family classes.&lt;/p&gt;

&lt;p&gt;In your Tailwind config, add an entry to your &lt;code&gt;theme.extend&lt;/code&gt;, to create a new font family that uses the google fonts you just imported - that will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// tailwind.config.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;fontFamily&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;barlow-condensed&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;var(--font-barlow-condensed)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// note: you can call the left side of this whatever you want - barlow-bold or title-font or foo-bar, this is what you'll use in your Tailwind css classes to use this font&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;inter-medium&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;var(--font-inter)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// note: the bit that goes inside the var() function is the same variable name we defined in app.tsx&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, whenever you want to use the fonts you've added, ask for that font-family in your tailwind classnames by prefixing the font-family with "font-", like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myComponent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt; &lt;span class="na"&gt;className&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"font-barlow-condensed"&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    This should be rendered with the Barlow font family
  &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;myComponent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That should do the trick!&lt;/p&gt;

&lt;p&gt;If you're wondering where these steps came from, it is essentially a combination of the instructions provided in &lt;a href="https://nextjs.org/docs/basic-features/font-optimization" rel="noopener noreferrer"&gt;Next's docs for Font Optimization&lt;/a&gt;. My team is using this very configuration setup for our Next.js site on &lt;a href="https://craftwork.com" rel="noopener noreferrer"&gt;Craftwork.com&lt;/a&gt; to load custom fonts both locally and from Google Fonts, and it's been working great.&lt;/p&gt;

</description>
      <category>react</category>
      <category>nextjs</category>
      <category>tailwindcss</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Reflecting on my first 90 days building a startup as a technical cofounder</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 04 Apr 2023 14:42:13 +0000</pubDate>
      <link>https://forem.com/irreverentmike/reflecting-on-my-first-90-days-building-a-startupas-a-technical-cofounder-1m53</link>
      <guid>https://forem.com/irreverentmike/reflecting-on-my-first-90-days-building-a-startupas-a-technical-cofounder-1m53</guid>
      <description>&lt;p&gt;I've been working on a new startup.&lt;/p&gt;

&lt;p&gt;Last week, we (re)launched &lt;a href="https://craftwork.com" rel="noopener noreferrer"&gt;Craftwork.com&lt;/a&gt;, with a fresh design aesthetic and what I think is a really wonderful brand. We're building a tech-enabled home painting service, which is already making the process of getting your home painted easier and more delightful for our customers.&lt;/p&gt;

&lt;p&gt;We also published a press release written by my friend and co-founder Tim Griffin, Craftwork's CEO. You can read that here: &lt;a href="https://craftwork.com/articles/introduction" rel="noopener noreferrer"&gt;Introducing Craftwork&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I've written about building products and companies in the past few years as part of my work at Stripe and Google, and on my own site - but this is the first time I've been a technical co-founder since when we launched smpl in 2016. A lot has changed since then.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;A note for non-technical readers:&lt;/strong&gt; this post is going to be pretty tech-heavy. I'm going to talk about a lot of tools and technologies that I use to build products. If you're not a developer, you might not find this interesting. Rest assured I'll be writing about more of the design/business/philosophical side of things in the future.&lt;/p&gt;

&lt;p&gt;Thanks for being here - I love y'all!&lt;/p&gt;




&lt;p&gt;Launching a startup in 2023 - here's what feels different this time around:&lt;/p&gt;

&lt;h2&gt;
  
  
  The bar for design and branding is higher than ever
&lt;/h2&gt;

&lt;p&gt;I've always been a big believer in the importance of design and branding. I worked as a UXer for years, and even earned (most of) a Master's Degree in Human-Computer Interaction to deepen my understanding of design. I've written about it endlessly (&lt;a href="https://mikebifulco.com/tags/design" rel="noopener noreferrer"&gt;see articles tagged with #design on my site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In 2023, investing time and effort (and, let's be honest - money) into design and branding is fundamental to building a successful company. Whether we consciously realize it or not, it is easier to trust &lt;em&gt;something new&lt;/em&gt; if it looks and feels cohesive and professional. At Craftwork, we're asking customers to let us into their homes, and to trust us with their most valuable asset. Our brand and design language helps us build this critical trust with our customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation and tooling are the real 10x engineer
&lt;/h2&gt;

&lt;p&gt;I &lt;em&gt;love&lt;/em&gt; automating things. There's nothing better than writing a script that saves time for you and your teammates, and buys peace of mind. It's been astonishing to see how much better the tools for automation have gotten in the past few years.&lt;/p&gt;

&lt;p&gt;Critically, there's been enough time for &lt;em&gt;all&lt;/em&gt; of the automation tools to see competitors arise. This forces companies building tools to be innovative, and to keep raising the bar with their products. Here's a few choices I've found myself with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For &lt;strong&gt;dependency audits&lt;/strong&gt;: &lt;a href="https://mikebifulco.com/posts/i-have-to-tell-you-about-dependabot" rel="noopener noreferrer"&gt;Dependabot&lt;/a&gt; is still going strong, and has competition in &lt;a href="https://www.mend.io/renovate/" rel="noopener noreferrer"&gt;Mend Renovate&lt;/a&gt;, which works on both GitHub and GitLab, and offers a different configuration experience.&lt;/li&gt;
&lt;li&gt;For &lt;strong&gt;no-code, event-driven automation&lt;/strong&gt;: &lt;a href="https://ifttt.com/" rel="noopener noreferrer"&gt;IFTTT&lt;/a&gt; is the OG, but continues to become more consumer-focused. &lt;a href="https://zapier.com/" rel="noopener noreferrer"&gt;Zapier&lt;/a&gt; has arisen as a popular choice, but I've found myself exploring other options like &lt;a href="https://www.make.com/en" rel="noopener noreferrer"&gt;Make&lt;/a&gt;, &lt;a href="https://trigger.dev/" rel="noopener noreferrer"&gt;Trigger.dev&lt;/a&gt; and &lt;a href="https://n8n.io/" rel="noopener noreferrer"&gt;n8n&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A focus on Developer Experience (DX) is a competitive advantage
&lt;/h2&gt;

&lt;p&gt;There's not a single engineer on this planet who wants to work on a product that sucks to maintain. We all want to work on products that are easy to understand, easy to enhance, and easy to deploy. This is something that has gotten steadily better since I've been in the industry, but it's still a huge differentiator for companies that get it right.&lt;/p&gt;

&lt;p&gt;Happily, many companies building devtools have done a fantastic job of turning the eye of UX research toward devs - seeing engineers as users, and building products that are delightful to build with. What's more, most of these companies are &lt;em&gt;incredibly&lt;/em&gt; friendly to startups, offering generous free tiers and discounts to help companies get off the ground.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A quick note about AWS:&lt;/strong&gt; somehow, AWS has wrestled its way into place as the de facto standard for cloud-based infrastructure for many dev teams - my people, it is &lt;em&gt;heartbreakingly difficult&lt;/em&gt; to use at all, and requires continual education and effort to use correctly and securely while staying up to date. The AWS dashboard is a hellscape of UX dark patterns, and the documentation is a labyrinth. I think many teams turn to AWS because it appears to be dirt cheap - but the cost of maintaining a team that can use it effectively is &lt;em&gt;astronomical&lt;/em&gt;. I'm not saying you should never use AWS - but I am saying that you should think &lt;em&gt;very carefully&lt;/em&gt; about whether you need to use it, and whether you can get save long term costs by using something else (you almost certainly can).&lt;/p&gt;

&lt;p&gt;Here's a few examples that have made life better for me at Craftwork:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;git-driven deployments (CD)&lt;/strong&gt; - &lt;a href="https://vercel.com" rel="noopener noreferrer"&gt;Vercel&lt;/a&gt; and &lt;a href="https://netlify.com" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt; are both fantastic. I use both across the sites I maintain, and they're both great. We're using Vercel for Craftwork, and .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;payments&lt;/strong&gt;, &lt;a href="https://stripe.com/" rel="noopener noreferrer"&gt;Stripe&lt;/a&gt; is still unbeatable when it comes to DX. The mountain of features that have been added in the past few years make it &lt;em&gt;so much easier&lt;/em&gt; to build a robust payments system that can handle the complexities of the real world. Even still, there are companies building APIs &lt;em&gt;on top of Stripe&lt;/em&gt; that make life that much easier for certain use cases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For &lt;strong&gt;analytics&lt;/strong&gt;, &lt;a href="https://analytics.google.com" rel="noopener noreferrer"&gt;Google Analytics&lt;/a&gt; is still the standard, but has had to pivot hard in the past year or so to avoid legal consequences due to privacy laws being passed in the EU. For a great alternative that is privacy-focused, I use &lt;a href="https://usefathom.com/ref/DPSSYB" rel="noopener noreferrer"&gt;Fathom&lt;/a&gt; on all my personal projects). Recently &lt;a href="https://plausible.io/" rel="noopener noreferrer"&gt;Plausible&lt;/a&gt; has popped up as another option.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The world of devx for &lt;strong&gt;databases&lt;/strong&gt; has been absolutely buck-wild. At smpl, we used &lt;a href="https://firebase.google.com/" rel="noopener noreferrer"&gt;Firebase&lt;/a&gt; because it was so damn easy to deal with - but it was a &lt;em&gt;nightmare&lt;/em&gt; to migrate away from when we needed to. &lt;a href="https://supabase.io/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; has emerged as a great alternative based on PostgreSQL, and I've been really loving &lt;a href="https://planetscale.com/" rel="noopener noreferrer"&gt;Planetscale&lt;/a&gt;'s DX for branching databases.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Even &lt;strong&gt;database schema management&lt;/strong&gt; has gone through a renaissance. &lt;a href="https://www.prisma.io/" rel="noopener noreferrer"&gt;Prisma&lt;/a&gt; has become the standard for a variety of use cases, and recently &lt;a href="https://github.com/drizzle-team/drizzle-orm" rel="noopener noreferrer"&gt;Drizzle ORM&lt;/a&gt; has popped up as a fantastic alternative if you're building with TypeScript.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frameworks for everyone
&lt;/h2&gt;

&lt;p&gt;Finally - web frameworks/meta-frameworks for building web apps have gotten &lt;em&gt;so much better&lt;/em&gt;. This is another place where competition has been a &lt;em&gt;great&lt;/em&gt; thing for the industry. I've been using &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; for a few years now, and it's been making life better and better. Even still , there's plenty of competition just in the JavaScript world: &lt;a href="https://kit.svelte.dev/" rel="noopener noreferrer"&gt;SvelteKit&lt;/a&gt; and &lt;a href="https://astro.build/blog/introducing-astro/" rel="noopener noreferrer"&gt;Astro&lt;/a&gt; are incredible, &lt;a href="https://angular.io/" rel="noopener noreferrer"&gt;Angular&lt;/a&gt; has been releasing industry-leading features, and &lt;a href="https://www.solidjs.com/" rel="noopener noreferrer"&gt;SolidJS&lt;/a&gt; is an extremely promising newcomer.&lt;/p&gt;

&lt;p&gt;Even if you don't love JavaScript - &lt;a href="https://laravel.com/" rel="noopener noreferrer"&gt;Laravel&lt;/a&gt; is keeping the PHP world humming, and &lt;a href="https://rubyonrails.org/" rel="noopener noreferrer"&gt;Ruby on Rails&lt;/a&gt; gives Ruby devs insane productivity. &lt;a href="https://www.djangoproject.com/" rel="noopener noreferrer"&gt;Django&lt;/a&gt; is still the standard for Python devs, and if you're building web apps with .net, &lt;a href="https://dotnet.microsoft.com/en-us/apps/aspnet/web-apps/blazor" rel="noopener noreferrer"&gt;Blazor&lt;/a&gt; exists.&lt;/p&gt;

&lt;p&gt;There are even incredible meta-frameworks - we've been building Craftwork with an offshoot of an offshoot - &lt;a href="https://create.t3.gg/" rel="noopener noreferrer"&gt;create-t3-app&lt;/a&gt; is a full stack TypeScript framework built on top of Next.js, Prisma, and tRPC. Because we'll likely be building a react-native app eventually, we're using an Open Source "fork" of create-t3-app called &lt;a href="https://github.com/t3-oss/create-t3-turbo" rel="noopener noreferrer"&gt;create-t3-turbo&lt;/a&gt; to build individual apps and services in a monorepo. It's been &lt;em&gt;incredible&lt;/em&gt; to work with, and has made it easy to build a robust, scalable app with a small team.&lt;/p&gt;




&lt;h2&gt;
  
  
  A conclusion with a twist
&lt;/h2&gt;

&lt;p&gt;All of these things -- every single thing I've mentioned above -- helps to create a better environment to get things done. It's easier than ever to build a product, but for any team, the thing that will separate good from great is &lt;em&gt;how&lt;/em&gt; you do it. Focusing on communication, accessibility, inclusivity, and growth are not to be overlooked.&lt;/p&gt;

&lt;p&gt;The tools we use are important, but &lt;strong&gt;the people we work with, &lt;em&gt;how&lt;/em&gt; we work with them, and the lives we build around our companies are far more important for longevity, and for living a great life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I sat down to write this newsletter thinking I'd throw out a few quick bullet points about how the world of devtools has changed in the past few years. I didn't expect to write a 2000 word essay, but here we are.&lt;/p&gt;

&lt;p&gt;I hope this has been helpful to you, and I hope you'll take a look at some of the tools I've mentioned here. If you have any questions, feel free to reply or &lt;a href="https://hachyderm.io/@irreverentmike" rel="noopener noreferrer"&gt;drop me a line on Mastodon&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>webdev</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>These are the books that shaped my career</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 17 Jan 2023 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/these-are-the-books-that-shaped-my-career-15b9</link>
      <guid>https://forem.com/irreverentmike/these-are-the-books-that-shaped-my-career-15b9</guid>
      <description>&lt;p&gt;&lt;em&gt;A preface for DEV - who the heck am I, and why should you listen to me?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;In truth, I'm just a dude trying to do my best. In past lives, I've worked for companies like Google, Microsoft, and Stripe. I'm currently working on a seed-stage startup. I'm also one of the hosts of the &lt;a href="https://softwareengineeringdaily.com/" rel="noopener noreferrer"&gt;Software Engineering Daily&lt;/a&gt; podcast, the &lt;a href="https://apisyouwonthate.com/podcast" rel="noopener noreferrer"&gt;APIs You Won't Hate&lt;/a&gt; podcast, and my own show called &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Tiny Improvements&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I try to let my work speak for itself - if you're interested in how I got here, this post might be for you.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  These are the books that shaped my career
&lt;/h2&gt;

&lt;p&gt;I am a voracious learner. At this point in my life, I listen to a ton of podcasts, watch loads of this-and-that on YouTube, and listen to the occasional audiobook. In my first few years after finishing my undergrad studies, I was traveling for work just about every week, and because of that I spent tons of time in airports. During my downtime in transit, I'd pull out my trusty Nook (and later Kindle), and dive into something I wanted to learn about.&lt;/p&gt;

&lt;p&gt;While I do occasionally read fiction books, for the most part I find myself going back to non-fiction. Reading non-fiction books helps me to understand how other people think, and how they approach problems. I can also get a taste of topics that I might not have otherwise been exposed to - and that's a good thing.&lt;/p&gt;

&lt;p&gt;I've been thinking about this a lot lately, and I wanted to share a few books that have shaped my career as a designer, developer and startup founder. I'm sure I'll add to this list over time, but for now, here are the books that have had the biggest impact on me:&lt;/p&gt;

&lt;h3&gt;
  
  
  Never Eat Alone
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hardcover.app/books/never-eat-alone" rel="noopener noreferrer"&gt;By Keith Farrazi and Tahl Raz&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm a firm believer that your personal network can be one of your most valuable assets. This book helped me affirm that belief. It's a great book for anyone who wants to build a network of people that they can rely on. I'll be the first one to tell you that I think some of the authors' perspective is a bit exaggerated and hyperbolic, but the general themes within are fantastic. If you're looking for strategies to stay in touch with the people in your life, give it a read.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Design of Everyday Things
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hardcover.app/books/the-design-of-everyday-things" rel="noopener noreferrer"&gt;By Don Norman&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an absolute must-read for anyone with even a passing interest in design -- whether it's physical objects, software, or the built environment. Don Norman is a design legend, and this book is a great introduction to his thinking. It's a bit dated, but the core concepts are still relevant today. You know that feeling you get when you can't figure out which light switch turns on the lights in a hotel room? That's a design problem. This book will help you understand why.&lt;/p&gt;

&lt;h3&gt;
  
  
  Company of One
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hardcover.app/books/company-of-one" rel="noopener noreferrer"&gt;By Paul Jarvis&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This book's subtitle is "Why Staying Small is the Next Big Thing for Business," which was a revelation for me. The truth is, it is &lt;em&gt;really&lt;/em&gt; hard to build a billion dollar company. There's a delusion in the startup world that we all need to be building billion dollar companies, and we often forget that it can be far more practical to &lt;em&gt;start&lt;/em&gt; by building products that will serve a small audience. I've been a fan of Paul Jarvis for a long time, and I think he's got a great perspective on building a business. This book is a great read for anyone who's thinking about starting a business for the first time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommendations for things what can help you learn good
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://hardcover.app" rel="noopener noreferrer"&gt;Hardcover.app&lt;/a&gt; is an indie-web product is self-described as "Social discovery for book lovers." I've been using it for about a year to keep track of books I read, and to keep a running list of books I want to read. I've also created a few lists of books to recommend on various subjects, like &lt;a href="https://hardcover.app/@irreverentmike/lists/the-designers-reading-list" rel="noopener noreferrer"&gt;The Designer's Reading List&lt;/a&gt;, which you may want to check out!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.snipd.com/" rel="noopener noreferrer"&gt;Snipd&lt;/a&gt; is an app for listening to podcasts that uses AI to transcribe the shows you listen to into text. From there, you can save snippets of the show to your notes, or share them online. I've found it to be useful for collecting bits of podcasts to share with friends. It's a fairly new app, so it can be a bit wibbly -- but it's been really cool to see the team building it add features over time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I've been up to
&lt;/h2&gt;

&lt;p&gt;I feel like we've all settled into the new year by now, and my work is back to full tilt. In case you missed it, here's the things I've been up to lately:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🎙️ In this year's first episode of the &lt;a href="https://apisyouwonthate.com/podcast" rel="noopener noreferrer"&gt;APIs You Won't Hate podcast&lt;/a&gt;, I spoke to my pal &lt;a href="https://www.linkedin.com/in/drucial/" rel="noopener noreferrer"&gt;Drew White&lt;/a&gt; about how he broke into the tech world, and what he's been up to in his work at &lt;a href="https://stashpad.com/" rel="noopener noreferrer"&gt;Stashpad&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🫵 If you're local to my home town of Charlotte, NC, I'll be giving a talk at the first ever &lt;a href="https://www.meetup.com/open-source-charlotte/events/290694423/" rel="noopener noreferrer"&gt;Charlotte Open Source Meetup&lt;/a&gt;. I'd love to see you there!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;📝 My AI side-hustle &lt;a href="https://speechwriter.ai" rel="noopener noreferrer"&gt;Speechwriter.ai&lt;/a&gt; is just about ready to make its way into the real world. The last little step is adding payment features to the thing. If you or someone you know is speaking at a wedding soon and are interested in being a beta tester, reply to this email and I'll drop you a coupon code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💌 Tiny Improvements, my newsletter for react devs and developer advocates
&lt;/h2&gt;

&lt;p&gt;I publish a (mostly) weekly newsletter called &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Tiny Improvements&lt;/a&gt;, where I share my philosophy and experience as a developer advocate building great products with React and Next.js. I'd love it if you considered subscribing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Subscribe to Tiny Improvements&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;/small&gt;&lt;/p&gt;

&lt;center&gt;

[![Mike Bifulco headshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkbmx39zol7lkrzgcny9.png)](https://twitter.com/irreverentmike)
 
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://mikebifulco.com" rel="noopener noreferrer"&gt;Mike Bifulco&lt;/a&gt; (&lt;a href="https://hachyderm.io/@irreverentmike" rel="noopener noreferrer"&gt;@irreverentmike@hachyderm.io&lt;/a&gt; on Mastodon) is a Developer Advocate, serial entrepreneur, host of the &lt;a href="https://apisyouwonthate.com/podcast" rel="noopener noreferrer"&gt;APIs You Won't Hate podcast&lt;/a&gt;, and an espresso fanatic. Mike writes about product design and building with React on his own site, &lt;a href="https://mikebifulco.com" rel="noopener noreferrer"&gt;mikebifulco.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>career</category>
      <category>startup</category>
      <category>books</category>
    </item>
    <item>
      <title>These are the tools I picked to build a new startup</title>
      <dc:creator>Mike Bifulco</dc:creator>
      <pubDate>Tue, 10 Jan 2023 00:00:00 +0000</pubDate>
      <link>https://forem.com/irreverentmike/tools-for-building-a-new-company-4lde</link>
      <guid>https://forem.com/irreverentmike/tools-for-building-a-new-company-4lde</guid>
      <description>&lt;p&gt;I spent the last week spinning up tools for a new startup I'm working on. Although I've built several products in the past few years, they have all been solo-efforts, so I haven't had to think about setting up collaboration tools. I haven't started from scratch with a new team since somewhere around 2017, and I was surprised at how much has changed.&lt;/p&gt;

&lt;p&gt;Here's what I learned:&lt;/p&gt;

&lt;h3&gt;
  
  
  The basics - the best got better
&lt;/h3&gt;

&lt;p&gt;The first few tools I set up have been constants in my work life for a while - we're using &lt;a href="https://workspace.google.com" rel="noopener noreferrer"&gt;Google Workspace&lt;/a&gt; for email, access to GSuite, and Google Drive, &lt;a href="https://slack.com" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; for team communication.&lt;/p&gt;

&lt;p&gt;Notably, onboarding for both of these has gotten &lt;em&gt;much&lt;/em&gt; better - both for administration &lt;em&gt;and&lt;/em&gt; end users. I was able to get both of these set up in a few minutes, and adding new teammates was flawless.&lt;/p&gt;

&lt;p&gt;I also set up &lt;a href="https://github.com" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; for code collaboration, &lt;a href="https://search.google.com/search-console/about" rel="noopener noreferrer"&gt;Google Search Console&lt;/a&gt; to keep an eye on SEO, and &lt;a href="https://cloudflare.com" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt; for managing DNS and protecting our web properties from abuse. These are tools I've used for years, and I'm happy to see that they've continued to improve -- and they all have generous free tiers, which is helpful if you're in the early days of bootstrapped products.&lt;/p&gt;

&lt;h3&gt;
  
  
  First time tools for me
&lt;/h3&gt;

&lt;p&gt;Believe it or not, I haven't used &lt;a href="https://notion.so" rel="noopener noreferrer"&gt;Notion&lt;/a&gt; before. I've been using &lt;a href="https://roamresearch.com" rel="noopener noreferrer"&gt;RoamResearch&lt;/a&gt; for personal note-taking years, and GSuite / Google Docs for authoring and collaboration since about 2014. I'm definitely a bit set-in-my-ways when it comes to collaborating - having worked at Google for a couple years, I got to see how the best-in-the-biz use Gmail and Google Docs to get things done.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;With that being said,&lt;/em&gt; I'm already really impressed by Notion. They've got an incredible set of templates for all sorts of use cases, and the ability to embed all sorts of content makes it easy to get started. To boot, my teammates have used it extensively, so I'm looking forward to learning from them as well.&lt;/p&gt;

&lt;p&gt;We're using &lt;a href="https://rippling.com" rel="noopener noreferrer"&gt;Rippling&lt;/a&gt; for Workforce Management -- in other words, for things like HR and payroll. Although I didn't set up Rippling, I have been plugging other tools into it - and I've been delighted by the automations they've built in for provisioning and deprovisioning services. This makes it easy to spin up services for new teammates - when they're added to Rippling, they're automatically added to the tools we use (and just as well, when they one day leave the company, Rippling makes revoking access a breeze).&lt;/p&gt;

&lt;p&gt;Somewhere in the past few years, I started using &lt;a href="https://figma.com" rel="noopener noreferrer"&gt;Figma&lt;/a&gt; as a design tool alongside my longtime staple &lt;a href="https://sketch.com/" rel="noopener noreferrer"&gt;Sketch&lt;/a&gt;. At this point, Figma is definitely better suited for collaboration, and I'll be using it with my new team to design our product UI and design language. I still use Sketch for design assets for mikebifulco.com, as well as many quick operations -- but I'm looking forward to using Figma for the bulk of my design work.&lt;/p&gt;

&lt;p&gt;I'm sure we'll end up adding plenty of other services as time marches on - and I'm really interested in the things you use to get work done. If you've got a favorite tool that I missed, reply to this message and let me know. I'd love to check it out!&lt;/p&gt;




&lt;h2&gt;
  
  
  Top tip: Browser profiles keep your work and personal lives separate
&lt;/h2&gt;

&lt;p&gt;If you use Chrome (or any Chromium-based browser like Brave or Edge), and you're setting up a Google account that will live alongside your personal one, it's a good idea to set up different &lt;a href="https://support.google.com/chrome/answer/2364824" rel="noopener noreferrer"&gt;browser profiles&lt;/a&gt; for each. This means your personal and work browsing histories will be separate, and you'll be able to install different extensions for each profile. I also tend to set up a third profile which I use for testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources for fluorishing developers
&lt;/h2&gt;

&lt;p&gt;These are a few of the things that have been occupying my brainmatter lately. I think you might like them, too!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🖇️ Growing on LinkedIn - now that I'm no longer using twitter, I've been working on strategies for increasing my area of influence in places like &lt;a href="https://hachyderm.io/@irreverentmike" rel="noopener noreferrer"&gt;Mastodon&lt;/a&gt; and &lt;a href="https://linkedin.com/in/mbifulco" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. My friends at Taplio (who previously sponsored Tiny Improvements) are currently hosting their &lt;a href="https://taplio.com/linkedin-growth-challenge-2023" rel="noopener noreferrer"&gt;LinkedIn Growth Challenge&lt;/a&gt;, where they're sharing their best tips for growing your network on LinkedIn. I'm participating, and looking forward to figuring out what catches peoples' attention on LinkedIn.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;💼 Are you building a portfolio? &lt;a href="https://github.com/Evavic44/portfolio-ideas" rel="noopener noreferrer"&gt;Victor Eke (@Evavic44) on GitHub&lt;/a&gt; has a great list of portfolios built developers, which is a great place to start if you're looking for inspiration for your own portfolio. I was flattered to find my site featured in the list alongside many others I admire.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🎥 I talk a lot about &lt;a href="https://mikebifulco.com/newsletter/design-rules-everyone-should-know" rel="noopener noreferrer"&gt;Design for Developers&lt;/a&gt;. I have a strong belief that most developers would benefit from learning just a few design basics. This week I came across &lt;a href="https://www.youtube.com/watch?v=wIabVp0Hh8U" rel="noopener noreferrer"&gt;The missing guide to grids&lt;/a&gt; on YouTube. Whether you've used a grid system before or not, this video is a great introduction to the basics of grids, and how they can help you build better layouts.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💌 Tiny Improvements, my newsletter for react devs and developer advocates
&lt;/h2&gt;

&lt;p&gt;I publish a (mostly) weekly newsletter called &lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Tiny Improvements&lt;/a&gt;, where I share my philosophy and experience as a developer advocate building great products with React and Next.js. I'd love it if you considered subscribing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mikebifulco.com/newsletter" rel="noopener noreferrer"&gt;Subscribe to Tiny Improvements&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;small&gt;&lt;/small&gt;&lt;/p&gt;

&lt;center&gt;

[![Mike Bifulco headshot](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tkbmx39zol7lkrzgcny9.png)](https://twitter.com/irreverentmike)
 
&lt;/center&gt;

&lt;p&gt;&lt;a href="https://mikebifulco.com" rel="noopener noreferrer"&gt;Mike Bifulco&lt;/a&gt; (&lt;a href="https://hachyderm.io/@irreverentmike" rel="noopener noreferrer"&gt;@irreverentmike@hachyderm.io&lt;/a&gt; on Mastodon) is a Developer Advocate, serial entrepreneur, host of the &lt;a href="https://apisyouwonthate.com/podcast" rel="noopener noreferrer"&gt;APIs You Won't Hate podcast&lt;/a&gt;, and an espresso fanatic. Mike writes about product design and building with React on his own site, &lt;a href="https://mikebifulco.com" rel="noopener noreferrer"&gt;mikebifulco.com&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>startup</category>
      <category>design</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
