RSSAmplifier

Blog

liquidx

Alastair Tse

liquidx.netRSS feed ↗57 posts

Latest posts

Month Notes for July 2026

One of the most visible things in this FIFA World Cup are the pink shoes . Why are nearly 90% of them pink? I initially thought it was all the same model of shoe, some sort of draconian sponsorship deal with FIFA where all the players had to wear the same shoe. But it was not. It's different shoe makes deciding all together that pink is the hottest color this year and every brand made the same…

Fine Financials

I built the finance app of my dreams with Claude Code. Day and night, in my retired/unemployed state I laid down prompt after prompt and designed a sprawling app that tries to make sense of my financial world in an app designed for my multi-country, multi-currency, multi-language world. The app is called Fine . Fine ingests all the financial records of any form I can throw at it, whether it is…

Month Notes for June 2026

I'm not sure what I'm doing with these notes, are they blog posts or social media posts? I dunno. But they are here. I get an incredible buzz when I get to draw pixels on to small screens. A long standing obsession of mine for more than 20 years. This obsession led me to hack on Palm Pilots back in the day, Nokia phones, iPhones and even watches. I just found out that there's a cool thing called…

Month Notes for May 2026

It's been two months since I left my job. What have I been up to? A lot of have asked me privately. Here's a dump of what's been happening. I went on a short road trip with Patricia in my beloved Honda-E, driving from Tokyo to Matsumoto to Gifu to Fukui and back. We didn't even manage to get to Gifu. Our slow travelling style and continuous charging up my car was a little like the popular TV show…

Train Lines

I decided to revisit an old project of mine, rendering train lines in Japan. I gave a talk at Tokyo Tech Meetup about my obsession with open geo data and trains. Aside, I'm hosting a Geo Tokyo meetup next Wednesday, join me! So with the help of Claude Code, Antigravity and Codex with a lot of nudging, I made a huge revision to the train lines demo that works on mobile, shows stations and train…

LLM Navigator

I had an idea about creating a browser that doesn't use the internet. What does that even mean? The idea is seeing whether you could get an AI to dream up a webpage given the URL, and then make that operate like a real web browser. At the Tokyo Mistral AI Worldwide Hackathon , I revisited this idea and built a version of this. It's now on my vibe-coding sandbox v1 as LLM Navigator . How it works…

Publishing System

I'm making some big changes to how the internals of my blog works. Everything is driven out of an Obsidian Vault with some custom tools (partially vibe coded) to do monitoring and publishing of the updated content. Once a change has been detected, it triggers a regeneration of the content archive and then triggers a re-deployment of the website. This post is half a test post, half explaining.

Dishwasher

Using AI coding agents is a little like using a dishwasher. There's no proper way to load the dishwasher, like there's no proper way to really prompt coding agents. People give you advice, say it works for them, but every set of dishes are unique, just like every code base is unique. When it finishes, you need to check the dishes to makes sure it really is clean. Sometimes an odd dish here or…

Twitter

Finally deleted all my tweets from Twitter. The web API rate limits to 200 deletes per 15 mins, and I had 13209 tweets - roughly 16 hours if nothing went wrong (and it did a few times.) My Twitter For You feed immediately went from geeky japanese cartographers to AI bros arguing with each other.

Island

Have any of you wondered why island is not pronounced is-land?

Google

After 6863 days, yesterday was my final day at Google. Two months shy of 19 years. Grateful for all the opportunities. The opportunity to travel the world, to work on the first iPhone app, to bring people together, to work with wonderful people, to redesign Google, to work on my favourite products and to eat all the free food. There's no next thing, I'm retiring to spend time completing my side…

Exploring Terminal Nav on Web

I thought it would be fun experiment to build a terminal inside my own website and use it as a navigation UI. And this site is now the result of this after a few hours of trial and error. The main principle here is that it should be functional as a website and also (quasi-)functional as a command line but primarily for operating this website. This is based on an earlier Terminal prototype I…

Snowline 2026

Snowline is a passion project of mine that has been going on for the past three years. The idea was to create a well-designed, data-driven site about every ski resort in Japan. After moving to Japan and discovering there were resorts apart from Niseko and Hakuba , I wanted to know more about these slopes. I wanted to go to check them out. Not long later, I stumbled across a magazine that claimed…

Github Packages 403

Today I learned that Github Packages is not free for private packages. And I learnt it by getting a cryptic npm 403 error when accessing https://npm.pkg.github.com from npm . After about 1GB of transfers for Github Packages, it will "run out of quota" and you'll get a 403. I thought it was an authentication issue, so I racked my brains on why the Github Access Token was not working. But an…

Day 6 Akakura Onsen

This was a day of highs and lows. Staying in Akakura, we had to at least try a day in Akakura, even though it’s not such an interesting mountain. Moreover, there must be a discount our hotel can offer us. It was complicated. Akakura has two resorts, the Kanko, and the Onsen. If you only do the onsen side, you can get a ticket just for that. And that’s what most of the hotels sell you, discounted…

Day 5 Suginohara

We got more snow in the afternoon after we left, so we though that Sugi would have another powder day. We were still high on the previous day. The weather cleared and we thought, finally some visibility with powder. The top lifts were open unlike the previous day we were there. We thought the strategy would be to go where others hadn't gone yet. Every year I go to Sugi, every year I regret going…

Day 4 Suginohara

It was January, and a proper Japow day. We're hitting 30cm of fresh powder. Sugi is my go to resort if it's a big powder day. My rule about powder days is longest, fastest, widest. The best place to go is where there are the (1) longest runs, (2) fastest lift and (3) widest area. Longest runs is that you want the runs to be long so you ride the powder as long as possible, fastest lifts so you can…

Day 3 Kagura

Recounting my third day at Kagura. There wasn't any new snow, but some lifts and runs that were closed the days before were open so we went searching for some untouched powder! To be honest, it was a pretty ordinary day, we had a pretty relaxed go around the place, left a little early and was treated to a Hong Kong style Egg Waffle at the based of Mitsumata!

Day 2 Kagura

It's a sort-of-powder-day! Hey, not bad for December. It was snowing quite a bit on the mountain the day before, so I was getting excited about getting out early to the lifts. All my training getting up early at 5am for early morning meetings this year is now paying dividends. Getting to first lifts is easy for me. I went out as early as I could, though I didn't manage to get the first ropeway up.…

Day 1 Kagura

A warm up trip before the main part of the season. This is the last week of December, usually considered a little too early. Conditions down in Honshu are usually a bit iffy at this time of the year. Going to Kagura is usually a good bet. Kagura is quite high up in elevation, so if there is any snow, Kagura will get it. Yuzawa Kogen, Niigata, where Kagura is located, was not getting much snow at…

Hello Again, Snow

I’m back at the snow this year, and back writing about my meanderings in the white stuff. We’re already past half way into the season and I realized I hadn’t shared what has been an wonderful season. First time in three years that I’m not snowboarding alone! I spent the last two years exploring ski resorts by myself from Nagano to Iwate. Managing to get 56 different resorts (out of nearly 400 in…

Lessons from creating a Generative Adversarial Network Model

Continuing my adventures in learning about Machine Learning. I spent most of this week learning how to write and train my own [[GAN]], took a few detours into looking at MLOps. Background I realized recently that the proliferation in ML techniques, tools and models presents a huge change in the tech industry. We're probably several years out from when ML is ingrained in software development, much…

Tohoku Tour, Finally

I’m writing this from Tohoku, those snowy and cold prefectures at the northern tip of Honshu (main island). It’s been a dream of mine to travel around here and experience the mountains of Tohoku. This is my first time snowboarding in Tohoku, it is something I’ve been trying to do for the past two years but have failed. First attempt was in 2020, I planned out a two week ski trip out in Iwate with…

Rendering Mountains 9

Now that the light is attached the mountain, when rendering the grid of mountains, it should be lit nicely. Oops, but my scene now crashes after rendering the 10th mountain. Turns out, there is a limit to the number of lights you can have. I think it’s because each light is using a texture for the shadow calculation and there is a maximum number of textures that can be used. So this is a bit of a…

Rendering Mountains 8

I wanted to attach the light to the mountain and place it relative to the mountain rather than the whole scene. So I refactored the code to attach a new THREE Group to the mountain scene and add the light on to it. This way, when I draw the big matrix of mountains, each mountain is lit properly. As I’m modifying the lights, I realized that I am using a directional light, point light, hemisphere…

Circles instead of Rectangles

I want to try making the rectangular mountain areas to be circular. So I’ve started doing some work to calculate the geometry. My initial problem to solve is to work out the arc equation. First off, trying to find where the circular area will intersect with the edge of the map tiles so that I can figure out how they clip. I suspect it will be a full week of maths for me. A weird thing happened in…

Packing Layout

I managed to write a pretty rudimentry box packing algorithm that laid boxes out from the top and pushing boxes up into the gaps where it would fit. The algorithm works ok but a little bit of randomness is needed to minimize the gap. Maybe I can run a regression over it. The result is in Observable as a prototype which I’ll move the implementation into my codebase to run for the 3D map.

Mountain Poster

Fixed some fallout from my refactoring from a few days where I made the mountain rendering code work across a few different projects. Using Vue has been great to be able to share the same general renderer across different views. However, there is the part where I want to render all the mountains in a single WebGL instance which means I can’t share the Vue component, but have to share the…

Resorts on a Map

Some nights when I can’t get to sleep, I think about hard problems until I fall asleep. Last night I thought about what would be the way to arrange the mountains in a way that would look aesthetically pleasing but also algorithmically so it also isn’t manual. There’s enough manual things I’m doing already with collecting the data that I want the rest of it to be algorithmic as much as possible. I…

Refactoring Rendering

Refactoring day. A few things I wanted to work on, getting the terrain map showing up on (Snow Map) snowm.app , fixing the lighting, fixing the normals and attempt again at rendering a large map. First I had to refactor the custom Three JS implementation into something I could share between two projects. The way the project is set up is there’s a monolithic repo containing all my development data…

Data Day

Data day. I spent most of the day manually inputting data into my system to get all the dimension information of all the know ski resorts that are still open. Along the way, made some improvements to my tools in preparation for trying to render hundreds of ski resorts at once. I’m not quite sure yet how to do it, putting so many models on to the screen might cause an issue, but we’ll try and see.…

Cloud Storage

Tidy up day. I spent some time renaming some files in my Google Cloud Storage bucket because it was becoming a mess. There are a few automated things that happen in the cloud storage bucket, so I had to rename all the paths and then modify all the code that was refering to those paths. When I did the rename, I first tried to use bucket.getFiles() and then rename all the files that matched my…

Rendering Mountains 7

I worked a bit more on making the tree placement better. I’m rendering out a texture map that denotes where the lift lines and ski runs are and using it like an image mask to avoid placing trees where the pixel (UV) is lit. In the process I discovered a few weird things. First, I was using a 512x512 texture for a 512x512 plane in 3D space. I thought that would be good, but I had a lot of trouble…

Rendering Mountains 6

Yesterday I thought I’d use a particle system to draw the trees. But now that I read up on it, it’s really only for rendering a texture/material and not really for drawing a model like a tree. However, I’ve come across InstancedMesh which will duplicate a model efficiently as long as the model has the same material geometry, and only apply a transform to it. That seems like exactly what I wanted.…

Rendering Mountains 5

I didn’t like the cone shaped trees I had, so I drew some in Blender and exported out as GLTF. GLTF is a common model exchange format that’s supported out of the box in Three JS. I don’t really know much about the other formats. My first attempt at loading the GTLF model didn’t seem to load the material. But when I inspected it more closely it seemed to load it with metallic at 100% causing it to…

Sugadaira, Nagano 菅平高原スキー場

#Published It is pretty much the end of the snow season, but I can still reminisce about some ski resorts I’ve been to this year. This post will talk about Sugadaira Kogen Snow Resort 菅平高原スキー場. Sugadaira itself is marketed as a single snow resort entity, but within it are three areas, Pine Beak, Taro and Davos. Taro and Davos are connected via a short tunnel under a road (or you can also walk…

Rendering Mountains 4

I started to draw lift lines and trees on to the mountain, so it looks more interesting and informative. My first pass is pretty amateurish, just drawing a line and some struts for the lift lines and then some very fake random trees on. The line is drawn using Three JS’s ExtrudeGeometry since regular lines don’t have any thickness in WebGL. More accurately, I’m using TubeGeometry, which as the…

Rendering Mountains 3

Back to rendering mountains today. I started debugging shadows in Three JS. I know that shadows are complicated in 3D, as it needs to figure out which parts are obscuring the light. There are a few default shadows that can be turned on in Three JS but none of them really look that good. This is the best I could get using their highest fidelity setting and manual tuning, but the shadows look like a…

Identifying Mountains 3

In Snow Map there are some resorts with missing elevation and area info. I am manually generating this now by looking at the mountain itself and measuring it. I did a few of them manually but then realised I should probably automate this and replace all the numbers with real surveyed numbers (rather than relying on the resort to report it.) Resorts tend to exaggerate. A few resorts quote their…

Cylinders instead of Boxes

The rectangular tiles look a little weird because I rotate the tile so that the angle of the slope is always 135º — but the rectangular box itself is clipped along the latitude longitude lines. This means the angle of the edges of the box don’t line up because each mountain is at a different angle. One way to mitigate this is to use a circular base (make it a cylinder). Though, it seems much more…

Rendering Mountains 2

Fixing some bugs with the renderer discovered when trying to render Hakkoda (by request). I use lodash a lot to do simple three line things that I can’t be bothered writing. However, this time it bit me. I tried to use merge() thinking that it would merge two dictionaries together and concat the values if the keys were the same. It did something weird. So instead, I wrote the three lines that I…

Rendering Mountains At Night

Last week, I posted a photo of a set of 40 mountains rendered in 3D. What is this? Twitter post I'm exploring visualizing geography without maps to represent the relative size, gradient and shape of different snow resorts in Japan. This view I posted is a very early experimental view to verify that what I'm doing is working. Every evening, I'm spending an hour or so on this problem, often solving…

Identifying Mountains 2

A light day for me. I made sure my data tools worked with the new “virtual” resorts (e.g. Madarao-Tangram) that I made. Sure enough, there were some bugs with my tools that assumed I always have predicted sizes for each mountain. These new mountains broke that assumption so I needed to both fix the code and also fix the data. As explained previously, I made up some resorts that are not real, but…

Identifying Mountains 1

For SnowMap, I have to assign my own unique identifier to each of the mountains. Then I have to map that identifier to some data sources I am crawling. This makes it hard if I ever have to change the identifier. Also, some mountains are very complicated, like Sugadaira, Niseko and Shiga Kogen. Sugadaira itself is known as a ski resort, but within it is 3 areas, Pine Beak, Taro, Davos. Taro and…

Rendering Mountains 1

I’m thinking about how do I go from rendering rectangular tiles for the mountain to a circular (cylinder). And it seems to much more complicated the more I think about it. First off, because each mountain is a difrerent size, I chose to not resize the tiles (512x512) and instead arrange them into a bed of 3D tiles. The maths for the rectangular tiles is fairly easy, but if I use a cylinder, this…

Tazawako, Akita たざわ湖スキー場

This is one of my first posts about a resort I’ve visited. I’m still working on what would be interesting to write about. Tazawako is such a wacko name. It translates to Lake Tazawa, but I’m glad they called it Tazawako. This lake is in Akita Prefecture. I’ve never been to Akita Prefecture, and even having come here, I don’t feel.I can justifiably tell people I’ve been to Akita. Tazawako reminds…

out of 492

I’ve now been able to snowboarded in 51 out of the 492* ski resorts in Japan, that’s just over 10% of all resorts! Since moving to Japan in 2018, it’s been a project of mine to try experience as many different resorts as possible. This season isn’t over yet, but up until now I visited 27 new ski resorts this season. That’s more than all the resorts I’ve been to in previous years put together. (Is…

Getting to the snow by train

For decades, Japan Rail (JR) have been running a campaign called JR SKI SKI . The whole premise is to get you to go to the snow via Shinkansen. From Tokyo station, there’s a 1.5 hour train that can get you to Echigo Yuzawa, one of the many ski resort hotspots. One most convenient one being Gala Yuzawa which has their own dedicated station that only opens in the winter months, with a gondola inside…

Japanese Snow Resorts

Did you know that Japan has more than 500 snow resorts ? Niseko, Hakuba, Nozawa Onsen might be the most popular ones those outside of Japan would recognize and visited. You can tell by the amount of Airbnbs that are available in those areas, or the holiday apartments for rent, or the amount of English. In the less-known places, those places that aren’t known outside of Japan, the scene is very…

About Riding Japan's Snow

This is a newsletter (or blog, or journal) about snowboarding in Japan, from me, Alastair. After moving to Japan, I learned a lot about going snowboarding in Japan, and getting more and more curious about where and how to go snowboarding in Japan. A bit about my profile and level: I'm a snowboarder who enjoys going fast on-piste, riding white lines in deep powder (not so deep), and the occasional…