[{"content":"\nThe last time we visited Montepulciano, I had some really good pasta with meat sauce, along with a plate of salami and cheese served with honey and jam. I really enjoyed the combination of the salty cheese with the sweet toppings, and it made me quite interested in Tuscan food.\nUnfortunately, the weather wasn’t very good on that trip, so we gave up on exploring more of the area.\nThis time, we started from Verona and first went to San Gimignano.\nWhen I was planning the route, the town caught my attention because of its many towers and old buildings.\nBut after we arrived, it was the food that caught my attention.\nThere was tiramisu at a bakery near the city gate, and then there were the gelato shops around Piazza della Cisterna.\nBy the evening, we were already quite full from all the food. We skipped dinner at a restaurant and just had one slice of pizza.\nThe pasta I really wanted to try would have to wait for the next city.\nThe next day, we went to Siena.\nI first noticed Siena because of the 2008 James Bond movie. The old town looked beautiful in the film, so I decided to make it the second stop of our Tuscany trip.\nFor lunch, we found a restaurant next to the main square. We ordered a Tuscan sausage platter and pici with mushrooms. The mushrooms were really good, and the pasta was very fresh. It was a little expensive, but we had a nice view of the town hall from the table.\nFor dinner, we found a restaurant near our hotel where we could choose our own pasta. We could pick the type of pasta and the sauce separately.\nI chose pici again, this time with wild boar ragù, and even ordered 30% more pasta. It was very satisfying, although looking back, I probably shouldn’t have ordered the extra portion because I couldn’t fit in dessert.\nWhen we got back to Verona, I tried to order pici again, but the waiter didn’t know what I was talking about. I guess pici really is a Tuscan thing.\n","permalink":"https://xiaoxin.fr/posts/eating_through_tuscany/","summary":"\u003cp\u003e\u003cimg alt=\"View of tuscany\" loading=\"lazy\" src=\"/posts/eating_through_tuscany/DSC09138.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eThe last time we visited Montepulciano, I had some really good pasta with meat sauce, along with a plate of salami and cheese served with honey and jam. I really enjoyed the combination of the salty cheese with the sweet toppings, and it made me quite interested in Tuscan food.\u003c/p\u003e\n\u003cp\u003eUnfortunately, the weather wasn’t very good on that trip, so we gave up on exploring more of the area.\u003c/p\u003e","title":"Eating Through Tuscany"},{"content":"Yesterday, after finishing our hike, we drove from Bozen to Verona and stayed there for the night.\nToday, we continued south towards Tuscany.\nWe didn’t really have a detailed plan for Tuscany. We just wanted to drive around, eat good food, see some countryside, and visit a few cities along the way.\nBut even before reaching Tuscany, Verona already felt quite different from Bozen.\nThe way people talked felt more lively and expressive, and the food had changed too. We were no longer eating things like schnitzel. Pizza and pasta had taken over.\nThat evening, we went to a restaurant for dinner. The waiter’s English wasn’t particularly good, and my Italian wasn’t any better, so ordering the food became a small adventure.\nWe asked about the daily special. The waiter tried to explain it in English. Something about pasta, cheese, and being cooked in the oven.\nI thought about it for a moment.\nCould it be lasagna?\nApparently, my imagination wasn’t good enough.\nWhat came to the table was something completely different: cheese-filled pasta baked in the oven.\nThere were only five of them, so at first I thought the portion looked quite small.\nBut somehow, by the time I reached the last one, I was already full.\nThe real surprise of the evening was the tiramisu.\nWe soon noticed that every restaurant seemed to have its own version. They looked different and tasted different, and I started looking forward to trying them wherever we went.\n","permalink":"https://xiaoxin.fr/posts/one_night_in_verona/","summary":"\u003cp\u003eYesterday, after finishing our hike, we drove from Bozen to Verona and stayed there for the night.\u003c/p\u003e\n\u003cp\u003eToday, we continued south towards Tuscany.\u003c/p\u003e\n\u003cp\u003eWe didn’t really have a detailed plan for Tuscany. We just wanted to drive around, eat good food, see some countryside, and visit a few cities along the way.\u003c/p\u003e\n\u003cp\u003eBut even before reaching Tuscany, Verona already felt quite different from Bozen.\u003c/p\u003e\n\u003cp\u003eThe way people talked felt more lively and expressive, and the food had changed too. We were no longer eating things like schnitzel. Pizza and pasta had taken over.\u003c/p\u003e","title":"One Night in Verona"},{"content":"\nYesterday, we saw Rosengarten from a distance while driving to Sassolungo. It looked quite impressive, and since it was also close to our hotel, we decided to go and have a closer look today.\nThe night before, I checked the Carezza website and found that a day pass was only €39. It covered all the lifts in the area, so it seemed like a good deal. There was also free parking at the Welschnofen cable car station.\nSo we got up early and drove there in the morning.\nWhen we got out of the car, I immediately regretted wearing shorts. It was quite cold in the morning, and there were quite a few German-registered cars in the parking lot. Most people seemed to be wearing shorts with long-sleeved tops, which suddenly made my choice feel a little less strange.\nAfter buying the tickets, we took three cable car sections up to about 2,339 meters.\nThe sun wasn’t up yet, so it was still quite cold at the top. As we walked, the sunlight slowly started reaching the mountain behind us, and it became more comfortable.\nThe trail was quite narrow in some places, so we had to be a little more careful. We also met quite a few people along the way, and almost everyone greeted each other. We heard “Hello,” “Guten Morgen,” and “Buongiorno” as people passed by.\nWe had originally planned to have a much more relaxed day.\nThat didn’t really happen.\nWe ended up doing another fairly difficult hike, walking all the way to the Aquila di Christomannos. It took us around two and a half hours.\nAfter passing the eagle, we continued on to Rotwandhütte. The view from there was really nice, and it was a great place to take some photos. We stayed there for a while before taking the Paolina chairlift back down.\nThe chairlift was a little scary at first. As soon as it started moving, it suddenly went out over the mountain, and it felt quite high above the ground. The open chair and the safety bar didn’t make it feel any less high.\nAfter getting down, we walked to the Tschein chairlift and took it back up to around 2,000 meters. It was the same kind of open chairlift, but this time I was much more relaxed.\nBy around four in the afternoon, the light was perfect. The whole mountain was finally in the sunlight, and the rocks looked completely different from the morning.\nWe took some more photos and, this time, felt pretty satisfied.\nThen we headed back down.\n","permalink":"https://xiaoxin.fr/posts/a_closer_look_at_rosengarten/","summary":"\u003cp\u003e\u003cimg alt=\"View of Rosengarten\" loading=\"lazy\" src=\"/posts/a_closer_look_at_rosengarten/DSC09116.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eYesterday, we saw Rosengarten from a distance while driving to Sassolungo. It looked quite impressive, and since it was also close to our hotel, we decided to go and have a closer look today.\u003c/p\u003e\n\u003cp\u003eThe night before, I checked the Carezza website and found that a day pass was only €39. It covered all the lifts in the area, so it seemed like a good deal. There was also free parking at the Welschnofen cable car station.\u003c/p\u003e","title":"A Closer Look at Rosengarten"},{"content":"\nToday we went to Forcella del Sassolungo to try the small cable cars, which are nicknamed “coffin cable cars.”\nWe were staying at a hotel in Nova Levante, so getting there meant quite a lot of driving through the mountains. The road was beautiful, especially on the way to Canazei. I turned on my camera and started recording the winding roads.\nWhen we finally reached the top, I thought I had recorded enough, so I turned it off.\nAnd of course, that was exactly when Sellaronda appeared in front of us.\nThree huge peaks suddenly opened up in front of us, with the little cable cars going up from below to the mountain pass. I immediately wished I had kept the camera running for a little longer.\nWe checked the map and decided to take the cable car up first and then walk back down around the mountain.\nThe cable car was quite an experience too. The cabins are really small, so getting in and out is almost part of the fun. I got into one first, and my partner got into the next one. Everything happened pretty quickly.\nHalfway up, we could see people hiking up the mountain on a zigzagging trail.\nI had thought that trail would be really difficult. But looking at them, I started to wonder if maybe it wasn’t as bad as I had imagined.\nAfter getting off at the upper station, we started walking down. The landscape was very rocky and almost barren in some places. We passed quite a few people, including some who were already quite old but still looked surprisingly energetic.\nA little further down, the trail split into two directions. It wasn’t immediately clear which way we should go. The trail on the left was more exposed to the sun, while the one on the right looked a bit easier, so we went right.\nAfter walking for a while, I noticed some familiar-looking peaks in the distance. They reminded me of the mountains I had seen around Seceda and St. Maddalena on previous trips.\nIt was a bit like putting another piece into a puzzle.\nI had seen those mountains from other places before, and now I was seeing them from a completely different direction.\nBy that point, though, I was also getting tired.\nThe trail wasn’t as easy as it had looked from the cable car. There were quite a lot of ups and downs, and the loose rocks made some parts surprisingly slippery.\nAt the beginning, we were talking about the mountains and the views.\nAfter walking for a while, our conversation slowly became much more practical:\nWhat should we eat for dinner tonight?\n","permalink":"https://xiaoxin.fr/posts/a_hike_around_sassolungo/","summary":"\u003cp\u003e\u003cimg alt=\"View of Sassolungo\" loading=\"lazy\" src=\"/posts/a_hike_around_sassolungo/DSC09074.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eToday we went to Forcella del Sassolungo to try the small cable cars, which are nicknamed “coffin cable cars.”\u003c/p\u003e\n\u003cp\u003eWe were staying at a hotel in Nova Levante, so getting there meant quite a lot of driving through the mountains. The road was beautiful, especially on the way to Canazei. I turned on my camera and started recording the winding roads.\u003c/p\u003e\n\u003cp\u003eWhen we finally reached the top, I thought I had recorded enough, so I turned it off.\u003c/p\u003e","title":"A Hike Around Sassolungo"},{"content":"A few weeks ago, I wrote about my decision to take German more seriously and attend intensive courses at a language school.\nRead more about that decision →\nBefore starting the course, I also wanted to build a small tool to help me practice speaking German more regularly.\nThe Problem I found two main problems while learning German.\nSpeaking is difficult without enough practice Most of my German speaking is still limited to everyday situations. I don\u0026rsquo;t often have the chance to speak at length or express my opinion about a particular topic.\nI don\u0026rsquo;t speak German often enough, and even when I know what I want to say, I sometimes have difficulty putting the sentence together quickly. Knowing the vocabulary and grammar is one thing, but actually using them while speaking is different.\nI wanted a way to practice speaking more regularly, even when I don\u0026rsquo;t have someone to talk to.\nSpeaking is different from writing I can type a German sentence and ask an LLM to correct it, but that is not the same as speaking.\nWhen I speak, I may hesitate, use the wrong word, make a grammar mistake, or construct a sentence in an unnatural way. If I type the sentence afterwards, I may unconsciously fix some of these problems before sending it to the LLM.\nSo instead of correcting a written version of what I said, I wanted to work with my actual spoken German.\nThe Solution The basic idea is simple:\nSpeak → Analyze → Learn → Reuse\nI record myself speaking German and send the audio directly to an LLM. Based on a predefined prompt, the model analyzes what I said and returns the results as structured JSON data. The application can then process the results and display the feedback.\nThe feedback focuses mainly on grammar mistakes, word choice, unnatural expressions, and an estimated language level.\nUsing an LLM makes this much easier than building the whole process myself. I don\u0026rsquo;t need to build a separate speech recognition system first and then develop another system to analyze the text. The model can work with the audio directly, which allows me to focus more on what I want the tool to analyze and how I want to use the results.\nThis is one of the reasons I wanted to build this tool now. With an LLM API, many capabilities that would have required a lot of development work in the past are now available through a relatively simple interface.\nInstead of trying to implement every part of the processing pipeline myself, I can focus on the problem and the learning workflow.\nKeeping the Architecture Simple As a personal project, the main goal was to avoid over-engineering. I didn\u0026rsquo;t need a database or user management, so I kept the application local and simple.\nThe application runs using PHP\u0026rsquo;s built-in web server:\nphp -S localhost:8000 Audio recordings and JSON analysis results are stored directly in the project folder.\nThe application uses the Gemini API for the LLM analysis. The API key can be entered in the top-right corner of the interface and is stored in the browser\u0026rsquo;s Local Storage.\nThis keeps the first version small, easy to modify, and self-contained.\nBuilding the Tool The more important part was deciding what the tool should actually analyze and what kind of feedback would be useful for learning German.\nI used the Gemini API to analyze the recorded audio and return structured data. This allowed me to experiment with different prompts and output formats without building the underlying language-processing system myself.\nUsing an LLM also made the technology choice much simpler. I could focus on the learning problem first and use the API to provide the capabilities I needed, instead of spending most of the time building the processing pipeline.\nFor this first version, I decided to keep the scope small: record real German speech, analyze it, show useful corrections, and save the results for later review.\nThe Project The project is a small personal tool and is still under development.\nBecause it uses an LLM API, I don\u0026rsquo;t currently provide a public demo. The application requires a private API key, and each analysis request also has a cost.\nThe project is open source on GitHub.\nGitHub: German Speaking Coach\nThe current version supports:\nGerman voice recording LLM-based speaking analysis Grammar and expression correction Estimated language level Saving recordings Saving analysis results as JSON For now, the main goal is to collect real speaking data and see whether the feedback is actually useful in my daily learning.\nI will continue developing the tool based on what I find. One direction I want to explore is generating targeted speaking exercises from the mistakes found in previous recordings, so that I can practice the same problems again instead of simply reading the corrections.\n","permalink":"https://xiaoxin.fr/posts/building_a_german_speaking_practice_tool_with_an_llm/","summary":"\u003cp\u003eA few weeks ago, I wrote about my decision to take German more seriously and attend intensive courses at a language school.\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"/posts/a-major-decision-for-2026/\" target=\"_blank\" rel=\"noopener\"\u003eRead more about that decision →\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eBefore starting the course, I also wanted to build a small tool to help me practice speaking German more regularly.\u003c/p\u003e\n\u003ch2 id=\"the-problem\"\u003eThe Problem\u003c/h2\u003e\n\u003cp\u003eI found two main problems while learning German.\u003c/p\u003e\n\u003ch3 id=\"speaking-is-difficult-without-enough-practice\"\u003eSpeaking is difficult without enough practice\u003c/h3\u003e\n\u003cp\u003eMost of my German speaking is still limited to everyday situations. I don\u0026rsquo;t often have the chance to speak at length or express my opinion about a particular topic.\u003c/p\u003e","title":"Building a German Speaking Practice Tool with an LLM"},{"content":"\nBefore this trip, most of our trips in Switzerland were about hiking and mountains.\nWe would drive to a place, park the car, and then continue by cable car or on foot. This time, we wanted to try something different.\nWhile looking around on Google Maps, we noticed several mountain roads south of Lucerne. Routes 2, 19, 6 and 11 formed a big loop through the mountains, starting and ending around Wassen.\nWe became curious and decided to try the drive.\nIt was actually our second attempt.\nThe first time, the weather was not very good. It was cloudy and very windy. About halfway through, we also started to worry that we might not have enough fuel to make it back.\nSo we turned around.\nThis time, we wanted to try again.\nWe stayed in Mulhouse, France, on Friday night so that we could start early on Saturday. It saved us more than two hours of driving in the morning.\nAnd, of course, there was another reason to stay in Mulhouse: Popeyes.\nOn Saturday morning, we drove towards Lucerne and continued south on the A2.\nAfter the long Seelisberg Tunnel, which is about 9 km long, traffic started to slow down. Instead of following Google Maps on the motorway, we decided to leave the A2 at Wassen.\nIt turned out to be the right decision.\nWe first followed Route 2 for a while and then joined Route 19. The scenery changed quickly.\nThe road went through a green valley, with small towns and mountains around us. We had watched Goldfinger again before the trip, so some of the views felt strangely familiar.\nFurka Pass was one of the places featured in the film, and now we were driving through the same area ourselves.\nAs the road climbed higher, it became a real mountain road, with many sharp bends.\nWe eventually reached the famous Goldfinger Curve.\nWe stopped there for a while, took some photos, and just enjoyed the view.\nThere was also a sports car nearby. Its owner was taking photos of the car with the mountain road in the background.\nWe tried to do the same.\nBut our car was clearly not as photogenic.\nFurther up, the view opened towards glaciers and snowy mountains. Driving with the mountains right in front of us felt great.\nWe used an action camera to record the drive, and whenever we saw a good place to stop, we pulled over and took some photos.\nIt was cold, but the sky was completely clear. The sun felt warm, so we didn\u0026rsquo;t mind the low temperature.\nLater, we continued onto Route 6.\nThe scenery was still beautiful, but the feeling was quite different. The wind was much stronger here. After the relatively calm drive on Route 19, we suddenly had to deal with a lot more wind.\nFinally, we reached Route 11 and continued through Susten Pass.\nThe landscape here reminded us a little of the Dolomites. There were sports cars, motorcycles, and many cyclists on the road. It seemed that many people had come here simply to enjoy the drive.\nAfter around five or six hours, we completed the loop and arrived back in the Wassen area.\nThen we drove back to Mulhouse, had Popeyes for dinner, and continued home.\nWe arrived around 11 p.m.\nLooking back, this trip felt quite different from our usual trips in Switzerland.\nWe were not driving somewhere just to start a hike.\nThis time, the road itself was the trip.\n","permalink":"https://xiaoxin.fr/posts/a-drive-through-furka-pass/","summary":"\u003cp\u003e\u003cimg alt=\"View from Furka Pass\" loading=\"lazy\" src=\"/posts/a-drive-through-furka-pass/DSC09021.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eBefore this trip, most of our trips in Switzerland were about hiking and mountains.\u003c/p\u003e\n\u003cp\u003eWe would drive to a place, park the car, and then continue by cable car or on foot. This time, we wanted to try something different.\u003c/p\u003e\n\u003cp\u003eWhile looking around on Google Maps, we noticed several mountain roads south of Lucerne. Routes 2, 19, 6 and 11 formed a big loop through the mountains, starting and ending around Wassen.\u003c/p\u003e","title":"A Drive Through Furka Pass"},{"content":"\nWe went hiking in Switzerland again last weekend.\nThis time, we chose the hike from Grütschalp to Mürren.\nHe had done this hike before when he was on a business trip. He wanted to do it with me, so we planned to go together.\nWe had planned this hike a few times this year, but the cable car from Lauterbrunnen to Grütschalp was under maintenance. Walking from Lauterbrunnen to Grütschalp would have been too tiring, so we gave up each time.\nThis time, the cable car was finally running again. The one-way ticket was CHF 9.40, so we took the cable car up to Grütschalp and started our hike from there.\nThe three famous mountains, Eiger, Mönch and Jungfrau, are right in front of us during the hike. The view is really beautiful when the weather is good. We didn\u0026rsquo;t need to look for a good place to take photos. Almost every photo looked like a postcard.\nIn Mürren, we took the cable car to Allmendhubel.\nHe took a photo at one spot there about ten years ago. This time, we found the same spot and he took the photo again.\n","permalink":"https://xiaoxin.fr/posts/finally-grutschalp-to-murren/","summary":"\u003cp\u003e\u003cimg alt=\"View of Eiger, Mönch and Jungfrau from Grütschalp\" loading=\"lazy\" src=\"/posts/finally-grutschalp-to-murren/DSC09014.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eWe went hiking in Switzerland again last weekend.\u003c/p\u003e\n\u003cp\u003eThis time, we chose the hike from Grütschalp to Mürren.\u003c/p\u003e\n\u003cp\u003eHe had done this hike before when he was on a business trip. He wanted to do it with me, so we planned to go together.\u003c/p\u003e\n\u003cp\u003eWe had planned this hike a few times this year, but the cable car from Lauterbrunnen to Grütschalp was under maintenance. Walking from Lauterbrunnen to Grütschalp would have been too tiring, so we gave up each time.\u003c/p\u003e","title":"Finally, Grütschalp to Mürren"},{"content":"I studied at Shanghai Jiao Tong University and started my career in marketing within the software industry. I later transitioned into product management, where I focused on designing and developing e-commerce products, including mobile applications.\nAfter relocating to Germany, I shifted my focus toward the practical applications of AI, with a particular interest in machine learning for time series analysis and forecasting.\nThis blog is a place for me to write about the things I learn, build, and experience — from technology and AI to travel and life in Germany.\nPrivacy This site does not use cookies, does not collect any personal data, and does not track visitors. No analytics tools are used.\n","permalink":"https://xiaoxin.fr/about/","summary":"\u003cp\u003eI studied at Shanghai Jiao Tong University and started my career in marketing within the software industry. I later transitioned into product management, where I focused on designing and developing e-commerce products, including mobile applications.\u003c/p\u003e\n\u003cp\u003eAfter relocating to Germany, I shifted my focus toward the practical applications of AI, with a particular interest in machine learning for time series analysis and forecasting.\u003c/p\u003e\n\u003cp\u003eThis blog is a place for me to write about the things I learn, build, and experience — from technology and AI to travel and life in Germany.\u003c/p\u003e","title":"About"},{"content":"Since moving to Germany, I have spent a lot of time doing things I enjoy. Alongside exploring AI applications and machine learning on my own, I have traveled a lot and visited most of the Schengen countries, experiencing a way of life very different from the one I knew in Shanghai.\nLooking back, though, there is one thing I did not take seriously enough: learning German.\nFor the most part, my German was good enough to get by. I could handle everyday situations, make appointments, and deal with basic paperwork. So I never felt a strong need to study it in a structured way.\nThat changed over the past year. I started having more contact with everyday life in Germany — the local city office, various specialists, dentists, and other situations where communication really matters. I found that my self-taught German could get me through most situations, but usually only with some preparation. More importantly, while I could manage everyday conversations, I often struggled when I wanted to talk about something deeper.\nThat made me realize that simply being able to get by is not the same as really being part of the life around you.\nSo, in 2026, I decided to take German seriously. I want to improve my language skills through structured training, not just to make everyday life easier, but to open up more possibilities to connect with people and become more involved in the local community.\nMaybe that will mean volunteering. Maybe it will mean doing an Ausbildung in an area that interests me. I don\u0026rsquo;t know yet.\nStarting in November, I will attend intensive German courses through next July. For me, this is more than just a language course. It is a decision to take a more active part in the life I have chosen to build in Germany.\n","permalink":"https://xiaoxin.fr/posts/a-major-decision-for-2026/","summary":"\u003cp\u003eSince moving to Germany, I have spent a lot of time doing things I enjoy. Alongside exploring AI applications and machine learning on my own, I have traveled a lot and visited most of the Schengen countries, experiencing a way of life very different from the one I knew in Shanghai.\u003c/p\u003e\n\u003cp\u003eLooking back, though, there is one thing I did not take seriously enough: learning German.\u003c/p\u003e\n\u003cp\u003eFor the most part, my German was good enough to get by. I could handle everyday situations, make appointments, and deal with basic paperwork. So I never felt a strong need to study it in a structured way.\u003c/p\u003e","title":"A Major Decision for 2026"},{"content":"\nWe spent a week in northern France.\nBefore the trip, our image of northern France came partly from movies: white cliffs, the sea, and small seaside towns with restaurants and hotels.\nOur first hotel was in Le Havre, near Étretat. On the way there, we talked a lot about a story we both knew from school, My Uncle Jules by Guy de Maupassant. I had always thought of Le Havre as the place in the story, or the place where the ship left from.\nWe didn\u0026rsquo;t really plan the whole trip before we left. We booked each hotel only one day before, for the next day. So the whole trip was quite spontaneous.\nOne of our first stops was Étretat.\nWhen the white cliffs were right in front of us, they were quite impressive. The scene looked almost exactly like what we had seen in movies: people playing on the beach, restaurants by the sea, and seagulls everywhere.\nIt was also the first time we tried raw oysters.\nI was a little surprised because there was almost no fishy taste at all. I liked them enough that when we went to Mont Saint-Michel, we decided to make a special stop in Cancale, which is known for its oysters.\nThe oyster market in Cancale was quite small. There were only six stalls.\nEveryone was calling out to customers and seemed very friendly. Their French sounded very clear, almost like a teacher speaking in a classroom.\nThey opened the oysters very quickly and skillfully. They also told us that we could just throw the empty shells on the beach after eating them.\nOn our way back, we also stopped at the Normandy beaches.\nThe beach was huge, much bigger than many other beaches we had seen. Standing there, it was easier to imagine how difficult the retreat must have been during World War II.\n","permalink":"https://xiaoxin.fr/posts/a-trip-to-northern-france/","summary":"\u003cp\u003e\u003cimg alt=\"View of Étretat beach with white chalk cliffs and the arch\" loading=\"lazy\" src=\"/posts/a-trip-to-northern-france/DSC08769.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eWe spent a week in northern France.\u003c/p\u003e\n\u003cp\u003eBefore the trip, our image of northern France came partly from movies: white cliffs, the sea, and small seaside towns with restaurants and hotels.\u003c/p\u003e\n\u003cp\u003eOur first hotel was in Le Havre, near Étretat. On the way there, we talked a lot about a story we both knew from school, My Uncle Jules by Guy de Maupassant. I had always thought of Le Havre as the place in the story, or the place where the ship left from.\u003c/p\u003e","title":"A Trip to Northern France"},{"content":"\nOne weekend in June, we went to Grindelwald.\nWe parked at Grindelwald Terminal and took the Eiger Express up. From there, we started walking towards the top of Männlichen.\nThe three famous mountains — Eiger, Mönch and Jungfrau — were behind us almost the whole way. Because of that, we kept turning around to look at them while walking.\nWhen we reached the viewpoint at the top of Männlichen, the three mountains were right in front of us. They looked huge and beautiful. The view was really impressive.\nOn the way back, we looked at the signs and thought it would be fine to walk back to the terminal.\nWhen we passed the cable car station, it was almost time for the last cable car. A staff member asked us if we wanted to take it.\nHe said, “Wir gehen zu Fuß.” (We’ll walk.)\nSo we started walking back.\nAt first, the trail was quite nice. We also saw many cute marmots along the way, or at least we think they were marmots.\nBut the further we went, the more tired we became.\nAnd then we started to regret our decision.\nThe walk seemed much longer than we had expected. At some point, we were just walking and thinking about how much easier it would have been to take the cable car.\nLater, we realized that we had probably chosen the wrong route. We should have taken the cable car to Männlichen, walked towards Eiger, and then taken the Eiger Express back down.\nWe probably should have checked the route more carefully before we started.\n","permalink":"https://xiaoxin.fr/posts/hiking-to-mannlichen/","summary":"\u003cp\u003e\u003cimg alt=\"Eiger, Mönch and Jungfrau from Männlichen\" loading=\"lazy\" src=\"/posts/hiking-to-mannlichen/DSC08707.webp\"\u003e\u003c/p\u003e\n\u003cp\u003eOne weekend in June, we went to Grindelwald.\u003c/p\u003e\n\u003cp\u003eWe parked at Grindelwald Terminal and took the Eiger Express up. From there, we started walking towards the top of Männlichen.\u003c/p\u003e\n\u003cp\u003eThe three famous mountains — Eiger, Mönch and Jungfrau — were behind us almost the whole way. Because of that, we kept turning around to look at them while walking.\u003c/p\u003e\n\u003cp\u003eWhen we reached the viewpoint at the top of Männlichen, the three mountains were right in front of us. They looked huge and beautiful. The view was really impressive.\u003c/p\u003e","title":"Hiking to Männlichen"},{"content":"I recently started learning guitar.\nWhile learning, I found that some of the basic exercises were more difficult than I expected. I could understand how a note should be played, but I still needed time to find the right position on the guitar.\nSo I started thinking about whether I could build a small tool to help me practice.\nThe Problem While learning guitar, I found two problems that I wanted to solve.\nPracticing Individual Notes As a beginner, I need to get familiar with how to play each note on the guitar.\nSimply looking at a chart and memorizing the notes is not enough. I need to practice repeatedly until I can see a note and quickly find the right position on the guitar.\nSo I wanted a simple way to practice this randomly.\nInstead of choosing which note to practice myself, the tool randomly shows me a note and lets me play it.\nIf I play the wrong note, the tool shows the correct position on the fretboard. This gives me immediate feedback and helps me connect the note name with its position on the guitar.\nPracticing with Sheet Music The second problem was practicing with sheet music.\nWhen I first started, reading sheet music and then figuring out which note to play on the guitar could be difficult. There were too many things to think about at the same time.\nI wanted to put the sheet music on the screen and show me the note I needed to play. The current note would be highlighted, so I could follow my progress while playing.\nI also wanted the system to play the music automatically based on the sheet music, including the rhythm. This would help me understand how the piece should sound before trying to play it myself.\nThe Solution I decided to build a small tool with two main parts: note practice and sheet music practice.\nFor individual notes, a note is randomly displayed on the screen. I try to find and play it as quickly as I can. If I play the wrong note, the tool shows the correct string and fret.\nFor sheet music practice, I can display the music on the screen and follow it while playing. The current note is highlighted, and the system can also play the piece based on the sheet music, including its rhythm.\nThe basic idea is simple:\nSee the note → find the position → play it → get feedback.\nFor a complete piece:\nFollow the sheet music → play the notes → see your progress → listen to the melody.\nBuilding and Iterating with AI I used AI throughout the development process, but the important part was not simply asking AI to write the code.\nBefore building the application, I first needed to understand whether some of the ideas were technically possible.\nFor example:\nCan a browser listen to the sound of a guitar and recognize which note was played? How can I display sheet music in a web page? Is there a library that can make this easier? I used AI to explore these technical questions and find possible approaches.\nOnce I had a better idea of how to solve the problems, I started building the prototype.\nI described the product and its interactions to AI and used the generated code as a starting point. I then tested the prototype myself and gave AI more specific feedback.\nThe first version was far from perfect.\nThe sheet music was too small and difficult to read. There was no clear visual difference between notes I had already played and the note I was currently playing.\nThe playback also sounded quite mechanical because every note had the same duration.\nSo I changed the requirements and iterated:\nMake the notes larger. Clearly distinguish played and unplayed notes. Highlight the current note. Add rhythm and melody control. Improve the transition from one note to the next. After each change, I tested the result again.\nThe process became a continuous loop:\nIdea → Requirement → AI implementation → Test → Feedback → Change → Test again\nThis was probably the most interesting part of the project for me.\nAI made the implementation much faster, but I still needed to decide what the product should do and whether the result actually solved the problem.\nFor a small personal project, the distance between an idea and a working prototype has become much shorter. I can spend more time thinking about the problem and less time turning every idea into code by hand.\nThe Project The project is open source and available on GitHub.\nGitHub: Guitartrainer\nLive Demo: Guitartrainer\nThe current version supports:\nRandom note practice Sheet music practice The project is still a work in progress. I plan to keep improving it as I continue learning guitar.\nOne idea I want to explore next is an \u0026ldquo;AI Coach\u0026rdquo; that could track which note transitions I struggle with and generate custom exercises based on those difficulties.\n","permalink":"https://xiaoxin.fr/posts/building-a-guitar-learning-tool-with-ai/","summary":"\u003cp\u003eI recently started learning guitar.\u003c/p\u003e\n\u003cp\u003eWhile learning, I found that some of the basic exercises were more difficult than I expected. I could understand how a note should be played, but I still needed time to find the right position on the guitar.\u003c/p\u003e\n\u003cp\u003eSo I started thinking about whether I could build a small tool to help me practice.\u003c/p\u003e\n\u003ch2 id=\"the-problem\"\u003eThe Problem\u003c/h2\u003e\n\u003cp\u003eWhile learning guitar, I found two problems that I wanted to solve.\u003c/p\u003e","title":"Building a Guitar Learning Tool with AI"}]