cover.jpeg

A Quick Update

This year, I really wanted to work on my output, and I think I’m doing pretty well. Here are some things that I’ve been publishing: Regular monthly blog posts on yakushima.blog A few posts this year on the Geolonia blog for work However, updates on this personal blog has been not so great – the previous post is the “2023 review” post, after all. I’ve been updating this blog from 2012, when we officially incorporated Flagship.

Read more

2023 in Review

This year was an eventful year. The biggest event was by far moving from Tokyo to Yakushima, but there were a lot of other events that happened this year. We made the move at the end of February, and my wife and I started out by working in a spare room in her father’s workshop. We then moved our workspace to the house when it was finished around July. During that time, I’ve worked on a few things at Geolonia, including growing the engineering team by a couple people and creating a few new products with the team.

Read more

cover.jpeg

防災放送をデジタル化してみた: 続き

最初の記事 は引っ越して1ヶ月で書きましたが、そこからだいぶ経ちました。。その間色々ありましたが、地道に改善を追加しています。最初公開したとき

Read more

防災放送をデジタル化してみた

約1ヶ月前に、屋久島に移住しました。屋久島の安房地方は、防災放送が結構回数が多くて、存在感があります( 詳しくは、放送についてのブログを書いた

Read more

cover.jpeg

Why I prefer Terraform over CloudFormation

I often get asked why I prefer Terraform over CloudFormation. I just ran into a nitpick of CloudFormation and decided to write this post before I forget about it. So, I’m currently working on a relatively simple CloudFormation document that includes a CloudFront CDN that is in front of a S3 bucket. It also includes dependencies: the S3 bucket policy and the CloudFront Origin Access Identity. On my first try, I got something wrong in the CloudFront settings.

Read more

Creating Vector Tiles from Scratch using TypeScript

I currently work at a Japanese mapping startup called Geolonia. We specialize in customizing and displaying geospatial data, and a big part of this is making vector tiles. There are a lot of ways to do this, the most popular being tippecanoe from Mapbox, ST_AsMVT in PostGIS, OpenMapTiles, and tilemaker. We normally use tippecanoe to convert GeoJSON data to vector tiles and tilemaker to generate OpenStreetMap-based tiles, but there isn’t really an easy way to generate arbitrary vector tiles in plain old TypeScript / JavaScript.

Read more

My Desktop Environment

With the release of the Mac Studio recently – something that, for quite a long time, I thought I had been waiting for – I started thinking about what the ideal desktop environment for me is. This is what I use currently: A PC (i9-10900k with 32GB of RAM) running Ubuntu, hooked up to a 28-inch 4K monitor. A MacBook Air (M1, 2020 model) I used to run macOS on the PC, but that experiment finished after a year or so.

Read more

Serving real-time, tiled, point data directly from DynamoDB part 2 - the plan

I previously wrote about something I wanted to do with DynamoDB and geospatial data, and got a lot of responses on Twitter. In the end, I think I’m going to go with a hybrid approach – using Uber’s H3 geocoding algorithm to generate clusters and to take care of indexing points, and then generating vector tiles as a separate process based on that data. Here’s a bird’s-eye view of how the data will flow.

Read more

Serving real-time, tiled, point data directly from DynamoDB

Recently, I’ve been interested in how to serve and work with geographic data with the least amount of “work” possible. Everything here can be done pretty easily with PostGIS and a large enough server, but I’m always up for the challenge of doing things in a slightly different way. I’m working on an app that will store lots of points around the world – points that people have submitted. Users will open this app, and be presented with a map with points that have been submitted in their vicinity.

Read more

Working with DynamoDB Global Tables

Just some stuff I’ve picked up while working with DynamoDB Global Tables. This was my first time using it; I used it to move a few tables from one region to another without downtime. When deleting replica tables… Note that this operation will delete the replica table and is non-reversible. This replica table cannot be re-added later to the global table. This warning message is a little misleading – the replica table will be deleted, but it’s possible to re-create a new replica table in the region that was deleted.

Read more

For those times you don't want to eval...

I wanted to make some advanced logic available, easily configurable via a database, in a couple apps that I’ve been working on recently. Honestly, I could have just stored the code in the database and eval’d it – but no, I don’t want to take the risk of arbitrarily executing code. I could have done some gymnastics like running it in a network-less container with defined inputs and outputs. I could have made the configuration more capable.

Read more