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

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

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

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

My Brief Thoughts on the AWS Kinesis Outage

There have been multiple analyses about the recent (2020/11/25) outage of AWS Kinesis and its cascading failure mode, taking a chunk of AWS services with it – including seemingly unrelated Cognito – due to dependencies hidden to the user. If you haven’t read the official postmortem statement by AWS yet, go read it now. There are an infinite amount of arguments that can made about cascading failure; I’m not here to talk about that today.

Read more

Habits I'll be keeping after COVID-19

During the COVID-19 pandemic, schools and daycares have been closed, so my family decided to use this as an opportunity to make some habits to make sure we can get through this period with minimal interruptions to life and work. Here are some habits that have worked so well for us that we’re planning on keeping them, even after the kids go back to school / daycare. Keeping a schedule We use a schedule to make sure the time we eat, sleep, and do activities are at regular times every day.

Read more

A quick shortcut to open a Ruby gem in VS Code

While working on a Ruby project, I often find myself referring to the code of various libraries when it’s easier than looking up the documentation. For this, I used to use code (bundle show GEM_NAME), but recently I’ve been getting this warning: [DEPRECATED] use `bundle info $GEM_NAME` instead of `bundle show $GEM_NAME` Okay, that’s fine, but bundle info returns a bunch of stuff that would confuse VS Code: > bundle info devise * devise (4.

Read more

Hosting a Single Page Application with an API with CloudFront and S3

I’ve written about how to host a single page application (SPA) on AWS using CloudFront and S3 before, using the CloudFront “rewrite not found errors as a 200 response with index.html” trick. Recently, working on a few serverless apps, I’ve realized that this trick, while quick, isn’t perfect. The specific case where it broke down was when the API is configured as a behavior on CloudFront (I usually scope the API to /api on the same domain as the frontend, so CORS and OPTIONS requests aren’t necessary).

Read more

cover.png

"Truth in bots"

The bots should announce, “I’m not a person, or if I am, I’m not allowed to act like one.” Or, if there’s no room or time for that sentence, perhaps a simple bot at the top of the conversation. That way, we can save our human emotions for the humans who will appreciate them. -- Truth in bots | Seth’s Blog “If you can’t tell the difference, does it matter?

Read more

AWS Application Auto-scaling for ECS with Terraform

Update: Target tracking scaling is now available for ECS services. I’ve been working on setting up autoscaling settings for ECS services recently, and here are a couple notes from managing auto-scaling for ECS services using Terraform. min_capacity and max_capacity must both be set. schedule uses the CloudWatch schedule expression syntax, with the addition of the at(...) expression. Creating multiple scheduled actions at once Terraform will perform the following actions: + aws_appautoscaling_scheduled_action.

Read more