QR codes that scan: size, contrast, content limits
A QR that scans has three things: enough size (≥2 cm print, full module sharpness on screen), high contrast (dark on light, quiet zone intact), and a short payload (URLs beat paragraphs).
Keep payloads lean: every extra character densifies the matrix and forces bigger print. Use short links, minimal vCards, and test with two different scanner apps before printing 1,000 flyers.
Mistakes: white-on-black 'designer' QRs (many scanners fail), no quiet zone (text touching the matrix), glossy reflections, and encoding an entire menu instead of its URL.
Example: 'https://tolari.dev/genforge/' at 512px renders a sparse, forgiving matrix; the same page's full HTML as payload would be nearly unscannable at that size.
Try: QR: URL / Text · QR: Wi-Fi
Passwords people can actually keep
A keepable password system beats a 'strong' one you reuse: unique per site, stored in a manager, long enough that guessing is infeasible. Length beats clever substitutions every time.
Generate 20+ random characters per account, never reuse, and turn on 2FA where it counts (email first — it resets everything else). The manager remembers; you remember one master passphrase.
Mistakes: P@ssw0rd-style leetspeak (crackers know it), reusing with variations (site1!, site2!), SMS 2FA on a SIM-swappable number for critical accounts, and storing secrets in notes or chat.
Example: 20 chars from 70 symbols ≈ 122 bits of entropy — centuries against brute force. Five such passwords, all different, all in the manager.
Try: Password Generator · OTP Secret Generator
UUIDs, ULIDs and when order matters
UUID v4 is 122 random bits — unique enough that collisions are a rounding error. ULIDs add lexicographic sortability (time-prefix first), so databases index them in insertion order.
Use UUIDs for public IDs and distributed systems (no coordination needed). Use ULIDs when you list newest-first often, or string tokens when a human must read, type or compare them.
Mistakes: sequential IDs for anything enumerable (user/1234 invites scraping), UUIDs as primary keys in huge MySQL tables without thinking (random inserts fragment indexes), and 'uniqid()' timestamps pretending to be random.
Example: order IDs as ULIDs sort chronologically for free; password-reset tokens as 32-char URL-safe strings stay out of logs' danger zone.
Try: UUID v4 Generator · Random String / Token