All Articles

1091 articles in total

Fixing Upload Failures with S3-Compatible Storage

Root cause and fix for the x-amz-content-sha256 error when uploading to S3-compatible storage with AWS CLI v2

awss3mdx

Securely Exposing Academic Servers with Cloudflare Tunnel

How to securely expose Elasticsearch and Cantaloupe (IIIF) without opening any inbound ports, using Cloudflare Tunnel

cloudflaretunneldockerelasticsearch

How Name Servers Work

Explains the difference between name servers and DNS, the relationship between domain ownership and name servers, NS delegation, and the roles of registrars and registries

dnsnameservercloudflare

Elasticsearch → Static JSON / D1 Migration — You Don't Need a Search Engine for Small Datasets

Benchmarking Elasticsearch, Cloudflare D1, and Static JSON for full-text search across ~1,800 Japanese text records.

cloudflareelasticsearchd1sqlite

Migrating a Next.js App to Cloudflare Pages to Downgrade Vercel Pro to Hobby

A record of migrating organization-facing Next.js apps from Vercel Pro to Cloudflare Pages, enabling a downgrade to the free Vercel Hobby plan.

vercelcloudflarenextjsmigration

Migrating from AWS Amplify to Cloudflare Pages — Reducing a Next.js API Server from $23/month to $0

A step-by-step record of migrating a Next.js API server from AWS Amplify (with WAF) to Cloudflare Pages, reducing monthly costs from roughly $23 to $0.

cloudflareawsamplifynextjs

Investigating and Cleaning Up Google Drive Shared Drive Storage with rclone

How to use the rclone CLI to hierarchically investigate folder sizes in a Google Drive Shared Drive and identify unnecessary files for deletion.

googledriverclonecli

📚DH Weekly Topics — 2026年4月5日週

DH Weekly Topics — 2026年4月5日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

🚶Retargeting Mixamo Walk Animation onto an Avaturn Avatar: From Blender CLI to Three.js Runtime

A three-stage walkthrough for applying a Mixamo walk animation to an Avaturn avatar (GLB): offline conversion with Blender 5.0 CLI, verification with Node.js, and browser-only runtime retargeting in Three.js — including a detailed record of what went wrong along the way.

threejsjavascriptblendermixamo

🗂️Cantaloupe IIIF Image Server Performance Tuning

Notes on reducing cold tile fetch time from 8.8s to 0.84s on a Cantaloupe IIIF server: pyramid TIFF conversion, JVM heap tuning, and CloudFront CDN setup.

iiifcantaloupeawscloudfront

🥽Building a Meta Quest VR Viewer with Next.js + React Three Fiber: @react-three/xr v6 Implementation Notes

Notes on adding Meta Quest support to a Next.js + React Three Fiber 3D viewer using @react-three/xr v6. Covers the CameraRig XR-camera hijacking issue, the callback vs. ref pitfall in useXRControllerLocomotion, Quest device debugging techniques, and more.

webxrreactthreefibernextjsthreejs

📊Dynamically Generating Excel Templates with Cross-Sheet Dropdown Validation Using ExcelJS in Next.js API Routes

How to use ExcelJS data validation to generate Excel templates with dropdowns that reference data in other sheets, served from a Next.js API route.

nextjsexceljsexceltypescript

🗄️Backing Up Omeka S in a Docker Environment

A practical guide to backing up Omeka S running in Docker: extracting volumes, databases, and custom assets.

omekaomekasdocker

🏯IIIF VR Viewer: Experiencing Cultural Resources at Real Scale with WebXR and A-Frame

Development notes for a WebXR viewer that places IIIF images at real-world scale inside a virtual Edo-period townhouse, viewable in both browsers and VR headsets. Covers A-Frame + THREE.js third-person camera, VRM avatars, tile LOD, and issues encountered along the way.

webxraframethreejsjavascript

📖Calling NDLOCR-Lite as a Python Library Instead of CLI

How to import and call NDLOCR-Lite, a Japanese OCR engine published by the National Diet Library, directly from a Python script instead of using the CLI.

ndlocrocrpythonjapaneseocr

🤗Deploying a YOLOv5 Model to Hugging Face Hub & Spaces

A walkthrough for uploading a trained YOLOv5 model (best.pt) to Hugging Face Hub, setting up a Model Card, and deploying a Gradio demo to Spaces — including fixes for several issues encountered along the way.

yolov5huggingfacegradiopytorch

KotenOCR Android Development Log — Migrating from Flutter to Kotlin

Development log of building the KotenOCR Android app with Flutter, then migrating to Kotlin Native. Performance benchmarks, API fix for 18x speedup, and framework selection with AI-assisted development.

flutterkotlinonnxruntimeocr

📚DH Weekly Topics — 2026年3月28日週

DH Weekly Topics — 2026年3月28日週

dhweeklydigitalhumanitiesデジタルアーカイブocr

📏Physical Dimensions Ruler Plugin for Mirador 4

A Mirador 4 plugin that displays a physical scale ruler overlay using the IIIF Physical Dimensions service.

miradoriiifplugindigitalarchives

🎨Redesigning 3 iOS App Icons with AI: From Flat to Modern iOS Style

A practical walkthrough of redesigning 3 iOS app icons using Gemini, evolving from flat design to modern iOS style with gradients and soft lighting. Includes prompts, results, and post-processing tips.

iosdesignaiprompt