RSSAmplifier

Blog

ainoya.dev

Naoki Ainoya's personal website

ainoya.devRSS feed ↗49 posts

Latest posts

Building Ayumi and Kitae: Local-First Apps for Myself

Why I built a journal and a workout tracker around Markdown, direct ownership, and collaboration with AI coding agents.

Why Pull Requests Should Be Reviewed the Moment They're Submitted: Four Classical Lenses and the AI-Era Twist

A theoretical and simulation-driven argument for treating PR review as the highest-priority interrupt, grounded in queueing theory, context-cost asymmetry, and the dynamics introduced by AI-assisted development.

The Stochastic Bricoleur: What Lévi-Strauss Can Teach Us About Building Software with LLMs

Exploring the parallels between Claude Lévi-Strauss's concept of 'bricolage' and how Large Language Models generate code, and what it means for modern software architecture.

Building and Maintaining the Pokke Docs with Starlight and LLMs

How I use Starlight and scheduled AI tasks to generate and maintain the Pokke documentation.

A Simple but Powerful Bookmark Feature: Routing Prompts to Your Own AI Subscriptions

How a lightweight custom URL feature in my personal bookmarking service, Pokke, enables seamless AI research while saving API costs.

Building a Digital Toy for Children Without Writing a Single Line of Code

How I used AI to go from an idea to a deployed 'Emoji Shower' game, including automated infrastructure setup via GitHub APIs.

The Flow of Invisible Transcription

Why hiding real-time transcription can actually make voice input faster and more natural.

Cursor MCP OAuth Error: Fix 'Invalid OAuth Error Response'

Fix Cursor's MCP OAuth error by handling its well-known endpoint probe and returning a usable 401 response instead of a plain-text 404.

Turning My Bookmark Service into a Personal AI Librarian with MCP

How I extended 'pokke' with the Model Context Protocol to connect my reading list with my personal knowledge base.

Pokke: A small bookmarking service for my own use

With Pocket gone, I built a lightweight cloud SaaS to manage my reading list. Here is why I chose to build rather than adopt complex alternatives.

The New "Millionaire Programming": Throwing Generative AI at the Problem

In Japan, we call it "Millionaire Programming." Traditionally, this meant throwing hardware at performance issues. In the AI era, it means throwing generative cycles at architectural uncertainty.

Google Jules vs. Antigravity: Where Each Coding Agent Fits

My practical comparison of Google Jules and Antigravity: a responsive web agent for small fixes versus a queue for background coding work.

What Is a Reverse Centaur? AI Automation and the Cost of Verification

A reverse centaur is a person forced to serve a machine. I use verification cost to explain when AI assists people and when it controls them.

Digital Folklore: The Unsearchable Origins of the 'Silhouette' Dance

Tracing the origins of the viral 'Silhouette' dance challenge reveals the difficulties of searching choreography in the age of digital folklore.

Fix WebM Missing Duration in JavaScript Without FFmpeg

Calculate missing or Infinity WebM duration from MediaRecorder files with webm-meta-lite, a zero-dependency TypeScript parser.

Building Small CLI Tools for AI Agents

Explain why I chose CLI over MCP for AI agents, focusing on 'information economics' and Unix philosophy.

Cache Satori-generated OGP images in Astro Cactus to speed up builds

Astro Cactus generates an OGP image per post with Satori + Resvg. By caching the PNGs locally and using a content hash, we can avoid regenerating unchanged images and cut build time.

Rethinking State: My Experience with Cloudflare's Durable Objects

Exploring Cloudflare Durable Objects as a paradigm shift in stateful edge computing. From Redis Streams to zero-latency SQLite integration, discover how this technology revolutionizes real-time application architecture with globally unique instances and the Actor Model.

Beyond "Just Code It": Adapting Specification-Driven Principles for AI Agents

Learn how to transform AI agents from chaotic coders into design partners using Specification-Driven Development principles for more structured collaboration.

Marble to LLM

Generative AI mirrors sculpture—from Michelangelo’s marble to Japanese natabori—helping engineers reveal hidden forms within LLMs.

A Chrome Extension for Local Transcription Processing

Developing a secure Chrome extension that transcribes audio locally without uploading data to external servers.

Handling Long Responses with VertexAI API

Learn how to handle truncated responses when processing large contexts with VertexAI API, using a recursive method to retrieve complete outputs.

Experiment with LLM for Personal Knowledge Management

Exploring the use of Large Language Models (LLMs) for personal knowledge management, focusing on the challenges and potential solutions for improving output quality and automation.

LocalStack KMS: Use Custom Key Material for Shared Test Data

Create a LocalStack KMS key with fixed custom key material so teammates can encrypt and decrypt the same local test data.

Why Still Blog in the Age of Generative AI?

Generative AI is changing the information landscape, but blogging still holds value as a platform for personal expression and creative exploration.

Developing a Web UI for Controlling LLM JSON Output

Building a user-friendly Web UI to easily structure and control LLM outputs in JSON format for better integration with applications.

Day 0 Operations: Minimizing Risks in Manual Processes for New Products

Learn how to minimize risks when manually operating new products before full automation is in place. This post discusses key principles and practical examples to ensure smooth and reliable operations from day one.

Automating My Note Tagging with LLMs

Tired of manually tagging my notes, I decided to automate the process using Large Language Models (LLMs). This post explores my journey and the solution I implemented using Vertex AI.

LLM Application Security Practice: Markdown Image Tag

Learn how seemingly harmless markdown image rendering in your LLM application can lead to user data leakage and how to mitigate this security risk.

Web Distiller AI: A Chrome Extension for Summarizing Web Pages

A Chrome extension that summarizes web page contents using the built-in Gemini Nano model. It offers secure in-browser summarization with translation options and markdown output. Easily copy the summary to your clipboard for quick access.

Improving Web Scraping with Readability and Table Support in Markdown

Switching from DOM Distiller to Readability for better content extraction and adding table support in Markdown using turndown.

Enhancing Personal Knowledge Management with Pocket and Obsidian Integration

Streamline your knowledge management with Pocket and Obsidian integration. Learn about a custom solution using dom-distiller API and PocketMD scripts to automate article transfers, enhance productivity, and create an interconnected knowledge base, making research and note-taking more efficient.

Optimizing Model Load Times on EC2 with Pre-loaded AMIs

How I reduced initial model load times on EC2 instances by creating AMIs with pre-loaded models, identifying bottlenecks, and implementing a solution using the fio command to optimize disk I/O performance.

Accelerating Company Culture And Value Assimilation Among Employees Through Generative AI

Discusses methods using Zapier and OpenAI to support the awareness and maintenance of company culture and values among employees.

Using the Web Crypto API for Secure Encryption and Decryption

Learn how to use the Web Crypto API for secure encryption and decryption of sensitive data like API keys, especially in environments like Cloudflare Workers.

Revisiting: Generating OpenAI API Client with Kiota from OpenAPI Spec

Exploring the generation of an OpenAI API client using Microsoft Kiota from the OpenAPI specification.

Deep Dive into maybe-finance/maybe

Explore the architecture, libraries, and design of the open-source project maybe-finance/maybe, revealing insights into modern app development.

Where is Dropout Configured in SimCSE?

Dropout is incorporated within the Transformer

Improving Blog-Writing Workflow with VSCode's DevContainer and Astro

Use devcontainer to streamline the hassle of starting a local development server while writing a blog.

Using OpenAI's Assistant API with Function Calling in Chatbots

A common pattern in chatbot conversations involving function calling within the backend during interactions with an OpenAI Assistant API.

JIRA and GitHub Daily Workflow Script

A script that automates the daily workflow of managing tickets in JIRA and managing code in GitHub.

Scheduled Article Publishing in Astro with Cloudflare Pages

Discover how to implement scheduled article publishing on an Astro-built website, hosted on Cloudflare Pages.

Securing k8s Service Communication with Envoy

Delve into the nuances of enhancing security in Kubernetes clusters by implementing mutual TLS (mTLS) using Envoy.

Enhancing Tools with OpenAI API: Insights from Past Projects

Converting natural language queries into structured formats made easy

Developing an OpenAI Java API Client

A look into the development of an OpenAI Java API client using the OpenAPI Generator.

Automating LookML Code Review with lkml and GitHub Actions

How to automate LookML code review using the lkml Python library and GitHub Actions.

Exploring AI CLI Tool Development with Rust: GIGO

Garbage in, garbage out

Absence Alert System using SwitchBot

Absence Alert System using SwitchBot Motion Sensor and Cloudflare Workers

My first post

This is my first post