← Knowledge Base

Engineering Practice

Local-first privacy architecture, OCR accuracy, watermarking and identifier design — hands-on engineering notes.

Articles in this topic

Everyday Git and Recovering from Four Common Accidents

Wrong branch, deleted branch, overwritten work? Recovery through reflog, everyday commands, and three rules for teams.

6 min readGitCLIPitfalls
Add a Watermark Before You Share Images

Watermarks do more than stop reposting: attribution, tracing and branding. Choosing a style and cleaning privacy data before upload.

6 min readImagesPrivacy
Practical Regex Recipes and Four Common Traps

Reusable recipes for emails, phone numbers and log dedup — plus greedy vs lazy, groups, lookaround, catastrophic backtracking, and when not to use regex.

6 min readRegexPitfalls
Seven Practical Ways to Improve OCR Accuracy

Poor accuracy is rarely the engine alone: resolution, skew, contrast and language packs all matter. A checklist you can apply today.

6 min readOCRImages
Which UUID Version? v1, v4, v7 and When Not to Use One

A UUID is not just a random string. v1, v4 and v7 differ in time semantics, information leakage and index performance.

7 min readIdentifiersPitfalls
Local vs Server Processing: Why Browser-Only Tools Are Safer

Uploading a file to a server and computing it in your browser have very different security boundaries. Comparing both architectures.

5 min readPrivacyBeginner
The Testing Pyramid: Unit Tests Should Dominate

Why piles of UI end-to-end tests are slow and flaky. The unit / integration / e2e ratio and where to spend effort.

6 min readTestingBeginner
Image vs Container: They Are Not the Same in Docker

An image is read-only, a container is a running instance. Layers, size optimization, and why data belongs in volumes.

6 min readCloud nativeBeginnerCI/CD
Observability Three Signals: Logs, Metrics, Traces

You cannot fix what you cannot see. The distinct roles of logs, metrics and traces, and how to pinpoint failures fast.

6 min readObservabilityBeginner
Catastrophic Regex Backtracking: One Pattern That Can Down Your Service

Some patterns explode exponentially on certain input. Why nested quantifiers are dangerous, how to spot and avoid them, plus a timeout fallback.

6 min readRegexPitfalls
The 3-2-1 Backup Rule and Restore Drills

Backup is not the goal; recovery is. The 3-2-1 rule, RPO/RTO, verification and restore drills, plus the most common failures.

6 min readBeginnerPitfalls
Semantic Versioning in Practice: MAJOR.MINOR.PATCH and Dependency Ranges

When does a change deserve a MAJOR bump? What is the difference between ^ and ~? Version semantics, the 0.x rules, and four dependency traps.

6 min readCLIBeginner
Shell Scripting Essentials: Safe Preamble, Quoting Rules, Four Common Errors

Why set -euo pipefail is standard, how $var differs from "$var", and the four places scripts most often break.

6 min readCLIPitfalls
SSH Keys and config: From Generation to Managing Many Hosts

Why ed25519? How to write a useful ~/.ssh/config? Key deployment, host aliases, and four common pitfalls.

7 min readSSHCLI
Linux File Permissions: What the Three Digits Really Mean

What do 755, 644 and 600 mean? Why is the execute bit special on directories? Three identity groups, octal notation, and five frequent mistakes.

6 min readLinuxCLIBeginner
Concurrency Models Compared: Processes, Threads, Event Loops, Coroutines

CPU-bound or IO-bound? Need isolation? Compare four concurrency models across key dimensions, with a selection order and common traps.

6 min readConcurrencyPerformance
Canary and Blue-Green: Ship Without Blame

Do not push the new version to everyone at once. Canary by percentage, blue-green instant switch, and how to roll back fast.

5 min readCI/CDBeginner
Why a Database Index Makes Queries Fast

Without an index the database scans the whole table. B+tree indexes, the return-to-table step, leftmost prefix, and why more indexes are not always better.

6 min readDatabasesBeginner
Process, Thread and Coroutine: Three Units of Concurrency

Processes isolate, threads share memory, coroutines schedule in user space. Their costs, switching overhead, and when to favour coroutines or async.

6 min readConcurrencyBeginner

Related tools

Other topics