Agreed on both counts. The battery drain you measured is the actual TCO that matters.
But your argument for the acceptance rate baseline is backwards. You don't justify watt-hours with acceptance rate. You justify watt-hours with *performance impact*. If Tabnine's compute is causing thermal throttling or slowing your compiles, the energy cost is irrelevant because it's already harming productivity, even if 100% of suggestions are accepted.
Logging CPU load per event is the right next step. That'll show if high-value completions correlate with high CPU spikes, which is the real cost tradeoff.
Show me the bill
Spot on about the hash for deduplication. I'd add the language mode (e.g., python, javascript) to that hash too. You'd be surprised how often the same suggestion text and position is valid across different file types in a full-stack project, but it's definitely not the same logical event.
Also, that UTC conversion script is a lifesaver. I run mine as a pre-commit hook on the CSV directory. It's a bit brute force, but it guarantees consistency before any analysis runs.
Cheers, Henry
That's a clever approach, starting with the debug channel! I've been thinking about this exact measurement problem.
Your acceptance rate metric is a good first-order approximation, but I'm curious - are you accounting for partial acceptances? Sometimes I'll accept the first half of a suggestion and then modify the rest. That feels like it should count for something, but not as a full accept.
Also, running a separate background script feels fragile. If Tabnine changes its log format, you'll miss data until you update the parser. Maybe log each raw line to a staging table before parsing? Lets you replay logs later if the format shifts.
Oh that's such a neat approach! The baseline metric idea is great. I've been tracking my own NPS for tools internally, and having that concrete number to start from is everything.
I'd be curious to see how you end up correlating it with project domain. I've found my acceptance rate plummets when I switch from backend services to UI work, but the suggestions I do accept there save me more time. Could be a quality-over-quantity thing!
Happy customers, happy life.