MUNKANAPLÓ / WORKLOG

Not a case study. An engineering worklog.

Finished systems hide most of the engineering work behind them. This log keeps the problems, wrong turns, fixes, trade-offs and verification steps that do not fit on a portfolio card.

103 entries14 categories1/6 page

103 of 103 entries are currently available in English. The remaining entries stay in Hungarian while translations are reviewed in batches.

18 entries ezen az pageon · 103 total

Portfolio2 min

After 102 entries, we stopped managing translation backlog and made bilingual content the default

Translating the full Worklog showed that deferred localization is technical debt. After reaching 102/102, we changed the workflow so every new entry is written in Hungarian and English together and verified by the same QA chain.

Portfolio
i18nWorklogcontent architectureQA
Open entry →
Live screenshot of KampányMűvek
KampányMűvek2 min

WebP optimization moved from a site task into an Engine build feature

The same image problem kept reappearing in PageSpeed reports. Instead of writing another per-site script, Engine alpha.10 gained an automatic responsive WebP pipeline.

KampányMűvek
WebPSharpPageSpeedbuild
Open entry →
Live screenshot of KampányMűvek
KampányMűvek2 min

alpha.10 broke the site-upgrade CLI — so a regression test protects it now

After the new image feature, a lifecycle import regression broke `site-upgrade`. The fix did not stop at restoring the code: it added a regression test that executes a real upgrade path.

KampányMűvek
CLIregressiontestingsite-upgrade
Open entry →
Live screenshot of KampányMűvek
KampányMűvek2 min

Documentation, fleet upgrades and the CI supply chain all got stricter on the same day

The platform did not mature because of a new frontend feature, but because of three less visible layers: bilingual documentation parity, rollback-safe fleet upgrades and pinned release infrastructure.

KampányMűvek
docsrollbackGitHub Actionssecurity
Open entry →
Portfolio2 min

The portfolio gained a Worklog: the finished system does not tell enough of the story

Project cards show what I built. The Worklog also shows how: wrong turns, regressions, deployment decisions, security constraints and the details that do not fit into a CV.

Portfolio
Worklogportfoliostatic-generationdocumentation
Open entry →
Live screenshot of Gödi Sittes
Gödi Sittes + CRM2 min

Gödi Sittes: the Dzsoni design stayed, the legacy runtime went

The migration was not a redesign. The distinctive visual identity, HU/EN/DE content and working lead flow stayed in place while the old build and management layers were replaced by native KampányMűvek Engine v4.

Gödi Sittes + CRM
KampányMűvekmigrationi18nlegacy
Open entry →
Live screenshot of madmasel.hu
madmasel.hu2 min

Madmasel: we changed the platform before changing the site

For the Engine v4 migration of a live automotive site, the first requirement was a byte-preserving migration proof. The development system, CI/CD and rollback changed; the customer-facing artifact did not.

madmasel.hu
KampányMűvekmigrationCI/CDartifact
Open entry →
Live screenshot of madmasel.hu
madmasel.hu2 min

We did not keep an entire mail backend alive for one contact form

The old Namecheap/PrivateEmail-based PHP mail flow had lost the service it depended on. For a static site, FormSubmit proved to be a simpler and better-fitting replacement, with a dedicated thank-you page and CAPTCHA.

madmasel.hu
formsFormSubmitemailstatic-site
Open entry →
Live screenshot of KampányMűvek
KampányMűvek2 min

One command had to tell the truth about five sites

`fleet-status` could not be just another version list. Local source state, Engine commit, release, deployment and live-QA status had to appear together without reporting false success.

KampányMűvek
fleetobservabilityreleaseMake
Open entry →
Live screenshot of KampányMűvek
KampányMűvek2 min

The Engine and each site finally got separate lifecycles

KampányMűvek became a real platform when the shared Engine, generators and QA moved into their own repository, leaving each site with only its own content, templates, images and site-specific checks.

KampányMűvek
architectureplatformGitlifecycle
Open entry →
Live screenshot of madmasel.hu
madmasel.hu2 min

Consent Mode v2: a cookie banner is not a measurement strategy

For a live Google Ads campaign, a polished consent UI was not enough. Measurement commands had to follow the actual consent state, including phone-click and page-view conversions.

madmasel.hu
Google AdsConsent Modetrackingprivacy
Open entry →
Live screenshot of the Columbia Games CCM v2 storefront
Columbia Games · CCM v22 min

We did not want to copy 32,000 product images onto every developer laptop

Local CCM development needed real legacy catalogue images without mirroring the entire production media library. An allowlisted live-media proxy, local cache, patient image mode and detached warmup made that practical.

Columbia Games · CCM v2
mediaproxycacheDX
Open entry →
Columbia Games · CCM v22 min

Live QA has to test the SHA that is actually running

Post-deploy QA was tied to the exact production SHA, with a local Lighthouse fallback for PageSpeed API quota failures. A third-party service limit could no longer make a release effectively blind.

Columbia Games · CCM v2
live-QALighthousePageSpeedSHA
Open entry →
Columbia Games CCM v2 storefront
Columbia Games · CCM v22 min

A CCM deploy should not restart everything just because there was a commit

The production pipeline became migration-aware and incremental: database, runtime, web and SEO changes are detected separately so only the parts that actually need work are rebuilt or refreshed.

Columbia Games · CCM v2
CI/CDdeploymentmigrationsincremental
Open entry →
Columbia Games · CCM v22 min

The backfill was fast. Too bad the schema had to exist first.

For the library-history migration, schema creation and backfill became an explicit dependency. Unordered variants were removed and versioned migration IDs recorded the only valid execution order.

Columbia Games · CCM v2
databasemigrationbackfillordering
Open entry →
Columbia Games · CCM v22 min

The database backup belongs immediately before the migration, not sometime that day

The production migration runner gained a database backup taken at migration time, plus retention rules. A nightly backup can be far too old to serve as the recovery point for a release that changes live data.

Columbia Games · CCM v2
backupdatabasemigrationrecovery
Open entry →
Columbia Games · CCM v22 min

We moved deployment logic out of GitHub YAML so it could finally be tested properly

The production workflow had accumulated too much inline shell logic. Deployment decisions moved into a versioned, self-tested server script, leaving the GitHub workflow as a thin SSH orchestration layer.

Columbia Games · CCM v2
GitHub Actionsshelldeploymenttesting
Open entry →
Columbia Games · CCM v22 min

The latest deploy is not necessarily the latest good deploy

Change detection and recovery were too willing to treat the most recently attempted production SHA as a valid baseline. The fix was to model the last successful runtime SHA as a separate piece of state.

Columbia Games · CCM v2
SHAdeploymentrecoverystate
Open entry →