SQLite — A Single-File DB for Local Apps
SQLite is an embedded database that holds a SQL database in a single file. It is one of the most frequently chosen options for local storage in desktop and mobile apps.
7 views
Things I studied and noted down. For courses, see EDU.
Things I studied and noted down. For courses, see EDU.
AI/LLM topics — agents, prompts
HTML, CSS, JS, HTTP, URL basics
TypeScript, Java, Python, Rust
Data structures, Big-O, patterns
React, Next.js, Tauri, Tailwind
Spring, FastAPI, SQL
Claude Code · MCP · Context7 · Figma — overview of AI coding tools
Deployment options and decision criteria
PostgreSQL · Kafka · data strategy notes
Docker, Compose, Caddy, SSH
Windows vs Mac and other dev-environment notes
Cross-platform options compared (Tauri · Flutter · RN)
pnpm, uv, Gradle, Git, regex
KISS · DRY · YAGNI · naming — development philosophy
OAuth · JWT · security fundamentals
Testcontainers, Vitest, pytest
Searching, reading docs, debugging
SQLite is an embedded database that holds a SQL database in a single file. It is one of the most frequently chosen options for local storage in desktop and mobile apps.
7 views
An embedding is the result of mapping text (or images · code) to fixed-dimensional real-valued vectors. On top of the assumption that semantically close items sit close in the vector space, search · clustering · classif…
5 views
A monorepo keeps the source for many projects in a single version-controlled repository. This article covers what a monorepo is, its history, how far a lightweight setup like pnpm workspaces can take us, and what full-s…
5 views
The LLM market shifts fast. Closed-API and open-weight, English-centric and multilingual, cloud and self-hosted, models specialized for Korean — all sit alongside each other.
4 views
The word "agent" is used in several senses, which is a confusing situation. Script automation is called an agent, and so is the shape of an LLM calling tools.
4 views
After variables and functions, data structures are the next topic you meet most often when starting out in programming. The simplicity and speed of code shifts dramatically depending on which container you choose for th…
Test infrastructure isn't built in one shot. One project had no tests at the start either, and brought in infrastructure one area at a time only after regressions broke production a few times. This post records the shap…
GitHub Actions puts CI/CD inside the GitHub repository. It went into beta in 2018 and moved to GA in 2019.
The word "observability" tends to suggest rolling out a full stack, but introducing a full stack from a small system makes operational cost outpace value pretty quickly.
Vitest is a testing framework that grew out of the Vite ecosystem. It keeps a similar grain to Jest while handling ESM, TypeScript, and watch mode more lightly.
Testing code that depends on external systems like a DB, Redis, or Kafka usually splits into two paths. We either mock the dependency, or we boot a real instance and verify against it. Testcontainers is the library that…
Whenever the browser renders a page, several protective mechanisms run in concert. Same-origin policy, CORS preflight, the script allow-list of CSP, HSTS, and the isolation headers introduced after Spectre. This article…
Storing passwords in plaintext is obviously wrong, but the choice of hash function and how to use it has changed across eras. The MD5 → SHA-1 → bcrypt → scrypt → Argon2 progression is not fashion but the result of an ar…
Untrusted input arrives at the edges of the system. HTTP body, query, headers, environment variables, external API responses, file contents. Letting that input flow into the inner code blurs both type and meaning, and s…
Rate limiting protects resources, controls cost, and reduces abuse. It looks simple, but in distributed systems decisions accumulate around accuracy, fairness, and UX. This article covers the fixed window, sliding windo…
OAuth 2.0 is the standard for delegating authorization without exposing user credentials. OpenID Connect sits on top to add authentication (who is this). This article covers the Authorization Code Flow with PKCE, state…
JWT is a lightweight way to carry claims, but it does not by itself answer every question an authentication system needs. We cover the short-access-token / long-refresh-token pattern, invalidation strategies, algorithm…
When a repo needs to carry another repo's code, or when large binary files have to live inside a repo, the options that come to mind are Submodule, Subtree, Sparse Checkout, and Git LFS. Each has different strengths and…
Whenever someone asks "pull just the emails out of this text", the first tool that comes to mind is the regular expression (regex). Short strings, big expressive power — and the same reason makes it look alien when firs…
Python's packaging and dependency management has seen many tools rise and fall over time. This article walks through them in chronological order and notes what each tool solved, and where it fell short — based on facts.
Linters and formatters look similar but play different roles. This article covers the definition of each, the leading tools, and the trade-offs.
The editor is where most of the typing and reading actually happens. This article covers the leading editors, the standard protocols (LSP, DAP), and EditorConfig.
Gradle is one of the most widely used build tools in the JVM ecosystem. This article covers Gradle's origins, how it works, and how it differs from Maven.
Learning Git commands and learning how a team operates Git are two different things. This article covers branching strategies, commit message conventions, version notation, PR review, and hook tools.
Different projects need different language runtime versions. Version managers let one machine switch between many versions safely. This article covers the leading tools for Node, Python, and the JVM, plus multi-language…