Notes on software development and lessons learned.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Track Korean and U.S. stocks, ETFs, crypto, and cash in one place with PortRhythm. Use the dashboard, allocation comparison, and rebalancing tools to review how to invest new funds and how many shares to trade.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Connect Telegram to an n8n pipeline to send processed data to a smartphone. Learn about BotFather tokens, webhooks, Markdown templates, and handling rate limits.
Schedule a recurring job with Schedule Trigger, collect data from RSS feeds, and practice scraping sites without feeds using HTTP Request and HTML extraction nodes.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Review Parts 1–14, see how TDD changed the code, and explore where to go next with end-to-end and visual regression testing.
Explore the costs and benefits of introducing TDD to a production project, strategies for adopting it as a team, and how CI/CD makes testing sustainable.
This article has not been translated yet.
This article has not been translated yet.
Recognize hard-to-test components and improve testability through UI/logic separation and provider-aware test setup.
This article has not been translated yet.
Introduce Mock Service Worker to intercept network requests, manage mock responses, and test success and server-error cases without a real server.
This article has not been translated yet.
Extract business logic into a custom hook and test it independently with renderHook and act.
This article has not been translated yet.
This article has not been translated yet.
Implement the minimum component code to turn failing tests green, then use useState to complete its interactive behavior.
This article has not been translated yet.
This article has not been translated yet.
Learn why frontend testing matters, what TDD offers React projects, and which behaviors to cover with tests.
Review the previous 14 installments, see how TDD helps with maintenance, and explore what to learn next. Includes the complete example code repository.
Explore the costs, schedule pressures, and team buy-in involved in adopting TDD at work, and learn how to choose what to test.
This article has not been translated yet.
Learn why Class Data Sharing can trigger a JVM warning during tests and how to suppress it with -Xshare:off.
Learn how to extend an existing project with a new discount policy using TDD while keeping its existing behavior safe.
Learn what makes code difficult to test, including hidden dependencies on time or randomness, and use dependency injection to make it testable.
Explore View Transitions, stronger Server Actions security, useOptimistic, useEffectEvent, and Activity in Next.js 16 and React 19.
A step-by-step guide to upgrading a Next.js 15 project to version 16, covering codemods, asynchronous APIs, image security settings, and other required changes.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Set up iTerm2 and Oh My Zsh on a Mac, add syntax highlighting and command suggestions, and customize your prompt with a theme and font.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Compare local storage and session storage by persistence and scope, see how they differ from cookies, and review common interview questions.
This article has not been translated yet.
Learn the first three normal forms, why reducing duplication matters, and the trade-offs of using denormalization to reduce JOINs and improve read performance.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Learn how database indexes improve SELECT performance, why indexing everything is impractical, and how faster reads trade off against slower writes.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Create custom directives such as v-focus for DOM behavior and composables such as useMouse to reuse stateful Vue logic.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Use Axios in Vue to communicate with servers, load data in onMounted, and manage loading and error states.
Install Pinia, define stores with state, getters, and actions, share state between Vue components, and compare React alternatives.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Create a Vue 3 project with Vite and learn the structure of a .vue single-file component.
Install Ubuntu 22.04 LTS with Windows Subsystem for Linux, create a Linux user, verify the installation, and access Windows files from Ubuntu.
This article has not been translated yet.
Learn about actors, use cases, and scenarios, and write a use case specification with basic, alternative, and exception flows.
This article has not been translated yet.
Understand why a software requirements specification matters, what it contains, and how to write functional and nonfunctional requirements with concrete examples.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Review the characters and concepts from the three-day series, revisit easily confused Hanja, and prepare for exam day with last-minute tips.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Start preparing for the Hanja Level 4 exam from scratch. Learn common radicals and memorize 40 frequently tested characters with examples and memory aids.
Install Wireshark, learn the capture interface and display filters, and analyze a real HTTP request to see how network communication works.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Compare the seven-layer OSI model and the TCP/IP model, learn what each layer does, and follow a web request through the layers.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Connect Cursor or VS Code to Figma with cursor-talk-to-figma-mcp to automate repetitive design work and move more easily between code and design.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Find national tax refunds on the Hometax website or Sontax app, register a payment account, and review common refund types and precautions.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
A Python divide-and-conquer solution for counting monochromatic pieces of colored paper.
A Python solution to the Lost Parentheses problem using a greedy approach and expression parsing.
A Python BFS solution for counting connected cabbage groups and the minimum number of protective worms.
A Python graph-traversal solution for counting regions with and without red-green color weakness.
A Python BFS solution to finding the fewest die rolls in a game of snakes and ladders.
Prepare for developer hiring assessments with common personality questions, timed aptitude practice, and ways to answer honestly and consistently.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Explore micro frontend architecture, its benefits and costs, and implementation options including single-spa and Webpack Module Federation.
This article has not been translated yet.
This article has not been translated yet.
Learn React Router v6 through the History API, URL matching, nested routes and Outlet, Link, navigation hooks, and code splitting.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Use react-native-qrcode-svg to turn a URL, including a deep link, into a QR code and display it in an Expo app.
Configure deep links in Expo Router, navigate to specific screens, and pass and read data through URL query parameters.
This article has not been translated yet.
Build infinite scrolling with Expo, FlatList, Axios, and JSONPlaceholder while managing pages, loading, and remaining data.
This article has not been translated yet.
Add push notifications to an Expo app step by step, from installing expo-notifications and getting a push token to sending, receiving, and configuring FCM and APNs.
This article has not been translated yet.
This article has not been translated yet.
Connect the operating-system concepts from days 1–19 into a complete picture of processes, memory, files, protection, virtualization, and networks.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Understand virtualization, virtual-machine architecture, hypervisors, hardware support, and their trade-offs.
Understand protection principles, domains, access-control matrices, ACLs, capabilities, and operating-system protection policies.
This article has not been translated yet.
This article has not been translated yet.
Learn how operating system security protects systems and user data, with examples of common threats, encryption, authentication, and app security.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Understand I/O hardware, controllers, kernel subsystems, drivers, system calls, DMA, STREAMS, and I/O scheduling.
Understand how virtual memory provides an address space larger than physical memory, with examples of demand paging, page replacement, and copy-on-write.
This article has not been translated yet.
This article has not been translated yet.
Understand deadlock, the Coffman conditions, and prevention, avoidance, detection, and recovery strategies with process and thread examples.
Explore practical synchronization scenarios, from classic problems to code examples, to prevent resource conflicts in concurrent environments and prepare for interviews.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
An operating system manages computer resources and connects users with hardware. Explore its core roles, structure, resource management, security, and virtualization.
This article has not been translated yet.
Create API keys and retrieve EOA wallet balances across chains using Etherscan V2, React, and TypeScript.
Request camera, media library, notification, microphone, and location permissions in Expo with TypeScript examples.
Abstract React Query into reusable custom hooks for pages and components, with practical JSONPlaceholder examples.
Learn TanStack Query in React Native (Expo), from installation and focus management to writing queries, with JSONPlaceholder API examples.
Install TanStack Query in React and learn to fetch, cache, and refetch API data, with examples of query keys, Suspense, SSR, and error handling.
This article has not been translated yet.
Integrate Google AdMob rewarded interstitial ads into a Flutter app and manage ad-button state, rewards, and lifecycle events.
Install and configure React Native Picker, then compare it with react-native-element-dropdown for a consistent selection control on iOS and Android.
This article has not been translated yet.
Upgrade Tailwind CSS 3 to 4 and review browser support, the new configuration structure, breaking changes, and before-and-after examples.
This article has not been translated yet.
This article has not been translated yet.
A step-by-step guide to configuring and using Model Context Protocol servers in Visual Studio Code, based on the official documentation.
This article has not been translated yet.
A detailed, step-by-step guide to building an MCP server with the Model Context Protocol TypeScript SDK.
Understand the OpenAI Agents SDK, MCP integration, and example code for building agent-based AI applications.
Learn why context matters to language models, how it relates to MCP, and how an application can organize context for a code review assistant.
Learn how the IndexNow protocol works, verify a key, and notify Naver or Bing when your website's URLs change.
Use expo-image and expo-asset to optimize remote and bundled image loading, handle asset state, and show BlurHash placeholders.
Compare Next.js data-fetching approaches and choose strategies for static content, authenticated dashboards, interactions, and frequently changing data.
Customize fetch headers and cookies, invalidate tagged caches, and build backend communication with Next.js route handlers.
Handle multiple requests with parallel, sequential, and conditional fetch patterns, and fetch data in client components using useEffect and SWR.
Understand fetch caching, no-store, revalidation, ISR, and cache-key generation in Next.js.
Understand data fetching in the Next.js App Router and server-component-centered data flow.
Practical performance improvements in a Next.js blog, including removing duplicate fetches, simplifying Suspense, and formatting dates on the client.
Walk through an upgrade from Next.js 14 to 15, including dependencies, request APIs, codemods, and troubleshooting.
Display static HTML files inside Next.js App Router pages with public assets and iframes.
Open external links inside Expo apps with WebBrowser and understand how it differs from WebView.
Downgrade Xcode from 16.3 to 16.2 to resolve React Native and Expo build errors involving std::char_traits<unsigned char>.
Read the device locale, organize translations into language packs, and remember the user's language choice in an Expo app.
This article has not been translated yet.
Solve the Programmers SQL exercise by comparing each E. coli colony's size with the maximum for its year.
This article has not been translated yet.
Set up @gorhom/bottom-sheet and create a reusable React Native bottom sheet with configurable content, snap points, and a backdrop.
Set up a development build in Expo so you can modify and run native code.
Install and use Expo Vector Icons and configure icon buttons with Icon.Button.
A Python solution to the Representable Binary Tree problem from Programmers' 2023 Kakao Blind Recruitment.
A Python solution to Programmers' PCCP past-exam question 3, Finding Collision Risks.
Use collections, heapq, bisect, and itertools for data structures and coding-test problems in Python.
A practical overview of Python lists, tuples, dictionaries, and sets.
This article has not been translated yet.
A solution to Baekjoon problem 1927.
This article has not been translated yet.
Learn how to add digital wallet functionality to a React Native (Expo) app using Reown WalletKit.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Set up Expo SecureStore, store and retrieve encrypted values, and add biometric authentication in a React Native app.
This article has not been translated yet.
How to change a Flutter app's launcher icon and its Android and iOS display names.
Render SVGs in an Expo app, configure react-native-svg-transformer, and pass SVG attributes as React props.
Define Expo pages, shared layouts, route groups, dynamic segments, and platform-specific routing using file-based routes.
Use JSDoc syntax and tags to document functions, improve IDE assistance, and make JavaScript and TypeScript code easier to share and maintain.
This article has not been translated yet.
Set up Expo on macOS, create and link a project, and run the app in an emulator, a simulator, or Expo Go.
Show loading feedback in React Native with ActivityIndicator and react-native-skeleton-placeholder.
Use React keys to refresh selected child components or an entire component subtree in React Native.
Implement pull-to-refresh with React Native RefreshControl and customize platform-specific indicator properties.
Configure Firebase Cloud Messaging for iOS and Android, retrieve an FCM token in Flutter, and send a test push notification.
Customize native splash screens in Flutter with flutter_native_splash, including Android 12 configuration.
Install, configure, display, and customize toast notifications in Expo and React Native CLI projects.
Configure Firebase phone authentication for a Flutter app, handle verification callbacks, and troubleshoot Android and iOS setup.
Create a Firebase project and manually register the Android and iOS versions of your Flutter app.
Register a Flutter project with Firebase using FlutterFire CLI and initialize Firebase in the app.
Set up a typed Axios client with interceptors and shared request and response types in Next.js, with patterns you can adapt to React, React Native, or Node.js.
This article has not been translated yet.
Create and configure language packs in Flutter, use translated strings and plurals, and let users switch languages in the app.
How to connect and manage multiple Git remotes from a single project directory.
This article has not been translated yet.
Configure Flutter widgets to switch bottom-navigation tabs, including moving from the notification screen to the search screen.
Keep Flutter's bottom navigation bar visible on nested pages and return to a tab's root when it is selected again.
Configure a four-tab bottom navigation bar in Flutter, shown on every page after login.
Store Flutter login state with FlutterSecureStorage and navigate between login and main pages with GetX.
Set navigation requirements for login, bottom tabs, nested stacks, and cross-tab navigation, then configure FlutterSecureStorage and Get.
Call APIs in Flutter with Dio and Retrofit, define response models, generate code, and configure request parameters, headers, and bodies.
Image placeholder APIs for random photos, dogs, avatars, and other frontend development needs.
Customize Tailwind themes, reusable CSS sets, global styles, and fonts with configuration files and plugins.
Install NVM through Homebrew, configure the shell, and manage Node.js and npm versions on macOS.
Install Homebrew, manage packages and applications, and configure the shell environment on macOS.
Configure formatting, linting, CSS-in-JS styling, and global state in an Expo project.
Set up an Expo project on Windows, run it in an Android emulator or Expo Go, and troubleshoot PowerShell execution policy errors.
Set up React Native on Windows and run the project in the Android Studio emulator.
Learn basic file-system routing, dynamic routes, and API route handlers with Next.js App Router.
Set up a Next.js project and configure Tailwind CSS, Shadcn/ui, and the typography plugin.
The technology stack and libraries used to build this blog, their roles, and why I chose them.
Goals for the blog as a publishing platform and as a software project.
Why I decided to build and run my own blog.
Automatically deploy static files from a GitHub repository to an S3 bucket using GitHub Actions.
Serve blog images through Amazon S3 and CloudFront, test the distribution, and connect an optional custom domain.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Learn how to check independence and compute the expectation and variance of independent random variables through worked examples.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
TCP Reno congestion windows, slow start, congestion avoidance, AIMD, and responses to packet loss.
Network management infrastructure, managed devices, agents, and management information bases.
ICMP error reporting, echo messages, and its role in traceroute.
BGP operation, eBGP and iBGP sessions, route selection, and hot potato routing.
Scaling routing with autonomous systems and the operation of the OSPF link-state protocol.
Routing goals, network graphs, link-state and distance-vector algorithms, Dijkstra, Bellman–Ford, and their trade-offs.
An overview of the network control plane.
This article has not been translated yet.
Router architecture, input and output ports, switching fabrics, buffering, and packet scheduling.
Network-layer forwarding and routing, data and control planes, and network service models.
Learn the roles of models, views, and controllers and how they interact, with Java examples and comparisons across frameworks.
This article has not been translated yet.
Explore the core object-oriented design principles SOLID (SRP, OCP, LSP, ISP, DIP). Learn what each principle means and why it matters through Java examples, and how to apply them to build flexible, maintainable software.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Software verification and validation, inspections, testing stages, black-box and white-box testing, and equivalence partitioning.
Unit testing, regression tests, drivers and stubs, JUnit assertions, fixtures, and test-method structure.
Turn UML design class diagrams and interaction diagrams into classes, method bodies, and collection-based implementations.
Understanding visibility when designing interactions between objects.
Use case realization and operation contracts in object design with GRASP.
An introduction to the nine GRASP patterns, object responsibilities, coupling, and cohesion in software design.
Design class diagrams, association perspectives, keywords, stereotypes, and deriving classes and code from interaction diagrams.
This article has not been translated yet.
Object-level design in software engineering, including static and dynamic models.
An overview of logical architecture design in software engineering, including layers, UML package diagrams, and the separation of models and views.
This article has not been translated yet.
An overview of contention-free protocols in mobile communications, including FDMA, TDMA, CDMA, and radio link duplexing.
Multiple-access techniques in the MAC layer of wireless mobile communications.
Network architecture, SDUs and PDUs, and the OSI, TCP/IP, and hybrid reference models.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
Source coding, prefix codes, compression efficiency, and the Huffman coding algorithm.
Source coding and channel coding in wireless mobile communications.
Network congestion, its causes and costs, retransmissions, duplicate packets, and throughput under different scenarios.
Study notes for the third subject of Korea's Engineer Information Processing exam, covering database design and implementation.
This article has not been translated yet.
This article has not been translated yet.
How to use the mirror option to copy a repository in full.
Message authentication codes, HMAC construction and security, and block-cipher-based CBC-MAC.
Cryptographic hash requirements and the design of SHA-1, SHA-2, and SHA-3.
This article has not been translated yet.
This article has not been translated yet.
Digital signature algorithms, correctness, message authentication, and security against chosen-message attacks.
An explanation of ElGamal encryption used in public-key cryptography.
The Diffie–Hellman key-exchange algorithm, examples, computational assumptions, and man-in-the-middle attacks.
This article has not been translated yet.
This article has not been translated yet.
This article has not been translated yet.
An explanation of public-key encryption.
Stream ciphers, random and pseudorandom numbers, RC4, and an introduction to block-cipher modes.
This article has not been translated yet.
Feistel structure, DES permutations, S-boxes, key scheduling, security, and Triple DES.
The structure and computational security of block ciphers.
An introduction to symmetric-key encryption, block ciphers, and stream ciphers.
Classical encryption techniques: shift, affine, substitution, Vigenère, permutation, and LFSR ciphers.
An introduction to the basic concepts of cryptography.
Computer security, the CIA triad, vulnerabilities, attacks, countermeasures, and security strategies.
This article has not been translated yet.