<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>AnnMax — Technical Articles</title>
  <subtitle>Full-stack developer sharing 18 years of coding experience. Browser extensions, Web Crypto, image algorithms, PWA offline architecture, WebAssembly, WebGPU, and more.</subtitle>
  <link href="https://annmax1983.github.io/feed.xml" rel="self" type="application/atom+xml"/>
  <link href="https://annmax1983.github.io/" rel="alternate" type="text/html"/>
  <id>https://annmax1983.github.io/</id>
  <author>
    <name>AnnMax</name>
    <email>support@annmax1983.com</email>
  </author>
  <updated>2026-10-08T00:00:00Z</updated>

  <entry>
    <title>Full-Page Screenshots in Chrome Extensions: Stitching, Fixed Elements and Memory Limits</title>
    <link href="https://annmax1983.github.io/blog/full-page-screenshot-stitching.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/full-page-screenshot-stitching.html</id>
    <updated>2026-10-08T00:00:00Z</updated>
    <summary>captureVisibleTab quota pacing, scroll-and-stitch with devicePixelRatio, hiding fixed headers, canvas size limits, and the CDP captureBeyondViewport alternative.</summary>
    <category term="Chrome Extensions"/>
    <category term="Canvas"/>
    <category term="MV3"/>
  </entry>

  <entry>
    <title>TOTP from Scratch: Building an Offline 2FA Authenticator with Web Crypto</title>
    <link href="https://annmax1983.github.io/blog/totp-web-crypto-implementation.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/totp-web-crypto-implementation.html</id>
    <updated>2026-10-07T00:00:00Z</updated>
    <summary>Implement RFC 6238 in the browser with zero dependencies: Base32, HMAC via Web Crypto, dynamic truncation, otpauth URIs, and RFC test vectors.</summary>
    <category term="Security"/>
    <category term="Web Crypto"/>
    <category term="TOTP"/>
  </entry>

  <entry>
    <title>Perceptual Hashing in the Browser: Near-Duplicate Image Detection</title>
    <link href="https://annmax1983.github.io/blog/perceptual-hash-image-dedup.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/perceptual-hash-image-dedup.html</id>
    <updated>2026-10-05T00:00:00Z</updated>
    <summary>DCT-based pHash in pure JavaScript: grayscale downscale, bit packing, Hamming distance, and banded indexing for whole image libraries.</summary>
    <category term="Image Processing"/>
    <category term="Algorithms"/>
    <category term="DCT"/>
  </entry>

  <entry>
    <title>Parsing HTML Tables with Merged Cells: A Grid Normalization Algorithm</title>
    <link href="https://annmax1983.github.io/blog/html-table-merged-cells-parsing.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/html-table-merged-cells-parsing.html</id>
    <updated>2026-10-03T00:00:00Z</updated>
    <summary>A grid normalization algorithm for rowspan/colspan tables, multi-row header flattening, text extraction, and CSV export that opens safely.</summary>
    <category term="Algorithms"/>
    <category term="Data Extraction"/>
    <category term="CSV"/>
  </entry>

  <entry>
    <title>PWA Install and Offline Caching: What Actually Works in 2026</title>
    <link href="https://annmax1983.github.io/blog/pwa-install-offline-caching.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/pwa-install-offline-caching.html</id>
    <updated>2026-10-02T00:00:00Z</updated>
    <summary>Install criteria, the beforeinstallprompt dance, iOS Safari's separate rules, versioned service worker caches, and storage persistence.</summary>
    <category term="PWA"/>
    <category term="ServiceWorker"/>
    <category term="Offline"/>
  </entry>

  <entry>
    <title>Falling Sand on Canvas: Cellular Automata at 60 FPS</title>
    <link href="https://annmax1983.github.io/blog/falling-sand-canvas-simulation.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/falling-sand-canvas-simulation.html</id>
    <updated>2026-10-01T00:00:00Z</updated>
    <summary>Uint8Array grids, bottom-up iteration, ImageData rendering, and a fixed-timestep loop — the data layout that makes 60 FPS the default.</summary>
    <category term="Canvas"/>
    <category term="Performance"/>
    <category term="Simulation"/>
  </entry>

  <entry>
    <title>Git Beyond Commit and Push: Reflog, Bisect, Worktree and Interactive Rebase</title>
    <link href="https://annmax1983.github.io/blog/git-beyond-commit-and-push.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/git-beyond-commit-and-push.html</id>
    <updated>2026-09-16T00:00:00Z</updated>
    <summary>Practical Git that saves hours: recover deleted work with reflog, find the commit that broke production with bisect, and work two branches at once with worktree.</summary>
    <category term="Git"/>
    <category term="Tooling"/>
    <category term="Productivity"/>
  </entry>

  <entry>
    <title>Modern CSS You Probably Missed: :has(), Container Queries, @layer and Native Nesting</title>
    <link href="https://annmax1983.github.io/blog/modern-css-you-probably-missed.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/modern-css-you-probably-missed.html</id>
    <updated>2026-09-16T00:00:00Z</updated>
    <summary>Seven CSS features that replace JavaScript and preprocessor workarounds - with real examples you can ship today.</summary>
    <category term="CSS"/>
    <category term="Frontend"/>
    <category term="Web Platform"/>
  </entry>

  <entry>
    <title>Debugging Like a Senior Engineer: A Systematic Method That Actually Works</title>
    <link href="https://annmax1983.github.io/blog/debugging-like-a-senior-engineer.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/debugging-like-a-senior-engineer.html</id>
    <updated>2026-09-16T00:00:00Z</updated>
    <summary>Reproduce deterministically, read the whole error, cut the search space in half, work outside in, change one thing at a time, lock it in with a test.</summary>
    <category term="Debugging"/>
    <category term="Methodology"/>
    <category term="Productivity"/>
  </entry>

  <entry>
    <title>SQLite in the Browser: Building a Local-First Database with OPFS</title>
    <link href="https://annmax1983.github.io/blog/sqlite-opfs-local-first-database.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/sqlite-opfs-local-first-database.html</id>
    <updated>2026-09-15T00:00:00Z</updated>
    <summary>Run a full SQLite database in the browser using WebAssembly and OPFS. Persistent, fast, and completely offline. No server required.</summary>
    <category term="SQLite"/>
    <category term="OPFS"/>
    <category term="WebAssembly"/>
    <category term="Local-First"/>
  </entry>

  <entry>
    <title>WebGPU in 2026: Running AI Inference and Parallel Computing Directly in Your Browser</title>
    <link href="https://annmax1983.github.io/blog/webgpu-browser-ai-inference.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/webgpu-browser-ai-inference.html</id>
    <updated>2026-09-10T00:00:00Z</updated>
    <summary>WebGPU brings GPU-accelerated computing to the browser. Run AI models, process images, and perform parallel computation entirely client-side with WebGPU and WGSL shaders.</summary>
    <category term="WebGPU"/>
    <category term="AI"/>
    <category term="GPU Computing"/>
  </entry>

  <entry>
    <title>WebAssembly Image Processing in the Browser: From Pixels to Formats</title>
    <link href="https://annmax1983.github.io/blog/webassembly-image-processing.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/webassembly-image-processing.html</id>
    <updated>2026-08-20T00:00:00Z</updated>
    <summary>How to use WebAssembly and Canvas API to build high-performance, zero-network image processing pipelines entirely in the browser. Covers PNG, JPEG, WebP, AVIF conversion with real code examples.</summary>
    <category term="WebAssembly"/>
    <category term="Image Processing"/>
    <category term="Canvas API"/>
  </entry>

  <entry>
    <title>Browser Fingerprinting Explained: 30 Ways You're Being Tracked Online</title>
    <link href="https://annmax1983.github.io/blog/browser-fingerprinting-privacy.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/browser-fingerprinting-privacy.html</id>
    <updated>2026-08-15T00:00:00Z</updated>
    <summary>A deep dive into browser fingerprinting techniques — Canvas, WebGL, AudioContext, font enumeration, and more. Learn how websites track you without cookies and how to defend your privacy.</summary>
    <category term="Privacy"/>
    <category term="Browser Fingerprinting"/>
    <category term="Security"/>
  </entry>

  <entry>
    <title>Local-Only Image Processing Architecture via Offscreen Documents</title>
    <link href="https://annmax1983.github.io/blog/offscreen-image-processing.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/offscreen-image-processing.html</id>
    <updated>2026-07-01T00:00:00Z</updated>
    <summary>Zero-network image conversion, batch processing with memory management, CDP screenshots, and clipboard operations — all without a single fetch() call.</summary>
    <category term="Offscreen"/>
    <category term="Image Processing"/>
    <category term="Chrome Extensions"/>
  </entry>

  <entry>
    <title>Least Privilege Implementation &amp; Chrome Web Store Review Checklist</title>
    <link href="https://annmax1983.github.io/blog/least-privilege-review.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/least-privilege-review.html</id>
    <updated>2026-06-01T00:00:00Z</updated>
    <summary>activeTab dynamic injection, permission minimization, top 12 rejection reasons with fixes, and multi-browser compatibility strategies.</summary>
    <category term="Permissions"/>
    <category term="Chrome Web Store"/>
    <category term="Chrome Extensions"/>
  </entry>

  <entry>
    <title>Service Worker Resilience &amp; State Persistence Patterns for MV3 Extensions</title>
    <link href="https://annmax1983.github.io/blog/service-worker-resilience.html" rel="alternate" type="text/html"/>
    <id>https://annmax1983.github.io/blog/service-worker-resilience.html</id>
    <updated>2026-05-01T00:00:00Z</updated>
    <summary>Production patterns for handling Service Worker termination, persistent task queues, alarm-based timers, and ACK-based messaging in Manifest V3 extensions.</summary>
    <category term="ServiceWorker"/>
    <category term="Chrome Extensions"/>
    <category term="MV3"/>
  </entry>

</feed>
