<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kohsuke Kawaguchi</title>
    <description></description>
    <link>https://kohsuke.org/</link>
    <atom:link href="https://kohsuke.org/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sat, 03 Jan 2026 17:43:12 -0800</pubDate>
    <lastBuildDate>Sat, 03 Jan 2026 17:43:12 -0800</lastBuildDate>
    <generator>Jekyll v4.3.2</generator>
    
      <item>
        <title>2025 in review: Cycling</title>
        <description>&lt;p&gt;This year, I rode ~10,500km and climbed 80,000m over 475 hours. Over the last few years, these numbers are steadily declining, but it’s still a lot, reflecting the special place cycling has in my heart.&lt;/p&gt;

&lt;p&gt;What hasn’t changed is that (1) I still ride ~1hr every day, and (2) I still do a weekly hill climb. But other than those, a lot has changed.&lt;/p&gt;

&lt;p&gt;First, I got myself a new road bike this year. It was pretty expensive. The kind of money you’d think I’m crazy if you don’t ride road bikes. But with the kind of time I spend on it, I figured I deserve it. It’s noticeably lighter, so it reacts to my push better. The hydraulic disc brake is amazing, so is electric shifting.&lt;/p&gt;

&lt;p&gt;That led to my second big change this year – I took my old road bike to Tokyo, and I’ve been riding my road bike there. I’m discovering a whole new world, in a place I thought I knew well.&lt;/p&gt;

&lt;p&gt;There are so many little places within a bike distance. The density of the place is amazing, and there are so many restaurants that I have no hope of ever visiting them all. The area doesn’t really have any long climbs, but instead it’s filled with short, much steeper climbs.&lt;/p&gt;

&lt;p&gt;Another thing I did not realize until then was just how limited my mobility has been, when I was confined to train lines. They are, after all, lines. No matter how well those lines spread out, and they do, at the end of the day they are still one dimensional, and that just cannot cover any significant “area”, which is, by definition, a two-dimensional construct. When I’m riding a bike, there’s just so much &lt;em&gt;between&lt;/em&gt; the two train lines. Farm lands. Shrines. Temples. Small parks. Hills. Residential areas of all kinds. Hospitals. So much depth. I got mesmerized.&lt;/p&gt;

&lt;p&gt;The third big change this year to the way I ride is that I considerably reduced my home group ride. A part of it was forced due to my spending time away from home more often, partly business, and partly in Tokyo. But it’s also partly my desire to &lt;em&gt;explore&lt;/em&gt;. When a large group of people are involved, a ride has to be planned upfront, the route has to be set, and so it just limits your ability to react to the unexpected. I also wanted to ride more in new places, whereas the group rides prefer stability and predictability of the same familiar routes. I do miss the people, though. It’s too bad I can’t have the best of both worlds.&lt;/p&gt;

&lt;p&gt;Fourth, I started riding more and more on my business travels, in faraway places. I stay a few extra days, I rent a road bike, and off I go! I rode in &lt;a href=&quot;https://flic.kr/s/aHBqjCeDnr&quot;&gt;Chicago&lt;/a&gt;, &lt;a href=&quot;https://flic.kr/s/aHBqjChXJj&quot;&gt;Brussels&lt;/a&gt;, and &lt;a href=&quot;https://flic.kr/s/aHBqjCi1DD&quot;&gt;Amsterdam&lt;/a&gt;. I’ve been to Brussels countless times, but with a bike I was able to discover a whole new part of Brussels and beyond. On a bike, I get to leave the city. A bike is really a perfect vehicle to explore the unexpected.&lt;/p&gt;

&lt;p&gt;Every year, I aim to do a multi day bike trip. There’s a sense of real adventure in those trips. Life gets really simple on the road. And you get to discover all the in-between places. I truly love those trips. This year, I was fortunate to do two of them. Once I rode &lt;a href=&quot;https://flic.kr/s/aHBqjCsBNN&quot;&gt;from San Jose all the way to Mendocino&lt;/a&gt;. Then late in the year, I rode &lt;a href=&quot;/2025/12/22/tokaido-bike-ride/&quot;&gt;from Tokyo to Kyoto&lt;/a&gt;. Both of those trips were me and a friend. I like this setup. There’s only so many people who are willing to ride a bike over multiple days like this, to begin with. Planning is a lot easier when I only need to accommodate the needs and the preferences of two people.&lt;/p&gt;

&lt;p&gt;In 2026, I hope to lean in on more of all those changes. Beyond those, I think I’d love to ride more with friends. Not a big group ride, but in the intimate 1:1 setup. I also need to get more comfortable taking my bike on the go, especially in Tokyo. If I get more efficient in packing my bike into a bag that I bought for my Kyoto trip, it opens up a whole new set of destinations.&lt;/p&gt;

&lt;p&gt;If you are up for riding with me, wherever on earth you are, let me know!&lt;/p&gt;
</description>
        <pubDate>Sat, 03 Jan 2026 00:00:00 -0800</pubDate>
        <link>https://kohsuke.org/2026/01/03/2025-in-review-cycling/</link>
        <guid isPermaLink="true">https://kohsuke.org/2026/01/03/2025-in-review-cycling/</guid>
        
        
        <category>bike</category>
        
      </item>
    
      <item>
        <title>2025 in review: Coffee</title>
        <description>&lt;p&gt;In Jan, a colleague of mine came to the US from Japan and stayed over for a whole week. I think it was on the way to a weekend Tahoe trip in which he talked me into how coffee is a perfect hobby for engineers. It’s practical, it’s cheap, and it doesn’t involve a lot of equipment!&lt;/p&gt;

&lt;p&gt;I keep a bag of ground coffee beans at my home and I drink coffee every morning. If he is to be believed, I just need a coffee grinder to get going. So on the way back from Tahoe, we stopped by a random coffee roaster in Sacramento, he helped me pick a bag of coffee beans, and by the time I was home, Amazon had already delivered a hand grinder from Timemore – also his recommendation, I think.&lt;/p&gt;

&lt;p&gt;Not that I really cared about coffee, but I just loved how passionately he talked about this hobby of his. I wanted to respond positively to it, and I thought following his suggestions was the way to do it.&lt;/p&gt;

&lt;p&gt;The next day, I brought my equipment and the coffee beans to the office, and he walked me through how to practice the 4:6 method. I drank that black, which I never did before. I imitated how he made a cup, and brewed my own. He approved of the cup I made.&lt;/p&gt;

&lt;p&gt;Thus began my journey into the world of pour over coffee.&lt;/p&gt;

&lt;p&gt;Since then, I’ve acquired a few more gears. Electronic kettle with temperature control, and a dripper called “Suiren”. It looks like a flower, and petals are replaceable. I bought more petals in different colors, and I occasionally reconfigure them.&lt;/p&gt;

&lt;p&gt;Then I started trying out coffee roasters around my home one by one. I discovered that coffee beans come in all sorts of prices. The ones people are flocking to generally seem to provide very lightly roasted, hard beans, which have more fruity flavors. Those are easily 2x-3x more expensive than ones I can get from local supermarkets. These beans are called “single origin specialty coffee”, meaning they come from a specific place, sometimes down to a single farmer.&lt;/p&gt;

&lt;p&gt;Coffee roaster hunting added a new flavor to my bike riding, which I do everyday. Sometimes I come across a coffee roaster accidentally, and I give that place a try.&lt;/p&gt;

&lt;p&gt;Initially I was intentionally casting a wide net, trying all sorts of different places, dark or light. I talk to Gemini about the species of the coffee beans, the region the beans were from, and so on. I sometimes look up those places on Google Maps, and try to imagine life over there. It created some emotional connection, however small it might be, to parts of the world I previously haven’t really thought about. Ethiopia. Colombia. Indonesia. Honduras. Kenya.&lt;/p&gt;

&lt;p&gt;This made my morning ritual a little longer, but I love the smell of freshly ground coffee in the morning. I don’t actively engage in experiments every morning, but every so often I’d react to my wife’s comments and tweak the settings a bit. Maybe a little coarser, maybe a little hotter. Again, Gemini is incredibly knowledgeable, and it helps me build a progressively better mental model of what chemical process is happening when I pour hot water over coffee, and what changes in the input creates what outcomes.&lt;/p&gt;

&lt;p&gt;Later in the year, I’ve acquired another hand grinder, to be used in my Tokyo home. Combined with my road bike in Tokyo, I started coffee roaster hunting in Tokyo, too.&lt;/p&gt;

&lt;p&gt;Now that turned out to be a whole new experience. The density of that place is easily 10x of San Jose, which means there are more coffee roasters than I could possibly visit, given my limited time over there. Luckily, they sell coffee beans 100g at a time, which is like one third of a portion here, so I could go through them a little faster.&lt;/p&gt;

&lt;p&gt;Shops there are much smaller, and often run by one person. That creates an opportunity to build a relationship, and I enjoy that process a lot. I’m very tall as far as Japanese people go, and I’m in cycling clothing. I’m pretty sure that makes me quite memorable, too. But building the relationship requires multiple visits, and that gets in the way of me trying more places. Decisions, decisions, …&lt;/p&gt;

&lt;p&gt;I’m not sure where this hobby is going next year. I’ll keep this habit for sure, but it’s hard for me to imagine taking this to a whole new level. I’ll keep looking up the place on Google Maps, though. I like using coffee beans to learn more about this world we live in. I’ll seek out darker roasts here in San Jose to see if I can brew them well, and I can’t wait to go back to Tokyo to keep exploring more places and getting to know more about some of the people I met.&lt;/p&gt;
</description>
        <pubDate>Sun, 28 Dec 2025 00:00:00 -0800</pubDate>
        <link>https://kohsuke.org/2025/12/28/review-coffee/</link>
        <guid isPermaLink="true">https://kohsuke.org/2025/12/28/review-coffee/</guid>
        
        
        <category>coffee</category>
        
      </item>
    
      <item>
        <title>2025 in review: Cooking</title>
        <description>&lt;p&gt;I started cooking this year. Nothing too fancy. Primarily so that I have three meals to eat every day. The work is busy, so the time I can spend is limited, too.&lt;/p&gt;

&lt;p&gt;For most of my life, I never really cooked. I just didn’t need to. My wife stayed at home. The kitchen was her territory. But TBH that has always felt like an excuse. I suppose I always felt a little ashamed about my inability to cook.&lt;/p&gt;

&lt;p&gt;For the last few years, our daughter has been going to a college in Tokyo. Lately, my wife is spending more time over there, which means I’m spending considerable time alone at home. So I decided that this was the time to learn to cook.&lt;/p&gt;

&lt;p&gt;I started with a cooking recipe book for children. My wife also gave me a few easy recipes. But pretty soon I found out that Gemini is great at giving me recipes.&lt;/p&gt;

&lt;p&gt;It turns out cooking is just like any other making activity that I enjoy doing. So in hindsight it wasn’t a surprise that I got hooked. I follow the process blindly first, and I get to a certain outcome. I then look at the outcome and look back at the process. Sometimes I have some things that didn’t quite go well that I want to do differently, or sometimes I develop questions. I use those as a guide to take the next step. If  the first attempt doesn’t produce a great result, that’s actually great, because there’s only one direction from there and that’s up!&lt;/p&gt;

&lt;p&gt;And so I kept on.&lt;/p&gt;

&lt;p&gt;For example, say I want to figure out how to cook a certain vegetable, say taro. I tell that to Gemini, I ask for a recipe, and it gives me a few options. That then becomes my project that evening. I ride my bike to a grocery store, I pick up what I need. Usually I make a double batch so that one cooking lasts for a few meals.&lt;/p&gt;

&lt;p&gt;On weekends, I often take on a bigger project. The other day it was oysters I wanted to learn to cook. I learned to cook fish. Mapo tofu became my passion project. I even went out to a Chinese super market to get “proper” ingredients.&lt;/p&gt;

&lt;p&gt;Going to supermarkets became fun. I have so many more angles to explore now. Are there any ingredients that I haven’t worked on before? What are people buying? What can I use those for? Getting answers to any questions is practically free and instant, thanks to AI.&lt;/p&gt;

&lt;p&gt;Sometimes it is my turn to go to Tokyo and take care of our daughter. I very much enjoy cooking food for her. When it’s not easy nor obvious to figure out what I can do for her, cooking gives me a way to express my love &amp;amp; affection. Besides, the stuff I can get in supermarkets in Tokyo are so much better for Japanese cuisines. This probably sounds boringly obvious, but cooking and food is fundamentally intertwined with the land. And that in turn makes me wonder what dishes are uniquely Californian – just like that, I have another project to work on.&lt;/p&gt;

&lt;p&gt;In 2026, I plan to continue cooking, and I’d like to up the game in a few ways.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;I’d like to invite my friends and serve them my food. That’d be a major milestone for me. That’d give me more opportunities to see friends, too. I think the trick is to set the bar really low. We’ll see.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;In order to improve, I need to measure. I need to record how different input leads to different outcomes. I need to write down what I noticed. I’d like to get a more precise weight measure, and a temperature sensor.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Fri, 26 Dec 2025 00:00:00 -0800</pubDate>
        <link>https://kohsuke.org/2025/12/26/review/</link>
        <guid isPermaLink="true">https://kohsuke.org/2025/12/26/review/</guid>
        
        
        <category>cooking</category>
        
      </item>
    
      <item>
        <title>600km bike ride from Tokyo to Kyoto</title>
        <description>&lt;p&gt;Ever since &lt;a href=&quot;https://kohsuke.org/2023/06/14/aids-lifecycle-2023/&quot;&gt;I rode from San Francisco to Los Angeles a few years ago&lt;/a&gt;, I got hooked by long distance, multi day bike rides. The sense of adventure, encounters with the unexpected, and above all the feeling of life shrinking down to the bare minimum kernel.&lt;/p&gt;

&lt;p&gt;This year, I sent my road bike to Tokyo, which meant I could plan one in Japan.&lt;/p&gt;

&lt;p&gt;Tokaido has been a road well travelled since the beginning of the recorded history in Japan, until cars and rail roads upended everything. I decided to take on this route with my high school buddy.&lt;/p&gt;

&lt;h1 id=&quot;day-1&quot;&gt;Day 1&lt;/h1&gt;
&lt;p&gt;I rolled out from the same bike parking on the ground floor of my Tokyo apartment 5:30am before the dawn. The excitement was palpable. I’ve rolled out of this place many times now, but today my destination was a little different!&lt;/p&gt;

&lt;p&gt;Instead heading straight to Kyoto, however, first I rode some 20km to the heart of Tokyo, where Tokaido ends. Nihonbashi, which literally means “Japan bridg”. If I go the route, I might as well ride the whole route.&lt;/p&gt;

&lt;p&gt;Around 7am, I met up with my buddy and we took off. This was an ordinary weekday, and the city was starting to wake up. As we rode south, we witnessed the whole morning commute from the beginning to the end.&lt;/p&gt;

&lt;p&gt;~30km radius from the city center of Tokyo is the territory of trains. Every train station is like a town. At the heart is a train station, surrounded by some commercial area, and further out is a residential area. No place is more than 15 minutes away from a train station.&lt;/p&gt;

&lt;p&gt;During the morning commute, you see people appear from every tiny alley way, as if rain drops are forming a creek. These creeks steadily meet and form bigger flows, until they form a flood and disappear into a train station. The sheer number of humans here is just mindbogling.&lt;/p&gt;

&lt;p&gt;In one temple we stopped by, I bought a local sweet. The woman in the shop told me her family has been rooted in this area for centuries, and previously was in the business of running a travelers’ inn. I pictured her ancestor striking up a conversation with a traveler on foot some 400 years ago in the Edo era, just like she and I were talking. I felt connected to that scene, and I loved that feeling.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54875741851/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/fujisawa.jpg&quot; alt=&quot;Ginko tree in Yugyo-ji temple&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At ~80km, we arrived at the Sagami bay, facing Enoshima island. Up until this point, I had ridden before. From here on, I was squarely in an uncharted territory. Pushing the invisible boundary like that is always exciting, and on this trip we were just getting started!&lt;/p&gt;

&lt;p&gt;The Sagami bay was gently curving toward the left, and the cycling road by the sea was filled with dragonflies. Sunny, clear blue sky. Bright silver reflection from the Pacific ocean. A classic Japanese autumn day. Joy in life can be simple just like that.&lt;/p&gt;

&lt;p&gt;When I’m on a bike, I’m always unconsciously on a hunt for an interesting food/drink place. And when I see one, I just know. On this day, it was a local brewery. They were located in a white building perfect for this beach side city, and they had a truck parked in front selling beer.&lt;/p&gt;

&lt;p&gt;We kept on, making a few more unplanned stops. What is a bike trip without those unplanned stops!?&lt;/p&gt;

&lt;p&gt;Eventually we arrived at the entrance of Hakone, where the climb begins. Last 1km or so saw a crazy 21% slope. When I saw the road sign that said so, it struck fear in my heart. I don’t see I’ve ever rode a hill that steep in the past. But I didn’t come all the way to walk a bike. I did prevail, and I felt very proud.&lt;/p&gt;

&lt;h1 id=&quot;day-2&quot;&gt;Day 2&lt;/h1&gt;
&lt;p&gt;This day started with the only real climb of the entire trip. We left in the wee hours. We needed to cover a lot of distance today.&lt;/p&gt;

&lt;p&gt;As we were eating rice balls at a local 7-Eleven, we befriended a local rider. He’s probably 20 years older than us, and when we told him we were heading to Kyoto, he got really excited. He gave us various advices unsolicited. It was clear he was rooting &amp;amp; cheering for us. I love it when what I’m doing inspires others like that.&lt;/p&gt;

&lt;p&gt;This was a beautiful climb. Probably the first time in this trip we were riding in trees. The day was early enough, the traffic was light. At the top is a caldera lake.&lt;/p&gt;

&lt;p&gt;The downhill on the other side was pretty scary. The road was narrow, the car traffic was busy by that time, and the pavement was bad. That meant I had to occupy the whole lane for safety, but cars were piling up behind me. I tried to let some cars go in places where I felt safe enough, but then I had to get back into the lane before the next turn. The view was spectacular, but I had no opportunity to enjoy it.&lt;/p&gt;

&lt;p&gt;Along Tokaido were 53 designated towns/villages by the government back then to serve as inns for travelers. Those places are no longer functioning as inns, but most of them still remain, and they are often left as landmarks. We kept going through them one by one. That became how I measured our progress.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54875961728/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/fuji.jpg&quot; alt=&quot;Mt.Fuji is really close&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Past Hakone, we were reunited with the ocean again. Mt.Fuji is really close now, and it’s almost intimidating. Its top was hiding in cloud, so I kept peeking for a camera opportunity. This is the shot I got. The power lines I got in front emphasized the height of the mountain, it came out great.&lt;/p&gt;

&lt;p&gt;One of the food stops we made was at a restaurant 400 years old. They proudly hang a ukiyo-e from Hiroshige Andoh from that era, featuring this exact restaurant. I give it to them that not many restaurants get to brag about being depicted in a classic art like that. When I was young, I used to place a lot of value on innovating new things, but lately I started to appreciate the importance of carrying a torch forward. 400 years, though, put that to a whole new level.&lt;/p&gt;

&lt;p&gt;This restaurant is in one of the 53 rest stop villeages, but it appeared as if this was the only thing that survived the time. There was a small wooden marker on the side of the road commemorating the site of the head inn at this village, where the noble class would stay, but behind that marker, a construction was going and a new residential home was being built. If the map didn’t say so, this would have been just another random residential street. Time can be relentless like that, but I also felt the resilience of people. When times changed, they changed.&lt;/p&gt;

&lt;p&gt;We arrived at a family-owned traditional Japanese inn for the night under drizzle. This place used to be just restaurant, they said, but during the pandemic they switched to restaurant/inn. Taking the bath, it almost felt like I was borrowing somebody’s home.&lt;/p&gt;

&lt;p&gt;This trip is going very well so far.&lt;/p&gt;

&lt;h1 id=&quot;day-3&quot;&gt;Day 3&lt;/h1&gt;
&lt;p&gt;Since we were the only guests at the restaurant (AFAICT), they prepared our breakfast early, and we rolled out 7:30am.&lt;/p&gt;

&lt;p&gt;We were right before the biggest river along this entire Tokaido route, Ooigawa (大井川). Mere two centuries ago, there was no bridge over this river, and people had to cross on the shoulders of the laborers whose job was to wade through the river!&lt;/p&gt;

&lt;p&gt;The museum featured a wax figure of those laborers. Half naked, very musculine, crossing his arms, and gazing at me. It made me wonder the musculine culture of the place &amp;amp; the time, and the pride this place has today for that heritage.&lt;/p&gt;

&lt;p&gt;Our first stop today was a wooden pedestrian bridge over the Ooigawa river. We got there, and we saw this narrow straight bridge whose length must be close to a kilometer. It said put 100 yen into thix box to cross, which meant this bridge was in active use! Delighted, we rode up. There was no hand rails, the bridge was pretty narrow and reasonably elevated from the river bed. It was a pretty scary experience.&lt;/p&gt;

&lt;p&gt;In the old pictures they had, the bridge looked even scarier. It speaks to the civil engineering challenges of building a bridge over this ricer. No wonder there weren’t any bridges. Just another thing we take for granted.&lt;/p&gt;

&lt;p&gt;Past the Ooigawa river, the road went through mountains and the scenery decidedly turned rural. The historical sites look so much more authentic in this setup.&lt;/p&gt;

&lt;p&gt;Civilization came back. We entered the city of Kakegawa. We rode through a quiet main street, and stopped by at a small local castle.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54875975379/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/hamanako.jpg&quot; alt=&quot;Hamanako lake&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Later in the day, we hit Hamanako lake (浜名湖). It’s always exciting to hit a big body of water. We made a bit of detour to enjoy the lake side ride. Just as I was going under the raised bed of the bullet trains, one went over my head at its top speed. That much mass, going at 250km/h or 150mph, this close to you… it’s awe-inspiring. Yet anothe engineering accomplishment of the modern era.&lt;/p&gt;

&lt;p&gt;We had one ramen lunch, but I couldn’t find us a good second lunch. Perhaps because of that, somewhere further out but before a climb, I bonked. I took a bit of break, ate the food I was carrying, and I got going again.&lt;/p&gt;

&lt;p&gt;The Futakawa village, another one of those 53 rest stop villages, was beautifully preserved. We were looking for a sweet place to recharge our energy, and in that process we found some local elders exhibiting their proud rock collections. Each one of those carefully potted, named, an displayed. I love hearing from people who are passionate about whatever, and they had all the time in the world. We had a wonderful moment. But we had to keep going. We still got another 30km or so to cover.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54875958338/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/futagawa.jpg&quot; alt=&quot;Futakawa&quot; /&gt;&lt;/a&gt;
We stopped for beer quickly, and ended the day at a big resort hotel by the Mikawa bay (三河湾). We had a commanding view of the bay from our room, and the sunset time was incredible. There were hardly any guests staying here, either.&lt;/p&gt;

&lt;h1 id=&quot;day-4&quot;&gt;Day 4&lt;/h1&gt;
&lt;p&gt;I woke up early in the morning, as I do, and I clicked some pictures. I waited for the public bath to open, and a guard took a pity on me and he let me in earlier. Thanks to him, I had the whole place to myself. He said he does triathlon, so we had a bit of conversation about my bike. He then immediately profusely apologized for stepping over the boundary and “bothering me”. That’s a very Asian move, but I felt both his professionalism and his warmth, and that moved me.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54874859542/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/mikawa.jpg&quot; alt=&quot;the Mikawa bay in the morning&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We both filled ourselves to the brim with breakfast buffet, and we rolled out. Rain over night really cleared the air, and moisture rising from the mountains created purple cloud. Such a beautiful day to ride.&lt;/p&gt;

&lt;p&gt;We rode a busy car road for a while, then we turned right to Tokaido, which in this are is more of a residential street. Bike riding is so up close to people’s daily lives. I love these sections where you get a real glimpse into the local life.&lt;/p&gt;

&lt;p&gt;As we headed to Nagoya (名古屋), the road got really busy. The urban sprawl went on endlessly. This was perhaps the least enjoyable section of the whole route. Most drivers passed me with a safe distance, and I have a relatively high tolerance for cars passing me close, but even for me, at times things were scary. I probably should have chosen a different route.&lt;/p&gt;

&lt;p&gt;In Nagoya, we made a stop at the Atsuta jingu shrine. A historical, very prestigious shrine. We sat and ate noodles here. I noticed that two young women behind me was deeply engaged in a conversation where one lady was bitterly complaining about how a common friend of theirs just keep imitating her fashion, jewelry, whatever. She went on for the whole time I was there, and I was kind of impressed with her ability to remember and replay the emotion in such gorgeous details. The other woman was acknowledging her feelings, but she was also making the point I wish she would make; for example, if it bothers her that much, she needs to say so! According to the first woman complaining, their common friend does seek a permission to buy something similar! Such emotional maturity, and incredible patience. What can I say, the world was peaceful on that day.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54875732281/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/kuwana.jpg&quot; alt=&quot;Tokaido&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once we left Nagoya, things to a little better. From time to time, Tokaido left the busy car road and became a small residential road connecting one village to next. Because we started a little late on this day, the day was ending soon. No beer stop for us today. What a bummer.&lt;/p&gt;

&lt;p&gt;We got to our hotel at the Suzuka circuit just about the time when the Sun went down There was a truly breathtaking red sunset, but by the time I came back with my camera in my hand, that was already over. Darn.&lt;/p&gt;

&lt;p&gt;I can’t believe this trip is almost over.&lt;/p&gt;

&lt;h1 id=&quot;day-5&quot;&gt;Day 5&lt;/h1&gt;
&lt;p&gt;The road was much better today, as we mostly avoided the busy car roads. I’ve never been to this part of Japan, and I’m seeing a lot more of the rice fields. More houses look classic here. Big wooden pillars and beams, and highly decorated roofs. The road occasionally goes through the historic stops.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54875731691/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/seki.jpg&quot; alt=&quot;Seki inn toward the Suzuka mountain&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We went through the second biggest climb of this whole journey at the Suzuka mountain, and from there the road has nice smooth descent all the way to the biggest lake in Japan, the Biwa lake.&lt;/p&gt;

&lt;p&gt;Once again, emotionally I got a little overwhelmed when the long straight road finally terminated at the lake shore. It’s the literal end of the road. This isn’t actually the end of the ride, but the end was definitely approaching.&lt;/p&gt;

&lt;p&gt;We rode along the shore for a bit, got into a town, I was able to find a great lunch spot serving local beef. I started seeing trains whose signage said they are heading to Kyoto. Minute by minute we were getting closer to Kyoto!&lt;/p&gt;

&lt;p&gt;The actual end of the ride was rather anti-climatic. It was at the Sanjo bridge, a major intersection, but there was very much life as usual going on there. Tourists busily walking around, cars going every which way, and nobody paid any attention to us. There wasn’t even a signage that commemorates the end of this historic road. Perhaps for Kyoto, this was just one of many roads that led to rural areas of Japan!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://flickr.com/photos/12508267@N00/54875730321/in/album-72177720329857741/&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2025/11/beer.jpg&quot; alt=&quot;Finisher prize&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We celebrated our accomplishments and safe arrivals by having beer, then we hopped on a bullet train heading back to Tokyo. It was perhaps on this train I felt the true closure of this epic journey.&lt;/p&gt;

&lt;p&gt;For about 2 hours, I’ve seen our entire journey played back, in reverse, right outside the train window. I could see the towns we passed, rivers we crossed, the mountains we rode by. From time to time I could literally spot the exact roads we rode. Those were mere few days ago, but it felt like such a long time ago, too. And the train was going so fast!&lt;/p&gt;

&lt;p&gt;What an epic adventure it was. I’m so grateful I’m alive.&lt;/p&gt;

&lt;p&gt;Now I’m wondering where next.&lt;/p&gt;

&lt;p&gt;(See the entire picture collection at ↓)&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; data-header=&quot;true&quot; data-footer=&quot;true&quot; href=&quot;https://www.flickr.com/photos/12508267@N00/albums/72177720329857741&quot; title=&quot;Tokyo→Kyoto 東海道 ride 2025&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/54875967503_678fcc343c_z.jpg&quot; width=&quot;800&quot; height=&quot;600&quot; alt=&quot;Tokyo→Kyoto 東海道 ride 2025&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;
</description>
        <pubDate>Mon, 22 Dec 2025 00:00:00 -0800</pubDate>
        <link>https://kohsuke.org/2025/12/22/tokaido-bike-ride/</link>
        <guid isPermaLink="true">https://kohsuke.org/2025/12/22/tokaido-bike-ride/</guid>
        
        
        <category>bike</category>
        
      </item>
    
      <item>
        <title>Tahoe to San Jose ride</title>
        <description>&lt;p&gt;Summer tingles my itch to travel afar. It has always been a season to go somewhere for me.&lt;/p&gt;

&lt;p&gt;This year, when a bunch of people in my beloved local cycling group decided to sign up to an organized ride event to go
around Lake Tahoe, I knew my summer adventure has to be to ride my bike from Tahoe all the way home, San Jose.&lt;/p&gt;

&lt;p&gt;600km might not sound like a bike distance to most people,
but &lt;a href=&quot;/2023/06/14/aids-lifecycle-2023/&quot;&gt;I have done a longer ride&lt;/a&gt;, so I felt this was practical. The challenge with this
one was how to map out a safe route, in uninhabited areas that I have zero familiarity with. If I get into a trouble and
a nearest town is 20 miles away, I could be in a real bind.&lt;/p&gt;

&lt;p&gt;I contacted &lt;a href=&quot;https://www.facebook.com/groups/274724869304443/&quot;&gt;a Facebook group of Sacramento cyclists&lt;/a&gt; about my plan,
and &lt;a href=&quot;https://www.facebook.com/groups/274724869304443/posts/7245760502200810/?__cft__[0]=AZWue_DBClvtWbvFE9yNgsB_Z-H27M4lWCAoMSa5frgYFRU_W8tz4BXGfXe1YnwlaklqOsXon1KmvJeCqU7tl7MqCWa1ApcLrq3WGk8jyDpYqV8kMfVM6tv22PNqkdsQzeBtBjOf7ckFjZIROOXazjl7_VblN09r3RQUvbZ_k_VXsw&amp;amp;__tn__=%2CO%2CP-R&quot;&gt;they were able to tweak &amp;amp; validate the plan&lt;/a&gt;. People in the group must have felt this was a big adventure, and they
chose to become a part of it by providing feedback. Cyclists take care of each other, and I love that.&lt;/p&gt;

&lt;p&gt;Finding other riders to join this journey turned out to be harder. Most cyclist friends didn’t feel they are capable of
this, even when in my eyes they probably can. In my own experience, confidence building takes time and gradual step up,
so that’s understandable, but still disappointing. Even among capable riders, time availability was a problem. A whole
week is a lot to ask.&lt;/p&gt;

&lt;p&gt;But in the end, I managed to sign up one rider, Linda, who was willing to tag along with me all the way. Another rider,
Larry, decided to join from Sacramento and onwards.&lt;/p&gt;

&lt;p&gt;A 5 day trip across California was committed like that.&lt;/p&gt;

&lt;h1 id=&quot;day-0&quot;&gt;Day 0&lt;/h1&gt;

&lt;p&gt;On Sunday, I joined the “America’s most beautiful ride” event that goes around Lake Tahoe. For the rest of the folks in
the group, this was the main event, but for me, this was just a prelude, a warm-up.&lt;/p&gt;

&lt;p&gt;When I stepped out of my motel room at 6:15am, the air was bit misty and morning low light was bright. I could already
see riders rolling out into chilly morning air of Tahoe. The start line was directly toward the morning sun, so it was
as if riders were coming out of the light. That lifted my spirit.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/day0.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As we joined this stream of riders, I felt the joy of being a part of something bigger. There must have been thousands
of riders in this event. I got carried away with excitement. I went fast, wanting to feel the cold air on my body, so I
kept calling out “on your left” and passed other riders by a dozen. I also stopped frequently to take pictures. This
unusual pattern of riding meant there are some people I kept passing many times. I started recognizing them, and so did
they. Spontaneous friendship emerged. Many of them said my voice is a great “radio voice”. I felt good.&lt;/p&gt;

&lt;p&gt;Man, there’s no shortage of photo opportunities on this ride. The lake that gradually changes its color from emerald
green to deep blue. Remote mountain range that’s still white with snow. Big blue sky. As the day went by, I started
seeing people coming out to beach to have good time. I rode past pick-up trucks unloading a cooler box full of beer. A
peaceful beautiful weekend. Such a picturesque place.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/day0-landscape.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In hindsight, I wished I went more slowly. There’s no reasons to hurry; I could have made stops for coffee, ice cream,
beer, better lunches. I got dropped from my group at this point anyway. But maybe such is life. Somehow you are always
in a hurry, when you shouldn’t.&lt;/p&gt;

&lt;p&gt;I got reunited with the group at the finish line party. We were all tired, but all happy. We had food and beer. Live
music was going. We had some wonderful downtime there.&lt;/p&gt;

&lt;p&gt;At the motel, Linda and I sent them off as they drive back home, and we settled in for the night. Tomorrow my real
journey begins!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/strava/day0.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;day-1&quot;&gt;Day 1&lt;/h1&gt;

&lt;p&gt;This was an easy day with mere 50 miles to Truckee. Half the route was the exact same as yesterday.&lt;/p&gt;

&lt;p&gt;I found that the big saddlebag I got to carry stuff changed the handling of the bike considerably, so I took this ride
carefully. I didn’t want to stand up and dance on the bike, I didn’t want to go too fast on the downhill. On top of
that, I was stopping to take pictures. All in all, I was going pretty slow.&lt;/p&gt;

&lt;p&gt;So it was no wonder I got dropped at the first climb of the day. I asked Linda not to go too far ahead, but she wasn’t
waiting for me at the top of the climb. As I kept going, I started to get worried. She doesn’t have a bike computer that
can navigate her. Her cell phone doesn’t seem to have location tracking feature, and she can’t see my location tracking
info, either. If she misses the turn, or if she waits for me but I miss her, then we might have a real trouble
regrouping.&lt;/p&gt;

&lt;p&gt;In hindsight, my fear was probably overblown. She was an experienced rider, and the road was basically straight. There’s
still enough traffic, so if there was any mechanical problem, I could have probably gotten help. Still, it took me a few
days to adjust my expectations and get into a proper groove with her.&lt;/p&gt;

&lt;p&gt;We eventually rolled into Truckee without a hiccup, spent some wonderful time in a coffee shop and a local bar, settled
into a hotel. We were off to a great start.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/strava/day1.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;day-2&quot;&gt;Day 2&lt;/h1&gt;

&lt;p&gt;To me, this was the biggest day of the whole journey. We had to cross 50 miles of uninhabited Sierra Nevada highlands
forrest, then ride another 30 miles to Auburn. All brand-new route. Uncharted territory.&lt;/p&gt;

&lt;p&gt;This route was incredible. We went by Donner Lake in the morning. The lake was calm, and surrounded by expensive looking
cottages. I tried to imagine myself renting a vacation home for a few days. I could be sitting by the lake painting.&lt;/p&gt;

&lt;p&gt;The road started climbing toward Donner Pass, winding left and right. Sharp, rocky mountains (I guess that’s where the
name came from!) started defining the terrain. Snow capped mountain is no longer a backdrop, it’s now right in front of
me. The view was spectacular. The top of the climb was the highest point in this whole ride — 7000ft above sea level.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/day2.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;From here, the road took a gentle but steady descent, creating an incredible ride experience. The bulky saddlebag meant
I still couldn’t completely trust my bike at the high speed, but I couldn’t resist speeding up. There’s something
primordial about going fast. The road kept on, so we kept going. This incredible descent went like this for whopping
35km/20 miles!&lt;/p&gt;

&lt;p&gt;We took the shoulder of Interstate Highway 80 for a few miles, then our route diverged from the highway toward Grass
Valley. The road started climbing exposed under sun, then another 30km/20 miles descent through the dense pine forest
continued. We average 30+km/h (20mph) on this section.&lt;/p&gt;

&lt;p&gt;I felt dreamy. I entertained an illusion that this will continue forever. The car traffic was busy, and the shoulder was
narrow, though.&lt;/p&gt;

&lt;p&gt;The last 50km (30 miles) of the route was very hot, and over rolling hills. I could sense that Linda is tired, and I
started to worry about her in a different way from yesterday. I made a crucial routing error that led us to push our
bikes through gravel field, which didn’t help at all. I started to wonder if I took on a bigger responsibility than I
should have. When you accept somebody into your ride, their safety is your responsibility. In the end, we prevailed.
Beer tasted great that night.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/strava/day2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;day-3&quot;&gt;Day 3&lt;/h1&gt;

&lt;p&gt;The air was already hot by the time we rolled out in 7:15am. The forecast said we’ll hit 38C/100F. Luckily, on this day
the ride is short, just 80km/50 miles from Auburn to Sacramento, so the idea was to get to Sacramento before noon and
spend the afternoon somewhere chilling.&lt;/p&gt;

&lt;p&gt;Road from Auburn to Folsom was a nice smooth downhill. We went fast. The riverside trail from there to Sacramento was
not that enjoyable for me, though I’m not sure why. It has every reason to like — no car traffic, trees casting shade
from time to time, and the road went left and right, up and down. One thing I didn’t appreciate was a mileage marker. It
kept reminding me how slow we are going and how far away Sacramento was.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/day3.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We eventually rolled into the old Sacramento, and found ourselves in an air-conditioned British pub with a friendly
bartender. We spent a couple of hours there. I had not only one but two pints from high noon.&lt;/p&gt;

&lt;p&gt;I wasn’t quite done for the day, though. I had to go ride out another 10 miles to get to a car I parked, then I needed
to drive it back to the hotel in order to swap clothes and resupply. It was a peak heat time out there, but I figured I
could do it. I also needed some alone time.&lt;/p&gt;

&lt;p&gt;This ride to the northeast of Sacramento went through some of the poorest area. Along the bike trail were various
homeless encampments. And despite this life-threatening scorching heat, I saw some homeless people sunbathing! I worried
about their psychological well-being, but I was also a little scared, so I went on. It’s always disheartening to see
just how bad of a job we do to distribute the wealth, on this richest country in the world.&lt;/p&gt;

&lt;p&gt;My basic technique to ride in heat is to apply water liberally over my body and let the air cool me. I spent an entire
bottle just to go this 10 miles. A couple of hours later I drove the car back to the parking and then rode back, the
same deal. I thought I managed it pretty well, but during the dinner I run out of the energy, so I was probably actually
pretty tired and over-confident.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/strava/day3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;day-4&quot;&gt;Day 4&lt;/h1&gt;

&lt;p&gt;Our route this day was almost the exact reverse of my earlier ride from San Jose to Sacramento. So it’s started to feel
a little bit like getting close to home. When you know the route, it’s always easier. We went through the golden
countryside of California.&lt;/p&gt;

&lt;p&gt;The temperature was still high, but as the day went by, the wind became noticeably cool. The pacific ocean is sending
help on our way! This is a headwind section, but in this case I actually enjoyed that. There was endless supply of cold
air to cool me down. We went through towns, over rolling hills, steadily heading southwest.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/day4.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;We took a couple of big food stops along the way as well, which is my preferred way to go about rides like this. Local
restaurants are filled with local people who give me a glimpse of a life in here. Weekday day time is always relaxed.
Old ladies having a get-together. Families together where kids were doing one thing while adults were doing another.&lt;/p&gt;

&lt;p&gt;I would have loved to take another drink stop, but there was no suitable coffee shop, so we just marched on, and arrived
at Walnut Creek to end the day.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/strava/day4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;day-5&quot;&gt;Day 5&lt;/h1&gt;

&lt;p&gt;The last day was another short ride day, so we started late. At the roll out, my legs were tired, but in a few hours it
became OK. This is how it always is in multi-day rides. You just need to get going, and it will feel better.&lt;/p&gt;

&lt;p&gt;The road down to Sunol was a long straight stretch with little change, but the weather was even better than yesterday. A
perfect California summer of warm sun and cool air. We went through many nice towns and communities. The road kept on,
so did we.&lt;/p&gt;

&lt;p&gt;Near Sunol, Linda had her shifter cable snapped, so we made a stop at a local bike shop in Fremont. This added another
hour or two.&lt;/p&gt;

&lt;p&gt;By this point, the roads were really starting to feel familiar. As we approach the finish line, the sense of familiarity
got stronger almost minute by minute. I could sense that everyone was getting excited. We are near home!&lt;/p&gt;

&lt;p&gt;I set our finish line to be at Peet’s that we always go after the end of our Saturday ride. We sat on the same spot we
always do, and reflected a bit on this adventure. I wasn’t sure what to think really, but I hugged them tight.&lt;/p&gt;

&lt;p&gt;We parted ways with Linda, but Larry came along with me further. I sensed that he didn’t want the day to end just yet,
so I suggested that we have a beer stop.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/day5.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As the bartender was pouring my beer, she remarked that I was riding. So I was able to tell her I just rode back from
Tahoe. It took a bit for her to grok that I had just crossed California. This must have been inconceivable to her; She
started telling around other staffs that “this guy just rode his bike from Tahoe!” and pretty soon everyone knew it. I
felt flattered. I never had any doubt with my ability to finish this ride, but this made me realize just how far I came
in my capabilities.&lt;/p&gt;

&lt;p&gt;A random dude offered to buy me beer. I blushed and declined, but I kind of wish I took that offer.&lt;/p&gt;

&lt;p&gt;I fist-bumped Larry and parted ways, and I rode last one mile back home. I felt a bit emotional rolling into my
driveway. That’s how my 725km/450 mile journey came to an end.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/strava/day5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h1 id=&quot;epilogue&quot;&gt;Epilogue&lt;/h1&gt;

&lt;p&gt;The day after, I woke up 6am, biked (yes!) to San Jose train station, and took 8am train back to Sacramento in order to
pick up my car I left behind there.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/day6.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The train slowly went back north, criss-crossing with some of the routes we took a few days ago. I could see the
intersections we turned, roads we travelled, and bridges we crossed. I stared at them as they went past the window. I
hoped those cut scenes might help make sense of the intense week.&lt;/p&gt;

&lt;p&gt;When I set my foot again on Sacramento, it was in a much cooler air, and the weekend atmosphere was a lot more festive.
I thought about stopping at the same pub we spent hours a few days ago, to see if that might help me feel something, but
I decided my summer vacation is over, and I just drove away.&lt;/p&gt;

&lt;p&gt;To this day, even after writing this blog post, I still don’t really know what to make sense of the experience. It feels
simultaneously very long and very short, very easy and very hard. What I remember is mostly bits and pieces of cut
scenes. Individually they are meaningless, but collectively somehow it seems to represent something much bigger. But I
don’t know how to describe that.&lt;/p&gt;

&lt;p&gt;I’m just left with the feeling of deep content. I feel rather satisfied. Maybe that’s what drives me to travel like
this.&lt;/p&gt;

&lt;p&gt;I wonder where my next multi-day ride is.&lt;/p&gt;

&lt;h1 id=&quot;references&quot;&gt;References&lt;/h1&gt;
&lt;p&gt;Details of the route if anybody wants to try:
&lt;a href=&quot;https://ridewithgps.com/collections/2607400?privacy_code=ExzQDAkC04qjfRtIL6aa8EKLdeBUa8aD&quot;&gt;&lt;img src=&quot;/wp-content/uploads/2024/tahoe/routes.png&quot; alt=&quot;The entire route&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More pictures from the trip:
&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/12508267@N00/albums/72177720317913479&quot; title=&quot;Lake Tahoe ride 2024&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53789875472_8215a74d2f.jpg&quot; width=&quot;640&quot; height=&quot;480&quot; alt=&quot;Lake Tahoe ride 2024&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;
</description>
        <pubDate>Tue, 18 Jun 2024 00:00:00 -0700</pubDate>
        <link>https://kohsuke.org/2024/06/18/tahoe-to-sanjose-ride/</link>
        <guid isPermaLink="true">https://kohsuke.org/2024/06/18/tahoe-to-sanjose-ride/</guid>
        
        
        <category>bike</category>
        
      </item>
    
      <item>
        <title>Othello by Claude</title>
        <description>&lt;p&gt;Claude 3 just got released, so I decided to try it out with something everyone around me is talking about; How well does AI write a program?&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://aiarchives.org/id/zQnuguvRS1foZJARP3od&quot;&gt;The entire conversation history is here&lt;/a&gt; if you’d like to follow along.&lt;/p&gt;

&lt;h1 id=&quot;can-you-write-me-othello&quot;&gt;Can you write me Othello?&lt;/h1&gt;
&lt;p&gt;First I used the free version and just asked pointblank “I’d like to write a Python program that lets two human players play Othello. Can you help me with that?”, and it gave me &lt;a href=&quot;https://github.com/kohsuke/claude-playground/commit/427dda50e310d7d30e9c3a8d040c79330405ae68#diff-828ae75b47839623e9fde6b7082c66c1002e8ee2ca315c2349d4c0eeef327726&quot;&gt;a functioning CUI based Othello program&lt;/a&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;% python othello_game.py
  0  1  2  3  4  5  6  7
0                
1                
2                
3       W B      
4       B W      
5                
6                
7                
Player W&apos;s turn. Valid moves: [(2, 4), (3, 5), (4, 2), (5, 3)]
Enter your move (row col): 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I then asked Claude to generate unit tests. &lt;a href=&quot;https://github.com/kohsuke/claude-playground/commit/427dda50e310d7d30e9c3a8d040c79330405ae68#diff-d6ee1fda0331e169c9c35e4132526bb18a332410d21b01560b483274448add18&quot;&gt;It gave me code that looks seemingly OK&lt;/a&gt;, but when run, none of them passed.&lt;/p&gt;

&lt;p&gt;Since the game is playable, I knew the problem is in tests. I first attempted to just pass back the
error messages to Claude in the hope that it can fix the tests, but all it did was to give me supposedly
new code that actually is identical to the old code.&lt;/p&gt;

&lt;p&gt;At this point it was clear I needed to understand the failure and guide Claude.
But as I started to look into what’s wrong, I found the code to be unreadable:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;tiles = self.game.check_direction(2, 3, 2, 1, 0, 1)
self.assertEqual(tiles, [(3, 4)])
&lt;/code&gt;&lt;/pre&gt;

&lt;h1 id=&quot;232101-whats-that-supposed-to-mean&quot;&gt;2,3,2,1,0,1?? What’s that supposed to mean!?&lt;/h1&gt;

&lt;p&gt;So I changed the gear a bit, and asked Claude to refactor this code. I had the clear idea of
how I’d write this code, so I gave specific instructions along those lines.&lt;/p&gt;

&lt;p&gt;This felt like a painful process. Claude cheerfully obliges with my suggestions, and it takes
a step in the right direction, but never gets far enough. I have to do a number of back and forth
to keep making minor coding corrections till it gets to the state I found decent. And each round trip
takes time. Claude started to visibly slow down as the conversation got longer.&lt;/p&gt;

&lt;p&gt;It’s like working with an eager intern. It’s lovable, and so enthusiatic, but it needs
a lot of handholding, and the code it produces is so mediocre.
But then, I know tons of people who can’t even code at that level, so I’m probably setting the bar too high.
After all, coding is something I deeply care about.&lt;/p&gt;

&lt;p&gt;I also made one suggestion at a time. Reflecting back, I think this was instinctive, but I wonder
what happens if I make all the suggestions at once.&lt;/p&gt;

&lt;p&gt;Somewhere in the middle of this, I run out of the free credit, so I switched to the paid version,
which also gives me a better model.&lt;/p&gt;

&lt;p&gt;After several more back and forth, &lt;a href=&quot;https://github.com/kohsuke/claude-playground/tree/3bd5810c3b6b082b2c8decd455b8af2180accd25&quot;&gt;I finally arrived at the code that I’m happy enough&lt;/a&gt;. On several occasions,
I pointed out a problem, it gives me a “new” code that’s just identical to the old code. It felt like
talking to a fellow programmer over a phone line, instead of looking at the same screen. It’s as if
we don’t agree what we are currently looking at. Pretty clear to me the chat format is not optimal for
coding, and that in turn makes me think the chat format is probably not optimal for vast number of
other activities.&lt;/p&gt;

&lt;h1 id=&quot;can-we-test-this&quot;&gt;Can we test this?&lt;/h1&gt;
&lt;p&gt;Happy that the code is in a good state, I came back to the unit tests.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/kohsuke/claude-playground/blob/1fb37b875dec038dac10bfb7cd1c3a9129aa1a2e/test_othello.py&quot;&gt;The new set of tests it wrote&lt;/a&gt; looks rather redundant. For example, I’d definitely define local constants for EMPTY, BLACK, and WHITE
and the name Vector2D is too long for a local concept like this.&lt;/p&gt;

&lt;p&gt;But more importantly, none of those tests passed! So the same drama unfolded.
I gave it the error messages, it said it knows what’s wrong, gives me the code that’s identical to the current code…&lt;/p&gt;

&lt;p&gt;At this point, I decided to debug the problem myself.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&quot;language-python&quot;&gt;self.assertEqual(self.game.check_direction(Vector2D(2, 3), Player.BLACK, Othello.EAST), [Vector2D(3, 4)])
AssertionError: Lists differ: [] != [(3, 4)]
&lt;/code&gt;&lt;/pre&gt;

&lt;blockquote&gt;
  &lt;p&gt;I’m pretty sure this is a bug in the test code. Checking direction from (2,3) to east wouldn’t produce (3,4). Maybe you are trying to check south from (2,3), or perhaps east from (3,2)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In response to my message, Claude sent me a lengthy response, in which it revealed the root cause 
of the problem. It thought the state of the game prior to the test is this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-commandline&quot;&gt;  0 1 2 3 4 5 6 7
0
1
2     . B .
3   . W B .
4     . B W
5
6
7
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I have no idea where such game state came from. This is not a legal othello game state.
Claude then proceeded to mumble some more, and eventually gave me tests that do pass, but by accident.&lt;/p&gt;

&lt;p&gt;I pointed out that this is not the board state. Claude responded positively to that, like it always do,
and then it proceeded to give me a whole new set of assertions, which didn’t pass.&lt;/p&gt;

&lt;p&gt;I’m in groundhog day.&lt;/p&gt;

&lt;p&gt;This is the point I just gave up. It’s much easier to just go edit the code myself beyond this point.&lt;/p&gt;

&lt;h1 id=&quot;how-did-it-do&quot;&gt;How did it do?&lt;/h1&gt;
&lt;p&gt;The set up is like a standard coding interview you do when you are hiring a new software engineer.
If I think of Claude that way, it’s unlike any human engineers that I interviewed.&lt;/p&gt;

&lt;p&gt;No human engineer would produce a functioning Othello game in one shot in 15 seconds, not even the best in the world.
That part of it is super human.&lt;/p&gt;

&lt;p&gt;It’s also clear it doesn’t really care about elegant beautiful program, and so it’s incapable of producing one.
That part of it is like an average programmer. I regularly hire people who fail this bar for me and they thrive well
in my companies.&lt;/p&gt;

&lt;p&gt;Then it’s also inexplicably stupid in some areas. Number of times it was unable to dig itself back from the hole,
despite many suggestions and guidance. Even a relatively junior programmer would do better. I’d definitely
pass on candidates who show this level of incompetency.&lt;/p&gt;

&lt;p&gt;Strange mix. Like I said, unlike any human engineers.&lt;/p&gt;

&lt;p&gt;Now, if I think of it as me trying to figure out how to harness an LLM assistant to programming, not
a recruiting interview, I have an entirely different take.&lt;/p&gt;

&lt;p&gt;Given the way LLMs work, it makes sense that it struggles to pull back from earlier mistakes it makes.
It’s just as much influenced by what it says as well as what I say. This makes me wonder what it’s like
if I just re-edit my message as opposed to just append more messages, thereby eliminating its mistakes from
the conversation backlog.&lt;/p&gt;

&lt;p&gt;I think the way I’d use it is to go from zero to one, but then take over from there. It’s easier
(though it might actually take longer) for me to go edit the code, as opposed to mentally picture
how I edit it, and then find a way to communicate that to Claude.&lt;/p&gt;

&lt;p&gt;The conversational format is also not optimal. I’d want one well integrated into IDE, so no wonder
vendors are all working on it.&lt;/p&gt;

&lt;h1 id=&quot;lets-do-it-again&quot;&gt;Let’s do it again&lt;/h1&gt;
&lt;p&gt;Now that I learned how Claude behaves a little better, I decided to do this all over again.
This time I was hoping to use it better than my first time.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://aiarchives.org/id/FPn4No57lh6ZD8FrrpBj&quot;&gt;The entire transcript is here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I gave a bullet point list of what I wanted. This time I also decided to do the game in GUI.&lt;/p&gt;

&lt;p&gt;Like the first time, Claude came up with &lt;a href=&quot;https://github.com/kohsuke/claude-playground/blob/othello2/othello.py&quot;&gt;more or less fully functioning game in no time&lt;/a&gt;. Very impressive
and super human. It would have taken me a lot more to learn the basics of pygame.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/wp-content/uploads/2024/othello.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I decided not to waste time by refactoring the code to perfection.
The code is actually a little buggy, for example around how it handles the &lt;code&gt;game_over&lt;/code&gt; flag, too.
It’s easier to fix those myself.&lt;/p&gt;

&lt;p&gt;I asked it to generate the unit tests and &lt;a href=&quot;https://github.com/kohsuke/claude-playground/blob/othello2/test_othello.py&quot;&gt;this time it also gave me tests that passed in one shot&lt;/a&gt;. Those are not particularly well designed test cases,
but it did much better than the first time for sure.&lt;/p&gt;

&lt;p&gt;I’m feeling much better now. This is just like learning to work with a new colleague. As you get to know them,
you change the way you interact with them. This is just my 2nd time with Claude, and I’m already getting along
much better than the first time.&lt;/p&gt;
</description>
        <pubDate>Fri, 08 Mar 2024 00:00:00 -0800</pubDate>
        <link>https://kohsuke.org/2024/03/08/othello-by-Claude/</link>
        <guid isPermaLink="true">https://kohsuke.org/2024/03/08/othello-by-Claude/</guid>
        
        
        <category>ai</category>
        
        <category>programming</category>
        
      </item>
    
      <item>
        <title>Outer Wilds</title>
        <description>&lt;p&gt;I recently bought PS5, so I asked my gamer colleague for some recommendations. Among a few that mentioned was
&lt;a href=&quot;https://www.mobiusdigitalgames.com/outer-wilds.html&quot;&gt;Outer Wilds&lt;/a&gt;. I’ve heard that one before. A unique,
space-exploring game made by a small independent studio. This is it.&lt;/p&gt;

&lt;p&gt;Wow, what a world they created. Creatures. Colors. Names. All those elements together create
this somewhat nostalgic, peaceful, cute world that you just enjoy exploring. That’s the game, really.
I wonder how much of that is intentionally designed, vs how much of it is just the expression of who the maker
is. I’m involved in some creative activities myself, and it is my impression that a single person has only
so much creative “breadth”; In other words, two works of art from the same author almost always have something
in common.&lt;/p&gt;

&lt;p&gt;And despite how small the world is, it packs so much stories. Almost everywhere you go, you run into something.
You visit enough places, you start collect enough pieces of the story, and they start to come together. I loved it.&lt;/p&gt;

&lt;p&gt;That said, the control mechanism was just plain incompatible with me. No matter how I tweak the setting, I can’t
make the Y-axis operate the way I want. This resulted in me looking/moving upward when I wanted to do the opposite,
leading to many unnecessary deaths. What could have been a joy of moving around in zero gravity space
turned into a frustrating exercise.&lt;/p&gt;

&lt;p&gt;When it comes to a space exploration game, my all time favorite is &lt;a href=&quot;https://www.kerbalspaceprogram.com/&quot;&gt;Kerbal Space Program&lt;/a&gt;.
Everything I know about orbital physics, rocket science, and how you maneuver in space from one orbit to another,
I learned from KSP. This process of learning just hooked me. The knowledge made me appreciate the challenges of
real world space explorations, and why they do things the way they do them. Outer Wilds didn’t have that kind of
learning.&lt;/p&gt;

&lt;p&gt;In the game, you follow the footsteps of the ancient spacefaring civilization who used to live in this solar system.
Sounds science fiction, right? I love science fiction, but this game was more of a fantasy than science fiction for me,
in the sense that I didn’t feel enough respect to the real world physics. It didn’t feel “conceivable”, if that makes
any sense. Take “quantum”, for example. The game features a number of quantum something, but really there’s nothing
to do with quantum physics/behaviours of the real world. They are just named so because … they are cool?
That the world is delivarely made small, which makes sense, might be another contributing factor.&lt;/p&gt;

&lt;p&gt;All in all, it was a wonderful game. Acceptable amount of time commitment. A game I can recommend to other people.
But on the internet, I see a number of people writing much, much deeper praise for this game. Clearly, the game
moved some people very deeply. I didn’t get that. And that made me a little sad.&lt;/p&gt;
</description>
        <pubDate>Tue, 09 Jan 2024 00:00:00 -0800</pubDate>
        <link>https://kohsuke.org/2024/01/09/outer-wilds/</link>
        <guid isPermaLink="true">https://kohsuke.org/2024/01/09/outer-wilds/</guid>
        
        
        <category>game</category>
        
      </item>
    
      <item>
        <title>New webinar: Navigating the firehose of test failures</title>
        <description>&lt;p&gt;At Launchable, lately we are working on a new product that tackles a bigger challenge of people doing QA.&lt;/p&gt;

&lt;p&gt;Automating tests is hard enough, but that’s just the beginning. Every morning, you show up to the results of
the nightly test runs.&lt;/p&gt;

&lt;p&gt;First, the noise has to be filtered away. There are flaky failures, there are failures that Bob is currently working on,
and there are low priority failures. Then for real issues, people need to be assigned to investigate them.&lt;/p&gt;

&lt;p&gt;If you are testing complex software, which tends to be the case for tests running nightly, this detective work
can be really challenging. Correlating log files, referencing past failure modes, …&lt;/p&gt;

&lt;p&gt;Then those failures need to be prioritized, passed to the right developers to get fixed, and the delivery of the fix
needs to be tracked until they get verified in another test run.&lt;/p&gt;

&lt;p&gt;This is something people are doing every day. And I believe this can be made better. I’m doing a webinar to
explore various aspects of this challenge, and what  different engineering teams are doing to deal with this.&lt;/p&gt;

&lt;p&gt;If you are one of the people facing the challenge, come join us. You’ll walk away with a good sense of this landscape.&lt;/p&gt;

&lt;div class=&quot;linkpreview&quot;&gt;
        &lt;a href=&quot;https://us06web.zoom.us/webinar/register/4216929853285/WN_9ohT1AXAR6KG8iYGbGiePg&quot;&gt;
            &lt;div class=&quot;linkpreview_image&quot; style=&quot;background-image: url(https://us06web.zoom.us/w_p/89860095797/405b950e-6f78-4520-b75b-9538e5d1a88a.jpeg)&quot;&gt;
            &lt;/div&gt;&lt;/a&gt;
    &lt;div class=&quot;linkpreview_text&quot;&gt;&lt;a href=&quot;https://us06web.zoom.us/webinar/register/4216929853285/WN_9ohT1AXAR6KG8iYGbGiePg&quot;&gt;
        &lt;div class=&quot;cardlinkpreview_domain&quot;&gt;us06web.zoom.us&lt;/div&gt;
        &lt;div class=&quot;linkpreview_title&quot;&gt;Navigating the firehose of test failures: From challenges to solutions. Join a webinar for developers, QA and technical leaders by Kohsuke Kawaguchi on September 7th, 10 am PST.&lt;/div&gt;
        &lt;div class=&quot;linkpreview_description&quot;&gt;Automating tests? Check. 

Regular run cycles? Check. 

But now comes the trickier part: handling the inevitable firehose of test failures. This isn&apos;t about pointing fingers or running in circles—it&apos;s about translating these findings into tangible product enhancements. 

Join us as we delve deep into the world of test failure triage. Learn how different engineering teams are battling this challenge. 

If test failures are on your radar, this talk will equip you with a clearer roadmap of the terrain.

Audience:
Developers, QA, SDET, Technical Engineering Leaders. You are on a team that develops software, and with a reasonable codebase, and test base size.&lt;/div&gt;
    &lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;style&gt;
&lt;/style&gt;

</description>
        <pubDate>Wed, 30 Aug 2023 00:00:00 -0700</pubDate>
        <link>https://kohsuke.org/2023/08/30/webinar/</link>
        <guid isPermaLink="true">https://kohsuke.org/2023/08/30/webinar/</guid>
        
        
        <category>launchable</category>
        
      </item>
    
      <item>
        <title>Virupaska</title>
        <description>&lt;p&gt;Every time I get a chance to visit Japan, I make the point of visiting this huge hobby shop. It occupies a massive eight story building in Akihabara, right in the center of Tokyo. I go there to see their huge plastic model corner. I slowly walk through the isles, see if any box would speak to me, and take it home. I usually manage to find something unexpected.&lt;/p&gt;

&lt;p&gt;The other day, that model kit was a buddhism statue. First I was surprised that a kit like this existed in the first place. Then I thought, I’m not religious, but clearly these deities have been sculpted for millenia, and anything that’s been loved for such a long time by so many people must have some inherent beauty in them. The only question is if my heart is open enough to see them or not. So that became the kit that I brought back home.&lt;/p&gt;

&lt;p&gt;I suppose I have also been interested in trying a figurine. After all, it is one of the major sub genre within the model hobby. Most figurine models are from animes and movies, and I’m not really into that stuff. I mean, what would my family think of me if I’m spending hours building a cute girl figurine. But a buddhism statue, that’s a different story.&lt;/p&gt;

&lt;p&gt;Once assembled, the figurine fits comfortablly in my hand. It’s full of details, and it’s perfectly proportioned. In the process of building and painting it, naturally I held it and looked at it from every angle. Thick chest. Muscular thigh. The angry face that stares down. Very masculine. He just looks so good!&lt;/p&gt;

&lt;p&gt;I researched a bit and here’s the original. It was originally sculpted in the 13th century by Unkei &lt;a href=&quot;https://en.wikipedia.org/wiki/Unkei&quot;&gt;運慶&lt;/a&gt;, who is widely considered to be one of the best.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://www.kohfukuji.com/wp-content/uploads/2020/03/26-2t.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’m trying to express how it makes me feel in words, but no words come out, and instead I’m just shedding tears. This is like receiving an unexpected letter from 800 years ago. The time deteriorated its surface, but not its shape. I suppose this is what the mastery of the art is like. To move a person so deeply over such a long time.&lt;/p&gt;

&lt;p&gt;If you ever get a chance, please, go build one. There are experiences you can only gain by building one, not by looking at one. This is one of those.&lt;/p&gt;

&lt;p&gt;Not knowing what to do, I just generally followed the instructions on the leaflet for how to paint. I think it should have been a little darker. I should have done the research before I made it, not after. Luckily, Virupaska is one of four guardian deities, so there are three more to go. I just need to build another.&lt;/p&gt;

&lt;p&gt;But really, I have a better idea. I need to paint it in more vibrant color, like a Marvel superhero. Like the ones I’ve seen in India. As my friend likes to tell me all the time, those deities are time tested super heroes.&lt;/p&gt;

&lt;p&gt;&lt;a data-flickr-embed=&quot;true&quot; href=&quot;https://www.flickr.com/photos/12508267@N00/albums/72177720310785758&quot; title=&quot;Virūpākṣa 広目天 (1:15ish)&quot;&gt;&lt;img src=&quot;https://live.staticflickr.com/65535/53146002764_accdb72315.jpg&quot; width=&quot;640&quot; height=&quot;480&quot; alt=&quot;Virūpākṣa 広目天 (1:15ish)&quot; /&gt;&lt;/a&gt;&lt;script async=&quot;&quot; src=&quot;//embedr.flickr.com/assets/client-code.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 30 Aug 2023 00:00:00 -0700</pubDate>
        <link>https://kohsuke.org/2023/08/30/virupaska/</link>
        <guid isPermaLink="true">https://kohsuke.org/2023/08/30/virupaska/</guid>
        
        
        <category>model</category>
        
      </item>
    
      <item>
        <title>Product research interview: QA triage</title>
        <description>&lt;p&gt;At Launchable, we are working on the next iteration of our product that tackles the everyday QA challenges with data &amp;amp; AI.&lt;/p&gt;

&lt;p&gt;More specifically, we are targetting “triage”; I’m talking about seeing test results, classifying those failures, figuring out which ones matter and which ones are noise, analyzing the root cause, passing them on to the right developers, and tracking the fix until it makes its way to testing.&lt;/p&gt;

&lt;p&gt;If this sounds familiar to you, I’d love to talk to you. If you know somebody whose job is to do exactly this, I’d like to talk to them!&lt;/p&gt;

&lt;p&gt;I’d like to walk you through our thoughts &amp;amp; what we are planning to build, and I’d love to hear from you whatever you have to say. I’m trying to make the life better for you &amp;amp; your colleagues, so please help us help you!&lt;/p&gt;

&lt;p&gt;It’ll only take 90 mins, and I promise this will be a fun conversation. You will also get a $50 amazon gift card as our appreciation.&lt;/p&gt;

&lt;p&gt;If this is something you are willing to do with me, please sign up below!&lt;/p&gt;

&lt;script charset=&quot;utf-8&quot; src=&quot;//js.hsforms.net/forms/embed/v2.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
&lt;script&gt;
  hbspt.forms.create({
    region: &quot;na1&quot;,
    portalId: &quot;21138832&quot;,
    formId: &quot;10604e38-3f03-4349-9a4f-1ecb571bf998&quot;
  });
&lt;/script&gt;

</description>
        <pubDate>Fri, 04 Aug 2023 15:19:28 -0700</pubDate>
        <link>https://kohsuke.org/2023/08/04/product-research-interview-qa-triage/</link>
        <guid isPermaLink="true">https://kohsuke.org/2023/08/04/product-research-interview-qa-triage/</guid>
        
        
        <category>launchable</category>
        
      </item>
    
  </channel>
</rss>
