Sign in

Omid Farhang

@omid.dev
57 followers 41 following 162 posts

A Full Stack Developer, Husband, Fish Keeper as hubby, In Love with Linux Systems, Cannot live without Coffee | omid.dev | @omidfarhang@mastodon.social | امید فرهنگ

PostsRepliesMedia
Omid Farhang @omid.dev · 23/09/2026
A laptop that serves your app is a demo. It has not chosen a home. Generation made the first half cheap. Next you choose what you refuse to own: a platform your users already live in, one small machine, or a runtime you rent. g.omid.dev/YcRFC4Q #EngineeringLeadership
g.omid.dev
After Generation: Where the Product Lives
Cheap generation gets you a demo. Pick the easy host to build on — a platform your users already use, a small box you run, or a runtime you rent.
000
Omid Farhang @omid.dev · 22/09/2026
Angular route data still speaks “resolver.” Screens already speak signals + resource. Router Resources (22.2, preview) load independent payloads as a parallel graph—blocking when you need finished values, non-blocking when the template can render Resource state. g.omid.dev/aDS5o7R #Angular
g.omid.dev
Angular Router Resources: Route Data on the Same Graph as the Screen
Router Resources (Angular 22.2, developer preview) load independent route data as a parallel resource graph. Blocking routes hand over finished values; non-blocking routes hand over Resource inputs th...
000
Omid Farhang @omid.dev · 21/09/2026
Obsidian is a lens, not the archive. Open your research repo as the vault. Daily notes and the graph are views over the same Markdown Git already tracks. If a note only lives in the app, it failed. g.omid.dev/DPToNGd #PKM #Obsidian #Git
g.omid.dev
Obsidian on a Git Research Vault
Open the research repo as an Obsidian vault if you want links and a graph. Git still holds the Markdown. If a note matters, it must still read in a terminal, an editor, and a diff.
100
Omid Farhang @omid.dev · 13/09/2026
The skill list did not get a new bubble called AI. Senior still means you own the result. Generation made fluent, working-but-wrong the default first draft. g.omid.dev/MUjJBI3
g.omid.dev
Essential Skills When Generation Is Cheap
The skill list did not get a new bubble called AI. The senior job changed: you own output you did not type, you review at a higher altitude, and you decide where generation does not belong.
000
Omid Farhang @omid.dev · 09/09/2026
I interview frontend candidates for other companies. When I hire badly, they keep the person and I keep the reputation. Most bad hires are decided before the interview. Knowing what you are interviewing for is the job. g.omid.dev/3DivN1O #frontend #hiring
g.omid.dev
I Interview Frontend Hires for Other Companies
How I interview frontend candidates for a team that is not mine — intake with their lead, choosing the real level, and why I now weigh architecture, ownership, and AI judgment over syntax recall.
000
Omid Farhang @omid.dev · 28/08/2026
One AI chat is not a research workspace. A conversation is great at moving an idea. It is a poor place to keep one. Dump messy, contradictory notes in Git. Point the model at the files — not at the scrollback. g.omid.dev/cwhrarJ
g.omid.dev
One AI Chat Is Not a Research Workspace
Long-form research does not fit in one ChatGPT conversation. A Git repo of messy Markdown — inbox, concepts, counterarguments — lets ideas stay contradictory until you are ready to write.
000
Omid Farhang @omid.dev · 23/08/2026
An old game ran hot on HDMI and quiet on the laptop screen. Driver was fine. Native HDMI on this hybrid laptop is wired to NVIDIA, so the dGPU stays in the display path even when Intel is rendering. Don't start by changing drivers. First see which GPU owns the connector. g.omid.dev/qEO8Tfu
g.omid.dev
The HDMI Port Was Keeping NVIDIA Awake
On an Intel + NVIDIA hybrid laptop, native HDMI can keep the dGPU in the display path. That explains the fan noise — and may be a contributor to Chrome and Cursor freezes on this stack.
000
Omid Farhang @omid.dev · 19/08/2026
Have influence without becoming the backdoor. Cross-team trust is a senior-level asset. A scout returns with information. A shadow owner returns with obligations. Talk to anyone. Write it down. Take the decision back to the team. g.omid.dev/FK3SbYR
g.omid.dev
Have Influence Without Becoming the Backdoor
Cross-team trust is a career asset. Unofficial ownership is a career trap. How a senior brings feedback, protects UX, and stays on the team's side of the board.
010
Omid Farhang @omid.dev · 19/08/2026
Channel the scout. Keep the seat. Formalize the senior who hears other teams. Shared intake for commitments. Discovery stays open. The lead stays accountable for priority. Talk yes. Commit through the front door. g.omid.dev/wGhsMF4
g.omid.dev
Channel the Scout, Keep the Seat
Do not punish cross-team friendliness. Give the scout an official boundary: shared intake, no silent commitments, and polish on a budget.
010
Omid Farhang @omid.dev · 18/08/2026
When the best communicator becomes the backdoor. On a small team, the senior who talks to other teams is often the most valuable person in the room. The conversations are not the problem. Unowned commitments are. I call this shadow ownership. g.omid.dev/narboKZ
g.omid.dev
When the Best Communicator Becomes the Backdoor
On a small development team, the senior who talks to other teams may be the most valuable person in the room—until influence becomes unofficial ownership.
000
Omid Farhang @omid.dev · 15/08/2026
The frontend may run in an untrusted browser. The system that delivers it often runs with authority. npm install is execution. CI identities and release credentials are architectural boundaries. g.omid.dev/FSYcJ4s
g.omid.dev
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.
000
Omid Farhang @omid.dev · 11/08/2026
Good news: the Arch User Repository (AUR) write freeze has finally been lifted as of Aug 11. aurweb 6.5.0 is live, SSH/Git pushes and package adoption are back, but adoption now requires approval from a Package Maintainer.
110
Omid Farhang @omid.dev · 10/08/2026
AUR isn't down — it's write-frozen. Arch locked pushes after a third supply-chain wave that abused orphan package adoption. Timeline, how the trap works, and what to do on Manjaro/Arch: g.omid.dev/6A7oOph #Linux #ArchLinux #AUR #InfoSec
g.omid.dev
The AUR Is Frozen: Inside Arch's Third Supply-Chain Attack Wave
Arch Linux has frozen all AUR writes after a third wave of supply-chain attacks. What is blocked, what still works, how the Atomic Arch campaign operates, and what to do on Manjaro and other Arch-deri...
000
Omid Farhang @omid.dev · 08/08/2026
Manjaro AUR check keeps flagging cursor-bin, google-chrome & vscode out of date. Not a local bug — Arch froze package adoption after malicious AUR takeovers. Orphaned -bin packages stay stuck. omid.dev/notes/178622...
omid.dev
For about a week, every AUR check on Manjaro has looked like…
For about a week, every AUR check on Manjaro has looked like this: :: Searching databases for updates... -> Flagged Out Of Date AUR Packages: cursor-bin google-chrome visual-studio-code-bin there ...
000
Omid Farhang @omid.dev · 03/08/2026
A maintainable Linux command-line workspace is layers, not a perfect shell. Terminal, shell, multiplexer, SSH, and editor should stay replaceable. GNU screen and tmux still matter when a remote connection dies mid-work. g.omid.dev/ex0oPpv
g.omid.dev
A Maintainable Command-Line Workspace on Linux
Build a reproducible Linux command-line workspace with portable dotfiles, terminal, shell, multiplexer, SSH, and editor layers that remain maintainable across machines.
100
Omid Farhang @omid.dev · 31/07/2026
“Just add JWT” to localStorage ships. It demos well. And it trains teams to treat the browser as a safe vault. If JS can read your access token, so can XSS. OIDC + BFF / reverse proxy, short-lived server-side tokens, HttpOnly cookies: g.omid.dev/R3Guo03
g.omid.dev
Modern Auth Patterns for Angular Frontends (Beyond “Just Add JWT”)
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 b...
000
Omid Farhang @omid.dev · 31/07/2026
Angular PWAs make offline easy. Security doesn’t get the same one-liner. A long-lived cache can sit between an attacker and private data if you store everything. HTTPS + narrow SW scope, cache public shells not auth APIs, clear caches on logout: g.omid.dev/oWtGa46
g.omid.dev
Securing Angular PWAs in 2026
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.
000
Omid Farhang @omid.dev · 31/07/2026
Angular apps sit on CLI + a pile of third-party libs. Real risk often lives in a transitive package, not your component tree. Pipeline: SBOM every CI run → npm audit + ng update --dry-run → fail on high CVEs → notify Slack/Mastodon. g.omid.dev/RK3K05K
g.omid.dev
Dependency Risk, SBOMs, and Automated Security for Angular
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.
010
Omid Farhang @omid.dev · 30/07/2026
Angular sanitizes. That’s necessary and still not enough. CSP is the browser seatbelt — but Angular injects styles at runtime, so you need per-request nonces, report-only first, then drop unsafe-*. Practical path + companion scanner: g.omid.dev/cr5Zz8o
g.omid.dev
Content Security Policy (CSP) and Angular: Practical Patterns
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...
010
Omid Farhang @omid.dev · 28/07/2026
Client-side ≠ security-free. Your browser framework still owns sanitization, request protection, and SSR isolation. Three Angular CVEs as a case study for why framework patches matter. g.omid.dev/g2BIlvG #Angular #WebSecurity #Frontend
g.omid.dev
Why Client-Side Frameworks Need Security Updates
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.
000
Omid Farhang @omid.dev · 20/07/2026
One reason I've stuck with Manjaro: matray. A tray app + official news channel that respects your time. Small detail, big signal about product mindset. omid.dev/notes/178458...
omid.dev
I’ve always appreciated one small detail in Manjaro: matray.…
I’ve always appreciated one small detail in Manjaro: matray. As a long-time user, it feels like the distro respects my time by providing a simple tray app backed by a dedicated news source (https://ma...
020
Omid Farhang @omid.dev · 09/07/2026
TypeScript 7 is here: big speed gains, but adoption won't be even. Angular template checking, Vue, Astro, Svelte, and editor plugins still depend on the older TypeScript API path. My read: trial TS 7 in CI first, then editors, then framework tooling. g.omid.dev/PcBczud
g.omid.dev
TypeScript 7 Is Here: Fast, Exciting, and Worth Watching
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...
230
Omid Farhang @omid.dev · 29/06/2026
Part 2 of my Split AI Workflow series: local AI on Manjaro. Ollama + Aider + Cline for scoped refactors and monorepo chores. Cursor cloud when 7B models get stuck. Install steps, CUDA, honest limits, troubleshooting — no subscription hype. g.omid.dev/d1OsiXZ
g.omid.dev
Local AI on Manjaro: Ollama, Aider, and Cline Without Another Subscription
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 ...
141
Omid Farhang @omid.dev · 29/06/2026
Cursor Pro runs out fast if you treat it like ChatGPT. My split workflow: • ChatGPT → plan • Claude → review • Ollama → cheap tasks • Cursor → apply diffs New post: quota myths, local models on Linux, why RAM beats the NPU badge. g.omid.dev/CJUh3R5
g.omid.dev
How to Stretch Cursor Pro Further: A Split AI Workflow
Cursor Pro is best when it edits code, not when it thinks out loud. A practical split workflow — ChatGPT for planning, Claude for review, Ollama for cheap tasks, and Cursor for multi-file execution — ...
100
Omid Farhang @omid.dev · 25/06/2026
A few months ago I wrote about the ecosystem blind spot — not knowing what you don't know. The follow-up question was always: how do you find the important stuff *before* it's a 5-year bad habit? Wrote the playbook. g.omid.dev/GnnFYO3
g.omid.dev
After the Zoom-Out: A Playbook for Staying Current Without Burning Out
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 kee...
000
Omid Farhang @omid.dev · 24/06/2026
Most teams have load tests + monitoring. Fewer break one dependency on purpose and ask: does checkout still complete? Or does the browser silently confirm $0?
100
Omid Farhang @omid.dev · 24/06/2026
Checkout passes every test. Payment API returns empty body after 30s → UI confirms $0. Chaos engineering: when this fails, does the system absorb it? 3-part series (frontend + backend) + live checkout lab: g.omid.dev/qxPpL9v
omid.dev
Chaos Engineering: Principles and Practice
What chaos engineering is, how it differs from load testing and disaster recovery, the experiment loop, blast-radius controls, and game days — before you fault-inject backend services or browser apps.
000
Omid Farhang @omid.dev · 14/06/2026
en/de/fa + RTL, keyboard region shortcuts, URL-encoded lab checkpoints — share mid-simulation state with no backend. Final post in the Bio-Dynamics series. g.omid.dev/x2HIy7k #Accessibility #i18n #OpenSource
g.omid.dev
i18n, a11y, and Shareable Lab State in the Browser
How Bio-Dynamics supports English, German, and Persian, keeps keyboard and screen-reader paths usable, and encodes lab checkpoints in the URL.
000
Omid Farhang @omid.dev · 14/06/2026
82 stressors, 20 strains, 4 catalog tabs — data-first dashboard with hover impact preview and tests that catch silent no-op buttons. Post 4/5. g.omid.dev/uHLGE6i #TypeScript #Frontend #OpenSource
g.omid.dev
Catalog-Driven Dashboard: Strains, Stressors, and Action Impact
How Bio-Dynamics keeps 82 stressors, 20 strains, and four catalog tabs maintainable — and previews biome deltas before you click.
000
Omid Farhang @omid.dev · 14/06/2026
One Three.js scene: rotatable body map → fly into tissue cross-section. Instanced microbes, SCFA particles, immune haze tied to live sim state. No React/R3F. Post 3/5. g.omid.dev/IyBb76G #ThreeJS #WebGL #TypeScript
g.omid.dev
Macro/Micro 3D: One Scene Graph, Seven Tissue Builders
How Bio-Dynamics uses Three.js to fly from a rotatable body map into region-specific tissue cross-sections with instanced microbes and simulation-linked visual effects.
010
Omid Farhang @omid.dev · 14/06/2026
Bio-Dynamics sim layer: 30 Hz ticks, seeded PRNG, emergent inflammation, golden snapshot tests in CI. Educational — not clinical. Post 2/5 of the build series. g.omid.dev/boyAWHy #TypeScript #Simulation #OpenSource
g.omid.dev
Designing a Deterministic Microbiome Simulation Without Overclaiming Science
How Bio-Dynamics models barrier integrity, emergent inflammation, and microbe competition in a 30 Hz tick engine — with golden tests that keep the educational demo honest.
000
Omid Farhang @omid.dev · 14/06/2026
Most of my work is enterprise Angular. Bio-Dynamics is different — a 3D microbiome lab in the browser tied to health articles on my blog. 5-part series on how it was built. Post 1: why it exists. g.omid.dev/Efv0PTa #TypeScript #ThreeJS #OpenSource #EdTech
g.omid.dev
Building Bio-Dynamics: An Educational 3D Microbiome Lab in the Browser
Why I built a full-body microbiome sandbox — for education, open development storytelling, and exploring simulation and 3D outside my usual frontend lane.
000
Omid Farhang @omid.dev · 08/06/2026
A scalable frontend testing strategy starts with risk, not test types. What mistake are you trying to catch? That question tells you whether the test belongs in unit, component, integration, or E2E coverage. New: How to build a frontend testing strategy that actually scales. g.omid.dev/PUSlWc0
g.omid.dev
How to Build a Frontend Testing Strategy That Actually Scales
A practical frontend testing strategy for large teams: how to choose between unit, integration, component, and end-to-end tests in a real Angular codebase without creating slow, fragile coverage.
120
Omid Farhang @omid.dev · 08/06/2026
Flaky frontend tests are usually not random. They are tests depending on something they do not control: time, network, shared state, changing data, animations, or CI performance. New post: why frontend tests flake and how to fix them for good. g.omid.dev/8ECJvZO
g.omid.dev
Why Your Frontend Tests Flake and How to Fix Them for Good
A practical guide to reducing flaky frontend tests by improving isolation, waiting strategies, deterministic fixtures, test data, clocks, network control, and CI diagnostics.
010
Omid Farhang @omid.dev · 06/06/2026
I launched Omid Playground for the live companion demos behind my TechBlog articles. Each demo links back to the article and source code, so you can try the idea first, then read the walkthrough. playground.omid.dev #Frontend #Angular #WebDev
playground.omid.dev
Omid Playground | Live companion demos for omid.dev
Live companion demos for omid.dev technical articles. Try Angular, React, WebAssembly, Web Workers, micro frontends, Web Components, and CSS migration examples in the browser.
130
Omid Farhang @omid.dev · 04/06/2026
TIL: not all “CLI bugs” are bugs. Spent hours chasing weird behavior in a tool running inside Cursor. The issue wasn’t the tool, it was a Snap-installed version introducing a wrapper layer that behaved differently in subprocess environments. Did a native install. Everything became predictable again.
000
Omid Farhang @omid.dev · 03/06/2026
Building a tiny Linux app to explain desktop stutter. A hands-on Rust/Linux walkthrough: read /proc + /sys, parse Pressure Stall Information, build a small TUI, and turn kernel signals into something a desktop user can understand. g.omid.dev/uJPPO8M #Linux #Rust #DesktopLinux #Performance #Kernel
g.omid.dev
Building a Tiny Linux App to Explain Desktop Stutter
A hands-on Rust/Linux app walkthrough: build a small TUI that reads /proc and /sys, parses Pressure Stall Information, and turns kernel signals into an explanation for desktop stutter.
010
Omid Farhang @omid.dev · 02/06/2026
I’ve been on #Manjaro #KDE for years, but #Kubuntu 26.04 made me ask an unexpected question: did the distro I left quietly get better, or did I just learn #Linux better? A personal look at Ubuntu, Manjaro, KDE, AUR, #NVIDIA PRIME, and desktop Linux in 2026. g.omid.dev/MlHE7cZ
g.omid.dev
Ubuntu, Manjaro, and the Linux Desktop I Thought I'd Left Behind
After years on Manjaro KDE, I'm testing Kubuntu 26.04 again. A long-time Linux user's honest look at what changed on Ubuntu, what Manjaro still does well, and why hybrid NVIDIA laptops make the decisi...
000
Omid Farhang @omid.dev · 02/06/2026
Stop modeling screens with five booleans. If your UI has separate flags for loading, error, empty, retrying, and submitted, your template can render impossible states. The fix is not a clever @if chain. It is one honest screen model. g.omid.dev/fv90jQT #Angular #TypeScript #Frontend
g.omid.dev
Stop Modeling Angular Screens with Five Booleans
Most Angular UI bugs come from screens modeled as scattered flags. Replace loading, error, empty, and ready booleans with one explicit state model your templates and reviewers can trust.
040
Omid Farhang @omid.dev · 02/06/2026
Ich habe darüber geschrieben, wie sich Coding verändert, wenn man Vater wird. Nicht weil die Leidenschaft verschwindet. Sondern weil plötzlich kleine Hände, Fokuszeit, Schuldgefühle und echte Nähe mit im Raum sind. g.omid.dev/E88fEhZ #Vatersein #Entwicklerleben
g.omid.dev
Wenn ein Coder Vater wird: Zwischen Leidenschaft, Verantwortung und kleinen Händen
Tagsüber coden, nachts coden, Technologie als Leidenschaft und Identität. Dann kommt ein Kind — und plötzlich verändert sich die Frage nach Zeit, Balance und dem, was wirklich wichtig ist.
000
Omid Farhang @omid.dev · 31/05/2026
I wrote a small post about example-projects, the companion repo I’m using for suitable technical articles. When a full example teaches better than isolated snippets, the source code should be available to inspect, run, and adapt. g.omid.dev/uqqWXYO #WebDev #OpenSource
g.omid.dev
Why I Started Adding Full Source Code to My Blog Posts
A short note about the companion example-projects repository for omid.dev, where suitable technical posts now include runnable examples or complete focused snippets.
060
Omid Farhang @omid.dev · 29/05/2026
I made a repo for the code examples behind my omid.dev articles. It includes focused, runnable projects for Angular, GraphQL, Web Workers, Web Audio, micro frontends, Rust/WASM, TypeScript, real-time frontend patterns, and... Each one has its own README and setup notes. github.com/omidfarhang/...
github.com
GitHub - omidfarhang/example-projects: This repository contains sample projects used in my blog
This repository contains sample projects used in my blog - omidfarhang/example-projects
110
Omid Farhang @omid.dev · 29/05/2026
How I install Cursor IDE on Manjaro with the official AppImage. AUR was not stable enough for me, and there is no official Snap or pacman package yet. Launcher, desktop entry, and a safe one-command update script included. g.omid.dev/yAXBVd2 #Manjaro #Linux #Cursor
g.omid.dev
How to Install Cursor IDE on Manjaro Linux
A practical AppImage-based Cursor IDE installation guide for Manjaro Linux, including launcher setup, desktop integration, icon extraction, and a one-command update script.
000
Omid Farhang @omid.dev · 27/05/2026
Angular Is Quietly Becoming AI-Tool Friendly: What MCP Server Support Changes for Real Teams g.omid.dev/Hr8b0Ur
g.omid.dev
Angular Is Quietly Becoming AI-Tool Friendly: What MCP Server Support Changes for Real Teams
Angular's MCP Server tooling is not just an AI demo. It changes how teams can connect framework knowledge, local code, and coding assistants without losing their conventions.
000
Omid Farhang @omid.dev · 27/05/2026
The Hidden Cost of Nice Syntax: When Angular's New Template Features Make Code Harder to Reason About g.omid.dev/5O8Qglh
g.omid.dev
The Hidden Cost of Nice Syntax: When Angular's New Template Features Make Code Harder to Reason About
Angular's newer template syntax is powerful, but spread/rest, arrow functions, multi-case switches, and richer control flow need team rules before clever templates become maintenance debt.
000
Omid Farhang @omid.dev · 27/05/2026
Signal Forms Aren't Just a Forms API Update: They Change How You Model UI State g.omid.dev/12wzapy
g.omid.dev
Signal Forms Aren't Just a Forms API Update: They Change How You Model UI State
Signal Forms push Angular forms toward explicit state modeling, where validation, submission, async work, and derived UI state live in the same reactive graph.
000
Reposted by Omid Farhang
NetBlocks @netblocks.org · 26/05/2026
🫶 Welcome back #Iran! Metrics show a further rise in connectivity as mobile networks and other segments are reconnected to the global internet: • Filternet remains in place but can be worked around • WhatsApp now restricted, requiring circumvention • Some users still offline
Graph from NetBlocks showing network connectivity in Iran from 24 February 2026 up to 26 May 2026. The y-axis represents normalized connectivity, ranging from 0% to 100%, and the x-axis represents the date. The green line representing Iran's observed international internet connectivity is high during the initial time period, with a sharp drop on the morning of 28 February. The ongoing drop in connectivity aligns with a nation-scale internet blackout imposed by authorities after joint military strikes by the US and Israel. Further recovery is now visible. The minimum and current connectivity levels are 1% and 86%, respectively. The chart has a dark background with a red horizontal arrow labeled 'SHUTDOWN' indicating the disruption period, and the NetBlocks logo and Mapping Internet Freedom slogan in the lower left corner.
310362
Omid Farhang @omid.dev · 25/02/2026
“I didn’t know Corepack. I’ve never used Yarn.” After 15 yrs I hit the ecosystem blind spot and wrote a post about it: how senior devs can regain perspective, find what we don’t know, and keep up without burning out. g.omid.dev/HGHr81r
g.omid.dev
The Zoom-Out: When 15 Years of Code Meets the "Ecosystem Blind Spot"
It happened to me this morning. After 15 years in the trenches—building frontend architectures, dipping into the backend, leading teams, and surviving countless framework wars—I hit a wall. Not a tech...
100
Reposted by Omid Farhang
NetBlocks @netblocks.org · 26/01/2026
⚠️ Update: #Iran's internet blackout continues through its 18th day, obscuring the extent of a deadly crackdown on civilians. Meanwhile, gaps in the filternet are being tightened to limit circumvention while whitelisted regime accounts promote the Islamic Republic's narrative.
Graph from NetBlocks showing network connectivity in Iran from January 2, 2026 to January 26, 2026. The y-axis represents normalized connectivity, ranging from 0% to 100%, and the x-axis represents the dates. The green line representing Iran's observable internet connectivity, with a sharp drop on the evening of January 8 from high levels to near zero and only a short-lasting recovery on the morning of January 24. The drop in connectivity aligns with an internet shutdown imposed by authorities during protests across the nation. The minimum and current connectivity levels are indicated as 1% and 1%, respectively. The chart has a dark background with a red horizontal arrow labeled 'SHUTDOWN' indicating the period of disruption, which is ongoing.
03219
Reposted by Omid Farhang
NetBlocks @netblocks.org · 25/01/2026
🗓️ 17 days after #Iran introduced an internet blackout to mask a deadly crackdown: - minimal whitelisted service available to some users - circumvention allows messages to get through - brief connectivity spikes give false impression of wider restoration The shutdown continues.
05222