<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[Signal and Structure]]></title><description><![CDATA[Practical thinking on web dev, Drupal, AI, and what actually matters.]]></description><link>https://www.lizkrukosky.com</link><image><url>https://substackcdn.com/image/fetch/$s_!xpal!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F711ab894-7881-4d32-8e7a-d1303b0a506c_600x600.png</url><title>Signal and Structure</title><link>https://www.lizkrukosky.com</link></image><generator>Substack</generator><lastBuildDate>Sat, 01 Aug 2026 21:26:34 GMT</lastBuildDate><atom:link href="https://www.lizkrukosky.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Liz Krukosky]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[lizkrukosky@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[lizkrukosky@substack.com]]></itunes:email><itunes:name><![CDATA[Liz Krukosky]]></itunes:name></itunes:owner><itunes:author><![CDATA[Liz Krukosky]]></itunes:author><googleplay:owner><![CDATA[lizkrukosky@substack.com]]></googleplay:owner><googleplay:email><![CDATA[lizkrukosky@substack.com]]></googleplay:email><googleplay:author><![CDATA[Liz Krukosky]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[I Meant to Redact It]]></title><description><![CDATA[I just didn&#8217;t do it.]]></description><link>https://www.lizkrukosky.com/p/i-meant-to-redact-it</link><guid isPermaLink="false">https://www.lizkrukosky.com/p/i-meant-to-redact-it</guid><dc:creator><![CDATA[Liz Krukosky]]></dc:creator><pubDate>Sat, 01 Aug 2026 16:55:07 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xpal!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F711ab894-7881-4d32-8e7a-d1303b0a506c_600x600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A few days ago I put my own company&#8217;s financial information, account numbers and all, into an AI tool without redacting it.</p><p>Not a client&#8217;s information though, I want to be clear about that, because the difference matters and I would never risk my clients&#8217; information this way.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.lizkrukosky.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Signal and Structure! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>We were testing an updated reconciliation system we use on our own books. It was deliberate work, on my own account documents, in my own environment. The kind of use I&#8217;d tell anybody is completely fine. I had every intention of stripping the real numbers out first.</p><p>I just didn&#8217;t do it. I ran the test, and everything went up with it. I was in a hurry and excited to see our new system in action. I figured, one test, no biggie.</p><p>Then, I sat with that for a minute. I started thinking, why, why did I do that? I tell business owners to strip out account numbers and anything that identifies a person or business before it goes anywhere near a tool. I&#8217;ve told them the question was never whether their data goes into AI, because it does. The question is whose AI it goes into, and whether the person doing it made that decision or was just being unaware.</p><p>That&#8217;s the part I want to talk about, because it explains something the careful version of this conversation never gets to.</p><p>When people picture someone leaking company data into AI, they picture carelessness. Somebody who doesn&#8217;t take it seriously. Somebody who has no idea what the risk even is. Somebody who needs a policy.</p><p>That&#8217;s almost never what it is.</p><p>It&#8217;s somebody who meant to be careful and had one step of it living in their own head. It&#8217;s the person who was going to strip the client name out and got interrupted. It&#8217;s the person who used the free tool on their phone because getting to the approved one meant a login they couldn&#8217;t remember at nine at night. The intention was there, but intention isn&#8217;t enough unless it leads to action.</p><p>**Intending to be careful isn&#8217;t a safeguard. It&#8217;s a hope with good manners.**</p><p>Which is why the fix I landed on wasn&#8217;t a rule.</p><p>I could have written myself a note. Redact before testing. I&#8217;d have followed it most of the time, and most of the time is exactly the failure mode I&#8217;m describing.</p><p>So I decided to build a private LLM server in-house instead. Not for everything. Just for financial data and private personal information, which is the small category where I actually care.</p><p>The thing that makes it work isn&#8217;t the model. It&#8217;s that it won&#8217;t have internet access. It&#8217;ll live on our own network, on an encrypted server, with no route out.</p><p>The idea is that the data can&#8217;t go anywhere, because there&#8217;s nowhere for it to go. Nobody has to remember or think about it. Nobody has to be having a good day or read the rule book again. The risky version of the action stops being available, which is the only kind of safeguard that survives a busy afternoon.</p><p>I should say plainly that I&#8217;ve decided to build this and haven&#8217;t built it yet. When it&#8217;s up and running I&#8217;ll write about what it actually took, including the parts that were more annoying than I expected and the parts that went well.</p><p>A server is one way to handle this, but it&#8217;s not the only way, and it&#8217;s not the point. The point is moving the safeguard out of somebody&#8217;s memory and into the environment.</p><p>**Five things you can do this week instead**</p><p>1. **Name the one category of data that must never leave.** Just one. Financials, client contracts, health information, whatever it is for you. A list of nine gets ignored.</p><p>2. **Ask your team what AI tools they&#8217;ve used and what they put into them.** It&#8217;s true that most owners have never asked it once or even thought about it for that matter.</p><p>3. **Make the safe path the easier route.** If the approved tool takes three extra steps, people will keep using the one already open. Make it easy to follow the rules and follow up on compliance.</p><p>4. **Put redaction in the tool, not in your head.** A saved template with the fields already blanked beats remembering every time. Spreadsheets can have identifying data easily stripped away with a small script. PDFs need a real redaction tool, because just using a blocking box usually leaves the text sitting underneath, and it can still be found that way.</p><p>5. **Decide now what happens when somebody gets it wrong.** Because you know they will, and the only thing worse than the mistake is a culture where nobody mentions it. Make everyone aware of your wishes and guidelines.</p><p>I did it wrong on my own data, that&#8217;s on me, but changing the setup instead of writing myself a rule is the whole story.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.lizkrukosky.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Signal and Structure! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[The Site Looked Fine]]></title><description><![CDATA[Nobody decides to let a website fall apart.]]></description><link>https://www.lizkrukosky.com/p/the-site-looked-fine</link><guid isPermaLink="false">https://www.lizkrukosky.com/p/the-site-looked-fine</guid><dc:creator><![CDATA[Liz Krukosky]]></dc:creator><pubDate>Sat, 01 Aug 2026 00:03:22 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xpal!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F711ab894-7881-4d32-8e7a-d1303b0a506c_600x600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>That is the part I want to talk about, because when people hear about a site in bad shape they picture neglect. Somebody who stopped caring. That is almost never what happened.</p><p>What happens is quieter, and it is why it goes on so long.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.lizkrukosky.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Signal and Structure! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>A while ago we were brought into a Drupal site that looked completely fine from the outside. Loaded properly, looked professional, nothing visibly wrong.</p><p>The forms were not working. Emails were not going out.</p><p>Sit with that for a second, because it is worse than a site being down. A site that is down tells you. Everybody knows within the hour and somebody fixes it. A form that quietly fails tells nobody. People filled it in, hit send, saw a thank you message, and went about their day thinking they had reached someone.</p><p>Nobody on the business side had any way to know. There is no alert for the message that never arrived.</p><p>There was more. Functionality already built into the site was not doing what it was supposed to do. Other things the business genuinely needed built could not get built, because the work had outgrown the setup they had. So the list of things that did not quite work got longer, and everyone learned to route around it.</p><p>That is the pattern, and I see it constantly. **No single bad decision. A hundred small workarounds nobody wrote down.**</p><p>When we got into the code we found the rest of it. There was broken code, messy code, and patched patches. Problems layered on top of older problems, in the way that happens when every fix has to avoid the last one.</p><p>The client was frustrated and genuinely did not know what to do next. That is the honest emotional middle of this story and I think it is the most common place for a business owner to be. They weren&#8217;t indifferent, they were stuck. Aware something was wrong, unable to describe it precisely enough to ask for the right help, and braced for someone to say the whole thing had to be rebuilt.</p><p>It did not have to be rebuilt.</p><p>We refactored the code that was causing the trouble. We built the functionality they had been waiting on. We fixed the long tail of things that were not working properly.</p><p>It was the same site and same platform, and their content and their history all stayed exactly where they were.</p><p>What changed is that it worked. The forms went through. The emails arrived. The functionality they had been unable to get built existed. The workarounds went away, and so did the complaints, which in a story like this one means more than it sounds like, because the silence before was the problem.</p><p>The client was thrilled. Sales went up and their customers were happier with the experience.</p><p>Here is the thing I most want you to take from this story.</p><p>Their site was costing them money for months and it did not look like anything was wrong. That is the whole danger. A slow site is annoying and a hacked site is a crisis, but both of those announce themselves. A form that silently drops leads doesn&#8217;t. Neither does functionality that just annoys people, quietly, with nothing reporting it. Problems like those keep going for as long as nobody tests them.</p><p>So while you are here, go and do these five things. They take about fifteen minutes.</p><p>1. **Fill in your own contact form.** All the way through, like a stranger would. Then confirm the message actually arrived somewhere a human reads.</p><p>2. **Do the same for every other form**, quote requests, newsletter signups, applications, event registrations. **Forms fail one at a time, not all together.**</p><p>3. **Ask whoever maintains your site when the last security update was applied**, and if anything broke when it was. If nobody knows, that is your answer.</p><p>4. **Write down every workaround your team uses.** Note the &#8220;oh you have to do it this way&#8221; instructions. Each one is a broken thing no one is fixing.</p><p>5. **Ask what your team has wanted to build and could not.** The reason is usually the real diagnosis.</p><p>If that list turns up nothing, genuinely good. You are in better shape than most.</p><p>If it turns up something, you have not found a disaster. You have found the thing that was quietly true anyway, and now you can decide what to do about it.</p><p>That is a much better position than not knowing.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.lizkrukosky.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Signal and Structure! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[Start Here]]></title><description><![CDATA[What this newsletter is, and who it's for]]></description><link>https://www.lizkrukosky.com/p/start-here</link><guid isPermaLink="false">https://www.lizkrukosky.com/p/start-here</guid><dc:creator><![CDATA[Liz Krukosky]]></dc:creator><pubDate>Sat, 25 Jul 2026 01:51:53 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!xpal!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F711ab894-7881-4d32-8e7a-d1303b0a506c_600x600.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most business advice tells you to do more. This is not going to be that.</p><p>The businesses that get stuck aren&#8217;t lazy and they&#8217;re not behind on tools. They&#8217;re carrying too much that only exists in one person&#8217;s head, sitting on top of systems that were never built for anyone else to understand.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.lizkrukosky.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Signal and Structure! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>I&#8217;ve spent twenty-one years building and untangling the systems businesses run on. Before that it was servers, networks, and databases, so I&#8217;ve seen this from a few angles. Lately a lot of that work is AI. Which is where this gets interesting. AI is the first tool that genuinely cannot help you until what&#8217;s in your head is gathered somewhere it can reach. Once it is, and you point AI at it with the right directions and guardrails, the thing that only existed in one person&#8217;s head becomes something your whole business can benefit from.</p><p>That&#8217;s what this newsletter is about. Signal is the part that actually matters. Structure is what makes it usable by someone other than you, including, now, by AI.</p><p>Here&#8217;s what to expect. Short pieces, most of them under five minutes. Plain language, because most of the jargon in my industry exists to make simple things sound expensive. And occasionally, something you can actually go do at the end, not just something to think about.</p><p>I&#8217;ll write about websites, because that&#8217;s where the scar tissue came from. I&#8217;ll write about AI honestly, including the parts that are overhyped and the parts that genuinely changed how my own company works. And I&#8217;ll write about the unglamorous structural things that decide whether either one is of any help to you at all.</p><p>If you&#8217;re sitting on a website that&#8217;s holding you back, or trying to work out where AI actually fits in your business, that&#8217;s what I&#8217;m here for.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://www.lizkrukosky.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe&quot;,&quot;language&quot;:&quot;en&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">Thanks for reading Signal and Structure! Subscribe for free to receive new posts and support my work.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Type your email&#8230;" tabindex="-1"><input type="submit" class="button primary" value="Subscribe"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item></channel></rss>