<?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: Timur Gabaidulin</title>
    <description>The latest articles on DEV Community by Timur Gabaidulin (@905timur).</description>
    <link>https://dev.to/905timur</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2660175%2Fdc77c85f-0ec0-4f56-a9c0-120db1d0d153.png</url>
      <title>DEV Community: Timur Gabaidulin</title>
      <link>https://dev.to/905timur</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/905timur"/>
    <language>en</language>
    <item>
      <title>Dockyard is a Faster Lazydocker, Written in Rust (Because Of Course It Is)</title>
      <dc:creator>Timur Gabaidulin</dc:creator>
      <pubDate>Thu, 05 Feb 2026 11:52:29 +0000</pubDate>
      <link>https://dev.to/905timur/dockyard-is-a-faster-lazydocker-written-in-rust-because-of-course-it-is-n44</link>
      <guid>https://dev.to/905timur/dockyard-is-a-faster-lazydocker-written-in-rust-because-of-course-it-is-n44</guid>
      <description>&lt;p&gt;&lt;a href="https://github.com/905timur/dockyard" rel="noopener noreferrer"&gt;Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was perfectly happy using Lazy Docker. It works. It’s stable. It does exactly what a Docker TUI should do.&lt;/p&gt;

&lt;p&gt;Then, after an irresponsible amount of caffeine, I had a thought no one needed me to have:&lt;/p&gt;

&lt;p&gt;“This would be better if it were written in Rust.”&lt;/p&gt;

&lt;p&gt;There was no problem to solve. No unmet need. No user request. I did it anyway.&lt;/p&gt;

&lt;p&gt;This is Dockyard.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  A problem nobody had
&lt;/h2&gt;

&lt;p&gt;Lazy Docker is a good tool. But if you stare at it long enough, you can convince yourself there are issues:&lt;/p&gt;

&lt;p&gt;It’s written in Go&lt;/p&gt;

&lt;p&gt;A cold start takes about 247 ms&lt;/p&gt;

&lt;p&gt;It can use around 40 MB of memory&lt;/p&gt;

&lt;p&gt;The binary is 13 MB&lt;/p&gt;

&lt;p&gt;None of this is bad. None of this matters.&lt;/p&gt;

&lt;p&gt;I chose to care anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dockyard
&lt;/h2&gt;

&lt;p&gt;After three weeks of arguing with the borrow checker, I ended up with Dockyard: a Docker container manager that does roughly 80 percent of what Lazy Docker does, except it’s written in Rust and starts noticeably faster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Startup time
&lt;/h2&gt;

&lt;p&gt;Lazy Docker starts in roughly:&lt;/p&gt;

&lt;p&gt;~247 ms cold&lt;/p&gt;

&lt;p&gt;~89 ms warm&lt;/p&gt;

&lt;p&gt;Dockyard starts in roughly:&lt;/p&gt;

&lt;p&gt;~31 ms cold&lt;/p&gt;

&lt;p&gt;~12 ms warm&lt;/p&gt;

&lt;p&gt;Dockyard launches fast enough that you briefly wonder if it actually did anything.&lt;/p&gt;

&lt;p&gt;Real-world impact: if you open your Docker TUI ten times a day for a year, you save about 43 seconds.&lt;/p&gt;

&lt;p&gt;That is not enough time to change your life. It is enough time to feel correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory usage
&lt;/h2&gt;

&lt;p&gt;Lazy Docker typically sits around:&lt;/p&gt;

&lt;p&gt;~38–41 MB of memory&lt;/p&gt;

&lt;p&gt;Dockyard sits around:&lt;/p&gt;

&lt;p&gt;~6–8 MB of memory&lt;/p&gt;

&lt;p&gt;That’s roughly an 82 percent reduction.&lt;/p&gt;

&lt;p&gt;This is not meaningful on a modern machine. Your Electron-based Slack instance uses more memory to display a single emoji reaction.&lt;/p&gt;

&lt;p&gt;I will still mention it every chance I get.&lt;/p&gt;

&lt;h2&gt;
  
  
  Binary size
&lt;/h2&gt;

&lt;p&gt;Lazy Docker: ~13 MB&lt;/p&gt;

&lt;p&gt;Dockyard: ~2.7 MB (stripped)&lt;/p&gt;

&lt;p&gt;Your disk is enormous. This does not matter.&lt;/p&gt;

&lt;p&gt;I spent three days making it matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Development metrics that definitely matter
&lt;/h2&gt;

&lt;p&gt;Time to first successful build:&lt;/p&gt;

&lt;p&gt;Lazy Docker: minutes&lt;/p&gt;

&lt;p&gt;Dockyard: three weeks&lt;/p&gt;

&lt;p&gt;Lines written to appease lifetime annotations:&lt;/p&gt;

&lt;p&gt;Lazy Docker: zero&lt;/p&gt;

&lt;p&gt;Dockyard: 847&lt;/p&gt;

&lt;p&gt;Ability to casually mention Rust in unrelated conversations:&lt;/p&gt;

&lt;p&gt;Lazy Docker: none&lt;/p&gt;

&lt;p&gt;Dockyard: excessive&lt;/p&gt;

&lt;p&gt;Quality of life decisions:&lt;/p&gt;

&lt;p&gt;Lazy Docker: reasonable&lt;/p&gt;

&lt;p&gt;Dockyard: questionable&lt;/p&gt;

&lt;h2&gt;
  
  
  What Dockyard actually does
&lt;/h2&gt;

&lt;p&gt;Lists containers, images, and volumes&lt;/p&gt;

&lt;p&gt;Starts, stops, and removes containers&lt;/p&gt;

&lt;p&gt;Allows you to pull and remove images&lt;/p&gt;

&lt;p&gt;Talks directly to the Docker API using bollard&lt;/p&gt;

&lt;p&gt;Starts fast, stays small, exits cleanly&lt;/p&gt;

&lt;p&gt;It is memory-safe without a garbage collector.&lt;br&gt;
It is thread-safe even when nothing is threaded.&lt;br&gt;
It is fearless about concurrency it does not yet have.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does not do (yet)
&lt;/h2&gt;

&lt;p&gt;Metrics graphs&lt;/p&gt;

&lt;p&gt;Advanced debugging tools&lt;/p&gt;

&lt;p&gt;Users besides me&lt;/p&gt;

&lt;p&gt;Lazy Docker is still the better tool for most people. Dockyard is faster, smaller, and less complete. Those trade-offs were intentional.&lt;/p&gt;

&lt;p&gt;The Dockyard install process doubles as a reminder that you chose this path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I actually built it
&lt;/h2&gt;

&lt;p&gt;I originally wrote a Docker TUI in Python for personal use. Then I ran it on a small VPS and decided that learning Rust would be easier than optimizing Python.&lt;/p&gt;

&lt;p&gt;This was incorrect, but educational.&lt;/p&gt;

&lt;p&gt;I learned async Rust, the Docker API surface, terminal UI layout, and that Docker exposes an alarming number of timestamp formats. I also learned that shaving milliseconds off startup time is an extremely effective source of dopamine.&lt;/p&gt;

&lt;p&gt;Dockyard exists because I wanted to understand the problem end to end, not because the ecosystem needed another tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Is Dockyard better than Lazy Docker?&lt;br&gt;
No.&lt;/p&gt;

&lt;p&gt;Is it faster?&lt;br&gt;
Yes, in ways you will not notice.&lt;/p&gt;

&lt;p&gt;Should you use it?&lt;br&gt;
If you like small, fast binaries and Rust code written by someone who cared too much, maybe.&lt;/p&gt;

&lt;p&gt;Was it a good use of three weeks?&lt;br&gt;
Objectively, no.&lt;/p&gt;

&lt;p&gt;Would I do it again?&lt;br&gt;
Probably.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>rust</category>
      <category>programming</category>
      <category>performance</category>
    </item>
    <item>
      <title>Reddit Content Cleaner</title>
      <dc:creator>Timur Gabaidulin</dc:creator>
      <pubDate>Tue, 07 Jan 2025 00:16:20 +0000</pubDate>
      <link>https://dev.to/905timur/reddit-comment-cleaner-118p</link>
      <guid>https://dev.to/905timur/reddit-comment-cleaner-118p</guid>
      <description>&lt;p&gt;Managing your Reddit history can be overwhelming, especially if you're a seasoned shit talker with thousands of comments. That’s where &lt;a href="https://www.github.com/905timur/Reddit-Content-Cleaner" rel="noopener noreferrer"&gt;&lt;strong&gt;Reddit Content Cleaner&lt;/strong&gt;&lt;/a&gt; steps in. It's a Python script designed to help you clean, edit, and delete your comments efficiently while respecting safety and customization needs.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk you through the features, setup, and best practices for this tool to get the most out of it while staying safe. Whether you're decluttering your digital footprint or managing privacy, this script has you covered.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;What Can It Do?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Reddit Content Cleaner&lt;/strong&gt; provides a wide array of options to clean up your Reddit comment history with precision:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Age-Based Cleanup&lt;/strong&gt;: Remove comments older than a specified number of days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Karma-Based Filtering&lt;/strong&gt;: Delete comments with negative karma or low engagement (e.g., 1 karma and no replies).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keyword Management&lt;/strong&gt;: Target comments containing specific words for deletion or exclude those with important keywords.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subreddit-Specific Cleanup&lt;/strong&gt;: Focus on or exclude certain subreddits.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backup &amp;amp; Logging&lt;/strong&gt;: Keep detailed backups and logs of all operations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These features, combined with a &lt;strong&gt;dry run mode&lt;/strong&gt; for testing, ensure that you can preview changes before making them.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Getting Started&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;System Requirements&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;To use this script, ensure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Python 3.6 or higher&lt;/li&gt;
&lt;li&gt;Required libraries: &lt;code&gt;praw&lt;/code&gt;, &lt;code&gt;pytz&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Installation&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Clone the repository and install dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/905timur/Reddit-Content-Cleaner.git
&lt;span class="nb"&gt;cd &lt;/span&gt;Reddit-Content-Cleaner
pip &lt;span class="nb"&gt;install &lt;/span&gt;praw pytz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Reddit API Setup&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;To access your comment history, you need Reddit API credentials:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://www.reddit.com/prefs/apps/" rel="noopener noreferrer"&gt;Reddit’s App Preferences&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create a &lt;strong&gt;script&lt;/strong&gt; application.&lt;/li&gt;
&lt;li&gt;Save your &lt;code&gt;client ID&lt;/code&gt; and &lt;code&gt;client secret&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Create a &lt;code&gt;credentials.txt&lt;/code&gt; file in the script directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;your_client_id
your_client_secret
your_reddit_username
your_reddit_password
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Configuration&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Customize the behavior using a &lt;code&gt;config.json&lt;/code&gt; file. It’s auto-generated on the first run but can also be created manually:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"replacement_text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"min_delay"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"max_delay"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"excluded_subreddits"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"AskScience"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PersonalFinance"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"excluded_keywords"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"important"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"keep this"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"backup_enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"dry_run"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  &lt;strong&gt;Usage&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Run the script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 RedditContentCleaner.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interactive menu offers options like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove comments older than &lt;code&gt;x&lt;/code&gt; days&lt;/li&gt;
&lt;li&gt;Clean comments with negative or low karma&lt;/li&gt;
&lt;li&gt;Target specific subreddits or keywords&lt;/li&gt;
&lt;li&gt;Toggle &lt;strong&gt;dry run mode&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Safety First&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;To avoid unintended deletions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;strong&gt;dry run mode&lt;/strong&gt; to preview changes.&lt;/li&gt;
&lt;li&gt;Maintain a backup (&lt;code&gt;deleted_comments.txt&lt;/code&gt;) for recovery.&lt;/li&gt;
&lt;li&gt;Configure &lt;strong&gt;excluded subreddits&lt;/strong&gt; and &lt;strong&gt;keywords&lt;/strong&gt; to protect important content.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Best Practices&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Test First&lt;/strong&gt;: Always use dry run mode to ensure your configuration is correct.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Respect API Limits&lt;/strong&gt;: Stick to the default delay settings (6-8 seconds).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitor Logs&lt;/strong&gt;: Check &lt;code&gt;comment_cleaner.log&lt;/code&gt; for detailed operation reports.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stay Updated&lt;/strong&gt;: Follow the repository for updates and contribute if you can.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Future Plans&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As an alpha release, &lt;strong&gt;Reddit Content Cleaner&lt;/strong&gt; is still evolving. Upcoming features include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced UI for configuration management.&lt;/li&gt;
&lt;li&gt;More granular filtering options.&lt;/li&gt;
&lt;li&gt;Direct integration with cloud backup services.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Contribute&lt;/strong&gt;: If you're a developer, feel free to fork the repo and submit PRs for new features or bug fixes. Let's build a better tool together! 💻&lt;/p&gt;




&lt;p&gt;Have questions or feedback? Share your experience in the comments or open an issue on the &lt;a href="https://github.com/905timur/Reddit-Content-Cleaner" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>python</category>
      <category>reddit</category>
    </item>
  </channel>
</rss>
