<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>bobuhiro11&#39;s blog</title>
    <link>/en/</link>
    <description>Recent content on bobuhiro11&#39;s blog</description>
    <image>
      <title>bobuhiro11&#39;s blog</title>
      <url>https://blog.bobuhiro11.net/summary_card_with_large_image_600x314.png</url>
      <link>https://blog.bobuhiro11.net/summary_card_with_large_image_600x314.png</link>
    </image>
    <generator>Hugo -- 0.127.0</generator>
    <language>en</language>
    <lastBuildDate>Fri, 06 Mar 2026 01:31:34 +0900</lastBuildDate>
    <atom:link href="/en/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>How I Use AI</title>
      <link>/en/2026/03-06-how-i-use-ai.html</link>
      <pubDate>Fri, 06 Mar 2026 01:31:34 +0900</pubDate>
      <guid>/en/2026/03-06-how-i-use-ai.html</guid>
      <description>Let me jot down how I&amp;rsquo;m using AI as of March 2026. This is a fast-moving space, so it might be fun to look back on later.
Coding I use Claude Code, Codex, and GitHub Copilot CLI without any strong preference. All of them are on paid plans or their equivalents. There are small differences between them, but all produce code of satisfying quality. My customization is minimal — just a few allow/deny-tool rules, some MCP settings, and a handful of custom slash commands.</description>
    </item>
    <item>
      <title>Using Shift&#43;Enter in Alacritty&#43;Tmux</title>
      <link>/en/2026/02-27-shift-enter.html</link>
      <pubDate>Fri, 27 Feb 2026 01:31:34 +0900</pubDate>
      <guid>/en/2026/02-27-shift-enter.html</guid>
      <description>Here are some tips for getting Shift+Enter to insert a newline while typing prompts in Claude Code or Codex CLI. By default it didn&amp;rsquo;t work properly when combining Alacritty with Tmux, so I configured each as shown below. Claude Code and some other tools offer a built-in setup command like /terminal-setup, but that didn&amp;rsquo;t seem to do the trick for me.
First, add the following to your Alacritty config file alacritty.</description>
    </item>
    <item>
      <title>Reading Notes on &#34;Issues Driven&#34;</title>
      <link>/en/2026/01-22-issue.html</link>
      <pubDate>Thu, 22 Jan 2026 00:01:40 +0900</pubDate>
      <guid>/en/2026/01-22-issue.html</guid>
      <description>This is a book I bought several years ago and left unread, but when I read it, the content really resonated with me. Being highly productive doesn&amp;rsquo;t mean you can complete tasks faster than others or handle a large volume. Time (and many other things) is finite, so identifying the right problems to solve is important. You can&amp;rsquo;t become a highly productive person by working to your limits or competing on work hours.</description>
    </item>
    <item>
      <title>Ishigaki Island Marathon 2026</title>
      <link>/en/2026/01-21-ishigakijima_marathon.html</link>
      <pubDate>Wed, 21 Jan 2026 23:31:34 +0900</pubDate>
      <guid>/en/2026/01-21-ishigakijima_marathon.html</guid>
      <description>On 2026/01/18, I ran a half marathon on Ishigaki Island. It seems it was usually rainy in past years, but this year there was only a little rain before the start, and after that it was cloudy. I think it was about 20°C, but it didn&amp;rsquo;t particularly affect my running. Since I hurt my knee and retired in the previous marathon, and recently even light running sometimes caused the same pain, I decided to aim for completion without pushing myself.</description>
    </item>
    <item>
      <title>97 Things Every Programmer Should Know - Reading Notes</title>
      <link>/en/2024/12-25-97-things-programmer.html</link>
      <pubDate>Wed, 25 Dec 2024 00:59:34 +0900</pubDate>
      <guid>/en/2024/12-25-97-things-programmer.html</guid>
      <description>I was reading 97 Things Every Programmer Should Know in my spare time. Here are notes on what caught my attention.
Technical debt must be repaid immediately in the next iteration. Otherwise, the interest will accumulate. You must resist the impulse and temptation to rewrite from scratch. Make the most of existing code. When adding new changes, improve at least one place. Writing code is designing. It&amp;rsquo;s not mechanical work, but creative work.</description>
    </item>
    <item>
      <title>Learning eBPF Reading Notes</title>
      <link>/en/2024/12-05-learning_ebpf.html</link>
      <pubDate>Thu, 05 Dec 2024 00:59:34 +0900</pubDate>
      <guid>/en/2024/12-05-learning_ebpf.html</guid>
      <description>I read Learning eBPF, so I&amp;rsquo;d like to leave some reading notes. This book was released last year and I&amp;rsquo;ve been wanting to read it for a while. lizrice/learning-ebpf - github.com has abundant sample code for reference. I&amp;rsquo;ll just note things that caught my attention personally, without paying much attention to context.
BCC It starts with an example using BCC. Using bpf_trace_printk() allows you to output text to the pseudo-file /sys/kernel/debug/tracing/trace_pipe.</description>
    </item>
    <item>
      <title>Using SRv6 with OVS</title>
      <link>/en/2024/03-29-ovs_srv6.html</link>
      <pubDate>Fri, 29 Mar 2024 00:59:34 +0900</pubDate>
      <guid>/en/2024/03-29-ovs_srv6.html</guid>
      <description>OVS (Open vSwitch) 3.2 added support for SRv61, so let&amp;rsquo;s try using it. To put it simply, you create a port with type=srv6 as shown below. Since it&amp;rsquo;s implemented using the same framework as existing tunneling protocols like VXLAN and Geneve, you specify both tunnel endpoints (corresponding to SIDs on both sides in SRv6) with options:remote_ip and options:local_ip. In addition to these, SRv6 has a special option options:srv6_segs to set intermediate routers as a Segment List.</description>
    </item>
    <item>
      <title>Ansible Practical Guide [Basic Edition] 4th Edition Reading Notes</title>
      <link>/en/2023/12-01-ansible.html</link>
      <pubDate>Fri, 01 Dec 2023 00:59:34 +0900</pubDate>
      <guid>/en/2023/12-01-ansible.html</guid>
      <description>Apparently I studied Ansible in 2016 1, but I completely forgot, so I read Ansible Practical Guide 4th Edition [Basic Edition] again. I&amp;rsquo;ll note down what caught my attention.
Playbook Hierarchy One Playbook consists of several Plays. A Play consists of four sections: Targets, Vars, Tasks, and Handlers. Targets and Tasks are basic sections, used to specify target hosts and a list of tasks to execute, respectively. Vars and Handlers are auxiliary sections, used to specify variables and execution control (for example, restarting systemd services), respectively.</description>
    </item>
    <item>
      <title>Learning Kubebuilder: Reading Notes</title>
      <link>/en/2023/09-29-kubebuilder.html</link>
      <pubDate>Fri, 29 Sep 2023 00:59:34 +0900</pubDate>
      <guid>/en/2023/09-29-kubebuilder.html</guid>
      <description>I read Learning Kubebuilder.
It was a concise and well-organized resource that taught me a lot. My impression after reading is that Custom Resources (CRs) have high flexibility, making them tempting to create, but carelessly increasing their number makes them unmanageable. I felt it&amp;rsquo;s probably best to adopt them only for issues that fundamentally cannot be realized without CRs, and to create and use them minimally. For example, regarding the MarkdownView used as an example here, in reality it would be better to realize it with a combination of standard resources rather than a CR.</description>
    </item>
    <item>
      <title>Running SRv6 L3VPN with Mininet</title>
      <link>/en/2023/07-07-srv6l3vpn.html</link>
      <pubDate>Fri, 07 Jul 2023 00:59:34 +0900</pubDate>
      <guid>/en/2023/07-07-srv6l3vpn.html</guid>
      <description>I conducted an experiment to run SRv6 L3VPN in Mininet 1. The script is here.
I was able to run it with a small configuration as shown in the diagram, so I&amp;rsquo;d like to introduce it here. Two routers (r1 and r2) are responsible for Encap/Decap with SRv6, and they exchange L3VPN information between r1 and r2 via eBGP. r1 and r2 each have two VRFs (vrf10 and vrf20), and tenants are separated by VRF (Tenant10 and Tenant20).</description>
    </item>
  </channel>
</rss>
