<?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: Rondo</title>
    <description>The latest articles on DEV Community by Rondo (@rondo).</description>
    <link>https://dev.to/rondo</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%2F3874936%2Fe6985052-57a2-4cc2-b5b9-45ae7a9b2586.png</url>
      <title>DEV Community: Rondo</title>
      <link>https://dev.to/rondo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rondo"/>
    <language>en</language>
    <item>
      <title>Ubuntu NetworkManager Fooled Me with Routing Metrics</title>
      <dc:creator>Rondo</dc:creator>
      <pubDate>Wed, 06 May 2026 15:19:35 +0000</pubDate>
      <link>https://dev.to/rondo/ubuntu-networkmanager-fooled-me-with-routing-metrics-4g55</link>
      <guid>https://dev.to/rondo/ubuntu-networkmanager-fooled-me-with-routing-metrics-4g55</guid>
      <description>&lt;p&gt;Recently, I was testing a PC-based NVR that supports Dual-LAN and uses Ubuntu.&lt;br&gt;&lt;br&gt;
The testing environment was very simple: One NIC was connected to an isolated network that has a switch connected to a lot of cameras. And the other NIC was connected to internet.&lt;br&gt;&lt;br&gt;
And not surprisingly, I could clearly see the camera screens via embedded VMS viewer. Everything seemed working well.&lt;br&gt;&lt;br&gt;
But I soon realized that I couldn't use internet at all. That didn't make any sense for me since I used internet about just few minutes ago.&lt;br&gt;&lt;br&gt;
Since connecting to internet is very important for the product(It allows us debug remotely when issues happen in sites.), I had to deal with this issue.  &lt;/p&gt;

&lt;p&gt;First, I tried the simplest method : I disabled network interface that was connected to internet and enabled it. Result? I could access internet again. But only for about 4 minutes.&lt;/p&gt;

&lt;p&gt;I repeated the same treatment several times, but the results were the same. I could access internet only for a few minutes. Every single time. I completely had no idea. I thought it was because of hardware, but my guess was completely wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key was routing metrics.&lt;/strong&gt; I knew the concept, but I didn't know that &lt;strong&gt;Ubuntu's NetworkManager can change the metrics on its own.&lt;/strong&gt; For some reason, NetworkManager kept assigning a lower metric to the isolated network than the internet interface.&lt;br&gt;
(For context: a lower metric means higher priority.)&lt;/p&gt;

&lt;p&gt;So I googled a command to control the metrics by hand. I could do this using &lt;code&gt;nmcli&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;sudo nmcli connection modify 'connection_name' ipv4.route-metric (value)  &lt;/p&gt;
&lt;/blockquote&gt;


&lt;/blockquote&gt;

&lt;p&gt;After I fixed the metric value &lt;code&gt;999&lt;/code&gt;(high enough value) for the isolated net, I could finally connect to internet without disconnection.&lt;/p&gt;

&lt;p&gt;To release this product, I needed to make sure that the product can always  be connected to internet. My solution was to attach stickers to let users know which NIC is for internet and which is not and add some code to execute the command above.(It was not easy since we're using C and &lt;code&gt;connection_name&lt;/code&gt; is necessary.)&lt;/p&gt;

&lt;p&gt;My point is that if you're having trouble with dual-LAN hardware over Ubuntu, check your routing metrics before blaming the hardware.&lt;br&gt;
Start by checking : &lt;code&gt;ip route show&lt;/code&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>iot</category>
      <category>linux</category>
      <category>networking</category>
    </item>
    <item>
      <title>Nobody Wanted to Write Release Note. So I Made a Git-Log Searching Tool Using AI Agent at Work.</title>
      <dc:creator>Rondo</dc:creator>
      <pubDate>Mon, 13 Apr 2026 14:00:10 +0000</pubDate>
      <link>https://dev.to/rondo/nobody-wanted-to-write-release-note-so-i-made-a-git-log-searching-tool-using-ai-agent-at-work-11mj</link>
      <guid>https://dev.to/rondo/nobody-wanted-to-write-release-note-so-i-made-a-git-log-searching-tool-using-ai-agent-at-work-11mj</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Inefficient workflow&lt;/li&gt;
&lt;li&gt;QA had trouble with tracking issues(They didn't know what changed)&lt;/li&gt;
&lt;li&gt;Developers didn't update release note for QA. We were busy dealing with our own tasks. (I know, it was just an excuse.)&lt;/li&gt;
&lt;li&gt;Sales kept asking the same question again and again&lt;/li&gt;
&lt;li&gt;So I made a git log searching tool(webpage).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every firmware release triggered the same cycle:&lt;br&gt;
“What changed?”&lt;br&gt;
“Which features are included?”&lt;br&gt;
“Does this affect our product? At which OEM?”&lt;/p&gt;
&lt;h2&gt;
  
  
  The reason why I couldn't do this manually
&lt;/h2&gt;

&lt;p&gt;I was assigned a task to deal with the problem. But:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Too short deadline&lt;/li&gt;
&lt;li&gt;Other ongoing tasks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I had to finish the task as soon as possible.&lt;/p&gt;

&lt;p&gt;I don't usually use AI agents at work to deal with my tasks, unless the tasks that meet three personal criteria:&lt;br&gt;
&lt;strong&gt;1. The task must be clear and pinpointed.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;2. The task must be irrelevant to our base code. (I don't want AI agents mess up with the huge code base.)&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;3. The task must be what I can do on my own(So that I can fix problem later on.)&lt;/strong&gt;&lt;br&gt;
Fortunately, the task I was given met all the criteria.&lt;br&gt;
So I thought it was the best time to try an AI agent at work.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Tool to Make
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A webpage that allows other teams to browse and search git logs(Of course, they're pre-filtered.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since I know a bit about Django, I decided to use that.&lt;br&gt;
The setup process looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clone repository on the server where the tool is running.&lt;/li&gt;
&lt;li&gt;Save the path of the repository using django-admin.&lt;/li&gt;
&lt;li&gt;Get git logs based on the saved path.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I decided to use Gemini CLI with iterative loop:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ask Gemini-CLI to implement an exact feature.&lt;/li&gt;
&lt;li&gt;Accept the output.&lt;/li&gt;
&lt;li&gt;Run the code and check issues.&lt;/li&gt;
&lt;li&gt;If any issues found, then let Gemini-CLI know the issues and let it fix the issues.&lt;/li&gt;
&lt;li&gt;If Gemini-CLI keeps failing in finding the issues, then I fix them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example prompt:&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Add a dropbox to limit shown logs on each page. The range is from 10 to 100 and gap is 10. The dropbox must be located next to filter box.&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;I also asked questions below multiple times during the process:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;'Is the project really going well?'&lt;br&gt;
'Are there any other ways to make it better?'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;These kinds of meta-questions helped the agent stay on the right track.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One little trick that (might have) helped a lot:&lt;/strong&gt;&lt;br&gt;
I asked the AI to maintain a task log file to track progress and check it after every single task. Already know this trick? Sorry.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Result
&lt;/h2&gt;

&lt;p&gt;The final tool:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select repository and branch&lt;/li&gt;
&lt;li&gt;Filter by target product&lt;/li&gt;
&lt;li&gt;Search commit messages (version, tags, etc.)&lt;/li&gt;
&lt;li&gt;Pagination&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Django (and Django template)&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;li&gt;Local repositories + git log&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Effects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;QA and Sales stopped asking repetitive questions.&lt;/li&gt;
&lt;li&gt;Satisfied boss&lt;/li&gt;
&lt;li&gt;Happy developers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's not perfect.&lt;br&gt;
Repositories have to be updated manually (git pull), but believe it or not, it's intended(sometimes you need to intentionally hide information.)&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;Using an AI agent didn’t remove the need to keep thinking.&lt;br&gt;
Actually, I think it only made one skill more important:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The ability to define problems clearly and break them into small steps.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;AI can generate code fast, of course.&lt;br&gt;
But it won't decide what should be built and why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;This was a small tool, but a meaningful experiment.&lt;br&gt;
I don’t think AI will replace developers anytime soon.&lt;br&gt;
But that's only for those who won't stop thinking, I guess.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
