<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: t.k.langston</title>
    <description>The latest articles on DEV Community by t.k.langston (@designbytk).</description>
    <link>https://dev.to/designbytk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F810132%2F5ec72df7-5ab4-471d-baef-845ed8043a9d.jpeg</url>
      <title>DEV Community: t.k.langston</title>
      <link>https://dev.to/designbytk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/designbytk"/>
    <language>en</language>
    <item>
      <title>Digital Hoarding</title>
      <dc:creator>t.k.langston</dc:creator>
      <pubDate>Thu, 17 Sep 2026 18:00:46 +0000</pubDate>
      <link>https://dev.to/designbytk/digital-hoarding-44cl</link>
      <guid>https://dev.to/designbytk/digital-hoarding-44cl</guid>
      <description>&lt;h2&gt;
  
  
  History of the term “hoarding”
&lt;/h2&gt;

&lt;p&gt;Hoarding certainly isn't a new concept. The word &lt;em&gt;hoard&lt;/em&gt; goes all the way back to Old English, where it meant something closer to a treasure or stockpile kept for future use. Somewhere along the way that perfectly reasonable idea of saving something for later took on a much less flattering meaning.&lt;/p&gt;

&lt;p&gt;For a lot of us, though, “hoarding” really entered the everyday vocabulary around 2009. That was when &lt;em&gt;Hoarders&lt;/em&gt; showed up on A&amp;amp;E and suddenly we all became experts. A stack of newspapers was no longer just a stack of newspapers. That spare bedroom nobody could walk through? We had concerns.&lt;/p&gt;

&lt;p&gt;Then came the heightened awareness of the “signs.” Calling out family members... being called out ourselves... identifying which house in the neighborhood should probably be expecting a camera crew next.&lt;/p&gt;

&lt;p&gt;Funny thing is, while we were looking at everybody else's garages, basements and spare bedrooms, some of us eventually noticed another form of collecting happening much closer to home.&lt;/p&gt;

&lt;p&gt;It was just hiding on a hard drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of digital hoarding
&lt;/h2&gt;

&lt;p&gt;Starting out as a graphic designer in the early 90s, I quickly became aware of the value of clip art. Not that we relied on it as a staple of our design, but it was a way to expedite some of the creative workflow. Add to that the fact that I was working in a more production-driven art department, and having existing assets on hand helped with turnaround.&lt;/p&gt;

&lt;p&gt;Whether it was dragging out the “Art Explosion 600,000+” clip art book paired with its folio of CDs, or swapping Zip drives full of company and client assets, there was real value in having a library of material ready to go.&lt;/p&gt;

&lt;p&gt;Then came the internet. Those types of assets became more readily available, stock photography exploded, and suddenly there was always something else worth downloading.&lt;/p&gt;

&lt;p&gt;Technically, as a designer, you didn't need all of those assets sitting on your own machine. But the “what if I need this later?” mentality started to creep in. So did the feeling that if you had access to a giant library, like iStockphoto or Shutterstock, you might as well get what you were paying for.&lt;/p&gt;

&lt;p&gt;Soon enough, you had your own version of Art Explosion... only now it lived across hard drives and a catalog of writable DVDs.&lt;/p&gt;

&lt;p&gt;Then hard drives got bigger, storage got cheaper, and the available headroom started to feel limitless. So, much like the house stacked with old newspapers and issues of &lt;em&gt;National Geographic&lt;/em&gt;, we found ourselves digitally hoarding.&lt;/p&gt;

&lt;p&gt;Only now we weren't just filling our own “houses” with clutter.&lt;/p&gt;

&lt;p&gt;We had servers.&lt;/p&gt;

&lt;p&gt;For me, the shift into web development added another category entirely. I started collecting bookmarked websites for inspiration, coding tips, tutorials and references. Thanks to services like Delicious for bookmarks and Evernote for web clipping, my digital garage was now overflowing too.&lt;/p&gt;

&lt;p&gt;And the thing is... a lot of it really did have value.&lt;/p&gt;

&lt;p&gt;That's what makes it difficult.&lt;/p&gt;

&lt;p&gt;The problem is that keeping everything isn't free just because storage is cheap. Someone still has to organize it, remember where it is and, eventually, find it again.&lt;/p&gt;

&lt;p&gt;Sometimes the time spent curating all of these “assets” starts to rival the amount of time they actually give back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Am I cured?
&lt;/h2&gt;

&lt;p&gt;Short answer is maybe... or maybe the habit has just shifted again.&lt;/p&gt;

&lt;p&gt;The means of collecting these assets and resources has changed over time, but I still find myself filing away one digital thing or another for if and when I need it.&lt;/p&gt;

&lt;p&gt;Web bookmarks. New apps to try. Screenshots. Code snippets. Articles. AI-generated images where somehow iteration number 14 still feels different enough from iteration number 13 that I can't quite bring myself to delete it.&lt;/p&gt;

&lt;p&gt;The funny part is that we're also living with the opposite behavior at the same time.&lt;/p&gt;

&lt;p&gt;We have developed a kind of disposable mentality toward a lot of digital information. With text messaging, the only relevant statement often feels like the latest one. Everything before that gets buried somewhere in the infinite scroll.&lt;/p&gt;

&lt;p&gt;The same is increasingly true with AI chats. A conversation can contain something genuinely useful, but a week later you may only vaguely remember that you had the conversation at all. Even the AI can eventually lose track of where the original context began.&lt;/p&gt;

&lt;p&gt;So we simultaneously keep everything... and lose everything.&lt;/p&gt;

&lt;p&gt;Storage isn't really the scarce resource anymore. Attention is.&lt;/p&gt;

&lt;p&gt;The hard drive may have another terabyte available, the cloud account may happily accept another ten thousand files and the bookmark service may never complain about one more saved link.&lt;/p&gt;

&lt;p&gt;But my memory and my time don't scale quite as easily.&lt;/p&gt;

&lt;p&gt;So I probably still have some house cleaning to do...&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>productivity</category>
    </item>
    <item>
      <title>My Car Had a Check Engine Light. My Code Has console.log().</title>
      <dc:creator>t.k.langston</dc:creator>
      <pubDate>Wed, 26 Aug 2026 15:03:00 +0000</pubDate>
      <link>https://dev.to/designbytk/my-car-had-a-check-engine-light-my-code-has-consolelog-3g0n</link>
      <guid>https://dev.to/designbytk/my-car-had-a-check-engine-light-my-code-has-consolelog-3g0n</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Sometimes the Best Way to Find a Bug Is to Move It&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A few weeks ago, the check engine light came on in my 2007 SUV. I plugged in an OBD scanner and got P003F: “Intake Camshaft Profile Control Stuck On, Bank 2.” Sounded menacing enough…&lt;/p&gt;

&lt;p&gt;Then there’s me. I know enough about cars to be adventurous. With my dad’s sage advice rattling around in my head, I can change parts, follow instructions and generally understand what some systems are trying to do, but I’m not a mechanic. So I did what most of us do when a warning light appears… went straight to the mechanic. Nah. I pulled out my phone and looked it up. (There’s another whole post on where we are with that process.)&lt;/p&gt;

&lt;p&gt;Back on the case: the code pointed toward the cam profile system, but that didn’t mean there was one obvious part to replace. According to the sources I was finding, it could be a solenoid, wiring, a connector, oil flow or something farther into the mechanical side of the engine. The more I read, the more familiar the whole thing started to feel. I had an error message and a collection of possible causes, but the error wasn’t actually telling me which one was responsible.&lt;/p&gt;

&lt;p&gt;Basically, I had a bug.&lt;/p&gt;

&lt;p&gt;What finally made the diagnosis interesting was discovering that the car has two identical solenoids controlling the same system across two groups of cylinders. That meant I had something much more useful than a list of possible problems. I had a way to test one.&lt;/p&gt;

&lt;p&gt;I did what any problem solver would do and swapped the solenoids, cleared the code and drove the car. Sure enough, the check engine light came back, which normally isn’t something to celebrate. This time it was! The code had changed from Bank 2 to Bank 1.&lt;/p&gt;

&lt;p&gt;The problem moved with the solenoid.&lt;/p&gt;

&lt;p&gt;At that point I wasn’t replacing a part because a forum post said it was probably bad. I had taken a component from one side of the system, moved it to the other side and watched the fault follow it. The wiring didn’t move. The connector didn’t move. The oil passage didn’t move. The solenoid did… and so did the error. I ordered a new one. At that point, the hard part was over.&lt;/p&gt;

&lt;p&gt;Somewhere during all of this it occurred to me that I spend a surprising amount of my working life doing essentially the same thing, just without an engine cover in the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Finding where it went wrong&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;When something breaks in a website or application, the visible error tends to get most of the attention. Maybe a component doesn’t render, an API request fails, a Lambda function throws an error or the browser reports that something is undefined. That’s where you first see the problem, so naturally that’s where you start looking.&lt;/p&gt;

&lt;p&gt;But that’s not necessarily where anything went wrong.&lt;/p&gt;

&lt;p&gt;A front-end problem can begin several steps before the browser finally complains about it. The API may have returned something I wasn’t expecting. The API may be fine, but I transformed the response incorrectly. The error is often just the point where the system finally admits it has a problem.&lt;/p&gt;

&lt;p&gt;That’s where the car analogy started to stick with me. P003F told me Bank 2 had a problem. It didn’t tell me that Bank 2 was the problem. Once I moved the suspect component somewhere else, the distinction became obvious.&lt;/p&gt;

&lt;p&gt;We can do the same thing with code, and in many ways we have it easier because software lets us move things around without getting our hands dirty.&lt;/p&gt;

&lt;p&gt;Say I click a button and the number that appears on screen is wrong. There are a few places that could have happened: maybe I read the wrong value from the form, maybe the calculation is wrong, or maybe the function that puts the result on the page isn’t doing what I think it is. Rather than staring at all of it, I can give that last function a value I already know is correct. If it displays &lt;code&gt;$125.00&lt;/code&gt; when I hand it &lt;code&gt;125&lt;/code&gt;, then I haven’t fixed the bug… but I’ve probably eliminated the display code as the source of it.&lt;/p&gt;

&lt;p&gt;So I move backward. What value came out of the calculation? If that’s wrong, what values went into it? I might hard-code one of those values, bypass a function for a moment or drop a &lt;code&gt;console.log()&lt;/code&gt; between two steps to see exactly where the expected number changes. Each little test changes one thing and asks the system the same question the car test did: does the problem stay here… or does it move?&lt;/p&gt;

&lt;p&gt;That is a much different mindset than changing code until something starts working again.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;&lt;code&gt;console.log()&lt;/code&gt; as a diagnostic tool&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This is probably why I’ve never quite accepted the idea that &lt;code&gt;console.log()&lt;/code&gt; is somehow an unsophisticated way to debug. Used badly, sure. A dozen logs that say &lt;code&gt;HERE&lt;/code&gt;, &lt;code&gt;HERE 2&lt;/code&gt;, and &lt;code&gt;WHY IS THIS NOT WORKING&lt;/code&gt; aren’t exactly observability.&lt;/p&gt;

&lt;p&gt;I’ve certainly written them anyway.&lt;/p&gt;

&lt;p&gt;Used deliberately, though, logging is really just a way of putting gauges, or breakpoints, along the route. When something goes wrong somewhere in a chain of JavaScript functions, I want to know what the data looked like along the way. I don’t necessarily need to read every line between point A and point B. I need to find the last place where everything was still what I expected it to be.&lt;/p&gt;

&lt;p&gt;So I might put a log before a function and another after it. If the value is right going in and wrong coming out… well, we’ve narrowed things down considerably. If there are eight meaningful stages between the user’s click and the bad result on screen, I might start somewhere around stage four rather than stage one.&lt;/p&gt;

&lt;p&gt;If everything looks right there, half of the system becomes considerably less interesting. If it’s already wrong, the other half does. Then I split the remaining half again. It’s essentially binary search applied to debugging, although I’d never really thought about it in those terms while doing it. Half the code on, half off. Bypass this section. Feed that section known-good data. Find the point where good becomes bad.&lt;/p&gt;

&lt;p&gt;Eventually there isn’t much room left for the bug to hide. Squeeze that little bugger…&lt;/p&gt;

&lt;p&gt;The important part is resisting the urge to change too much along the way. We’ve all had the debugging session where you modify three functions, update a package, clear a cache, restart something and suddenly everything works. Great… except now you don’t actually know why.&lt;/p&gt;

&lt;p&gt;The car test worked precisely because I didn’t do that. I changed one thing. I moved the solenoid. When the fault moved with it, the car had answered the question for me.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;No lack of tooling&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Of course, software gives us another advantage. We have an absurd amount of tooling designed to catch problems before we ever get to this stage. Linters, types, tests and IDE warnings are all standing along the road waving little flags before the check engine light even comes on. We’re a long way from hunting through 1,698 lines of JavaScript for the missing semicolon.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;console.log()&lt;/code&gt; isn’t the Holy Grail here. It’s just one particularly simple diagnostic tool, and one that happens to make the parallel with the car especially obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Taking things apart&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Somewhere in the middle of all this, I realized I’d probably been primed to think about the problem this way because I’ve spent an unreasonable amount of time watching &lt;a href="https://www.youtube.com/@MatArmstrongbmx" rel="noopener noreferrer"&gt;Mat Armstrong&lt;/a&gt; rebuild damaged cars on YouTube. He buys cars that most sensible people would look at and immediately decide should remain someone else’s problem, then starts taking them apart.&lt;/p&gt;

&lt;p&gt;A McLaren or Ferrari can look catastrophically damaged when it arrives, but the interesting part is figuring out what is &lt;em&gt;actually&lt;/em&gt; damaged. Some things obviously need replacing. Others look terrible but are fine. Something that appears fine turns out not to be. One repair reveals the next problem, and eventually what began as a wreck becomes a collection of smaller, understandable problems.&lt;/p&gt;

&lt;p&gt;I find it captivating to watch them chase those problems down, probably because it scratches the same problem-solving itch that development does.&lt;/p&gt;

&lt;p&gt;I rarely understand the whole problem at the beginning. I have a symptom and a rough mental model of the system, then I start taking it apart, figuratively at least, until I understand enough of it to make the next decision.&lt;/p&gt;

&lt;p&gt;That might be the real parallel here. I didn’t understand the entire cam profile system when that check engine light came on, and I didn’t need to. I just needed to understand enough to figure out what to test next.&lt;/p&gt;

&lt;p&gt;The same is true when I’m staring at a piece of code that isn’t doing what I expected. I don’t necessarily need to understand the entire system before I can start narrowing things down. I need a hypothesis, a way to test it and enough patience not to change three other things while I’m waiting for the answer.&lt;/p&gt;

&lt;p&gt;Sometimes that means better tooling. Sometimes it means a breakpoint. Sometimes it means turning half the code off.&lt;/p&gt;

&lt;p&gt;And sometimes it’s just &lt;code&gt;console.log()&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Either way, the goal is the same… give the problem fewer and fewer places to hide.&lt;/p&gt;

</description>
      <category>coding</category>
      <category>debugging</category>
      <category>programming</category>
    </item>
    <item>
      <title>Art Director’s Advantage in the AI Gen Era</title>
      <dc:creator>t.k.langston</dc:creator>
      <pubDate>Wed, 22 Jul 2026 18:53:42 +0000</pubDate>
      <link>https://dev.to/designbytk/art-directors-advantage-in-the-ai-gen-era-4a3k</link>
      <guid>https://dev.to/designbytk/art-directors-advantage-in-the-ai-gen-era-4a3k</guid>
      <description>&lt;h1&gt;
  
  
  Round and round we go
&lt;/h1&gt;

&lt;p&gt;Gaining an advantage in AI design workflow's isn't based on better prompting. It's something we've been doing for decades...&lt;/p&gt;

&lt;p&gt;First off, this isn’t an "AI is taking my job" post. It’s a "who’s already got an edge?" post.&lt;/p&gt;




&lt;p&gt;As AI settles into creative workflows, a divide is opening up. Some people consistently get better results. Experience helps, but something deeper is at play... an insight sitting in plain sight.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter the Art Director
&lt;/h2&gt;

&lt;p&gt;I’ve never carried the title, but I’ve worked with enough Art Directors to appreciate their superpower. It isn’t simply seeing the vision... it’s being able to articulate it. They instinctively know how to explain why something isn’t working and what needs to change.&lt;/p&gt;

&lt;p&gt;They choose words that shape an idea. Words that &lt;em&gt;push, pull, tighten, soften, emphasize, and refine&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Think about a typical creative brief. It rarely says, &lt;strong&gt;&lt;em&gt;"Make a brochure."&lt;/em&gt;&lt;/strong&gt; It says:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"The typography should feel established, but not corporate."&lt;/li&gt;
&lt;li&gt;"Give the layout room to breathe."&lt;/li&gt;
&lt;li&gt;"The call-to-action should feel confident, not aggressive."&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;None of those are technical instructions. They're creative direction. Today, the prompt bar is simply a new creative brief. Those same words can guide an AI model to the same destination.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Seekers Lament
&lt;/h2&gt;

&lt;p&gt;Sometimes we become prompt seekers, searching for a magical combination of words that will produce perfection on the first try.&lt;/p&gt;

&lt;p&gt;Anyone in design knows how unrealistic that is.&lt;/p&gt;

&lt;p&gt;The first concept is rarely the finished concept. Designer presents, client reacts, designer refines, client reacts again... and round you go.&lt;/p&gt;

&lt;p&gt;Iteration wasn't a workaround. It was the process all along.&lt;/p&gt;

&lt;p&gt;Yet the trend on X is always some eye-catching image with everyone asking for the "one-and-done" prompt.&lt;/p&gt;

&lt;p&gt;AI is great at creating options. It's much less impressive at knowing which option is right.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cue the Director
&lt;/h2&gt;

&lt;p&gt;Instead of saying, "Something isn't right," an Art Director diagnoses the problem:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"The composition is balanced, but the visual hierarchy competes with the message. Reduce secondary elements, increase contrast on the subject, and let negative space do the work."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;That's the difference. It isn't better prompting.&lt;/p&gt;

&lt;p&gt;It's knowing what to ask for next. The ongoing conversation is where the real creative direction happens.&lt;/p&gt;

&lt;p&gt;Sometimes that direction means knowing when AI isn't the right tool. Today's workflow might mean moving from ChatGPT to Nano Banana, switching image models, or (wild concept) handing it off to another human.&lt;/p&gt;

&lt;p&gt;The role of an Art Director has never been to personally create every piece of work. It's knowing how to get the best work out of the tools and people available.&lt;/p&gt;

&lt;p&gt;We already do this when we bounce between models based on their strengths or plug in system prompts and style references. But style matching isn't direction.&lt;/p&gt;




&lt;p&gt;No specific lessons here... or are there? Just an observation.&lt;/p&gt;

&lt;p&gt;Well, a shared one (as Adobe recently noted in their piece, "Creative direction: The secret to great AI images").&lt;/p&gt;

</description>
      <category>ai</category>
      <category>frontend</category>
      <category>design</category>
    </item>
  </channel>
</rss>
