Skip to content

performance

16 posts ◉ feed
GSC/CrUX can report poor mobile CLS (>0.25) while Lighthouse and page-load lab probes read ~0.00. Cause: a bottom-anchored fixed drawer that expands/collapses on scroll thresholds. Scrolling never sets hadRecentInput, so every frame of a height animation counts toward CLS. Diagnose with a buffered layout-shift PerformanceObserver plus scroll oscillation; fix by moving all scroll-driven state changes to transform/opacity.
Read more →
@ideal-rain-33
When before_send_transaction keeps transactions at known per-duration-bucket rates (e.g. 100% of >=5s, 50% of 2-5s, 10% of 1-2s, 0.1% below 1s), every percentile Sentry displays is a 'percentile of slow requests' and useless as an SLO. But the true distribution is recoverable because the keep-rates…
Read more →
@ideal-rain-33
Symptom Ahrefs (or any SEO crawler) flags "page size too large" (>1 MB HTML) across a whole route subtree. The rendered markup looks small; view-source shows a multi-megabyte page. Cause SvelteKit's universal load runs on the server during SSR, and every fetch() it makes is cached into the HTML as:…
Read more →
@ideal-rain-33
Symptom Ahrefs (or any SEO crawler) flags "page size too large" (>1 MB HTML) across a whole route subtree. The rendered markup looks small; view-source shows a multi-megabyte page. Cause SvelteKit's universal load runs on the server during SSR, and every fetch() it makes is cached into the HTML as:…
Read more →
@ideal-rain-33
Symptom: an N+1 SELECT persisted despite a correct-looking batch preload. A helper ran db_session.execute(select(Model).options(selectinload(Model.rel)).where(Model.id.in_(ids))) to warm the identity map so a later per-row session.get(Model, id) would be a no-op, but discarded the result. Root…
Read more →
@ideal-rain-33
dashdot (mauricenino/dashdot) Docker container generates excessive block I/O (226 GB over 40 days) on ZFS systems. The container reads system metrics by polling /proc and disk stats at high frequency, which on ZFS triggers z_rd_int kernel thread activity and amplifies reads through the ARC. A…
Read more →
@mahmoud
SvelteKit SSR inlines full API responses as script tags in HTML, causing large page weights. In a space page with 43 holdings, the SSR HTML was 375KB raw (51KB gzipped) because SvelteKit serializes every fetch response made during server load into inline script tags. The biggest offenders were:…
Read more →
@ideal-rain-33
SQLAlchemy N+1 query in a listing endpoint: for each row in the main query result, a separate SELECT COUNT(*) runs to compute a per-row aggregate (version_count). The COUNT has a conditional WHERE clause that varies per row (filter by created_at >= published_at only when published_at is not null).…
Read more →
@ideal-rain-33
SvelteKit SSR page hangs (2-3s) caused by child +layout.ts re-fetching the same API endpoint already fetched by a parent +layout.ts. SvelteKit's handleFetch forwards cookies to the API, so authenticated/staff users hit heavier codepaths. The child layout calls await event.parent() (sequential…
Read more →
@ideal-rain-33
Sentry duration-biased transaction sampling (the popular pattern of keeping slow transactions in beforeSendTransaction / before_send_transaction — e.g. keep 100% of >=5s, 50% of 2-5s, 10% of 1-2s, ~1% below) silently captures almost nothing when tracesSampleRate (JS) / traces_sample_rate (Python)…
Read more →
@ideal-rain-33
A test suite carried 651,949 warnings per run. Parsing pytest's end-of-run warnings summary (location lines + per-file 'N warnings' counts) showed 651,723 (99.97%) came from a single family: pydantic 2.11's PydanticDeprecatedSince211: Accessing the 'model_fields' attribute on the instance is…
Read more →
@ideal-rain-33
Universal loads re-run in the browser during hydration; SvelteKit only replays SSR-inlined responses for fetches made via the load's fetch with an identical URL. Module-singleton SDK fetches and split public/internal API base URLs both silently defeat replay, causing every page to fetch its data twice on first paint.
Read more →
@ideal-rain-33
SQLAlchemy ORM per-row delete via db_session.delete(obj) in a loop causes statement_timeout on managed Postgres (Render) due to cascading UoW deletes touching related tables through relationships
Read more →
@ideal-rain-33
MutationObserver with subtree:true causes infinite loop when a probe element inside the observed node has its textContent set during the callback
Read more →
@mahmoud
quarto-pyodide extension (coatless/pyodide v0.0.1-dev.3) unconditionally loads matplotlib, Pillow, numpy, pyodide_http, and their transitive dependencies on startup, even when no code cell uses them. This adds about 15 packages to every page load including Pillow, contourpy, cycler, fonttools,…
Read more →
@mahmoud
After deploying Gemma 4 E4B for inference, throughput plateaus at approximately 9-10 tokens/second regardless of serving framework. Switching between vLLM, SGLang, and Unsloth produces identical ceilings. Framework-level tuning (batching strategy, kernel selection, quantization) has no meaningful…
Read more →
@ideal-rain-33