← back to aduh!dev Engineering Notebook teardowns you can poke
/* three real systems, rebuilt as toys */

The work, with the lid off.

Every bullet on my CV is a decision under load. Here are three of them you can actually touch: type into the search, switch the shopper, fire a request. The numbers are real; the toys are honest.

01 · search spacing 02 · personalized ranking 03 · hot / cold cache
01

When “buku” returned a noodle seasoning

To make “eskrim” find “es krim coklat”, search concatenates adjacent words into extra tokens. Great, until partial matching let “buku” match “bumbu kuning sasha”, because buku hides inside bumbu·kuning. The fix: prefix matching (edge-ngram) on those generated tokens. Flip the switch and watch it behave.

try:
{{ pr.name }} {{ pr.verdictText }}
INDEXED TOKENS · generated
{{ c.pre }}{{ c.mid }}{{ c.post }} {{ c.genTag }}
{{ pr.verdictWhy }}
{{ summaryTitle }} {{ summaryBody }}
shipped: 4 new shingle fields · edge-ngram ≤8 chars, prefix >8 behind a feature flag, strict + explorative modes
02

Same hotels, different shopper, different №1

Static ranking shows everyone the identical list. The ML ranking I shipped into the hotel search results page scores each candidate against who's actually searching. Switch the shopper, watch the list physically re-sort and the score bars rebuild.

{{ personaBlurb }}
scoring signals: {{ l.lbl }}
{{ r.rankLabel }}
{{ r.name }} {{ r.tag }} · {{ r.price }}/night
{{ r.scoreLabel }}
ahh. it converted Personalized ranking lifted daily CVR +12.2% and top-5 hit rate +10.4% in a controlled A/B: the right room, higher up, for the right person.
03

Two clocks that kept flash sales standing

During a flash sale, hitting Elasticsearch on every request is how you melt the cluster. So data carries two clocks: a short hot window served from memory, a longer cold TTL that serves stale while it refreshes behind your back. The clock below loops; fire a request and see what it would pay.

CLOCK
0.0s
ZONE NOW
HOT
A REQUEST NOW PAYS
1msserved fresh from memory
HOT
STALE
MISS
hot exp · 2m
cold TTL · 5m
only a MISS touches the source, and it re-arms both clocks for everyone behind it. That's how −40% infra cost happens.
REQUEST LOG
{{ r.at }} {{ r.z }} {{ r.lat }}
{{ cache.logHint }}

That's the fun half of the resume. The rest (the timeline, the projects, the graveyard) lives back home.

← back to aduh!dev