Archive
159 posts
2026
- Section: MAKERBambu Lab A2L Unboxing: Big Bed, Great Value
- Section: MAKER18 Chiikawa Ice Cream Keychains: Cones on the X2D, Heads on the H3C
- Section: MAKERMario and Luigi Figures, Glued Together One Piece at a Time
- Section: AII Tore Down My Blog and Rebuilt It as a Portal — AI Agents Wrote the Code
- Section: MAKERSliding AMS 2 Pro Storage with a Steel Shelf and Drawer Slides, All for Under ₩100,000
- Section: MAKERTwo Multicolor Figures on the H3C, About 8 Hours Each, All in One Go
- Section: MAKERBambu Lab AMS 3H Recognizes Filament Instantly, Even Mid-Print
- Section: MAKERPrinting and Assembling a Bowser Figure — The Teeth Were the Hardest Part
- Section: MAKERPrinting a 15cm Bulbasaur in Six Pieces
- Section: MAKERBambu Lab H3C + AMS 3: From Unboxing to First Print
- Section: AII Posted an OpenClaw Setup Guide, and the Next Day Claude Announced Computer Use
- Section: AIBuilt an AI Personal Assistant on Mac mini - OpenClaw Setup to Cost Optimization
- Section: DEVReact Compiler: Drop useMemo and useCallback, Let the Compiler Handle It
- Section: DEVJavaScript Set New Methods - intersection, union, difference Practical Guide
- Section: DEVClean Up Async Code with JavaScript Promise.withResolvers()
- Section: DEVNode.js AsyncLocalStorage - Stop Passing requestId Through Every Function
- Section: DEVTypeScript Type Guards with 'is' Keyword - Narrowing Union Types Safely
- Section: DEVReact Error Boundary in Practice - Prevent Your App from Crashing
- Section: DEVCSS animation-timeline: scroll() — Scroll Animations Without JavaScript
- Section: DEVNode.js stream.pipeline - Process Large Files Without Memory Overflow
- Section: DEVNode.js --env-file: Native .env Support Without dotenv
- Section: AIOverheard from the Next Meeting Room: AI Is Everywhere Now
- Section: DEVTypeScript Record Type: Building Type-Safe Dictionaries
- Section: DEVPostgreSQL JSONB Query Optimization with GIN Index
- Section: DEVSelectively Stash Files with git stash push -m
- Section: DEVTypeScript Pick, Omit, Partial: Practical Utility Type Combinations
- Section: DEVgit bisect - Find the Bug-Introducing Commit with Binary Search
- Section: DEVDocker Compose Watch: Hot Reload for Containerized Development
- Section: DEVExtracting Generic Types with TypeScript infer Keyword
- Section: DEVgit worktree: Work on Multiple Branches Without Switching
- Section: DEVInstant UI Updates with React useOptimistic Hook
- Section: DEVCSS Container Queries: Component-Level Responsive Design
- Section: DEVTypeScript as const: Stop Type Widening for Good
- Section: DEVPromise.allSettled vs Promise.all: Handle Partial Failures Gracefully
- Section: DEVGenerate UUIDs in Node.js Without the uuid Package
- Section: DEVTypeScript Enum vs Union Type: Which One Should You Use?
- Section: DEVNext.js 15 Changed the Default Fetch Cache - How to Handle no-store
- Section: DEVServe Static Sites with Nginx + Docker
- Section: AII Asked AI to Build an App and It Was Done in a Day - But Store Registration Took 3 Days
- Section: DEVCookie Authentication with localStorage Fallback
- Section: DEVSet Up a Monorepo with pnpm Workspace
- Section: DEVNext.js API Proxy with rewrites for Microservices
- Section: DEVHow to Properly Type React useRef with TypeScript
- Section: AIEstimate LLM Token Count - Korean vs English Differences
- Section: DEVType-Safe API Responses with TypeScript Generics
- Section: DEVZod: Runtime Type Validation for TypeScript
- Section: DEVBuild an FPS Monitor with requestAnimationFrame
- Section: DEVTypeScript satisfies Operator: Type Safety Without Losing Inference
- Section: DEVReact useEffect Infinite Loop: 3 Causes and How to Fix Them
- Section: DEVRestructuring Jekyll Multilingual Blog URLs and Overhauling Pagination
- Section: AIMy $50 Credit Vanished in 3 Hours - The Real Cost of Claude Code 1M
- Section: AIEscaping Compacting Hell - Claude Code 1M Context Model Review
- Section: AIAI Can Do Everything Now - So What Should We Build?
- Section: DEVCORS Error Complete Guide - From Cause to Next.js/Express Setup
- Section: DEVAuto-Deploy Docker Images to ECR with GitHub Actions
- Section: DEVPython FastAPI + SQLAlchemy Async Database Connection Pattern
- Section: DEVAWS Lambda Deploy Script - Auto-Find CDK Function Names
- Section: AIEveryone's Talking About OpenClaw, But I Was Already Building the Korean Version
- Section: DEVDeep Copy in JavaScript with structuredClone
- Section: DEVCSS :has() Selector: The Parent Selector We've Been Waiting For
- Section: DEVDocker Volume vs Bind Mount: When to Use Which
- Section: AII Asked AI to Design a 3D Hardware Case - It Took 5 Minutes
- Section: DEVPython match-case: Cleaner Alternative to if-elif Chains
- Section: DEVS3 Presigned URLs - Build One-Time Download Links
- Section: DEVJavaScript Temporal API - Finally a Proper Date Replacement
- Section: DEVReact useDeferredValue: Optimize Search Without Debounce
- Section: AIWhy I Regret Paying for Annual AI Subscriptions
- Section: DEVOrganizing CSS Priority with @layer
- Section: DEVArray Grouping in One Line with Object.groupBy
- Section: DEVHandling Fetch Timeouts with Node.js AbortController
- Section: DEVDynamoDB ConditionExpression for Concurrency Control
- Section: DEVOffload CPU-Intensive Tasks with Node.js worker_threads
- Section: DEVReduce Selector Repetition with CSS :is() and :where()
- Section: DEVCreate Immutable Data Objects with Python dataclass(frozen=True)
- Section: DEVAWS CDK - Build a SES Email Lambda in Minutes
- Section: AII Tried Opencode... Turns Out Claude Code Already Does It All
- Section: AIWhat Services Should You Build in the AI Era - It All Comes Down to Data
- Section: DEVVite Monorepo - Allow Parent Directory Access with server.fs.allow
- Section: DEVUsing __dirname in ES Modules - import.meta.url Approach
2025
- Section: DEVRedis Key Naming Convention - Hierarchical Key Design
- Section: DEVElectron contextIsolation + Preload Security Pattern
- Section: DEVNode.js --expose-gc for Memory Leak Debugging
- Section: DEVS3 Cache Busting - Always Fetch the Latest File
- Section: DEVPrisma Index Strategy - Composite Indexes and Sort Direction
- Section: DEVNext.js Health Check API - Essential Production Monitoring Endpoint
- Section: DEVNode.js TCP Port Scanner - Using net.Socket with Timeout
- Section: DEVNode.js Get Local IP Address - Cross-Platform (Win/Mac/Linux)
- Section: DEVNext.js HttpOnly Cookie JWT Auth - Protect Tokens from XSS
- Section: DEVDocker Compose Redis Healthcheck - Guarantee Startup Order
- Section: DEVBuilding a Kiosk with Raspberry Pi - More Pitfalls Than Expected
- Section: DEVAuto-Inject Bearer Token with a fetch API Auth Helper
- Section: AICan One Person Really Develop Entire Projects? 200% AI Utilization with CDK + Lambda + Cursor
- Section: AICreating Naver/Kakao OIDC for Firebase? Reality Hits Different
- Section: DEVJavaScript Intl.NumberFormat - Format Numbers Without Libraries
- Section: DEVUnity + Firebase Authentication Journey: From Anonymous to Account Linking
- Section: AIBuilding a GitHub Pages Tech Blog with AI - Complete Series Guide
- Section: AIBuilding a GitHub Pages Tech Blog with AI (5) - Completing Jekyll Multilingual Blog with MCP
- Section: AIBuilding a GitHub Pages Tech Blog with AI (4) - Perfect Implementation of Dark/Light Mode with MCP
- Section: AIBuilding a GitHub Pages Tech Blog with AI (3) - Setting up Giscus Comment System in 5 Minutes with MCP
- Section: AIBuilding a GitHub Pages Tech Blog with AI (2) - Complete Automation of SEO-Optimized Tech Posting with MCP
- Section: AIComplete RAG Guide: Understanding True Data Integration AI through Manufacturing MES Systems
- Section: DEVAI Development Reality Check: Lessons from Blog Automation
- Section: AIBuilding a GitHub Pages Tech Blog with AI (1) - Creating Jekyll Blog Locally with Claude Desktop MCP
- Section: DEVAutomating Blog Image Generation with Vertex AI Imagen: From Python Package to MCP Server
- Section: DEVvertex-ai-imagen: A Simple Python Package for Google Vertex AI Imagen
- Section: DEVEasy MCP Installation Using Existing MCPs - Practical Guide for Installing Playwright MCP
- Section: AIBuilding a Complete Tech Blog with Claude Desktop + MCP: The Reality of AI Pair Programming
- Section: DEVGetting Started with a Tech Blog Using GitHub Pages
- Section: DEVPM2 Cluster Mode for Next.js Production Performance
- Section: DEVPython Timestamp Guide - Current Time, Conversion, and Practical Usage
- Section: DEVNode.js Redis Singleton Connection + Auto-Reconnect Strategy
- Section: AIAfter 20 Years of Coding, AI Built My Website
- Section: DEVDocker Compose YAML Anchors (&) - Eliminate Repeated Config
- Section: AIHow to Get Good Code From AI - It's Not Just About Prompts
- Section: AICursor Agent After One Month - Where AI Coding Actually Stands
- Section: DEVDocker Multi-Stage Build for Next.js - Optimize Image Size
- Section: AIRunning LLMs Locally With Ollama - It Depends on the Use Case
- Section: DEVAPI Endpoint Security Without Authentication - How Far Should You Go?
- Section: DEVNext.js Prisma Singleton Pattern - Fix Hot Reload Connection Leaks
- Section: DEVJavaScript UTC to KST Conversion - 3 Utility Functions for Production
2024
- Section: AIVector Databases - Do You Actually Need One?
- Section: AICreating a Gnuboard Q&A Site Using ChatGPT-4o - Idea Journal
- Section: DEVGiving SvelteKit a Try - Am I Framework-Hopping Again?
- Section: DEVLinux SSH Key Generation - Complete ssh-keygen Guide
- Section: DEVBuilding an Automated Naver Blog Posting System with AWS Lambda + S3 + CloudWatch + SNS
- Section: DEVHardware-Based Key Management and Access Control System Design Using Thingplug
- Section: AIUsing ChatGPT for Microservice Architecture Design - An Honest Review
- Section: DEVLinux System Resource Monitoring with htop
- Section: DEVBuilding Remote Desktop with AWS EC2 - Reality and Future of Cloud Work Environment
- Section: LIFEThe Blog Nomad Finally Settles Down
- Section: DEVAdding Specific Files from Ignored Directories in .gitignore
2023
- Section: DEVSetting up SSH Push with Bitbucket Access Key
- Section: DEVInstalling LEMP Stack on Ubuntu 18.04LTS: Complete Guide to Nginx, MariaDB, PHP 7.1
- Section: DEVComplete Guide to Configuring MariaDB External Access
- Section: DEVSetting up nginx Bandwidth Limiting - Complete limit_rate Guide
- Section: DEVComplete Guide to GitKraken GitHub Organization Repository Integration
- Section: DEVCreating Photoshop Effects with CSS Blend Modes - Complete Guide to background-blend-mode and mix-blend-mode
- Section: DEVComplete Guide to Gnuboard Hook Usage and Event Types
- Section: DEVJavaScript Number Padding with Zeros - Complete Guide to padStart() and Custom Functions
- Section: DEVComplete Guide to MySQL/MariaDB Database Backup and Restore via Console
- Section: DEVComplete Guide to Fixing Chrome Yellow Autocomplete Bug - Experimental Features Reset & Korean Input Method Setup
- Section: DEVAdding Values to HTTP Headers in JavaScript jQuery AJAX Communication
- Section: DEVThemePress Addon Server Architecture - Microservice-Based Scalable Web Platform Design
- Section: DEVConfiguring Apache to Recognize PHP Code in HTML Files
- Section: DEVCritical Mistake to Avoid When Integrating Amazon Cognito with JavaScript
- Section: DEVComplete Guide to Linux tar Command - Everything About Compression and Extraction
- Section: DEVFixing Korean Character Encoding Issues After Apache Server Migration
2022
2021
2020
- Section: DEVAWS Certified Developer Associate - Exam Review and How I Passed
- Section: DEVAn On-Premise Developer Falls Hard for AWS
- Section: LIFEHow My Parents' Generation Thinks About Retirement - A Developer Son's Worry
- Section: DEVMySQL uuid() in Practice - Stop Exposing Auto Increment PKs in URLs
- Section: DEVFrom On-Premise to Cloud - Confessions of a Developer Who Keeps Postponing Migration
- Section: LIFEWhen Coding Is Fun But Your Hands Won't Move - The Developer Laziness Trap
- Section: DEVMy Honest Review After Using Docker for Every Project for 2 Years