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

<channel>
	<title>Four Kitchens</title>
	<atom:link href="https://www.fourkitchens.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.fourkitchens.com/</link>
	<description>AI, content management &#38; web platforms for higher ed</description>
	<lastBuildDate>Tue, 02 Jun 2026 14:03:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>AI exposure isn&#8217;t optional. Neither is your reputation.</title>
		<link>https://www.fourkitchens.com/blog/digital-strategy/ai-already-shaping-your-reputation/</link>
		
		<dc:creator><![CDATA[Jim Vomero]]></dc:creator>
		<pubDate>Tue, 02 Jun 2026 14:03:39 +0000</pubDate>
				<category><![CDATA[Digital strategy]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[AI readiness]]></category>
		<category><![CDATA[Content Strategy]]></category>
		<category><![CDATA[GEO]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19923</guid>

					<description><![CDATA[<p>AI systems are reading your content and forming a picture of your organization right now. Here's what that means and what you can do about it.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/digital-strategy/ai-already-shaping-your-reputation/">AI exposure isn&#8217;t optional. Neither is your reputation.</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_9603d91cc048e86f37137a097ae9b125" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/jim-vomero/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2026/02/jim@2x-349x400.webp" alt="Jim Vomero" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/jim-vomero/">Jim Vomero</a></p><p class="job_title">Senior Engineer</p><p class="desc">As a tech lead, Jim works with clients through the full project cycle, translating their business requirements into actionable development work and working with them to find technical solutions to their challenges.</p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>Last winter I was trying to plan something memorable for my daughter’s birthday. Our family goes to a lot of sporting events at the local university, so I started looking for party options.</p>
<p>I did what more and more of us are doing now. I didn’t open Google. I opened ChatGPT.</p>
<p>The answer was better than I expected. Specific, confident, detailed. Group ticket packages. University-branded gift bags. Special seating sections. And then one option that stopped me: a hockey package where the birthday kid gets to ride the Zamboni during intermission.</p>
<p>I could be parent of the year. I was already mentally writing the invitations. Then I went to find the page to book it. It didn’t exist.</p>
<p>After enough searching, I found what ChatGPT had actually read: a news article from eight years ago, describing a program the university had since discontinued. The page existed, the program had run, the details were accurate. They were just accurate about something that hadn’t been available for years. No one had retired the article. No one had marked it outdated or linked it to whatever replaced it. It simply sat there, long past the point any human searcher would find it, invisible to everyone except a system that reads everything and treats it all as equally current.</p>
<p>That distinction is worth holding onto. This wasn’t a hallucination. It was something quieter and harder to catch: accurate information about something that no longer exists, still present, still teaching. For most of the web’s history that kind of oversight was harmless. Stale content drifted past relevance and no one noticed. That’s no longer the case.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_23b6ab1b89d4b76efa30e8c4e4dbb33b" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>This isn’t a technology question. It’s a reputation question.</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>I spend a lot of time in rooms with people who are cautious about AI. That caution is legitimate. There are real obligations around privacy, accuracy, equity, and trust. The deliberation is appropriate. I’m not here to argue against it.</p>
<p>But there’s a distinction we’re not making clearly enough.</p>
<p>Adoption is a choice. Exposure is not.</p>
<p>You don’t have to deploy an AI tool, build an AI workflow, or take any institutional position on generative AI for it to be actively shaping your reputation. These systems are not waiting for your policy committee to finish its work. They’re already reading your website, processing your content, and forming a portrait of who you are and whether you’re worth recommending, right now, before your next prospective customer, student, or partner clicks a single link.</p>
<p>And you can’t see it happening. There is no report. No dashboard. The conversation is already underway. You’re just not in the room.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_76a5499df8d6e7c832be1e270652de74" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The first impression no longer happens on your website</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>This isn’t a higher education story, or a B2B story, or a consumer story. It’s all of them at once.</p>
<p>Consider what’s happened to search behavior in the last 18 months. According to <a href="https://www.adobe.com/express/learn/blog/chatgpt-as-a-search-engine" target="_blank" rel="noopener">Adobe’s May 2025 survey of 800 U.S. consumers</a>, 77% of Americans who use ChatGPT now use it as a search engine. Nearly one in four goes to ChatGPT first, before Google. And 36% of all consumers have already discovered a new product or brand through ChatGPT. For Gen Z, nearly half have.</p>
<p>In B2B, the shift is equally stark. <a href="https://www.prnewswire.com/news-releases/new-g2-research-half-of-b2b-software-buyers-now-start-their-research-with-ai-chatbots-302742807.html" target="_blank" rel="noopener">G2’s March 2026 survey of over a thousand software buyers</a> found that half of B2B buyers now begin their software research with an AI chatbot more often than with Google, up from just 29% in April 2025. That’s nearly doubled in less than a year.</p>
<p>In higher education, <a href="https://eab.com/resources/insight-paper/how-students-view-and-use-ai-in-college-search/" target="_blank" rel="noopener">EAB published survey data this past February</a> showing that 46% of high school students now use AI tools during their college search, nearly double the rate from six months prior. Nearly one in five have already removed a college from consideration based on what AI told them.</p>
<p>Picture what that actually looks like. A 17-year-old, Sunday night, asking ChatGPT whether a particular school has a strong environmental engineering program. The answer comes back thin, vague, assembled from whatever that institution has left lying around. The school never makes the list. No one in admissions ever knows the conversation happened.</p>
<p>Not after a campus visit. Not after talking to an admissions counselor. Based entirely on what a language model assembled from everything that institution had ever published.</p>
<p>The common thread across all three of these: The decision happens before the website visit. Before a sales call. Before a form submission. Before anyone in your organization even knows someone was considering you.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_0b64d997f0d2712acb54e58e1ad30113" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The traffic you’re expecting may not arrive</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>There’s one more data point that deserves attention, because it names what many organizations are starting to feel without yet having language for it.</p>
<p>Semrush analyzed billions of visits across more than 50,000 sites and found that total web traffic was nearly flat in 2025, while AI traffic grew 66% and organic search declined in 13 of 17 industries. A separate field study published in 2026 found that when a Google AI Overview appears, organic click-through rates drop 61%. In Google’s newer AI Mode, the zero-click rate reaches 93%.</p>
<p>Demand didn’t disappear. It moved.</p>
<p>Since this post was first drafted, Google has made that trajectory official. <a href="https://techcrunch.com/2026/05/19/google-search-as-you-know-it-is-over/" target="_blank" rel="noopener">At Google I/O in May 2026</a>, the company announced that AI Overviews now reach 2.5 billion monthly users and that its conversational AI Mode has surpassed 1 billion. More significantly, Google confirmed it is building agentic search capabilities designed to perform information-gathering on users’ behalf — with traditional links described internally as increasingly secondary to the experience. The shift the data was pointing to is no longer a prediction. Google has named it as the direction.</p>
<p>The harder problem is that your analytics won’t tell you. Traffic may hold steady, or decline slowly enough to explain away, while the decisions that used to happen on your site are now happening somewhere you have no instrumentation for.</p>
<p>The people who would have visited your site to answer a question are now getting that question answered before they arrive. The top and middle of your funnel, awareness, consideration, initial shortlisting, may already be happening somewhere you can’t see, can’t measure, and currently have no ability to influence.</p>
<p>This doesn’t mean websites are dying. It means the website has lost its monopoly on first impressions. For many organizations, the AI answer is the first impression, and it’s being assembled from whatever you’ve left lying around.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_f96f37ed547327e6820e78a77ba7647b" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The 20-minute diagnostic you should run this week</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Before you commission a content audit, redesign a page, or draft a governance policy, do something simpler.</p>
<p>Ask.</p>
<p>Open ChatGPT. Open Perplexity. Open Claude. Open whatever tool your audience is using. Ask about your organization the way a prospective customer would. Ask what you’re known for. Ask what you offer. Ask whether you’d be a good fit for someone in a specific situation.</p>
<p>Then read the answer carefully. Not just for accuracy, but for recognition. Does it sound like you? Does it reflect who you are now, or who you were five years ago? Is it specific and confident, or vague in ways that suggest the underlying signal was weak?</p>
<p>Then do it for a peer organization. Compare the answers. You’ll feel the difference immediately between an organization whose content model is coherent and one whose isn’t.</p>
<p>Run that experiment this week. Project it on a screen with the people who make decisions about your content and let them watch it happen in real time. The conversation that follows is the one that needs to happen.</p>
<p>Your organization is already being summarized by machines. The only question is whether the story they tell is the one you intended.</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/digital-strategy/ai-already-shaping-your-reputation/">AI exposure isn&#8217;t optional. Neither is your reputation.</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What&#8217;s cooking: The power of setting knowledge free</title>
		<link>https://www.fourkitchens.com/blog/work-life/share-what-we-know/</link>
		
		<dc:creator><![CDATA[Colleen Carroll]]></dc:creator>
		<pubDate>Fri, 08 May 2026 01:36:51 +0000</pubDate>
				<category><![CDATA[Work life]]></category>
		<category><![CDATA[20th anniversary]]></category>
		<category><![CDATA[Company Culture]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[emulsify]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Values]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19885</guid>

					<description><![CDATA[<p>Hoarding knowledge slows everyone down. Here's what 20 years of open-source contribution taught Four Kitchens about generosity, craft, and lasting impact.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/work-life/share-what-we-know/">What&#8217;s cooking: The power of setting knowledge free</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_f3f68bfa5c036fbe2c562b4d076853c6" class="content_section csection leafy_green_400">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="cont single_col col-8-12 push-2-12 tablet-col-10-12 tablet-push-1-12 wysiwyg plast no_heading "><h3>Four Kitchens turned 20 in 2026. This post is part of <em>What&#8217;s Cooking</em>, a series tracing 20 years of building the web alongside our clients, our community, and each other. Each post looks back at where we&#8217;ve been and forward at what we&#8217;re building next.</h3>
</div>        </div>
            </div>
</div>

<div id="csection-block_161c3905610c98fa23d94fec0567115f" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/colleen-carroll/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2026/02/colleen@2x-349x400.webp" alt="Colleen Carroll" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/colleen-carroll/">Colleen Carroll</a></p><p class="job_title">Chief Executive Officer</p><p class="desc">Colleen is responsible for driving Four Kitchens’ vision and long-term strategy.</p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>It sounds simple. And yet, so many businesses guard their ideas and lessons learned like trade secrets, convinced that keeping knowledge close is what keeps them ahead.</p>
<p>That instinct is understandable. As AI accelerates access to nearly everything, that instinct is increasingly costly. The competitive advantage isn’t the knowledge itself. It’s the judgment, craft, and relationships you build by applying it.</p>
<p>At Four Kitchens, we built a company on the opposite premise. Sharing what we know — with clients, with the community, with each other — has never been a risk. It’s been a practice. And over 20 years, it’s shaped nearly everything we’ve built.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_fec8824313806911e325f37f50f0aa1b" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Why it matters</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Knowledge hoarding has a hidden cost. When people and organizations treat what they know as proprietary, they slow down the work, isolate the expertise, and create fragility. When one person holds the context for a system, a process, or a decision, that context walks out the door with them.</p>
<p>The open-source model offers a different proof. Software built in the open — where anyone can read, improve, and share the code — powers most of the web. It’s more secure, more resilient, and more innovative than most proprietary alternatives, precisely because it benefits from more eyes, more minds, and more perspectives than any single organization could assemble on its own.</p>
<p>That lesson doesn’t only apply to software. It applies to how teams collaborate, how expertise develops, and how trust gets built — with clients, with partners, with communities.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_55eb745aaaabb0a16adb5df7a6f0e187" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>How we practice it</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Four Kitchens started this way from the beginning. In 2006, the founders taught themselves Drupal from documentation the community had written and modules volunteers had built. The foundation they built on wasn’t theirs. It belonged to everyone.</p>
<p>That sense of reciprocity became an operating principle. Early versions of our values included a commitment to contributing to open-source projects every single day — not as a marketing claim, but as a standard for how we work.</p>
<p>In practice, that has meant contributing code back to Drupal, sponsoring camps, sending Web Chefs to speak at events large and small, writing publicly about what we’ve learned from complex projects, and documenting our work in ways that leave clients more capable after an engagement, not more dependent.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_ef170eba2f026de3e697ced83265b2eb" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Our biggest contribution</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>The clearest expression of this value is <a href="https://www.emulsify.info/" target="_blank" rel="noopener">Emulsify</a>.</p>
<p>We built Emulsify because we kept seeing the same problem: large organizations — higher education institutions in particular — struggling to maintain consistent brand and visual identity across dozens of websites. Every institution was managing the design independently, spending significant time and budget on a challenge that was fundamentally shared.</p>
<p>We could have built a proprietary solution. Instead, we built an open-source design system toolset and gave it to the community.</p>
<p>Emulsify is a component-based design system that uses structured, reusable code to implement a visual identity across multiple websites. Because it’s built on components, design updates don’t require rebuilding a website&#8217;s look and feel — changes flow through the system reliably and consistently. The underlying code is tested, accessible, and built to last. It works natively with Drupal, with active community support and ongoing development.</p>
<p>For large organizations managing many sites, that kind of system isn’t a convenience. It’s what makes it possible to maintain coherent brand governance at scale without constant intervention.</p>
<p>Emulsify has since been adopted well beyond our own client base — active on more than 5,000 sites, according to the Drupal community. That’s not a side effect of open-sourcing it. That’s exactly the point.</p>
<figure id="attachment_19901" aria-describedby="caption-attachment-19901" style="width: 1470px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" class="size-full wp-image-19901" src="https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify.webp" alt="Image of Emulsify website home page showing how design is managed in the system" width="1470" height="878" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify.webp 1470w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-670x400.webp 670w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-768x459.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-1200x717.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-140x84.webp 140w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-400x239.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-600x358.webp 600w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-1100x657.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-580x346.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-255x152.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/05/emulsify-60x36.webp 60w" sizes="(max-width: 1470px) 100vw, 1470px" /><figcaption id="caption-attachment-19901" class="wp-caption-text">Emulsify, the open-source design system toolset built by Four Kitchens.</figcaption></figure>
</div>        </div>
            </div>
</div>

<div id="csection-block_44a443a5a55b45db49482668158b379f" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Why every team should share what it knows</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>The organizations that benefit most from shared knowledge aren’t the ones that give the most away. They’re the ones that treat generosity as a discipline — a practiced habit rather than an occasional gesture.</p>
<p>When a team documents what it learns from a complex project, that knowledge compounds. It makes the next project faster. It helps newer team members build on real experience rather than starting from scratch. It creates the conditions for the kind of deep expertise that clients can actually feel and come to expect.</p>
<p>The same is true at the community level. The Drupal ecosystem is stronger because thousands of organizations have contributed back the solutions they built for themselves. No single one of them could have built what the community has built together.</p>
<p>Sharing knowledge doesn’t diminish what you know. It extends your reach, strengthens your relationships, and positions you as someone worth learning from.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_ba597b45acf1754847c942cf2b3eccec" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Not a value we added</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>When we revisited our values in 2025, “Share What We Know” didn’t feel like a new commitment. It felt like a reclamation — a formal name for something we’d been doing since the first time we pushed code back to the community that had taught us to build.</p>
<p>Our goal has always been to do work that outlasts us. Tools our clients can extend without us. Documentation their teams can use long after our engagement ends. Contributions the community can build on for years. A website that keeps growing, improving, and reaching its audience without waiting for the next big contract to move forward.</p>
<p>That kind of lasting impact doesn’t come from holding things close. It comes from letting them go.</p>
<p>“Share What We Know” isn’t a value we added. It’s what we’ve always been.</p>
</div>        </div>
            </div>
</div>


<p></p>
<p>The post <a href="https://www.fourkitchens.com/blog/work-life/share-what-we-know/">What&#8217;s cooking: The power of setting knowledge free</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What ‘better search’ actually means (and how to get there)</title>
		<link>https://www.fourkitchens.com/blog/digital-strategy/what-better-search-actually-means/</link>
		
		<dc:creator><![CDATA[Duncan Macaulay]]></dc:creator>
		<pubDate>Thu, 23 Apr 2026 15:07:58 +0000</pubDate>
				<category><![CDATA[Digital strategy]]></category>
		<category><![CDATA[Content Strategy]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[editors]]></category>
		<category><![CDATA[search]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19878</guid>

					<description><![CDATA[<p>Evaluating site search tools? Learn how to match the right solution to your content maturity, team capacity, and user needs before you overbuild.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/digital-strategy/what-better-search-actually-means/">What ‘better search’ actually means (and how to get there)</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_30f411ab34921ad80297b30977ed2a00" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/duncan-macaulay/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2026/02/duncan@2x-349x400.webp" alt="Duncan Macaulay" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/duncan-macaulay/">Duncan Macaulay</a></p><p class="job_title">Senior Engineer</p><p class="desc">With a strong background in web and marketing analytics, Duncan has been instrumental in helping companies use Drupal to create cutting-edge websites and applications.</p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>“We need better search.” It’s one of those requirements that shows up on almost every project. Sometimes it’s backed by analytics, sometimes it’s user feedback, and sometimes it’s just a general sense that things aren’t working. People say things like “results feel off” or “I know it’s on the site, I just can’t find it.”</p>
<p>And almost immediately, the conversation shifts to tools.</p>
<p>Maybe we need a better engine. Maybe we need AI. Maybe we need to replace what we have entirely. We tend to approach search as a tooling decision, when it’s more of a question of how content is structured and experienced. In many cases, what looks like a search issue is actually just a signal that something deeper isn’t working.</p>
<p>I often think of search not as a problem-creator, but as a bit of a truth-teller. It’s the one place on your site where users can bypass your navigation, ignore your assumptions, and tell you directly what they’re looking for. If your content is unclear or poorly organized, search is just the magnifying glass that makes those cracks obvious.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_10b0afda1571fde9ce19c6cead5dee84" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Better search starts with better content</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>To be fair, search can only work with what it’s given. If your content is clear and maintained, even a basic search implementation will feel pretty effective. If it’s not, no amount of technology is going to save you.</p>
<p>You see it happen all the time. A result shows up, but it’s not clear why. The right page is there, but the title doesn’t match what the user meant. Three pages compete for the same idea, and none of them feel like the right answer.</p>
<p>That usually gets labeled as a ranking problem. But often, it’s a content problem. Most search issues come down to a mismatch between how content is written and how people actually look for it. We name things based on internal structures that users don&#8217;t know exist. If someone searches for “scholarships” and your site calls it “financial aid,” the system isn’t “broken”; the content and the user are just speaking different languages.</p>
<p>Then there’s the governance side of things. Search is very good at surfacing content no one has looked at in years: expired events, outdated pages, or duplicates. That’s not a bug. That’s the system doing exactly what it was designed to do.</p>
<p>The interesting part is that fixing these things doesn&#8217;t just &#8220;fix search.&#8221; It improves how you perform in external search engines, how accessible your site is, and how well an AI might be able to parse your data later. It’s the same foundation.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_027981af5434147395b65d844426fa1e" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Search is three decisions, not one</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Most search experiences look the same on the surface: a box, a list, maybe some filters. It’s easy to think of it as a single feature, but behind the scenes, I find it helpful to break it down into three separate decisions.</p>
<p><strong>Indexing:</strong> This is how your content gets into the system. You can use a crawler to scan the site, which is easy but gives you less control. Or, you can &#8220;push&#8221; content from your CMS, which gives you more control but requires a lot more intentional structure.</p>
<p><strong>Ranking:</strong> Every system has a logic that decides what’s relevant. Maybe titles are weighted more than body text. Maybe newer content gets a &#8220;boost.&#8221; If you haven’t made these decisions intentionally, the system is still making them for you; you just don’t have a seat at the table.</p>
<p><strong>Interface:</strong> This is what the user actually sees. The snippets, the filters, the way results are grouped. You can take something off the shelf, or you can build something custom. Either way, this is where you build (or lose) user trust.</p>
<p>What’s useful about this framework is that it shifts the conversation. You’re not just choosing a &#8220;tool&#8221;; you’re deciding how much effort you want to put into managing your data, your logic, and your experience. Those choices don’t always line up with the highest price tag.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_fc2f0a850fac6087fc74c2ced08ed2d0" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The landscape of search tools</h2></div><div class="cont col-6-12 wysiwyg plast  "><h3>1. The “off-the-shelf” path (lower effort, lower control)</h3>
<p>This path usually relies on a Crawler. The tool &#8220;reads&#8221; your site much like a user does. It’s the fastest way to get a search box on a page.</p>
<ul>
<li><strong>The go-to:</strong> Google Programmable Search</li>
<li><strong>Best for:</strong> Smaller sites or organizations that need a “set it and forget it” solution and don&#8217;t require custom &#8220;boosting&#8221; of specific content. An easy way to search across multiple sites on the same domain.</li>
<li><strong>The tradeoff:</strong> You are often stuck with a “prebuilt widget” that looks like a guest on your own website.</li>
<li><strong>The strategic note:</strong> Watch out for the “trust gap.” If your tool serves ads or carries external branding, it can feel less like an authoritative resource and more like a third-party plugin.</li>
</ul>
<h3>2. The “configuration” path (the middle ground)</h3>
<p>This is the “sweet spot” for many mid-to-large organizations. These tools offer more control over ranking and interface without requiring you to manage complex server infrastructure.</p>
<ul>
<li><strong>The tools:</strong> SearchStax Site Search or SwiftType</li>
<li><strong>How it works:</strong> You can often choose between a crawler or “sending” your data via an API.</li>
<li><strong>Best for:</strong> Teams where search is a primary navigation tool and needs to feel integrated, but you don&#8217;t want to hire a full-time search engineer.</li>
<li><strong>The strategic note:</strong> This is the “agility” choice. These tools provide a marketing dashboard, empowering content teams to tune results, like boosting “Giving Tuesday” to the top for a week, without needing a developer.</li>
</ul>
<h3>3. The “engineered” path (high control, high investment)</h3>
<p>This is the “send” approach. Your CMS (like Drupal) pushes highly structured data directly into the search index via modules like Search API. This gives you total control over the experience.</p>
<ul>
<li><strong>The tools:</strong> Solr or Elasticsearch</li>
<li><strong>How it works:</strong> Deeply integrated into your hosting environment (like Pantheon’s managed Solr) or a dedicated provider like SearchStax.</li>
<li><strong>Best for:</strong> Enterprise-level sites, multidomain ecosystems, or situations where search is the “core product” (e.g., a complex program finder or resource library).</li>
<li><strong>The strategic note:</strong> This offers the most power, but it requires a “search owner.” While the software is often open source (no license fee), it is the most expensive to run because it requires specialized engineering hours to maintain and tune the logic.</li>
</ul>
<p>The right choice depends on your search maturity. Don&#8217;t buy the “engineered” solution if you don&#8217;t have the staff to steer it; don&#8217;t settle for “off-the-shelf” if your users rely on search to make high-stakes decisions.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_219b040900ab22977236ccea72ef7380" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Why teams overbuild search</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>When search underperforms, the instinct is to add more power through better tools, more features, and more controls. That’s a reasonable reaction. There’s a lot these systems can do. But what we tend to see is a familiar pattern: a more complex system running on the same content. Filters get added. The UI gets heavier. Configuration grows. The results don’t really improve.</p>
<p>It’s the “Lamborghini to pick up groceries” problem. Sure, the car is capable of a lot, but you’re still sitting in the same traffic, and you still have nowhere to put the bags. If the underlying content isn&#8217;t in place, more technology doesn’t fix the problem; it just makes the failures scale faster.</p>
<p>There are situations where a more advanced search makes sense (large datasets, multiple domains, deeper filtering), but even in those cases, the outcome still depends on the same thing: how clear and structured the content is.</p>
<p>If that part isn’t in place, more technology doesn’t fix the problem; it just makes it scale faster.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_0f709b181d3df591d787faf7e8edffe4" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Search is a shared responsibility</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Improving search usually starts with getting the right people in the room. It sits at this awkward intersection of UX, content, and engineering. If those perspectives aren’t aligned, you end up with three different people trying to solve three different versions of the problem.</p>
<p>The way I usually approach this is to move away from “search feels off” and toward something concrete. What are the top 10 queries? What <em>should</em> the first result be? Are users finding things, or are they just trying again and leaving?</p>
<p>Once you look at search logs and identify where the language doesn&#8217;t match, the conversation changes. Instead of asking “what tool do we need,” we start asking: “What content should we exclude? How do we prioritize this department over that one? Where is search being asked to fix a gap in our main navigation?”</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_cd4ce566c2d84e435fad9bee16175e48" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Getting to &#8216;good enough&#8217;</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>That’s where progress actually happens. Search will always have a subjective element, but it shouldn&#8217;t be driven by gut feel alone. Once you have a shared understanding of what the user is trying to do, and visibility into how the system is actually behaving, the technology becomes a lot less confusing.</p>
<p>You’re never really “done” with search. But when your content is clear, and your priorities are aligned, search starts to feel predictable. And once it&#8217;s predictable, you can stop guessing and start solving the actual problem.</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/digital-strategy/what-better-search-actually-means/">What ‘better search’ actually means (and how to get there)</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What&#8217;s cooking: How our values evolved after 20 years</title>
		<link>https://www.fourkitchens.com/blog/work-life/way-of-the-web-chef-20-years/</link>
		
		<dc:creator><![CDATA[Colleen Carroll]]></dc:creator>
		<pubDate>Fri, 17 Apr 2026 13:49:00 +0000</pubDate>
				<category><![CDATA[Work life]]></category>
		<category><![CDATA[20th anniversary]]></category>
		<category><![CDATA[Company Culture]]></category>
		<category><![CDATA[Values]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19817</guid>

					<description><![CDATA[<p>Four Kitchens turned 20 in 2026. This post is part of What's Cooking, a series tracing 20 years of building the web alongside our clients, our community, and each other. Each post looks back at where we've been and forward at what we're building next.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/work-life/way-of-the-web-chef-20-years/">What&#8217;s cooking: How our values evolved after 20 years</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_272f3939cfe8a02f1b2ad05cc4ca5b29" class="content_section csection leafy_green_400">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="cont single_col col-8-12 push-2-12 tablet-col-10-12 tablet-push-1-12 wysiwyg plast no_heading "><h3>Four Kitchens turned 20 in 2026. This post is part of <em>What&#8217;s Cooking</em>, a series tracing 20 years of building the web alongside our clients, our community, and each other. Each post looks back at where we&#8217;ve been and forward at what we&#8217;re building next.</h3>
</div>        </div>
            </div>
</div>

<div id="csection-block_ca33ddddae8960f2416943a991905ac7" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/colleen-carroll/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2026/02/colleen@2x-349x400.webp" alt="Colleen Carroll" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/colleen-carroll/">Colleen Carroll</a></p><p class="job_title">Chief Executive Officer</p><p class="desc">Colleen is responsible for driving Four Kitchens’ vision and long-term strategy.</p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>Twenty years ago, Four Kitchens started as something much simpler: four college friends who wanted to publish an alt-weekly newspaper.</p>
<p>When they couldn’t afford to print it, they went digital and taught themselves how to build a website. They chose Drupal because it was robust, approachable, and free. They got involved in the community, contributed modules, fixed bugs. And then people started asking them to help build sites, and offering to pay for it. Todd tells a story about the phone number they put on their early website. “Call us anytime!” they offered. One night, late, the phone rang. It was their first client. That call turned a side project into an agency.</p>
<p>In April 2026, we marked 20 years of that agency at DrupalCon Chicago, gathered with friends, former colleagues, clients, and community members at the Game Room at The Chicago Athletic Association. There were custom cocktails, games, and a room full of people who had, in some way, been part of this story. None of it would have been possible without <a href="https://pantheon.io/" target="_blank" rel="noopener">Pantheon</a>, whose co-sponsorship made the evening something we could share with the whole community. Thank you, Pantheon.</p>
<p>&nbsp;</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_130c0fb286d82cd1330d1f4c51df2c6a" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>A kitchen takes shape</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>In 2006, Todd Ross Nienkerk founded Four Kitchens with three friends and a conviction that the web could be built better. Not just technically, but intentionally, with craft, curiosity, and a genuine commitment to the people on both sides of the work.</p>
<p>The name, inspired by a potential office space with four kitchens, became a playful metaphor for who they were and the company they wanted to be: a place where things get made, where process and tools matter as much as output.</p>
<p>From the beginning, the team operated with a set of shared beliefs about how to do the work. No leadership offsite handed them down, and no business book supplied them. They emerged from the practice itself: the way writers, designers, and developers collaborated across disciplines, the way the team navigated hard problems together. The team codified them over time as The Way of the Web Chef.</p>
<figure id="attachment_19818" aria-describedby="caption-attachment-19818" style="width: 512px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-19818" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Four-Kitchen-Studios.webp" alt="Four Kitchen Studios" width="512" height="466" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Four-Kitchen-Studios.webp 512w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Four-Kitchen-Studios-439x400.webp 439w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Four-Kitchen-Studios-140x127.webp 140w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Four-Kitchen-Studios-400x364.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Four-Kitchen-Studios-255x232.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Four-Kitchen-Studios-60x55.webp 60w" sizes="(max-width: 512px) 100vw, 512px" /><figcaption id="caption-attachment-19818" class="wp-caption-text">First website, circa 2006</figcaption></figure>
<blockquote><p><i><span style="font-weight: 400;">We are young, hip, creative, brilliant, and witty. And modest. We are… graphic artists, audiophiles, computer scientists, webdesigners, satirists, photographers, filmmakers, information systems experts, writers. Four Kitchens Studios is a creative collective based in Austin, Texas. We specialize in engaging, entertaining, and amusing publishing for print and the web. We’ve got everything under one roof—plus four kitchen sinks.</span></i></p></blockquote>
<p>Those values weren&#8217;t a manifesto. They were a reflection. A description of what was already true about how Four Kitchens worked.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_65fb9972e6137a385bb54f368052b3f3" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Twenty years changes things. And it doesn&#8217;t.</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>A lot happens in two decades. A startup becomes an established agency. The founders’ vision gets carried forward by a team that evolves and changes shape. The industry shifts under everyone’s feet, sometimes gradually, sometimes overnight.</p>
<p>Four Kitchens grew through all of it. The team expanded, went remote, built tools that became standards in the Drupal community, and deepened expertise in higher education digital work. The company that exists today is not the company these four friends founded in 2006.</p>
<p>And yet, the instincts that shaped those early years, to stay curious, to care about craft, to show up for each other, were always there. They didn’t need to be invented. They needed to be recognized.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_1eb1d2f0c3de98c8afc95c2659986001" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Refining what was always true</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>In 2025, Four Kitchens undertook a structured values revision process through EOS (Entrepreneurial Operating System), a framework the leadership team uses to align around shared goals, honest feedback, and clear accountability.</p>
<p>The process wasn&#8217;t a reset. It was an excavation. The question wasn&#8217;t: what should we believe? It was: what do we believe and how does it show up in our work? </p>
<p>The behaviors that showed up most consistently in good work, in strong client relationships, in how people treated each other during hard stretches started to surface. We looked at where the company had been and where it was heading, and asked: are our current values an accurate description of who we are? The answer was: close, but not quite. Some values had merged naturally. Some were better expressed differently. The spirit was right. The language needed sharpening.</p>
<p>The result is The Way of the Web Chef as it exists today: five values that describe not aspirations, but practices. Things we actually do.</p>
<p>What emerged from that process was something we didn’t expect. Answers overlapped. We started finishing each other’s sentences. When one person named a pattern, someone else immediately recognized it. At one point, we brought Todd back into the history, asking him to tell the story that had inspired the original values in the first place. The energy was unmistakable. We weren’t a team being asked to agree to something. We were a team discovering what we already knew.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_5dc95e90bba03f3af3104c4b7aa67283" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The Way of the Web Chef, 2026</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>These aren&#8217;t rules. They&#8217;re recognitions.</p>
<p><img decoding="async" class="size-full wp-image-19823 aligncenter" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef.webp" alt="The Way of the Web Chef, 2026" width="1244" height="478" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef.webp 1244w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-800x307.webp 800w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-768x295.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-1200x461.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-140x54.webp 140w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-400x154.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-600x231.webp 600w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-1100x423.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-580x223.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-255x98.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Way-of-the-Web-Chef-60x23.webp 60w" sizes="(max-width: 1244px) 100vw, 1244px" /></p>
<h3>Endlessly curious</h3>
<p>Two weeks before launching <a href="https://www.drupal.org/forum/general/show-off-your-drupal-site/2006-11-23/that-other-paper-austins-only-newspaper" target="_blank" rel="noopener"><em>That Other Paper</em></a>, one of our co-founders, David Strauss, discovered Drupal and convinced Todd and team to scrap the existing build and start over.</p>
<p>That decision carried real risk. It also became our first Drupal project and led to <a href="https://www.pressflow.org/" target="_blank" rel="noopener">Pressflow</a>, one of our earliest <a href="https://www.drupal.org/forum/general/show-off-your-drupal-site/2006-11-23/that-other-paper-austins-only-newspaper" target="_blank" rel="noopener">open-source contributions</a>. All because of a willingness to pursue the better answer, even when the comfortable one is right in front.</p>
<p><img decoding="async" class="size-full wp-image-19830 aligncenter" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1.webp" alt="answers to open source questions" width="1152" height="1674" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1.webp 1152w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-275x400.webp 275w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-1101x1600.webp 1101w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-768x1116.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-1057x1536.webp 1057w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-96x140.webp 96w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-413x600.webp 413w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-1100x1598.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-580x843.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-255x371.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/answers-1-60x87.webp 60w" sizes="(max-width: 1152px) 100vw, 1152px" /><br />
If you work with us, expect thoughtful questions. We dig in because we’d rather understand your problem deeply than jump to a solution that only looks right on the surface.</p>
<h3>Dedicated to our craft</h3>
<p>One of our original values read: <em>Deliver the best possible value, even if it means billing less work.</em></p>
<p>That wasn’t a marketing line. It reflected how we try to operate, and it still does.</p>
<p>That dedication has always been structural, not accidental. What started as informal brown bag lunches, Web Chefs® gathering to share what they were learning, evolved into our Practice Group: a weekly open forum where anyone can lead a session, propose a topic, or simply show up to learn from a colleague. The expertise we bring to your project isn’t developed in isolation. It’s built collectively, on purpose, every week.</p>
<figure id="attachment_19831" aria-describedby="caption-attachment-19831" style="width: 1484px" class="wp-caption alignnone"><img decoding="async" class="wp-image-19831 size-full" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group.webp" alt="Sharing at Practice Group" width="1484" height="754" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group.webp 1484w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-787x400.webp 787w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-768x390.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-1200x610.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-140x71.webp 140w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-400x203.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-600x305.webp 600w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-1100x559.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-580x295.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-255x130.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Sharing-Practice-Group-60x30.webp 60w" sizes="(max-width: 1484px) 100vw, 1484px" /><figcaption id="caption-attachment-19831" class="wp-caption-text">Sharing learnings from a project at a recent Practice Group</figcaption></figure>
<p>That dedication shows up in the details: the code review that catches an edge case before it becomes a production headache, or accessibility standards that are considered from the start rather than added later.</p>
<p>We care about how things are made because your team will live with what we build long after the project wraps.</p>
<p><img decoding="async" class="size-full wp-image-19832 aligncenter" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW.webp" alt="Halloween at Web Chef Weekly" width="1464" height="816" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW.webp 1464w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-718x400.webp 718w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-768x428.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-1200x669.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-140x78.webp 140w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-400x223.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-600x334.webp 600w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-1100x613.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-580x323.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-255x142.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Halloween-WCW-60x33.webp 60w" sizes="(max-width: 1464px) 100vw, 1464px" /></p>
<h3>Playful</h3>
<p>Four Kitchens was founded by people who met while working on a humor publication. That creative energy still shows up across the company, from the way we brainstorm solutions to how we stay connected as a fully remote team.</p>
<p>Around year 10, we co-hosted a SXSW Interactive party on 6th Street with another Austin agency. Live-band karaoke, a Friday the 13th tattoo artist giving away free computer-themed flash, and a line out the door and down the stairs within an hour. The tattoos weren&#8217;t horseshoes or four-leaf clovers. They were mouse cursors, terminal windows, pixel art. At least one Web Chef went home with a cursor clicking on the number 13.</p>
<p><img decoding="async" class="size-full wp-image-19833 aligncenter" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo.webp" alt="Todd's 13 tattoo" width="1242" height="1662" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo.webp 1242w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-299x400.webp 299w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-1196x1600.webp 1196w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-768x1028.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-1148x1536.webp 1148w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-1200x1606.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-105x140.webp 105w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-448x600.webp 448w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-1100x1472.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-580x776.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-255x341.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todd-tattoo-60x80.webp 60w" sizes="(max-width: 1242px) 100vw, 1242px" /></p>
<p>That&#8217;s always been the instinct: Find the version of the thing that&#8217;s a little unexpected, a little more fun, and commit to it fully. (Ask us about our Slack emoji lore sometime.)</p>
<p>Playfulness here doesn&#8217;t mean unseriousness. It means creating an environment where people feel comfortable offering the unexpected idea that might turn out to be the right one. Especially when working remotely, it&#8217;s our playful nature that keeps us connected. It&#8217;s the connective tissue of a distributed team.</p>
<p>Our work tends to be strongest when collaboration feels open and exploratory rather than stiff and transactional.</p>
<figure id="attachment_19836" aria-describedby="caption-attachment-19836" style="width: 1408px" class="wp-caption aligncenter"><img decoding="async" class="size-full wp-image-19836 aligncenter" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds.webp" alt="The Todds" width="1408" height="1054" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds.webp 1408w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-534x400.webp 534w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-768x575.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-1200x898.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-140x105.webp 140w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-400x299.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-600x449.webp 600w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-1100x823.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-580x434.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-255x191.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Todds-60x45.webp 60w" sizes="(max-width: 1408px) 100vw, 1408px" /><figcaption id="caption-attachment-19836" class="wp-caption-text">On Todd’s birthday in 2012, everyone dressed up like him, wearing a tie to work — his daily brand.</figcaption></figure>
<h3>Share what we know</h3>
<p>From the beginning, our mission was to set knowledge free. Early versions of our values included a commitment to contributing to open-source projects every single day. Over time, open source moved out of the spotlight, partly because we weren’t sure it resonated with every role on the team.</p>
<p>But the spirit behind it never disappeared. It&#8217;s why we built <a href="https://emulsify.info" target="_blank" rel="noopener">Emulsify</a>, an open-source design system toolset born out of a problem we kept seeing: higher ed institutions struggling to maintain brand consistency across dozens of department and school websites. Rather than solve it once for one client, we built something the whole community could use.</p>
<p>Naming this value again felt like a homecoming.</p>
<p>Whether it’s code, documentation, or lessons learned from a complex migration, sharing what we learn strengthens the communities that make our work possible. That same instinct shapes how we work with clients: transparent about our thinking, willing to explain the why behind our recommendations.<br />
<img decoding="async" class="size-full wp-image-19837 aligncenter" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify.webp" alt="Emulsify" width="1248" height="1048" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify.webp 1248w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-476x400.webp 476w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-768x645.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-1200x1008.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-140x118.webp 140w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-400x336.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-600x504.webp 600w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-1100x924.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-580x487.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-255x214.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Emulsify-60x50.webp 60w" sizes="(max-width: 1248px) 100vw, 1248px" /></p>
<h3>Accountable to each other</h3>
<p>Accountability is easy to declare. It&#8217;s harder to build into how a team actually operates.</p>
<p>On our team, feedback is continuous rather than saved for annual reviews. We treat goals as shared outcomes.</p>
<p>When we collaborate with clients, our teams communicate directly and take shared ownership of the outcome. Strategy and execution aren&#8217;t siloed here. The people shaping the approach are the ones building it.</p>
<p>If something isn’t working, we’ll say so — and we hope you will, too. That kind of partnership creates the conditions where strong work can emerge.</p>
<p><img decoding="async" class="size-full wp-image-19838 alignnone" src="https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen.webp" alt="Elia and Colleen" width="730" height="1096" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen.webp 730w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen-266x400.webp 266w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen-93x140.webp 93w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen-400x600.webp 400w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen-580x871.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen-255x383.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/04/Elia-Colleen-60x90.webp 60w" sizes="(max-width: 730px) 100vw, 730px" /></p>
</div>        </div>
            </div>
</div>

<div id="csection-block_e9bbb27c9ed257c191df953af9c97c89" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Why this matters for the work</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Right now, every organization we work with is navigating some version of the same pressure: how do you evolve without losing what makes you distinctive? How do you respond to new technologies, new expectations, and new constraints without either clinging to the past or chasing every trend?</p>
<p>It&#8217;s a question we&#8217;ve been asking ourselves for 20 years.</p>
<p>The answer has never been: pick a lane and stay in it. It&#8217;s been: know what you actually believe, and let that be the constant while everything else evolves.</p>
<p>A kitchen that&#8217;s been open for 20 years has learned a few things. What works and what doesn&#8217;t. When to follow the recipe and when to improvise. How to serve people well, not just serve them.</p>
<p>The Way of the Web Chef isn&#8217;t a brand exercise. It&#8217;s a description of how we work. And for the clients who partner with us, that matters. Because the same rigor, curiosity, and care we apply to our own organization is exactly what we bring to yours.</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/work-life/way-of-the-web-chef-20-years/">What&#8217;s cooking: How our values evolved after 20 years</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The browser has grown up. Have we?</title>
		<link>https://www.fourkitchens.com/blog/development/browser-has-grown-up/</link>
		
		<dc:creator><![CDATA[The Web Chefs]]></dc:creator>
		<pubDate>Thu, 19 Mar 2026 21:12:35 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[DrupalCon]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[JavaScript]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19807</guid>

					<description><![CDATA[<p>Modern browsers now support many features once handled by frameworks. A practical look at when vanilla JavaScript is enough.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/development/browser-has-grown-up/">The browser has grown up. Have we?</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_477ce39e5e9a2854cb1b0907556f544b" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="cont single_col col-6-12 push-3-12 tablet-col-10-12 tablet-push-1-12 wysiwyg plast no_heading "><h3>By Mari Núñez and Andrés Díaz Soto</h3>
</div>        </div>
            </div>
</div>

<div id="csection-block_97fcb804d36ae5154291b3e096d191d9" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>If you study computer science or web development, you’ll take an introductory JavaScript course. Everyone starts in a similar place: variables, let and const (or var if you’re old enough), maybe even a conversation about the difference. You write a few functions, do some math, and concatenate some strings. It feels like learning a language in the abstract — technically correct, but removed from real work.</p>
<p>Before long, you are manipulating a web page. You grab an element, change its content, add a class, and attach a click handler. The browser responds. The page changes. It finally feels tangible.</p>
<p>But even then, JavaScript can feel like a layer you add on top rather than the foundation of the experience itself. And almost inevitably, you move to a library or framework. For many of us, that once meant jQuery.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_e92c7447b4f16188d57cda39feb5412e" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Abstraction solved real problems</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>jQuery did not become dominant because developers were lazy. It solved real problems. Browsers were fragmented. There was no consistent way to select elements from the DOM. Event handling varied. AJAX required wrestling with verbose XMLHttpRequest code and awkward callback patterns. jQuery unified those concerns behind a clean, approachable interface: the dollar sign selector, the <code>on</code> method, simple <code>get</code> and <code>post</code> helpers, animations like <code>fadeIn</code> and <code>slideUp</code>.</p>
<p>It was a necessary abstraction at the time.</p>
<p>Over the years, though, the platform evolved. Browsers standardized. APIs matured. ES6 modernized the language. CSS grew far more capable. Many of the problems jQuery once addressed were absorbed directly into the browser.<br />
The platform changed.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_3653c0c64305b074d38dff20ea11ec21" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>When thoughtful choices become defaults</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>We may be living through a similar moment with modern frameworks. React and other tools solve meaningful problems. They help teams move quickly and provide structure, especially for developers early in their careers. In many cases, they are exactly the right choice.</p>
<p>But over time, thoughtful decisions can quietly become defaults. A subtle assumption can creep in: if something feels modern or interactive, it probably requires a framework.</p>
<p>The shift is not dramatic. It is behavioral. Instead of beginning with the problem, we sometimes begin with the stack. If an interaction feels dynamic or app-like, we assume it needs something larger.</p>
<p>Frameworks offer guardrails and shared patterns, and that consistency is valuable. But when the tool becomes the starting point for every conversation, it can narrow the range of options we consider. We stop asking what the browser already provides. We begin to treat complexity as the baseline for modern work.</p>
<p>This is not bad architecture.It is often just unexamined architecture.</p>
<p>It shows up in small ways: adding a dependency before exploring a native API, reaching for a heavy client-side solution when progressive enhancement might be enough, and introducing new tooling because that is what modern projects tend to do. Each decision is understandable on its own. Over time, though, they expand the surface area of a project: more dependencies, more upgrades, more maintenance. Fewer dependencies can mean fewer upgrades to manage, fewer compatibility conflicts, and a smaller maintenance surface over time.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_5d293f122ad87da3c5bd7859d339bf8c" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The foundation is stronger than we remember</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>While we have been refining our build pipelines and debating frameworks, the browser has continued to evolve. Quietly and steadily. Modern JavaScript is not what it was 10 or even five years ago. Today’s browsers ship with stable, well-documented APIs that address many of the use cases we once handled with libraries.</p>
<p>Need to know when something enters the viewport? There is Intersection Observer.</p>
<p>Need to react to changes in the DOM without polling? Mutation Observer is built in.</p>
<p>Need to respond to screen size changes? MatchMedia handles that cleanly.</p>
<p>Need to persist data between sessions? Local storage is there.</p>
<p>Need to integrate with a device’s native share dialog? There is an API for that.</p>
<p>CSS has evolved as well. Layout systems, transitions, scroll behaviors, and positioning features eliminate entire categories of JavaScript we once considered unavoidable.</p>
<p>And the language itself has matured. Modules, promises, async and await, richer array methods, cleaner syntax. These are no longer experimental features. They are part of the platform.</p>
<p>None of this is particularly flashy. It is simply what the browser now provides.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_3ad2561adcf623237652f2ce49e043a4" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The hard part is not writing JavaScript. It is knowing what exists.</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>The important point is not that every project should avoid frameworks. It is that many of the problems we once solved with external libraries now have first-class support in the browser itself. So, what does that mean in practice?</p>
<p>Add one small pause to your workflow. Before installing a dependency, check the platform. Search MDN. Look up “browser API for…” and see what comes back. You might discover that Intersection Observer replaces the scroll library you were about to add. Or that CSS handles the animation without JavaScript at all.</p>
<p>It means reframing how you evaluate tradeoffs. When a feature request comes in, write down the requirement in plain language before you write down the stack. What actually needs to happen? A modal opens. Content animates on scroll. State persists between visits. Once the behavior is clear, ask whether the browser can already do it.</p>
<p>It means keeping a short list of native capabilities in your mental toolkit: MatchMedia. Local storage. Native form validation. ResizeObserver. The goal is not to memorize every API. It is important to remember that vanilla JavaScript is an option.</p>
<p>It also means normalizing this conversation on your team. When someone suggests a new library, ask a simple question: is there a native way to do this? Not as a challenge. As due diligence.</p>
<p>None of this requires abandoning modern tooling. It simply widens your decision tree. And it costs almost nothing but attention.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_f01b850ddedfa20bdcd59c23d09a5c8b" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Join us at DrupalCon Chicago</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>In our session, &#8220;<a href="https://events.drupal.org/chicago2026/session/elevating-drupal-experiences-vanilla-javascript" target="_blank" rel="noopener">Elevating Drupal Experiences with Vanilla JavaScript</a>,&#8221; we’ll share how we’ve used modern browser capabilities to build rich, interactive experiences within Drupal — not by rejecting frameworks, but by pairing Drupal’s strengths with what the browser already does well.<br />
We’ll walk through:</p>
<ul>
<li>Where native APIs replaced heavier dependencies</li>
<li>Where progressive enhancement simplified complexity</li>
<li>Where we had to rethink our own assumptions</li>
</ul>
<p>More than anything, we hope it sparks a conversation.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_f711945725603b11e57d2dc1219e0d82" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>If you go</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>If you’re going to <a href="https://events.drupal.org/chicago2026" target="_blank" rel="noopener">DrupalCon Chicago 2026</a>, please make sure to attend the session with Mari and Andrés.</p>
<p>Where: Hilton Chicago, 720 S. Michigan Ave., Chicago, IL 60605, Salon A-2 (LL)</p>
<p>When: Tuesday, March 24, 2026, 4:10–5:00pm</p>
<p><a href="https://events.drupal.org/chicago2026/session/elevating-drupal-experiences-vanilla-javascript" target="_blank" rel="noopener">For session details and tickets, click here</a>.</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/development/browser-has-grown-up/">The browser has grown up. Have we?</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>When the people who run the platform aren’t the people who run the content</title>
		<link>https://www.fourkitchens.com/blog/digital-strategy/designing-cms-dashboards/</link>
		
		<dc:creator><![CDATA[Dave Hansen-Lange]]></dc:creator>
		<pubDate>Tue, 17 Mar 2026 21:33:34 +0000</pubDate>
				<category><![CDATA[Digital strategy]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Content Strategy]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[DrupalCon 2026]]></category>
		<category><![CDATA[Events]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19790</guid>

					<description><![CDATA[<p>How a Drupal dashboard built for 500 editors reduced friction, improved visibility, and turned platform signals into editorial action.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/digital-strategy/designing-cms-dashboards/">When the people who run the platform aren’t the people who run the content</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_29454af126bdf3871ee13078c7878cd6" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/dave-hansen-lange/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2026/02/dave@2x-349x400.webp" alt="Dave Hansen-Lange" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/dave-hansen-lange/">Dave Hansen-Lange</a></p><p class="job_title">Director of Technical Strategy</p><p class="desc">Dave has been crafting websites since 2003 and has been active with Drupal communities around the world, sharing a passion for improving effectiveness, editorial experience, and long-term success.</p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>A dashboard isn’t just a summary page. It’s a statement of priorities. Every item that appears, and everything that doesn’t, tells editors what the organization believes actually matters.</p>
<p>That’s worth thinking carefully about, because most dashboards aren’t designed that way. They’re assembled. A few shortcuts here, some default widgets there. The result is a starting screen that reflects what was easy to build rather than what editors actually need.</p>
<p>We help manage a Drupal platform that supports 500 editors across 130 sites. Getting a dashboard right for that kind of scale required us to ask some uncomfortable questions about what we actually valued, and what we’d been ignoring.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_592db16c4c0bcb5d27f5fab1cac47d28" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The quarterly PDF problem</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Before we built our dashboard, someone on our platform team was manually generating reports for each of the 130 sites every quarter. Accessibility problems. Broken links. Duplicate content. All compiled, formatted, and sent out as a PDF.</p>
<p>It was better than nothing. But it had two serious problems.</p>
<p>First, people were unlikely to act on it. A PDF that arrives by email, detached from the website itself, is easy to file away and forget. Second, even the editors who did read it had no way of knowing whether they were improving until the next quarter’s report showed up. The feedback loop was three months long.</p>
<p>This is a pattern that’s common across organizations: the information that would most help editors do better work exists somewhere, but it’s separated from the moment when they’re actually ready to act on it. Updates get coordinated in chat threads. Content issues arrive by email. Broken link reports live in spreadsheets.</p>
<p>Editors are expected to carry all of that context across multiple tools and respond when something surfaces. For people whose primary job isn’t web publishing, that’s a lot to ask.<br />
A dashboard brings that context back into the CMS, the place where the work actually happens.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_bf643c1450dd42f0fbd21268f7dd885c" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>The right moment to surface information</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Editors don’t log into a CMS at random. They arrive with a purpose: fixing a typo, publishing a new story, or checking whether a content import ran correctly. Whatever the task, they’re already in the right mindset. They’re thinking about the website and are ready to make changes.</p>
<p>That makes login the ideal moment to surface what needs attention.</p>
<p>On our dashboard, we highlight the pages with the most accessibility errors. We show a list of broken links. We surface draft content that never got published. These aren’t things editors have to go hunting for. They appear right when editors are ready to do something about them.</p>
<p>We also use the dashboard to answer questions editors commonly ask us. One recurring one: how does content get into the site from other university systems? Faculty profiles, events, and course data. All of it comes in through automated imports. Drupal has robust tools for this, but its default interface exposes every option and setting, which is overwhelming for a content editor. So we’d never exposed it to them at all. Editors had no visibility into something that was working fine. They just didn’t know it.</p>
<p>The dashboard gave us a place to show a simplified view of those imports: here’s when faculty profiles last synced, here’s the kinds of courses that are imported to this site. Just enough to answer the question and build confidence. Support requests about content imports dropped significantly after we added that.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_5254bef3f456f15b2c4e1831a5e60f04" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>From awareness to action</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Information alone doesn’t change much. The problem usually isn’t awareness. It’s timing.</p>
<p>When a broken link shows up in a quarterly report, the path from seeing it to fixing it is long and uncertain. Someone reads the report, makes a mental note, hopes they remember. Most of the time, they don’t. By integrating that same information into the dashboard, the cycle changes:</p>
<p><img decoding="async" class="alignright size-full wp-image-19794" src="https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-scaled.webp" alt="content management dashboard" width="937" height="2560" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-scaled.webp 937w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-146x400.webp 146w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-586x1600.webp 586w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-768x2097.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-562x1536.webp 562w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-750x2048.webp 750w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-1200x3277.webp 1200w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-51x140.webp 51w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-220x600.webp 220w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-1100x3004.webp 1100w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-580x1584.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-255x696.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-17-55-38-Dashboard-Department-of-Economics-60x164.webp 60w" sizes="(max-width: 937px) 100vw, 937px" />Quarterly report → read → maybe remember → maybe act later</p>
<p>becomes</p>
<p>Login → see issue → click → fix</p>
<p>The feedback loop collapses from months to minutes. A broken link becomes a clickable item. A page stuck in draft becomes a quick decision. A list of accessibility errors becomes something an editor can start working through today.</p>
<p>One practical note from experience: some data sources introduce delays. Our broken link list comes from Siteimprove via API, which means that when an editor fixes a broken link, it won’t disappear from the dashboard immediately. We didn’t think about that until after we launched. It’s not a dealbreaker, but it’s worth designing around. At minimum, set expectations with editors so a fixed link that still appears on the list doesn’t feel like a bug.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_61319f6397323a7cc1ebdc3c3e2358de" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Every dashboard reflects a choice</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Dashboards aren’t neutral. They’re curated.</p>
<p>Every item that appears is there because someone, explicitly or quietly, decided it mattered. Looking at our current dashboard, I can tell you what it says about our priorities: we value accessible content (pages with the most accessibility errors are one of the most prominent blocks), and we value simplicity and iteration over comprehensiveness.</p>
<p><img decoding="async" class="alignright size-full wp-image-19798" src="https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM.webp" alt="content dashboard menu" width="780" height="1582" srcset="https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM.webp 780w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-197x400.webp 197w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-768x1558.webp 768w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-757x1536.webp 757w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-69x140.webp 69w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-296x600.webp 296w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-580x1176.webp 580w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-255x517.webp 255w, https://www.fourkitchens.com/wp-content/uploads/2026/03/Screenshot-2026-03-06-at-5.57.33-PM-60x122.webp 60w" sizes="(max-width: 780px) 100vw, 780px" /></p>
<p>What’s not on the dashboard is equally revealing. We don’t have traffic metrics or analytics. For this particular higher ed institution, that’s a deliberate choice. The focus is on content quality and editor success, not marketing outcomes. For other clients we work with, traffic data would need to be front and center. The dashboard has to reflect what that organization actually cares about.</p>
<p>The conversations that happen while building a dashboard are often more valuable than the dashboard itself. When you ask your team what should appear on it, you surface competing priorities that usually haven’t been written down anywhere:</p>
<ul>
<li>What are editors most commonly asking us for help with?</li>
<li>What do we wish editors were doing that they aren’t?</li>
<li>What should be the first thing someone sees when they log in?</li>
<li>What action should be easiest to take?</li>
</ul>
<p>Those questions don’t always have obvious answers. But asking them is how you build something useful rather than something that just looks like a dashboard.</p>
<p>And don’t let perfect be the enemy of good. Our first dashboard was basic: simple tables, in a single column, nothing animated or interactive. If you get a dozen useful things on a dashboard, the organization as a whole is going to be better for it. Start there, then build up.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_3994d5dea8cd5ca1f314c7d511b47e5a" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Guidance, not enforcement</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>There’s a real risk that a dashboard drifts into feeling like a compliance tool, a place that exists primarily to point out what’s wrong. If the only things editors see when they log in are warnings and error counts, the dashboard starts to feel like surveillance.</p>
<p>The same information can be framed very differently. A list of pages with accessibility errors isn’t a punishment; it’s a prioritized to-do list. A reminder about draft content that was never published helps an editor finish work that might otherwise be abandoned. A note that a component has recently changed gives editors a heads-up to check their pages before finding out something looks broken.</p>
<p>That last one is something we’ve gotten real value from. Our platform has 130 sites, which means making a breaking change to a component has a wide impact. Before we had the dashboard, that kind of communication was difficult. We still do targeted communications about breaking changes. But now we also use a simple announcements block (it pulls from a Google spreadsheet where each row is an announcement) to reach editors right where they’re working. It’s low-tech, but it means we can flag an upcoming change and tell editors exactly what to check. That’s made us more comfortable shipping improvements we might otherwise have sat on.</p>
<p>The goal isn’t to catch mistakes. It’s to help editors succeed.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_67a7de59e056ec34cee6d44e004883d7" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Supporting editors at scale</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>When your platform supports hundreds of editors across dozens of sites, traditional support breaks down fast. You can’t train everyone personally. You can’t answer every Slack message. And the editors who log in only a few times a year don’t have the context that frequent users build up over time.</p>
<p>The platform itself has to take on more of that responsibility.</p>
<p>One thing that helped clarify our thinking: on the back end, your audience is actually more focused than it might seem. On the front end of a university website, you’re trying to serve prospective students, current students, faculty, staff, donors, and more. But in the CMS, your primary audience is your content editors. There might be a few other users (stakeholders who log in occasionally to get a lay of the land, or interns assigned to clean up a single page), but by and large, you’re designing for a pretty clear group.</p>
<p>For us, that meant focusing our first version on the editors who log in regularly and need to take action. We can add more guidance for infrequent users in later iterations. Starting with the core use case meant we shipped something useful without trying to solve everything at once.</p>
<p>A well-designed dashboard becomes a quiet guide embedded in the platform, helping editors move forward without needing someone from the platform team to step in. At scale, that kind of built-in guidance isn’t just helpful. It’s essential.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_c6a5502f765efdc52f914572632a0b84" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Join us at DrupalCon Chicago</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>In our session, &#8220;<a href="https://events.drupal.org/chicago2026/session/dashboard-works-giving-editors-what-they-want-focusing-what-they-need" target="_blank" rel="noopener">A Dashboard that Works: Giving Editors What They Want, But Focusing on What They Need</a>,&#8221; we’ll share the story behind a dashboard built for 500 editors across 130 sites — the decisions we made, the things we got wrong, and how we figured out what actually belongs on a dashboard and what doesn&#8217;t.</p>
<p>We&#8217;ll walk through:</p>
<ul>
<li>How we identified what editors needed versus what they asked for</li>
<li>How we balanced editorial priorities with technical realities</li>
<li>What we&#8217;d do differently if we were starting over</li>
</ul>
<p>Whether you manage one site or one hundred, we hope you leave with something you can use.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_1fd5ed57837952d2c88e274ed9c3f7fb" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>If you go</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>If you’re going to <a href="https://events.drupal.org/chicago2026" target="_blank" rel="noopener">DrupalCon Chicago 2026</a>, please make sure to attend the session with Dave Hansen-Lange and Albert Hughes.</p>
<p>Where: Hilton Chicago, 720 S Michigan Ave, Chicago, IL 60605, Williford B (3rd Floor)</p>
<p>When: Tuesday, March 24, 2026, 9:00–9:50am</p>
<p><a href="https://events.drupal.org/chicago2026/session/dashboard-works-giving-editors-what-they-want-focusing-what-they-need" target="_blank" rel="noopener">For session details and tickets, click here</a>.</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/digital-strategy/designing-cms-dashboards/">When the people who run the platform aren’t the people who run the content</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>And when I&#8217;m back in Chicago, I feel it&#8230;</title>
		<link>https://www.fourkitchens.com/blog/events/drupalcon-chicago-reflection/</link>
		
		<dc:creator><![CDATA[Colleen Carroll]]></dc:creator>
		<pubDate>Thu, 12 Mar 2026 21:46:07 +0000</pubDate>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[DrupalCon 2026]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19775</guid>

					<description><![CDATA[<p>A reflection on DrupalCon Chicago, community milestones, and what it means to keep rebuilding in a changing digital landscape.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/events/drupalcon-chicago-reflection/">And when I&#8217;m back in Chicago, I feel it&#8230;</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_ea66d0fd552bc94c917b6a5bc06cac77" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/colleen-carroll/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2026/02/colleen@2x-349x400.webp" alt="Colleen Carroll" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/colleen-carroll/">Colleen Carroll</a></p><p class="job_title">Chief Executive Officer</p><p class="desc">Colleen is responsible for driving Four Kitchens’ vision and long-term strategy.</p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>Chicago has always been a city that rebuilds. After the Great Fire, it didn&#8217;t just recover — it reimagined itself. It became a place where bold ideas take shape. It&#8217;s a city that rewards staying curious and doing the work.</p>
<p>It&#8217;s also the city that formed me. Chicago gave me creative inspiration and the drive to keep evolving, even when the landscape shifts under your feet.</p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3b5.png" alt="🎵" class="wp-smiley" style="height: 1em; max-height: 1em;" /> And when I&#8217;m back in Chicago, I feel it&#8230; — Djo</p></blockquote>
<p>For me, that feeling isn&#8217;t about coming back. I&#8217;ve been here. It&#8217;s about tapping into that energy again — the kind that pushes you to retool and rethink what&#8217;s possible. Especially now, when the pace of technology is pushing all of us to reconsider how we work and what we build.</p>
<p>The last time DrupalCon was in Chicago was 2011. Since then, Drupal has turned 25 and continued to evolve as a platform. Four Kitchens is turning 20 and has grown into something our founders couldn&#8217;t have predicted. And the Drupal community, which shaped my path from developer to CEO, is the reason any of it happened. Chicago feels like the right place to celebrate how far we&#8217;ve all come.</p>
<p>We&#8217;re bringing 13 Web Chefs to <a href="https://events.drupal.org/chicago2026" target="_blank" rel="noopener">DrupalCon Chicago</a> (Monday, March 23–Thursday, March 26), and we&#8217;re showing the work we&#8217;ve been focused on.</p>
<p>At Monday’s <a href="https://events.drupal.org/chicago2026/summits-trainings" target="_blank" rel="noopener">AI Summit</a> and later in the week at the Four Kitchens booth, Dave will be demoing Program Finder AI, a tool we&#8217;ve been building to help prospective students explore academic programs in a more intuitive way. Si Robins and I will be there all week, and <a href="https://www.getclockwise.com/c/si/drupalcon-chicago" target="_blank" rel="noopener">we&#8217;d welcome conversations</a> about long-term roadmaps, governance questions, or ways to support your internal team.</p>
<p>On Tuesday the 24th, Dave Hansen-Lange is co-presenting with Albert Hughes from Stanford on &#8220;<a href="https://events.drupal.org/chicago2026/session/dashboard-works-giving-editors-what-they-want-focusing-what-they-need" target="_blank" rel="noopener">A Dashboard that Works: Giving Editors What They Want, But Focusing on What They Need</a>.&#8221; If you&#8217;ve ever wrestled with building an editorial experience that actually serves your team, this one&#8217;s for you.</p>
<p>Later that afternoon, Mari Núñez and Andrés Díaz Soto are presenting &#8220;<a href="https://events.drupal.org/chicago2026/session/elevating-drupal-experiences-vanilla-javascript" target="_blank" rel="noopener">Elevating Drupal Experiences with Vanilla JavaScript</a>&#8221; — a look at how thoughtful frontend work can create meaningful impact without unnecessary complexity.</p>
<p>One of our <a href="https://fourkitchens.com/team/">core values</a> at Four Kitchens is Share What We Know. In that spirit, we&#8217;ve put together an <a href="https://www.fourkitchens.com/blog/ebook/website-rfp-guide/">RFP Recipe Guide</a> — practical guidance for teams navigating the often-overwhelming process of preparing an RFP. With many higher-ed fiscal years renewing July 1, this is the season when that work begins. Grab a copy at our booth or ask me about it directly.</p>
<p>Twenty years in, what I love most about this community is that it&#8217;s still full of people who want to build something that matters. Come find us, say hello, grab a coffee. I&#8217;ll be at trivia night on Thursday, too. Fair warning: I&#8217;m <em>not</em> competitive and I <em>love</em> to talk.</p>
<p>See you in Chicago! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3d9.png" alt="🏙" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f32d.png" alt="🌭" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3b5.png" alt="🎵" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f355.png" alt="🍕" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3ad.png" alt="🎭" class="wp-smiley" style="height: 1em; max-height: 1em;" /><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f3a1.png" alt="🎡" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
</div>        </div>
            </div>
</div>

<div id="csection-block_bfd6000ed3a0841ee70feebc0435144e" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Four Kitchens activations at DrupalCon Chicago</h2></div><div class="cont col-6-12 wysiwyg plast  "><h4>Program Finder AI demo at the AI Summit in Salon A-5 (lower level)</h4>
<p>Monday, March 23 at 10:40 am</p>
<h4>Program Finder AI demos at the Four Kitchens booth #116 (lower level)</h4>
<p>Tuesday, March 24 at 2:30 pm</p>
<p>Wednesday, March 25 at 12:30 pm</p>
<h4>Content Publisher demos at the Pantheon booth (lower level)</h4>
<p>Tuesday, March 24 at 10 am</p>
<p>Wednesday, March 25 at 1 pm</p>
<h4>&#8220;A Dashboard that Works: Giving Editors What They Want, But Focusing on What They Need&#8221; session in Williford B (third floor)</h4>
<p>Tuesday, March 24 at 9 am</p>
<h4>&#8220;Elevating Drupal Experiences with Vanilla JavaScript&#8221; session in Salon A-2 (lower level)</h4>
<p>Tuesday, March 24 at 4:10 pm</p>
<h4>“Beyond Card Grids: Using AI to Make Digital Experiences Human Again” lightning talk in Salon C (lower level)</h4>
<p>Tuesday, March 24 at 1:00 pm</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/events/drupalcon-chicago-reflection/">And when I&#8217;m back in Chicago, I feel it&#8230;</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Don’t let SimpleSAMLphp block your Drupal upgrade</title>
		<link>https://www.fourkitchens.com/blog/development/drupal-simplesamlphp-saml-auth-migration/</link>
		
		<dc:creator><![CDATA[Robert Arias]]></dc:creator>
		<pubDate>Thu, 22 Jan 2026 23:15:32 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Drupal Planet]]></category>
		<category><![CDATA[SAML]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19699</guid>

					<description><![CDATA[<p>SimpleSAMLphp can block Drupal 11 upgrades. Learn how to migrate to SAML Authentication, avoid dependency conflicts, and keep your upgrade timeline on track.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/development/drupal-simplesamlphp-saml-auth-migration/">Don’t let SimpleSAMLphp block your Drupal upgrade</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_26046b787f3ed13a1278e08cd79ad67e" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/robert-arias/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2026/02/robert@2x-349x400.webp" alt="Robert Arias" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/robert-arias/">Robert Arias</a></p><p class="job_title">Backend Engineer</p><p class="desc">Robert always aims to engineer software that is maintainable, scalable, and reusable while always trying to improve himself and learn from others.</p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>Thousands of Drupal sites use SimpleSAMLphp for single-sign-on (SSO) authentication. But with Drupal 11 here, this setup won’t be supported without a lot of hard work. Here’s what site owners and developers should know.</p>
<p>PHP applications integrating with SAML have relied on the SimpleSAMLphp library. Following this standard, the Drupal community created the <a href="https://www.drupal.org/project/simplesamlphp_auth" target="_blank" rel="noopener">SimpleSAMLphp Authentication module</a>, which is used by more than 14,000 sites (as of this publication), to provide SSO authentication integration for Drupal sites.</p>
<p>By moving away from it now, you’ll ensure your Drupal site is ready for Drupal 11 (and future versions) without downtime or dependency conflicts, and you can take advantage of the latest features immediately.</p>
<p>Although this library and module is a great resource for SAML integrations, it conflicts with Drupal upgrade paths, hindering the efforts to keep Drupal sites up to date. This is the case for sites that want to upgrade to Drupal 11. If your site has this dependency, you may be stuck until there’s a compatible version of the library.</p>
<p>The reason behind this issue is due to the SimpleSAMLphp library having a dependency to older Symfony versions, which collides with Drupal Core Symfony dependency.</p>
<p>Although we’re almost there, this issue will continue to persist and will make your site&#8217;s upgrades dependent on this library. From a technical standpoint, the goal when developing sites is to have the least amount of dependencies, or at least dependencies that are constantly maintained. You can read <a href="https://www.drupal.org/project/simplesamlphp_auth/issues/3447463" target="_blank" rel="noopener">this Drupal issue</a> to know more about the current issues with the module and D11.</p>
<p>The good news is that there’s another PHP library for SAML integrations that has a Drupal contributed module, and it has no conflicting dependencies with Drupal Core! The module is called <a href="https://www.drupal.org/project/samlauth" target="_blank" rel="noopener">SAML Authentication</a>, and it uses <a href="https://developers.onelogin.com/saml/php" target="_blank" rel="noopener">OneLogin SAML toolkit for PHP</a>. This guide will provide you with the steps for an easy and seamless migration from the SimpleSAMLphp module to SAML Authentication!</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_3cb7e20b50fc930495a56e48d509c2c6" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Who this guide is for</h2></div><div class="cont col-6-12 wysiwyg plast  "><ul>
<li>Higher ed Drupal teams planning for Drupal 11</li>
<li>Platform owners managing SSO across multiple environments</li>
<li>Engineers who want to reduce upgrade risk caused by third-party dependencies</li>
</ul>
</div>        </div>
            </div>
</div>

<div id="csection-block_3776c324bf56c5ea9269ca174b5985cf" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>SAML Authentication</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>The <a href="https://www.drupal.org/project/samlauth" target="_blank" rel="noopener">SAML Authentication module</a> is a really straightforward resource to set up SSO into your site. From my point of view, it’s way easier to configure and maintain than SimpleSAMLphp, so, even if you’re not worried about upgrades (though should you be, read our <a href="https://www.fourkitchens.com/blog/development/drupal-11-essential-guide/" target="_blank" rel="noopener">post about upgrading to Drupal 11</a>), this module will make the maintenance of your site less complicated. However, it’s not perfect. It has its caveats, which I will cover!</p>
<p>Most of the configuration required for SAML Auth is already handled in your site’s SimpleSAMLphp settings. However, there’s already a tool that automates this task!</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_6106a4b21df6d964d3cd4ab0fb3b837c" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>SimpleSAMLphp to SAML Auth Migration helper module</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>If you read the <a href="https://www.drupal.org/project/simplesamlphp_auth/issues/3447463" target="_blank" rel="noopener">Drupal 11 compatible issue thread</a> for SimpleSAMLphp, you will stumble upon <a href="https://www.drupal.org/project/simplesamlphp_auth/issues/3447463#comment-16157404" target="_blank" rel="noopener">Jay Beaton’s comment</a>: He created a <a href="https://www.drupal.org/sandbox/jrb/3531935" target="_blank" rel="noopener">helper module</a> to automate the migration of SAML Auth from SimpleSAMLphp. This module will make the switch pretty fast! However, depending on your site’s setup, you must be careful on what settings you’re migrating, especially if the configuration varies by environment.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_2b87e549edbbe14218c65df927cec235" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Migrating from SimpleSAMLphp to SAML Authentication</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Before migrating, there are a few decisions worth making. Let’s dive into them!</p>
<h3>1. Install SAML Authentication</h3>
<p>Naturally, because we want to migrate into SAML Authentication, we need to install it on our site.</p>
<ol>
<li>Run <code>composer require drupal/samlauth</code></li>
</ol>
<h3>2. Install the helper module</h3>
<p>The <a href="https://www.drupal.org/sandbox/jrb/3531935" target="_blank" rel="noopener">SimpleSAMLphp to SAML Auth Migration module</a> is currently in development, so the module itself is a sandbox project in <a href="http://Drupal.org" target="_blank" rel="noopener">Drupal.org</a>. In order to install it, you need to:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li style="list-style-type: none;">
<ol>
<li style="list-style-type: none;">
<ol>
<li style="list-style-type: none;">
<ol>
<li>Add the sandbox as a custom repository into your <code>composer.json</code>:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">"samlauth_helper": {
            "type":"package",
            "package": {
                "name": "drupal/samlauth_simplesamlphp_auth_migration",
                "version":"1.0.0",
                "type": "drupal-module",
                "source": {
                    "url": "https://git.drupalcode.org/sandbox/jrb-3531935.git",
                    "type": "git",
                    "reference":"1.0.x"
                }
            }
        }</pre>
</li>
<li>This is the composer command: <span style="font-weight: 400;"><code>composer config repositories.samlauth_helper '{"type": "package", "package": {"name": "drupal/samlauth_simplesamlphp_auth_migration", "version": "1.0.0", "type": "drupal-module", "source": {"url": "https://git.drupalcode.org/sandbox/jrb-3531935.git", "type": "git", "reference": "1.0.x"}}}'</code></span></li>
<li>Require the module: <code>composer require drupal/samlauth_simplesamlphp_auth_migration</code></li>
<li>Enable it: <code>drush en samlauth_simplesamlphp_auth_migration -y</code></li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
</ol>
<h3>3. Migrate the configuration</h3>
<p>There are two ways for you to migrate the configuration: either through <code>drush</code> commands or through the UI. For the purpose of this article, we will migrate the configuration through the command line, however, you can do it through the UI in this path: <code>admin/config/people/saml/simplesamlphp-auth-migration</code>.</p>
<p>That path also provides a nice visualization of the configuration mapping and migration that will be performed. You can also view it running <code>drush samlauth-simplesamlphp-show-changes</code> command.</p>
<h4>3.1. Before migrating</h4>
<p>Usually, sites have different setups for different environments, such as testing, development, or production. Each environment may have its own configuration, and if you’re running a migration locally, SimpleSAMLphp might not even be enabled.</p>
<p>Knowing this, depending on where you’re running the migration, you will need to manually set some of the settings yourself. For example, the staging environment uses a different certificate than production. Locally, the staging environment SimpleSAMLphp settings are enabled by default. When you run the migration command, the settings for the active environment will be migrated over, not the other for production.</p>
<p>Another example is that the Entity ID of the SP is dynamic, depending on the environment. If so, you will need to override the SAML Authentication settings, rather than the SimpleSAMLphp.</p>
<p>For the ones that need to be migrated manually, you can either set up a config split for each environment, or you can do some configuration overrides through <code>settings.php</code>. Just beware that, if you need to override arrays, it may not be possible to override them through <code>settings.php</code>. <a href="https://www.drupal.org/project/drupal/issues/2990549" target="_blank" rel="noopener">Read more about the issue</a>.</p>
<p>I’ve done both approaches. The approach you take will depend on your site. I’ve set different configuration splits, and have overridden values through <code>settings.php</code>. In my case, I just create a <code>settings.saml.php</code> file and include it in <code>settings.php</code>.</p>
<h4>3.2. Known caveats</h4>
<p>Although SAML Authentication is way simpler to set up, it’s missing a feature SimpleSAMLphp provides: you can link a remote IdP certificate. In SAML Authentication, the files must be physical in your server. You can only link their path.</p>
<p>This means if your site has remote IdP certificates, you will have to copy its contents and create the files into your site folder. This may make your maintenance process a bit more nuanced, as if the IdP certificates change, you will have to update the physical files from your site.</p>
<p>For the purposes of this migration, if you are linking to remote IdP certificates, you will have to create the files. I’ve faced two situations: remote and local files. For the remote certificates, I decided to put them into <code>web/private/saml-certificates</code>.</p>
<h4>3.3. Migrate the configuration</h4>
<p>Having the whole context of what we need to be careful about, let’s migrate the config! It’s very simple:</p>
<ol>
<li>Run <code>drush samlauth-simplesamlphp-migrate</code>
<ol>
<li>You can provide the <code>--cert-path</code> for your certificate path; or</li>
<li>You can go to <code>/admin/config/people/saml/saml</code> and add it into the <code>X.509 certificate(s)</code> field</li>
</ol>
</li>
<li>Confirm it was migrated correctly
<ol>
<li>You can compare against your SimpleSAMLphp configuration</li>
</ol>
</li>
</ol>
<h4>3.4. The <code>Auth Map</code> table</h4>
<p>Both SimpleSAMLphp and SAML Authentication use the <a href="https://www.drupal.org/project/externalauth" target="_blank" rel="noopener">External Authentication module</a>, it allows a SAML authenticated user with an authname identical to the one in the authmap table to be logged in as that Drupal user. Among those values, it stores the provider, i.e., the module that allowed the authentication.</p>
<p>The SAML helper module automatically migrates the SimpleSAMLphp <code>authmap</code> values into SAML Authentication. However, this is a database migration, so, if you migrated locally and then pushed your changes into a remote environment, this migration won’t be reflected there. To make sure it also happens, you can:</p>
<ol>
<li style="list-style-type: none;">
<ol>
<li>If you keep the helper module in your remote environments, you can create an update hook that calls the service that makes the changes:
<pre class="EnlighterJSRAW" data-enlighter-language="php">/**
 * Enable SAML auth migration module and update authmap table.
 */
function hook_update_N(): void {
  if (!\Drupal::moduleHandler()-&gt;moduleExists('samlauth_simplesamlphp_auth_migration')) {
    \Drupal::service('module_installer')-&gt;install(['samlauth_simplesamlphp_auth_migration']);
  }
  /** @var \Drupal\samlauth_simplesamlphp_auth_migration\Migrate $saml_auth_utility */
  $saml_auth_utility = \Drupal::service('samlauth_simplesamlphp_auth_migration.migrate');
  $saml_auth_utility-&gt;updateAuthmapTable();
}
</pre>
</li>
</ol>
</li>
</ol>
<p>Or, you can just do it yourself:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="php">/**
 * Enable SAML auth module and update authmap table.
 */
function hook_update_N(): void {
  if (!\Drupal::moduleHandler()-&gt;moduleExists('samlauth')) {
    \Drupal::service('module_installer')-&gt;install(['samlauth']);
  }

  \Drupal::database()
    -&gt;update('authmap')
    -&gt;fields(['provider' =&gt; 'samlauth'])
    -&gt;condition('provider', 'simplesamlphp_auth')
    -&gt;execute();
}</pre>
<h3>4. Testing the new SAML Authentication</h3>
<p>Once you’ve migrated over everything, the last step is to test if the configuration migration actually works. In order for you to test it, you will need to make changes to your IdP with the new values of the new SAML implementation: the metadata URL, the Assertion Consumer Service, and the Single Logout Service.</p>
<p>If you don’t want to override the existing values from your current SAML IdP, you can modify the Entity ID for SAML Authentication to create a new one, that way you could have two entries in you IdP for SimpleSAMLphp and SAML Authentication.</p>
<p>Regardless, it may be the case that making such a change could take some time if it’s handled by another team. If that’s the case, you would have to wait until those changes are implemented to test the new SAML implementation. Fortunately, the SAML Auth helper module provides a way to masquerade SimpleSAMLphp endpoints with SAML Auth implementations, that way you can test right away without having to make any changes to the IdP. You would eventually need to do it, but for testing purposes, you can use the helper module. To do so, you have to:</p>
<ol>
<li>Remove the <code>simplesaml</code> folder from your web/docroot folder</li>
<li>Disable the <code>simplesamlphp_auth</code> module</li>
<li>Remove any composer script/automated script that symlinks any SimpleSAMLphp related behavior</li>
<li>Enable the <em>Use SimpleSAMLphp Authentication Routes</em> option offered by the SAML Auth helper module (find it on <code>admin/config/people/saml/saml</code>)</li>
</ol>
<p>Once that’s done, you can try and log in using SSO into the site you’re trying to migrate. If it works, fantastic! You only need to (i) request the IdP changes for you to completely move away from SimpleSAMLphp, and (ii) you can remove the helper module.</p>
<h4>4.1. Remote host provider issues</h4>
<p>In some cases, SSO is enabled in certain specific environments. That means you may want to test on those environments; you only need to deploy and let the environment be built with the new changes. However, it is not as straightforward as you may think. As a matter of fact, the helper module route masquerading may not even work.</p>
<p>Before speaking about these issues, these are the remote host providers the masquerading will work:</p>
<ol>
<li>Acquia</li>
<li><a href="http://Platform.sh" target="_blank" rel="noopener">Platform.sh</a> (though you will have to edit the <code>.platform.app.yml</code> file)</li>
</ol>
<h5>4.1.1. Pantheon special routing rule</h5>
<p>If your site is hosted on Pantheon, the helper module masquerading won’t work. This is due to a specific routing rule Pantheon seems to have.</p>
<p>If you try and test the new SAML implementation with the helper module, you will get a HTTP 404 error, specifically stating that the file was not found — a text 404, completely different from your Drupal 404. In order to test this with the helper module, the steps (from the module itself) specify that “Make sure that SimpleSAMLphp is not available on the server at https://site/simplesaml/module.php”.</p>
<p>Even after removing the library from your web/docroot, the helper module won’t work on Pantheon. After some testing and investigation, and knowing that Pantheon uses Nginx for routing, I was able to confirm Pantheon has a special rule for paths that go to <code>/simplesaml/*.php</code>.</p>
<p>Any path following that pattern won’t be routed through Drupal. Nginx makes sure to look up for a file inside your web/docroot <code>simplesaml</code> folder. Hence why I was getting a text 404, instead of Drupal’s 404. I made a test to confirm this: I placed a <code>hello.php</code> file inside that folder that just returns a simple text message. When I went to <code>/simplesaml/hello.php</code> I was getting said message.</p>
<p>Due to this fact, the helper module route masquerading won’t work because that’s a path expected to be handled by Drupal; on Pantheon, that won’t be the case. It won’t work.</p>
<p>But, good news is, there’s a workaround you can use in order to confirm your migration worked! Before diving into that, I want to give a shout out to Jay Beaton, the helper module maintainer! I reached out to him on Drupal Slack about the route overrides not working. He was kind enough to listen and help me; and, after talking to him, I was able to realize and discover this Pantheon issue; and the workaround I’m going to mention was recommended by him. Thanks so much for such a great tool, and help!</p>
<h5>4.1.2. Testing workaround</h5>
<p>Even if you cannot test remotely, you can do it locally. SAML validation and redirections happen on the browser level, meaning that, if you change your machine DNS to point a SSO-enabled domain to your local machine environment, you will be able to test it there. This is how you do it:</p>
<ol>
<li>For <code>DDEV</code>, you need to edit the <code>config.yaml</code> file and:
<ol>
<li>Add the domain you want to override in the <code>additional_fqdns</code> property</li>
<li>Switch to false the <code>use_dns_when_possible</code> property, so DDEV always updates the <code>/etc/hosts</code> file with the project hostname instead of using DNS for name resolution</li>
<li>Restart DDEV</li>
<li>If for some reason the custom domain is not reaching your local environment, make sure the custom domain is in your <code>/etc/hosts</code> file.</li>
</ol>
</li>
<li>For <code>lando</code>, you can add <a href="https://docs.lando.dev/landofile/proxy.html" target="_blank" rel="noopener">proxies</a> with custom domains.
<ol>
<li>You will need to edit your <code>/etc/hosts</code> file.</li>
</ol>
</li>
</ol>
<p>And that’s it! You can now go to the custom domain while using your local environment!</p>
<h3>5. You’re almost there</h3>
<p>With the configuration migrated over to SAML Authentication, you should be able to use SSO. However, if your site has custom code that uses SimpleSAMLphp services or is hooked into one of its hooks, you will need to adjust your code accordingly.</p>
<p>For example, from the sites I’ve migrated:</p>
<ol>
<li>There was code that was using the <code>simplesamlphp_auth.manager</code> service, specifically to call the <code>isAuthenticated()</code> function.
<ol>
<li>I changed it to use the SAML Authentication service, <code>samlauth.saml</code>, and calling the <code>getAttributes()</code> function, which does the same as SimpleSAMLphp <code>isAuthenticated()</code> (it gets the attributes if the current user was logged in using SSO, otherwise, it returns an empty array).</li>
</ol>
</li>
<li>The <code>hook_simplesamlphp_auth_user_attributes</code> and <code>hook_simplesamlphp_auth_existing_user</code> hooks were being used.
<ol>
<li>I had to create an Event Subscriber (as SAML Authentication doesn’t use hooks for these) that hooks to <code>SamlauthEvents::USER_LINK</code>, equivalent to the existing user hook, and <code>SamlauthEvents::USER_SYNC</code>, equivalent to user attributes hook.</li>
</ol>
</li>
</ol>
<p>You will have to go and search in your code for any SimpleSAMLphp usage and change it!</p>
<h3>6. Hurray!</h3>
<p>That’s it. With SimpleSAMLphp out of the way, your Drupal site is no longer blocked by upstream dependencies — and you’re free to plan your Drupal 11 upgrade on your timeline. Happy coding!</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/development/drupal-simplesamlphp-saml-auth-migration/">Don’t let SimpleSAMLphp block your Drupal upgrade</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mind over malfunction: Emotional intelligence in debugging</title>
		<link>https://www.fourkitchens.com/blog/development/emotional-intelligence-website-debugging/</link>
		
		<dc:creator><![CDATA[The Web Chefs]]></dc:creator>
		<pubDate>Fri, 12 Dec 2025 14:03:27 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[technical strategy]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19673</guid>

					<description><![CDATA[<p>Debugging isn’t just about code — it’s about composure. Emotional intelligence helps developers manage stress, stay focused, and solve problems faster.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/development/emotional-intelligence-website-debugging/">Mind over malfunction: Emotional intelligence in debugging</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_66171b678df32c989515a93c88eb4c1e" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/the-web-chefs/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2023/03/fourkitchens-logomark-kitchenskelly-rgb.svg" alt="The Web Chefs" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/the-web-chefs/">The Web Chefs</a></p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p><b>By Rodrigo Espinoza and Edwin Torrez Barrera</b></p>
</div>        </div>
            </div>
</div>

<div id="csection-block_b7b87050efa14abe877fb77754cf7d0f" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>Debugging is an inevitable part of the development lifecycle. And when you’re staring at a blank screen where a website should be, armed with only a vague “something’s broken” and zero context, the process can feel more like a stress test than a technical task. But effective debugging isn’t just about code. It’s about mindset.</p>
<p>At Four Kitchens, we know that navigating high-pressure situations requires more than technical skill. The ability to stay focused, communicate clearly, and manage frustration is just as critical as knowing your way around an error log.</p>
<p>Here’s how emotional intelligence makes better developers and better outcomes.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_bb48dd87cba67967b3a3a169d0adf065" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Maintain code and composure: Self-regulation is your debugging superpower</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>When something breaks, <em>everything</em> is suspect: frontend, backend, third-party tools, even data. Add a looming deadline or a frustrated stakeholder, and it’s easy to spiral. That’s where self-regulation — your ability to stay calm and grounded — makes a difference.</p>
<h3>Stay focused</h3>
<p>Debugging is rarely a quick fix. It’s often a long, layered investigation. Before diving in, pause to reset your priorities with your team. Let them know where your focus is shifting so you&#8217;re not blocking others or working under silent pressure.</p>
<h3>Avoid panic mode</h3>
<p>It’s tempting to throw everything at the wall in search of a fix. Instead, start with a plan. A checklist grounds your thinking and avoids rabbit holes. We always verify recent backups first. It eases the mind and gives you room to troubleshoot confidently.</p>
<h3>Adapt on the fly</h3>
<p>Sometimes, quick fixes trump pristine code. If an external service is the culprit, disabling it temporarily may be the fastest way to restore core functionality. Good developers know when to ship the workaround and save the polish for later.</p>
<h3>Take a breath</h3>
<p>Literally. A moment of pause can often deliver the clarity you need to see what you’ve missed. Reflection is part of the process, not a delay.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_9d4bdd580db2a2bbd67cf0e57b323ee1" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Less reactive, more reflective</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>Self-awareness leads to smarter decisions. It’s easy to jump straight into the code when something’s on fire. But emotional intelligence asks you to take stock first — of the problem <em>and</em> of yourself.</p>
<h3>Start with understanding</h3>
<p>When a support ticket lands without much context, error logs are your best friend. Don’t chase the first error message you see. Read across layers, cross-check symptoms, and build a hypothesis. The goal is clarity, not just activity.</p>
<h3>Watch for burnout</h3>
<p>Long debugging sessions can drain even the most seasoned devs. If you catch yourself getting foggy or frustrated, step away or ask for backup. A fresh set of eyes (or even a walk around the block) can save hours of spinning.</p>
<h3>Communicate clearly</h3>
<p>Whether you’re debugging solo or as part of a team, updates matter. Share what you’re trying, what you’ve ruled out, and what’s next. This keeps everyone aligned, reduces duplicate effort, and turns a problem-solving moment into a learning opportunity.</p>
</div>        </div>
            </div>
</div>

<div id="csection-block_94aafa9dfd5b2104584b463bfdfea43f" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><h2>Debugging is a human skill</h2></div><div class="cont col-6-12 wysiwyg plast  "><p>It’s easy to think of debugging as a purely technical task. But the truth is, it’s a test of patience, process, and emotional resilience.</p>
<p>Every problem is an opportunity to learn, not only to grow your technical skills, but to also build your emotional intelligence. Debugging is a skill that, with practice, can transform overwhelming chaos into a well-managed and structured process for success.</p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/development/emotional-intelligence-website-debugging/">Mind over malfunction: Emotional intelligence in debugging</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Four Kitchens welcomes Colleen Carroll as CEO, launching a new chapter of women in leadership</title>
		<link>https://www.fourkitchens.com/blog/office-news/four-kitchens-colleen-carroll-ceo/</link>
		
		<dc:creator><![CDATA[The Web Chefs]]></dc:creator>
		<pubDate>Tue, 21 Oct 2025 13:39:16 +0000</pubDate>
				<category><![CDATA[Office news]]></category>
		<category><![CDATA[Company Culture]]></category>
		<category><![CDATA[News]]></category>
		<guid isPermaLink="false">https://www.fourkitchens.com/?p=19652</guid>

					<description><![CDATA[<p>With deep roots in development and a long-standing presence in the Drupal community, Colleen is uniquely positioned to guide the company into a new era of innovation and impact.</p>
<p>The post <a href="https://www.fourkitchens.com/blog/office-news/four-kitchens-colleen-carroll-ceo/">Four Kitchens welcomes Colleen Carroll as CEO, launching a new chapter of women in leadership</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></description>
										<content:encoded><![CDATA[<div id="csection-block_0b80a9661c272914835a97b5b5cf32f3" class="content_section csection whipped_cream_200">
    <div class="content_section_inner small_p_top small_p_btm ">
        <div class="grid nopadding">
            <div class="left_cont col-4-12 push-1-12"><div class="byline_block"><a class="headshot" href="https://www.fourkitchens.com/team/the-web-chefs/"><img decoding="async" src="https://www.fourkitchens.com/wp-content/uploads/2023/03/fourkitchens-logomark-kitchenskelly-rgb.svg" alt="The Web Chefs" /></a><div class="info"><p class="name"><a href="https://www.fourkitchens.com/team/the-web-chefs/">The Web Chefs</a></p><p class="date">January 1, 1970</p></div></div></div><div class="cont col-6-12 wysiwyg plast no_heading "><p>Four Kitchens is thrilled to announce the appointment of <a href="https://www.fourkitchens.com/team/colleen-carroll/"><strong>Colleen Carroll</strong></a> as <strong>Chief Executive Officer</strong>. With deep roots in development and a long-standing presence in the Drupal community, Colleen is uniquely positioned to guide the company into a new era of innovation and impact.</p>
<p>Colleen’s journey began in code — working closely with nonprofits and open-source communities — before leading teams at <a href="http://palantir.net/" target="_blank" rel="noopener">Palantir.net</a> and <a href="http://www.onedesigncompany.com" target="_blank" rel="noopener">One Design Company</a>, where she nurtured cultures that empowered teams to do their best work and deliver meaningful impact for clients. That blend of technical fluency, and mission-driven leadership reflects the spirit of Four Kitchens: collaborative, thoughtful, and human-centered.</p>
<p>As part of this evolution, Chief Operating Officer <strong><a href="https://www.fourkitchens.com/team/elia-milan/">Elia Milán</a> </strong>has also been named <strong>Principal</strong>. Together, Colleen and Elia will lead Four Kitchens in strengthening its reputation for AI, content management, and web platforms for higher ed.</p>
<p>&#8220;This marks a new era for Four Kitchens — one defined by collaboration, creativity, and women leading together,” said Milán. “Colleen&#8217;s experience bridges the best of where we’ve been and where we’re headed. She deeply understands the intersection of technology, design, and people — which is at the heart of how we work and who we are&#8221;</p>
<p>This leadership transition follows <strong>Co-Founder <a href="https://www.fourkitchens.com/team/todd-ross-nienkerk/">Todd Ross Nienkerk</a></strong>’s decision to step away from day-to-day operations after two decades at the helm. Todd co-founded Four Kitchens in 2006 and has been a recognized leader in the agency, Drupal, and open-source communities. He will remain the company’s Owner and Chair, offering guidance as an advisor and steward of the company’s values.</p>
<p>“Four Kitchens is a company built on purpose, trust, and collective creativity,” said Carroll. “I’m honored to join this team, to partner with Elia, and to continue building on the foundation Todd created. His legacy has shaped a company that truly does good work in every sense — and I’m excited to help write the next chapter of that story.”</p>
<p>This leadership transition means continuity and evolution for Four Kitchens’ clients. Colleen brings both the technical fluency to understand complex challenges and the organizational insight to build solutions that last. Her commitment to open-source values ensures Four Kitchens will continue delivering the innovative, collaborative work clients depend on.</p>
<p><!-- notionvc: 9d6258f7-81c0-45f2-bf71-3ad91f373d55 --></p>
</div>        </div>
            </div>
</div><p>The post <a href="https://www.fourkitchens.com/blog/office-news/four-kitchens-colleen-carroll-ceo/">Four Kitchens welcomes Colleen Carroll as CEO, launching a new chapter of women in leadership</a> appeared first on <a href="https://www.fourkitchens.com">Four Kitchens</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
