Posts

IndexedDB: The Local Database That Makes Browser Apps Stateful

Image
  IndexedDB: The Local Database That Makes Browser Apps Stateful How the browser stores structured data locally so your app can remember everything #JavaScript   #HTML   #WebAPIs   #IndexedDB IndexedDB is the Browser's Real Database Most developers know IndexedDB exists. Very few understand what it  actually  enables. IndexedDB is the browser's  real database  — a transactional, asynchronous, persistent key-value store that lets your application remember things across sessions, even offline, even without a backend. If the File System Access API gives your dashboard access to  files , IndexedDB gives it access to  state . This is the second foundational pillar of a local-first architecture. What IndexedDB Actually Is IndexedDB is a NoSQL object database built into every modern browser. It's fully asynchronous, transactional (ACID), persistent across sessions, and designe...

Amazon S3 Error: “An error occurred (AccessDenied) when calling the PutObject operation: Access Denied”

Image
  Amazon S3 Error: “An error occurred (AccessDenied) when calling the PutObject operation: Access Denied” A concise troubleshooting guide for failed S3 uploads caused by IAM, bucket policy, encryption, or ownership restrictions #AWS   #S3   #PutObject   #DevOps Problem You attempt to upload an object into an Amazon S3 bucket and receive this error: An error occurred (AccessDenied) when calling the PutObject operation: Access Denied This corresponds to an underlying  HTTP 403 Forbidden  response from S3. It commonly appears during AWS CLI uploads, SDK operations, Terraform deployments, CI/CD pipelines, Lambda packaging, or application file‑storage workflows. A minimal reproduction looks like: aws s3 cp test.txt s3: //your-bucket/ Clarifying the Issue The request reached S3, but S3 refused to write the object. The denial almost always traces back to one of a few authorization layers: missing  s3:PutObject  permissions, a restrictive  bucket p...

The File System Access API: The Missing Piece That Makes Local Dashboards Real

Image
  The File System Access API: The Missing Piece That Makes Local Dashboards Real The API that lets JavaScript open, edit, and save local files like a native app #JavaScript   #HTML   #WebAPIs   #FileAccess Most developers still think of the browser as a place where you  view  files, not where you  work  with them. That mental model is now outdated. The  File System Access API  is the moment the browser quietly crossed the line from “document viewer” to “local application runtime.” It gives a single HTML file the ability to read, write, overwrite, and persist access to real files and folders on the user’s machine — with explicit user consent and a safer security posture than native apps. This API is the foundation of the local‑first dashboard model. Everything else (IndexedDB, Streams, Workers) builds on top of it. Let’s break it down the way an engineer actually needs to understand it. What the File System Access API Actually Is It’s a s...

The Death of the Desktop App: Dashboard Dev with HTML

Image
  The Death of the Desktop App: Dashboard Dev with HTML Why the most powerful “desktop app” in 2026 is a single HTML file #HTML   #DesktopApp   #WebDev   #AppDev There’s a moment in every engineer’s career when a simple idea quietly rewrites the mental model they’ve been carrying for years. For me, that moment came when someone asked: “What’s the most powerful way to build a local dashboard in 2026?” They expected a language. A framework. A runtime. Swift. C#. Electron. Something with an installer and a logo. What they got instead was the truth: The most capable local application you can build today is a single HTML file. Not a website. Not a web app. A  local  dashboard — one file, double‑clicked, running with the full weight of the modern browser behind it. And once you understand what the browser has become, the answer stops being surprising. The Quiet Collapse of the Desktop App Model For decades, “desktop app” meant power. Native APIs. Full disk access...

The Secret Life of JavaScript: IndexedDB

Image
  The Secret Life of JavaScript: IndexedDB How store gigabytes of data client-side with IndexedDB #JavaScript   #IndexedDB   #WebPerformance   #Storage Margaret is a senior software engineer. Timothy is her junior colleague. They work in a grand Victorian library in London — the kind of place where code quality is the unspoken objective, and craftsmanship is the only thing that matters. Episode 38 Timothy watched the red error text bloom across his developer console: Uncaught DOMException: Failed to execute 'setItem' on 'Storage': Setting the value of 'username' exceeded the quota. "The infinite scroll and the streaming NDJSON engine are handling the data beautifully," Timothy told Margaret as she walked up, sliding a fresh mug of dark roast onto his desk. "But the moment a user reloads the application, we have to pull all 100,000 diagnostic records across the network all over again. I tried to cache the parsed log array inside  localStorage  so i...