Chinh (lelouvincx) / Weekly Report - 2026-W18

Created Mon, 25 May 2026 00:00:00 +0000 Modified Mon, 25 May 2026 06:02:25 +0000
4163 Words

Weekly Report — Apr 27 – May 3, 2026 (friday mode)

Two-holiday short week (Thu Apr 30 Reunification Day + Fri May 1 Labour Day). Effective workdays = Mon/Tue/Wed for Holistics work; Sat/Sun spent on Smartclass releases and reading. Net: shipped Calendly BI rollout + tenant-lookup fix on the Holistics side, and two Smartclass releases (v0.4, v0.4.5) on personal side. Next week’s MRR exchange-rate work is still zero-progress (3-week carry-over).

  • Work

  • Internal

  • DONE — Ingest full Calendly data into BigQuery (DAT-283, #P2 ) — closed Apr 28.

    • BI-layer rollout PR internal-aml-project#78 merged Apr 28: migrated dts_106_sales_leads and aml_visit_trial_funnel to the new fct_calendly_bookings model (grain = event × attendee × rep); 4 dashboards re-mapped (rep_calls, [sales] Level 0 - Deals drill-down, Quinn sales_pipeline, Vincent archived); deleted three legacy models (domain_calendly_demo_call_bookings, dim_demo_calls, dim_onboarding_calls).
    • Semantic shift: consolidated count_demo_calls / count_onboarding_calls into a single count_calls metric (count_distinct(event_id)) — group calls now count once instead of per-invitee. Filter on primary_call_category ('Sales' / 'Retention') for demo vs onboarding.
    • Shipped a new AI skill analyze_rep_calls.skill.aml so chat queries auto-route to dts_106_sales_leads and the right metric/filter (Ampcode).
    • Stakeholder comms (Ampcode plan): #data announcement, per-stakeholder DMs to Vincent, Dave, Quinn, anh Dong, Thuan; closed the year-old Vincent thread with a 5-use-case briefing on the new Rep Calls dashboard. Posted in #data-lead-analytics.
    • Companion to dbt PR #853 (already merged in W17).
  • DONE — Fix Tenant Lookup ‘User List’ widget (DAT-585, #P2 ) — closed Apr 27.

    • PR internal-aml-project#77 merged Apr 27. Root cause (Ampcode): domain_holistics_users.tenant_skey > domain_holistics_tenants.skey was disabled in Dec 2023 to avoid join ambiguity; the User List widget added Jun 2025 was unaware and routed through fct_activities.owner_id, leaking internal admins (dong.ln, quinn, …) on impersonation/trial-extension activity.
    • Fix: re-enable the relationship in tenants_features_usage.dataset.aml. Verified via dependency analysis across 8 dashboards that activity-anchored widgets (v_vg28, v7–v11) still pick the direct path; user-anchored widget now joins users → tenants directly. Triggered by Slack report.
  • WAITING (round 1 done) — Review DAT-584 (dbt#860, #P2 ).

    • PR fixes the deploy_dbdocs flow that broke after the Calendly consolidation in PR #853 (stale relationships.dbml references to removed fct_demo_call_bookings.event_uuid / fct_sales_leads.demo_call_skey).
    • Concern flagged in PR: relationships.dbml is manually maintained with no CI validation — proposed adding a CI check against the dbt catalog so future renames fail at PR time, not at runtime in deploy_dbdocs.
  • IN-PROGRESS — Review CircleCI PRs for anh Dong (DE-214, #P1 ).

    • Prefect PR #397: review done.
    • dbt PR #858 (DAT-581 — CircleCI mart layer): drafted detailed review notes locally via Ampcode but didn’t post to PR — slipped due to BuyCo + Wamly P1 escalations on Wed. Findings ready to ship Mon W19:
      • Missing unique/not_null tests on circleci_jobs.id and job_key; circleci_tests has no row-grain test despite cross join unnest(metadata.test_metadata) fanning out (rspec-retry → up to 32 attempts/test). Recommend composite unique on (job_key, spec_file, spec_name, attempt_number) + document grain.
      • Clustering: cluster_by = ['name'] is fine (129 distinct names / 1.7M rows). Suggested ['project_name', 'name'] for cross-project pruning (non-blocking).
      • Partition-key change last_created_at → job_started_at requires --full-refresh; companion Prefect PR includes the backfill flow.
      • cross join unnest silently drops ~5.9% rows where test_metadata is empty (failed test suites). Recommend LEFT JOIN UNNEST or expose a has_test_results flag.
      • Selector drift: removing dom_circleci__* breaks dom_circleci__tests+ selector in the Prefect backfill — needs rename.
  • TODO — 1Win duplicate-customer check (Slack, #P2 ). Quinn DM Apr 28: “I am confused about 1win. It seems that in our zoho billing, they were recorded as different customers.” Need to investigate whether 1Win has multiple Zoho customer records and reconcile with the churn / MRR pipeline. Not yet started.

  • NOT STARTED (carry-over W16/W17/W18) — MRR exchange rate work (DAT-576, #P1, manager priority). Now 3 weeks open; per [[Priority Rules]] this triggers the forcing-function rule. Action committed for next week: timeboxed Mon AM design session + Tue Linear scoping comment, or formally hand back to anh Triet for re-scoping.

  • TODO — Set up GitHub App for bi.holistics.io (#P2 ) — captured forward in [[2026-05-25]]. Net-new item, not yet scoped.

  • Presales

  • DONE — BuyCo ticket triage (Slack, #P1, customer [[BuyCo]]) — closed Apr 29. Stakeholders: Xairo (PM, main contact), Luc (Head of Data), Ahlam (Sr Data Eng), Vadi (BI Analyst), Rodolphe (Data Analyst); stack = dbt Core + MotherDuck.

    • Watched the demo recording — captured 6 questions/observations from the call: caching mechanics with MotherDuck push-down (3:34), AQL UX friction even with SQL background + AI not reliable (6:54), filter hide/show toggle (48:30), AML/AQL open-source vision question (1:06:51), customer theming (1:10:42), and the recurring “give us a sample best-practice project to learn from” ask (1:21:30).
    • Decomposed Chukwudi’s open-issues Notion page into 14 items, replied in 14 separate Slack threads in #holistics-buyco-external plus a dedicated AMQL-vision reply. Triage outcome (Ampcode triage, Ampcode product routing):
      • Workarounds shipped (8 items): column auto-size dropdown (3, 8, 12), conditional formatting with dummy condition for fixed coloring (4), drill-through / text widget HTML+CSS for action buttons (6), filter mapping for cross-tab filtering (7), Markdown/HTML in text widgets (9), default cache settings to reduce warehouse hits (13).
      • Product gaps formally routed to PMs / squad #C0967GBSKRP (4 items): bulk formatting (1), custom format save/reuse (2), always-color column (4), select-all field picker (11). Vy Huynh + Hien Nguyen (Amyra) confirmed item 1+2 overlap with the in-flight “data format enhancement” project; Di Hoang flagged the Field-vs-Viz format complexity needs a discovery session.
      • Investigations open (2 items): drilldown perceived as needing refresh (10) — requested screen recording to confirm bug vs UX confusion; date functions / period comparison (14).
      • AMQL vision reply (Item 1.06:51 from the call): framed AQL as “SQL++” (compiles to SQL); not open-sourcing the language; no native cube.dev DSL translator yet.
    • Anh Huy’s framing: “active prospect that’s evaluating us (high chance of conversion), please work with some urgency.”
    • LEARNING: For vague / overwhelming tasks (the 14-item Notion page felt blocking), time-block + decompose into the smallest concrete next step, then act. Captured in [[2026-04-30]] after the Wait But Why procrastination article.
  • TODO — Onboarding call with Wamly (Slack, #P1, customer [[Wamly]]) — slipped into next week. Re-scheduled in [[2026-05-04]] .

    • Deal context (Ampcode prep): South African SaaS recruitment/HR platform, ~120 enterprise clients, replacing QuickSight on Redshift. Trial expires Tue May 6 (this is W19 — time-sensitive). Win prob ~40%. Champion: Farren Maré (COO, decision-maker); technical: Stephen Roberts; owner: Wudi.
    • 4 use cases: internal BI (~10 builders), standalone shareable links with RLS+password (knockout if drill-down missing), embedded analytics (~6 months out), client self-serve (Phase 3).
    • Pricing: ~150 external + 30 internal users, ~€2,400/month base + ~€18/user/month (8% discount on first 150). Future embedded tiers €36K/€72K/€144K/yr.
    • Watch-out (Vincent flagged): do NOT mention internal stance that Holistics won’t support interactions on shareable links. Pivot drill-down has 4 levels (project → candidate → stage → candidate URL) — this is THE critical gap. Discovery recording timestamps 11:30 + 15:51 cover the knockout discussion.
  • Personal / Tooling

  • DONE — Set up CLI client for Cloudflare R2 upload (Apr 27, P3, [[Personal]]). rclone configured against the secondbrain R2 bucket; r2up zsh helper auto-routes uploads to r2:secondbrain/YYYY/MM/<md5>.<ext>, returns a media.secondbrain.lelouvincx.com URL, and copies it to clipboard. Streamlines image attachments in Logseq notes (Ampcode). All week’s images (procrastination, ggsql, bonsai) were uploaded via this path — instant feedback that the tool was worth the setup.

  • DONE — Install the official Holistics skill (Apr 28, P2, [[Personal]]). Installed holistics/skills marketplace via Claude Code (holistics-reporting + holistics-development). Found and fixed a YAML frontmatter bug — unquoted colons in description broke strict loaders like Amp — merged upstream as holistics/skills#4 bumping plugin to 0.0.4 (Ampcode).

  • DONE — Install RTK rewrite hook (Apr 30, P3, [[Personal]]) — Ampcode. Ported the Claude-Code shell hook to an Amp Plugin in TypeScript at ~/.config/amp/plugins/rtk-rewrite.ts. Listens on tool.call for Bash and uses the modify action to substitute find/ls/grep/... with their rtk equivalents (exit-code protocol: 0 auto-allow, 1 passthrough, 3 ask+rewrite). Requires PLUGINS=all env var (Plugin API still opt-in). Smoke-tested with amp -x 'Use the Bash tool to run: ls -la /tmp'.

  • DONE — Install Caveman skill and use for a while (May 3, P3, [[Personal]]) — GitHub source, Ampcode. Ultra-compressed agent communication mode (~75% token reduction). Installed via the standard agent-skills/remote-skills.yaml mechanism + sync-skills.sh --remote (PR agent-skills#16). Intensity levels: lite / full (default) / ultra / wenyan-{lite,full,ultra} for classical Chinese. Useful for high-volume runs; this Friday report deliberately stays in verbose mode for human readers.

  • DONE — Smartclass v0.4 — image-based answer extraction (May 3, P1, [[Smartclass]]). Headline call: skipped Tesseract.js OCR in favor of multimodal LLM (Grok 4.1 Fast via OpenRouter). Rationale: better handwriting handling, zero client-side bundle (~2MB WASM saved), schema-aware extraction, ~$0.0007/submission. Architecture: students upload/capture a photo → worker proxies to vision model with exercise schema → returns {q_id, sub_id?, answer, confidence} → frontend pre-fills form for review. Originals stored in R2 indefinitely for teacher audit. New table submission_files, new endpoint POST /api/submissions/:id/extract (20MB cap), models = grok-4.1-fast (default) / gemini-2.5-flash / gpt-4o-mini. PRs A–D (Planning · PR #53 · PR #54 · PR #55).

  • DONE — Smartclass v0.4.5 — exercise UX polish (May 3, P1, [[Smartclass]]). Inserted between v0.4 and v0.5 (lectures), driven by Shub.edu.vn benchmarks. Scope: pre-start landing page (submission created on “Start” click instead of mount), two-column take layout with sticky sidebar / mobile bottom-sheet, 5-column question nav grid with status dots, results summary route at /student/submissions/:id/summary, review-page sidebar with per-question status table, skipped-vs-incorrect visual distinction (grey vs red ), MCQ deselect button, default 150% root font-size (reclaim margin whitespace), shared file-dropzone.jsx primitive, model allowlist trimmed to mistral-small-3.2-24b-instruct (new default) + grok-4.1-fast. Mobile timer regression risk mitigated: timer still derives from server-side started_at; sessionStorage persistence moved to /take mount; integration test added in PR D (Mobile timer fix Ampcode · PR #56–#59 review · Planning). Two same-day releases on the holiday weekend — unusually high personal-project velocity.

  • DONE — Set up Drata and remove Vanta (Apr 23, P1, Misc) — carry-in from W17. Notion.

  • DONE — Tax checking (Apr 23, P1) — carry-in from W17.

  • Learning & Notes

  • LEARNING — For vague tasks, time-block and force a concrete first step. Triggered by re-reading Wait But Why — How to Beat Procrastination. Quote that landed: “Procrastinators love planning. But when procrastinators plan, they like to do it in a vague way that doesn’t consider details or reality too closely, and their planning leaves them perfectly set up to not actually accomplish anything.” Applied to the BuyCo 14-item triage — instead of “review BuyCo Notion page” I broke it into 14 micro-tasks (1 Slack thread each) and shipped them in a single Wednesday afternoon. Direct evidence the principle works.

  • NOTE — Customer communication framing: try framing as “here is the recipe, happy to pair if helpful” instead of “I’ll do it for you”. Directly addresses the W17 Showbie + Basata silence pattern. Capture for next manager 1-on-1 and W19 presales touch-points.

  • NOTE — Wes Kao newsletter — workplace communication. Subscribed; first read this week was How to Be Concise — central question: “What is the most important thing to say?” Pairs with last week’s “Ask for no, don’t ask for yes”. Added to the recurring reading rotation.

  • READ — ggsql alpha release (Posit) ([[Data Visualization]]). Declarative dashboard-as-code, similar in spirit to Shaper (noted Feb 24). Example syntax:

    VISUALIZE island AS x, species AS color FROM ggsql:penguins
    DRAW bar
    

    Interesting because of the LLM-friendly / markdown-embeddable angle (analogous to Mermaid for charts). Worth tracking — could become a referenced pattern in our docs revamp / “vibe analytics” conversation.

  • READ — Column-level lineage going from differentiator to table stakes. Two LinkedIn posts back-to-back: Adam Lichtenstein on automatic CLL with DuckDB and the dbt-erd author’s post. With coding agents, a single dev can ship a credible v1 over a weekend — see docglow. Implication for Holistics: lineage becomes a hygiene feature, not a moat. Worth raising during product/positioning discussions.

  • READ — How do you make a chart? (benn.substack) ([[Vibe Analytics]]). Argument: dedicated charting tools may get displaced by “open Claude Code, ask it to make a custom dashboard in JS/Python” — and AI is increasingly good at “interpreting the vibes” (text/audio/image aggregation). Useful framing for Holistics’ AI roadmap and for the AMQL-as-canonical-spec angle (BuyCo asked nearly the same vision question on Wed).

  • READ — Ask HN: Is building a solo business impossible? + Ampcode reflection thread.

  • NOTE — Writing is thinkingHN thread. If I outsource journal writing to an LLM I stop thinking. Self-rule: daily journals are 100% me; LLM is fair game for boilerplate / first drafts only.

  • NOTE — The Beauty of Bonsai Styles (Longwood Gardens) — types: Chokan (formal upright), Moyogi (informal upright), Shakan (slanting), Kengai (cascade), Yose-ue (forest). Personal favourites: Chokan and Yose-ue.

  • NOTE — Health is going down. Sat May 3 badminton: short 30-min session and breathing was already laboured. Compounding signals (W17 cold + low energy this week). Intervention: bring back short night jogs (post-work, lower-temp window), eat before exercise.

  • NOTE — Idea: auto-export a dashboard PNG and post to GitHub PR on every dashboard change. Blocked by absence of a public PNG-export endpoint in Holistics API docs — file as a product feedback item.

  • NOTE — Product feedback collected on Apr 28 (3 separate items): PR link loss when toggling open→draft, YAML parsing error in skills repo, inconsistent manual-filter mapping syntax. All logged in internal Slack threads (1, 2, 3, 4).

  • Next Week (W19 — May 4–10)

    Sourced from [[Backlog]] + carry-overs. Ordered P1 → P3 per [[Priority Rules]].

  • P1 — Must Do

    • Internal — MRR exchange rate (DAT-576) — 3-week carry-over (W16 → W18). Forcing function: Mon AM design session for dim_exchange_rates + Tue Linear scoping comment. If still blocked by Wed, escalate to anh Triet for re-scoping.
    • Internal — Resolve DAT-555 follow-up (carry-over). Captured in [[2026-04-27]].
    • Internal — Resolve DAT-556 dbt test failure (carry-over). Root cause already analysed Apr 22 (Ampcode) — apply the fix.
    • Internal — Close out CircleCI dbt PR #858 review round 1 for anh Dong. Carry-over from this week.
    • Presales — Wamly onboarding call (slipped from W18). Hard deadline: trial expires Tue May 6 — must land call before then. Re-confirm slot Mon AM; support Wudi as note-taker / product feedback capture. Drill-down on pivot is the knockout (4-level project → candidate → stage → URL). Notion deal page.
  • P2 — Should Do

    • Internal — 1Win duplicate-customer check (DM). Timebox 1h. Carry-over from W18.
    • Internal — Lead Funnel by Sales Motion (DAT-560) — 5-week carry-over (since W14). Now that Calendly BI layer is live, re-evaluate; if still blocked, formally backlog with a date. Do not let this drift again.
    • Internal — Increase data freshness (DAT-499) — manager P3.
    • Internal — BI cleanup: delete [WIP] Job Queue Performance 3.0; migrate v2 + Report Job Queue Performance Monitoring to 4.0. Carry-over.
    • Internal — Review DAT-584 round 2 (dbt#860) once author addresses round 1.
    • Internal — Set up GitHub App for bi.holistics.io [[2026-05-25]]. Scope first.
    • Presales — Track Basata (Taha) follow-up on anh Huy’s dual-dashboard plan (thread).
    • Personal — Self-reflection + CV update for 2026 H1 performance reviewelevated from P3. PR cycle is coming up; need a reflection draft + refreshed CV before manager check-in. Block out next weekend (Sat May 9 + Sun May 10) for deep-work session.
  • P3 — Nice to Have

    • Docs — Add demo video for local dev — wait for Khai To’s MCP demo. 3-week carry-over (W15) — apply forcing function: 30-min scoping draft this week, otherwise formally backlog.
    • Personal — Review and update [[Personal Context]] (new in backlog).
    • Personal — Research 1Long alternatives for emergency savings.
    • Teaching — Find a football dataset for Duc Anh (carry-over).
    • Read — Wes Kao “Levels of detail in communication”.
    • Read — Modeling Patterns docs (Presales).
  • Career & Personal Consulting

  • Progress Review (Start / Stop / Keep)

    • Keep — High-leverage triage on Mon/Tue. Two enterprise-grade items shipped (Calendly BI rollout, Tenant Lookup fix) before the Wed P1 escalations landed. The reorder-on-the-fly to BuyCo + Wamly was correct: customer-facing P1 outranks scoped internal P1.
    • Keep — Two Smartclass releases on the holiday weekend. Personal projects shipping is a real signal you have residual energy when context-switching is removed; use this to inform W19 focus blocks.
    • Keep — Wait But Why → BuyCo decomposition. You read the article, identified the vague-task pattern in your own work the same day, and applied the fix immediately (14 micro-threads). That’s the rare cycle of insight → action within hours rather than weeks.
    • Start — Apply the 3-week forcing function to MRR exchange rate next week. [[Priority Rules]] says: schedule it on a specific day, or formally hand back. Chose Mon AM. Hold the line.
    • Stop — Doing the comprehensive triage but skipping the small follow-ups. dbt PR #858 round 1 was the cheapest item on the list and it slipped. Pattern: when a P1 escalation lands, you drop the small P1 task instead of the big P2 task. Next time, ship the 30-min review first, then context-switch.
  • Workload observations

    • Imbalance: Internal (~60%) + Presales (~25%) + Personal/Smartclass (~15%). Personal output is unusually high for a work week — almost entirely on the holiday Sat. Healthy as a one-off; not sustainable as a weekly default if it eats into recovery.
    • Carry-over hygiene is degrading. MRR (3w), Lead Funnel (5w), Demo video (3w) are all overdue per [[Priority Rules]]. If next week’s forcing function doesn’t move the needle, the underlying issue isn’t time — it’s scope ambiguity. Worth a 15-min “what’s actually blocking” pass on each item before starting.
    • Project-glossary mismatch: this week’s tasks all map cleanly to canonical [[Projects]] (no flags). Backlog has a NEW project signal: [[Smartclass]] is now a recurring P1 contributor — consider giving it a fixed weekly time-box rather than letting it bloom on holidays.
  • Personal well-being

    • Health signal is real. Sat badminton breathlessness + W17 cold + low Mon–Wed energy = a 3-week downward trend. Reintroduce: short night jogs (3x/week, post-work / lower-temp window), pre-workout meal rule, no late-night gaming (W17 commitment — verify it held).
    • Holiday weekend was productive but not restful. Two Smartclass releases on May 3 means you traded rest for shipping. Next weekend (May 9–10) is now booked for the H1 self-reflection + CV refresh — that’s another non-rest weekend. Keep at least the Sat morning slow + skip Smartclass commits to avoid two-in-a-row burn signal.
  • Career development

    • Pattern of compounding small principles: dbt deprecation 3-phase rule (W17), customer comms reframe (W18), vague-task time-block (W18). These are turning into a personal “playbook” — consider promoting them out of journals into a permanent [[Principles]] page so you (and future juniors / Thuan) can reference them.
      • What “compounding” means here: each principle is small, cheap to write down (one trigger + one response), and pays back every time the trigger reoccurs. The asset isn’t any single rule — it’s the growing index. Recurring frictions (a deprecation, a customer going silent, a vague Notion page, a low-energy week) get converted from “think it through again” into a reflex. The cost of capture is one journal bullet; the payoff is N future incidents.
      • The W17 → W18 linkage is the real signal, not the count. Each rule was forged in a specific incident, then validated within days when the next occurrence appeared:
        • dbt deprecation 3-phase rule ([[Weekly Report - 2026-W17]], Ampcode T-019da543). Phase 1 deprecate in code, phase 2 remove the .sql, phase 3 drop the table. Don’t sit between 2 and 3 — AML references BQ physical names, so removing the .sql only stops refresh and leaves the table silently misleading consumers. Trigger re-fired this week during the Calendly cleanup (3 legacy models deleted in PR internal-aml-project#78) — applied without re-deriving the reasoning.
        • Customer comms reframe ([[2026-04-27]]). “Here is the recipe, happy to pair if helpful” > “I’ll do it for you”. Forged from the W17 Showbie + Basata silence pattern (both went quiet after we volunteered hands-on work). Already shaped the BuyCo 14-thread triage tone this week — replies were structured as workarounds + screen-recording asks, not “I’ll log in and fix it for you”.
        • Vague-task time-block + decompose ([[2026-04-30]], Wait But Why). Insight on Wed AM, applied Wed PM to the 14-item BuyCo Notion page. Cycle of insight → action in hours, not weeks. That’s the rare case worth noticing — most reading doesn’t convert, this one did because the trigger was already on the desk.
      • Adjacent principles already canonical — these prove the pattern works at the page level, not just journal-bullet level:
        • [[Priority Rules]] — 3+ week carry-over forcing function (elevate-and-schedule OR formally backlog). Already firing on MRR exchange rate next week.
        • [[Health Rules]] — sleep > productivity, illness = hard stop on day 2, no gaming after 18:00 on weeknights, eat-before-exercise, 3x night jogs, weekend discipline.
        • W18 additions still living in the report: “writing is thinking” (journals 100% me, LLM only for boilerplate) and “small P1 ships before big P2 context-switch” (forged from the dbt PR #858 slip when BuyCo + Wamly P1 escalations landed).
      • Concrete proposal — create [[Principles]] as a triage page, not a final home. Confirmed this is needed, but it is not the ultimate solution. Treat [[Principles]] as the inbox / staging area for heuristics gained from experience: anything I notice once gets dropped here in a low-friction format. Once a heuristic is mature (survives 2+ occurrences and has a clear domain), route it to the dedicated page:
        • prioritization / scheduling → [[Priority Rules]]
        • sleep / illness / movement / energy → [[Health Rules]]
        • (future) work-craft pages may emerge — e.g., a [[Communication Rules]] for the customer-comms reframe + Wes Kao learnings, a [[Code Review Rules]] for the small-P1-first heuristic.
      • Format per entry in [[Principles]]: one-line trigger, one-line response, backlink to the journal note where it was forged, and a status field — triage (just captured) → routed → [[Page]] (moved out) → archived (didn’t survive second use).
      • Bar for promotion out of triage: a heuristic must fire a second time in real work before it earns a spot on a dedicated page. Stops the index from bloating with one-off observations dressed up as principles.
      • Some heuristics belong outside the second-brain entirely — they should contribute back to team-owned docs:
        • dbt deprecation 3-phase rule → propose adding to the dbt development docs (holistics/dbt README or contributing guide). It’s not a personal heuristic — it’s a team correctness rule and should outlive me.
        • Customer comms reframe (recipe-not-IOU) → propose adding to presales comms playbook / a CS onboarding doc. Directly addresses the W17 silence pattern that is not unique to my threads.
        • Small P1 ships before big P2 context-switch — could land in a team on-call / escalation handling note.
        • Routing to team docs is a higher-leverage move than keeping them personal: it converts a private heuristic into a piece of team infrastructure, and the writing exercise itself is career-visible.
      • Why this matters for career development specifically — when the PR conversation comes up (booked May 9–10), “here is my playbook of recurring patterns, and here is which ones I’ve upstreamed to team docs” is a stronger artifact than a list of shipped tickets. It signals systems-thinking and is directly transferable to Thuan / future juniors.
      • Risks to watch:
        • Principles ossifying into rules nobody re-evaluates → quarterly re-read during Friday wrap-up; demote anything that hasn’t fired in 90 days.
        • Triage page becoming a graveyard → if an entry sits in triage status > 60 days without a second use, archive it. The page is for active heuristics, not aspirations.
    • AMQL-vision question came up again (BuyCo Wed call). This is now the 3rd customer asking the same vision question. Worth proposing a one-pager to anh Triet / Vincent on the canonical AMQL story we want presales/CS to tell — would be a non-trivial career-visibility artifact.
    • The “writing is thinking” rule — keep journals AI-free. The reflection muscle is the differentiator. Use AI for boilerplate, not for thought.
  • Wait But Why — How to Beat Procrastination — re-read with the carry-over list in front of you. The “Instant Gratification Monkey” framing maps directly to MRR exchange rate.

  • Wes Kao — How to Be Concise + Levels of detail in communication — pair for the customer-comms reframe and PR-description / status-update style.

  • ggsql alpha release (Posit) + Shaper docs + VegaLite — survey of declarative chart-as-code DSLs. Useful prior art if you ever propose a similar surface for Holistics or for the docs/blog.

  • How do you make a chart? — benn.substack — pair with our internal AI roadmap thinking.

  • Adam Lichtenstein — Automatic Column-Level Lineage with DuckDB + docglow — quick read; sets the bar for “how cheap is CLL now”.

  • Holistics API docs — re-skim to confirm the dashboard-PNG-export gap; if confirmed, file as a feature request.

  • YouTube — search “Olympic & WTA player breathing drills” — concrete drills for the cardio-recovery commitment. (Or any 8-week couch-to-5k plan.)

  • Book — Atomic Habits — environment design chapter — re-skim for the no-late-night-gaming + morning-run habit stacking. Repeat from W17 — keep it on the queue until the habits stick.

  • Cal Newport — time-blocking podcast episodes — for next week’s Mon AM MRR forcing-function block.