<?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"><channel><title><![CDATA[More Than Code]]></title><description><![CDATA[Blog by @knownasilya about life and web development.]]></description><link>https://ilyaradchenko.com</link><generator>RSS for Node</generator><lastBuildDate>Fri, 12 Jun 2026 14:49:24 GMT</lastBuildDate><atom:link href="https://ilyaradchenko.com" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Nov 2024 00:00:00 GMT</pubDate><item><title><![CDATA[Build on the URL]]></title><description><![CDATA[Feels like I keep coming back to the URL quite often as a topic that I write on, and there's a reason for that. Over the last 13 years of my professional software engineering career I've learned to lean on the URL when working with the web, and every time I've implemented a feature while leaning on it, I've been commended because of the unexpected "side effect features" that came out as a result. Here's a few reasons why you should build on the URL.

## Shareable

It's a little more work to build on the URL, but you'll be "using the platform" if you do. This allows users of your app to share snapshots of your app with other users. Features like this are used by all, but few apps actually provide good support for sharing. If you can go beyond the basics, and lean on the URL throughout your app it'll be a blessing to someone out there.

While usually we think of sharing as something done with other people, that isn't always the case, a user might want to share a URL with their future selves, via a bookmark. This allows for custom use-cases that you as the developer might not have thought of, but a bookmark solves a problem for a user because you provided access to changing that state externally.

## Debuggable

Ding! You glance at your phone, a new email has just arrived. Randy loves your MapMakers app, but today he ran into an issue. His email says that the map marker is not showing up in the right place for the latest listing he created. You ask him for more information, but you don't ask for the URL, because you know it isn't helpful.

Now what if you had a useful URL? You might be able to get into the same or very similar state that your user encountered the bug. It gives you more of a starting point to look from, and if your data loads based on the URL you have your next place you can look to confirm the correct data has loaded. Already you've eliminated a few possibilities, or maybe even found the bug. Now combine this with something like Sentry or DataDog, and you have a URL for all of the errors your users encounter but didn't send you an email.

## Scaffolding 

When you start thinking about a feature, start with the URLs you'll need, it'll help you flesh out the designs. You can even write tests for those URLs before you have the pages (doing some TDD) built, giving you a progress indicator of sorts. The URL is the smallest primitive you can use to think about a feature you're building, and it'll help you not miss critical pieces. 

Go out there, and build your first URL driven feature!
]]></description><link>https://ilyaradchenko.com/users/knownasilya/notes/cm37ckj6d0001lfpd8hwxwnq2</link><guid isPermaLink="false">users/knownasilya/notes/cm37ckj6d0001lfpd8hwxwnq2</guid><pubDate>Wed, 13 Nov 2024 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tailwind CSS Lets Me Move Fast]]></title><description><![CDATA[I heard that one of the main benefits of Tailwind is that it limits your choices, and I can't agree more, but a less noted feature is the fact that it removes
another barrier. That is the extra steps it takes to style something and to move freely and confidently.

I've been noticing that when I'm working on a project, I have this extra step of "where do I even start" when it comes to styling a feature. I notice this pattern in projects that have CSS disconnected from the components that they style and in projects where the CSS lives right next to the component. I haven't tried CSS-in-JS yet, so can't comment on that yet. I think there are a few blockers for me when I'm trying to get into the styling mindset, and the fact that there is even that mental shift at all says something.

First of all I need to decide where the CSS has to go, then I have to decide what to call the class. Next I need to see if there is other CSS that already covers this component and should I reuse another class or add the new class as part of the existing structure or should it be stand-alone? Now did I write maintainable CSS that others will be able to understand and extend or delete if needed? I'm sure there are more steps, not to mention the whole idea of having to do a context switch to begin with. If we look at Tailwind, it's a different story.

With Tailwind the styles are in the same place as the markup so you don't decide on where to put them or if it's with existing CSS. You might have to create a component to reuse classes that you write repeatedly, but you are already doing the work of abstracting markup and creating components, tailwind just helps you as another metric for when to start a component. There is also no need to think about naming your classes since you use utility functions like `flex`, `rounded`, and `my-2`. Also you can still special CSS for those use-cases (usually the 10%) where you need something special like `height: calc(100vh - 60px)`. Now if I move some markup, the styles don't break. If I delete some markup, I don't have to worry that I have unused CSS or that the CSS I just deleted was used elsewhere.

At the end of the day, it helps me move faster without the extra blockers, and helps me abstract when the time is right, which usually isn't until later in the project once you see patterns. Give Tailwind a try, and remember that you can mix it with your other workflow. I like to use CSS Modules for the 10% and Tailwind for the 90%. Tailwind is probably not the ultimate solution, and yes you still need to understand CSS, but it's a step closer to something that helps you create within good limits.
    
    ]]></description><link>https://ilyaradchenko.com/users/knownasilya/notes/clvbdfx7s0003f534b831yboa</link><guid isPermaLink="false">users/knownasilya/notes/clvbdfx7s0003f534b831yboa</guid><pubDate>Thu, 25 Jun 2020 00:00:00 GMT</pubDate></item></channel></rss>