The Frontend Is a Privileged System Now
The browser is untrusted, but the system that builds and delivers the frontend is not. Install hooks, CI identities, and release credentials make frontend delivery a production trust boundary.
Recent content in Home on Omid Farhang
The browser is untrusted, but the system that builds and delivers the frontend is not. Install hooks, CI identities, and release credentials make frontend delivery a production trust boundary.
Arch Linux froze all AUR writes after a third supply-chain attack wave, then restored pushes and adoption on August 11 with review gates. Timeline, how Atomic Arch worked, and what to do on Manjaro and other Arch-derived distros.
“Get up and fight! Get up and fight!” Marilyn Manson is back?
Build a reproducible Linux command-line workspace with portable dotfiles, terminal, shell, multiplexer, SSH, and editor layers that remain maintainable across machines.
Stop storing JWTs in localStorage. Use OIDC with a BFF or reverse proxy, short-lived server-side tokens, HttpOnly cookies, and Angular interceptors and guards that do not pretend to be your security boundary.
Browser frameworks still own sanitization, request protection, and SSR isolation. Three recent Angular CVEs show why framework patches are part of every client-side app’s security boundary.
Security for Angular Progressive Web Apps: HTTPS and service worker scope, cache strategies that do not leak auth-dependent data, and offline sessions without raising XSS or CSRF risk.
Build an SBOM and CI security pipeline for Angular monorepos: npm audit, ng update --dry-run, fail on high-severity CVEs, Dependabot/Snyk, and post summaries to Slack or Mastodon.
Ship CSP for Angular without breaking the build: report-only first, nonces via autoCsp or ngCspNonce, nginx/Apache/Cloudflare headers, and a small scanner for inline handlers, eval, and other footguns.
TypeScript 7's native port delivers dramatic build-time speedups, but editor plugins, framework tooling, and monorepo workflows are catching up at different speeds. A practical read for teams deciding when to adopt.
A list of the hardware, software, and tools I use on a daily basis.
A follow-up to the split Cursor workflow: install Ollama on Manjaro with CUDA, pull coding models, wire up Aider and Cline for scoped local work — with honest limits on tool reliability, privacy, and when to fall back to cloud models.
Cursor Pro is best when it edits code, not when it thinks out loud. A practical split workflow — Perplexity for current research, ChatGPT for planning, Claude for review, Ollama for cheap tasks, and Cursor for multi-file execution — plus what actually counts against your quota.
Part two of the ecosystem blind spot series. The first post named the feeling; this one is the playbook — pain-driven discovery, pattern recognition, technology reconnaissance, and the habits that keep experienced engineers ahead of expensive gaps.
How omid.dev handles analytics, the contact form, webmentions, and other privacy-related features.
Terms for using omid.dev, its content, contact form, and discussion features.
After 15 years on Linux, I discovered zswap had been compressing inactive memory on my Manjaro laptop all along. A practical guide to checking zswap, zram, and memory compression on Linux, macOS, and Windows — plus a timeline of how we got here.
Step-by-step classroom paths for the Bio-Dynamics microbiome sandbox — allergy barrier defense, Candida pH balance, and the pre/pro/postbiotic lifecycle.
How Bio-Dynamics supports English, German, and Persian, keeps keyboard and screen-reader paths usable, and encodes lab checkpoints in the URL.