<?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: Pavel Kalashnikov</title>
    <description>The latest articles on DEV Community by Pavel Kalashnikov (@kalashnikovisme).</description>
    <link>https://dev.to/kalashnikovisme</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%2F806972%2F14390bd8-8731-4b03-b970-3e9caf223ffe.jpeg</url>
      <title>DEV Community: Pavel Kalashnikov</title>
      <link>https://dev.to/kalashnikovisme</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kalashnikovisme"/>
    <language>en</language>
    <item>
      <title>Duolingo widget in 5 minutes</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Mon, 12 Oct 2026 08:34:02 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/duolingo-widget-in-5-minutes-4ioi</link>
      <guid>https://dev.to/kalashnikovisme/duolingo-widget-in-5-minutes-4ioi</guid>
      <description>&lt;p&gt;Built a Duolingo widget for Omalauncher (Omarchy Launcher) with Claude — right from my phone 😊&lt;/p&gt;

&lt;p&gt;It reminds me to do my lessons. Still needs some polish, but I’ll publish it once I’ve tested it.&lt;/p&gt;

&lt;p&gt;Or build your own in 5 minutes 😊&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9addck7ft201b0ps19fv.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9addck7ft201b0ps19fv.jpg" alt=" " width="800" height="1716"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>omarchy</category>
      <category>duolingo</category>
    </item>
    <item>
      <title>Omarchy on Android</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Sun, 11 Oct 2026 18:37:13 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/omarchy-on-android-4ba8</link>
      <guid>https://dev.to/kalashnikovisme/omarchy-on-android-4ba8</guid>
      <description>&lt;p&gt;This is happening on my Samsung right now 😊&lt;/p&gt;

&lt;p&gt;Omarchy Launcher — this is going to be fun!&lt;/p&gt;

&lt;p&gt;I’ll build a couple of widgets just for myself 😊&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fft8wt2jiz2l2aq7iqsl6.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fft8wt2jiz2l2aq7iqsl6.jpg" alt=" " width="800" height="1716"&gt;&lt;/a&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F688k9g6wa3ff75jo4a6y.jpg" 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F688k9g6wa3ff75jo4a6y.jpg" alt=" " width="800" height="1716"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>omarchy</category>
      <category>android</category>
    </item>
    <item>
      <title>Two things in Rails have been seriously getting on my nerves:</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Tue, 06 Oct 2026 12:48:23 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/two-things-in-rails-have-been-seriously-getting-on-my-nerves-16d9</link>
      <guid>https://dev.to/kalashnikovisme/two-things-in-rails-have-been-seriously-getting-on-my-nerves-16d9</guid>
      <description>&lt;ol&gt;
&lt;li&gt;The lack of a good dashboard for Rails’ default background job system, Solid Queue.&lt;/li&gt;
&lt;li&gt;Having to jump through hoops to integrate existing dashboards into an admin panel.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So I added one directly to Tramway. The Solid Queue dashboard is now available right inside the admin area.&lt;/p&gt;

&lt;p&gt;Tramway 4.1&lt;/p&gt;

&lt;p&gt;☑️ Solid Queue web UI — just a few lines of code, and you can manage your app’s background jobs directly from the admin panel.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxfj8q8a7qe1jzttljawn.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxfj8q8a7qe1jzttljawn.png" alt=" " width="800" height="548"&gt;&lt;/a&gt;&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ka70non22yyp56z3n2q.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3ka70non22yyp56z3n2q.png" alt=" " width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rails</category>
    </item>
    <item>
      <title>You can vibe-code your own admin panel — or ...</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Sun, 04 Oct 2026 06:15:36 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/you-can-vibe-code-your-own-admin-panel-or--2hgg</link>
      <guid>https://dev.to/kalashnikovisme/you-can-vibe-code-your-own-admin-panel-or--2hgg</guid>
      <description>&lt;p&gt;you can use one that’s already built, comes with its own skill for Claude and Codex, and pretty much takes care of itself.&lt;/p&gt;

&lt;p&gt;Just shipped another small feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tramway 4.0.2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;☑️ Added convenient filters for index pages. Enable them with a single line of code.&lt;br&gt;&lt;br&gt;
☑️ &lt;code&gt;tramway-skill&lt;/code&gt; has already been updated and knows how to use them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Purple-Magic/tramway/releases/tag/4.0.2" rel="noopener noreferrer"&gt;https://github.com/Purple-Magic/tramway/releases/tag/4.0.2&lt;/a&gt;&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdrwd7asvn1h9nzxefema.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdrwd7asvn1h9nzxefema.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;br&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3s3w3bblu4xl0qpfqwui.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3s3w3bblu4xl0qpfqwui.png" alt=" " width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Saving tokens also means using existing tools.</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Sat, 26 Sep 2026 15:11:48 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/saving-tokens-also-means-using-existing-tools-81c</link>
      <guid>https://dev.to/kalashnikovisme/saving-tokens-also-means-using-existing-tools-81c</guid>
      <description>&lt;p&gt;In Rails apps with Tramway and tramway-skill, this is all Claude needs to add user creation to the admin panel.&lt;/p&gt;

&lt;p&gt;It even took the test from the example in the skill.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0wvze0xrfsjkwfjysttm.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0wvze0xrfsjkwfjysttm.png" alt=" " width="800" height="1193"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rails</category>
      <category>tramway</category>
    </item>
    <item>
      <title>Ruby is more effective in terms of token safety</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Fri, 25 Sep 2026 15:51:07 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/ruby-is-more-effective-in-terms-of-token-safety-5g93</link>
      <guid>https://dev.to/kalashnikovisme/ruby-is-more-effective-in-terms-of-token-safety-5g93</guid>
      <description>&lt;p&gt;Purely empirically, Ruby feels way more token-efficient for programming.&lt;/p&gt;

&lt;p&gt;I spent the last month on a JS project and the past week mostly on Ruby projects.&lt;/p&gt;

&lt;p&gt;The difference is obvious. No further details 😄&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>javascript</category>
    </item>
    <item>
      <title>11 years ago, we ran out of IPv4 addresses.</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Thu, 24 Sep 2026 12:32:39 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/11-years-ago-we-ran-out-of-ipv4-addresses-ep3</link>
      <guid>https://dev.to/kalashnikovisme/11-years-ago-we-ran-out-of-ipv4-addresses-ep3</guid>
      <description>&lt;p&gt;I wrote a short piece for the IT History Journal about how it happened — and how the internet has kept working ever since.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://history.purple-magic.com/en/sep/24/arin-ipv4-pool-exhausted/" rel="noopener noreferrer"&gt;https://history.purple-magic.com/en/sep/24/arin-ipv4-pool-exhausted/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>I'm done with framework building</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Wed, 23 Sep 2026 23:19:17 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/im-done-with-framework-building-40ff</link>
      <guid>https://dev.to/kalashnikovisme/im-done-with-framework-building-40ff</guid>
      <description>&lt;p&gt;With this release, I’m done trying to make Tramway a do-everything Rails library.&lt;/p&gt;

&lt;p&gt;From now on, it’s simply a Rails admin panel you can get up and running in no time.&lt;/p&gt;

&lt;p&gt;We’ll vibe-code the rest anyway.&lt;/p&gt;

&lt;p&gt;Tramway 4.0&lt;/p&gt;

&lt;p&gt;It’s been a while since I posted gem updates — and there are quite a few:&lt;/p&gt;

&lt;p&gt;✅ Rails 7 support dropped&lt;br&gt;
✅ tramway_navbar completely revamped&lt;br&gt;
✅ New tramway_grid — a handy new component&lt;br&gt;
✅ Updates to tramway_table and tramway_chat&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/Purple-Magic/tramway/releases/tag/4.0" rel="noopener noreferrer"&gt;https://github.com/Purple-Magic/tramway/releases/tag/4.0&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Trivia night meets vibe coding.</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Wed, 23 Sep 2026 22:26:42 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/trivia-night-meets-vibe-coding-3fkm</link>
      <guid>https://dev.to/kalashnikovisme/trivia-night-meets-vibe-coding-3fkm</guid>
      <description>&lt;p&gt;My wife and I hosted a quiz at our friends’ wedding, but the venue had no projector.&lt;/p&gt;

&lt;p&gt;So we vibe-coded a website instead: everyone got the questions on their phones, while we controlled the game from ours.&lt;/p&gt;

</description>
      <category>coding</category>
      <category>webdev</category>
      <category>website</category>
    </item>
    <item>
      <title>Claude is asking this. What’s your answer?</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Wed, 23 Sep 2026 15:17:30 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/claude-is-asking-thiswhats-your-answer-4jn2</link>
      <guid>https://dev.to/kalashnikovisme/claude-is-asking-thiswhats-your-answer-4jn2</guid>
      <description>&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuoxeh3wt7sdeuh1b3vvq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuoxeh3wt7sdeuh1b3vvq.png" alt=" " width="487" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>The first Android smartphone was unveiled exactly 18 years ago today</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Wed, 23 Sep 2026 14:17:45 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/the-first-android-smartphone-was-unveiled-exactly-18-years-ago-today-2hgm</link>
      <guid>https://dev.to/kalashnikovisme/the-first-android-smartphone-was-unveiled-exactly-18-years-ago-today-2hgm</guid>
      <description>&lt;p&gt;I wrote a short piece about it for the IT History Journal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://history.purple-magic.com/en/sep/23/first-android-phone-unveiled/" rel="noopener noreferrer"&gt;https://history.purple-magic.com/en/sep/23/first-android-phone-unveiled/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>android</category>
      <category>google</category>
    </item>
    <item>
      <title>Free tokens!</title>
      <dc:creator>Pavel Kalashnikov</dc:creator>
      <pubDate>Wed, 16 Sep 2026 10:49:26 +0000</pubDate>
      <link>https://dev.to/kalashnikovisme/free-tokens-5g9c</link>
      <guid>https://dev.to/kalashnikovisme/free-tokens-5g9c</guid>
      <description>&lt;p&gt;I’ve set up a local model to use with Codex. It runs at about the same speed as Claude with Sonnet at minimum effort.&lt;/p&gt;

&lt;p&gt;It definitely does some dumb stuff, but so far I’ve been able to fix all of it with better instructions. We’ll see how it goes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why did I choose gpt-oss-20b?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I had Claude benchmark around 20 models on my machine and give me a report comparing execution time and quality.&lt;/p&gt;

&lt;p&gt;After 7 hours of testing and reasoning, it concluded that gpt-oss-20b was the best fit for my setup.&lt;/p&gt;

&lt;p&gt;I’m going to stick with it for now and see how it performs in actual day-to-day work.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
