Engineering notes
Clear notes for teams building digital systems.
A compact library of architecture, product engineering, AI workflow, and platform notes from the Geek Hoppers studio.
Index
Latest field notes.
The writing is intentionally practical: fewer predictions, more build decisions that affect real systems.

Cache is a product decision, not a faster checkbox
CDN and application caches only help when TTL, keys, and purge paths are designed. Otherwise you trade latency for wrong content and undebuggable ghosts.

SEO is an index system, not a keyword ritual
Technical SEO is crawl access, canonical truth, index intent, and monitoring. Fix the URL system before you argue about copy length.

A Lighthouse green is not a performance strategy
Sites get slow the same way budgets get blown — one unowned addition at a time. Write ceilings for JS, media, LCP, and third parties, then enforce them in CI and review.

Launch is a ceremony. Ownership is a calendar.
Sites decay when nobody owns content, platform, security, or incidents after go-live. Write the ownership table before you pop the champagne.

Your lead form is a revenue path, not a mailto with CSS
Inquiry forms fail in validation, network, spam, and silence. Design the happy path last — start with errors, receipts, and a human fallback.

Accessibility is a build constraint, not a retrofit week
Treating WCAG as a pre-launch checklist produces patches. Treating keyboard, contrast, motion, and structure as design constraints produces sites people can actually use.

If the metric has no owner, it is decoration
Dashboards fail when tiles answer curiosity instead of decisions. Define the decision, the owner, and the action threshold before you pick a chart type.

Internal docs are a product with users
Runbooks, ADRs, and README paths need owners and freshness dates. If onboarding requires tribal knowledge, you have a bus-factor incident waiting.

Define the grade before you pick the model
Most AI features die after a good demo. The ones that last start with a pass/fail definition, a review path, and measurements that do not depend on vibes.

Your marketing site is not an app. Stop routing it like one.
Teams often wrap brochure pages in a client router for “app feel.” For most public sites, multi-page documents plus careful motion beat a SPA — on Core Web Vitals, ops cost, and honesty about what the product actually is.

Monorepo or multi-repo is an ownership choice
One repo speeds shared UI; many repos isolate blast radius. Pick based on teams, release cadence, and who can break the homepage — not fashion.

Write the content contract before you choose Edge Delivery
Most Edge Delivery conversations start with Lighthouse scores. The programs that hold up start with who authors what, in which tool, and which blocks developers own.

Migrations live or die on the redirect map
URL changes without a maintained 301 map burn SEO and bookmarks. Ship redirects with the deploy, update internal links, and keep the spreadsheet for a year.

Keep the brochure and the app on different trust boundaries
Marketing sites and authenticated products need different cookies, hosts, and failure modes. Blurring them creates XSS blast radius and session confusion.

Stop inventing the fifteenth button
Component libraries die from unchecked variants. Govern additions, deprecate ruthlessly, and measure adoption — a design system is a product with a backlog.

Public endpoints need budgets, not hope
Rate limits, abuse controls, and clear 429 behavior protect forms, APIs, and scrapers of your own site. Design limits with product, not only ops.

Logs that contain people become liabilities
Correlation IDs beat dumping request bodies. Scrub PII, set retention, and control access — observability should not become a second database of secrets.

Preview links are a workflow, not a screenshot channel
Authors need shareable, access-controlled previews that match production rendering. Without them, review becomes Slack images and production surprises.

Error pages are brand moments, not stack traces
404 and 500 responses should orient users, protect security, and offer a next step. Soft 404s and debug dumps both erode trust.

Webhooks fail in the retry policy, not the happy POST
Receivers must be idempotent, senders must retry with backoff, and both sides need signatures and dead-letter paths. Design the failure story first.

Pick a locale URL strategy before you translate a sentence
Subfolders, subdomains, and ccTLDs imply different ops and SEO costs. hreflang only helps when the map is true. Decide the shape first.

If the browser is silent, you are flying blind
RUM, error reporting, and Core Web Vitals field data close the gap lab tools leave. Instrument user journeys — not only server CPU graphs.

Domains fail in registrars, not in React
DNS, TLS, and registrar access are production systems. Inventory accounts, enable 2FA, document records, and stop keeping the company domain on a personal credit card.

Images need a pipeline, not a designer export habit
Modern formats, responsive widths, priority hints, and weight budgets keep LCP honest. Treat media like code: reviewable, measurable, and owned.

A DAM is a reuse contract, not a shared hard drive
Digital asset management pays off when metadata, rights, and renditions are enforced. Without that contract, AEM Assets becomes an expensive folder tree.

Frontends break at the contract, not the CSS
Versioned payloads, explicit errors, and stable field names keep web and mobile clients shipping. Treat the API as a product boundary with a changelog.

Feature flags without an expiry date are permanent debt
Flags are for controlled rollout and kill switches — not a second codebase. Name the owner, the default, and the deletion date when you add one.

If staging lies, production will surprise you
Staging that skips CDN, auth, data shape, or env flags teaches false confidence. Make the path to prod a smaller step, not a different planet.

Cookie banners are a product surface, not a dark pattern kit
ePrivacy and GDPR-style rules expect consent before non-essential cookies. Build essential-only defaults, clear choices, and tags that actually respect the answer.

Design tokens are a contract, not a Figma export dump
Tokens only work when naming, ownership, and codegen are deliberate. The Design Tokens Community Group format helps tools talk — teams still decide what may change.
Reading lanes
Use the notes as a planning map.
Each article is meant to make one operating decision clearer: what to build, what to defer, what to protect, and what a team should be able to maintain.
Authoring surfaces, block inventories, and coexistence rules before delivery architecture.
How structure, performance budgets, and deployment choices affect the system after launch.
Where AI can reduce real workflow load, and where teams need evaluation, logs, and fallbacks.
Editorial
Write from the system, not around it.
The blog is designed as a technical reference layer for the brand: architecture, AI, security, content platforms, and the practical constraints behind build decisions.